본문 바로가기

http https정리 HTTP와 HTTPS의 차이 - HTTP는 Hypertext Transper Protocol의 약자이다. HTTPS는 Over Secure Socket Layer 계층이 추가된 프로토콜이다. HTTP는 암호화되지 않은 데이터를 클라이언트와 서버가 주고받고 HTTS는 Secure단계를 거쳐 데이터를 암호화 및 복호화를 하여 보안을 강화한 프로토콜 이다. HTTPS와 SSL - HTTPS는 SSL 프로토콜 위에서 돌아가는 프로토콜이다. 암호화 방식을 이해하기 위해서는 우선 대칭키와 비대칭키에 대해 알아야 한다.- 대칭키 암호화방식은 클라이언트와 서버가 각각의 키를 공유하여 그 키로 암호화 또는 복호화를 진행한다. 이 방식의 단점은 키를 획득하면 암호화 및 복호화가 가능하다는 것이다. - 비대칭키 암호화방시에..
spring bath란 Spring Batch란 - Spring Bath는 작업을 매 주기마다 실행 가능하도록 도와 주는 프레임 워크이다. - Spring Bath는 하나의 JobLuancher가 있고 하나의 JobLuancher는 하나 이상의 Job을 가질 수 있다. 하나의 Job은 하나 이상의 Step을 가질 수 있고 Step은 Reader, Proccesser, Writer로 나뉜다. - 하나의 Job은 여러개의 JobParamerter를 가질 수 있고 key와 value로 구성된다. 하나의 Job과 JobParamer는 하나의 JobInstance가 된다. - 하나의 JobInstance는 JobExcution에 의해서 실행된다. - 하나의 Job은 여러 step이 실행되는데 step은 Job의 컴포넌트 이다. - 하나..
Restful이란 Rest란?- Rest란 쿠키나 세션같은 것에 의존하지 않고 자원 지향적으로 정의한 주소를 지정하는 방법 이다.- 그렇다면 RestFul이란 Rest 아키텍처를 사용하여 정의되고 이용되는 웹 서비스를 말한다. - Restful Api란 Rest 아키텍처를 사용하여 정의된 API를 말한다. 그렇다면 Restful하게 정의 된다는것은 어떤 의미 인가 웹 서비스의 CRUD는 URL에 동사로 구분되는것이 아니라 명사로 구분 되어야 하며 HttpRequest의 메소드로 구분 될 수 있다. CREATE는 POST로 구분되고 READ는 GET으로 구분되고 UPDATE는 PUT DELETE는 DELETE로 구분 할 수 있다. GET과 PUT DELETE는 모두 멱등 메소드이고 POST는 비멱등 메소드이다. 이는 GET..
Java HashMap동작 원리 HashMap - Hash맵은 Key와 Value로 이루어진 Java의 자료구조 - Key는 중복을 허용하지 않고 Value는 중복을 허용한다. - HashMap의 내부구조는 배열로 되어있고 key는 직접 내부 배열의 인덱스가 될 수 있다. 이 배열을 버킷이라 한다. - 인덱스를 구하기 위해서 해시 함수를 사용하는데 해시 함수는 hashcode() % M 으로 구할수 있다. - 그런데 이렇게 HashCode를 구하면 동일 중복값이 발생하게 된다. 이것을 해시 충돌이라 하는데 - 해시 충돌을 방지하기 위해 Open Addressing 방식과 Separate Chaning 방식이 있다 - Open Adressing 방식은 해시충돌이 발생하면 인접 index 값을 새로 구해서 해시충돌을 우회하는 방법이다. -..
ClassLoader ClassLoader- java 파일을 컴파일 후 Compile된 파일을 Load하여 필요한 클래스 정보를 적재함. 클래스 로더는 로드한 클래스의 필요한 클래스 정보를 로드한 적이 있다면 Cache에서 찾고 Cache에 없다면 부모 ClassLoader에서 찾고 부모에도 없다면 Self로 찾는다.클래스 로더는 계층적 구조를 갖는다. 1. BootStrapClassLoader - 최상위 클래스 로더로써 java가 필요한 기본 클래스 정보를 로드한다. - JAVA_HOME/jre/lib/rb.lib 파일을 로드함2. ExcentionClassLoader - java에서 필요한 부가 정보를 로딩한다 - JAVA_HOME/lib/ex/*.lib 을 로드함3. SystemClassLoader - java clas..
GabageCollector JAVA GarageColletor - Serial GC - 단일 처리 - 단일 처리 할때 사용되는 gc - Young Generation은 Generation 알고리즘을 사용 하고 Old Generation 은 Mark-and-Compaction 알고리즘 사용 - Paralle GC - 병렬로 처리 - Young Generation은 Generation알고리즘을 사용하고 Young Generation만 병렬로 처리 - Paralle Copy Algorithm - Generation Algorithm과 동일 하지만 Eden 영역에서 Survivor 영역으로 Copy될때 병렬로 처리 된다. - 병렬로 처리 될때 같은 동일한 스레드가 같은 객체를 참조하면 Curruption이 발생한다. Curruption을..
GarbageCollection GarbageCollection이란? - Java에서는 객체를 효율적으로 소멸시키기 위해 사용되는 알고리즘 ReferenceCounter Algorithm- 각 객체에 참조되어 있는 객체가 있으면 Count를 매겨 객체의 GC 대상 여부를 판별함 - 객체의 Count가 없는 객체만 GC하면 되기 때문에 Suspend 현상이 짧음 - 참조하는 RootSet이 없어도 각 객체 끼리 순환 구조이면 서로를 참조하고 있어 GC 대상이 되지 않고 계속 살아 있게되어 메모리릭 발생 확률이 높아짐. Mark-And-Sweep Algorithm - RootSet 부터 참조하는 객체에 Marking하여 객체가 살아 있는지 판별하게 됨. - Mark Pahse와 Sweep Phase로 나뉨 - Mark Pahse : App..
String StringBuider SttringBuffer 차이 Stirng - String 객체는 불변(Immutable) 객체이다. String은 메모리에 한번 할당이 되고 할당된 내용을 수정 또는 문자를 추가 하려고 하면 새로운 객체가 생성되고 기존에 할당된 객체는 변경되지 않는다. 예를 들어 String test = "hello"가 있고 test += "test"; 라고 하면 내부적으로 new StringBuilder(test).append("test").toString()을 호출하게 된다.그래서 스트링은 불변 객체이다. new String과 리터럴 String 의 차이- 그러면 리터럴로 선언한 스트링과 객체로 선언한 스트링은 어떤 차이가 있을까? 리터럴로 선언한 Stirng은 String Constant Pool에 생성이 되고 new String으로 할당한 ..