전체 글
-
[알고리즘] Find Anagram Mappings알고리즘/배열 2021. 4. 22. 22:47
Problem Key Point B 배열을 Map에 저장한다. (Key는 값이고, Value는 인덱스) A 배열에 대해 루프를 돌면서 값에 해당하는 인덱스를 찾아서 리턴한다. Code public class FindAnagramsMapping { public int[] solution(int[] A, int[] B) { int[] result = new int[A.length]; Map map = new HashMap(); for (int i = 0; i < B.length; i++) { map.put(B[i], i); } for (int i = 0; i < A.length; i++) { result[i] = map.get(A[i]); } return result; } public static void ..
-
[Stream] int 숫자 배열을 filter를 통해서 내림차순으로 정렬하기자바/자바8 2021. 4. 22. 22:02
int[] A = new int[]{3, 2, -2, 5, -3}; int[] positives = IntStream.of(A).boxed().sorted(Comparator.reverseOrder()) .filter(o -> o >= 0) .mapToInt(i -> i) .toArray(); int[] negatives = IntStream.of(A).boxed().sorted(Comparator.reverseOrder()) .filter(o -> o i) .toArray(); for(int value : positivies) { if(IntStream.of(negatives).anyMatch(o -> o == -value)) return value; }
-
[JAVA] JVM MemoryCS/개발 언어 (JAVA) 2021. 4. 22. 19:08
Runtime Data Area Java 프로그램이 실행 될 때 JVM이 실행되면서 OS로부터 할당받은 메모리영역 메모리 용도에 따라 크게 5개로 구분 1. Method Area (Static Area) 클래스 정보를 처음 메모리 공간에 올릴 때 초기화되는 대상을 저장하기 위한 메모리 공간 클래스의 구성요소인 Field, Method, Type 정보들이 이 위치에 올라간다. (클래스 데이터를 위한 공간) 2. Heap Area 자바 프로그램이 실행되면서 동적으로 생성된 객체가 저장되는 공간이다. (객체 데이터를 위한 공간) 3. Stack Area 메소드가 호출되면 할당되었다가 메소드를 빠져나가면 바로 소멸되는 특성의 데이터를 저장하기 위한 영역 호출된 메소드의 매개변수, 지역변수, 리턴 값 등을 임시로..
-
[운영체제] Multi Process vs Multi ThreadCS/운영체제 2021. 4. 22. 19:08
Multi Process vs Multi Thread Multi Process * 하나 이상의 프로세스들을 동시에 처리 (병렬) * 장점 : 독립된 구조이기 때문에 안정성이 높다 * 단점 : 시스템의 자원 소모가 심하고 Context Switching으로 인한 성능 저하 Multi Thread * 장점 * 시스템의 처리율이 향상된다. * 시스템의 자원 소모가 감소된다. * 프로세스 간 통신 방법보다 스레드 간 통신 방법이 간단하다. * 단점 * 잘못된 변수를 공유함으로써 오류 발생 가능성이 있다. * 프로그램 디버깅이 어렵다.
-
[운영체제] Process vs ThreadCS/운영체제 2021. 4. 22. 19:07
Process vs Thread Process 실행중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 할당 받는 시스템 자원 스택 : 로컬 변수와 같은 임시 자료 저장 데이터 섹션 : 전역 변수 저장 힙 : 프로그램 실행 중에 동적으로 할당되는 메모리 Thread 프로세스 내에서 실행되는 여러 흐름의 단위 스레드는 프로세스 내에서 각각 스택만 따로 할당받고 데이터 섹션, 힙 영역은 공유한다. 프로세스 제어 블록 (Process Control Block) 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다. 프로세스는 CPU의 할당을 받아 작업..
-
[네트워크] NettyCS/네트워크 2021. 4. 22. 19:07
Netty? 프로토콜 서버, 클라이언트 등 네트워크 애플리케이션 개발을 쉽고 빠르게 하기 위한 NIO 클라이언트-서버 프레임워크이다. 기존 자바 소켓 라이브러리 블로킹 함수 새로운 클라이언트 Socket마다 새로운 Thread를 할당해야 함 단점? 여러 Thread가 입출력 데이터가 들어오기를 무한정 대기 → 리소스 낭비 많은 수의 Thread가 필요하고 컨텍스트 스위칭이 잦아 오버헤드 발생 자바 NIO (Non-Blocking Input Output) 네트워크 리소스 사용률을 세부적으로 제어하는 Non-Blocking 호출이 포함한다. (비동기적 네트워크 통신) 시스템의 이벤트 통지 API를 통해 논 블로킹 소켓을 등록하면 해당 소켓의 정보를 확인 할 수 있다. Selector에 하나 이상의 채널을 등..
-
[네트워크] gRPCCS/네트워크 2021. 4. 22. 19:06
RPC란? Remote Procedure Call의 약자로 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술 gRPC란? google의 마이크로서비스에서 사용하던 단일 범용 RPC 인프라 Stubby에서 시작 gRPC의 장점 높은 생산성과 효율적인 유지보수 IDL(Identity Definition Lanuage)로 protocol buffers(protobuf)를 사용 IDL만 정의하면 높은 성능을 보장하는 서비스와 메세지에 대한 소스코드가 각 언어에 맞게 자동 생성 다양한 언어와 플랫폼 지원 높은 메세지 압축률과 성능 gRPC는 내부적으로 HTTP/2를 사용하여 헤더의 압축률이 높고 protobuf에 의해 통신 시점에서 바이너리 데이터로 통신하기 때문에 데이터 사이즈가 작다