일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kakao
- C언어
- Sharding
- 디프만16기
- flutter
- pub.dev
- Scaffold
- 연습문제
- nGrinder
- 코딩테스트
- 코딩 테스트
- 디프만
- Oidc
- AOP
- exception
- 부하 테스트
- OAuth
- 코드트리
- dip
- 코드 트리
- Kotlin
- c
- Redis
- java
- Spring
- Kafka
- 코딩
- 자료구조
- depromeet
- 운영체제
- Today
- Total
목록전체 글 (66)
Nick Dev
✅ HashMap이란?key와 value로 짝지어 저장이 set를 하나의 Node로 본다이 Node의 배열이 곧 HashMap이다key값은 고유데이터 넣은 순서 보장 X✅ 성능과 관련있는 변수 3개1. initialCapacity초기 HashMap의 용량 = 버킷 갯수를 의미미리 잘 설정해놓으면 rehashing이 일어나지 않음DEFAULT_INITIAL_CAPACITY= 1 MAXIMUM_CAPACITY = 1 2. load factorHashMap이 어느정도 차야 자동으로 확장할지 정한 값0 ~ 1 사이의 값DEFAULT_LOAD_FACTOR = 0.7575% 차면 HashMap의 크기를 늘리겠다값이 커질수록공간의 오버헤드는 감소하지만HashMap에 여유 공간이 없어 해시 충돌 등으로 인해 조회, 넣..
Array와 ArrayList는 무엇이 다르고,ArrayList는 어떻게 배열의 크기를 동적으로 늘리는지, grow() 메서드를 통해 알아보자💡 Arrays(배열)➡ 특징동일한 타입의 값들을 하나의 묶음으로 저장한 자료 구조처음에 선언한 배열의 크기(길이)를 변경할 수 없다데이터 크기가 정해져 있을 때, 사용하는게 좋다딱 선언한만큼 사용하기에 메모리 관리가 효율적이다메모리에 연속적으로 나열되어 있어 index를 통한 접근 속도가 빠름💡 ArrayList➡ 특징확장 가능한 배열 (Resizable-array라고 표현함)배열처럼 순서가 있다Vector 클래스와 거의 유사차이점 : thread safe 하지 않음➡ Array와 다른점Array는 한번 용량을 설정하면 변경 불가능ArrayList는 용량 확장..
try-with-resource란?java 7에서 도입된 try-catch-finally를 개선한 문법💡 try-catch-finally사용 후 반납해야 할 자원들은 Closeable 인터페이스를 구현했고, 무조건 사용 후에 close() 메서드를 호출해야 한다호출하지 않으면 거의 장애 발생!!!🤦♂️ 문제점개발자가 실수로 close() 호출하지 않으면 바로 문제 발생⇒ 이를 해결하고자 나온 문법이 try-with-resources임💡 try-with-resourcesAutoCloseable 인터페이스를 구현한 클래스에 대해서 자동으로 자원을 반납해주는 기능 제공❓ 그럼 기존 Closeable 구현한 클래스들은 적용이 안되나…?AutoCloseable 인터페이스를 기존 Closeable 인터페이스..
오늘 알아볼 내용은 Error와 Exception이 무엇인지Checked Exception과 Unchecked Exception의 차이는 무엇인지💡Java 예외 구조💡 Error란?자바 프로그램 밖에서 발생한 예외 → 시스템이 종료되어야 할 수준서버의 디스크 고장메인보드 고장 → 개발자가 미리 예측해 방지하기 어렵다 대표적인 에러OutOfMemoryError : JVM에 할당된 메모리 부족으로 더 이상 객체를 할당하지 못할 때 발생하는 오류heap 사이즈 부족GC가 더 이상 메모리 확보하지 못할 때네이티브 메모리 공간 부족StackOverFlowErrorJVM 실행될 때 할당받은 stack의 크기를 넘어서서 메서드를 호출하게 되면 발생하는 오류💡 Exception개발자가 구현한 로직에서 발생한 실..
Garbage Collector 역할메모리 할당사용 중인 메모리 인식사용하지 않는 메모리 인식GC 종류 2가지Minor GCEden 영역이 꽉 차게 되면 시작되는 GCYoung generation에서 발생하는 GC과정Eden이 처음 꽉 차게 되면 Minor GC 이후 살아남은 객체들 S0로 이동(S0로 가정)S1은 emptyS0에 들어가기에 너무 큰 객체면 바로 Old영역으로 promotion또 Eden이 꽉 차게 되면 Minor GC 발생이때, Eden + S0 에서 살아남은 객체들이 S1으로 이동S0가 empty1, 2의 과정 계속 반복이렇게 Survivor 영역 사이 이동할 때마다 age 증가객체가 특정 age 넘으면 Old generation으로 promotionHotSpot JVM의 경우 def..
1. JVM의 메모리 영역에는 어떤 부분들이 있고 어떤 데이터들이 저장되는지1. Heap 영역저장되는 데이터클래스 인스턴스final class는 Method 영역에 저장…배열신규 객체즉, new 를 통해 생성된 객체가 저장되는 영역구조Young GenerationEdenSurvivor 1Survivor 2Old GenerationPermanent GenerationJDK 8부터 Metaspace로 변경(더 이상 Heap에 없음)JDK 8부터 Native Method Stack 영역으로 넘어감Perm 영역은 기존에 상수와 static 변수, 런타임 중에 읽은 클래스와 메소드의 메타데이터를 저장동적으로 클래스들이 로드되고 Static 변수나 상수가 Perm영역에 쌓이게 되면서 OOM이 자주 발생 → 그래서 ..
Thread란?정의Thread는 실행 단위로 볼 수 있다‘경량 프로세스’라고도 함1개의 process 안에 여러 개의 thread가 있다즉, 하나의 프로세스 안에서 여러 개의 실행 가닥이 있다단일 thread보다 다중 thread가 빠름생성될 때마다 별도의 stack이 할당된다예시java XXX.java → 클래스 실행시키는 순간 자바 프로세스가 시작main() 메서드 수행되면서 하나의 thread가 시작된다여러 thread 필요하면 main() 메서드에서 쓰레드 생성하면 된다Tomcat과 같은 WAS도 main()메서드에서 생성한 thread들이 수행되는 것Java에서 Thread를 어떻게 만들까?생성하는 방법 2가지Runnable 인터페이스를 implementsThread 클래스를 extends생성하..
고민하게 된 계기프로젝트 전반에서 현재 로그인된 유저의 정보를 가져오는 일이 많다'나의 게시물', '게시물 작성' 등 많은 로직에서 현재 세션에 있는 유저 정보를 필요로 함필요로 할 때마다 세션에서 유저 정보 가져오는 것은 중복된 코드가 너무 많아짐 -> 한 곳에서 처리하자!!초기 해결 방식ArgumentResolver 를 통해 공통 관심사를 걷어내자@Slf4jpublic class LoginMemberArgumentResolver implements HandlerMethodArgumentResolver { /** * @Login 애노테이션 붙어있으면서 UserDTO 타입이면 해당 ArgumentResolver 사용 */ @Override public boolean supp..

MapMap이란?key : value 쌍으로 존재둘 중 하나만 존재할 수 없음key는 해당 Map에서 unique해야만 함value는 중복되어도 상관XMap 인터페이스를 구현한 주요 클래스HashMap가장 많이 사용TreeMapLinkedHashMapHashTableMap과 다름HashTable은 JDK 1.0부터 있었던 클래스HashMap은 JDK 1.2부터 만들어짐이때 Collection 인터페이스 만들어짐기능HashMapHashTablekey, value에 null 저장 가능 여부가능불가능Thread-safeNot SafeSafe데이터 처리Collection ViewEnumeration 객체1,2,3 클래스들은 전부 Not Thread-safe임Map m = Collection.synchronize..