분류 전체보기(754)
-
[CS] 동시성과 병렬성에 대한 나름의 이해
동시성은 CPU가 워낙 빨라 여러개의 프로세스를 마치 동시에 처리하고 있는 것 같은 환상을 주는 것을 의미한다. 실제로는 콘텍스트 스위칭을 통해 전환이 일어나며 한번에 하나의 프로세스만 처리한다. 이와 반해 병렬성은 멀티 코어 개념으로 여러 개의 CPU를 통해 여러 개의 작업을 처리하는 것을 의미한다. 이를 통해 여러 프로세스를 한번에 처리할 수 있다.
2023.11.11 -
[알고리즘] 신규 아이디 추천
문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이..
2023.11.11 -
[SQL][3] 자동차 대여 기록에서 장기/단기 대여 구분하기
문제 설명 다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다. Column nameTypeNullable HISTORY_IDINTEGERFALSE CAR_IDINTEGERFALSE START_DATEDATEFALSE END_DATEDATEFALSE 문제 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하..
2023.11.10 -
[Spring] HttpServletRequest에 대한 나름의 이해
서블릿이 요청 메시지를 파싱해서 HttpServletRequest에 담아서 제공한다. 이외에도 추가기능을 제공한다. 임시 저장소 기능이라고 HTTP의 요청의 시작과 끝까지 유지되는 임시 저장소 기능으로 request.setAttribute, request.getAttribute로 사용한다. 세션 관리 기능도 있다. 가장 중요한 건 HTTP 요청 파싱과 응답 메시지 작성을 도와주는 역할이기 때문에 HTTP 요청 메시지와 응답 메시지에 대한 이해가 바탕이 되어야 제대로 쓸 수 있다. Reference https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1&unitId=71168 학습 페이지 www.inflearn..
2023.11.10 -
[Spring] 자바 백엔드 웹 기술 역사에 대한 나름의 이해
servlet: HTML 생성이 어렵다 jsp: HTML 생성은 쉽지만 비즈니스 로직까지 너무 많은 역할을 한다. 서블릿, JSP 조합 MVC 패턴 사용 춘추 전국 시대 애노테이션 기반의 스프링 MVC가 통일 스프링 부트의 등장 서버를 내장. 빌드 결과에 WAS 서버 포함. 빌드 배포 단순화 Web servlet 기반 Spring MVC Web Reactive 기반 Spring WebFlux 웹 플럭스는 비동기 넌블록킹 처리로 최소 쓰레드로 최대 성능. 쓰레드 컨텍스트 스위칭 비용 효율화. 함수형 스타일로 개발. 서블릿 기술 사용X 하지만 난이도가 높고 RDB 지원이 부족. 일반 MVC 쓰레드 모델도 충분히 빠름. 실무에서 거의 사용 안함 자바 뷰 템플릿 역사 jsp: 속도 느림, 기능 부족 프리마커, ..
2023.11.10 -
[Spring] HTML, HTTP API, CSR, SSR에 대한 나름의 이해
백엔드 개발자는 HTTP와 관련해서 크게 세가지를 제공한다. 1. 정적 리소스 2. HTML 페이지: 타임리프나 jsp로 동적으로 HTML을 생성한다. 3. HTTP API: 서버나 서버간, 웹클라이언트, 앱클라이언트에 데이터를 제공하기 위해 사용한다. JSON 형식으로 사용한다. 웹클라이언트는 React, Vue.js 앱클라이언트는 Android, Ios, PC 앱과 같은 것이다. SSR은 서버 사이드 렌더링이다. CSR은 클라이언트 사이드 렌더링이다. SSR은 서버에서 HTML을 만들어서 클라이언트에게 제공하는 것을 의미한다. 정적인 화면에 사용한다. CSR은 웹클라이언트 서버가 클라이언트에게 자바스크립트 코드를 주고 웹브라우저가 이를 실행해 서버에 데이터를 요청하고 받은 데이터를 이용해 렌더링하는 ..
2023.11.10