이번 강의에서는 간단한 클라이언트-서버 네트워크 프로그램을 만들어보자.⬛ 객체화된 요청과 응답 처리 HttpRequest:요청 메서드(GET, POST), 경로(Path), 쿼리 파라미터(Query Parameters) 등을 구조화.HttpResponse:응답 상태 코드(200, 404 등), 헤더(Content-Type 등), 바디 작성 지원.🔷 HttpRequest/** * HTTP 요청을 파싱하는 클래스 */public class HttpRequest { private String method; // HTTP 메서드 (GET, POST 등) private String path; // 요청 경로 private final Map queryParameters = new HashMap(); // 쿼리..
전체 글
문제 바로가기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해결 과정 정리아주 호흡이 긴 문제였다. 여러 가지 개념이 섞여 있고, 특히 자바로 풀 때는 call-by-reference, 초기화 문제 등의 오류를 주의해야 한다. 이 문제를 풀기 위한 접근 방식을 차근차근 정리해 보자.1. 완전 탐색의 기본 아이디어문제를 해결하기 위해 가장 먼저 떠오르는 방식은 완전 탐색이다. 문제를 단계별로 나누면 다음과 같다:A가 선택할 주사위 조합 구하기nnn개의 주사위에서 n/2n/2n/2개를 선택하는 모든 조합을 생성한다.A와 B의 주사위 점수 합 리스트 구하기A와 B 각각의 주사위를 굴려 나올 수 있는 ..
이번 강의에서는 간단한 클라이언트-서버 네트워크 프로그램을 만들어보자.⬛ 클라이언트와 서버 간 대화컴퓨터가 "메시지"를 보내면 "메시지 + 반가워!" 라고 응답을 주는 프로그램을 만들어보자.🔷 클라이언트 코드public class ClientV1 { private static final int PORT = 12345; public static void main(String[] args) throws IOException { log("클라이언트 시작"); Socket socket = new Socket("localhost", PORT); DataInputStream input = new DataInputStream(socket.getInputStream()); DataOutputStream out..
본 편은 해당 강의 내용과 더불어, "면접을 위한 CS 전공지식 노트" 에서 연관내용을 함께 정리요약한 내용임을 밝힌다. :)⬛ 인터넷 프로토콜 스택 4계층⬛ IPIP(인터넷 프로토콜)는 네트워크 상에서 장치 간 데이터 송수신을 위해 사용되는 주요 프로토콜로, 장치 간 고유 주소를 제공하여 데이터가 정확한 목적지에 도달하도록 한다. 🟢 IP 인터넷 프로토콜 역할지정한 IP 주소에 데이터 전달패킷이라는 통신 단위로 데이터 전달🟢 IP 인터넷 프로토콜 한계비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷전송비신뢰성: 중간에 패킷이사라지거나, 순서대로 오지 않는 문제프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘이상일때 문제🟢 IPv4 vs IPv6 Pv4는 32비..
⬛ File, Pathfile은 옛날에 쓰던 방식이다. (레거시코드볼때..just참고)public class OldFileMain { public static void main(String[] args) throws IOException { File file = new File("temp/example.txt"); File directory = new File("temp/exampleDir"); // 1. exists(): 파일이나 디렉토리의 존재 여부를 확인 System.out.println("File exists: " + file.exists()); // 2. createNewFile(): 새 파일을 생성 boolean created = file.createNewFile(); System..
⬛ 파일에 데이터 저장하기데이터를 파일에 저장하기 위해서는 FileOutputStream을, 파일에서 데이터를 읽기 위해서는 FileInputStream을 사용한다.write()와 read() 메서드를 통해 데이터를 바이트 단위로 쓰고 읽을 수 있으며, 파일의 끝에 도달하면 -1을 반환한다.public class StreamStartMain2 { public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("temp/hello.dat"); fos.write(65); fos.write(66); fos.write(67); fos.close(); FileInputStream ..

https://school.programmers.co.kr/learn/courses/30/lessons/181188?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr미사일을 최소로 사용해 모든 폭격 미사일을 요격해야 한다.그럼 최소에서 힌트를얻어, 가장 많이 겹치는 범위부터 요격하면 되는것 아닌가?싶지만...이 경우 최적해가 아닌 경우가 발생한다. 아래경우를 생각해보면 많이겹치는 곳중 빨간부분을 먼저쏘면 4번 요격해야하므로 이 풀이원칙은 반례가 생긴다... 그럼 포커스를 "최소" 에서 "모든"으로 맞춰보자.결국 모든 것을 쏴야하는..

⬛ Graceful Shutdown어느 날, 개발자는 서버(피자 가게)를 업데이트하려고 한다. 그런데 문제는 주문 처리 중에 서버가 멈추면 고객이 화를 낼 거다! 😱그래서 개발자는 생각한다.개발자: "새로운 주문을 막고, 이미 받은 주문은 모두 끝낸 후에 서버를 꺼야 해!"→ 여기서 등장한 것이 우아한 종료(Graceful Shutdown)! 🟢 ExecutorService 종료 메서드shutdown():새로운 작업은 받지 않지만, 진행 중인 작업은 모두 완료 후에 종료.논 블로킹 방식 (호출 후 바로 다음 코드 실행 가능).shutdownNow():모든 작업을 중단하고 즉시 종료.진행 중인 작업도 중단(인터럽트 발생).블로킹 방식 (호출 후 작업이 중단될 때까지 기다림).🟢 종료 상태 확인 메서드..

⬛ 스레드를 직접 사용할 때의 문제점개발자A는 하나하나 스레드를 만들어서 일을 처리하고 있다. 스레드를 만들고, 요청을 처리하고, 또 다른 스레드를 만들고...하지만 문제가 발생한다. 스레드를 만들 때마다 CPU가 점점 느려지고, 메모리 사용량이 크게 늘어나기 때문이다. 스레드 하나당 많은 메모리를 차지하고, 관리도 어렵다. 또한 A가 만들 수 있는 스레드 수는 한정되어있다. 따라서 최대 스레드 수까지만 스레드를 생성할 수 있게 하고싶다.⬛ 스레드 풀🟢 스레드 풀컬렉션에 스레드를 보관하고 재사용처리 작업이 없으면 대기(WAITING),작업 요청이 오면 RUNNABLE하지만 스레드 풀의 관리가 복잡해지고, 작업의 효율을 더 높여야 할 필요가 생겼다.⬛ Executor 프레임워크 소개Executor 프레임..
여름의 풋풋한 냄새를 좋아한다.색채가 뚜렷한 여름은 알록달록한 공상을 불러온다.자연을 흠뻑 느낄 수 있는 이 특유의 계절이 좋다.신기하게 이 계절엔 녹색과 하늘색을 몇번이고 쳐다보게 된다.그럴땐 이 계절에 흠뻑 파묻히고싶다는 생각이 든다.그리워하던 시간으로 되돌아간 기분만큼 특별한건 없다.너무 행복하다.