본문 바로가기

전체 글70

[WEB/이론] 웹 브라우저에 https://www.naver.com을 입력하면 일어나는 일 / SSL, TLS, OSI 7계층, DNS, HT 요약 웹 브라우저가 호스트명을 추출 후 DNS(애플리케이션 계층)에 IP 주소를 물어본다 (DNS query) 해당 주소와 TCP 연결 후 SSL/TLS 연결 HTTP 메시지 생성 후 SSL/TLS 암호화, TCP 포트번호(전송 계층)와 IP 주소(네트워크 계층)를 추가 랜카드(물리 계층)를 통해 전송, 이 때 스위치(데이터 링크 계층)와 라우터(네트워크 계층)를 통해 목적지로 메시지가 전달 통신이 끝난 후 4-way handshake을 통해 연결을 종료 지난 게시글에 네트워크 보안 수업을 들으면서 공부했던 내용을 더 추가했다 과정 설명 1) 웹 브라우저에 주소를 입력한다 웹 브라우저는 URL에서 도메인을 추출한다 https://www.naver.com -> www.naver.com 도메인만 가지고는 어.. 2023. 4. 1.
[JAVA/프로그래머스] 전화번호 목록 / 해시 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성.. 2023. 3. 31.
[JAVA] 참조에 의한 호출 (Call by Reference), 값에 의한 호출 (Call by Value) 1. 요약 자바에서는 실제로 Call by Reference가 존재하지 않고, Call by Value만 존재한다 그 이유는 참조 타입(객체)의 경우 객체의 주소 값을 값으로 전달하기 때문이다 2. Call by Reference vs Call by Value 메소드 호출 시, 매개변수를 전달하는 방법에는 참조에 의한 호출과 값에 의한 호출 두 가지가 있다 이 두 가지 호출 방식은 매개변수로 전달되는 값의 타입에 따라 달라진다 참조에 의한 호출 (Call by Reference) 참조에 의한 호출은 객체의 주소 값을 전달하는 방식이다 메소드 안에서 매개변수의 값이 변경되면, 호출한 쪽에서도 값이 변경되며 이는 매개변수가 객체 타입일 때 발생한다 값에 의한 호출 (Call by Value) 값에 의한 호출.. 2023. 3. 28.
[JAVA/백준/2457] 공주님의 정원 / Greedy 2457번: 공주님의 정원 첫째 줄에는 꽃들의 총 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 각 꽃이 피는 날짜와 지는 날짜가 주어진다. 하나의 날짜는 월과 일을 나타내는 두 숫자로 표현된다. 예를 들어서, www.acmicpc.net 이 문제는 그리디 알고리즘을 사용하여 풀 수 있다 풀이과정은 다음과 같다 꽃을 시작 날짜를 기준으로 정렬, 시작 날짜가 같다면 종료 날짜를 기준으로 정렬 꽃의 시작 날짜가 현재 날짜보다 크면 탐색을 종료 현재 날짜보다 작거나 같은 시작 날짜를 가진 꽃 중 끝나는 날짜가 가장 큰 꽃을 선택 선택한 꽃의 끝나는 날짜를 기준으로 다시 시작 위와 같은 과정을 반복하면 최대로 심을 수 있는 꽃의 수를 계산할 수 있으며 자세한 설명은 주석으로 달아놨다 .. 2023. 3. 27.
[JAVA/백준/1520] 내리막길 / DP, DFS 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net 이 문제는 출발점에서 도착점까지 가는 경로의 수를 구하는 것이다 DFS를 통해 도착하는 모든 경로를 얻을 수 있지만 시간초과가 발생하게 된다 같은 경로를 중복해서 탐색할 수가 있기 때문에 시간 복잡도를 효율적으로 개성해야 한다 따라서 DFS + DP를 이용해 풀이를 했다 우선, DFS를 이용해 출발점에서 도착점까지 모든 경로를 탐색하는데 현재 위치에서 갈 수 있는 높이가 낮은 지점으로 이동하면서 경로의 수를 누적한다. 이미 계산한 경로는 중복 계산하지 않도록 .. 2023. 3. 25.
[JAVA] 멀티스레드 환경에서 싱글톤 객체 처리 멀티스레드 환경과 싱글톤 객체 멀티스레드 환경에서 여러 스레드가 하나의 싱글톤 객체에 접근하는 것은 충돌이 발생할 수 있으므로 주의해야 한다 우선 스레드와 멀티스레드, 싱글톤 객체에 대해 간단히 살펴 보고 문제가 왜 발생하는지 생각해보자 스레드란? 우선 스레드는 애플리케이션의 코드를 하나씩 수행하는 단위이다 스레드는 한 번에 하나의 코드 라인을 읽을 수 있고 동시처리를 위해서는 스레드를 여러개 사용하는 멀티스레드를 이용해야 한다 멀티스레드란? 멀티스레드란 여러 스레드가 자신이 속한 프로세스의 자원을 공유하면서 둘 이상의 스레드가 동시에 작업을 하는 것이다 자신이 속한 프로세스의 메모리를 공유하므로 시스템 자원의 낭비가 적다는 장점이 있다 멀티스레드를 구현하는 방법은 크게 두 가지가 있다 들어오는 요청마다.. 2023. 3. 24.