본문 바로가기

프로그래밍

(32)
[스프링 입문] 회원 관리 예제 - 백엔드 개발 시작에 앞서 이 글은 인프런 김영한 님의 강의를 정리하며 쓴 글입니다. 웹 백엔드를 공부하시는 분이라면 꼭 김영한님의 강의를 들어보시길 추천합니다. 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 레포지토리 구현 먼저, 데이터 저장소가 어떤 것을 사용할지 아직 정해지지 않았으므로, 우선은 레포지토리 인터페이스를 설계합니다. public interface MemberRepository { Optional findById(Long id); Optional findByName(String name); List findAl..
[운영체제] External Fragmentation (외부 단편화) 이번에는 저번에 마지막으로 배웠던 mapping 에 관한 문제를 먼저 얘기해보자. 논리적주소를 설명하면서 mapping의 개념을 배웠다. 이를 '할당'한다는 개념이라 설명하였다. 여기서 연속 할당이란 논리적 주소에 동일한 base register를 더해주는 것이다. 우리는 연속 할당의 문제점에 대해 얘기를 할 것이다. 외부 단편화 (External Fragmentation) 일단 두가지 용어를 알아야 한다. Partition Hole 아래의 예시를 통해 개념을 알아보자 운영체제는 Hole 을 제외한 파티션의 개수만큼 동시 실행이 가능하다. 만약 새로운 프로그램을 실행하려 하는데, 요구하는 프로세스의 용량이 Hole의 크기보다 크면 메모리에 올라갈 수 없어 실행되지 못한다. F는 실행 가능할까?? 불가능하..
[운영체제] 주소공간( Address Space, Memory Management ) 우리는 한정된 메모리 공간을 효율적으로 관리할 수 있어야 한다. (메모리 단가가 있다보니...) 어떻게 효율적으로 관리할 수 있을지 알아보고 고민해보자! 주소 공간 (Address Space) CPU는 주소값을 통해 메모리에 접근한다. 많이 들었던 주소값이 이에 해당하고 메모리의 단위는 바이트(byte)이다. 그래서 주소 한 칸은 1 byte의 데이터를 저장할 수 있다. Physical Address(PA) 메모리를 큰 저장장치라고 생각하자. 단순히 큰 배열일 뿐이다. 배열이기 때문에 인덱스값을 가지는데, 이 값을 물리적 주소라고 한다. 논리적 주소도 마저 알아보고 간단한 예시를 통해 개념을 구체화 시켜보자. Logical Address(LA) 논리적 주소는 쉽게 말해 CPU 입장에서의 메모리 주소, 프..
[운영체제] Dead lock https://steady-coding.tistory.com/520 [운영체제] Deadlock cs-study에서 스터디를 진행하고 있습니다. Deadlock이란? 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태를 뜻하며, 교착 상태라고 부른다. 두 개 이상의 작업이 서로 작업이 끝나기 steady-coding.tistory.com Deadlock 이란? 이는 동기화 문제에서 이어진다. 교착상태라고도 하며, 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태를 말한다. 교착상태라고 하며, 두 개 이상의 작업이 서로 작업이 끝나기만을 기다리기 때문에 결과적으로 아무것도 완료되지 못한다. deadlock 발생 조건 4가지가 존재한다. 4가지 모두 만족해야 교착상태가 발생한다. 상호 배..
[네트워크] network layer - Data Plane(Router) 1 네트워크 계층의 역할 ? 송신 호스트에서 수신 호스트로 패킷을 전달하는 것이다. 이를 위한 두 가지 중요 기능을 알아야 한다. forwarding and routing fowarding(전달) : 패킷이 라우터의 입력 링크에 도달했을 때 라우터는 그 패킷을 적절한 출력 링크로 보내야한다. 라우터의 입력 링크에서 출력 링크로 어덯게 패킷을 전달하는지 Routing : 패킷을 전송할 때 패킷 경로를 결정해야한다. 이러한 경로를 계산하는 알고리즘을 routing algorithm 이라 한다. 둘이 비슷해 보이지만 포워딩은 라우터 입력 링크에서 적당한 출력 링크로 전송하는 내부적인 동작. 라우팅은 전반적인 경로를 결정하는것이다. network layer : data plane, control plane Data..
네트워크 (8) - 웹 캐싱(Web caching,proxy server) client 가 서버에 멀리 있다면 응답속도나 많은 점에서 단점이 존재한다. 우리는 그 문제를 해결하기 위하여 proxy server를 활용하고, 오늘은 이에 대해 알아보자. web cache client가 멀리 있는 origin server까지 가지 않고 가까운 proxy server의 web caches 파일에 접근하여 원하는 파일을 받아오는 기술이다. - client가 proxy server에 접근해 caches file이 있는지 본다. => caches가 있으면 proxy server에서 데이터를 받아온다. => caches가 없으면 proxy server는 origin server로부터 데이터를 요청하여 받아온다. 받은 데이터는 proxy server에 저장된다. 그리고 client에게 데이터를..
네트워크(7) - 쿠키 ( Cookie ) 우리가 인터넷을 사용하면 쿠키를 통해 정보가 저장되거나 혹은 쿠키를 삭제하는 일을 한번씩 겪어봤을 것이다. 오늘은 이 쿠키에 대해 다뤄볼 것이다. Cookie? 앞서 우리는 저번 포스트에서 Http 에 대해 많은 것을 다뤘다. 큰 특징 중 하나에 대해 기억해보자면 http는 stateless 하여 유저의 어떠한 정보도 기억하지 않는다는 것이었다. 좋은 점도 물론 있겠지만, 이에 대한 단점으로는 user의 id나 정보를 읽을 수 없다. 그래서 콘텐츠 제공, 차단 등과 같은 서비스를 제공하지 못한다. 그래서 우리는 state를 저장하고 있는 쿠키를 사용한다. 이 덕분에 사용자 정보를 읽어와 사용자 식별, 콘텐츠 제공등이 가능하게 된다. Cookie의 네가지 요소 일단 아래의 그림을 보자 일단 쿠키 기술은 네..
네트워크(6) - Web and HTTP 1990년대 초, 새로운 애플리케이션인 world wide web(www)이 등장했다. 웹의 등장으로 이전과 다르게 사용자들은 그들이 원할 떄 원하는것을 수신할 수 있게 되었다. 이를 on-demand 방식이라 하는데 이것은 라디오 처럼 제공자의 시간에 우리가 주파수를 맞추어야 하는것과 다르다. HTTP는 웹의 애플리케이션 계층 프로토콜이다. 이 덕분에 우리는 웹 페이지를 자유롭게 식별가능하게 되었다. 다시말해, HTTP는 클라이언트가 웹 서버에게 웹 페이지를 어떻게 요청하는지와 서버가 클라이언트로 어떻게 웹 페이지를 전송하는지 정의한다. 이번글은 이에 대해 알아보도록 할 것이다. HTTP 우리가 주소를 검색할때 생략하는 http는 웹에서 사용되는 web application layer protocol ..