본문 바로가기

전체 글361

[ETC 2편] Apache Embedded Ftp Server 정리 목차는 ETC 목차 에 있습니다. [ETC 2편] Apache Embedded Ftp Server 정리 테스트 용도로 FTP Server 를 사용할 일이 있어 Embedded FTP Server 에 대해 알아봤습니다. Embedded Ftp Server 준비해야할 것 apache embedded ftp server 를 참고해서 작성했습니다. Depedency mina-core, 2.0-M3 or later Apache Mina는 네트워크 프레임워크로 이벤트 중심 비동기 api 및 사용자가 쉽게 네트워크 서버를 구현할 수 있게 도와주는 프레임 워크 입니다. slf4j-api 로깅 관련 open source 입니다. A SLF4J implementation of your choice, for example .. 2022. 7. 16.
[network 1편] 로그인 관련 정리 (세션, JWT) 목차는 network 목차 에 있습니다. [network 1편] 로그인 관련 정리 (세션, JWT) 로그인 하는 방법 중 세션과 JWT 에 대해 비교 정리했습니다. 세션이란? 세션이란 일정 시간동안 같은 사용자로 부터 들어온 접속 상태를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술입니다. 세션 구현 방안 세션을 서버 1대에서 관리 서버 1대에서 key,value 나 서버 메모리에 저장해 관리합니다. 구현이 쉬우나 서버 대수가 늘어날수록 확장이 어렵습니다. sticky session 을 통해 해결이 가능하나, sticky session 의 경우 특정 서버로 트래픽이 몰릴 수 있습니다. sticky session 이란 같은 세션 ID 는 세션을 생성한 서버로만 request 가 가도록 합니다. .. 2022. 7. 16.
[Jpa 4편] n+1 정리 목차는 jpa series 목차 에 있습니다. source 는 Github 에 있습니다. [Jpa 4편] n+1 정리 1. Jpa n+1 문제란? 상위 엔티티에서 하위 엔티티를 조회할 때마다 하위 엔티티 갯수만큼 쿼리가 더 수행되는 현상입니다. 데이터가 많을 때는 하위 엔티티 만큼 쿼리가 발생하게 되니 성능 문제가 발생할 수 있습니다. 내부 동작 n+1 에 관련해서 알아보기 전에 jpa 가 동작하는 방식에 대해서 간략히 정리했습니다. repository 인터페이스에 선언한 메서드를 호출하면 JPA 엔진에서는 메서드명을 분석해서 JPQL을 생성합니다. JPQL은 SQL을 추상화한 쿼리 언어입니다. 특정 SQL에 종속되지 않고, 엔티티 객체와 필드명을 맵핑해서 쿼리를 수행합니다. 예를 들어, findById.. 2022. 7. 7.
[Jpa 2편] OneToMany, ManyToOne 정리 목차는 jpa series 목차 에 있습니다. source 는 Github 에 있습니다. [Jpa 2편] OneToMany, ManyToOne 정리 단방향 OneToMany JoinColumn 없음 아래와 같이 JoinColumn 없이 OneToMany 단방향을 설정하면 team, team_member 테이블 간 mapping 테이블이 생성 됩니다. (team_list 테이블) 테이블이 새로 생성되고 해당 테이블에 insert 쿼리가 발생되기에 비효율적입니다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Team { @Id @Column(name = "team_id") @GeneratedValue(strat.. 2022. 7. 7.
[Java 3편] stream list to map source 는 Github 에 있습니다. 목차는 Java series 에 있습니다. [Java 3편] stream list to map stream list to map stream 을 활용하여 list to map 변환하는 예제입니다. @Test public void stream_list_to_map_테스트() { Member member = new Member("Lee", 30); Member member2 = new Member("Kim", 35); List list = new ArrayList(Arrays.asList(member, member2)); Map map = list .stream() .collect(Collectors.toMap( i1 -> i1.getName(), i2 -> i2... 2022. 7. 6.
[Java 2편] stream 내에서 CheckedException, RuntimeException 처리 source 는 Github 에 있습니다. 목차는 Java series 에 있습니다. [Java 2편] stream 내에서 CheckedException, RuntimeException 처리 source code stream 내에서 CheckedException 과 RuntimeException 처리 관련 코드 예시에 대해서 정리했습니다. public class StreamWithExceptionTest { @Test public void stream_내에서_RuntimeException_테스트() { String[] strings = new String[] {"hello", "world", "hi"}; List list = Arrays.asList(new String[]{"abcde", "test", .. 2022. 6. 28.