분류 전체보기147 JUnit5에서 Kotest로 마이그레이션 하며 겪은 트러블슈팅들 1. AnnotationSpec의 사용성 AnnotationSpec에서 @Nested를 사용할 수 없다.. Kotest 5에서 @Nested을 지원한다고 하였지만 https://github.com/kotest/kotest/commit/69eea2d50067c6fa309fbad568d770c5e861a439에서 주석 처리되었다. Added support for @Nested in AnnotationSpec https://github.com/kotest/kotest/issues/2367 https://github.com/kotest/kotest/issues/3103 java.lang.IllegalArgumentException: object is not an instance of declaring class.. 2022. 10. 20. HikariCP란 무엇이고 어떤 풀 사이즈를 적용해야 할까? WAS와 DB의 연결 WAS와 DB 사이 연결에는 많은 비용이 든다. 만약 하나의 SQL을 DB에 적용한다면 다음과 같은 과정을 거친다. JDBC 드라이버 로드 DB 연결 statement 생성 (인터페이스이며 DB에 SQL을 전달해주는 역할) SQL 전송 ResultSet을 통해 결과 확인 연결 해제 SQL 쿼리 하나를 전송하기 위해 위와 같은 행동이 반복된다. 이는 매우 비효율적이다. 정리하면 다음과 같다! 전체과정 중 커넥션을 생성하는 과정이 약 50%를 차지한다고 한다. 이러한 연결과정은 TCP/IP를 통해 이루어져 3-way-handshaking 과정을 통해 준비한다. 쿼리를 요청할 때 반복되면 네트워크 구간에서 병목현상이 발생할 수 있다. 이를 어떻게 해결할 수 있을까? 바로 커넥션 풀을 사용.. 2022. 10. 20. 자바의 입출력(I/O) 및 File(경로/읽기)을 알아보자 스트림(Stream)이란? 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름 자바의 입출력(I/O)를 알아보자 입출력은 데이터를 다른 곳으로 이동 시킬 때 사용된다. 자바는 스트림(Stream)으로 I/O를 사용한다. 1. 입력: InputStream 자바의 기본 입력 클래스이다. byte로 데이터 읽는다. read() 2. 출력: OutputStream 자바의 기본 출력 클래스이다. byte로 데이터 읽는다. write(int b) 종류 FilterOutputStream : 파일로 데이터 쓰기 DataOutputStream : 자바의 primitive type data를 다를 매체로 데이터를 쓸 때 사용 BufferedOutputStream : 버퍼링 사용(효율적인 전송) flush()를 사용하여 .. 2022. 9. 8. 프로세스 vs 스레드를 비교해보자 프로세스 vs 스레드 1. 프로세스 프로세서에 의해 실행되는 프로그램 disk의 프로그램을 실행하면 ram에 프로세스로 올라간다. 프로세스 내에 스레드가 실행된다. 모든 프로세스는 하나 이상의 스레드를 가진다. jvm은 단일 프로세스가 실행된다. 구조: Code, Data, Heap, Stack 2. 스레드 프로세스와 같이 실행환경을 제공한다. 프로세스를 새로 만드는 것보다 스레드는 새로 만드는 것이 적은 리소스 프로세스의 리소스를 공유한다. 멀티 Tasking CPU(프로세서)는 한 순간에 하나의 프로세스만 실행 OS가 짧은 시간에 실행하는 프로세스를 교체하기에 동시에 하고 있다고 느끼는 것(Context Switching) Context Swiching 현재 진행하고 있는 Task(Process, T.. 2022. 9. 8. HTTP란? (특징, 버전, 캐싱) HTTP란? (특징, 버전, 캐싱) 1. 특징 비연결성(Connectionless): 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 연결을 끊음 무상태성(Stateless): 상태를 갖지 않음 상태를 기억하는 방법 : 쿠키(세션), JWT 2. 버전별 특징 0.9 : HTTP 초기 버전 1.0 : header개념, method 함께 전송 1.1 : 가장많이 사용, pipelining pipelining: 순차적인 여러 요청을 연속으로 보내고 순서에 맞춰 응답받는 방식 2.0 : 일반 텍스트를 Binary Framing 계층을 추가해서 보냄 3.0 : UDP 기반의 전송 프로토콜 3. 캐시 HTTP 캐싱 특정 요청의 응답을 저장했다가 재사용하는 기술 Client가.. 2022. 9. 8. 웹서버 vs WAS 웹서버, WAS 차이를 알아보자 정적페이지 vs 동적페이지 정적페이지: 항상 동일한 페이지 반환(image, html, css) 동적페이지: 동적인 contents 반환 웹서버가 Client로부터 요청을 받는다. (GET /naepyeon?id=zero) 동적인 데이터를 처리하기 위해 WAS에 전송한다. Servlet: doGet(req, res) 동적 데이터를 처리한다. Client에 response 페이지 반환한다. 1. 웹 서버는 어떤 일을 할까? 웹 서버는 대표적으로 Apache, Nginx 등이 있다. 정적페이지 제공 WAS를 거치지 않는다(바로 제공한다). 동적페이지 제공을 위해 WAS에 요청 전달 WAS에 처리요청 WAS가 처리한 결과를 클라이언트에 전달 즉, 웹 서버는 JSP, PHP같은 .. 2022. 9. 8. 이전 1 2 3 4 5 ··· 25 다음