반복되는 작업은 줄일수록 좋다. 자주 사용하는 웹사이트에 들어갈 때마다 매번 로그인해야 한다면 웹사이트를 이용하는 것이 스트레스일 것이다. 때문에 이러한 정보는 한 번 작성하거나 사용한 뒤에는 반복적으로 작업하지 않도록 저장해 두는 것이 효율적이다. 웹 환경에서는 이처럼 반복적으로 사용되는 데이터나 정보를 종류와 특성에 맞게 저장하고 재활용하기 위해 여러 방식을 사용한다. 웹 생태계를 파악하는 데 큰 도움이 되는 쿠키와 세션에 대해 정리하기 위해 이번 글을 작성한다. 1. HTTP의 특징과 쿠키와 세션을 사용하는 이유HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용한다. 기본적으로 HTTP 프로토콜 환경은 "connectionless, stateless"한 특성을 가지기 때문에 ..
JSP 환경에서 현재 작업 중인 페이지에서 다른 페이지로 이동하는 두 가지 방식의 페이지 전환 기능인 forward와 redirect가 무엇이고 이 둘이 어떠한 차이가 있는지 확실히 알기 위해 이번 글을 작성하게 되었다. 1. 사례를 통한 둘의 차이점첫 번째 사례 (redirect)고객이 고객센터로 상담원에게 123번으로 전화를 건다.상담원은 고객에게 다음과 같이 이야기한다. "고객님 해당 문의 사항은 124번으로 다시 문의해주시겠어요?"고객은 다시 124번으로 문의해서 일을 처리한다.두 번째 사례 (forward)고객이 고객센터로 상담원에게 123번으로 전화를 건다.상담원은 해당 문의사항에 대해 잘 알지 못해서 옆의 다른 상담원에게 해당 문의사항의 답을 얻는다.상담원은 고객에게 문의사항을 처리해 준다...
Apache와 Tomcat은 자주 같이 쓰이는 단이이면서도 다른 단어이다. 이 둘의 차이점과 각각이 하는 역할을 확실히 기억해 두기 위해 이 글을 작성한다. 1. 아파치(Apache) 우리가 흔히 아파치라고 부르는 것은 Apache HTTP Server를 의미하는 데 이는 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단(Apache Software Foundation, ASF)에서 만든 웹 서버 프로그램이다. 1998년 6월에 처음 세상에 공개가 되었고, 오픈 소스를 통해 많은 개발자들에 의해 개발이 이루어졌으며, 이루어져가고 있는 상태이다. 웹 서버(http server)란?웹 서버는 하드웨어와 소프트웨어 두 분야에서 다른 의미로 부른다. 1. 하드웨어웹 서버 소프트웨어와 웹 사이트의 구성 요소 파..
1. Servlet 이란? 서블릿(servlet)은 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램이다. java 코드 안에 HTML 태그가 삽입되며 자바 언어로 되어 있다. .java 가 확장자이다. 쉽게 말하자면 '클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 servlet 클래스의 구현 규칙을 지킨 자바 프로그램' 이라고 이해하면 좋을 듯하다. 서블릿(servlet)은 자바 언어를 웹 애플리케이션에 조금 더 개발하기 쉽게 하기 위해 만든 API(라이브러리, 클래스 등)이며 이 규약에 맞는 라이브러리나 클래스들을 상속 및 구현하여 만든 클래스들을 서블릿이라고 한다. 2. JSP(Java Server Pages) 란? 자바 파일에서 HT..
스레드에 대해 공부를 하다가 운영체제에 따라 구분되는 형태들에 대해 개념이 애매모호해서 확실히 머릿속에 새기고자 이 글을 작성하게 되었다. 스레드는 운영체제에 따라 다양하게 구현할 수 있는데, 대부분 다음 세 가지 형태로 구현한다.사용자 수준 스레드(user-level thread) : 다대일(n : 1) 매핑커널 수준 스레드(kernel-level thread) : 일대일(1 : 1) 매핑혼합형 스레드(multiplexed thread) : 다대다(n : m) 매핑 1. 사용자 수준 스레드스레드를 관리하는 라이브러리로 인해 사용자 단에서 생성 및 관리되는 스레드이다.스레드 라이브러리는 커널이 지원하는 스케줄링이나 동기화 같은 기능을 대신 구현해준다.그러므로 커널 입장에서는 이 스레드는 하나의 프로세스처..
서브쿼리(Subquery)서브쿼리(subquery)란 다른 쿼리 내부에 포함되어 있는 SELECT 문을 의미한다.서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브쿼리는 내부쿼리(inner query)라고도 부른다,SELECT [컬럼]FROM [테이블]WHERE [컬럼] IN ( SELECT [컬럼] FROM [테이블] WHERE [조건]);서브쿼리는 위의 예시처럼 소괄호()로 묶어서 표현한다.✅ 서브쿼리 - 메인쿼리 컬럼 사용 가능✅ 메인쿼리 - 서브쿼리 컬럼 사용 불가 조인(join)에 참여하는 모든 테이블이 대등한 관계에 있기 때문에 조인에 참여하는 모든 테이블의 컬럼을 어느 위치에서라도 자유롭게 사용할 수 있는 조인과 달리, 서브쿼리는 그렇지 않다. ..
📖 문제 알고리즘❓ 풀어내기❗️모든 경우의 수는 각 원소를 뽑는다 / 안 뽑는다로 나뉜다. 따라서 완전탐색을 통해 합이 S가 되는 모든 경우의 수를 탐색하고, 트리구조를 이루기 때문에 DFS 방식으로 풀 수 있다.예를 들어, 원소 {A, B, C} 라면,index = 0 일 때는 아무것도 선택하지 않았을 때, 부분수열 = {0} (공집합)index = 1 일 때는 이전 부분 수열에 A를 가졌냐 안 가졌냐로 나뉨. 부분수열 = {A}, {0}index = 2 일 때는 이전 부분 수열에 B를 가졌냐 안 가졌냐로 나뉨. 부분수열 = {AB}, {A}, {B}, {0}index = 3 일 때는 이전 부분 수열에 C를 가졌냐 안 가졌냐로 나뉨. 부분수열 = {ABC}, {AB}, {AC}, {BC}, {A},..
조합(Combination)이란?조합은 주어진 집합에서 특정 개수의 원소를 선택하는 방법을 의미한다. 순서에 상관없이 선택된 원소들로 구성된 집합을 조합이라고 한다. 예를 들어, 집합 {A, B, C, D, E}에서 3개의 원소를 선택하는 경우, 가능한 조합은 {A, B, C}, {A, B, D}, {A, B, E}, {A, C, D}, {A, C, E}, {A, D, E}, {B, C, D}, {B, C, E}, {B, D, E}, {C, D, E}이다.쉽게 말해 순서가 바뀌어도 연산(혹은 값)이 동일하고 선택해야 하는 개수가 고정되어 있으면(위의 예시로 들자면 개수는 3으로 고정되어 있다.) 조합을 고려해 볼 수 있겠다. 시간 복잡도조합 생성의 시간 복잡도는 O(C(C, R) 또는 O(N! / (R..