| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 알기쉬운 알고리즘
- Graph
- Stack
- 메모리구조
- C programming
- stream
- Selection Sorting
- 이것이 자바다
- 윤성우의 열혈 자료구조
- s
- buffer
- 혼자 공부하는 C언어
- list 컬렉션
- insertion sort
- C 언어 코딩 도장
- datastructure
- 이스케이프 문자
- 윤성우 열혈자료구조
- Serialization
- JSON
- R
- coding test
- Algorithm
- Today
- Total
목록전체 글 (516)
Engineering Note
프로그래밍은 운동이다. 이론이 아니라 몸을 직접 움직이며 익혀야 하는 운동처럼 우선 코드로 먼저 익히고 동작원리를 나중에 습득하는게 훨씬 효과적으로 프로그래밍을 잘할 수 있는 방법이다. 이건 코드관련 책을 읽을 때도 마찬가지다. 원리를 파악하겠다고 무작정 첫 장부터 밑줄 긋고 꼼꼼하게 읽는다면 프로그래밍 실력은 전혀 늘지 않을 것이다. 프로그래밍 실력을 높이고 싶다면 일단 코드를 쳐야 한다. 백문이 불여일타다. 코드를 치고 코드가 익숙해졌다 싶으면 그때 저자의 설명을 읽어보는 게 도움이 된다.공식문서를 읽을 때는 조금 다를 수 있는데 만약 공식문서를 통해 배운다면 이 공식문서에서 다루는 기술이 어떤 기술인지 원리적인 부분을 설명하는 파트와 퀵스타트 처럼 파트가 나뉘어 있어서 이 부분을 구분해서 읽으면 좋..
Reader 객체문자 데이터가 외부에서 Java 애플리케이션으로 들어오는 스트림(흐름)을 읽어오는 책임을 맞는 객체외부에서 들어오는 문자데이터를 자바 프로그램이 사용할 수 있도록 연속적으로 읽어오는 역할.abstract classReader 객체 자체는 Buffer기능이 없음. BufferedReader 객체inputStream으로 부터 텍스트를 읽는 역할extends ReaderReader 객체에 버퍼기능을 더해 입출력 성능을 향상 시킨 객체 InputStreamReaderbyte 입력 스트림을 문자 입력 스트림으로 변환하는 역할즉, "0101010...(byte)"를 "글자(String)"로 바꿔줌extends Reader [InputStream] (byte) |[InputStreamRea..
웹기반 채팅프로그램을 만들려면 WebSocket을 이용해야 한다. Java에서는 WebSocket 객체를 통해 WebSocket 통신을 지원하는데, 기존의 Socket 통신과의 차이가 궁금해서 이번 기회의 정리해보려고 한다. WebSocket은 브라우저 위에서 동작하는 소켓 프로그램을 개발할 때 사용한다. 그런데 브라우저는 기존 Socket 통신을 지원하지 않는다. 예를 들면 아래 같은 코드는 브라우저에서 동작하지 않는다.// 이런 건 브라우저에서 불가능!const socket = new net.Socket();socket.connect(12345, "127.0.0.1"); // X Web은 기본적으로 HTTP 기반으로 동작하는 네트워크 어플리케이션이다. 그래서 WebSocket도 처음 클라이언트가 요청..
case1 client 입장에서 server로 비동기 통신 보내면서 비동기 통신 익히기 case2 server to server API 통신으로 비동기 통신 익히기 case 2-1 보내는 server case 2-2 받는 serverCASE1 client 입장에서 server로 비동기 통신 보내면서 비동기 통신 익히기 먼저 동기 통신으로 서버에 요청을 보내고 브레이크 포인트를 걸면서 동기 통신 동작과정을 브라우저에서 확인해보았다. 1.먼저 요청을 받을 endpoint를 만들어 준다.package com.staging.excercise.controller;import org.springframework.web.bind.annotation.*;@RestController@RequestMapping("/..
[1단계] TCP Server/Client 기본 연결(완료)ServerSocket, Socket 사용클라이언트가 서버에 접속하면 “연결됨” 메시지 출력[2단계] 텍스트 1:1 송수신(완료)서버: 클라이언트가 보낸 메시지 읽고 콘솔에 출력클라이언트: 키보드 입력을 서버에 전송, 서버 응답 받음[3단계] 서버에서 여러 클라이언트 관리서버에서 연결되는 클라이언트마다 Thread로 관리서버가 모든 연결된 클라이언트에 메시지 브로드캐스팅[4단계] 클라이언트-클라이언트 채팅한 클라이언트가 메시지 보내면, 서버가 전체 클라이언트에게 메시지 전달콘솔에 “닉네임: 메시지” 형태로 출력Socker 통신 흐름클라이언트에서 Socket("127.0.0.1", 12345) 생성↓TCP 연결 시도 (3-way handshake ..
직렬화(Serialization)- Java Object(객체)를 Byte Stream(바이트 스트림)으로 변환하는 과정 직렬화는 하는 이유- Java Object는 JVM이 정한 규칙에 따라 메모리에 저장되어 있는데 이는 외부(OS, 네트워크)에서 해석할 수 없다. 외부와 데이터를 주고받기 위해서는 직렬화 규칙에 따라 연속적인 바이트 흐름(스트림)으로 변환하는 과정을 거쳐야 한다. - 직렬화한 바이트 스트림은 OS가 읽어서 파일로 저장하거나 네트워크로 내보낼 수 있다.
1. docker-compose.yml 파일 만들기2. docker-compose.yml 파일 작성version: '3'services: zookeeper: image: bitnami/zookeeper:latest ports: - "2181:2181" environment: - ALLOW_ANONYMOUS_LOGIN=yes kafka: image: bitnami/kafka:3.4 ports: - "9092:9092" environment: - KAFKA_BROKER_ID=1 - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - KAFKA_CFG_LISTENERS=PLAINTEXT://:..
요청메세지 구성 요소- 요청 라인(Request Line) - 헤더(Header)- 빈줄- 본문(Body) 요청라인- HTTP 메서드, path(URL), HTTP 버전 요청 헤더- HTTP메시지에 대한 추가 정보 제공.- Host 정보, User-Agent(접속하고 있는 사용자의 정보) 등이 있다. 빈 라인- 헤더와 본문을 구별하기 위해 사용 본문- 메세지의 가장 마지막에 들어가는 요소, 회원 가입 등 내 정보를 서버에 보내고 싶을 때 사용. 참고 자료 : 그림으로 쉽게 이해하는 웹/HTTP/네트워크(위키북스 임지영)