Java & 배경지식
-
바이트코드 조작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가 제어권을 받아서 나머지 작업을 마쳤을때 원래 의도한 것과는 다른 결과를 얻기 때..
-
JVM의 메모리 구조Java & 배경지식/기본상식 2020. 4. 26. 23:33
JVM(Java Virtual Machine)이란? 자바를 싱행하기 위한 가상 기계이다. 즉 자바를 실행하기 위한 가상 컴퓨터이다. 자바로 작성된 어플리케이션은 모두 이 가상 JVM에서만 실행되기 때문에 자바 어플리케이션이 실행되기 위해서는 JVM이 필요 자바 바이트 코드를 실행할 수 잇는 주체 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실생시켜주는 역할을 한다. 가상기계란? 소프트웨어로 구현된 하드웨어 JVM의 구성 Class Loader, Execution Engine, Garbage Collector, Runtime Data Area 로 구성되어있다. Class Loader 자바에서 소스를 작성하면 Person.jav..
-
sftp 연결Java & 배경지식/Java 개발에 도움되는 코드들.. 2020. 3. 23. 09:58
@Component public class SftpConnServiceImpl implements ISftpConService { private JSch jsch; private Session session = null; private Channel channel = null; private ChannelSftp channelSftp = null; public ChannelSftp sftpConnection(String ip, int port, String userId, String userPwd, String sftpFileDir) { this.jsch = new JSch(); try { this.session = this.jsch.getSession(userId, ip, port); this.sess..
-
자바의 자료구조Java & 배경지식/기본상식 2020. 3. 19. 08:56
인터페이스 구현클래스 특징 List Stack Vector ArratyList LinkedList 1. 순서가 있는 데이터의 집합, 데이터의 중복을 허용 Set HashSet TreeSet 1. 순서를 유지하지않는 데이터의 집합, 데이터의 중복을 허용하지 않는다. Map HashMap TreeMAp HashTable Properies 1. 키와 값의 쌍으로 이루어진 데이터의 집합 2. 순서를 유지되지 않고, 키는 중복을 허용하지 않으면 값의 중복을 허용 List Interface LinkedList 1. 양방향 포인터 구조로 데이터 삽입, 삭제가 빈번할 경우 빠른 성능을 보장 2. 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 사용 Vector 1. ArrayList의 구형버전이며, 모든 메소드가 동기..