분류 전체보기
-
JDBC 프로그래밍교육 자료 2022. 8. 11. 00:47
JDBC 프로그래밍 01 JDBC 개념 소개 02 DB 커넥션 풀 개념 소개 03 JDBC 프로그래밍 실습 04 실습한 JDCB 코드 리팩토링 및 DB 커넥션 풀 적용 JDBC 개념 소개 JDBC(Java Database Connectivity) 자바 애플리케이션에서 DB 프로그래밍을 할 수 있도록 도와주는 표준 인터페이스 (DBMS 종류에 상관없음) JDBC 인터페이스들을 구현한 구현체들은 각 데이터베이스 벤더 사들이 제공해 준다. 이를 JDBC 드라이버라 한다. 자바 코드에서는 JDBC 인터페이스에만 의존하기 때문에 DB를 변경하더라도 코드를 변경할 필요가 없다. DB 커넥션 풀 개념 소개 DBCP (Database Connection Pool) 미리 일정량의 DB 커넥션을 생성해서 풀에 저장해 두고..
-
도커 및 도커 컴포즈 소개교육 자료 2022. 8. 5. 01:24
도커 컨테이너 기반의 가상화 플랫폼 컨테이너 기반의 가상화 vs 하이퍼바이저 기반의 가상화(OS 가상화) 물리 서버: Host, 가상 서버: Guest Hypervisor(소프트웨어)는 서버 가상화 기술로써 호스트 서버에 설치되어 호스트와 게스트를 나누는 역할을 하고, 각각의 게스트는 하이퍼바이저에 의해 관리되며 시스템 자원을 할당받게 된다. 하이퍼바이저 기반의 가상화 격리된 환경에서 가상 서버를 실행하는 기술 게스트 OS로는 다양한 OS 선택 가능 애플리케이션이 호스트 자원을 사용하기 위해서는 게스트 OS를 거쳐야 한다. 컨테이너 기반의 가상화 격리된 환경에서 프로세스를 실행하는 기술 게스트 OS는 호스트 OS와 동일해야 함 애플리케이션은 도커 엔진을 통해 호스트 자원을 사용할 수 있고 구조적으로 게..
-
멀티 스레드 환경에서 동시성 이슈교육 자료 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..
-
테스트 코드 실습교육 자료 2022. 7. 11. 23:45
JUnit5 - 자바 단위 테스팅 프레임워크 - https://junit.org/junit5/docs/current/user-guide/#writing-tests - https://www.petrikainulainen.net/programming/testing/junit-5-tutorial-writing-parameterized-tests/ AssertJ - 테스트 코드 가독성을 높여주는 자바 라이브러리 - https://assertj.github.io/doc/#assertj-core-assertions-guide TDD - Test Driven Development (테스트 주도 개발) - 프로덕션 코드보다 테스트 코드를 먼저 작성하는 개발 방법 - TFD(Test First Development) +..