링크 계층에서의 전송(1홉 통신) 시 문제 의식 우리가 네이버에서 제공하는 서비스들을 이용하려면 먼저 네이버 서버와 통신을 해야 하고, 그 방법들 중 가장 보편적으로 www.naver.com 의 도메인 주소로 접속합니다. www.naver.com이란 도메인은 DNS 서버에서 매핑되어 있는 네이버의 ip로 바꿔 전송해 줍니다. 즉, 우리는 네이버의 ip주소를 이용해 네이버 서버와 통신을 하게 되는 것이고, 이는 네트워크 계층 통신이라고 이해할 수 있습니다. 실제 네트워크 계층은 Internet Protocol을 이용하고, 이 ip를 통해 멀티홉 통신을 합니다. 하지만 네트워크 통신의 계층적 구조를 생각해 보면, 멀티홉 통신을 하기 위해서는 결국 1홉 통신이 먼저 가능해야 합니다. 어떻게 보면 멀티홉 통신은..
Layered Architecture OSI 7 계층에 대해 공부하기 전에, 우리는 네트워크 통신을 왜 7개나 되는 계층으로 나눈 것인가에 대해 궁금해야 합니다. 이에 대한 답을 우리 일상 생활에서 예를 들어 보겠습니다. 우리가 어딘가로 비행기를 타고 여행을 가야하는 상황이라고 생각해 보겠습니다. 먼저 티켓을 구매하고, 짐을 붙입니다. 그런 다음 게이트를 통과하고 비행기에 탑승 후 목적지로 출발합니다. 목적지에 도착을 하면 전의 과정들을 역순으로 행하면서 공항을 빠져나갑니다. 여기서 우리가 거치는 각각의 단계들은 기능별로 나뉘어 있습니다. 티켓을 사거나 확인하는 작업은 매표소에서 이루어지고, 짐을 붙이는 작업은 체크인 카운터 같은 곳에서 행해집니다. 이처럼 단계별로 행해지는 서비스도 다르고 직원들도 다릅..
소켓이란 소켓은 논리적으로 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 이 말이 무슨 말이냐면, 네트워크를 이용해 데이터를 송수신 하고 싶은 프로그램들은 소켓을 거쳐야 한다는 것이다. 따라서 아래와 같은 위치에 소켓 레이어가 놓이게 된다. 네트워크 응용 프로그램들은 소켓을 거쳐 데이터를 통신 망으로 전달함으로써 데이터를 송수신 하게 된다. 여기서 응용 프로그램은 어플리케이션 계층, 통신 망은 전송계층이므로 소켓은 그 사이에 놓이게 된다. 즉 소켓은 응용 프로그램에서 TCP/IP를 이용하는 인터페이스 역할을 한다. 소켓의 특징 파일과 비슷한 데이터 타입 소켓은 파일 디스크립터와 비슷한 형식의 데이터로 생성과 설정 과정이 끝나면 이를 이용하여 통신과 관련된 다양한 작업을 할 수 있는 간편한 데..
Goals 람다식(Lambda expression)이란? 함수형 인터페이스(Functional Interface) java.util.function 패키지 람다식(Lambda expression)이란? JDK1.8부터 추가된 람다식(Lambda expression)은 메서드를 하나의 식(expression)으로 표현한 것이다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 ‘익명 함수(anonymous function)’이라고도 한다. 람다식 작성 방법 람다식은 메서드에서 이름과 반환 타입을 제거하고, 매개변수 선언부와 몸통 {} 사이에 ->를 추가한다. 예를 들어 두 값 중 큰 값을 반환하는 메서드 max가 있다고 하자. int max(int a, int b) { retur..
Goals DTO란? DTO를 사용하는 이유 DTO란? DTO는 Data Transfer Object의 약어로, 데이터 전송 객체를 의미한다. 다른 말로, 계층 간 데이터 전송을 위해 도메인 모델 대신 사용되는 객체이다. 이때, 계층이란 Presentation(View, Controller), Business(Service), Persistence(DAO, Repository) 등을 의미한다. DTO를 사용하는 이유 그럼 왜 도메인 모델(Entity) 대신 DTO를 사용하는 이유가 뭘까? 관심사의 분리(Separation of Concerns, SoC) 도메인 모델은 Data Access 계층에서 데이터가 저장되는 DB와 직접적으로 관련되어 있는 객체다. 테이블의 구조에 맞게 설계되는 도메인 모델은 초기..
Goals compileClasspath vs runtimeClasspath compileOnly vs runtimeOnly vs implementation compileClasspath vs runtimeClasspath compileClasspath와 runtimeClasspath는 Gradle에서 프로젝트의 의존성 관리를 위해 사용되는 두 가지 중요한 속성입니다. compileClasspath 프로젝트 소스 코드를 컴파일하는 동안 필요한 모든 클래스 파일과 라이브러리를 포함합니다. 컴파일 시간에만 필요한 의존성이 포함되며, 런타임에는 필요하지 않습니다. 이러한 의존성은 빌드 결과물에 포함되지 않습니다. runtimeClasspath 프로젝트를 실행할 때 필요한 모든 클래스 파일과 라이브러리를 포함합..
페이지 처리는 데이터베이스의 종류에 따라서 사용되는 기법이 다른 경우가 많아서 별도의 학습이 필요했다. 예를 들어, Oracle → inline view MySQL → limit JPA는 내부적으로 이런 처리를 Dialect라는 존재를 이용해 처리한다. 때문에 개발자들은 SQL이 아닌 API의 객체와 메서드를 사용하는 형태로 페이징 처리를 할 수 있다. Goals PagingAndSortRepository / Pageable / PageRequest 페이징 처리 정렬 조건 추가 쿼리 메서드와 Pageable 결합 PagingAndSortRepository / Pageable / PageRequest PagingAndSortRepository 인터페이스 Spring Data JPA의 PagingAndSor..
최근에는 Java와 Spring을 공부하고 있습니다. Spring Boot 프로젝트에 MariaDB 드라이버를 추가하려고 검색을 하다가 Maven 저장소에서 드라이버를 선택하면 Gradle 설정 방법을 보여주는 것을 보았습니다. 두 도구가 의존성을 관리하는 방법에 차이가 있음을 한 눈에 알 수 있었지만, 설명하라면 어떻게 해야 할지 잘 모르겠었습니다. 그래서 이번 기회에 두 도구의 차이점을 정리하기로 했습니다. 이전에도 이와 관련하여 공부를 했지만, 그 때는 Maven만 사용해보았고 Gradle은 사용해보지 않았기 때문에 잘 이해되지 않았습니다. 지금은 둘 다 조금씩 이라도 사용해보았기 때문에 다시 한 번 찾아보게 되었습니다. 그러나 아직도 깊이 있는 이해에는 부족함이 있으므로 최대한 쉽게 설명하고자 노..
- JPA
- 선형 회귀
- 지옥에서 온 git
- 방명록 프로젝트
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 버퍼오버플로우
- 파이썬 for Beginner 연습문제
- 리버싱
- 김영환
- 운영체제 반효경
- shell code
- Spring
- Python Cookbook
- 패킷 스위칭
- 스프링 테스트
- 파이썬 for Beginner 솔루션
- Spring Boot
- Thymeleaf
- JUnit
- Gradle
- 쉽게 배우는 운영체제
- jsp
- Spring Data JPA
- BOF
- 스프링
- 프로그래머스
- Computer_Networking_A_Top-Down_Approach
- 쉘 코드
- 생활코딩 javascript
- spring mvc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Total
- Today
- Yesterday