분류 전체보기

1. 조회 빈이 2개 이상인 경우 @Autowired를 통해 의존 관계를 주입할 때 타입으로 조회하여 주입하게 된다. 만약 같은 타입의 빈이 2개 이상일 때 에러가 발생한다. @Component public class FixDiscountPolicy implements DiscountPolicy {...} @Component public class RateDiscountPolicy implements DiscountPolicy {...} @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discou..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 클래스 생성과 구성 클래스는 인스턴스를 생성하기 위한 설계도이다. 클래스는 크게 변수 + 메서드로 구성된다. a. 변수란? 변수는 쉽게 말해서 데이터(Value / Refernce)를 저장할 수 있는 저장공간이다. 변수는 선언위치에 따라 클래스 변수, 인스턴스 변수, 지역 변수로 나눌 수 있고, 이에 따라 사용가능한 스코프(영역)에 차이가 있다. 변수선언 예시 class Variables { int iv; // 인스턴스 변수 static int cv; // 클래스 변수 void method() { int lv = 0; // 지역 변수(메서드 내부에서만 사용) } } public static void main(String ar..
· devops
SFTP를 정리하기에 앞서 FTP에 대해서 간략히 정리하겠다. FTP(File Transfer Protocol)는 말 그대로 파일을 전송할 때 사용하는 통신 규약이다. 즉, 계정을 제공하는 서버pc와 클라이언트pc(내pc)와 파일을 주고 받을 때 사용한 인터넷 통신 규약이다. FTP는 보안적인 문제로 잘사용되지 않는다. 1. SFTP(SSH File Transfep Protocol)란? 보안을 강화한 FTP라고 생각하면 된다. SFTP는 FTP와 달리 서버간의 데이터 전송시 암호화하기 때문에 보안상의 문제점을 방지했다. 즉, SSH를 적용한 파일 전송 프로토콜이다. 여기서 SSH란 원격 PC에 안전하게 엑세스하기 위한 유닉스 기반의 명령 인터페이스 및 프로토콜에 암호화 기능을 구현해 모든 데이터가 암호화..
· devops
리눅스 환경에서 서비스에 사용되는 여러 프로세스들을 모니터링 하기 위해 supervisor를 적용했다적용과정을 공유하겠다.1. supervisor 란?supervisor는 여러 프로세스를 모니터링-관리하며 데몬 형식으로 지속적으로 동작해야 하는 프로세스가 있을 경우 유용하게 사용할 수 있다데몬은 서버(시스템)이 살아있는 동안 항상 실행되어야 하는 백그라운드 프로세스이다. supervisor가 프로세스에 대해 지속적으로 모니터링 하고, 프로세스가 예기치 않게 좋료되어도 재구동하며 지속적으로 동작하도록 돕는 도구이다. 또한 여러 프로세스들을 통합해서 관리할 수 있다는 장점도 있다. 예를 들어, 사용자에게 지속적으로 제공해야 하는 여러개의 프로세스(서비스)가 있는데, 사람이 직접 프로세스가 구동되고 있는지 지..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 스트림(Stream)이란?Java 8에서 추가되었다.컬렉션, 배열 등에 저장된 데이터를 for문을 사용하지 않고, 요소를 하나씩 참조해서 람다식과 함께 처리할 수 있도록 해주는 반복자이다. 스트림을 사용하기 전public class Test { public static void main(String[] args) { String[] str = {"aaa", "ddd", "ccc"}; List stringList = Arrays.asList(str); Arrays.sort(str); Collections.sort(stringList); for(String s ..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 쓰레드 동기화 두 개 이상의 쓰레드가 공유 데이터에 동시에 접근하게 되면 예상과 벗어난 결과가 나타날 수 있다. 이러한 문제를 해결하는 것이 쓰레드 동기화이다. 쓰레드 동기화를 이해하기 위해서는 임계영역과 락에 대한 이해가 필요하다. 임계영역(Critical section): 여러 쓰레드가 동시에 접근하면 문제가 발생할 수 있는 부분 잠금(Lock): 임계 영역에 대한 접근을 제어하기 위한 도구 2. synchronized를 이용한 동기화 a. 임계 영역을 지정하는 2가지 방법 // 1. 메서드 전체를 임계 영역으로 지정 public synchronized void calcSum() { // 임계 영역 } // 2. 특정 영..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 쓰레드의 상태와 실행제어 a. 쓰레드 상태 실행대기는 큐와 같은 구조로 먼저 실행대기열에 들어오면 먼저 실행된다. 실행 중에 suspend(),sleep(), wait(), join(), I/O Block에 의해 일시정지된 상태가 될 수 있다. (time-out), notifiy(), resume(), interrupt()에 의해 일시정지 상태가 끝나면 실행대기 상태가 된다. 상태 설명 NEW 쓰레드가 생성되고 아직 start()가 호출되지 않은 상태 RUNNABLE 실행 중 또는 실행 가능한 상태 BLOCKED 동기화블럭에 의해서 일시정지된 상태(lock이 풀릴 때까지 기다리는 상태) WAITING, TIME_WAITING..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 데몬 쓰레드(Daemon thread) 일반 스레드의 작업을 돕는 스레드(보조) 일반 스레드가 종료되면 데몬스레드는 자동 종료 주로 무한루프와 조건문을 이용해서 실행 후 대기하고 있다가 특정 조건에서 다시 수행 boolean isDaemon() // 데몬 스레드일 경우 true void setDaemon(boolean on) // true일 경우 데몬스레드가 된다. threadEx th = new threadEx(); th.setDaemon(true) // 데몬 스레드 th.start(); // 데몬 스레드 시작 데몬 쓰레드 예제 public class DaemonThreadEx implements Runnable { static..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 싱글쓰레드와 멀티쓰레드 a. 싱글쓰레드 public class SingleThredTest { public static void main(String[] args) { long startTime = System.currentTimeMillis(); for (int i = 0; i < 300; i++) { System.out.printf("%s", new String("_")); } System.out.println("소요시간1: " + (System.currentTimeMillis() - startTime)); System.out.println(); for (int i = 0; i < 300; i++) { System.out.pr..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 쓰레드 호출 스택 쓰레드 별로 별도의 Stack Area(호출 스택), Register, Native Method Stack을 가진다. main 메서드 작업을 수행하는 것도 쓰레드이다. 실행 중인 쓰레드가 없으면 프로그램이 종료 2. 쓰레드 생성과 호출 과정 main 메서드에서 쓰레드1의 start()를 호출 start()는 새로운 쓰레드를 생성하고, 쓰레드가 작업하는데 사용될 호출스택을 생성 새로 생성된 호출스택에 run()이 호출되어, 쓰레드가 독립된 공간에서 작업을 수행 이제는 호출스택이 2개이므로 스케줄러가 정한 순서에 의해서 번갈아 가면서 실행된다. 한 쓰레드가 예외가 발생해서 종료되어도 다른 쓰레드에게 영향을 미치..
kmindev
'분류 전체보기' 카테고리의 글 목록 (3 Page)