일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- mapstruct
- OS
- 공룡책
- 테크쇼
- Java
- db
- JPA
- enumSet
- softeer
- 2025 계획
- FCM
- Test
- Test Doulbe
- proxyFactory
- 일상
- Junit 5
- modelmapper
- ExceptionResolver
- 갓생
- MySQL
- Service 계층 테스트
- 인프콘2023
- 소프티어
- Spring
- Test code
- 자바
- 직장인 회고
- 2024회고
- Server
- Coputer Science
- Today
- Total
목록전체 글 (62)
공부내용공유

서론 Repository 계층 테스트 코드를 작성할때 처음에는 어플리케이션에서 사용중인 MySQL DB를 그대로 사용하였다. 그러다가 한 테스트에서 로컬에 저장되어 있던 데이터에 의해 테스트가 실패하였고, 물론 값을 바꿔주면 테스트를 통과하긴 하겠으나 이 테스트가 다른 사람 pc에서 안깨지려면 테스트 DB를 분리하는게 맞겠다는 생각이 들었다. Spring 으로 프로젝트를 진행할때 local DB 나 Test DB 로 H2 를 많이 사용하기에 나도 H2 DB 로 설정을 바꿔주고 테스트를 돌렸다. 그런데 잘만 돌아가던 테스트들이 깨지는 케이스가 발생했다. 이를 기억하고 앞으로 코드를 작성할때 주의해야겠다는 생각이 들어 이 글을 작성하였다. 본론 테스트가 깨진 경우는 2가지 였다. native query 사용..

서론 Data 계층 테스트 코드를 작성하기전에 JPA 복습을 하고 있었는데 이전에 공부할때는 그냥 넘어갔던 JPA의 Isolation 부분이 눈에 들어왔다. 고급 데이터 베이스 과목에서 배운 Repetable Read, Phantom Phenomon 등이 보여 흥미로워 복습도 하고 몰랐던 부분을 제대로 공부하기 위해 이 글을 작성하였다. 목차 트랜잭션이란? DB 트랜잭션 Level 에 따른 차이 JPA의 트랜잭션 수준 Optimistic Lock, Pessimistic Lock 트랜잭션이란? 랜잭션, ACID 는 데이터 베이스 과목을 수강하면 정말 많이 나오는 개념이다. 트랜잭션이 무엇일까? DataBase System concepts 7판에 나온 설명들에 따르면 하나의 logical unit을 실행하는..

서론 Deque를 사용하면서 아무생각 없이 ArrayDeque를 사용하고 있었는데 다른 코드에서 LinkedList 로 Deque를 구현한것을 보았고 또 Deque 구현체가 꽤 많은것을 알게되었다. Deque 구현체들에 대해 간단히 조사하고 정리하고, ArrayDeque와 LinkedListDeque 사이에 차이가 있고 무엇이 더 효율적일지 찾아보면서 이 글을 작성하게 되었다. 본론 Deque 란? 간단하게 Deque에 대해 설명하자면 원소의 추가와 삭제를 양쪽 끝부분에서 지원하는 자료구조이다. Deque는 사용자가 입구로만 나오고 삭제하게 하면 stack으로 입구로만 들어가고 출구로만 나오면 queue 로 사용할 수 있다. Java 에서 Deque 자바에서 Deque는 인터페이스로 되어져 있고 이를 구..

서론 현재 진행중인 프로젝트에서 잘만 돌아가던 API 가 안된다고 프론트 팀원분에게 연락이 왔고 나는 로그를 보고 오류를 확인을 했는데 다름이 아닌 다른 파트를 맡은 친구가 자신의 파트에서 기능 일부분을 수정했고 자신의 파트만 되는지 시행해 보고 PR 을 넣었던 것이다. 나도 그냥 기능을 수정했나 보다라고 간과하고 PR을 받았고 그 결과 내가 만들었던 API가 영향을 받아 오류가 났던것이다. 이를 경험하고 Test Code 의 중요성을 깨닫고 PR 을 넣을때는 적어도 Unit Test 는 모든 파트에서 돌려보고 넣는게 맞겠구나 라는 생각이 들어 Test Code 를 작성하게 되었다. 본론 Service 계층에서의 Test Code 를 먼저 작성하였다. 이 글에서는 내가 진행한 프로젝트에서 Junit 5 ..

1.3 Computer-System Architecture 1.3.1 Single-Processor System 프로세서의 종류를 2개로 나누자면 General Purpose Processor 우리가 흔히 생각하는 프로세서이다. 다양한 종류의 instruction set 을 실행할 수 있다. Special Purpose Processor 특정한 instruction 만 수행하는 프로세서이다. 예시로는 disk-controller microprocessor가 있다. 이렇게 된다. 이때 special processor는 main processor에게 명령을 받고 업무를 수행하는 경우도 있고, 애초에 하드웨어에 종속된 상태로 main processor와 독립적으로 업무를 수행하는 경우도 있다. Single P..

Static Page 와 Dynamic Page Static page Web Server는 경로와 일치하는 File Contents를 반환한다. 항상 동일한 페이지를 반환한다. html, css, javascript 파일등등 DB가 사용되지 않는다. loading 시간이 dynamic page 보다 훨씬 적다 Dynamic Page 인자의 내용에 맞게 동적인 페이지를 반환한다. 즉, WAS 에서 실행되는 프로그램에(servlet, jsp) 의해 만들어진 결과물 1번째 사진의 doGet을 servelt에다 구현한다. DB 가 사용되어진다. loading 시간이 상대적으로 길다. Web Server 와 WAS 의 차이 Web Server Web Server 의 개념 소프트웨어와 하드웨어로 구분된다. 하드웨어..

1.1 what os do computer system은 크게 4가지로 나뉘어 질 수 있다. hardware operationg system application programs - web browser, complier, proccessor user 운영 체제는 일종의 정부 역할이다. 정부는 그 자체로 편의 기능을 제공해준다기 보단 다른 시설에서 편의 기능을 제공할 수 있게 환경을 만들어준다. 운영체제가 그렇다. 기능적인 측면에서 보면 HW 의 효율적인 사용, 어플리케이션의 실행을 해주는 resource allocator control program 이다. 운영체제에 관한 시점에서 컴퓨터에있는 프로그램들을 나눠볼 수 있는데. kernel → running all time on the computer 운..

서론 지금까지 알고리즘 문제를 python으로만 해서 문제를 풀 때 자료형에 관해서 크게 고민을 하면서 푼적이 없었다. 요즘 자바로도 코딩 테스트 연습을 하고 있는데 array 와 list 를 언제 쓰고 어떻게 쓰는지에 대해 이해도가 부족함을 느껴 정리하고자 이 글을 작성하였다. 목차 Array 란 List 란 장,단점 활용법 본론 Array 란? 여러 데이터들이 index (식별자) 와 값으로 구성된 자료구조 index 는 유일한 식별자이다. 논리적 저장 순서와 물리적 저장 순서가 동일하다 index를 통한 접근이 O(1) 이다. 캐시 hit 가 일어나기 좋다 초기에 크기를 정하고 , 컴파일 이후 크기 변경이 불가능 하다. 연속된 메모리 공간으로 이루어져 있다. List 란? 순서가 있는 엘리먼트의 모..
서론 docker 를 공부하다가 docker 가 linux 의 name space 를 기반으로 만들어졌다는걸 알게되었고 docker 를 보다 더 잘 이해하려면 이 기반이 되는 기술부터 잘 알아야겠다 생각이 들어서 정리를 하게 되었다. 목차 리눅스 네임 스페이스란? 네임 스페이스 종류 리눅스 네임 스페이스란? 컨테이너 기반 가상화 기술의 기반이 되는 기능이다. 하나의 시스템에서 사용되지만 별개의 독립 공간처럼 격리된 환경을 제공하는 light weight 가상화 기술이다. 빌라에 각 층, 호수 별로 독립되어진 주거환경을 제공하는것과 유사하다. 이렇게 네임스페이스의 특징을 보면 하이퍼바이저 (hypevisor) 와 유사한것처럼 보이지만 둘은 차이가 있다. 하이퍼바이저 하드웨어를 물리적으로 구분해서 가상화를 ..
서론 현재 진행중인 프로젝트에는 주요 Domain은 강의 와 강사이다. 이 두 도메인은 필드 들도 많고 다양한 화면에 노출되고 다양한 로직에 사용이된다. 기본적인 Create, Update를 위한 dto들도 당연히 있지만 제일 많은것들은 Read에 관련된 Dto들이다. Dto들에도 굉장히 많은 filed들이 있고 처음에는 entity 에서 dto를 만들때 builder 패턴을 사용해서 하나하나 다 코드를 쳐서 만들었다. 그러나 프로젝트를 진행하면서 디자인이나 기획이 바뀌는 경우가 종종 있었고 이때마다 entity에도 정보가 추가되는 경우도 있었다. 이때마다 모든 builder를 돌아다니면서 하나하나 추가하는것은 잦은 실수를 유발했고 이를 어떻게 해야하나 고민하면서 Mapper에 대해 알게 되었다. 본론 ..