은행에서 일하다가 PuTTY 를 사용해야 하는데몰라서 정리합니다. ㅎㅎ PuTTY 란?처음 들으면 생소할 수 있지만, PuTTY 는 '리눅스 서버에 접속할 수 있는 프로그램' 입니다.우리 컴퓨터에서 다른 컴퓨터(보통 서버라고 부름) 에 접속해서 명령어를 입력할 수 있도록 해주는 프로그램입니다.PuTTY 는 왜 필요할까?보통 우리가 쓰는 우인도우 컴퓨터에는 리눅스 터미널이 없습니다. 그래서 리눅스 서버에 접속하려면 특별한 프로그램이 필요한데, 그중 하나가 바로 PuTTY 입니다.PuTTY 설치방법(윈도우 기준)공식 홈페이지 접속http://www.putty.org 왼쪽 주소로 접속합니다. 그리고 자신의 시스템에 맞는 것을 다운로드 합니다.그리고 설치가 끝나면, 아래와 같이 윈도우 시작 프로그램에서 PuT..
회사에서 은행에서 쓰일 hashMap 을 구현 중 ConcurrentHashMap 을 사용할 일이 생겨 정리했습니다. ConcurrentHashMap 은 Java 에서 멀티스레드 환경에서 안전하게 사용할 수 있는 Map 자료구조입니다. ConcurrentHashMapConcurrentHashMap 은 HashMap 과 비슷한 구조인데, 여러 스레드가 동시에 접근해도 안전하게 동작하도록 만든 동기화된 Map 입니다. 이러한 ConcurrentHashMap 은 java.util.concurrent 패키지에 포함돼어 있습니다.Map map = new ConcurrentHashMap(); 왜 HashMap 을 사용하지 않는 걸까?HashMap 은 멀티스레드 환경에서 안전하지가 않습니다.두 개 이상의 스레드가 동..
서버라는 것은 요청이 들어오면 그에 대한 응답을 해준다라는 것은 알고 있지만 보통 프로젝트를 진행하면서 WAS에 서버 코드를 올렸었는데 WAS 가 무엇인지도 정확히 모르면서 사용을 하고 있어 정리하였습니다. 웹서버우리가 브라우저에 접속해서 www.google.com 을 입력하면 어떻게 될까요?구글의 서버에 HTTP 통신으로 구글 서버에 있는 컴포넌트 파일(HTML, JS, CSS..)을 요청을 통해서 가져옵니다.그러면 우리의 브라우저는 가져온 컴포넌트 파일을 이용해서 화면을 띄우게 됩니다. 사실 우리 컴퓨터도 서버가 될 수 있습니다.아파치 HTTP 서버를 이용해서 우리 컴퓨터의 어느 폴더에 HTML, CSS, JS 등과 같은 파일들을 넣어두고 폴더를 세상 사람들에게 공개를 하면 HTTP 통신을 통해서 ..
레거시한 프로젝트를 전부 @Aspect 로 바꿀 일이 생겨공부하는 겸 정리했습니다. 들어가기 앞서 기본적으로 빈후처리기, 프록시팩토리 등 기본지식이 있어야 이해하실 수 있습니다.설치dependencies {implementation 'org.springframework.boot:spring-boot-starter'implementation 'org.springframework.boot:spring-boot-starter-aop' //직접 추가 @Aspect@Slf4j@Aspectpublic class AspectA1 { // hello.aop.order 패키지와 하위 패키지 @Around("execution(* hello.aop.order..*(..))") public Object doL..
@Aspect 를 사용하다 순수 Proxy 를 사용할 일이생겨 정리해보았습니다. 순수 프록시"프록시를 직접 만든다" 는 건 ProxyFactory 도 없이 클래스를 하나 더 만들어서 진짜 객체를 감싸는 것을 말합니다.진짜 서비스public interface Service { void doService();}public class RealService implements Service { @Override public void doService() { System.out.println("🎯 실제 서비스 실행"); }} 프록시 클래스진짜 RealService 를 감싸서 부가기능을 추가하는 프록시를 만듭니다.public class ServiceProxy implements ..
회사에서 다양한 패턴에 대해 공부하는 시간이 있어시간을 들여 정리해 보았습니다. 템플릿 메서드 패턴틀은 내가 정해줄게! 너는 세부만 채워~! 상위 클래스(추상 클래스) 에 알고리즘의 전체 구조를 정의해 놓고, 세부 단계는 하위 클래스가 구현하도록 하는 패턴입니다.예시1. 게임 로딩2. 로그인3. 캐릭터 생성 or 불러오기 ← 이것만 다름!4. 게임 시작 // 추상 클래스 (틀)abstract class GameTemplate { public final void startGame() { load(); login(); characterSelect(); // 전략 패턴전략(방법)은 바꿔 쓸 수 있어!! 알고리즘을 인터페이스로 분리해서, 필요에 따라 런타임에 서로 다..