본문 바로가기

전체 글

(283)
람다식 함수형 인터페이스일때만 적용 가능 함수형 인터페이스 = 추상 메소드를 하나 가지고 있는 인터페이스 람다식 자체가 구현 객체이기 때문에 구현객체타입 변수 = 람다식 으로 써야 한다. 식 예제 int method(int x, int y) (x,y) -> return x+y; (x,y) -> x+y; int method(int x) x-> return x x -> x void method() ()->{} 주의할 점 1.this this는 람다식의 내용을 가지고 있는 클래스의 참조이다. 예시 class somethig{ int x =0; LamdaClass lc = (){ this.x } } this 는 Something을 가리킨다. LamdaCalss를 가리키는게 아니다. 2.익명클래스의 특성 람다가 있을 시..
주식 가격 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 29 import java.util.*; class Solution { public int[] solution(int[] prices) { int[] answer = new int[prices.length]; Queue q = new LinkedList(); for(int p : prices ) { q.offer(p); } for (int i = 0; i
데몬 스레드 데몬 프로세스 : 백그라운드 프로세스 라 생각하면 쉬움 메인 스레드 보조 역할을 하는 스레드 ex)자동저장기능 , GC, 동영상 플레이어의 재생기능
멀티 스레드 1. 간단한 스레드의 설명 프로세스는 운영체제로부터 작업을 할당받는 작업의 단위이고 스레드는 프로세스가 할당 받은 자원을 이용하는 실행의 단위이다. 스레드는 스레드 그룹에 속해있다. 작업(프로세스) 처리는 cpu가 한다. CPUtime은 프로세스를 처리하는 시간이다. 스케쥴링 하여 프로세스의 우선순위를 결정한다. 멀티코어로 멀티 프로세스를 할 수 있다. 멀티 프로세싱이 멀티 태스킹의 용어에 더 가깝다. 프로세스는 호출할 때마다 문맥교환이라는 오버헤드가 발생한다. 스레드로 처리를 하면 프로세스끼리 통신하는 비용보다 통신 비용이 적고, 문맥교환이 적게 발생해 더 효율적인 작업이 가능하다. 스레드는 굳이 앞뒤 순서가 필요 없는 일들이 있을 때 분리해 동시에 처리하고 싶을 때 사용한다. 이 멀티 스레드 2개 이..
위장 구하는 공식을 모르겠다. 각 종류의 경우의 수를 계속 곱하고 1을 빼면 된다는 걸 인터넷을 참고하다 알았다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Solution { public int solution(String[][] clothes) { HashMap hm = new HashMap(); //답을 내는 공식 = 한 종류의 모든 경우 * 한 종류의 모든 경우 *... -1 //답을 내는 공식의 -1, 다 벗고 있을때의 경우 //한 종류의 모든 경우 = 종류 + 1 , +1은 다 안 쓰고 있는 경우 // for (int i = 0; i
다리를 지나가는 트럭 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 29 30 31 32 import java.util.*; class Solution { public int solution(int bridge_length, int weight, int[] truck_weights) { int answer = 0; //시간초 int inBridge = 0; //현재 다리의 상황 Queue q = new LinkedList(); for(int i : truck_weights){ while(true){ if(q.isEmpty()){ q.offer(i); inBridge += i; answer++; break; }else if(q.size() ..
프로그래머스 lv2 - 전화번호 목록 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import java.util.*; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; // Arrays.sort(phone_book); for(int i=0; i
자바 리플렉션 1. 리플렉션이란 만약 자기가 클래스의 존재는 알고 있지만 그것을 사용하고 싶을때, 구체적인 클래스 타입을 알지 못한다면 어떻게 해야할까 리플렉션은 프레임워크에서 많이 쓰인다고 한다. 예를 들어 스프링의 DI를 생각해보자 스프링 같은 프레임워크는 우리가 언제 뭘 쓸지 모른다. 그런데도 우리가 쓰려는 객체를 잘 주입해준다. 이와 같이 클래스 정보를 모를때 동적으로 클래스를 사용하기 위해 만들어진 API를 리플렉션이라 한다. 쓰이는 곳은 - Jackson 이나 GSON 등의 JSON 직렬화 라이브러리 - Log4j2, logback 등의 Logging 관련 프레임워크 - Apache Commons BeanUtils 등의 Class Verfication API - Spring framework 의 @Autow..