전체 글
-
멀티 스레드 환경에서 동시성 이슈교육 자료 2022. 7. 25. 01:35
스레드 Safety 멀티 스레드 환경에서 여러 스레드가 동시에 하나의 자원(객체 및 변수)에 접근하더라도 문제없이 동작하는 상황 멀티 스레드 문제점 동기화가 안 될 경우 Race Condition(경쟁상태) 발생 Race Condition이란 여러 프로세스(혹은 스레드)가 동시에 하나의 자원에 접근하기 위해 경쟁하는 상태 실습 코드 https://github.com/serverwizard/was-practice/tree/master/src/main/java/org/example/counter 참고 자료 https://www.javatpoint.com/race-condition-in-java
-
복잡했던 조회 및 CSV 다운로드 API 이관기실무에서 알게된 내용 2022. 7. 21. 18:12
이관 API 조회 API CSV 다운로드 API (최대 10만 개까지 가능) 고려했던 사항 2가지 검색 필드와 상관없이 기존 한 개로 사용되던 쿼리를 특정 검색 필드 포함 여부에 따라 쿼리를 분리 시킴. 이를 통해 불필요한 join을 제거함 CSV 다운로드를 위해 최대 10만 개까지 조회할 수 있는 쿼리를 더보기(more) 방식으로 변경함. 이를 통해 성능 개선함 1. 조회 페이지 join이 필요한 검색 필드 조사 (검색 비율 적음) 총 2개 위 필드로 검색됐을 때만 join 수행 2. 그 외 검색 필드 테이블 하나로 쿼리 수행 3. 추가 사항 특정 서비스를 통해 조회하는 경우에는 특별히 담당하고 있는 사람들의 정보만 보여줘야 하기 때문에 또 하나의 join 수행 2. CSV 다운로드 조회 페이지에 노출..
-
웹 애플리케이션 이해교육 자료 2022. 7. 18. 22:16
웹 애플리케이션 이해 01 계산기 프로그램을 웹 애플리케이션으로 만들기 02 HTTP 프로토콜 이해 서블릿 프로그래밍 01 CGI 프로그램과 서블릿 02 계산기 서블릿 만들기 계산기 프로그램을 웹 애플리케이션으로 만들기 실습 첫 번째 단계 사용자 요청을 메인 Thread가 처리하도록 한다. 두 번째 단계 사용자 요청이 들어올 때마다 Thread를 새로 생성해서 사용자 요청을 처리하도록 한다. Thread는 생성될 때마다 독립적인 스택 메모리 공간을 할당받는데 메모리 할당 작업은 상당히 비싼 작업이다. 따라서, 사용자 요청이 있을 때마다 Thread를 생성한다면 성능이 떨어진다. 동시 접속자 수가 많아질 경우 많은 Thread가 생성되는데 Thread가 많아지면 CPU 컨텍스트 스위칭(Context Swi..
-
Edge API로 전환 작업을 하며 고민했던 사항 [진행 중]실무에서 알게된 내용 2022. 7. 15. 01:11
고민했던 사항 1. 모듈 간 의존성 방향은 api 모듈 → service 모듈 → domain 모듈 ← client 모듈 방향을 지키도록 한다. 이를 통해 domain 모듈은 client 모듈의 구현으로부터 독립되도록 한다. 2. api 모듈에서는 domain 모듈에 있는 객체를 웬만하면 바로 반환하지 않고 common-web 모듈에다가 화면에 fit 한 response객체를 만들어 이를 반환하도록 한다. 왜냐하면, domain 모듈에 있는 객체를 바로 반환하게 되면 신규 입사자가 domain 모듈에 있는 객체의 필드를 변경하게 됐을 때, 컴파일 시점에 에러를 잡을 수 없을뿐더러 이 영향이 클라이언트까지 미칠 수 있기 때문이다. 3. response 객체에 있는 Enum 타입 필드들은 Enum 값으로 내..
-
객체지향 패러다임교육 자료 2022. 7. 12. 03:28
객체지향 패러다임 개념 다지기 절차지향 방식으로 계산기 프로그램 만들기 객체지향 패러다임에 맞게 리팩토링 인사관리 시스템을 객체지향으로 만들기 객체지향 패러다임 적절한 객체에게 적절한 책임을 할당하여 서로 메시지를 주고 받으며 협력하도록 하는 것 점점 증가하는 SW 복잡도를 낮추기 위해 객체지향 패러다임 대두 (기능 중심 -> 객체와 관계 중심) 개인적으로 생각하는 두 가지 중요 포인트 객체지향에 맞게 클래스가 아닌 객체에 초점을 맞추는 것 객체들에게 얼마나 적절한 역할과 책임을 할당하는지 절치지향 프로그래밍 vs 객체지향 프로그래밍 책임이 한곳에 집중돼 있는 방식 (getter) 책임이 여러 객체로 적절히 분산돼 있는 방식 객체지향의 4가지 특징 (다른 패러다임과 구분되는 중요한 특징) 추상화 (Abs..