2025/03 20

[Servlet] Servlet 과 HTTP 프로토콜 WAS와 Servlet 컨테이너의 관

1. Servlet웹 애플리케이션에서 HTTP 프로토콜을 이용해 요청을 처리하고 응답을 하는 자바 클래스 Server + application + let(작은) = 작은 애플리케이션 서버 웹서버와 소켓으로 통신한다.Web server에 붙어서 뭔가를 처리해준다. WAS는 servlet을 지원해준다.2. HTTP 프로토콜2-1. HTTP 프로토콜클라이언트와 서버가 데이터를 주고받을 때 사용하는 통신규약이다. 거의 모든 형태로의 데이터 전송이 가능하다.2-2. HTTP 메시지 구조html, text, json, xml 등 거의 모든 형태로의 데이터로 전송이 가능하다.3. WAS(Web Application Server) 의 역할통신에 필요한 부가적인 것들을 대신 처리해준다. Web에 붙어서 Client의 요..

Java 2025.03.18

[Servlet] Web 통신 - Web Server 와 WAS

컴퓨터(서버) 위에 운영체제(OS)가 깔려 있고, 그 위에서 WAS(톰캣 등)이 돌아가면서 세션 정보를 메모리에 저장하고 관리한다.1. Web 통신1-1. Web 통신 구조1-2. Web Server사용자에게 HTML 페이지나 jpg, png와 같은 이미지를 HTTP 프로토콜을 통해 웹 브라우저에 제공하는 서버이다. 내부의 내용이 이미 만들어져 있는 정적인 요소들을 화면에 보여준다.1-3. WAS(Web Application Server)사용자가 요청한 서비스의 결과를 스크립트 언어 등으로 가공하여 생성한 동적인 페이지를 사용자에게 보여준다.대표적으로 Tomcat이 있다.Tomcat, WildFly, JEUS 등이 있다.주로 ServletContainer와 JSP Container의 기능을 한다.1-4...

Java 2025.03.18

BEYOND SW 캠프 15기 8주차 회고

1. FACTS : 일주일동안 있었던 일, 내가 한 일1-1. 이번 일주일동안 있었던 일자료구조graph를 배웠다.알고리즘 kruskal 알고리즘, prim알고리즘, knapsack 알고리즘, 그리디, DP등을 배웠다. 실습문제는 수업시간에 배운 부분만 소화했다. DP 알고리즘이 특히 어려웠는데, 점화식 도출과 초기값 설정이 가장 중요했다.kruskal 알고리즘최소 신장 트리 문제를 푸는 알고리즘이다. 가중치를 오름차순으로 정렬 후 union-find 알고리즘을 이용해 cycle인지 찾는다.prim 알고리즘최소 신장 트리 문제를 푸는 알고리즘이다. 우선순위 큐에 담은 후 하나씩 꺼내면서 방문하지 않았으면 추가한다.dp문제경우의 수를 정교하게 나누어 해당 경우의 수일 때 어떻게 대처할 지 생각 후 푸는 것..

회고/Weekly 2025.03.17

[DP] Top-down 과 Bottom-up 의 차이점과 장단점, 쓰는 경우

1.Top-down 과 Bottom-upDP를 푸는 방식에는 두 가지가 있다.Top-Down : 큰 부분부터 작은 부분으로 쪼개지며 답을 찾는다(재귀 사용)Bottom-up : 작은 부분부터 큰 부분까지 모두 답을 찾는다. 즉  큰 문제를 작은 문제로 쪼개서 그 답을 저장해두고 재활용한다. 2. Top-down 장점모든 부분을 다 구하지 않아도 될 때 시간복잡도 면에서 유리하다. Bottom-up 방식은 문제 해결에 필요하지 않은 부분까지 모두 구하기 때문에 메모리나 시간상 불리하다.그 예시로 백준 무한 수열이 있다. 3. Bottom-up 장점모든 부분을 다 구해야 할 때는 Bottom-up이 유리하다. Top-down은 재귀함수를 구현하기 때문에 stack이 쌓여 불필요한 메모리가 낭비될 수 있다.그..

CS/알고리즘 2025.03.13

[프로그래머스] 완주하지 못한 선수

1. 내 풀이정렬 후 다른 게 있으면 바로 리턴, 끝까지 다른게 안나오면 마지막 값 리턴import java.util.*;class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; Arrays.sort(participant); Arrays.sort(completion); for(int i = 0; i    2. 다른 분 풀이HashMap을 이용하여 푸셨다. 둘다 원리는 같은 것 같다.import java.util.HashMap;class Solution { public String solution(Str..

[프로그래머스] 둘만의 암호

1. 다른 분의 풀이를 참고한 풀이쉽게 char을 하나씩 증가시키면서 비교하면 되는데 일단 index만큼 증가시켜놓고 skip된게 있으면 그제서야 하나씩 더 올리려고 했던 나,,, 괜히 쉽게 가려다가 더 어렵게 가는 경우가 많은 것 같다. 이런건 어떻게 해야하나!그리고 간과했던 것 string.contains! 함수들을 진짜 한번은 정리하는 시간이 필요한 것 같기도 하당. class Solution { public String solution(String s, String skip, int index) { String answer = ""; char[] chars = s.toCharArray(); StringBuilder sb = new StringBuilder..

BEYOND SW 캠프 15기 7주차 회고

1. FACTS : 일주일동안 있었던 일, 내가 한 일1-1. 이번 일주일동안 있었던 일1-1-1. 수업시간에 배운 내용디자인패턴종류도 너무 많고 헷갈려서 아직 숙지가 되진 않았다.자료구조stack, queue, deque, tree, heap 등을 배웠다.자바 종합 실습우테코 프리코스 최종 코테 문제를 가져와서 다시 구성해봤다. 그때 최종 탈락하고 허접한 코드들에 너무 아쉬웠는데 이번에는 힘겹지만 그래도 요구사항을 완성할 수 있는 수준까지 성장한 것 같아 좋았다. 이후 강사님께 코드 피드백을 받았는데, 첫번째는 객체 생성 시 검사가 필요할 때 객체 생성 패턴을 활용하라는 피드백과, AttendanceProgram이라는 컨트롤러 클래스를 만들어서 진행했는데 컨트롤러의 정확한 역할은 io의 정보들을 적당히..

회고/Weekly 2025.03.10

[프로그래머스] 다트 게임

https://school.programmers.co.kr/learn/courses/30/lessons/176821. 내 풀이이전 수를 int에 따로 저장해서 검사했다.class Solution { public int solution(String dartResult) { int answer = 0; int prevNum = 0; for(int i = 0; i   2. 다른 분 풀이 - stack 사용Character.isDigit(c)를 활용해 숫자인지를 알 수 있다.stack을 사용해 편리하게 값을 넣었다 뺐다 하고있다.import java.util.*;class Solution { public int solution(String dartR..