(Day 60) JDBC와 DB 모델링에 관하여
PDF Review DB 모델링에 대해서 도서관이나 수족관같이 엄청난 하중을 지탱해야 하는 경우 구조상 슬래브나 컬럼 단면이 일반 주거용 건물과는 달라지게 된다. 소프트웨어도 목적에 따라서 DB가 달라진다. 요구-개념-논리-물리 제3정규화 제3정규화는 이행적 함수 종속성이라는 용어가 나오면서 사람들이 쉽게 이해하는 것을 방해한다. 아래는 C...
PDF Review DB 모델링에 대해서 도서관이나 수족관같이 엄청난 하중을 지탱해야 하는 경우 구조상 슬래브나 컬럼 단면이 일반 주거용 건물과는 달라지게 된다. 소프트웨어도 목적에 따라서 DB가 달라진다. 요구-개념-논리-물리 제3정규화 제3정규화는 이행적 함수 종속성이라는 용어가 나오면서 사람들이 쉽게 이해하는 것을 방해한다. 아래는 C...
TIL DBA는 훨씬 배우는 게 많다. InnoDB 최적화, 클러스터링, 메모리테이블 등등등 세부 주제가 더 많다. 적당한 DDL DMS DQL 작성하는 건 백엔드 엔지니어의 소양인데, java로 치면 DBA에게 그것은 리터럴을 배운 정도이다. 데이터를 어떻게 저장할지, 퍼포먼스 스키마들의 변수들이 무엇을 의미하고 어떻게 활...
변수를 활용하기 아래 두 코드는 동일한 일을 하지만, typeNum이라는 변수를 활용하는 경우 코드를 읽기 훨씬 쉽다. 작성하거나 수정할 때도 더 용이하게 할 수 있다. for(int i = 0; i < 3; i++) { s = sc.next().charAt(0); t = sc.nextInt(); ...
Mini Project 소감 CLI도 디자인에 따라 느낌이 많이 달라지는구나 데이터 모델링 데이터 모델링을 신입에게 시킨다면 사실 미친 회사. 어디에 FK를 잘못 박는다거나 하면 아주 잘못된 결과가 발생할 것. SI 파견에서 단가때문에 경력 뻥튀기를 하는 잘못된 관행 (신입인데 중급으로 보낸다던가, 3~4년차인데 고급으로 보낸다던가) 뻥을 ...
PDF 24년의 1월이 다 갔다.. 코드트리 아주 열심히 하는 중..! Review SQL 문법 복습이 아주 많이 필요한 부분… 배웠던 건데도 오랜만에 보니 손에 잡힐듯 말듯 하다.
Assignment DBMS와 통신하는 java App 클라이언트 프로그래밍하기 CLI 환경에서 동작 메뉴 및 메뉴가 소속되는 그룹은 Composite Pattern 적용 JDBC Type4 Driver 적용 DAO 분리 Handler 분리 VO 분리 아직 도메인은 분리되지 않음 무엇을 만들 것인가? 어떤 데이터를...
PDF 24년의 1월이 다 갔다.. 코드트리 아주 열심히 하는 중..! Review DB’s Client 클라이언트마다 연결되는 스레드마다 설정이 있다. DBMS 라이센스에 따라 스레드 개수를 제한한다…!! (동시 커넥션 수 제어…) 근데 유저가 그걸 임의로 변경할 수 있다. 유저 세션 개수를 늘릴 수 있다는 거...
PDF 벌써 1월의 마지막 날이다. Review SQL 테이블의 생성, 변경, 삭제 null 값 허용/비허용 Column type (자료형) key candidate primary unique alternate artificial (surrogate) ...
PDF Review TIL SQL(Structured Query Language) 구조적 질의 언어라고 번역되는 SQL은 쉽게 말하면 DBMS에게 내릴 명령을 작성하는 프로그래밍 언어이다. SQL은 C, java, python 같이 통일된 컴파일러나 인터프리터가 있는 언어가 아니다. DBMS 제작사마다 어떤 SQL 명령은 지원하고, SQL 문법에 존...
PDF 이번 강의는 따라가느라 적은 내용이 상당히 적다… 반 강제적으로 한번 지식을 주입받았으니 내가 책이나 예제들을 보고 다른 포스팅을 남기면서 채워야겠다. Review DBMS Programming MySQL 설치 / 설정 사용자 등록 권한 설정 DBMS 프로그래밍이란? DBMS와 직접 통신...
PDF TIL Framework Netty ExecutorService와 같이 스레드풀 관리를 위한 API가 있듯이, 서버 관리를 위한 프레임워크가 있다. 한국인 개발자가 만들었다!! DBMS 아주 자세한 설명 Database는 번역이 필요없어진 외래어다. 데이터베이스는 아주 간단하게 말하면 데이터를 모아둔 것이다. DBMS는 Database M...
PDF Review Thread Life Cycle start() -> Running (able to use CPU resource) sleep() -> Not runnable (reject/unable to use CPU resource) When end the call of method -> Dead ...
PDF Review 클라우드에 리눅스 서버 생성하기 VPC (Virtual Private Cloud) 설정하기 ACL 설정하기 (Access Control List) Subnet mask 설정하기 (VPC 안에서 사용할 비트) 서버 생성하기 Server ACG 설정하기 (Acce...
PDF Review CO/CL DNS 서버와 야코 순간 이게 생각났다. 알아? 몰라! 알아? 몰라! 알아? 몰라! 알아? 알아! Kids now, Kids then ISP 가 제공하는 DNS 서버에 물어보고, DNS 서버는 모르면 하위 서버에 물어보고, 하위 서버는 모르면 또 하위 서버에 물어보고, 이렇게 계속 물어보고 찾으면 IP주소를 반환하고! ...
PDF 강의 내용 2024년 1월 22일, 월요일 오늘은 교육센터에서 PC가 업그레이드와 함께 스토리지가 초기화되었다. 나는 내 소유의 랩탑들을 쓰고 있어서 환경을 재구성할 필요는 없었지만, 혹시라도 이 컴퓨터를 사용할수도 있는 다른 훈련생들을 위해, 연습겸 개발환경을 구성했다. SDK 기반으로 JDK 설정함 가장 범용성 높...
Review I/O Stream 스트림: 데이터가 단방향으로 흘러가는 (전송되는) 것 ByteStream VS CharacterStream 둘 다 스트림이라는 것은 공통점 바이트단위로만 읽고 쓰거나, 자료형에 맞춰서 읽고 쓰거나의 차이 즉 입출력의 단위가 핵심적인 차이 Reader/Write...
Review CO/CL Connection Oriented VS Connection-less 차이 : 연결이 있어야 통신이 가능하냐? 연결이 일단 되어야(검사를 해야) 통신이 가능하면 CO 이다. 연결 여부와 관계없이(검사 없이) 통신이 가능하면 CL 이다. 그럼 연결, 정확히는 연결 검사를 어떻게 하나? 여기서 3-way Handshake 혹은 4...
Review Network Proxy Stateful, Stateless 한번 요청하고 연결을 계속 유지하는 경우, 즉 상태(State)를 유지하는 경우는 Stateful 통신이다. 한번 요청을 처리하고 연결을 끊고, 필요시 다시 연결하도록 하는 경우는 Stateless 통신이다. ServerSocket의 대기열과 accept() 메서드의 동...
Review Proxy Pattern (GoF) Proxy는 라틴어 단어 “procurator”에서 파생된 단어이며, “Procurator”는 “대리인”이나 “대리인으로서 행동하는 사람”을 의미함. 한국어로 번역하면 대리인 정도가 될 수 있음. Proxy는 컴퓨터 과학 분야에서 주로 사용되며, 네트워크 통신, 보안, 캐싱 등 다양한 컨텍스트에서...
Review Socket Socket을 이용하여 클라이언트/서버 애플리케이션을 만들기 Socket에 입출력 스트림을 연결하여 데이터 송수신하기 인터페이스의 활용 변수도 객체도 전부 인터페이스를 타입으로 쓴다. 그 인터페이스의 규칙에 따라 만든 것을 쓰겠다는 의미로, 코드의 유연성을 높이려는 목적이다. 이렇게 되면...
Review DAO 왜 썼니? (무슨 역할(목적)?) 이전에 핸들러는 UI처리 (콘솔 입출력) 및 데이터 처리 코드가 한 클래스 안에 있었다. 그러면 유지보수가 너무너무너무 힘들어진다. (=불가능해진다.) UI처리를 콘솔 입출력에서 GUI로, 혹은 웹 페이지로 변경한다면 그 때마다 데이터 처리 코드도 수정이 되어야 하는 것이다. 반대로 데이터 처리 코...
Review Generic 제네릭이란? 타입에 종속되지 않는 메서드와 클래스를 만들어 동일 기능을 여러 타입에 대해 보편적으로 사용할 수 있게 해주는 문법이다. 다르게 말하면, General, 범용적인 클래스와 메서드를 만들 때 쓰는 문법이 generic이다. 줄여 말하면, 범용 클래스를 제작하는 전용 문법이다. 제네릭의 사용법? <> ...
Review Terminology Functional Interface Lambda Grammer Static Method Reference Instance Method Reference Constructor Reference forEach( [lambda] ) 람다 문법과 메서드 레퍼런스 문법은 별개의 문법이며, 모두 functional in...
복습 JSON Library GSON jackson-databind Builder Pattern (GoF) Factory Method 보다 복잡한 옵션을 설정하여 인스턴스를 생성하려고 할 때 사용 만드려는 객체(레퍼런스 변수) = new 빌더().옵션설정(옵션).옵션설정(옵션).create(); 어… 그러면 빌더().create()만 하면 팩토리 메...
복습 Serialize / Deserialize 객체를 SSD, HDD 등의 스토리지에 저장하려면, 저장할 수 있는 형식으로 변경해야 한다. 그래서 일련의 바이트 배열로 변경하는 경우가 있는데, 이것을 Serialization이라고 표현한다. 그렇게 출력하고 저장한 바이트 배열을 읽어들여서 다시 인스턴스를 생성하는 과정은 Deserialization이...
복습 버퍼 사용의 이유 버퍼를 쓰는 이유가 뭔가? 버퍼를 쓰는 이유는 프로그램을 더 빠르게 만들기 위함이다. 버퍼를 쓰면 왜 빨라지나? 컴퓨터는 cpu가 메모리를 다룰 때는 엄청 빠른데, 외부 저장장치에 접근하여 읽거나 쓸 때는 그에 비해서 엄청 느리다. 그래서 메모리 입출력의 횟수를 줄이기 위해서 버퍼라는 임시 저장공간을 메모리에 만들어서 우선 거기...
복습 파일 입출력 파일로 문자열이나 숫자 등의 데이터를 출력하고 읽을 수 있는가? FileInputStream, FileOutputStream 에 대해서 설명할 수 있는가? 무조건 바이트 배열로 입력하고 출력할 수 있는 스트림이다. 파일 입출력의 시초가 되었던 유닉스의 read()에서 유래했다. 상속 사용법 상속을 이용하여 기존 클래스에 기능을 추가할...
복습 중첩클래스 로컬클래스 로컬클래스에서 enclosing 메서드의 변수를 사용하는 메커니즘을 설명할 수 있는가? 그것을 직접 사용하는 것이 아니라, 그 변수의 값을 할당하는 변수를 자동으로 컴파일러가 생성해주기 때문이다. (Non-Static Local Class) 이러한 변수는 바이트코드를 해석한 IDE의 윈도우에서 Synthetic 이라고 붙은 ...
24년이라니!! 복습 Iterator Design Pattern (GoF) 자료구조에서 값을 꺼내는 방법에 통일성을 부여하기 위해 발견된 패턴. 어떤 자료구조에서 값을 꺼내건 동일한 방식으로 꺼내기 위해 사용한다. 장점 통일성 단점 오버헤드 중첩 클래스(Nested Class) 사용 용도 어떤 하나의 클래스에서만 사용하...
23년의 마지막 금요일이다. 23년이 이제 진짜 가는구나. 복습 인터페이스를 이용한 객체 사용 규칙 정의 인터페이스 활용시 이점 교체가 쉬워진다! 이 인터페이스를 (구현한 클래스로 만든 인스턴스(객체)) 쓴다고 코드를 작성하면, 나중에 그 부분을 교체하지 않고 한 두줄의 코드만 변경하여 다형성을 구현할 수 있다. 인터페이스와 추상클래스를 결합해서 사...
학습 Linked List, Array List의 remove(Object) 메서드에서 구현 방법이 다른 이유? Linked List 에서 삭제하려는 값과 동일한 값을 가진 노드를 발견하고서, index를 받아서 삭제하는 remove() 메서드를 실행하여 나머지를 처리하는 경우 traverse를 두 번 해야 하는 비효율이 생긴다. 가비지컬렉션을 도와...
복습 예외처리 예외처리의 고전적 방법 예외를 처리하기 위한 방법은 어떻게 발전해왔나? 호출된 메서드에서, 호출한 메서드에게 정보를 전달하는 방식으로 생각하기 쉬운 것은 return value를 이용하는 것이다. ArrayList 클래스의 indexOf() 메서드가 그러한 방법을 사용한다. 원하는 값이 없는 경우 (예외가 발생한 경우) 인덱스의 값으로...
30일차 복습 날짜 관련 클래스 java.util.Date 클래스 사용할 줄 아는가? (날짜 및 시간 정보의 추출) java.util.Calendar 클래스 사용할 줄 아는가? java.sql.Date 클래스 예외처리 문법의 목적과 구동 방식을 설명할 수 있나? 문법오류가 아니고 실행 중 문제가 발생하면 그것은 대부분 예외...
23/12/22 복습 인스턴스를 복사하는 방법 Object 의 clone() 메서드를 사용하여 인스턴스 복제 가능. clone() 메서드를 사용하려면 Cloneable 인터페이스를 구현한다고 JVM에 알려줘야 함. COPY: Shallow VS Deep 인스턴스를 복제할 때, 깊은 복사와 얕은 복사는 의존 객체는 복제하지 않음. 인스턴...
28일차 23/12/21 복습 배운 내용 돌아보기 인터페이스 인터페이스 문법의 용도? 추상클래스에서 더 나아가서 어떤 메서드를 구현해야 할지만 알려주고 싶은 경우. 인터페이스 상속과 구현에 대한 설명? 인터페이스는 인터페이스를 상속할 수 있다. 인터페이스의 다중 상속이 가능한 경우, 불가능한 경우? 메서드 시그너처가 겹치는 메서드가 구현이 안되어 있...
복습 필드나 메서드에 접근을 제어해야 하는 상황은 언제가 있을까? 대부분의 상황에서 접근을 제어해야 할 것이다. 다른 클래스에서 필드에 임의 접근이 가능하다면 캡슐화가 깨진다. 캡슐화는 추상화를 지원하는 도구이고, 추상화는 현실 세계를 데이터와 연산자로 표현하기 위한 노력이다. 그래야 컴퓨터가 처리할 수 있으니까. Modifer 란? private ...
추상 클래스의 용도는? 상속을 위해 존재하는, generalization을 위한 클래스이다. 인스턴스화를 할 수없다. (인스턴스 생성이 불가능하다.) 레퍼런스 선언은 가능하다. 다형적 변수를 구현한다. 인터페이스도 레퍼런스 선언은 가능하다. 컴파일러: 레퍼런스가 선언된 클래스를 기준으로 형식만을 검사한다. J...
복습 다형적 변수의 사용방법 컴파일러는 형식상 옳은지 아닌지만 검사한다. 자식 타입은 부모보다 변수나 기능이 더 많기 때문에, 자식 타입의 레퍼런스에 부모 클래스의 인스턴스 주소를 할당해 줄 수 없다. 형변환을 통해서 할당한다 하더라도, 부모 인스턴스에서는 자식 클래스의 변수나 메서드가 없기 때문에 런타임 오류가 발생할 것이다. (실제 그 레퍼런스가...
복습 생성자에 대한 설명? 클래스를 객체로 생성할 때(사용할 때) 단 한번 실행되는 메서드가 생성자다. 왜 생성자가 필요한가? 객체가 유효한 상태로 존재하기 위해서는 기본적인 설정이 필요하다. 그 기본적인 설정을 하는 것이 생성자다. 만약 기본적인 설정을 할 게 아무것도 없다면, 아무것도 하지 않고 아무 정보도 받지 않는 생성자인 기본생성자를 쓰면 ...
23일(2023-12-14) 전략을 바꿔야겠다. 실습을 따라가는 것만 해도 하루 시간이 부족할 정돈데, 정리를 따로 해서 올리는 건 시간을 최적화해서 사용하지 못하는 걸로 판단된다. 일자별 내가 무엇을 배웠는지, 이것이 나에게 어떤 성장이 되었는지, 내가 어떤 생각을 하고 있는지를 일기처럼 적어야겠다. (다 상세히 서술하진 못해도) 학습시간 필기...
22일(2023-12-13) 복습 GRASP (일반적 책임할당 지침) 의 Information Expert 적용 정보를 가지고 있는 클래스가 그 정보를 다루게 해라. 그렇게 해야 클래스를 전문화시켜서 높은 응집력을 가지게 할 수 있다. GRASP: High Cohesion 응집력을 높여야 다른 프로젝트에서 사용가능하며, 기능 변경시 작업해야 하는 ...
21일 Open/Closed Principle? 기능 추가(확장)에는 열려있으나 코드 변경에는 막혀있어야 한다는 원칙이다. GRASP: Low-Coupling? 클래스와 클래스간의 결합이 적어야 재사용이 가능한 클래스를 작성할 수 있다. 죽는 순간 까지 햇갈릴 것이다. 헷갈리다? 햇갈리다? 배게? 베게? 어차피 모든 지식은 다 헷갈리게 된다. 인간의...
클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-22 남은 일자 : 111 일 ( 20/129 ) 본 내용은 제가 교육을 수강하며 기록한 내용으로, 정리되지...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 [Github] 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-22 남은 일자 : 128 일 ( 1/...