분류 전체보기

HTTP/모든 개발자를 위한 HTTP 웹 기본 지식

인터넷 네트워크(TCP,UDP,PORT,DNS)

TCP(Transmission Control Protocol) 앞서 살펴본 IP의 단점을 보완해주는 프로토콜 계층이다. TCP는 어떻게 IP의 단점들을 해결할 수 있을까? TCP에서는 출발지 PORT, 목적지 PORT , 전송 제어, 순서, 검증 정보 등을 패킷에 포함시킨다. 해당 정보들을 이용하여 아래에서 살펴볼 행동들을 지원해준다. 연결 지향 - TCP 3 way handshake(가상 연결) 해당 방식은 물리적으로 연결된 것이 아니라 개념적으로만 연결된 것이다. 앞서 살펴본 IP의 비연결성의 단점을 보완해준다 데이터 전달 보증 IP의 비신뢰성을 보완해준다. 해당 방식은 클라이언트가 서버에게 데이터를 전송했다면 서버에서는 데이터를 받았다고 응답 결과를 return 해준다. 순서 보장 해당 방식도 IP..

HTTP/모든 개발자를 위한 HTTP 웹 기본 지식

인터넷 네트워크(인터넷통신, IP)

모든 개발자를 위한 HTTP 웹 기본 지식 을 듣고 정리한 내용이며 모든 그림 예제는 해당 강의에서 가져온 내용입니다. 항목 인터넷 통신 IP(인터넷 프로토콜) 인터넷 통신 클라이언트와 서버는 어떻게 통신할까? 만약 클라이언트와 서버가 가까이 붙어있다면 다음과 같이 선을 연결하여 통신하면 될 것이다. 하지만 대부분 99.9% 는 서버와 클라이언트는 붙어있지않고 우리는 인터넷 망을 이용하여 서버와 통신을 하게된다. 인터넷 망은 매우 복잡하기 때문에 우리의 요청이 안전하게 서버까지 도달하기 위해서는 복잡한 과정을 거쳐야 한다. 따라서 이번 챕터에서는 위에서 말한 복잡한 과정에대해 자세히 알아보자. IP(인터넷 프로토콜) 먼저 인터넷 프로토콜에 대해서 알아보기 전에 이해하기 쉽게 예를 들어보자. 현실 세계에서..

나만의공부(이슈정리)

어느 패턴을 사용해야 정답일까요??

게시판 통합 댓글 기능을 만들면서 생각했던 고민과 코드 구조에대해 말하고자 한다. 해당 기능의 목표는 Board 와 댓글간 연관 관계는 없다. 단 Reply Table 에서 각각의 Board 의 ID 와 Type 정보를 들고 있으며 게시글을 조회해오고 싶을때 Board ID 와 Type 에 맞는 row를 반환 할 수 있도록 하였다. 이에 따른 Reply Save 구조를 살펴 볼 것 이다. 소스코드를 먼저 살펴보자. @Service @RequiredArgsConstructor @Transactional public class ReplyService { public ResponseReply replySave(Long boardId, RequestSaveReply requestSaveReply){ //TODO..

나만의공부(이슈정리)

어설픈 객체지향은 안티패턴을 만들어낸다.

어설픈 객체지향은 안티 패턴을 만들어낸다. 스터디 프로젝트를 진행하면서 받았던 리뷰를 한번 정리하고자 합니다. 필자는 프로젝트를 진행하면 최대한 객체지향 적 코드를 짜려고 시도를 해봤다. 그중 공부하면서 보았던 Tell, don't ask 원칙(TDA 원칙) 즉 객체에게 물어보지 말고 시켜라는 의미가 있다. 해당 글을 읽고 내가 평소에 짜던 코드 방식을 다시 생각하는 시간을 가졌다. 따라서 해당 원칙을 사용하면서 안티패턴을 만들어낸 상황과 해결방법을 공유하고자 한다. 책임을 확실하게 구분하자. TDA 원칙을 따르면서 내가 간과한 부분은 객체에 대한 책임을 확실하게 구분하지 않았다. 우선 예제를 보자.(컨트롤러는 중요하지 않으니 생략하겠습니다.) //.. 롬복 생략 public class UsedItemR..

Java/live-study

[JAVA] 백기선라이브스터디 15주차 람다식

​ 목표 자바의 람다식에 대해 학습하세요. 학습할 것 (필수) 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식 사용법 자바 8 이후부터 인터페이스 내에 추상메서드가 단 하나만 존재하게 되면 람다표현식을 사용 할 수 있다. @FunctionalInterface public interface Foo { void Hello(String msg); // abstract 생략되어있습니다. 이제 다아시죠..? } 다음과 같이 인터페이스 내에 추상메서드가 단 하나만 존재하는 인터페이스를 함수형 인터페이스라고 말합니다. 그럼 함수형 인터페이스를 지원하기전 즉 자바 8 이전에는 무엇을 사용했을까요 ? 다음과 같이 익명클래스 를 사용했습니다. public static void..

Java/live-study

백기선 라이브스터디 14주차 : 제네릭

학습할 것 (필수) 제네릭 사용법 제네릭 주요 개념 (바운디 드 타입, 와일드카드) 제네릭 메서드 만들기 Erasure 제네릭 사용법 제네릭 사용법은 간단하다. 다이아몬드 연산자()에 타입을 정의해주면 끝이다. 하지만 코드를 보다보면 ... 등 여러가지가 존재하는 것을 보았다. 해당 E,T,K ... 등은 무슨 기능이 있는건 아니다. 따라서 원하는 값을 넣어줘도 되긴 하지만 하지만 자바에는 제네릭 명명 규칙이 있는데 다음과 같다. E : 요소(element) K : 키(key) N : 숫자(Number) T : 타입(type) V : 값(value) S, U, V : 2,3,4번째 선언된 타입 해당 규칙은 코드를 이해하는데에 도움을 준다. 따라서 무조건은 아니지만 규칙이 있으니 따라주자. 제네릭 장점 제..

Book Review/effective-java

[ITEM42] 익명 클래스보다는 람다를 사용하라

ITEM 42 익명 클래스보다는 람다를 사용하라 자바 8 이전에는 다음과 같이 익명 클래스를 사용했다. @Test @DisplayName("자바8 이전에 사용하던 익명클래스") void anonymousClass() { List word = new ArrayList(List.of("ab","abc","a")); Collections.sort(word, new Comparator() { @Override public int compare(String o1, String o2) { return Integer.compare(o1.length(), o2.length()); } }); } 하지만 자바 8 이후부터 인터페이스 내에 추상 메서드가 단 하나만 존재하면 람다식을 사용할 수 있게 되었다. 위에서 사용하던 ..

Book Review/effective-java

[ITEM22] 인터페이스는 타입을 정의하는 용도로만 사용하라

ITEM 22 인터페이스는 타입을 정의하는 용도로만 사용하라 서론 클래스가 어떤 인터페이스를 구현한다는 것은 자신의 인스턴스로 무엇을 할 수 있는지를 클라이언트에 얘기해주는 용도로만 사용해야 한다. 용도에 맞지 않은 인터페이스 사용 예를 들어 상수 인터페이스가 있다. public interface PhysicalConstants { // 아보가드로 수 (1/몰) double AVOCADOS_NUMBER = 6.022_140_857e23; // 볼츠만 상수 (J/K) double BOLTZMANN_CONSTANT = 1.380_648_52e-23; // 전자 질량(kg) double ELECTRON_MASS = 9.109_383_56e-31; } 클래스 내부에서 사용하는 상수는 외부 인터페이스(상수 인터페..

jay Joon
'분류 전체보기' 카테고리의 글 목록 (4 Page)