본문 바로가기
728x90

카테고리249

스프링 부트 에서 @modelAttribute 와 @requestBody 의 차이점과 쓰임새는? @ModelAttribute와 @RequestBody는 모두 Spring MVC에서 사용되는 어노테이션으로, HTTP 요청에서 전송된 데이터를 컨트롤러 메서드에서 사용할 수 있게 하는 역할을 하지만 사용되는 방식과 동작은 다르다. @ModelAttribute는 HTTP 요청 파라미터를 해당 컨트롤러의 메서드 매개변수에 바인딩한다. 즉, HTTP 요청 파라미터와 메서드 매개변수의 이름이 일치하면 자동으로 값을 매핑합니다. 또한, @ModelAttribute는 해당 메서드가 실행되기 전에 먼저 실행되어 모델에 데이터를 바인딩합니다. 이렇게 바인딩된 모델은 View에서 사용될 수 있습니다. 예를 들어 @GetMapping("/person") public String getPerson(@ModelAttribut.. 2023. 3. 9.
읽어보면 좋은 url 정리중.. Tim sort 에 대해 알아보자 - d2 https://d2.naver.com/helloworld/0315536 2023. 3. 3.
Real Mysql 8.0 Real Mysql 8.0 은 1편, 2편으로 구성되어 있다. 1편을 다 읽어보았는데,, 참으로 좋은책인거 같다.여러번봐야지 더 좋음을 알 수 있을듯 하다. 너무~~꼼꼼하게 읽고 전부 다 알려고 하지말고..(dba 분 제외)필요한 부분 정리하면서 읽으면 꽤나 재밌는 책인거 같다. 개인점수는 9 / 10 점이다. 장점: 아키텍처를 쉽게 알 수 있고, 인덱스라던지 트랜잭션 등을 자세히 알 수 있다. 단점: 내용이 너무 세세해 읽는데 오래 걸린다. 총평: 꼭 한번 읽어보고 재밌으면 한번 더 읽어보자. 2023. 3. 2.
보면 정말 좋은 url 정리 중.. 한동일의 https://www.youtube.com/watch?v=S8IkQoALGSI 공부법 3가지 https://www.youtube.com/watch?v=xlxrKdFWvyM 한번 듣고 평생 써먹는 코드 리뷰 노하우(백명석 님) https://www.youtube.com/watch?v=TAPviNhFuSg 2023. 3. 1.
터미널 명령어 적는중 터미널 명령어 "ls -arlth"는 현재 디렉토리 내의 파일 및 디렉토리 목록을 출력하는 명령어입니다. "ls"는 리스트(list)를 출력하는 명령어입니다. "-a"는 모든 파일 및 디렉토리를 출력합니다. 숨겨진 파일 및 디렉토리도 포함하여 모두 출력합니다. "-r"은 역순으로 출력합니다. 즉, 가장 최근에 수정된 파일이나 디렉토리가 아래쪽에 위치합니다. "-l"은 자세한 정보를 출력합니다. 파일의 권한, 소유자, 그룹, 크기, 수정일 등의 정보를 출력합니다. "-t"는 파일의 수정시간을 기준으로 정렬하여 출력합니다. 가장 최근에 수정된 파일이 먼저 출력됩니다. "-h"는 파일 크기를 읽기 쉬운 형식으로 출력합니다. 즉, 파일 크기를 바이트 단위로 출력하는 것이 아니라, 적절한 단위(KB, MB, GB.. 2023. 3. 1.
[RealMysql 8.0] 실행 계획 10 ~ 1편 끝 참고: https://jeong0427.tistory.com/43 실행 계획 확인 8.0 버전부터는 explain 명령에 사용할 수 있는 새로운 옵션이 추가됐다. 쿼리의 실행 시간 확인 explin analyze 실행 계획 분석 id 칼럼 하나의 select 문장은 다시 1개 이상의 sub select 문장을 포함할 수 있다. 여러개의 테이블이 조인되는 경우에는 id 값이 증가하지 않고 같은 id 값이 부여된다. id 칼럼이 테이블의 접근 순서를 의미하지는 않는다. explain format=tree 명령으로 확인해보면 순서를 더 정확히 알 수 있다. select_type 칼럼 select 쿼리가 어떤 타입의 쿼리인지 표시되는 칼럼이다. simple union 이나 서브쿼리를 사용하지 않는 단순한 sel.. 2023. 2. 27.
[RealMysql 8.0] 고급 최적화 9.3 ~ 9.4.12 고급 최적화 옵티마이저 옵션은 크게 조인 관련된 옵티마이저 옵션과, 옵티마이저 스위치로 구분할 수 있다. 옵티마이저 스위치 옵션 MRR과 배치 키 엑세스(mrr & batched_key_access) 블록 네스티드 루프 조인 인덱스 컨디션 푸시다운 인덱스 확장 인덱스 머지 인덱스 머지 - 교집합 인덱스 머지 - 합집합 인덱스 머지 - 정렬 후 합집합 세미 조인 테이블 풀-아웃 퍼스트 매치 루스 스캔 구체화 중복제거 컨디션 팬아웃 파생 테이블 머지 인비저블 인덱스 스킵 스캔 해시 조인 인덱스 정렬 선호 조인 최적화 알고리즘 Exhaustive 검색 알고리즘 쿼리 힌트 인덱스 힌트와 옵티마이저 힌트로 나눌 수 있다. 인덱스 힌트 straight_join, use index 등을 포함한 인덱스 힌트들은 모두 .. 2023. 2. 27.
[RealMysql 8.0] 옵티마지어와 힌트 9 ~ 9.2 옵티마이저는 기본 데이터를 비교해 최적의 실행 걔획을 수립하는 작업을 한다. 개요 mysql 서버에서 쿼리가 실행되는 과정은 크게 세 단계로 나눌 수 있다 사용자로부터 요청된 SQL 문장을 잘게 쪼개서 mysql 서버가 이해할 수 있는 수준으로 분리(파스 트리)한다. sql 파싱 이라고 하며 mysql 서버의 sql 파서 라는 모듈로 처리한다. sql 문장이 문법적으로 잘못됐다면 이 단계에서 걸러진다. sql 파스 트리가 만들어 진다.mysql 서버는 sql 문장 그 자체가 아니라 sql 파스 트리를 이용해 쿼리를 실행한다. SQL의 파싱 정보(파스 트리)를 확인하면서 어떤 테이블부터 읽고 어떤 인덱스를 이용해 테이블을 읽을지 선택한다. 첫 번째 단계에서 만들어진 sql 파스 트리를 참조하면서 다음과 같.. 2023. 2. 26.
[RealMysql 8.0] 외래키 8.10 ~ 8.10.2 외래키 InnoDB 의 왜래키 관리에는 중요한 두 가지 특징이 있다. 테이블의 변경(쓰기 잠금)이 발생하는 경우에만 잠금 경합(잠금 대기)이 발생한다. 외래키와 연관되지 않은 칼럼의 변경은 최대한 잠금 경합(잠금 대기)을 발생시키지 않는다. 자식 테이블의 변경이 대기하는 경우 작업번호 커넥션-1 커넥션-2 1 BEGIN; 2 update tb_parent set fb='changed-2" where id =2 3 BEGIN; 4 update tb_child set pid = 2 where id = 100; 5 ROLLBACK; 6 Query OK, 1 row affected (*.** sec) - 테이블의 변경(쓰기 잠금)이 발생하는 경우에만 잠금 경합(잠금 대기)이 발생한다. 2번 커넥션 1 수행시 t.. 2023. 2. 26.
728x90