전체 글
-
디자인 패턴- BuilderSpring Boot 2022. 1. 19. 02:37
스프링은 객체 지향 설계 원칙을 극한으로 적용하고 있는 프레임워크다. 객체 지향을 정말 잘 따르는 Best Practice"들이 있는데, 그것이 디자인 패턴이 되겠다. 디자인패턴은 응집도는 높고 결합도는 낮은 코드 디자인의 패턴이다. 과 을 구분해서 바뀌는 부분을 바꿔도, 바뀌지 않는 부분에는 영향을 끼치지 않는 것. 목차 Builder 패턴 Builder 패턴 스프링으로 연습 삼아 Todo list를 간단히 만들었는데, DTO를 사용할때 this.필드 = 매개변수.getter; 로 값을 할당하는게 아니라 @Builder라는 이상한 어노테이션을 사용하는 것을 보았다. 쓰면 뭐가 좋고 정체가 무엇일까? @Builder @NoArgsConstructor @AllArgsConstructor @Data publ..
-
JPA 개념 정리 - 영속성 컨텍스트, 트렌젝션, 1차 캐시, Flush, 쓰기 지연Spring Boot 2022. 1. 16. 05:12
오늘은 간단한 Spring Data JPA의 내부에서 어떻게 작동 하는지를 기록 해본다. 기본적으로 서버가 할 수 있는 일은 한계가 있다. CPU를 100% 사용 중이라던지, 메모리가 full이라던지, 쓰레드가 전부 일하는 중이라던지 서버 컴퓨터가 맛탱이 가는 일이 일어난다. 이를 방지하려고, AWS 로드밸런서로 서버를 여러대로 scale out 한다던지, 다른 놀고 있는 컴퓨터를 찾아서 코딩으로 분산 처리를 해준다던지,,,를 백엔드 개발자가 한다고 한다. 오늘 정리하는 영속성 컨텍스트도 이러한 일을 초점으로 공부하면 좋을 것 같다. 목차 엔티티 매니저 영속성 컨텍스트 1차 캐시 트렌젝션, 쓰기 지연, Flush() 엔티티 매니저 JPA가 제공하는 기술은 크게 2가지 이다. 1) 엔티티와 DB 테이블을 ..
-
TIL - 리얼리눅스 무료 세미나 후기 "브라우저부터 웹서버까지"세미나 참석 2022. 1. 13. 01:04
금일은 튜터님의 추천으로 리눅스에서 주관하는 웹 브라우저 - 웹 서버에 대한 미니 강의을 들었다. 웹 통신을 할때, 리눅스 트레이싱 도구를 이용하면 더 효과적으로 공부할 수 있다는 골자의 내용이었다. 스스로에 대한 평가를 해보자면 70% 정도 이해했다. (네트워크을 최근에 살짝 공부해서? 익숙한 용어들이 나온 덕분에) 못 알아들은 30%는 리눅스 명령어, 네트워크 용어들이다. ✅웹 클라이언트 - 웹서버 구조 ✅목차:"브라우저부터 웹서버까지" 1. HTTP 통신의 이해와 추적(실습) 2. DNS 의 이해와 추적(실습) 3. TCP/IP 통신이해와 추적(실습) 배운 것 요약 - 웹 브라우저 - 서버 사이 구조이다. - 리눅스에는 DNS 서버와 TCP/IP의 흐름을 추적하는 도구가 있다. - 리눅스 명령어로 ..
-
DB 연결 시, 특정 객체만 close() 하는 이유Spring Boot/DB 2022. 1. 11. 19:09
코드를 보던 중에 스프링 부트와 디비를 직접 연결하는 경우에는 꼭 연결했다가 해제해주는 것을 보았다. 한번 연결해 놓으면 될 것 같은데 왜 API 기능을 수행할 때마다 연결/해제를 반복해야 하는 걸까? 1) 운영체제가 외부 파일을 "열면" 다른 프로세스가 접근 못하도록 잠금을 하기 때문. DB가 계속 연결 중이면, API가 접근 할때 제약이 있을 수 있어 x.close()로 사용마다 연결을 끊어주어야 한다. When a file is "opened," the OS marks the file as locked, generally so it can't be deleted by other processes while it's being used. x.close() undoes the lock, allowing..
-
네트워크- 네트워크 정의, 패킷, 비트, 바이트, LAN, WAN개발공부/CS지식 2022. 1. 10. 02:18
우리가 웹 브라우저를 켜고 구글에서 url 창에 www.naver.com을 입력하면 어떤일이 일어날까? 첫째 해당 url을 입력하면 네이버의 DNS서버로 요청이가서 IP주소가 반환된다. 해당 IP주소를 가지고 "네이버 서버"에 접근하여 네이버 웹 페이지를 받아와 브라우저에 호출한다. 오늘은 네트워크에 대해 정리 해보며 더 자세히 알아보자. 패킷 컴퓨터와 컴퓨터를 연결한 것을 네트워크하고 한다. 연결된 컴퓨터는 서로 데이터를 주고 받을 수 있다. 이때 데이터는 패킷(데이터의 작은 조각)으로 전달 된다. ex) 이미지 파일 1개를 보낸다고 가정하면, 1개의 이미지 파일이 수십개의 패킷으로 분할되어 전송된다. 또한 컴퓨터는 0과 1 즉 이진법만 인식 할 수 있다. 0과 1의 단위를 Bit라고 하며, 8bit ..
-
REST API란?개발공부/CS지식 2022. 1. 10. 00:10
2022.01.17 : REST 원칙 내용 보충 개인적으로 REST API를 완벽하게 이해하고 사용하고 있다고 생각했는데, 최근에 나의 설명이 완벽한 답변이 아니라고 해서 정리해둔다. REST란 Roy T. Fielding라는 사람의 박사논문에서 첫 소개된 개념이다. 논문에 내용이다 보니 사실 방대하고 말이 어렵다. 사람들이 다 같은 마음인지, 논문의 내용을 정확하게 해석해서 사용하는 곳은 많지 않고 각 회사마다 각자의 사정에 맞추어 조금씩 다르다고 한다. "브라우저가 서비스를 어떤 형식으로 요청 보내고, 응답 받는지를 REST 아키텍처 스타일로 설계, 구현된 것" 목차 REST API? REST 6가지 원칙 REST 활용 장/단점 REST API란? Representational State Transf..
-
TIL - 자바를 잡아라JAVA/자바공부 2022. 1. 6. 00:38
오늘은 모의면접이 있었다. 면접관에게 제출한 프로그래머스 이력서가 접근 권한 문제가 있었다. 그래서 면접관님이 내 이력서를 보고 나라는 사람을 파악하는 시간이 조금 걸렸다. 개인적으로 자기 PR을 잘하는 편이라고 생각했다. 개학교 팀플 같은 것을 하면 꼭 발표를 맡는 타입이고, 무엇보다 영업직 출신이니까. 퍽이나.. 날 표현하는 일은 너무 어려운 일이다. 기록하고 싶은 것들을 남긴다. (면접에 받은 질문) 1. NoSQL과 SQL의 차이는? 나의 대답: SQL은 관계형 디비, NoSQL은 Not Only SQL. SQL은 대용량의 데이터를 테이블로 구분지어서 관리하기가 편하다(유효성 검사 같이 안정성이 있지 않을까…? sql문은 각 컬럼에 제약조건이나 유일 값 설정 같은게 있으니까.) 반면에 NoSQL은..
-
JUnit이란?Spring Boot/테스트 2022. 1. 5. 20:52
프로젝트를 하면서 아쉬운 점로 2가지가 있겠다. 하나는 데이터베이스, 둘은 테스트이다. 테스트 코드에 대한 학습이 없어서, 테스트 코드의 존재도 모르고 개발했는데 발표회에 테스트 코드를 척척 완성한 다른 팀들을 보니 너무 부러웠다. 나도 해볼꺼야.. JUnit이란? Java 언어의 단위 테스트 프레임워크이다. 기능 단위, 메서드 단위 별로 테스트를 도와주는 도구다. Hamcrest라는 JMock이라는 Matcher 라이브러리(값을 비교 할때 더 편리하게 도와주는 도구)를 같이 사용한다. 기본적으로 아래 3가지 기능을 지원한다. - 테스트의 결과가 예상과 같은지 판별하는 assert 단정문 - 여러 테스트에서 공동 사용하는 테스트 픽스처 - 테스트 작업을 수행하는 테스트 러너 코드를 써보자. 테스트를 위해..