목록전체 글 (90)
Love Every Moment
1. 로드 밸런싱(Load Balancing) 부하 분산이란 처리해야 하는 업무나 요청 등을 나누어 처리하는 것을 의미 컴퓨터 공학에서의 부하 분산은 여러 중앙처리장치 또는 저장장치와 같은 컴퓨터 자원들에게 자원을 나누는 것을 의미 서버 부하 분산은 외부 사용자로부터 들어오는 다수의 요청을 서버들에게 적절히 분배하여 요청을 처리하게 한다 서버 부하 분산 작업을 수행하는 환경이 로컬 컴퓨터이면 L4/L7 Switch(Layer 4), 클라우드이면 Load Balancer 2. 서버 부하 분산 방법 (1) Round Robin 다수의 서버에게 순서대로 요청을 할당하는 가장 단순한 방법 (2) Least Connection 가장 connection 이 적은, 즉 부하가 가장 적은 서버에게 요청을 할당 (3) ..
1. 풀(Pool) 이미 사용할 준비가 된 자원을 메모리 위에 일정량 미리 생성해둔 자원의 집합 자원이 필요한 경우 새로 자원을 생성하는 대신 풀에서 꺼내어 사용 자원 사용을 완료한 경우 자원을 해제하는 대신 풀에 다시 반환 자원의 생성과 파괴에 드는 비용, 즉 오버헤드(Overhead)를 줄여준다는 장점이 있다 2. 쓰레드 풀(Thread Pool) 미리 쓰레드들을 생성해두었다가 작업 요청이 들어올 때마다 미리 생성된 쓰레드로 작업을 처리 작업이 끝난 쓰레드는 종료되지 않고 다음 작업 요청을 기다린다 쓰레드들을 풀에 생성 → 작업들을 태스크 큐(Task Queue)에 추가 → 쓰레드 별로 작업을 할당하여 처리 3. 쓰레드 풀의 생성 java.util.concurrent 패키지의 Executors 클래스..
1. 해시(Hash) 함수 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 해시테이블과 해시맵은 각각의 Key 값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 해당 index를 활용해 값을 저장하거나 검색하기 때문에 O(1) 의 빠른 검색 속도를 보인다 2. HashMap/HashTable 맵(Map)이란 키(Key)와 값(Value) 두 쌍으로 데이터를 보관하는 자료구조 해시맵과 해시테이블 모두 두 개의 객체를 키와 값의 한 쌍으로 묶어 보관하는 자료구조 둘의 차이는 thread safe 한가 아닌가에 있다 해시맵은 thread safe 하지 않고 해시테이블은 thread safe 하다 Java Platform SE 8 docs.oracle.com [JAVA] HashTable..
0. 배경 이번에 새로운 자바 프로젝트를 시작하면서, 체계적으로 설계를 완료한 다음에 개발 단계에 들어서보고자 클래스 다이어그램 작성 방법을 찾아서 참고할만한 글들을 모아보았다. 지금까지는 노션에 대략적으로 구상한 프로그램 동작 방식을 적어두고 직접 수도코드를 적어가면서 개발을 했는데, 클래스 다이어그램을 한 번 사용해보니 클래스 이름, 속성명과 타입, 메소드 등을 구체적으로 적어둘 수 있을 뿐만 아니라 클래스 간의 관계를 표현 가능해서 정말 편했다. 클래스 다이어그램은 UML 다이어그램 중에서 정적 다이어그램에 속하는 것으로, 시스템을 구성하는 클래스들 간의 관계를 표현하는 다이어그램이다. 아래 draw.io 사이트에서 편리하게 클래스 다이어그램을 만드는 기능을 제공하고 있다. Flowchart Mak..
출처 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def dfs(start, visited, computers): # 현재 노드 방문 visited[start] = True for i, connected in enumerate(computers[start]): # 자기자신이 아니면서 아직 방문하지 않은 인접 노드 방문 if i != start and connected == 1 and visited[i] == False: dfs(i, visited, computers) return visited def solution(n, computers): an..
출처 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 from collections import deque def solution(maps): answer = 0 n, m = len(maps), len(maps[0]) queue = deque() queue.append((0, 0)) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] while queue: x, y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if nx = n or ny < ..