목록전체 글 (119)
철학과 학생의 개발자 도전기

OSI 7 계층 국제 표준화 기구(ISO)에서 정의한 네트워크 표준 모델 네트워크 통신이 일어나는 과정을 7단계로 나눔 캡슐화: 송신부에서 데이터를 전송할 때, 아래 계층으로 내려가며 제어 정보를 추가하는 작업 역캡슐화: 수신부에서 데이터를 전송받을 때, 위 계층으로 올라가며 제어 정보를 해석하는 작업 1계층 - 물리 계층 장비를 사용해 데이터를 전기 신호로 전송하거나 전기 신호를 데이터로 변환 데이터는 비트 단위로 전송 (0, 1) 장비: 리피터, 허브 2계층 - 데이터 링크 계층 데이터의 흐름을 제어하고, 오류 검출 및 복구를 수행 MAC 주소를 부여해 물리 장치를 식별할 수 있게 해줌 장비 : 브리지, 스위치, 이더넷 3계층 - 네트워크 계층 데이터를 전송하는 최적 경로를 선택 (라우팅) IP 주소..
3주차 과제 로또 게임을 만드는 과제였다. 클래스를 분리하고, 단위 테스트를 자세히 작성하는 훈련을 했다. 과제를 통해 OOP를 몸으로 체득할 수 있었다. https://github.com/woowacourse-precourse/java-lotto-6 GitHub - woowacourse-precourse/java-lotto-6 Contribute to woowacourse-precourse/java-lotto-6 development by creating an account on GitHub. github.com 회고 클래스 분리 이전에는 입출력 담당 클래스를 하나만 만들었었다. 하나의 클래스에서 입출력 메소드와 안내 문구 상수를 모두 관리하다보니 책임이 커지고, 코드가 복잡해졌다. 이를 개선하기 위해..
1. 프로시저란 데이터베이스에 대한 일련의 작업을 저장한 것 여러 쿼리문을 하나의 명령으로 수행 가능 2. 장점 하나의 요청으로 여러 쿼리를 실행시키므로, 네트워크 부하를 줄일 수 있다. API처럼 여러 애플리케이션과 공유가 가능하다 기능 변경이 편리하다. 3. 단점 문자나 숫자열 연산에 사용하면 C나 Java보다 느린 성능을 보일 수 있다. 프로 시저의 사용 위치를 알 수 없어서 유지보수가 힘들다. 4. 프로시저 생성 예시 CREATE OR REPLACE PROCEDURE 프로시져명 (파라미터1 IN | OUT | IN OUT, 파라미터2 IN | OUT | IN OUT...); IS[AS] 변수, 상수 등을 선언 BEGIN 로직을 실행할 쿼리문 [EXCEPTION 예외처리] END 프로시져 명;

1. NoSQL NoSQL이란 Not Only SQL의 약자 관계형 데이터베이스와 다른 형태의 데이터 저장 기술 즉, 테이블이 존재하지 않고 고정된 스키마가 없다. 특징 빅데이터 처리에 유용하다. (수평확장 / 고가용성) 정형 데이터뿐만 아니라 반정형, 비정형 데이터도 처리 가능 스키마가 없기 때문에 확장성이 좋음 분산형 구조로, 데이터를 상호 복제하여 안정성을 높이고 서비스 중지에 대비한다. RDB에 비해 읽기, 쓰기의 속도가 빠르다. 읽기보다 쓰기가 더 빠르다. 유형 Key-Value 형태 (Redis) 문서 형태 (MongoDB) 그래프 형태 (Amazon Neptune) 2. Redis Redis란 Remote Dictionary Server의 약자 오픈 소스 기반, 인메모리 데이터베이스 Key-..
2주차 과제 자동차 경주 게임을 만드는 과제였다. 단위 테스트를 작성하고, 기능 단위로 커밋하는 훈련을 할 수 있었다. 요구사항을 체크박스로 정리하니 더 체계적으로 작업할 수 있었다. https://github.com/woowacourse-precourse/java-racingcar-6 GitHub - woowacourse-precourse/java-racingcar-6 Contribute to woowacourse-precourse/java-racingcar-6 development by creating an account on GitHub. github.com 회고 요구사항 목록 작성 이전에는 코드를 작성하면서, 요구사항을 확인했었다. 코드를 작성하고 싶은 마음이 앞서 차분히 요구사항을 분석하지 않았..
1. 옵티마이저란 최적의 쿼리 실행 계획을 세워주는 엔진 쿼리 실행의 4단계 중 2단계 Parsing: SQL 구문을 분석하고 문법 오류를 검사 Optimization: 최적의 SQL 실행 계획 도출 Generation: 실행 계획을 실행 가능한 코드로 변경 Execution: 실행 2. 규칙 기반 옵티마이저 (RBO) 미리 정해둔 규칙에 따라 실행 계획을 최적화 실행 속도가 빠른 순으로 규칙을 세우고 우선순위를 설정 과거, 통계가 부족하고 CPU 성능이 낮아 비용 연산이 부담스러울 때 사용하던 방식 3. 비용 기반 옵티마이저 (CBO) 현재, 대부분의 RDBMS가 사용 실행 계획의 비용을 계산해 최소값을 고르는 방식 비용은 객체 및 시스템 통계 정보를 이용한 예상치로 계산 (테이블, 컬럼, 인덱스, C..
1. Lock 읽기 혹은 쓰기 잠금을 통해 다중 트랜잭션의 상호 간섭을 방지한다. 낙관적 동시성 제어 사용자들이 같은 데이터를 동시에 수정하지 않을 것이라고 가정 데이터 읽는 시점에 Lock을 걸지 않고, 수정 시점에 값이 변경되었는지 검사 Q. 동시에 수정된다면?: 마지막 커밋만 적용하기 등 전략 설정 필요 비관적 동시성 제어 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정 데이터를 읽는 시점에 Lock을 걸고, 트랜잭션이 완료될 때 까지 유지 공유락: 다른 공유락을 허락함 -> 읽기 잠금으로 사용 베타락: 다른 모든 락을 허락하지 않음 -> 쓰기 잠금으로 사용 2. MVCC Multi Version Concurrency Control (다중 버전 동시성 제어) 동시 접근을 허용하는 데이터베이스에..
1. 트랜잭션 데이터를 처리하는 하나의 논리적 작업 단위 트랜잭션 내의 모든 연산은 한꺼번에 수행되거나 모두 수행되지 않아야 한다. 트랜잭션이 성공적으로 완료된 후에는 결과가 영구적으로 반영되어야 한다. 2. ACID 특징 원자성(Atomicity): 트랜잭션 전체가 반영되거나 반영되지 않아야 한다. 일관성(Consistency): 의도하지 않은 데이터 손상으로 무결성을 해치지 않아야 한다. 고립성(Isolation): 트랜잭션은 서로의 연산을 방해하지 않아야 한다. 지속성(Durability): 트랜잭션 수행 결과가 시스템에 적용되는 것을 보장해야 한다. 3. Commit과 Rollback Commit: 하나의 트랜잭션이 끝났음을 알려주는 연산. 트랜잭션 결과가 시스템에 반영된다. Rollback: 트..