programming study 74

개발 메모

2024.7.12 금요일 "red black", "red Yellow"를 오름차순 정렬하면 "red Yellow", "red black"이다. - 알파벳 대문자의 유니코드가 더 작다.- 유니코드 기준으로 정렬된다.- char 자료형에는 유니코드값이 저장된다.char value = 'A';char value = 65;package java.lang;public final class String implements java.io.Serializable, Comparable, CharSequence { ... ... public int compareTo(String anotherString) { int len1 = value.length; int len2 = a..

통계

데이터베이스에서 쿼리를 실행할 때 옵티마이저가 통계정보를 참조하여 실행계획을 세웁니다. 그런데, 새로운 값 추가나 기존 값 삭제가 많이 이루어진 경우 통계정보가 정확하지 않을 수 있습니다. 정확하지 않은 통계정보를 참조하여 쿼리를 실행하는 경우 잘못된 실행계획을 세울 수 있고 쿼리에도 문제가 있을 수 있습니다.

모델링 작업

※ 실제 테이블 구조가 아닌 이해를 돕기 위해 간단하게 재구성 한 구조 입니다. 이해를 돕기 위해 변경 전 테이블 구조를 먼저 보여주고 고도화 요구사항을 설명하고 변경한 테이블 구조에 대해서 설명합니다. index, 데이터 양을 중점으로 생각해서 테이블을 설계하였습니다. 마지막에는 index에 대해서 정리한 내용을 설명합니다. 변경 전 테이블 구조 흐름 1. 고객 정보를 등록 2. 메신저를 보낸다 -> 소통 내용 태이블에 INSERT -> 소통 ID를 고객별 마지막 소통 ID 컬럼에 UPDATE 3. 고객별 대화 내용 조회 (쉽게 말해서 카카오톡에서 대화 목록을 보여준다고 생각하면 된다. 대화 목록에는 마지막으로 연락한 메세지 내용이 보인다.) -> 소통 내용에 많은 데이터가 쌓이기 때문에 LATEST_..

오라클 실행계획 보기

참고 https://bae9086.tistory.com/181 Oracle 무료 DB관리툴 SQL Developer - Plan/Trace 확인하기 (실행계획/트레이스) (tistory.com) Oracle SQL Developer에서 Trace(자동추적) oracle sql developer에서 F6 단축키 사용 - LAST_CR_BUFFER_GETS : SQL을 실행하면서 각 단계에서 읽어온 블록(Block) 갯수 - LAST_ELAPSED_TIME : 경과시간 => LAST_CR_BUFFER_GETS, LAST_ELAPSED_TIME 가 적을 수록 좋다 힌트 사용 1. 실행할 쿼리에서 select 뒤에 /*+Gather_pan_statistics */ 를 붙여서 실행계획을 읽는다. 2. SQL_ID..

JPA 관련 메모

Pageable 인터페이스 : 페이징 처리에 사용되는 인터페이스입니다. 페이지 번호, 페이지 크기, 정렬 조건 등을 설정하는 역할을 합니다. Sort 클래스 : Pageable 인터페이스이스에서 사용 되는 클래스입니다. 페이징 처리 결과를 정렬할 때 사용합니다. Order 클래스 : Sort 클래스의 내부 클래스입니다. 정렬 정보를 가지고 있는 클래스입니다. package org.springframework.data.domain; . . public class Sort implements Streamable, Serializable { private static final long serialVersionUID = 5737186511678863905L; private static final Sort UN..

코딩 메모

java ABean abean = Arrays.stream(리스트) .filter(조건) .findAny() .map(m -> { // 조건에 맞게 있으면 Bean 객체로 만들어서 반환 ABean abean = new ABean (); bean.setA(m.getA()); return abean } ).orElse(null); // 조건에 맞는 값 없으면 null stream().findAny() 스트림 병렬 스트림에서 여러 쓰레드가 동시에 작업하므로 먼저 처리된 요소가 반환될 수 있다. 스트림의 요소 순서가 중요하지 않거나 어떤 요소여도 상관 없을 때 사용합니다. 또한 빠르게 결과를 내고 싶을 때 사용합니다. 인터페이스에 중첩 추상클래스? interface A { abstract class Data {..

스프링 / JAVA / JPA / Network / DB / infra / 업무

스프링 스프링을 사용하는 이유가 뭔가요? 스프링은 자바 기반 어플리케이션을 개발하는데 도움을 주는 프레임워크이고 POJO 로 개발을 할 수 있게 AOP, IOC, PSA 같은 기술들을 지원해주기 때문에 사용합니다. 우선 스프링은 프레임워크이기 때문에 이미 만들어진 기술을 가져다 사용할 수 있고 정형화된 구조로 개발을 할 수 있다는 장점이 있습니다. 스프링은 자바로된 프레임워크이고 자바는 객체지향 언어입니다. 스프링 프레임워크는 객체지향 프로그래밍의 성질인 다형성을 이용해서 IOC, DI 기능을 지원하기 때문에 스프링을 사용합니다. 추가적으로 AOP 기능 , 스프링MVC 기능도 스프링을 사용하는 이유가 될 수 있습니다. spring 기본 요약 (사용 이유, 객체지향, IOC/DI/container, 빈 등..