일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Operating System
- 열혈 tcp/ip 프로그래밍
- Spring
- Operating System.
- HTTP
- 김영한
- n타일링2
- 열혈 TCP/IP 소켓 프로그래밍
- Window-Via-c/c++
- OS
- FIFO paging
- TCP/IP
- 제프리리처
- 에러핸들링
- redis
- 10026번
- 스프링 핵심 원리
- Four Squares
- 2475번
- 윤성우 저자
- 운영체제
- inflearn
- 우아한레디스
- BOJ
- 이펙티브코틀린
- 우아한 테크 세미나
- C#
- C++
- 토마토
- 스프링 입문
- Today
- Total
목록분류 전체보기 (206)
나의 브을로오그으
클라이언트 서버 구조 - Request Response 구조 - 클라이언트는 서버에 요청을 보내고, 응답을 대기 - 서버가 요청에 대한 결과를 만들어서 응답 (비즈니스 로직, 데이터 처리 등을 서버에 위임, 클라이언트는 오직 UI 랜더링에만 집중) (게임으로 비유해도 추세가 비슷하다. 과거에는 게임을 할 때 필요한 데이터 등을 클라이언트가 서버로부터 받아오면 특정 로직을 실행하여 랜더링을 했었는데, 현재의 게임은 특정 로직 자체도 서버에서 처리하고 클라이언트는 오직 그에대한 결과만 받아와서 랜더링만을 한다.) 무상태 프로토콜 스테이스리스(Stateless) HTTP의 중요 특징중 하나이다. - 서버가 클라이언트의 상태를 보존 X - 장점 : 서버 확장성이 높다.(Scale out) - 단점 : 클라이언트..
HTTP (HyperText Text Transfer Protocol) (지금은 모든 데이터들을 HTTP 메시지로 전송한다.) - HTML, TEXT - IMAGE, 음성, 영상, 파일 - JSON, XML (API) - 거의 모든 형태의 데이터 전송 가능 - 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 - 지금은 HTTP 시대 HTTP 역사 - HTTP/0.9 1991년 : GET 메서드만 지원, HTTP 헤더 X - HTTP/1.0 1996년 : 메서드, 헤더 추가 - HTTP/1.1 1997년 : 가장 많이 사용, 가장 중요한 버전 (RFC2068(1997) -> RFC2616(1999) -> RFC7230~RFC7235(2014) - HTTP/2 2015년 : 성능 개선 - HTTP/3..
#1. 에코 클라이언트의 완변 구현! 4장에서 했던 내용을 참고하면, 에코 서버보다는 클라이언트에 문제가 있다.] [EchoServer] /* Window */ while((strLen = recv(hSockClnt, message, BUF_SIZE, 0)) != 0) { send(hSockClnt, message, strLen, 0); } [EchoClient] send(hSocket, message, strLen(message), 0); strLen = recv(hSocket, message, BUF_SIZE - 1, 0); message[strLen] = 0; 클라이언트 쪽은 서버쪽에서 보낸 데이터를 100% 수신하지만, 단위에 문제가 있다. 바로 에코 클라이언트는 send()함수 호출을 통해 데이..
목차 - URL - 웹 브라우저 요청 흐름 URI(Uniform Resource Identifier, 리소스 통합 식별자) URI? URL? URN? URI는 로케이터(locator), 이름(name) 또는 둘다 추가로 분류될 수 있다. URI가 더 가장 큰개념임. 모든 자원을 식별하는 식별자다라는 의미. URL은 locator(위치)라는 한정된 범위의 자원을 식별하는 것이고, URN은 name(이름)이라는 한정된 범위의 자원을 식별하는 것이다. 구조 foo://example.com:8088/hello/world/httpworld?name=honggildong#nose URL : foo://example.com:8088/hello/world/httpworld?name=honggildong#nose URN..
목차 1. 인터넷 통신 2. IP(Interanet Protocol) 3. TCP, UDP 4. PORT 5. DNS 인터넷에서 컴퓨터 둘은 어떻게 통신할까? P2P(Pear to Pear)통신(그냥 컴퓨터 2개 연결해서) 통신을 하는 경우에는 그냥 하면 되지만, 멀리 있는 컴퓨터와 통신을 하려면, 인터넷(Internet)을 통해 통신을 해야하는데 인터넷 안에는 수많은 중간 노드(컴퓨터)들이 있고, 이런 수많은 노드(컴퓨터)들을 통해서 어떻게 목적지까지 안전하게 도착할까? 그것을 아는것이 중요하다!! 멀리 있는 컴퓨터로 데이터를 보내고 싶다면 어떻게 해야 할까? 먼저 각 컴퓨터를 구분 할 수 있는 IP Address(Internet Protocol Address)라고 하는 주소를 가져야 한다. 우리가 네..
생성자 주입을 선택해라 최근 DI 프레임워크에서는 대부분 생성자 주입을 권장한다. 불변 - 대부분의 의존관계 주입은 한번 일어나면 어플리케이션 종료시점까지 의존관계를 변경할 일이 없다. 오히려 대부분의 의존관계는 어플리케이션 종료 전까지 변하면 안된다. - 수정자 주입을 사용하면 누군가 실수로 변경될 수도 있다. 이것은 좋은 설계 방법이 아니다. - 생성자 주입은 객체 생성시 1회 호출되므로 불변 설계가 가능하다. 누락 - 순수 자바 코드를 단위 테스트 하는 경우, public class OrderServiceImpl implements OrderService { private MemberRepository memberRepository; private DiscountPolicy discountPolic..
옵션 처리 주입할 스프링 빈이 없어도 동작해야 할 때가 있다. 그런데 @Autowired만 사용하면 required옵션의 기본값이 true로 되어 있어서 자동 주입 대상이 없으면 오류가 발생한다. - 자동 주입 대상을 옵션으로 처리하는 방법 * @Autowired(required = false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨. * org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null 입력 * Optional : 자동 주입할 대상이 없으면 Optional.empty가 입력됨. @Autowired(required = false) public void setNoBean1(Member member) { System.out.print..
다양한 의존관계 주입 방법 - 생성자 주입 - 수정자 주입(setter 주입) - 필드 주입 - 일반 메서드 주입 생성자 주입 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy =..
컴포넌트 스캔과 의존관계 자동 주입 시작하기 - 지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. - 예제에서는 몉개가 안되었지만, 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고, 누락하는 문제도 발생한다. - 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. - 또 의존관계도 자동으로 주입하는 @Autowired라는 기능도 제공한다. [AutoAppConfig] package hello.core; import org.springframework.context.annotation.ComponentScan; import ..
#1. TCP와 UDP에 대한 이해 인터넷 프로토콜 기반 소켓의 경우, 데이터 전송 방식에 따라 TCP 소켓(스트림 기반 소켓)과 UDP 소켓으로 나뉜다. TCP(Transmission Control Protocol)의 약자로써 데이터 전송과정의 컨트롤 이라는 뜻을 담고 있다. TCP/IP 프로토콜 스택 APPLICATION Layer > TCP Layer, UDP Layer > IP Layer > LINK Layer 이렇게 인터넷 기반의 효율적인 데이터 전송이라는 커다란 하나의 문제를 하나의 덩치 큰 프로토콜을 4개의 계층으로 나누어서 설계. (참고로 각 Layer는 물리적인 장치일수도 있고 소프트웨어이기도 하다.) OSI 7Layer 데이터 통신에 사용되는 프로토콜 스택은 7계층으로 세분화된다. 그러..