| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- lombok
- builder
- 일급 객체
- synchronized
- Volatile
- factory
- Dependency Injection
- Spring
- OAuth 2.0
- java
- 일급 컬렉션
- spring security
- Google OAuth
- Today
- Total
목록분류 전체보기 (179)
HJW's IT Blog
문제 정의 이 문제는 피보나치 수열을 재귀적으로 계산하는 함수를 구현하는 문제이다. 재귀 함수만을 이용하여 문제를 풀었을 경우 시간 제한이 있기에 풀 수 없다. 그렇기에 메모이제이션 기법을 통해 문제를 풀었다. 메모이제이션 이전에 계산한 값을 저장하여 다시 계산하지 않도록 하는 다이나믹 프로그래밍 # 테스트 케이스 개수 T = int(input()) # 메모이제이션을 위한 리스트 memo = [[0, 0] for _ in range(41)] memo[0], memo[1] = [1, 0], [0, 1] # 피보나치 수열을 계산하는 함수 def fibonacci(n): # 이미 계산된 값이면 메모이제이션된 값을 반환 if memo[n] != [0, 0]: return memo[n] # 메모이제이션을 위해 이..
Process Management OS 는 다음 활동들을 관리해야 한다 - User Programs - System programs 각 활동들은 암호화 되어 process 속에 있다 [text, data, segment, stack] 구조로 되어 있다 왜 이런 구조 일까? ex) Chrome 을 3번 돌린다면 process 가 3번 돌게 되는데 프로세스를 처음부터 모두 다 돌리게 된다면 메인 메모리의 사용이 비효율적이게 된다. 그러므로, 동일한 부분 공유 전역변수(HEAP) -> 어떤 프로세스던 바로 접근 가능하게 지역변수(STACK) -> 지역변수의 사용이 끝나기 전에 이전 지역변수 참조할 필요 x. 그러므로 stack을 사용 OS는 프로세스를 생성, 대기, 재생, 그리고 계획할 수 있어야 한다. 또한..
DNS 란? DNS란 인터넷에서 사용되는 네트워크 서비스 중 하나로, 컴퓨터나 다른 기기들이 인터넷에 연결되어 있는 IP 주소를 도메인 이름으로 매핑해주는 시스템 이다. DNS는 인터넷에서 도메인 이름을 사용하여 웹 사이트를 검색하거나 이메일을 보낼 수 있도록 해준다. 사용자가 도메인 이름을 입력시, DNS 서버는 해당 도메인 이름에 해당하는 IP 주소를 찾아서 사용자의 기기에 제공한다. DNS 는 전 세계적으로 분산된 서버 네트워크로 구성되어 있다. DNS services Host name을 IP 주소로 매핑한다. Host Aliasing - canonical, alias name Mail server aliasing Load distribution - Traffic이 한곳에 몰릴 때, 분산시킨다. D..
FTP 란? 컴퓨터 간에 파일을 전송하기 위한 표준 인터넷 프로토콜 Client - Server 모델 Client: 파일 업로드/다운로드 Server: 파일 전송 요청 TCP 사용하여 통신 -> 신뢰성 있는 연결 Client 가 Server 에게 port 21번으로 TCP 연결 요청을 보낸다 Client 는 원격 디렉토리를 브라우징 권한을 받고/ 전송 요청 Server는 전송 요청을 받았을 때, server는 2번째 TCP data 연결을 시작한다 (port 20) Server는 파일 하나를 전송한 뒤 data 연결을 종료한다 Server는 다른 파일 을 전송할 때, 새로운 TCP data 연결을 한다 FTP Server는 state 를 유지한다. PASV & EPSV Active Mode Client ..
Python의 경우 딕셔너리 자료형을 이용하여 직접 key로 접근하였고 C++의 경우 Map 자료구조를 이용하였다. python import sys input = sys.stdin.readline lst = {} N, M = map(int,input().split()) for i in range(N): temp1, temp2 = map(str,input().split()) lst[temp1] = temp2 for i in range(M): web = input() length = len(web) print(lst[web[0:length-1]]) C++ #include #include using namespace std; int main() { cin.tie(NULL); ios::sync_with_stdi..
Counter Clockwise 알고리즘 CCW 알고리즘은 3개의 점에 대한 방향성에 대한 정보를 알아보는 알고리즘이다. 즉, 두 벡터의 방향 관계성을 보기 위한 알고리즘으로 3가지 종류가 있다. 두 백터, v1=(x1,y1,z1) 와 v2=(x2,y2,z2) 가 존재한다고 가정하였을 때, 이 두 백터의 외적(Cross Product)을 통하여 두 백터 에 대한 방향성 정보를 알 수 있다. 외적은 다음과 같이 계산 할 수 있다. S=(x1y2+x2y3+x3y1)−(x2y1+x3y2+x1y3) S 0 : Counter Clockwise S = 0: Straight 그렇다면 방향성으로 무엇을 할 수 있을까? 우리는 이 방향성을 이용해서 두 선분이 교차하는지 판단할 수 있다..
OS 란? 컴퓨터의 하드웨어와 소프트웨어를 관리하는 시스템 소프트웨어의 일종이다. 즉, 컴퓨터 시스템의 하드웨어와 응용 프로그램간의 인터페이스를 담당하며, 하드웨어를 관리, 응용 프로그램을 실행 시키는 작업을 한다. 컴퓨터 시스템(4가지) Hardware - 컴퓨터 자원 제공 OS - 다른 프로그램에서 하드웨어 사용과 제어를 용이하게 Resource Allocator: 자원 관리자 Control Program: User program 과 I/O 장치 관리 Kernel: 부팅 후 항상 돌아가는 프로그램 Application Program - 컴퓨터 자원들이 주어진 문제를 어떻게 해결 할 지 Users - People, machine, other computers OS는 하드웨어와 소프트웨어 사이의 공통 분..
HTTP: Hypertext Transfer Protocol 웹의 application layer protocol 이다. 웹 페이지는 객체로 이루어져 있는데 크게 두가지로 볼 수 있다 Base HTML file several referenced objects Client - Server Client: 서버에게 웹 객체를 요청하는 브라우저 Server: 요청에 응답하여 client 에게 객체를 보내줌 TCP를 사용한다. TCP 특성 Reliable Transport Flow Control Congestion Control Timing, 최소 throughput X Client 와 Server 간의 연결 프로세스가 필요함 Client 가 TCP 연결을 시작한다 --> 소켓 생성 Server 가 Client가..
Internet protocol stack은 인터넷에서 컴퓨터와 기기들이 통신하기 위해 사용되는 프로토콜의 집합이다. 이는 총 4개의 계층 구조를 가지고 있는데, 서로 독립적으로 작동하여 효율적인 통신을 가능하게 한다. Application Layer: 최종 사용자 애플리케이션과 통신하기 위한 인터페이스를 제공. HTTP, FTP, SMTP 등 Transport Layer: 데이터 전송을 제어, 신뢰성 있는 전송을 보장하기 위해 사용. TCP, UDP 등 Network Layer: 데이터를 패킷으로 분할하고 네트워크간 라우팅 및 인터넷 프로토콜을 사용하여 목적지에 전달 Link Layer: 물리적인 네트워크를 통해 데이터를 전송 - 인접한 노드로 전송 Application 은 다음과 같은 구조를 가질 수..