안녕하세요. 오늘은 GC에는 여러가지 알고리즘이 있지만, 그 중에서 저지연 GC의 두 종류인 G1 GC와 ZCG에 대해서 알아보고 무엇이 다른지에 대해 포스팅을 해보려고 합니다. 두 GC 모두 Stop-the-World를 최소화하고 대용량 Heap에서 안정적인 응답시간을 보장하기 위해서 설계된 저지연(low-latency) GC입니다. G1 GC (Garbage First Garbage Collector)G1 GC는 Java 9버전 부터 기본 GC로 채택된 방식입니다. 기존 CMS(Concurrent Mark and Sweep) GC의 단점을 개선하며, Heap을 균일한 Region 단위로 나누고, Garbage가 많은 영역부터 우선 수거한다는 개념으로 등장하게 되었습니다.(출처 : A deep dive..
안녕하세요. 오늘은 Java에서 문자열을 핸들링 하다보면 가장 자주 마주치는 String, StringBuffer, StringBuilder에 대해서 비교 분석하고 어떠한 점에서 차이가 있는지 포스팅 해보려고 합니다.3개 다 문자열을 다룬다는 공통점이 있지만, 불변/가변 여부, 동기화 지원 여부, 성능 특성이 다르기 때문에 상황에 따라 적절하게 선택하여 사용하는 것이 중요합니다. String : 불변(immutable) 객체String 을 우선 알아보려는데 String 의 경우 불변 객체입니다. 한마디로 한번 생성이 되고 나면 절대 바뀌지 않습니다.아래의 간단한 예제를 통해서 알아보도록 하겠습니다.String str = "hello";str = str + " world";심플한 예제이며, 이 코드에서 "..
안녕하세요.오늘은 스프링을 접하거나 실무에서 사용하면서도 필수로 알아야 하는 개념, 그리고 개념을 다시 정리하고 싶을 때 반드시 짚고 넘어가야 할 3가지인 IOC, DI, AOP에 대해서 간략하게 알아보려고 합니다.IOC (Inversion Of Control) : 제어의 역전DI (Dependency Injection) : 의존성 주입AOP (Aspect Oriented Programming) : 관점 지향 프로그래밍위 3가지의 요소는 Spring 왜 유지보수성과 확장성이 좋은지 설명해주는 핵심철학입니다. 아래에서 자세히 알아보도록 하겠습니다 :) IOC (Inversion Of Control, 제어의 역전)개념IOC는 말 그대로 객체의 생성, 의존성 연결 라이프사이클(생명주기) 관리 제어권이 개발자..
안녕하세요. 아주 오랜만에 오늘은 로컬 캐시와 글로벌 캐시의 차이점 과 각각의 장단점에 대해 소개 하려고 합니다. 로컬 캐시 (Local Cache)개념애플리케이션 서버 내부 메모리에 캐시를 두는 방식서버마다 독립적인 캐시를 가짐라이브러리 예: Caffeine, Ehcache, Spring의 @Cacheable(기본 메모리)특징빠름 (네트워크 호출 없음, 메모리 접근만)서버마다 캐시 데이터가 따로 존재데이터 일관성(Consistency) 보장 어려움장점속도 최상 (네트워크 IO 없음 → 나노초 단위 접근)구현 단순 (의존성만 추가하면 쉽게 적용)외부 장애(네트워크, 캐시 서버 다운)에 영향 없음단점서버마다 다른 캐시 상태 → 일관성 깨질 수 있음데이터 크기가 커질 경우 JVM 메모리 압박서버 스케일 아웃..
안녕하세요. 오랜만에 포스팅을 작성하는데, 이미 나온지는 조금 되었지만 Springboot 3.0 (Springframework 6.0 기반)이 출시와 어떤 내용들이 변경되었는지에 대해 정리하고자 하여 포스팅을 작성하게 되었습니다. 개요 스프링부트가 3.0이 정식 출시(2022/11/22) 따라 3.0(SpringFramework 6)에서의 변경 사항을 Document 기반으로 정리해보려고 합니다. documentation : https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga SpringFramework 6 : https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring..
안녕하세요. 오늘은 업무를 하던 도중에 웹 보안진단 중 웹 취약점이 발견되어서 그 발견된 취약점 중 XSS와 CSRF에 대한 내용을 기록으로 남기려고 합니다. 저 뿐만 아니라 저와 같이 모르셨거나 잠시 잊어버리신 분들은 참고할 만한 글이 되었으면 하는 점에서 포스팅을 진행하려고 합니다. XSS(Cross-Site Scripting) 크로스 사이트 스크립팅(사이트 간 스크립팅)은 가장 기초적인 취약점 공격 방법 중에 하나이며, 다른 목적을 품은 악의적인 사용자가 공격하려는 사이트에 스크립트를 집어 넣어 공격하는 방법을 얘기합니다. 주로 다른 웹사이트들과의 통신(정보 교환) 하는 식으로 작동하기에 “사이트 간 스트립팅”이라고 부르고 있습니다. 이 XSS 취약점은 웹 어플리케이션 사용자로 부터 입력받은 값을 ..
안녕하세요. 오랜만에 글을 작성하게 됩니다. 오늘은 정적 분석 도구를 찾다가 오픈소스로 되어진 도구들 중에서 PMD에 대해서 간략하게 소개하고, 간단하게 사용하는 방법에 대해서 작성하려고합니다. 이러한 정적 분석 도구를 통해서 소스코드 또는 애플리케이션의 보안 취약점, 불필요한 소스 정보 등을 알 수 있으므로 필요 시 사용하는 것도 좋아 보여, 공유하게 되었습니다. (출처 : https://pmd.github.io/) PMD란? PMD(Programming Mistake Detector)는 응용 프로그램 코드에서 발견 된 문제를 보고 하는 오픈 소스 정적 Java 소스 코드 분석기 입니다. PMD에는 기본 제공 규칙 세트가 포함되어 있으며 사용자 지정 규칙을 작성할 수 있습니다. (PMD는 올바른 형식의..
안녕하세요. 오랜만에 포스팅을 작성하게 되었는데, 오늘은 Java 코드에 SSHUtil을 만들어서 리눅스 서버에 명령어를 실행하고 그 결과 값을 받아와 화면에 출력하는 방법에 대해서 간단한 예제를 통해서 설명해보려고 합니다. 우선, 서버에 SSH로 접속해서 명령어를 실행할 SSHUtil 클래스를 아래와 같이 만들어 줍니다. /** * * SSH Util class * * * @author toma * @version 1.0 */ public class SSHUtil { private static final Logger logger = LoggerFactory.getLogger(SSHUtil.class); /** * * Execute shell command in remote server via SSH *..
- Total
- Today
- Yesterday