Java & 배경지식/기본상식
-
Stream 다시 공부Java & 배경지식/기본상식 2021. 5. 2. 15:43
Stream을 사용하면서 깊게 생각하지 않고 간단하게 사용법만 사용하였다. 그러다가 Stream을 깊게 사용하려다가 막히는 내 모습을 보고 이대로는 안되겠다 싶어 다시한번 복습 겸 공부함 코드 Steam 함수의 sorted, filter 등등의 코드는 위의 git 주소로 들어가서 확인 Stream이란? 한줄로 설명 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 기능 /** * 아래의 코드를 실행시키게 된다면 * stream 안쪽에 있는 값이 들어가 있지 않을 것이다. * 그 이유는 스트림을 사용할라면 * 1. 스트림 만들기 * 2. 중간연상 * 3. 최종연산을 * 위 3가지의 조건을 만족시켜야 하는데 현재 1,2단계만 만족했기 때문이다. */ public void whatIsStream() { Li..
-
HTTP와 HTTPS란?Java & 배경지식/기본상식 2021. 3. 11. 13:42
HTTP란? HTTP 서버는 기본 포트인 80번 포트에서 서비스 대기중이며 TCP 80 포트를 사용해 연결하면 서버는 요청에 응답하면서 자료(텍스트)를 주고받는다 단순텍스트를 주고받기 때문에 네트워크에서 전송 신호를 인터셉트하는 경우 원하지 않는 데이터 유출이 발생할 수 있다. HTTPS란? HTTPS는 기존 HTTP 레이어에서 SSL(TLS) 프로토콜을 얹어 평문 데이터를 암호화하는 프로토콜이다 HTTPS의 암호화 공개키는 두개의 키를 갖게 되며, A키로 암호화 하면 B키로 복호화가 가능하며, 반대로 B키로 암호화 하면 A키로 복호화가 가능하다. 여기서 두개의 키중 하나는 공개키(public key)가 되며, 하나는 비공개키(private key)가 된다. 두개의 키가 동작되는 원리를 간단히 살펴보면,..
-
Arrays.sort()와 Arrays.parallelSort() 내부 알고리즘Java & 배경지식/기본상식 2020. 8. 9. 17:35
Arrays.sort() Arrays.sort() 알고리즘은 기본적으로 DualPivotQuicksort를 사용한다. 이 알고리즘은 기본적으로 1. Insertion Sort 2. Merge Sort 3. Quick Sort 위 3개의 알고리즘을 사용하는데 보통 1,2, 1,3을 섞어서 사용한다. static void sort(int[] a, int left, int right, int[] work, int workBase, int workLen) { // Use Quicksort on small arrays if (right - left < QUICKSORT_THRESHOLD) { sort(a, left, right, true); return; } /* * Index run[i] is the start..
-
자바 개발자가 알아야하는 25가지 상식!Java & 배경지식/기본상식 2020. 7. 19. 23:27
1. platform independent language(플랫폼 독립 언어) 2020/06/07 - [Java/기본상식] - 자바, JVM, JDK, JRE 차이 2. JVM란 무엇이며 JRE의 차이점은 무엇인가? 2020/06/07 - [Java/기본상식] - 자바, JVM, JDK, JRE 차이 3. Autoboxging과 unboxing의 개념 데이터 타입 종류 Primitive(가벼운 데이터) bollean, char, byte, shourt, int, long, float, double Stack에 존재 Wrapper Object(무거운 데이터) Boolean, Character, Byte, Shourt, Integer, Long, Float, Double Heap메모리에 존재 위의 데이터는 ..
-
바이트코드 조작Java & 배경지식/기본상식 2020. 6. 7. 18:03
바이트 코드 조작 코드 커버리지? 테스트 코드가 확인한 소스 코드를 % JaCoCo를 써보자. 바이트코드를 읽어 이에따른 결과를 표시 https://www.eclemma.org/jacoco/trunk/doc/index.html http://www.semdesigns.com/Company/Publications/TestCoverage.pdf JaCoCo 설정 방법 1. pom.xml에 의존성 추가 org.jacoco jacoco-maven-plugin 0.8.4 prepare-agent report prepare-package report 2. target에 있는 site폴더에 존재하는 index.html 실행 index.html 오른쪽클릭 -> open with -> web Brower클릭 3. 결과 4..
-
클래스 로더Java & 배경지식/기본상식 2020. 6. 7. 16:55
클래스 로더 로딩, 링크, 초기화 순으로 진행된다. 클래스 로더는 계층 구조로 이뤄져 있으면 기본적으로 세가지 클래스 로더가 제공된다. 로딩 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 “메소드” 영역에 저장. 이때 메소드 영역에 저장하는 데이터 FQCN 클래스 | 인터페이스 | 이늄 메소드와 변수로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성하여 “힙" 영역에 저장 로딩에서 Bootstrap, Extension, Application에서 찾지 못하면 NotFoundException이 발생 링크 Verify, Prepare, Reolve(optional) 세 단계로 나눠져 있다. 검증: .class 파일 형식이 유효한지 체크한다. Preparation:..
-
자바, JVM, JDK, JRE 차이Java & 배경지식/기본상식 2020. 6. 7. 16:28
JVM (Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행한다. 바이트 코드를 실행하는 표준(JVM 자체는 표준)이자 구현체(특정 밴더가 구현한 JVM)다. JVM 스팩: https://docs.oracle.com/javase/specs/jvms/se11/html/ JVM 밴더: 오라클, 아마존, Azul, ... 특정 플랫폼에 종속 JRE (Java Runtime Environment): JVM + 라이브러리 자바 애플리케이션을 실행할 수 있도록 구성된 배포판. VM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있다. 개발 관련 도구는 포함하지..
-
SynchronizedJava & 배경지식/기본상식 2020. 5. 2. 00:19
Synchronized란? Multi-thread로 인하여 동기화를 제어해야 하는 경우가 생긴다. 이 때 자바에서 제공하는 키워드인 Synchronized 키워드를 사용하여 Multi-thread 상태에서 동일한 자원을 동시에 접근하게 되었을 때 동시 접근을 막게 된다. 즉 공유 데이터에 lock을 걸어 먼저 작업중이던 쓰레드가 작업을 완전히 끝낼 때까지 다른 쓰레드에게 제어권이 넘어가더라도 데이터가 변경되지 않도록 보호함으로써 쓰레드의 동기화를 가능하게 한다. 더 쉽게 말한다면 쓰레드A가 작업하던 도중에 다른 쓰레드B에게 제어권이 넘어갔을 때, 쓰레드A가 작업하던 공유데이터를 쓰레드B가 임의로 변경하였다면, 다시 쓰레드A가 제어권을 받아서 나머지 작업을 마쳤을때 원래 의도한 것과는 다른 결과를 얻기 때..