movie 항상 잊어선 안되는 것
movie데이터 센터 -> 위성 -> 나와 가까운 데이터 센터 =>비효율적(너무 느림)데이터 센터 -> 광섬유 -> 나의 라우터 -> 나의 컴퓨터어떻게 나에게 데이터가 광섬유를 타고 올 수 있나?IP주소를 이용, 데이터 센터도 IP가 있다.우리는 도메인을 이용해서 IP
movie인터넷은 1960년대 냉전시대에 시작소련이 먼저 로켓을 쏘아올린 상황국방과 관련된 조직에서 인터넷의 시초가 생김웹은 1990년대에 시작이메일은 웹보다 더 먼저 시작팀버너스리가 유럽입자물리연구소에서 정보 소통을 위해 웹서버 개발 (무려 크리스마스에)이때 html
movie서버란 무엇인가?서버는 역할의 이름서버는 단순히 말해서 그냥 컴퓨터일뿐서버에게 서비스를 받는 컴퓨터는 클라이언트클라이언트에게 서비스를 제공하는 컴퓨터는 클라이언트서버 역할을 하는 소프트웨어를 깔고, 외부에서 특정 주소로 접속해 올 수 있도록 설정하면 노트북도
movie가상메모리메모리 관리 기법\-프로세스 전체가 메모리에 올라가지 않아도 실행 가능장점 물리 메모리의 제약에서 벗어남더 작은 메모리를 차지해서 더 많은 프로그램을 동시 수행프로그램을 메모리에 올리고 swap 하는 IO 횟수가 줄어들음컴퓨터와 가상메모리컴퓨터의
movie디버깅온갖 문제가 발생하기 때문에 이것을 고쳐가는 과정개발 중인 상태에서 오류와 에러를 잡는 것.컴파일 vs 인터프리터어떻게 자연어가 기계어로 변하는 컴파일코드를 중간에 한번에 기계어로 변경하는 과정자바는 대표적으로 JVM이 컴파일을 해줌인터프리터실시간으로 기
movie쪼개져서 작동하는 코드들을 체계적으로 묶어놓은 것실제 세계와 유사해서 코드를 이해하는 것도 쉬움method, field만 신경쓰면 돼서 반복을 확 줄여줌조립을 통해서 전체 시스템을 한번에 관리도 가능핵심: 묶어서 통제 가능
movie게임을 다운 받는데 인터넷도, 키보드도, 마우스도 먹통..?예전 컴퓨터는 프로세스를 하나만 썼기 때문에 그랬더랬다.현재는 다양한 프로세스를 한번에 돌릴 수 있다.동시성: 프로세스가 이것저것 조금씩 진행병렬성: cpu 코어를 여러개 달아서 각각 프로세스를 담당프
moviegit버전 관리가 가능하다문제가 생겨서 이전 버전으로 돌리기 가능!협업에 무척 유리병합, 공유 등 협업에 큰 도움!commit을 통해서 .git 폴더에 넣을 수 있음branch를 이용하면 다양한 시도가 가능githubgit을 통해 올린 코드들을 관리하는 곳모든
movieDNS(Domain Name System)www.whatisdns.co.kr에서 도메인은 www.뒤에 것들이다.www는 host name으로 불린다.도메인이 있는 이유: IP 주소를 쉽게 접근하기 쉬우니까IP와 도메인의 정보가 있는 곳이 DNS이다.홈페이지로
movieIP컴퓨터와 연결된 네트워크 주소언제든지 바뀔 수 있음IP 형태123.123.123.123 -> IPv4IP가 부족하기 때문에 공인IP와 사설IP로 나눈다.공인 IP는 네트워크가 같을 때 모두 동일하게 부여한다.사설 IP는 기기마다 다르게 부여된다.사설 IP만
movie인터넷전세계에 걸쳐 연결된 네트워크 시스템\-WWW(World Wide Web)하이퍼 텍스트와 멀티미디어를 통해 서비스 구축사용자끼리 정보를 다양하게 공유HTTP요청과 응답 형태로 이루어진 웹 통신 규약웹서버클라이언트 요청 처리과정google로 들어가려함웹 서
movieJVM컴파일은 언어마다 운영체제마다 모두 다르다.위의 문제를 해결하기 위해 JVM이 존재한다.JVM은 바이트 코드를 그때마다 운영체제에 맞에 기계어로 바꿔줌JIT(Just In Time): 바로 그때 그때 통변역을 해준다.JREJava Runtime Envir
movieEncording문자 -> 숫자 -> 이진수 -> 컴퓨터문자 인코딩 => 문자를 이진수로 나타내는 것문자열과 인코딩 숫자가 맞지 않으면 글자가 깨짐.ASKII 코드한계: 문자가 한정적임Uniocde다양한 문자를 하나의 문자열셋으로 정리함대표적인 것으로 UTF-
movie컴파일개발자가 짠 코드 -> 바이너리 코드컴파일 오류컴파일 과정에서 문제가 생겼을 경우문법적 오류없는 변수를 사용인터프리터 언어와 다르게 미리 오류를 잡을 수 있다.인터프리터 언어는 문법적 오류도 런타임에서 생긴다.논리 오류컴파일, 런타임에서 잡히지 않고 실행
movie자료형Boolean : 참/거짓1bit자료의 자료를 2 제곱 수로 어떻게 표현할 수 있는지에 따라 크기가 결정됨정적 타입타입을 한 번 선언하면 변경할 수 없음.java, C (일반적으로 컴파일 언어)컴파일 과정에서 타입을 결정하기 때문에 바꾸기 조금 난감동적
movie컴퓨터는 이진법을 통해 데이터를 처리하므로, 숫자를 정확하게 표현하지 못한다.0.1의 경우 1/2의 양의 제곱수로 나타내므로, 정확한 표현이 안 된다.부동소수점소수점이 떠서 움직인다는 뜻소수점 뒤의 숫자가 커질 수 있으므로 소수점의 위치를 변경함이진수로 소수점
movie문법 오류: 컴파일에서 모두 걸러준다.(컴파일 언어 기준)논리 오류: 프로그래머의 소관하지만 다양한 원인으로 다양한 오류가 생긴다.그것을 대비하기 위해 Execption이 있는 것예외 발생이 되면 플랜B를 만든다. (try-catch)finally은 try-c
movie변수값을 담고, 이름으로 사용동료 개발자들을 위해 이름을 잘 짓는게 중요값을 변경할 수 있다.
movietransport LayerEnd point간 신뢰성 있는 데이터 전송을 담당하는 OSI 계층신뢰성데이터를 순차적, 안정적으로 전달전송포트 번호에 해당하는 프로세스에 데이터 전달신뢰성과 전송이 없다면 데이터 송수신에 대혼란이 생김TCP신뢰성있는 데이터 동신을
movie1\. Physical Layer2\. Data-Link Layer3\. Network Layer4\. Transport Layer5\. Session Layer6\. Presentation Layer7\. Application Layer두 대의 컴퓨터의 통신
movie정적 웹언제나 같은 웹 소스를 보여주는 웹편의점처럼 이미 만들어진 것을 제공서버에서 제공하는 파일이 항상 일정한가? -> YES동적 웹계속해서 변경하는 소스를 제공하는 웹식당처럼 매시간 마다 소스를 처리서버에서는 요청 때마다 제공할 파일을 처리하는가? ->YE
movie도커서버에 환경과 파일을 관리하는데에 큰 도움을 주는 것도커 허브에 파일의 사본을 저장해두어서 언제든지 불러올 수 있음도커의 컨테이너로 분리된 작업공간을 제공(환경 동일)왜 서버의 관리가 필요한가?서버가 변경할 수 있고, 다양한 서비스를 돌리는 다양한 상황이
movie자기 자신을 호출하는 함수 => 반복적인 작업을 수행반복문보다 코드가 단순하고 효율적으로 작성할 수 있는 경우가 있다.반복문보다 성능이나 속도보다 떨어질 수 있다.스택이 계속 쌓여서 문제가 생길 수 있다.
movie기존 프로그래밍과 다르게 파이프라인을 따라 진행됨인풋 -> 아웃풋(알아서 자기일만 함)외부 상황에 전혀 영향을 받지 않는다.매우 안정적이다.선언적이다. (함수도 값으로 봐야함)그렇기 때문에 함수도 다른 함수의 parameter로 넣을 수 있다.
movie테스트 먼저 개발은 그 다음설계 > 테트스 > 코딩tdd 과정\-red: 테스트 실패blue: 성공하도록green: 리팩토릭장점자연스럽게 테스트커버리지가 높아진다.오버엔지니어링 방지내가 필요한 만큼만 딱 개발설계에 대한 피드백이 빠르다.테스트를 통해 피드백이
movie실행 단위: 프로세스 + 스레드 => 한 cpu에서 실행하는 하나의 단위프로세스: 하나의 스레드가 있는 단일 프로세스동시성: 짧은 전환으로 여러 일을 동시에 처리하는 것처럼 보임(동시에 여러 일을 처리X)프로그램: 피자 레시피프로세스: 피자메모리Code, D
movie기존 컴파일 문제C/C++ 컴파일 플랫폼과 타켓 플랫폼이 다르면 실행이 안됨배포 과정에서 문제가 생김해결하기 위해 크로스 컴파일(타켓 플랫폼에 맞게)JavaJVM으로 문제 해결자바 바이트 코드는 타겟 플랫폼에 관계없이 JVM에서 작동타켓 플랫폼이 아니라 JVM
movie객체를 단 하나만 사용해야 하는 경우 ex) 세팅 변수static을 써서 값을 저장객체가 생성되어 있다면 계속 같은 객체를 return모드를 바꿀 때마다 기능이 변경되는 것을 구현 한다고 가정strategy 패턴이 없다면 각 기능을 구현해 놓고, 유지보수도 매
movie: 개발자들이 사용하는 정보를 전달하는 어떤 방식interface: 사용자가 프로그램을 사용할때 사용하는 것REST각 요청이 어떤 것인지 모양만으로도 알 수 있음주소만으로도 기능을 알 수 있음 => URICRUD의 각 기능에 맞게 메소드를 선택해서 사용하는 것
movie비동기꼭 순차적으로 코드를 실행하지는 않음스레드, 프로세스를 멀티로 사용한다는 것동기코드를 순차적으로(하나가 끝나면 그다음) 실행JS에서의 비동기(같은 레벨의 함수로 가정)JS는 싱글 thread라 기본적으로 선형적이다. => JS 엔진WEB API를 통해 A
movie
movie
movie
movie
movie
movie
movie
movie DB 관련있는 데이터들의 조합 하나의 서비스와 관련된(같은 목적) 조직화된 집합(정규화) DBMS 사용자에게 DB를 정의하고 관리하는 기능을 제공 oracal mysql etc metadata: data를 설명하기 위한 data database를 정의하기 위한 것 => catalog data의 유형, 보안 etc query를 ...
movie process 컴퓨터에서 실행되는 프로그램 각각 메모리 공간을 할당 받음 명령어와 data를 갖는다. cpu 명령어를 실행하는 곳 main memory process가 cpu에 실행되기 위해 대기하는 곳 process의 종류 단일 한번에 하나의 process를 사용 단점: 성능이 매우 떨어짐 게임이라도 하나 다운 받으면 컴퓨터...
변수와 메소드 그리고 메모리
DB 그리고 PK와 FK
DB 스키마 설계를 잘 못 하면 생기는 일
쿠키란 무엇일까?
Servlet vs Spring
Spring vs SpringBoot
웹서버 vs WAS
Servlet vs Spring
JPA와 JDBC
movie
web 요청과 응답 과정
HTTPS에 대하여
Spring Been에 대하여
OOP에 대하여
Stream에 대하여
HTTP에 대하여
HTTPS에 대하여
MVC pattern에 대하여
Gradle에 대하여
OAuth 2.0에 대하여 -2
OAuth 2.0 -3
네트워크와 인터넷
B tree의 개념, DB 인덱스
DB 인덱스 핵심
DBCP 개념부터 설정방법까지
리눅스 쉽게 쉽게
도커 쉽게 쉽게
movie운영체제의 서비스를 사용자에게 노출시킴사용자와 커널과의 소통을 가능하게 만들어줌조개 껍데기처럼 감싸고 있다고 해서 쉘운영체제의 핵심하드웨어를 직접 제어사용자가 직접 통제할 수 없다.하드웨어의 자원을 할당하는 역할GUI: 아이콘, 메뉴windowmacCLI: 명
movie:기기들이 데이터를 주고받기 위해 연결된 통신체계기능애플리케이션에 맞는 통신 방법 제공신뢰할 수 있는 데이터 전송네트워크 간 최적의 통신 경로 설정목적지로 데이터 전송노드 간 테이터 전송기능을 기준으로 layer(계층별로)로 나눔왜 생겼나?통신 기능이 제대로
자바의 Immutable 객체
Spring Data JPA 영속성 컨텍스트
JPA N+1 문제!
ORM vs SQL Maper vs JDBC
CPU 스케줄러와 프로세스
우선순위 Queue vs Heap
Stack vs Queue
프로그래밍 언어: 시스템콜, 커널모드
IP주소: 공유기 주소는 왜 항상 같을까?
MAC vs IP vs Port 번호
movie비즈니스 기능이 아닌 부수적인 기능 ⇒ 인프라 로직반드시 필요하지 않고, 전영역에서 나타남중복코드를 만들어낼 가능성이 높아짐비즈니스 코드와 섞여서 이해하기 힘들게 만든다.유지보수를 어렵게 함.이때, AOP를 통해서 부가기능을 관리할 수 있게 함Untitled
movieJpaRepository 사용하지 않음 → 불편해entity 지정도 번거로움자유롭게 Querydsl를 사용할 방법 찾기결론: queryFactory만을 이용해서 Querydsl만 사용할 수 있도록 만든다.if문을 이용하면 복잡해지고 가독성이 떨어짐Boolean
movie: 두 프로그램 간의 메시지를 교환하는 통신 방법현재 인터넷 환경(HTML5)에서 많이 사용되고 있다.양방향 통신데이터 송수신을 동시에 처리가능클라이언트와 서버가 서로가 원할 때 데이터 교환통상적인 Http 통신: 단방향(client의 요청)실시간 네트워킹에
movie영구적으로 데이터를 보관하기 위해서는 Storage에 저장해야함좀 더 빠르게 가져올 수 있도록 Main Memory 넣고 싶다.Redis를 사용하게된 이유Remote dictionary sever외부 + HashMap(Key - Value) + 서버외부에서 키
movie특징: 식별자 결정을 효율적으로 하기 위함Call Stack에 Glovbal Execution Context 쌓임실행된 함수의 Execution Context가 쌓임Hoisting : 선언문이 맨위로 끌어올려진 것 같은 현상JS가 미리 코드를 스캔해서 Rec
movie: 서버와 클라이언트 간 통신을 위한 프로토콜: TCP 통신을 사용Get만 있었고, header도 없었음, 너무 심플header, 상태 코드, content-type 생김매번 새로연결해서 성능이 매우 좋지 않음Persistent Connection 지정한 ti
movie: 자신의 작업을 진행 → 다른 작업이 시작 → 기다림: 다른 작업에 관련없이 자신의 작업을 함⇒ 자신의 일에 대한 제어권을 자신이 갖고 있는지: 동시에 수행하거나, 동시에 끝나거나 → 끝나는 동시에 시작⇒ 결과가 나오는 시점이 중요 순서대로: 시작과 종료가
사전 이해 영상movie1부movie2부movie:multiversion concerrency controlUntitledcommit 된 데이터만 읽는다 (mysql: consistance read)write를 할 때, 해당 transaction만 아는 곳에 값을 저장
movie: CPU/core 에서 실행중인 process/thread가 다른 것으로 교체되는 것필요이유여러 작업을 동시에 실행시키기 위해서언제 발생하나?주어진 time slice를 다 썼음IO 작업을 기다려야함다른 리소스를 기다려야함Context란?process/thr