⏰문제https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 선물을 직접 전하기 힘들 때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다. - 두 사람 사이에 더 많은 선물을 준 사람이 선물을 받음 - 선물 기록이 없거나 주고받은 수가 같다면, 선물 지수가 더 큰 사람이 선물 지수가 더 작은 사람에게 받음 - 선물..
Java
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX6Jae%2FbtsFE58Ewe2%2Fosn0gmG8XUXKYCUuIlAVU0%2Fimg.png)
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. Optional ⚝ T 타입 객체의 래퍼클래스 - Optional public final class Optional { private final T value; //T타입의 참조변수 ... } 1. 래퍼클래스? - 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스 - T타입의 참조변수를 갖고 있음. - Integer, Long 등 2. Optional? Optional도 래퍼클래스인데 제네릭이 T라서 어떤 타입이든지 다 저장이 가능하다. => 모든 종류의 객체 저장 가능 (Null도 가능) 3. Optional 필요한 이유 Optional을 이용하면 Null을 간접적으로 처리 가능 ①..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJeRRI%2FbtsFGByOyMs%2F0Pa8ia1kYVhVsXTc6OtANk%2Fimg.png)
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 스트림의 연산 - 중간 연산 중간 연산 설명 Stream distinct() 중복을 제거 Stream filter(Predicate predicate) 조건에 안 맞는 요소 제외 Stream limit(long maxSize) 스트림의 일부를 잘라낸다 Stream skip(long n) 스트림의 일부를 건너뛴다. Stream peek(Consumer action) 스트림의 요소에 작업 수행 => 작업 중간에 잘 처리되었는지 확인할 때 많이 쓴다. Stream sorted() Stream sorted(Comparator
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frdqvg%2FbtsFF6ZSRYg%2FjTNLLgSOMbC2ribto6hMB1%2Fimg.png)
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 스트림(Stream) - 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것 - 데이터 소스 = 컬렉션, 배열과 같이 여러 데이터를 저장한 것 표준화된 방법 = 컬렉션 프레임워크도 표준화된 방법으로 다루기 위해 정리한 것이긴 한데, 사실 실패함. List&Set / Map으로 나누어졌기때문이다. 그런데 jdk1.8부터 stream이 등장하면서 표준화하는 것을 성공했다. - 다양한 데이터소스(컬렉션, 배열 등)으로부터 stream을 만들 수 있다. 그리고 이 후 같은 방식으로 작업을 처리할 수 있다. 중간연산, 최종연산이 있는데 중간연산은 n번, 최종연산은 1번만 할 수 있다. - stream을 이용한 작업 1. ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsvLvx%2FbtsFAu7GFbH%2F3RzOzpXlgqoyJ2cYzSJLCk%2Fimg.png)
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 람다식(Lambda Expression) - 함수(메서드)를 간단한 `식(expression)`으로 표현하는 방법 - 익명 함수 (이름이 없는 함수, anonymous function) 반환타입과 이름을 지우고 화살표를 추가한다. - 함수와 메서드의 차이 근본적으로 동일. 함수는 일반적 용어. 메서드는 객체지향개념 용어 함수는 클래스에 독립적, 메서드는 클래스에 종속적 2-1. 람다식 작성하기 1. 메서드의 이름과 반환타입을 제거하고 `->`를 블록{} 앞에 추가한다. 2. 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능(끝에 ';' 안 붙임) 3. 매개변수의 타입이 추론 가능하면 생략 가능(대부분의..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkNXHv%2FbtsFkTH5fyl%2FZ9Eu2B1JdlGbbbVhbWxD61%2Fimg.png)
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. suspend(), resume(), stop() - 스레드의 실행을 일시정지, 재개, 완전정지 시킨다. void suspend() 스레드를 일시정지 시킨다. void resume() suspend()에 의해 일시정지된 스레드를 실행대기상태로 만든다. void stop() 스레드를 즉시 종료시킨다. 스레드를 생성하고 start()를 하면 실행대기 상태가 된다. 자신의 차례가 오면 실행했다가 stop()을 호출하거나 자신의 일을 다 하면 소멸된다. 그런데 실행 중에 suspend()를 호출하면 일시정지 상태가 되었다가, resume()을 호출하면 다시 줄을 서서 실행대기 상태가 된다. 그런데 위 메서드들은 사용권장하지..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLbMzM%2FbtsFmmbVqG0%2FZRDvu2Qx0k0HwAUrFd3pJ0%2Fimg.png)
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 데몬 스레드(daemon thread) - 일반 스레드(non-daemon thread)의 작업을 돕는 보조적인 역할을 수행 - 일반 스레드가 모두 종료되면 자동적으로 종료된다. - 가비지 컬렉터, 자동저장, 화면 자동갱신 등에 사용된다. - 무한루프와 조건문을 이용해서 실행 후 대기하다가 특정조건이 만족되면 작업을 수행하고 다시 대기하도록 작성한다. public void run() { while(true) { try { Thread.sleep(3 * 1000); //3초마다 쉼 } catch(InterruptedException e) {} //autoSave의 값이 true이면 autoSave()를 호출한다. if..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd5U1Ec%2FbtsFmjTHaRq%2F9XOr1Y9KMnJRzZcIbDLYrk%2Fimg.png)
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. ●⚝ ✎정리 ⍟실습 📂content 1. main 스레드 - main메서드의 코드를 수행하는 스레드 - 스레드는 '사용자 스레드'와 '데몬 스레드' 두 종류가 있다. => 사용자 스레드는 main 스레드이고, 데몬 스레드는 보조 스레드이다. 실행 중인 사용자 스레드가 하나도 없을 때 프로그램은 종료된다. 즉, 멀티 스레드에서는 메인 메서드가 종료되었어도, 실행중인 스레드가 남아있다면 프로그램은 종료되지 않는다. ⍟실습 더보기 Ex13_11 class Ex13_11 { static long startTime = 0; public static void main(String args[]) { ThreadEx11_1 th1 = new Threa..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fck5Q13%2FbtsFoga7bTN%2FQKBcCBZ0X4pBgcgj5Bvekk%2Fimg.png)
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 프로세스와 스레드 (process & thread) - 프로세스 실행 중인 프로그램, 자원(resources)과 스레드로 구성 - 스레드 프로세스 내에서 실제 작업을 수행 모든 프로세스는 최소한 하나의 스레드를 가지고 있다 프로세스 : 스레드 = 공장 : 일꾼 - 싱글 스레드 = 자원 + 스레드 - 멀티 스레드 = 자원 + 스레드 + 스레드 + .... 하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 스레드를 생성하는 것이 더 적은 비용이 든다. 2. 멀티스레드의 장단점 대부분의 프로그램이 멀티스레드로 작성되어 있다. 그러나, 멀티스레드 프로그래밍이 장점만 있는 것은 아니다. 장점 - 시스템 자원을 보다 효율..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdLcUN%2FbtsFlPZsE1T%2FJ0mAz9bCIoEaHlhBWFXf41%2Fimg.png)
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. Object클래스 - 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다. - notify(), wait() 등은 스레드와 관련된 메소드 Object클래스의 메서드 설명 protected Object clone() 객체 자신의 복사본을 반환한다. public boolean equals(Object obj) 객체 자신과 객체 obj가 같은 객체인지 알려준다. (같으면 true) protected void finalize() 객체가 소멸될 때 가비지 컬렉터에 의해 자동적으로 호출된다. 이 때 수행되어야하는 코드가 있을 때 오버라이딩한다. (거의 사용 안 함) public Class getClass() 객체 ..