직렬화란? 자바가 객체를 바이트 스트림 으로 인코딩하고(직렬화) 그 바이트 스트림으로부터 다시 객체를 재구성하는 (역직렬화) 메커니즘이다. 직렬화의 단점 직렬화의 근본적인 문제는 공격 범위가 너무 넓고 지속적으로 더 넓어져 방어하기 어렵다는 점이다 바이트 스트림을 역직렬화하는 과정에서 readObject 메서드는 그 타입들 안의 모든 코드를 수행할수 있다 신뢰할 수 없는 스트림을 역직렬화 하면 원격 코드 실행(remote code execution), 서비스 거부(denial-oof-service)등의 공격으로 이어질수 있다 가젯 메서드 역직렬화 과정에서 호출되어 잠재적으로 위험한 동작을 수행하는 메서드 static byte[] bomb() { Set root = new HashSet(); Set s1 ..
Java11 Java 11 이후 Oracle JDK는 더 이상 상업적 용도로 무료로 사용할 수 없습니다.(무료로 사용하려면 OpenJDK 사용) 추가된 기능 javac 명령 사용하지않고 java 명령어로만 실행가능 (암시적 컴파일) String 클래스 새로운 유틸리티 메서드 추가 isBlank() - 빈 문자열 및 공백 만있는 문자열은 공백처리 System.out.println(" ".isBlank()); //true String s = "joeylee"; System.out.println(s.isBlank()); //false String s1 = ""; System.out.println(s1.isBlank()); //true lines() - 라인단위로 분할해 스트림으로 반환 String str = ..
JVM이란 Byte Code(.class파일)를 OS에 맞게 해석해주는 역할입니다 JVM 구조 1. Class Loader 2. Execution Engine 3. Runtime Data Areas Class Loader란 자바에서 소스를 작성하면 Person.java 처럼 .java파일이 생성됩니다. .java 소스를 자바컴파일러가 컴파일하면 Person.class 같은 .class파일(바이트코드)이 생성됩니다. 이렇게 생성된 클래스파일들을 엮어서 JVM이 운영체제로부터 할당받은 메모리영역인 Runtime Data Area로 적재하는 역할을 Class Loader가 한다. (자바 애플리케이션이 실행중일 때 이런 작업이 수행됩니다.) Execution Engine의 역할 Class Loader에 의해 메..
1. 영화 예매 시스템 구현하기 /** * 영화를 표현 * 제목, 상영시간, 기본요금, 할인정책을 가지고 있음 */ public class Movie { private String title; private Duration runningTime; private Money fee; private DiscountPolicy discountPolicy; public Movie(String title, Duration runningTime, Money fee, DiscountPolicy dIscountPolicy) { this.title = title; this.runningTime = runningTime; this.fee = fee; this.dIscountPolicy = dIscountPolicy; } p..
1. 티켓 판매 어플리케이션 구현 /** * 극장을 표현 * 판매원을 가지고 있음 */ public class Theater { private TicketSeller ticketSeller; public Theater(TicketSeller ticketSeller) { this.ticketSeller = ticketSeller; } public void enter(Audience audience) { if(audience.getBag().hasInvitation()) { Ticket ticket = ticketSeller.getTicketOffice().getTicket(); audience.getBag().setTicket(ticket); } else { Ticket ticket = ticketSell..
리액티브란 프로그래밍이란? 비동기 데이터 스트림을 사용한 프로그래밍입니다 리액티브 스트림 인터페이스란? asynchronous non-blocking 서비스를 할때 기본이 되는 스펙입니다 java의 RxJava, Spring의 webFlux 등 해당 스펙을 따르고 있습니다 아래와 같이 4개로 구성되어있습니다 Processor Publisher Subscriber Subscription public interface Processor extends Subscriber, Publisher {} public interface Publisher { //Subscriber의 구독을 받기위한 메소드 public void subscribe(Subscriber
jmeter란? 아파치사에서 만든 트래픽 부하 테스트 도구 설치 https://jmeter.apache.org/ 페이지에 들어가 해당 zip 파일을 받아 풀어줍니다 Apache JMeter - Apache JMeter™ Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to oth jmeter.apache.org 사용법 ..
람다란? 메서드로 전달할 수 있는 익명함수를 단순화 한 것입니다. 함수형 프로그래밍(Functional Language)에서 온 개념으로 매개변수(parameter)를 가진 코드 블록이지만, 런타임 시에는 익명 구현 객체(추상메소드를 한개 포함한)를 생성합니다. 아래와 같이 자바8 이전에는 메서드를 값으로 쓸 수 없어 매개변수로 넘기지 못했습니다. 그래서 익명구현객체를 인스턴스화 시켜서 넘겨주었습니다. new Thread(new Runnable() { public void run() { System.out.println("자바 8이전의 스레드 생성"); } }).start(); 이런 부분을 해결하기 위해서 자바 8에서 람다를 사용해 메서드를 값으로 넘길 수 있었습니다.(익명구현객체를 자동으로 만들어줌) ..
- Today
- Yesterday
- Redis
- iterable
- reactive stream
- concurrency
- strategy
- Effective JAVA
- in-memory
- template method
- 디자인패턴
- Spring
- nosql
- reactive
- Serialize
- jvm
- JMeter
- 영속성
- 부하테스트
- Design Pattern
- observable
- LAMBDA
- Java
- exception
- Serializable
- gslb
- Observer Pattern
- object
- template
- 메인보드#asrock b650m #조립pc #후기이벤트
- jdk11
- Concurrecy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |