-
HTTPS와 SSL 인증서Network/Http 2020. 6. 27. 01:49
컴퓨터(클라이언트)와 컴퓨터(서버)가 네트워크를 이용해서 통신을 할 때는 3가지 단계로 진행된다. 악수 -> 전송(세션) -> 세션 종료 HTTPS에서 위 3가지 단계가 어떻게 이뤄지는지 정리해봤다. ■HTTP vs HTTPS HTTP는 Hypertext Transfer Protocol의 약자다. 즉 Hypertextdls HTML을 전송하기 위한 통신 규약을 의미한다. HTTP는 암호화를 하지 않은 채 데이터를 전송한다. 따라서 HTTP 방식으로 주고 받는 메시지(패킷)는 유출되기 쉽다.HTTPS는 Hypertext Transfer Protocol over Secure Socket Layer의 약자다. 즉 보안이 강화된 HTTP라고 할 수 있다. ■HTTPS vs SSL HTTPS와 SSL을 같은 의미..
-
[이펙티브 자바] item 8 - finalizer와 cleaner 사용을 피하라개발서적읽기/Effective Java 3E 2020. 6. 25. 12:48
■자바가 제공하는 객체 소멸자 2가지, finalizer와 cleaner@Override public void finalize() { // ... }Object 클래스에 정의된 finalize 메서드를 Override하면 해당 객체가 GC 대상이 될 때 finalize 메소드가 호출된다. 그런데 문득 궁금한 점이 생겼다. 메소드 이름은 finalize인데 책은 finalizer라고 표현한다. 무슨 차이가 있는걸까? 출처 에 따르면, GC가 어떤 객체를 memory 해제하려고 하는데 그 객체가 finalize 메소드를 재정의한 경우 즉각적으로 Collection(회수) 되지 않는다. 대신 Finalization Queue에 들어간 후 Finalizer에 의해 정리가 된다. Finalizer는 객체의 fin..
-
[이펙티브 자바] item 7 - 다 쓴 객체 참조를 해제하라개발서적읽기/Effective Java 3E 2020. 6. 23. 22:42
■GC가 메모리에서 회수하기 힘든 '다 쓴 참조' 객체 GC가 다 쓴 객체를 알아서 회수해간다고 해서 메모리 관리에 더 이상 신경쓰지 않아도 된다고 오해할 수 있는데, 절대 사실이 아니다. 아래 Stack을 사용하는 프로그램을 오래 실행하다 보면 점차 GC 활동과 메모리 사용량이 늘어나 결국 성능이 저하될 것이다. 상대적으로 드문 경우긴 하지만 심할 때는 디스크 페이징이나 OutOfMemoryError를 일으켜 프로그램이 예기치 않게 종료되기도 한다. 과연 메모리 누수가 일어나는 위치는 어디일까? public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACI..
-
[이펙티브 자바] item 6 - 불필요한 객체 생성을 피하라개발서적읽기/Effective Java 3E 2020. 6. 22. 21:15
■String 리터럴을 이용한 불필요 객체 생성 방지 - 불필요한 객체 생성String s = new String("bikini");이 문장은 실행될 때마다 String 인스턴스를 새로 만든다. 완전히 쓸떼없는 행위다. 생성자에 넘겨진 "bikini" 자체가 이 생성자로 만들어내려는 String과 기능적으로 완전히 똑같다. 아래는 문제점을 개선한 코드다.String s = "bikini";이 코드는 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용한다. 그리고 같은 가상 머신 안에서 이와 똑같은 문자열 리터럴을 사용하는 모든 코드가 같은 객체를 사용함이 보장된다. (String constant pool in Heap) ■정적 팩터리 메서드를 이용한 불필요 객체 생성 방지 생성자 대신..
-
RedisInfra 2020. 6. 22. 14:08
■Redis란? - Remote Dictionary Server의 약자 - 비 관계형 DB인 NoSql에 속하는 In-Memory DB 형태의 시스템 In-Memory DB : Memory에서 데이터를 다루며 read, write 속도가 빠르다. - Memory에 데이터가 저장되기 때문에 시스템이 꺼지면 모든 데이터가 삭제됨 따라서 데이터를 지속적으로 유지하기 위해 모든 작업을 로그에 기록해서 Disk에 저장한 후 시스템을 구동할 때 로그를 기반으로 데이터를 다시 메모리에 올리는 방식으로 데이터를 Backup (아래에 자세한 Backup 방식 정리) - key-value 구조로 데이터를 저장하고 조회 - 주로 RDBMS의 부하를 줄이기 위한 캐시 솔루션으로 사용 ■Redis의 사용 사례 - 캐싱 - 세션..
-
[이펙티브 자바] item 5 - 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라개발서적읽기/Effective Java 3E 2020. 6. 22. 00:38
public class SpellChecker { private static final Lexicon dictionary = ~~~; public static boolean isValid(String word){ ~~ } }위 정적 유틸리티 클래스(item 4)는 유연하지 않고 테스트하기 어렵다. 사전이 여러개일 가능성이 충분히 충분(?)한데, 위 코드는 다른 사전으로 스펠링을 체크하기 위해선 코드를 수정해야만 한다. 여러 자원 인스턴스를 지원하고, 클라이언트가 원하는 자원(dictionary)을 사용하게 할 수 있는 유연한 스펠링 체크 클래스로 수정해보자. ■방법 1 :: dictionary set 메소드 dictionary의 final 키워드를 제거하고 set 메소드를 추가하는 방법이다. 이 방식은 ..
-
Java Thread(with Multi Thread)Java/Basics 2020. 6. 21. 20:29
■Thread란? 프로세스 내에서 실행되는 독립적인 흐름 단위. ■Thread 구현 방법 2가지 1. Thread class를 상속받는다. -> 다른 클래스를 상속받을 수 없다는 특징이 있다.public class ExtendedThread extends Thread { @Override public void run() { System.out.println("Thread를 상속받은 스레드 생성"); } }2. Runnable interface를 구현한 후 Thread class 생성자 매개변수에 넣는다. -> 구현하려는 클래스가 이미 다른 클래스를 상속하고 있을 때 사용한다.public class ImplementsThread implements Runnable { @Override public void..
-
'묶음할인' 세계 최초로 금지...??경제/경제이슈 분석 2020. 6. 19. 22:30
■ 묶음할인, 세계 최초로 금지 세계 최초로 대한민국에서 라면, 햇반, 과자묶음 등 개별로 포장된 제품들을 다시 번들로 묶어 할인판매하는 '묶음할인'을 금지하는 재포장금지법이 다음 달 1일부터 시행된다. 당장 이번 주나 다음 주에 대량으로 사 놓아야 하는 것이 아닌가 싶다. 이러한 법이 발의되고 제정된 이유는 식품업계에서 묶음할인 경쟁이 치열하다보니 이를 묶을 때 사용하는 접착제와 플라스틱 또는 박스가 과도하게 쓰이고 있기 때문이라고 말한다. 그런데 의아한 부분이 있다. 기사에 따르면 다음 달부터 번들판매는 가능하지만, 번들할인은 불가능하다. ■ 번들판매는 가능, 번들할인은 불가능 번들판매는 가능한데 그 제품들을 할인해 판매할 수는 없다? 기업들의 마케팅 전략에 제재를 두어 경쟁의 과열을 방지함으로써 환..