| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- MST
- Junit5
- OS
- Python
- 문자열
- 프록시
- 객체지향
- 스프링 시큐리티
- 약수
- 알고리즘
- 모던 자바 인 액션
- spring security
- Spring
- 다이나믹 프록시
- 스프링
- 리플렉션
- Reflection
- proxy
- test
- redis
- java
- 최소 신장 트리
- 파이썬
- Deadlock
- 자바
- 모던자바
- 운영체제
- CS
- 백준
- BOJ
- Today
- Total
목록전체 글 (98)
Dev 달팽이 @_''
Java - 바이트코드 조작 모자에서 토끼를 꺼내는 마술 Moja.java public class Moja { public String pullOut(){ return ""; } } Masulsa.java public class Masulsa { public static void main(String[] args) { System.out.println(new Moja().pullOut()); } } Masulsa를 실행하면 아무것도 없는 빈 문자열이 출력될 것이다. 하지만 여기서 우리는 Rabbit 이라는 문자열을 출력하도록 바이트코드를 조작하려고 한다. 바이트코드 조작 라이브러리 ASM Javassist ByteBuddy 여기서 우리는 ByteBuddy를 사용한다. 바이트 버디를 사용하기 위하여 pom..
Java - 코드 커버리지 코드 커버리지(Code Coverage) 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표 중 하나 말 그대로 코드가 얼마나 커버 되었는가를 판단, 테스트를 진행할 때, 코드 자체가 얼마나 실행되었는가 JaCoCo Java Code Coverage Tool pom.xml에 플러그인을 추가 org.jacoco jacoco-maven-plugin 0.8.4 prepare-agent report prepare-package report 이슈 사항. mvn이 설치되어 있지 않아서 오류가 발생 install pom.xml의 Build에 이 부분을 추가. 결과 target>site>facoco>index.html이 생성되고 이를 실행시켰을 때, 아래와 같이 나오면 성..
Java - 클래스 로더 클래스 로더 로딩, 링크, 초기화 순으로 진행 로딩 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 "메소드" 영역에 저장. 이 때 메소드 영역에 저장하는 데이터 FQCN(Fully Qualified Class Name) 클래스 | 인터페이스 | 이늄 메소드와 변수 로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성하여 "힙" 영역에 저장 링크 Verify, Prepare, Resolve(optional) 세 단계로 나뉘어져 있다. Verify : .class 파일 형식이 유효한지 체크 Preparation : 클래스 변수(static 변수)와 기본값에 필요한 메모리 Resolve : 심볼릭 메모리 레퍼런스를 메소드 영역에 있는 실제 ..
Java - JVM 구조 클래스 로더 시스템 .class 에서 바이트코드를 읽고 메모리에 저장 로딩 : 클래스 읽어오는 과정 링크 : 레퍼런스를 연결하는 과정 초기화 : static 값들 초기화 및 변수에 할당 메모리 메소드 영역에는 클래스 수준의 정보(클래스 이름, 부모 클래스 이름, 메소드, 변수) 저장 힙 영역에는 객체를 저장 메소드 영역과 힙 영역은 공유 자원이다. 스택 영역에서는 쓰레드 마다 런타임 스택을 만들고, 그 안에 메소드 호출을 스택 프레임이라 부르는 블럭으로 쌓는다. 쓰레드를 종료하면 런타임 스택도 사라진다. PC(Program Counter) 레지스터 : 쓰레드마다 쓰레드 내 현재 실행할 instruction의 위치를 가리키는 포인터가 생성된다. 네이티브 메소드 스택 : 네이티브 메..