본문 바로가기

Tech

[개발 한 스푼] 데이터 사전(data dictionary)에 대해서 설명해주세요. (2023.01.12) 개발 한 스푼 adevspoon.com 본 글은 에 올라오는 "오늘의 질문"에 대한 학습 결과물을 정리한 내용입니다. Data Dictionary? 대부분 읽기 전용으로 제공되는 테이블 및 뷰들의 집합으로 데이터베이스 전반에 대한 정보를 제공한다. Oracle 데이터베이스는 명령이 실행될 때마다 데이터 사전을 Access하여 객체의 존재 여부와 사용자에게 적합한 Access 권한이 있는지를 확인한다. 또한 Oracle은 데이터 사전을 계속 갱신하여 DATABASE 구조, 사용자 권한, 데이터 등의 변경 사항을 반영 한다. -> 유저가 입력하는 데이터를 제외한 모든 정보가 들어 있는 것이라고 생각하면 된다고 함 Data Dictionary에 저장되는 내용 (Oracle 기준) - 오라클 사용자 정보 - 오..
[개발 한 스푼] CPU 스케줄링 알고리즘의 종류와 각각에 대해 아는대로 설명해주세요 (2023.01.08) 개발 한 스푼 adevspoon.com 본 글은 에 올라오는 "오늘의 질문"에 대한 학습 결과물을 정리한 내용입니다. CPU 스케줄링? 메모리에 올라온 프로세스들 중 어떤 프로세스를 먼저 처리할 지 일들의 순서를 정하는 것을 CPU 스케줄링이라고 한다. 다르게 말하면, Ready Queue에 있는 프로세스들의 실행 순서를 정하는 것이다. 효과적인 스케줄링은 다중 프로그래밍을 가능하게 하고 CPU 이용률을 극대화시킬 수 있다. CPU 스케줄링 종류 CPU 스케줄링 알고리즘은 선점과 비선점으로 구분할 수 있다. - 선점(preemptive) : 다른 프로세스가 현재 CPU를 할당받아 실행중인 프로세스를 중지시키고 CPU를 강제적으로 뺏을 수 있는 방식 - 비선점(non-preemptive) : 다른 프로세스..
[네트워크] TCP 헤더 살펴보기 TCP 헤더 살펴보기 TCP는 네트워크의 OSI 7계층 중 전송 계층에서 사용되는 연결 지향형 프로토콜로 흐름 제어, 혼잡 제어 등의 기능을 지원하여 신뢰성 있는 데이터 전송을 보장하는 프로토콜이다. 그리고 이러한 기능들은 TCP 헤더에 포함된 정보를 통해 동작한다. TCP 헤더에는 구체적으로 어떤 정보가 담겨 있는지, 어떻게 이용되고 있는지 알아보았다. TCP 헤더의 구조는 다음과 같다. TCP 헤더의 크기 기본적으로 20bytes 옵션을 포함하면 최대 60bytes Source port / Destination port source port는 메시지를 보내는 측에서 통신을 위해 사용하는 port 번호 destination port는 메시지를 받는 측의 통신 port 번호 port 번호와 함께 IP 헤..
[디자인 패턴] 싱글톤 패턴(Singleton Pattern) 최대 N개로 객체 생성을 제한하는 패턴 객체가 너무 많아지면 컴퓨터 자원을 과도하게 사용하게 되고, 이는 프로그램 전체의 속도를 느리게 할 수 있다. → 개발자는 객체의 최대 개수를 제한할 필요가 생긴다. 여기서 중요한 것은 생성되는 객체의 최대 개수를 제한하는 데 있어 객체의 생성을 요청하는 쪽에서 일일이 신경쓰지 않아도 되도록 만들어주는 것이다. 싱글톤 패턴은 주로 하나의 객체로 데이터를 일관성 있게 유지하고 싶을 때 사용한다. 프로그램 내에서 아래와 같은 Database라는 객체를 이용한다고 가정해보자. (이 클래스를 하나씩 개선해나가보자) public class Database { private String name; public Database(String name) { super(); this..
[운영체제] Blocking&Non-Blocking와 Sync&Async 블로킹&논블로킹과 동기&비동기라는 두 개념의 차이에 대해 정리해봤다. 사실 두 개념을 조합해서 사용되기 때문에 비교되는 것이지, 동기와 비동기는 프로세스 수행 순서 보장에 대한 매커니즘이고, 블록과 논블록킹은 프로세세의 유휴 상태에 대한 개념으로 완전한 별개의 개념으로 관련이 없다고 한다. 블록킹(Blocking)과 논블록킹(Non-Blocking) 제어권을 어떻게 처리하느냐에 따라 달라진다. 제어권이란 자신(함수)의 코드를 실행할 권리같은 것이다. 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다. Blocking 블로킹은 A함수가 B함수를 호출하면, 제어권을 A가 호출한 B 함수에게 넘겨주는 것이다. A는 B에게 제어권을 넘겨줬기 때문에 B함수의 실행이 끝날 때까..
[Spring MVC] HandlerMapping 핸들러 매핑은 HTTP 요청 정보를 이용해서 컨트롤러를 찾아주는 기능을 수행한다. DispatcherServlet이 등록된 HandlerMapping 전략들에게 HttpServletRequest를 전달하면서 매칭되는 오브젝트를 찾는다. public interface HadlerMapping { HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception; } HandlerMapping은 DispatcherServlet에 의해 초기화된다. HandlerMapping은 항상 HandlerExecutionChain을 통해 실행된다. HandlerExecutionChain은 AbstractHandlerMapping 클래스에 의해 생성..
[알고리즘] Java로 정렬 알고리즘 구현해보기 선택 정렬 [알고리즘] 선택 정렬(selection sort)이란 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io // 선택 정렬 private static int[] selectionSort(int[] numbers) { // 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그다음 작은 데이터를 선택해 두 번째 데이터와 바꾸는 과정을 반복 // 시간복잡도 O(n^2) // 공간복잡도 O(1) for (int i = 0; i < numbers.length; i++) { int minIndex = i; for (int j = i + 1; j < numbers.length; j++) { if (numbers[..
[프로그래머스] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) - 헤비 유저가 소유한 장소 (MySQL) 코딩테스트 연습 - 헤비 유저가 소유한 장소 PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를 programmers.co.kr 문제 설명 PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를 나타냅니다. ID는 기본키입니다. NAME TYPE ID INT NAME VARCHAR HOST_ID INT 문제 이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다...