전체 글(171)
-
[JAVA] HashMap 구현 - Hash 값으로 index 만들어서 검색 효율 높이기
직접 HashMap을 구현하는 작업중 의문이 발생했다. HashMap은 제너릭으로 Key값과 Value 값을 가진다. 그래서 처음에는 Key에 대한 ArrayList와 Value에 대한 ArrayList 를 만들어서 HashMap을 구현했다. 그런데 이렇게 하면 자료구조가 맞나..? 해시값을 사용하지도 않았을 뿐더러 검색 시간복잡도가 좋다고 알고있는 HashMap이 너무 구려진다. 그래서 다시 해시값을 이용해서 다시 구현했다. 간단한 HashMap을 구현하는 것이기 때문에 Key 값은 따로 저장하지 않고 해시값을 구해서 index로만 사용했다. [문제 발생] 그런데, Key의 해시값을 구하면 배열의 index로는 도저히 사용할 수 없는 정수값이 나온다. 그래서 배열의 크기로 해시값을 나눈 나머지를 ind..
2023.04.20 -
[CS영상] 웹서비스에 필수! CDN이 뭔가요?
https://www.youtube.com/watch?v=_kcoeK0ITkQ - CDN은 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이기 위해 사용하는 분산된 서버 네트워크 - CDN은 대역폭을 증가시켜서 웹 페이지 접근 속도를 높여준다. - 유튜브나 인스타처럼 전세계에서 사용하는 웹 같은 경우는 수많은 요청을 하나의 서버에서 처리하면 과부하가 발생하기 때문에 가장 효율적인 CDN 서버에서 서비스를 제공한다.
2023.04.19 -
[Spring Data JPA] 데이터 수정 / Dirty checking 시 save를 별도로 해줘야 한다 ?
[문제] update로 entity의 값을 바꿔주기만 해도 수정이 되는 것은 알고 있지만, 만약 PostRepository의 구현체를 JPA가 아닌 MyBatis 등으로 바꾼다면 ? 그럼 DB에 수정된 값이 들어가지 않을 것이다. 이 상황은 OCP를 어기고 있다. 그래서 save를 통해 한 번 더 수정값을 저장해주는 코드를 반영하였다. 그런데 이렇게 되면 JPA는 어떤식으로 작동할까 의문이었다. 간단히 정리하면 영속성 매니저가 merge라는 메서드를 호출하며 수정 작업이 이루어진다. 이 과정에서 오버헤드가 발생할 수 있기 때문에 비효율적일 수도 있다. [해결] HibernateRepository 를 JpaRepsitory와 함께 상속받아서 update 메서드를 사용한다. 이렇게 하면 성능에도 좋다고 한다..
2023.04.13 -
[GIT] 커밋 메시지 타입
feat : 새로운 기능 추가, 기존의 기능을 요구 사항에 맞추어 수정 fix : 기능에 대한 버그 수정 build : 빌드 관련 수정 chore : 패키지 매니저 수정, 그 외 기타 수정 ex) .gitignore ci : CI 관련 설정 수정 docs : 문서(주석) 수정 style : 코드 스타일, 포맷팅에 대한 수정 refactor : 기능의 변화가 아닌 코드 리팩터링 ex) 변수 이름 변경 test : 테스트 코드 추가/수정 release : 버전 릴리즈
2023.04.13 -
[SpringBoot] @ToString(callSuper = true)
[문제] lombok 에서는 @ToString 이라는 편리한 기능을 제공한다. 직접 오버라이딩하지 않아도 알아서 ToString을 바로 사용할 수 있게끔 만들어준다. BaseEntity 가 id, createDate, modifyDate 등 공통값을 가지게 하고 Entity는 이를 상속받게끔 구현했다. 하지만 Entity 에서는 createDate, modifyDate 값을 사용할 수가 없었다. createDate, modifyDate는 오버라이딩하지 않았기 때문이다. [해결] 아주 간단했다. 자식 Entity에 @ToString(callSuper = true)를 적용하면 된다. "callSuper = true" 는 부모가 가지고 있는 필드까지 적용시키는 것이다. Default값은 false 이기 때문에..
2023.04.13 -
[CS 영상] 도커 한방에 정리 🐳 (모든 개발자들이 배워보고 싶어 하는 툴!) + 실습
https://www.youtube.com/watch?v=LXJhA3VWXFA&t=759s Docker Docker 개념 Application resource, System Tools, Dependencies 등 애플리케이션을 실행하기 위해 필요한 것들을 하나로 묶어서 다른 서버나 pc에 쉽게 배포하고 안정적으로 구동할 수 있게 도와주는 툴 HyperVisor 과 Docker이러한 vm에서 경량화된 컨셉을 컨테이너라고 한다.이때 Container Engine 중 가장 인기쟁이가 Docker이다. 컨테이너는 Host Os(대부분 window,mac) 에서 Container Engine을 설치하기만 하면 개별적인 컨테이너를 만들어서 애플리케이션을 고립된 환경에서 구동할 수 있도록 해준다. HyperVisor..
2023.04.12