본문 바로가기

반응형

IT/자바

Chapter2 동작 파라미터화 코드 전달하기 변화하는 요구사항에 대응하기 위해 단순히 파라미터를 추가하지 않고 동작 파라미터화를 이용하여 유연하게 대응할 수 있다. 동적 파라미터화란, 메서드가 다양한 동작(전략)을 받아서 내부적으로 다양한 동작을 수행할 수 있음을 의미함. 강점 : 한 메서드가 다른 동작을 수행하도록 재활용할 수 있음. [코드 개선하기] 1. 메소드 파라미터로 구현한 필터링 코드 public static List filterApples(List inventory, Color color, int weight, boolean flag){ List result = new ArrayList(); for(Apple apple : inventory){ if(flag && apple.getColor().equals(color) || (!flag.. 더보기
HashMap의 동작 Amortized Constant Time을 위하여 어떻게 해시 충돌 가능성을 줄이는가? HashMap = HashTable 제공 기능은 동일 [차이점] 1. HashMap은 동기화 X (Thread-Safe 보장 안함) -> 직접 Syncronize로 동기화 구현해야됨, HashTable은 동기화 O 2. HashMap은 보조 해시 합수는 사용하기 때문에 HashTable 보다 해시 충돌이 덜 발생함 3. HashMap은 지속적으로 개선되고 있음 [공통점] 1. 키에 대한 해시 값을 사용하여 값을 저장하고 조회하며, 키-값 쌍의 개수에 따라 동적으로 크기가 증가하는 할당 배열이라고 부름 HashMap java 8 버전에 개선된 사항 데이터의 개수가 일정 이상일 때에는 링크드리스트보다 트리가 성능상 이점.. 더보기
가비지 컬렉션에 대한 정리 stop-the-world = GC를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것 -GC를 실행하는 쓰레드를 제외한 모든 쓰레드는 멈춤 [GC의 가설] Weak generational hypothesis - 1. 객체는 금방 접근 불가능 상태, 2. 오래된 객체에서 젋은 객체로의 참조는 드물다 위 가설의 장점을 살리고자 물리적 구조를 Young 영역, Old 영역으로 나뉜다 Young 영역 - 새로 생성된 객체들이 위치하는 곳, Minor GC 발생 Old 영역 - Young 영역에서 살아남은 객체들이 위치하는 곳, Major GC(Full GC) 발생 ※ Old 영역의 객체가 Young 영역의 객체를 참조하는 경우 Old 영역에는 카드 테이블이 존재함 -> Young 영역 객체에서 Old 영역.. 더보기
[ORACLE] JOIN _ ON 과 WHERE _ 오라클 조인 결론 : 조인 테이블에 대한 조건은 WHERE보다 ON을 통해서 필터링하는 것이 성능을 최적화할 수 있는 방법이다. 이유 : ON을 사용할 경우 테이블들이 조인되기 전에 조건문을 수행한다. 반면에 WHERE 절은 테이블들이 조인된 후에 조건문이 수행되기에 더 많은 데이터를 필터링해야한다. 그러므로 성능을 저하시킬 수 있다. ※참고사항 Inner Join의 경우 ON, Where 성능 차이는 크게 없으나, Outer Join의 데이터가 많으면 많을수록 큰 효과를 볼 수 있다. [참고 링크] https://viewa.tistory.com/44 더보기
Java Wapper 클래스 기본형 래퍼클래스 생성자의 인자 byte Byte byte OR String short Short short OR String int Integer int OR String long Long long OR String float Float float, double OR String double Double double OR String char Character char boolean Boolean boolean OR String Primitive Type인 기본형을 Reference Type으로 객체화하는 것을 Wrapper Class라고 한다. 변환하는 방식을 Boxing, UnBoxing이라고 칭하며 Java 1.5 이상부턴 자동으로 변환해준다. Boxing : Integer i1 = new Int.. 더보기
JAVA 프로세스 구동시 지연발생 에러로그 : Oracle GetConnection 지연 발생 또는 Connection Reset 발생 (WaitTimeOutException 또는 SocketException) ERROR manager.SqlManager: Error executing statement: java.sql.SQLRecoverableException: IO Error: Connection reset java.sql.SQLRecoverableException: IO Error: Connection reset 상황 : 블로킹 이슈로 인해 프로세스 구동 지연 발생!!! 원인 : JDBC 드라이버를 사용시 connection String 을 암호화하는데 /dev/random로 난수를 생성하여 암호화를 진행하는데 block이 걸려 지.. 더보기

반응형