Session
Part1
Java version 별 특징
8
11 : lambda
Java의 장점 및 특징
os level이 아니라 JVM 위에서 돌아감 ( php는 os에 의존적이라 배포문제가 생김 )
Java 배포 파일 jar
JVM option 설정
arifact
JFrog
Java는 type 검사 안전 : (python과 js와의 차이)
Visual VM
성능이나 트래픽 관리
의존성 관리 도구
gradle (현재 6점대)
maven
MVN repository, jcenter centrul
pip
npm
Log4j 이슈
꼭 알아야하는 Java libraries
Google Guava : circular
Apach commons
Jackson
Google gson
SLF4J
Log4j 2 : 3가지 라이브러리 있음 . core, api, log4j
Apache HTTPComponents : blocking/nonblocking = 비동기/동기 처리
Lombok : getter, setter
JAXB
Mockito : unit test를 위한
AssertJ
Hibernate : ORM
Junit
GC (가비지 컬렉터)
g1, gc : 성능에 있어 중요한 문제임
ORM, query
ORM vs SQL Mapper vs JDBC
SQL : 데이터베이스 function 사용할때. 분석 및 리포트 용 쿼리 날릴때 사용
query plan, query 튜닝
join
database 쿼리가 느려짐
merge join, nested join, hash join
nested : json, array로 전달
driving table, driven table
query explain : mysql, bigquery
work bench
Databse 여러개 연결 및 동시성 관리
Blocking = synchonous, non-blocking = asynchonous
JDK, JRE
IntelliJ
break point 찍으면서 컴파일
Restful API
api/v1/${somthing}
directory같은 개념
Namespace
Query Scan
full scan, range scan
Prepared Statement
Serialization Object
Error message handling
Part2
closable
connection pool 관리
SLF4J
var/log/message 에 저장됨
Interface, abstract
Interface와 abstract으로 공통된 부분을 빼서 작성
이유 -> 확장성
ResponseEntity
response 반환은 공통적인 포멧으로
Error handling
exception 별로 쪼개야 됨
global 폴더에 exception 폴더를 생성해서 공통되는 예외를 작성해놓고 사용 : https://docs.oracle.com/javaee/7/api/javax/ejb/DuplicateKeyException.html
enum type 정의해서 넣어야함 . 타입체크를 해줌으로써 생산성 높여줌
Avro
pojo 란 : plain old java object로 dto를 의미
avro는 dto 만들어줌
kafka와 호환성이 좋음
serialization, deserialization object 해줌 : https://docs.confluent.io/platform/current/schema-registry/serdes-develop/serdes-avro.html
avro-tutorial : https://data-flair.training/blogs/avro-tutorial/
Optional
get()
Pagination
web server, was
tomcat
nignx (reverse proxy, load balancing), apach web server
Try-with-resourses Statement
profiling tuning
Increase open files limit for a non root user
ulimit max 올려 -> 성능 -> 메모리
Java collections
hash map, tree map, arraylist, linkedhashmap
java - heap memory 관리
java는 heap memory 관리가 중요하다
Online hap dump analyzer : https://heaphero.io/
Java Heap Memory Size 확인 및 설정 : https://m.blog.naver.com/pcmola/221811360247
Heap setting 하기 -Xms, -Xmx : https://crunchify.com/how-to-change-jvm-heap-setting-xms-xmx-of-tomcat/
Heap Dump Capture하기 : jmap 안되서, jcmd로 함
Different Ways to Capture Java Heap Dumps : https://www.baeldung.com/java-heap-dump-capture
lambda in java
Java Annotations
PathVatiable 같은 어노테이션 사용
Access modifier
final
Rest.li
linkedin-> rest.li : https://github.com/linkedin/rest.li
GC g1, gc tuning
jetty
Java Performance Tuning Tips
참고
Last updated