. '프로그래밍 공부' 카테고리의 글 목록 (2 Page)
본문 바로가기

프로그래밍 공부65

[DB] DB Migration이란 https://life-with-coding.tistory.com/68 [DB] 데이터베이스 마이그레이션 1) 마이그레이션(migration) CRUD(Create, Read, Update, Delete)를 잘 수행하려면, 데이터 베이스 테이블 스키마가 잘 정의되어 있어야한다. 마이그레이션이란, 한 운영환경으로부터 다른 운영환. life-with-coding.tistory.com 2021. 5. 20.
Jooq란? Jooq는 Java의 코드로 DB를 다룰 수 있도록 해주는 도구이다. jooq의 장점 : 여러 db를 붙일 때 좋다. 자유도가 높다. 예 ) 기존 쿼리 SELECT TITLE FROM BOOK WHERE BOOK.PUBLISHED_IN = 2011 ORDER BY BOOK.TITLE Jooq를 활용한 모습 create.select(BOOK.TITLE) .from(BOOK) .where(BOOK.PUBLISHED_IN.eq(2011)) .orderBy(BOOK.TITLE) 2021. 5. 20.
[Lombok] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor @NoArgsConstructor는 파라미터를 필요로 하지 않는 생성자를 만든다. @RequiredArgsConstructor는 일부 파라미터를 필요로 하는 생성자를 만든다. @AllArgsConstructor는 모든 필드에 대해 파라미터를 필요로 하는 생성자를 만든다. https://www.daleseo.com/lombok-useful-annotations/ https://siyoon210.tistory.com/24 https://hyoj.github.io/blog/java/basic/lombok/#lombok-%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0 2021. 5. 20.
Http request 구조 Startline 시작줄은 http method/ 요청 타겟 / http version 으로 구성되어있다. • http methods 에는 GET / POST / PUT / POST 등이 들어간다. • 요청 타겟에는 URL, 프로토콜, 포트, 도메인 등이 들어간다. • http version : 말 그대로 http의 버전이 들어간다. Header General, Request, Entity 등의 여러가지 Header 가 있다. 자세히는 다루지 않겠다. Body Startline이나 Header만으로 정보를 보내기 충분하지 않을 때 사용한다. 대체로 Form이나 JSON 등이 담겨있다. https://velog.io/@teddybearjung/HTTP-%EA%B5%AC%EC%A1%B0-%EB%B0%8F-%.. 2021. 5. 18.
[21.05.18] 공부할 것 http의 구조 restfulAPI postman 2021. 5. 18.
Java의 기본 데이터 형식 데이터 타입 메모리의 크기 특징 byte 1byte -2^7 ~ (2^7-1) (※ 2^7 = 128) boolean 1byte true, false char 2byte 문자 short 2byte -2^15 ~ (2^15-1) (※ 2^15 = 32,768) int 4byte -2^31 ~ (2^31-1) (※ 2^31 = 2,147,438,643) float 4byte ±1.40239846E-45 ~ ±3.40282347E+38, long 8byte -2^63 ~ (2^63-1) (※ 2^63 = 9,223,372,036,854,775,808) double 8byte ±4.9E-324 ~ ±1.79769313486231570E308 Java의 기본 데이터 표시 방식이다. boolean이 1byte인 것.. 2021. 5. 15.
[그리디, 힙] 단속카메라 코딩테스트 연습 - 단속카메라 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 단속카메라 [[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 그리디 문제라고는 하지만, 생각만큼 쉽진 않을 것 같다. 포인트는 두개인 것 같다. '최대한 많이겹치는 경로'랑 '모든 경로를 한 번은 지나쳐 가야한다.' 그렇다면, 출발지 기준으로 sort를 한다. heapify가 괜찮을 것 같다. 그리고 맨 처음 경로를 뽑아내 키값으로 만들고, 그 다음 경로들이 키값에 포함되어 있으면 pop을 한다. 그리고 키값에 포함되어있지 않는 경로가 나올때까지 pop을 한다. 그리고 그 경로가 나왔다면, 그 경로를 새로운 키값으로 하고 같은 행동을 반복한다. .. 2021. 5. 11.
[이분탐색] 징검다리 코딩테스트 연습 - 징검다리 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 징검다리 출발지점부터 distance만큼 떨어진 곳에 도착지점이 있습니다. 그리고 그사이에는 바위들이 놓여있습니다. 바위 중 몇 개를 제거하려고 합니다. 예를 들어, 도착지점이 25만큼 떨어져 있고, 바위가 programmers.co.kr 내가 제일 싫어하는 이분탐색이다. 이분탐색은 항상 어렵다. 사실 어떻게 풀어야 될지도 모를 것 같기 때문이다. 일단 이분탐색으로 업다운 할 것을 정해야한다. 쉬운 이분탐색 문제라면 답으로 구할 것을 이분탐색하겠지만, 이 문제에서는 어떨까? 이 문제의 목적은 '최솟값 중에 가장 큰 값'이다. 일단 바위를 제거하지 않고 순회를 돈다. 예시에선 바위가 [2, 11, 14, 1.. 2021. 5. 10.
Node.js phase 간단 정리 Node.js 특징 - Single-Thread의 non-blocking I/O 이벤트 기반 비동기 방식으로 작동한다. 하지만 Main-thread만 single일 뿐, 실제 작업은 worker threads pool에 있는 스레드들이 작업한다. 흔히 말하는 event loop가 main thread의 별칭이다 (반대로 libuv는 worker threads pool을 의미한다.). 이 event loop는 non blocking 방식으로 일을 처리하기 때문에 빠른 IO 성능을 가진다. 즉 , Event loop이란, Node.js의 메인 스레드로서, 싱글 스레드로 구성되지만 블로킹 될만한 것을 논블로킹 되게 만들어(worker thread로 작업을 넘겨줘서) node.js가 자원대비 효울적으로 충분히 .. 2021. 5. 2.
디자인 패턴 (작업중...) 0. 인터페이스 ㆍ기능에 대한 선언과 구현 분리 ㆍ기능을 사용하는 통로 인터페이스는 메서드의 선언만 하며, 상세한 구현은 클래스에서 한다. 여기서 예를 들어 보자. 이 밑으로 패턴에 대해서 설명할 때 다음과 같이 설명할 것이다. I. 개요 : 패턴에 대한 한줄 설명 II. 원인 : 패턴이 등장한 이유를 설명 III. 특징 : 패턴의 장점 등을 설명 이 위 3줄 자체는 패턴에 대한 설명이 될 수 없다. 구체적인 내용이 없기 때문이다. 하지만, 이 아래로, 패턴에 관해 설명할 때 I. II. III.들을 각 패턴에 맞게 적어야한다. 이 때, 인터페이스를 기반으로 클래스를 통해 구현하는 것이 된다. 1. 생성 패턴 (추상 객체 인스턴스화) 1) Factory Method I. 개요 : 상위 클래스와 하위 클래.. 2021. 4. 28.
객체 지향 프로그래밍이란 객체 지향 프로그래밍이란? Class와 Object의 차이는? Class : Object를 만들어 내기 위한 템플릿 Object : Class에 data를 투입하여 구현해야할 대상 Instance : Object를 메모리에 할당하여 실제로 사용할 때 Instance라고 한다. (object와 Instance는 본질적으로 같지만, class로 이걸 만들 것이다! 라고 생각했을 때, '이걸'이 의미하는 것은 Object이고, class로 이걸 만들었다! 했을 때, '이걸'이 의미하는 것은 Instance이다. 어렵다. 씁.) field와 method란? Field : class 안에서 선언되는 변수를 말한다. field를 선언할 때는 접근 지정자, field의 type, field의 이름, 이 세가지를 정해.. 2021. 4. 27.
HTTPS (대칭키와 비대칭키) youtu.be/H6lpFRpyl14 1. 클라이언트는 랜덤 데이터를 생성해서 서버로 보낸다. 2. 이를 받은 서버는 자신이 만든 랜덤 데이터와 서버의 인증서를 실어보낸다. -> 핸드셰이킹 통신 완료 3. 이 인증서는 서버의 개인키로 암호화가 되어있기 때문에, 브라우저 안에 내장된 CA의 공개키로 복호화가 가능하다. 이것이 가능하면 해당 사이트는 인증받은 사이트인 것이다. 4. 인증서 안에는 서버의 공개키가 있기 때문에 복호화에 성공하면 클라이언트는 서버의 공개키를 가지게 된다. -> 비대칭키 시스템으로 계속 통신하는 것은 연산의 부담이 심하기 때문에 여기서부터는 대칭키 시스템을 사용한다. 5. 클라이언트는 맨 처음 주고받았던 랜덤 데이터를 활용해서 임시키를 만든다. 6. 이 임시키는 서버의 공개키로 암.. 2021. 4. 22.
파일을 열고 읽어보자 원래 파이썬으로 알고리즘을 풀 때, 직접 입력값을 넣고 하나하나 받아가면서 했지만, 이제 머리 좀 찼으니 멋지게 파일로 받아서 풀어보려고 한다. 그래서 이번 시간에는 파일 생성하기에 대해서 공부해볼려고 한다. 04-3 파일 읽고 쓰기 - 점프 투 파이썬 (wikidocs.net) 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net 윗 글에서 보고 배웠다. 파이썬의 open 함수에는 3가지 기능이 있다. 파일 열기 모드 설명 r 파일을 읽기만 할 때 :: 읽기만 가능 w 파일에 쓸 때 :: 기존에 내용이 있어도 다 날리고 새로 씀 a 추가 모드 :: 기존 파일 뒤에 덧붙인다. 여기서 주의해야 할 것은 'w' (귀여운 이모티콘 아님. w임) 일 때, 기존에 내용이 있어도 다 날리고 새롭.. 2021. 4. 19.
[C언어, 웹서버] Echo 클라이언트 (작성 중) Echo 클라이언트는 서버와의 연결을 수립한 이후에 클라이언트는 표준 입력에서 텍스트 줄을 반복해서 읽는 루프에 진입하고, 서버에 텍스트 줄을 전송, 서버에서 echo 줄을 읽어서 그 결과를 표준 출력으로 인쇄한다. Echo의 메인 함수는 아래와 같다. #include "csapp.h" int main(int argc, char **argv) { int clientfd; char *host, *port, buf[MAXLINE]; rio_t rio; if (argc != 3) { fprintf(stderr, "usage: %s \n", argv[0]); exit(0); } host = argv[1]; port = argv[2]; clientfd = Open_clientfd(host, port); Rio_r.. 2021. 2. 1.