Back-end 100

요청 응답 흐름 과정

정보의 전송 과정 요청 응답 흐름 처리 Browser 웹서버에 원하는 정보를 쌍방향으로 요청을 하고 응답을 받아 사용자에게 보여준다 요청 흐름 1. URL해석 : URL을 입력했을 때 브라우저에서 처음 하는 일을 URL을 해석해 요청을 만드는 일! *URL : 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약, 웹서버에 '무엇을 요청할 것인가' 내용 2. http method get : 조회 post : 입력 put, patch: 수정, 새로운 자원이면 입력 delete : 삭제 응답흐름 1. 요청한 도메인의 서버에서 path를 파악해 response를 생성한다! 잘못된 컨텐츠 타입이 들어오면 해석을 못한다! Domain vs Host Domain : 한 네트워크(서비스)를 대표하는 이름 Host..

Process VS Thread

Program 실행되기 전! 상태의 명령어, 코드 및 정적인 데이터의 묶음 Process 실행 중인 Program!, 운영체제로부터 시스템 자원을 할당 받는 작업의 단위 PCB (Process Control Block) 각 프로세스는 운영체제에서 PCB로 표현 PID : 프로세스 식별자 프로세스 상태 : new, ready, running, waiting, halted 등 프로그램 카운터 : 당므 실행할 명령어의 주소 스케줄링 정보 : 우선순위 Multi Process 하나의 작업을 여러개의 프로세스가 처리 프로세스간 통신 (IPC, Interprocess communication) Context switching 비용이 큼 자식 프로세스 중 하나가 문제가 생겨도 다른 프로세스에 영향이 없음 예) Goo..

Hash Function

배열 원소 하나를 저장하고 검색하는데 평균 O(n)의 시간 소요 트리 원소하나를 저장하고 검색하는 데 평균 O(log n)의 시간 소요 저장된 자료의 양에 상관없이 원소 하나를 저장하고 검색하는 것을 상수 시간에 가능하게 할수는 없을까? 해시테이블?! 임의의 원소를 해시테이블에 저장하려면 1. 해당 원소의 해식밧을 해시 함수를 이용하용 계산한다. 2. 이 해시값을 주소로 하는 위치에 원소를 저장한다. 3. 저장 후에 검색을 할때도 원소의 해시값을 계산해 바로 해당 위치로 이동한다. 해시테이블은 원소의 저장된 위치를 상수시간에 계산할 수 있다. 해시 함수 임의의 길이를 데이터를 고정된 길이의 데이터로 매핑하는 함수 좋은 해시 함수의 조건 계산이 간단해야 한다 입력 원소가 해시테이블 전체에 고루 저장되어야 ..

API vs LIbrary vs Framework

API(Application programming interface) 응용 프로그램에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스 특징 구현과 독립적으로 사양만 정의되어있다 API에 따라 접근 권한이 필요할 수 있다 Java API, 여러 기업들의 오픈 API Library 응용 프로그램 개발을 위해 필요한 기능(함수)을 모아 놓은 소프트웨어 특징 독립성을 가진다 응용 프로그램이 능동적으로 라이브러리를 사용한다. Apache Commons, Guava, Lombok, jQuery Framework 응용 프로그램이나 소프트웨어의 솔루션 개발을 수월하게 하기위해 제공된 소프트웨어 환경 특징 상호협력하는 클래스와 인터페이스의 집합 응용 프로그램이 수동적으로 프레임워크에 의해..

Back-end/ETC 2021.05.07

TCP/ UDP

주목! TCP, UDP의 특성을 파악하고 상황에 따라 적절한 프로토콜을 사용할 수 있다 TCP, UDP의 헤더에 대해 파악하고 성는 개선에 이용할 수 있다 Transport Layer end point간 신뢰성있는 데이터 전송을 담당하는 계층 *신뢰성 : 데이터 순차적, 안정적인 전달 *전송 : 포트 번호에 해당하는 프로세스에 데이터를 전달 if? 전송계층이 없다면 - 데이터 순차 전송 X : 123 -> 231 - 흐름문제(송수신자 간의 데이터 처리 속도 차이) : 수신자가 처리할수 있는 데이터량을 초과 -혼잡 문제(네트워크의 데이터 처리 속도) : 네트워크가 혼잡 할때 -> 데이터의 손실 방생 TCP(Transmission Control Protocol) 신뢰성 있는 데이터 통신을 가능하나게 해주는 ..

Index

Index (검색을 위해) 임의의 규칙대로 부여된, 임의의 대상을 가리키는 무언가 ex) 2학년 3반 21번, 서울시 송푸구 신청동 루터회관 05510, List objects ... objects.get(index) IN DATABASE 데이터베이스는 내가 원하는 데이터를 어떻게 찾아오는 걸까? 왜 데이터가 많아질수록 점점 느려질까? 왜 조인만 수행하면 느릴까? 왜 쿼리가 느릴까? Clustered vs Non -Clusterd Clustered Index : 군집화된 인덱스 Cluster : 군집 Clustered : 군집화 *뭐가 군집? 인덱스와 데이터가 군집(정렬되어있다) -> 범위 검색 아주 강력!, 삽입과 정렬비용이 커지면 아주 느리다. 순서대로 한테이블에 하나만 범위 검색 Good -> 공간..

Back-end/DB 2021.05.04

빌드 용어

빌드 빌드 컴파일 + 링크 빌드 과정 원시파일(.java) -> 컴파일러 : 오브젝트파일(.class) -> 링커 : 실행파일(.jar) 빌드 도구 소스 코드로부터 실행 가능한 어플리케이션을 생성하는 것을 자동화하는 프로그램 java : ant -> maven -> gradle Ant Maven Gradle xml pom.xml 절차적 의존성 다운로드 가능 Groovy/ Kotlin 유연성(하나 하나 명시) 컨벤션(간편 해졌다.) 유연성 스크립트를 직접 명시 사용자 의도에 맞는 로직 개발이 어려움 스크립트의 규모가 작음 현대적인 빌드 도구 c# : MSBulid 닷넷 : .NetFrameWork, Nant *자동화(서비스 중 프로그램 코드 수정) 1. 코드수정 2. Git 3. 컴파일 4. 빌드 -> 빌..

Back-end/ETC 2021.05.04

Web Server VS WAS

Web 인터넷을 기반으로 한, 정보를 공유, 검색할 수 있게 하는 서비스 URL(주소), HTTP(통신 규칙), HTML(내용) Server 클라이언트에게 네트워크 통해 정보나 서비스를 제공하는 컴퓨터 시스템 Web Server 인테넛을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터 APACHE MICROSOFT LLS Web Application Server Web Application 웹에서 실행되는 응용프로그램 Web Application Server 웹 애플리케이션과 서버 환경을 만들어 동작 시키는 기능을 제공하는 소프트웨어 프레임워크 웹 애플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달 1. php, jsp, asp 를 사용해 동적인 페이지를 생성할수 있는 서버 2..

Back-end/ETC 2021.05.03

Spring Boot vs Spring

Spring -> 이름의 유래 개발자들의 겨울이 끝났다 !! 봄이 왔다!! 1. 모든 dependency를 버전까지 정확하게 한땀 한땀. 2. configuration 길다! Spring boot makes it easy stand - alone production -grade Spring based Applications just run 1. 짧아 졌다. 버전 관리도 권장버전으로 자동설정 스타터로 자동 디펜던시 2. gradle 이용시 더 짧은 길이 application.properties-> aplication.yml 사용자가 보기 깔끔하다. *Yaml Ain't Markup Language 3. Tomcat 내장 서버 -> 내장 서블릿 컨테이너 덕북에 jar 파일로 간단 배포! 4. 스프링 Seur..

Back-end/SpringBoot 2021.05.01

인증과 인가

인증과 인가 인증 (Authentication) 보호된 리소스에 접근하는 것을 허용하기 이전에 등록된 유저의 신원을 입증하는 과정 인가(Authorization) 요청된 리소스에 접근할 수있는 권한이 인증된 유저인지 입증하는 과줭 인증 -> 인가(권한이 있는 인증 된 유저) 인증되었지만 권한이 없다 -> 인가 X 인가되었지만 인증은 되지 않았다 -> 불가 X 웹에서의 인증/인가 - 요청 헤더 - 세션, 쿠키 - 토큰 - OAuth 다른 웹사이트 상의 자신들의 정보에 대해 접근 권한을 부여 할수 있는 공통적인 수단 개방형 표준 Authorization Code Grant 클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용 OAuth(1.0 -> 2.0) 인증 절차 간소화 기능 단순화 및 규..