일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- zipWith
- execution engine
- Kotlin
- AutoCloseable
- 코딩테스트
- n+1
- Runtime data area
- Hotspot VM
- jvm
- try-with-resources
- jetbrain
- try-catch
- circuitbreaker
- 4-way-handshake
- GC
- 날짜쿼리
- resilience4j
- tcp
- java
- closeable
- feign
- Class Loader
- webflux
- 동작방식
- optional
- springboot
- intelij
- wagon-ssh
- 람다표현식
- try-catch-finally
- Today
- Total
목록전체 글 (64)
JuBin's personal study blog

간단한 기본적인 개념을 알고 사용하자. JPA - JPA는 기술 명세이다. 자바 어플리케이션에서 RDBMS를 사용하는 방식을 정의해 놓은 인터페이스이다. - 말그대로 JPA는 인터페이스이다. 라이브러리가 아니다. 단순 명세이기 때문에 구현이 없다. - 클라이언트가 백엔드API명세를 보고 어떻게 호출해야 하는지를 정의해놓은 것과 같다. Hibernate - Hibernate는 JPA를 구현한 구현체이다. JPA명세를 보고 구현해 놓은것이다. - Hibernate는 마치 자바의 interface를 구현한 class와 같다고 생각하면 된다. - JPA를 사용하기 위해서는 반드시 Hibernate를 사용할 필요없이 JPA를 구현한 구현체들을 EclipseLink, DataNucleus 등과 같이 여러가지 구현체..
커밋은 먼저 실패하는 test code 작성, 성공하는 test code 작성, 리팩토링까지 끝마친 후 기능단위 커밋 TDD 연습에는 Util같은 기능단위로 테스트 연습하기 좋다.(input, output이 명확한) 알고리즘(input,ouput이 명확한)이 단위테스트로 적합하다. TDD를 잘하려면 좀 더 작은 단위로 테스트할수 없을까 고민해봐야함. to-do-list가 너무 크면안됨. ex) 야구게임을 예로 들면 3자리에 대한 strike, ball, nothing에 대한 결과값이 아닌 1자리~2자리에 대한 strike, ball, nothing 결과값 .... 정리중

1. 브라우저의 URL 파싱 해당 요청이 들어오면 브라우저는 Protocol / URL / Port 을 해석한다. HTTP의 기본포트는 80, HTTPS는 433번 포트를 사용한다. 2. HSTS(HTTP Strict transport security) 목록 조회 HSTS란 HTTP를 허용하지 않고, HTTPS만 허용하는 기능이다. HTTP로 요청이 왔다면 HTTP 응답 헤더에 "Strict Transport Security"라는 필드를 포함하여 응답하고 이를 확인한 브라우저는 해당 서버에 요청할 때 HTTPS만을 통해 통신하게 된다. 이 목록을 HSTS 목록이라 부른다. 브라우저는 HSTS목록 조회를 통해 해당요청을 HTTPS로 보낼지 판단한다. HTST목록에 해당 URL이 존재한다면 HTTP로 요청해..
String String은 불변(Immutable) 속성을 갖는다. 멀티쓰레드 환경에서 안전하다(thread-safe) String str = "hello~"; // String str = new String("hello~") - 1 str = str + "world"; - 2 1) str은 stack영역에 저장, "hello~"는 heap영역에 저장된다 2) str은 stack영역에 그대로지만 "hello~"는 Garbage가되고 str은 새로운 "hello~world"를 참조한다. 연산이 적은(문자열 추가, 수정, 삭제) 경우 사용하면 좋은성능을 기대할 수 있다. 알고리즘에 String클래스를 사용하면 Heap영역에 많은 Garbage가 쌓여 힙메모리 부족현상이 일어날 수 있다. 따라서 연산횟수가 많..

Java Exception Class 계층구조 Error Error 영역은 시스템 레벨에서 발생한 심각한 오류이다. 애플리케이션단 코드로 해결 할 수 없다. 개발자가 처리할 수 없다. ex ) OutOfMemory, ThreadDeath Checked Exception 컴파일 단계때 발생하는 오류이다. 트랜잭션 범위에서 예외 발생시 자동으로 Rollback 처리가 되지 않는다. (Checked Exception은 복구가 가능하다는 매커니즘을 가지고 있다. 예를들어 이미지를 찾는도중 예외 발생시 기본이미지로 대체할 수 있다. 복구에 관련된 로직을 개발자가 직접 핸들링 할 수 있다.) Checked Exception은 코드작성시 반드시 명시적으로 예외를 처리해야한다. 방법으로는 try - catch구문을 이..
JAVA JVM구조에 대해 설명하시오. GC처리 방법에 대해 설명하시오. HashMap vs HashTable vs ConcurrentHashMap의 차이를 설명하시오. 접근제어자에 대해 설명하시오. interface와 abstract의 차이를 설명하시오. StringBuilder와 StringBuffer의 차이에 대해 설명하시오. try-with-resources에 대해 설명하시오. Synchronize에 대해 설명하시오. Synchronize를 하기 위한 방법은 무엇이 있나요? static은 메모리 구조 중 어디에 올라가나요? 컬렉션 프레임워크에 대해 설명하시오. 제네릭에 대해 설명해주시고, 왜 쓰는지 어디세 써 봤는지 알려주세요. Vector와 List 차이에 대해 설명하시오. 오버로딩과 오버라이딩..

JVM(Java Virtual Machine) 소프트웨어적으로 Java언어를 실행시키 위한, 자바 바이트 코드를 실행할 수 있는 주체, 또한 데몬이라고 합니다. JVM 스펙은 각 벤더사마다 다르지만 표준은 존재합니다. 컴퓨터는 0과 1로 이루어진 기계어를 쓰는데 기계어는 사람이 쓰기에는 너무 어렵기 때문에 자바(Java)와 같은 고급언어를 사용해 프로그램을 작성하고, 컴파일러가 해당 언어를 기계어로 번역을 합니다. 자바 언어를 번역하는 컴파일러를 자바 컴파일러(javac.exe)라고 합니다. 물론, 자바의 경우, 컴파일러가 기계어로 바로 번역하진 않습니다. 운영체제나 하드웨어 마다 사용하는 기계어가 다르기 때문에 자바는 어느 운영체제나 하드웨어에서도 동일하게 동작하도록 자바 가상 머신(Java Virtu..

이직준비 & 개인역량를 위해 loadmap을 설정해 기초부터 다시 준비한다. 우선순위 Essential 필수 Good to know 알면좋다 possibilites 가능하면? [ General Programming Skill ] 1. 데이터구조 및 알고리즘 2. HTTP / HTTPS protocol 3. 기초 CS지식(Computer Science) 4. TCP / UDP와 같은 기초 네트워크 지식 5. 디자인 패턴 [ JAVA ] - [ JDK API ] 1. Java Collections Framework (List, Set, Map 등등) 2. Java Concurrency API (자바 동시성, Thread, Runnable, Object locking, Synchronize 등등) 3. Jav..
ModelMapper, MapStruct 둘다 Object Mapping 라이브러리로 일반적으로 Entity -> DTO 혹은 DTO -> Entity 변환 등 Object to Object의 매핑을 위해서 사용된다. 국내에서는 ModelMapper를 많이쓰고, 레퍼런스가 많아서, 사용하기 편하다고해서 많이들 쓰지만 ModelMapper와 MapStruct 둘의 퍼포먼스 차이는 약 90배이상 차이난다. 간단하게 설명하면 ModelMapper는 Runtime시 리플렉션으로 모델 매핑을해 성능상 좋지않고 Mapstruct는 컴파일 타임에 매핑 클래스를 생성해줘 그 구현체를 런타임에 사용하는 것이기 때문에 앱 사이즈는 조금 커질수 있지만 성능상 크게 이슈가 없다~ (성능비교는 이분 포스팅을 참고 better-..
[ CSRF(Cross Site Request Forgery) 공격 ] 사용자 의지와 무관하게 공격자의 의도대로 서버에 특정 요청을 하도록 함 인증과정 서버에서는 View 페이지를 return할때 랜덤으로 생성된 csrfToken값을 사용자 session에 같이 저장한다. 사용자는 서버에 request(http method : PATCH, POST, PUT, DELETE(GET은 불포함))를 요청할때 view page 내에 hidden으로 숨어있는 csrfToken을 같이 서버로 전송한다. 서버에서는 csrfToken값이 세션에 저장되있는 값과 일치하는지 확인해 위조 여부를 판단한다. 일치하면 csrfToken은 바로 폐기하고 새로운 view page를 return할때마다 새로 생성한다. ※ 템플릿엔진으..