전체 글

개발 공부 기록. https://github.com/junseoparkk
❌ Error

[Error] java.lang.IllegalArgumentException : Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection.

1️⃣ 문제 상황 Spring 관련 공부 도중 발생한 에러이다. 해당 에러는 '@RequestParam', '@PathVariable' 애노테이션을 사용할 때 발생할 수 있다. 아래는 에러 메시지 내용 중 일부이다. 2️⃣ 원인 분석 java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. at org.springframework.web.method.annotation.AbstractNam..

📙 CS/📙 Network

[Network] Load Balancing

1️⃣ 로드 밸런싱 개념 로드 밸런싱(Load Balancing)은 컴퓨터 네트워크 기술의 일종으로, 부하 분산이라고도 한다. 이는 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법이다. 쉽게 말해 서버가 처리해야 할 작업이나 요청을 여러 대의 서버로 분산하여 부하를 낮춰 처리하는 기술이다. 보통 트래픽이 많은 웹 사이트, FTP 사이트, NNTP 서버, DNS 서버 등에서 적용된다. 우리가 대형 마트에 갔을 때 계산대가 하나만 존재한다면 어떨까? 계산하려는 많은 사람들이 모이면서 일을 처리하는 속도가 굉장히 느려질 것이다. 하지만 계산대가 여러 개 존재하면 계산 업무를 적절히 배분하여 효율적으로 진행할 수 있게 된다. 혹은 새로 발매한 게임에 갑기 많은 사용자가 몰린다면..

📙 CS/📙 Network

[Network] SSL/TLS handshake

네트워크를 공부했던 사람이라면 TCP 의 접속 과정인 '3-way handshake', '4-way handshake' 등의 용어를 들어봤을 것이다. CS 스터디를 하던 중 나는 이번에 'SSL/TLS handshake'를 주제로 발표를 맡았다. 처음 들어봤기 때문에 생소했지만 꽤나 흥미로운 내용들이 많았다. 가령 HTTPS 에 접속하는 과정이 어떻게 이루어지는지 등 말이다. 공부하기 전 개념과 과정을 살펴보니 웹 개발자로서 꼭 필요한 내용이라고 생각이 된다. 우리가 단순히 인터넷에 접속하기까지 수 많은 패킷이 오가며 암호화 통신을 한다. 실제로 우리는 기존 인터넷 방식인 'http' 에 보안을 결합한 'https' 를 자주 접하고, 이 때 암호화 통신이 적용 된다. SSL/TLS handshake 를 ..

📙 CS/📙 Network

[Network] SSL/TLS

1. 개념 1) SSL (Secure Sockets Layer) SSL은 '보안 소켓 계층' 이라고 불리는 암호화 기반 인터넷 프로토콜이다. 1995년 Netscape 사에서 처음 개발되었으며, 인터넷 통신에서 개인 정보 보호, 인증, 데이터 무결성을 보장한다. 즉, 네트워크상의 두 디바이스 또는 애플리케이션 간에 보안 연결을 생성한다. SSL은 'Certificate Authority (CA)' 라는 디지털 인증서 발급 엔티티로부터 클라이언트와 서버의 인증을 하는데 사용된다. 특히 OSI 7계층 중 전송계층(4계층)과 응용계층(7계층) 사이에서 보안 관련 역할을 수행한다. 하지만 SSL은 오래된 기술이며, 보안적 결함이 몇몇 발견되어 현재는 이를 개선한 TLS를 사용한다. 2) TLS (Transpor..

📗 Back-end/📗 Servlet & JSP

[Servlet] 서블릿(Servlet)

1️⃣ 서블릿 개념 및 특징 1) 개념 서블릿(Servlet) 이란 자바를 사용하여 웹 페이지를 동적으로 생성할 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 서블릿은 자바 코드 안에 HTML을 포함하며, 웹 요청 및 응답의 흐름을 체계적으로 다룰 수 있게 해준다. 만약 클라이언트가 서버에 요청을 하면, 서블릿에서 해당 기능을 수행한 뒤 결과를 다시 전송한다. 서블릿의 흐름을 간략히 나타내면 다음과 같다. 웹 브라우저 (클라이언트) 에서 서버로 요청을 보낸다. WAS 에서 HTTP 요청 메시지를 기반으로 request, response 객체를 생성한다. 미리 생성해놓은 Thread Pool 에서 하나의 Thread 를 할당 받는다. 할당 받은 Thread 는 서블릿 인스턴스에 접근, 실행..

📙 CS/📙 Algorithm

[Algorithm] 구간 합(prefix sum)

1️⃣ 구간 합 (prefix sum) '구간 합' 또는 '누적 합' 은 합 배열을 통해 특정 구간의 합을 구하는 알고리즘이다. 비교적 간단하지만 코딩 테스트 출제 빈도가 꽤나 높다고 하니 잘 공부 해놔야겠다. 구간 합에서 가장 중요한 것은 합 배열이다. 다음은 합 배열을 구하는 방법을 정의한 것이다. // 기존 배열을 arr, 합 배열을 sumArr 라고 한다면 1) sumArr[i] = arr[0] + arr[1] + ... + arr[i - 1] + arr[i] 2) sumArr[i] = sumArr[i - 1] + arr[i] 예시 1) array 5 4 3 2 1 sumArr 5 9 12 14 15 만약 2번 ~ 4번 숫자의 합을 구해야 한다면 간단하게 4 + 3 + 2 = 9 라는 것을 알 수..

📘 교육 및 취업/📘 우아한테크코스

[우아한테크코스 6기] 웹 백엔드 프리코스 2주차 회고

2주 차 미션 - 자동차 경주 (내 코드) https://github.com/junseoparkk/java-racingcar-6/tree/junseoparkk GitHub - junseoparkk/java-racingcar-6 Contribute to junseoparkk/java-racingcar-6 development by creating an account on GitHub. github.com [1] 요구 사항 1주 차의 목표는 git, Java, 미션 사이클에 익숙해지는 것이었다. 또한 요구 사항을 통해 기능 목록을 도출하고, 작성한 목록에 따라 개발하는 연습을 했다. 처음엔 기능 목록을 어떻게 작성해야 할지, 어떤 내용을 넣어야 할지 고민하느라 많은 시간이 걸렸다. 실제로 기능 요구 사항에 ..

박갈
미 개발 구역