개발자의 공부방 216

알고리즘] 자료구조, 큐(Queue)

개요 이직을 준비하면서 참 많은 경험과 생각을 했습니다. 그 중에 하나가 기초적인 자료구조와 알고리즘은 필수로 알아야겠다 라는 것입니다. 기본적인 Stack과 Queue의 LIFO, FIFO의 개념정도는 알았으나... 이것을 활용한 알고리즘 문제를 풀어보려고하니 머리 텅텅거리는 느낌이었습니다.. 그래서 공부한 것을 정리하고자 합니다. 본문 1. 큐 구조 큐 (Queue)의 자료구조는 FIFO (First-In, First-Out)의 방식이며, 한국말로는 선입선출이라 한다. 샤넬(명품매장)매장에 가장 먼저 줄을 선 사람이 샤넬백을 제일 먼저 살 수 있는 것이라고 생각하면 될까..? 알아야할 용어! Enqueue : 큐에 데이터를 넣는 기능. Dequeue : 큐에서 데이터를 꺼내는 기능. 2. JAVA에서..

쿠키와 세션을 알아보자.

개요 쿠키와 세션의 각각 특성, 차이를 확실히 알아가기. 서론 공통점 : 웹 통신 간에 유지하려는 정보를 저장하기 위해 사용하는 것. 차이점 : 저장위치, 저장형식, 용량제한, 만료시점 - 쿠키 : 개인 PC에 저장됨. - 세션 : 접속중인 웹 서버에 저장됨. - 캐시 : 웹 페이지 요소를 저장함. (PC에 저장.) 본론 쿠키와 세션을 사용하는 이유 HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용된다. Connectionless 프로토콜 (비연결지향) 클라이언트가 서버에 요청(Request)을 했을 때, 그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다. * HTTP 1.1버전에서 연결을 유지하고, 재활용하는 기능이 Default로 추가되었다. (keep-alive값으로..

웹 서버와 웹 어플리케이션의 차이?

이직을 준비를 위해 여러 면접을 보던 중 정말 기초적인 질문을 하는 곳을 처음 가봤다.. 그리고 아는 개념들이 많았지만 막상 한두마디로 정의한다던가 설명을 하기에는 스스로 정리가 안되고 부족했다 라는 생각이 들었다. 그래서 이 부분을 정리해보고자 한다. Web Server와 WAS(Web Application Server)의 차이. 결과적으로 얘기하자면 Web Server는 정적데이터를 처리하고, Web Application Server는 동적 데이터를 처리한다. 이 말은 무엇을 의미할까? 웹서버는 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML문서와 같은 웹 페이지를 정적으로 처리해 반환하는 프로그램이다. (그림, 스타일시트, 자바스크립트 포함) 반면 Web Application ..

SOLID 에 대한 부분.

스프링 기초 강의를 들으면서 SOLID 객체지향 원칙에 대해서 학습과 이해를 하고 있었다. 하지만 요즘 MSA 설계방법론을 갖고 하는 프로젝트들이 많아지고 있는 것 같다보니 이 부분들이 기존에 있던 객체지향 5원칙을 굳이 지키지 않아도 되는게 아닌가라는 생각이 들기도 했다. 무튼.. 때마침 아주 좋은 블로그와 글을 발견해서 링크를 남겨본다. 이 분야는 정말 공부할게 많은 것 같다... https://mangsby.com/blog/programming/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-5%EC%9B%90%EC%B9%99-solid%EC%9D%80-%EA%B5%AC%EC%8B%9C%EB%8C%80%EC%9D%98-%EC%9C%A0%EB%AC%BC%EC%9D%B8%EA%B0%80/

스프링 기초] IoC 제어의 역전과 프레임워크 그리고 라이브러리.

IoC(Inversion of Control) 제어의 역전을 의미하는데 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라 한다. 즉, 쉽게 이야기하면 내가 무언가를 호출해서 직접 실행하는 것이 아닌 프레임워크 같은 것이 대신 호출을 해주는 것이다. 그렇기 때문에 이름 자체가 제어의 역전이다. 말 그대로 제어하는 것이 역전되 버렸다! 위에 언급한 것 중 프레임워크가 있는데 이 IoC의 개념의 관점에서 설명하기 아주 좋은 예이다. 프레임워크와 라이브러리의 차이? 제어의 역전(IoC) 라는 개념의 관점에서 보면 프레임워크는 내가 작성한 코드를 제어하고, 대신 실행시켜주는 것이고 라이브러리는 내가 작성한 코드가 직접 제어의 흐름을 담당하는 것을 말한다. 즉, 제어의..

웹] 브라우저는 어떻게 동작할까?

들어가기 앞서.. 브라우저 통계를 보여주는 사이트 statCounter를 살펴보면 아래의 스샷처럼 크롬이 독보적입니다. 이 글은 크롬을 바탕으로 이야기합니다. (브라우저 종류 마다 브라우저 구조가 조금씩 다르다.) 1. 브라우저의 기본구조 브라우저의 구성요소를 설명해보겠습니다. 1) 사용자 인터페이스 (User Interfave) : 주소표시줄, 이전&다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분이다. 2) 브라우저 엔진 (Browser Engine) : 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어. 3) 렌더링 엔진 (Rendering Engine) : 요청한 콘텐츠를 표시. 예를 들어 HTML을 요청하면 HTML과 CSS를 파싱해 화면에 표시한다. 4) ..

스프링 기초] 스프링과 스프링부트의 차이점.

구글에 스프링과 스프링부트의 차이점을 검색하면 정말 많은 학도들의 글이 나옵니다. 현업에서 개발할 때 스프링을 쓰기는 했으나 과연 제가 스프링의 개념과 목적을 얼마나 알고 쓰는지에 대해서 고민했습니다. 이때 좋은 강의를 보고 나름대로 하나하나 천천히 정리해보려고 합니다. 스프링과 스프링부트의 차이점은 무엇인가? 여러 소스를 들어서 예를 꺼내면 다소 글이 길어지겠지만 먼저 간단한 개념을 잡고 출발하겠습니다. 스프링 핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타.. 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술, 기술 통합, 테스트, 언어 스프링부트 스프링을 편리하게 사용할 수 있도록 지원해주는 껍데기(?) 단독으로 실행할 수 있는 애플리케이션을 쉽게 생성. Tomcat 같..

정처기] 후기

오늘 근래에 정말 멍청한 짓을 했다... 9시30분 시험인데 9시 20분에 일어났다..... 개멍청이... 씻지도 않고 옷만 입고 운전해서 시험장에 도착했으나 30분이 지난 상황에서는 입실이 불가능하다고 하더라... 엠병........... 2시간 후.. 수제비 카페에서 시험 후기를 보니 난이도가 역대급으로 높았다는 글들이 많았다 -,- 예상 합격률은 20% 내외가 되지 않을까 라는 말도...? 난이도가 어쨌든 시험을 못 본게 너무 짜증난다.. 후우... 다행히 필기는 2년 동안 유효기간이 있어서 내년에도 볼 수는 있지만 거지같이 시간 낭비하는 느낌이 너무 싫은데 이걸 또 내년에 겪어야한다는게 너무 싫다 정말로.... !@#$%^^&*()()++ 짜증난담ㄴㅜㅁㄴ어ㅐㅁㅓㅐㅠㅠㅠㅠㅠㅠ 역시 인생 순탄하지 않다.