분류 전체보기
-
[1%의 네트워크 원리] 6장 : 웹 서버에 도착하여 응답 데이터가 웹 브라우저로 돌아간다책/성공과 실패를 결정하는 1%의 네트워크 원리 2024. 2. 25. 21:40
STORY 1. 서버의 개요 1. 클라이언트와 서버의 차이점 서버 머신은 하드웨어나 OS 부분에서 클라이언트와 다를 수 있다 그러나 LAN 어댑터, 프로토콜 스택, socket 라이브러리 등은 전혀 다르지 않음 하지만 사용법은 조금 다를 수 있음 2. 서버 애플리케이션의 구조 하나의 프로그램으로 여러 클라이언트와 소통하기는 어려움 그래서 서버 프로그램으로의 접속을 기다리는 부분, 클라이언트와 소통하는 부분 두 부분으로 나눔 클라이언트가 접속 요청 시 접속 기다리는 부분에서 소통하는 부분으로 소켓을 넘겨줌 클라이언트는 결과적으로 하나의 태스트/스레드와 1대1로 소통하게 됨 3. 서버측의 소켓과 포트 번호 데이터를 송수신하는 입장에서는 클라이언트, 서버 개념이 없을 수도 있지만, 접속 동작을 수행할 때는 좌..
-
[1%의 네트워크 원리] 5장 : 서버측의 LAN에는 무엇이 있는가책/성공과 실패를 결정하는 1%의 네트워크 원리 2024. 2. 25. 21:39
STORY 1. 웹 서버의 설치 장소 1. 사내에 웹 서버를 설치하는 경우 가장 간단한 방법 사내 LAN에 서버 설치하고, 인터넷에서 직접 액세스 IP 주소가 부족하여 이 방법 안씀 또한 보안 문제 → 공격에 노출 그래서 방화벽을 둠 특정 서버에서 동작하는 특정 애플리케이션에 액세스하는 패킷만 통과, 나머지는 차단 그러나 만능은 아님 → 액세스를 허가한 애플리케이션에 보안 구멍이 있으면 공격받음 2. 데이터센터에 웹 서버를 설치하는 경우 데이터센터 시설에 서버를 가지고 들어가서 설치하거나 프로바이더가 소유하는 서버를 빌려쓰는 형태 고속 액세스 가능 안전성도 높음 STORY 2. 방화벽의 원리와 동작 1. 패킷 필터링형이 주류이다 지금은 거의 무조건 서버의 바로 앞에 방화벽이 있는 것이 보통 방화벽은 패킷..
-
[1%의 네트워크 원리] 2장 : TCP/IP의 데이터를 전기 신호로 만들어 보낸다책/성공과 실패를 결정하는 1%의 네트워크 원리 2024. 2. 25. 21:37
STORY 1. 소켓을 작성한다 1. 프로토콜 스택의 내부 구성 애플리케이션 네트워크 애플리케이션 (웹 브라우저 등) Socket 라이브러리 (리졸버) OS 프로토콜 스택 (TCP, UDP) 프로토콜 스택 (IP, ICMP, ARP) 드라이버 소프트웨어 LAN 드라이버 (LAN 어댑터 제어) 하드웨어 LAN 어댑터 2. 소켓의 실체는 통신 제어용 제어 정보 소켓 - 제어 정보를 기록한 메모리 영역 통신 상대의 IP 주소, 포트 번호, 통신 동작의 진행 상태 등 프로토콜 스택은 소켓에 기록된 제어 정보를 참조하며 동작 3. Socket을 호출했을 때의 동작 프로토콜 스택은 소켓 한개 분량의 메모리 영역을 확보한다. 그 다음 초기 상태를 나타내는 제어 정보를 소켓에 기록 소켓이 만들어지면 디스크립터를 애플리..
-
[1%의 네트워크 원리] 1장 : 웹 브라우저가 메시지를 만든다책/성공과 실패를 결정하는 1%의 네트워크 원리 2024. 2. 25. 21:34
STORY 1. HTTP 리퀘스트 메시지를 작성한다 1. 탐험 여행은 URL 입력부터 시작한다 URL은 http:// 만 있지 않고, ftp:// 등 다양하게 있다. http://user:password@www.cyber.co.kr:80/dir/file1.htm http: - 프로토콜 명 user - 사용자 명 (생략 가능) password - 패스워드 (생략 가능) www.cyber.co.kr - 웹 서버의 도메인 명 80 - 포트 번호 (생략 가능) /dir/file1.htm - 파일의 경로명 2. 브라우저는 먼저 URL을 해독한다 URL의 요소 http: + // + 웹 서버명 + / + 디렉토리명 + / + 파일명 http: - 프로토콜 // - 나중에 이어지는 문자열이 서버의 이름임을 나타냄 /..
-
프로그래머스 - 순위 검색 [Java]문제 풀이/프로그래머스 2024. 2. 25. 17:05
이 문제는 해시, 이분 탐색을 이용해서 풀었다. 처음에는 입력으로 주어지는 값들을 모은 Node라는 클래스를 만들고 점수로 오름차순 정렬한 뒤 점수로 한번 필터링하고, 조건에 맞는 것들을 순회하여 찾는 방식으로 구현했었다. 그러나 이 방법으로는 효율성을 통과할 수 없다. 이 문제에서 중요한 점은 언어, 직군, 경력, 소울푸드의 모든 경우의 수가 -를 포함해도 4 * 3 * 3 * 3 = 108개밖에 되지 않는 것을 파악하는 것이다. 따라서 그냥 쿼리에서 나올 수 있는 모든 조합에 대한 키에 대해 미리 저장해두고, info를 순회할 때에도 -를 주의하며 키 생성 후 집어넣고 쿼리에서 한번에 찾는 방식으로 구현하면 시간 내에 구현할 수 있다. import java.util.*; import java.io.*..
-
[토비의 스프링] 1장 : 오브젝트와 의존관계책/토비의 스프링 3.1 2024. 2. 24. 23:12
1.1 초난감 DAO 1.1.1 User public class User { String id; String name; String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } 1.1.2 UserDa..
-
프로그래머스 - 혼자서 하는 틱택토 [Java]문제 풀이/프로그래머스 2024. 2. 24. 11:49
이 문제는 완전 탐색을 이용해서 풀었다. 격자가 3 x 3 인 틱택토를 하는 문제로, 격자의 크기가 작아 모든 경우의 수를 구한 뒤 비교하는 방식으로 풀었다. 한 가지 주의할 점은 play를 수행할 때 게임이 끝나는 경우에 왔다고 해서 return을 하면 모든 경우를 볼 수 없다. 따라서 continue로 다음 경우들을 체크해줘야 정답이 나온다. import java.util.*; class Solution { List snapshot = new ArrayList(); char[][] board = new char[3][3]; public int solution(String[] b) { init(); if (isSame(board, b)) { return 1; } play('O'); for (final ..
-
프로그래머스 - 숫자 블록 [Java]문제 풀이/프로그래머스 2024. 2. 22. 17:21
이 문제는 Map을 이용해서 풀었다. 도로의 길이가 10억이므로 배열로 만들면 메모리 초과가 나게 된다. 주목할 점은 end - begin이 5000밖에 안된다는 점이다. 따라서 해당 부분만 저장하면 된다는 생각을 했고, Map을 이용해서 해당 범위 안의 숫자들을 저장했다. 정직하게 반복문을 돌려 1부터 1,000만까지 계산하면 당연히 시간 초과가 난다. 1의 경우 2부터 10억까지를 루프를 돌리기 때문이다. 따라서 num * 2가 begin보다 작을 경우를 두어 이 때는 연산을 통해 한번에 시작 숫자를 찾아내야 한다. 위 부분만 구현해낼 수 있으면 한 번에 문제를 풀 수 있다. import java.util.*; class Solution { Map numbers = new HashMap(); int ..