생각의 표현들

DB

커넥션 풀을 사용하는 이유

애플리케이션과 DB간의 커넥션 생성의 복잡성, 비용을 줄이기 위해 사용합니다. 애플리케이션에서 DB에 접근을 할때마다 커넥션을 항상 생성해야 합니다. 그리고 그 과정은 아래와 같이 복잡하고 비용이 많이 들어갑니다. 애플리케이션의 로직은 DB 드러이버를통해 커넥션 조회 DB 드라이버는 DB와 TCP/IP 연결 DB 드라이버는 3 way handshake 정상 연결 후 IP, PW 등 환경변수 DB에 전달 DB는 내부 인증 후, 내부에 DB 세션 생성 DB는 커넥션 생성 완료 응답 DB드라이버는 커넥션 객체 생성해 클라이언트에 반납 위 과정을 미리 여러번 해서 커넥션을 여러개 만들어 놓는 것이 커넥션 풀입니다. 커넥션 풀의 장점 커넥션 풀에 있는 커넥션은 TCP/IP로 DB와 커넥션이 되어있는 상태입니다. ..

Java

Optional 클래스

Optional 클래스는 Integer나 Double 클래스처럼 'T'타입의 객체를 포장해 주는 래퍼 클래스(Wrapper class)입니다. 따라서 Optional 인스턴스는 모든 타입의 참조 변수를 저장할 수 있습니다. 이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있습니다. 즉, 복잡한 조건문 없이도 널(null) 값으로 인해 발생하는 예외를 처리할 수 있게 됩니다. Optional.empty() VS null Optional 클래스는 값이 없으면 Optional.empty 메서드로 Optional을 반환하빈다. null을 참조하면 NullPointerException이 발생하지만 Optional.empty()는 ..

Books/Modern Java In Action

[모던 자바 인 액션] Chapter7. 병렬 스트림

스트림을 사용하면 병렬로 작업을 간편하게 할 수 있습니다. 동기화, 스레드, 생성 등 어떤것도 신경쓸 필요가 없습니다. 기존 스트림 public long sequentialSum(long n) { return Stream.iterate(1L, i -> i + 1) .limit(n) .reduce(0L, Long::sum); } 병렬 스트림 public long parallelSum(long n) { return Stream.iterate(1L, i -> i + 1) .limit(n) .parallel() .reduce(0L, Long::sum); } 간단히 parallel()만 호출하면 스트림이 알아서 병렬 처리해 줍니다! 반대로 sequential() 메서드는 병렬 스트림을 순차 스트림으로 바꾸는 함수..

Java

StringBuffer, StringBuilder

Immutable한 String의 단점 String은 불변하는 객체입니다. String을 더하면 새로운 객체가 생성되고 기존 객체는 GC에 의해 버려집니다. 만약 String을 계속 더한다면, 쓰레기를 계속 채우는 상황이 발생하는 것입니다. 이 경우 메모리 관리가 비효율적이여서 성능에 안좋습니다. StringBuffer, StringBuilder String의 단점을 보안하기 위해 나온 클래스들입니다. StringBuffer, StringBuilder는 append로 전달받은 변수를 메모리에 할당하는 것이 아니라 append가 발생할 때 마다 버퍼의 끝에 문자열을 추가합니다. 마지막으로 toString() 메소드를 통해 버퍼에 저장되어 있는 최종값을 String으로 메모리에 할당합니다. 두 클래스에서 제..

Sol b
'분류 전체보기' 카테고리의 글 목록 (25 Page)