분류 전체보기

CS/데이터베이스

[데이터베이스] SQL 기초 이론

SQL(Structured Query Language) IBM이 Sequel이라는 이름으로 개발한 관계형 데이터베이스 언어 ANSI에 의해 관계형 데이터베이스 표준 언어로 승인되었다. DBMS는 SQL을 해석하고 프로그램으로 변환하여 실행하고 결과를 알려준다. 데이터 부속어: 데이터베이스의 데이터와 메타 데이터를 생성하고 처리하는 문법만 가진다. SQL 종류 SQL은 기능에 따라 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL) 로 나뉜다. 데이터 정의어 : 테이블이나 관계의 구조를 생성하는데 사용 CREATE, ALTER, DROP 데이터 조작어: 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용 SELECT, INSERT, UPDATE, DELETE 데이터 제어어: 데이터..

CS/데이터베이스

[데이터베이스] 관계 데이터 모델(ERD)

관계 데이터 모델의 개념 수학의 집합이론에 근거하고 있어 타 모델에 비해 튼튼한 이론적 토대를 가지고 있다. 또한 관계 데이터 모델이 적용된 SQL 언어는 비절차적 언어로 원하는 데이터를 쉽게 표현하는 장점이 있다. 현재 많이 사용되는 관계 데이터 모델 DBMS로는 Oracle, SQL Server, MySQL, PostgreSQL과 모바일 용인 SQLite등이 있다. 릴레이션(relation) 수학의 집합에서 나온 개념으로, 테이블은 릴레이션의 시각적인 표현방법이다. relationship(관계)는 릴레이션 내에서 생성되는 관계와 릴레이션 간의 관계를 포함한다. 전자는 관련있는 실제 데이터의 집합, 후자는 릴레이션끼리 식별값을 이용하여 연결함을 뜻한다. 릴레이션과 테이블은 같은 의미로 사용된다. 릴레이..

문제&해결

@Value가 단위 테스트에서 동작하지 않는 문제 (생성자 주입, @WebMvcTest)

문제 문제 상황 @Value 어노테이션을 사용하여 yml 파일의 프로퍼티 값을 secretKey 필드에 주입하려고 한다. 서버 실행시 잘 작동했지만, 테스트 수행시 secretKey 필드가 초기화되지 않았다는 에러가 발생한다. Request processing failed; nested exception is kotlin.UninitializedPropertyAccessException: lateinit property secretKey has not been initialized 문제 분석 @Value는 Spring이 해당 클래스의 인스턴스를 생성하고 관리할때, 프로퍼티 파일(yml)에 정의된 값을 자동으로 주입한다. 하지만 @WebMvcTest와 같은 단위 테스트는 특정 Controller만 로드하기..

문제&해결

도커 컨테이너의 ip 주소는 왜 127.0.0.1(localhost)가 아닐까?

포트 충돌 문제를 해결하면서 나를 혼란스럽게 만든 문제였다. https://shout-to-my-mae.tistory.com/401 로컬, docker 컨테이너 포트 충돌 : 포트 관리 중요성 (mysql) 문제 상황 로컬에서 mysql이 실행중이고, 동일한 포트(3306)을 사용하여 Docker의 mysql 컨테이너를 시작시켰다. mysql 컨테이너와의 연결이 실패하며 에러가 발생했다. 에러 메세지 [28000][1045] Access denie shout-to-my-mae.tistory.com 도커 컨테이너는 로컬 환경에서 띄웠으나 도커의 ip주소는 127.0.0.1이 아니어서 연결 에러가 발생했을때 헷갈렸다. 도커의 ip주소는 왜 127.0.0.1 (localhost)이 아닐까? - 개인 pc에서 ..

문제&해결

로컬, docker 컨테이너 포트 충돌 : 포트 관리 중요성 (mysql)

문제 상황 로컬에서 mysql이 실행중이고, 동일한 포트(3306)을 사용하여 Docker의 mysql 컨테이너를 시작시켰다. mysql 컨테이너와의 연결이 실패하며 에러가 발생했다. 에러 메세지 [28000][1045] Access denied for user '유저명'@'localhost' (using password: YES) 문제 분석 에러 메세지는 올바른 사용자 인증 정보를 주지 못한다고 나와있다. 하지만 컨테이너에 입력한 유저와 비밀번호 모두 정상적으로 입력했다. 연결에서 문제가 발생한 것으로 유추해볼 수 있다. 문제 원인 포트 충돌 : 로컬 Mysql 서버와 컨테이너 내의 Mysql 서버가 동일한 포트(3306)를 사용하려고 해서 발생한다. 한 포트는 하나의 서비스만 사용할 수 있다. 당연하..

CS/운영체제

[운영체제] Chrome이 멀티 프로세스인 이유

Chrome 구조 Chrome은 멀티 프로세스이다. 크롬은 크게 4가지의 프로세스를 사용한다. 브라우저 프로세스 : 탭 외부 크롬 내장 기능(URL, 북마크바 등) 렌더러 프로세스 : 탭 내부의 웹사이트 표시 플러그인 프로세스 : 웹 사이트에서 사용되는 플러그인 담당 GPU 프로세스 : GPU 사용하는 부분은 해당 프로세스가 담당 💡 프로세스끼리는 `IPC`(Inter Process Communication, 프로세스간 통신)을 사용한다. 즉, 크롬의 Tab은 하나의 렌더러 프로세스를 가지므로, 하나의 프로세스이다. 동작하지 않는 탭은 프로세스를 재시작함으로써 동작시킨다. 왜 멀티 프로세스 구조를 채택했을까? 멀티 프로세스는 무겁지만 브라우저는 웹 사이트의 보안 문제로 인해 이러한 방식을 채택했다. 웹 ..

CS/데이터베이스

[데이터베이스] 데이터베이스와 데이터베이스 시스템

데이터, 정보, 지식 데이터 : 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값 정보 : 데이터에 의미를 부여한 것 지식 : 사물이나 현상에 대한 이해 데이터베이스 데이터베이스 : 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것 데이터베이스 시스템 : 데이터의 검색과 변경 작업 주로 수행 변경작업 : 시간에 따라 변하는 데이터값을 데이터베이스에 반영하기 위해 수행하는 삽입, 삭제, 수정 등의 작업 데이터베이스의 개념 통합된 데이터 : 여러 곳에서 사용하던 데이터를 통합하여 하나로 저장한 데이터 저장된 데이터 : 문서로 보관된 데이터가 아니라 디스크, 테이프 같은 컴퓨터 저장장치에 저장된 데이터 운영 데이터 : 조직의 목적을 위해 사용되는 데이터 ex) 업무를..

알고리즘

다익스트라 알고리즘이 음의 간선이 포함된 그래프에서 최단 경로를 구하지 못하는 이유

다익스트라 알고리즘 최단 경로 알고리즘 중 하나 출발점에서 다른 모든 노드로의 최단 경로를 구할 수 있다. 간선에 음의 가중치가 없어야한다. 알고리즘 복잡도 : O(ElogV) 코드 import java.util.ArrayList; import java.util.PriorityQueue; public class Main2 { static class Node { int to; int weight; public Node(int to, int weight) { this.to = to; this.weight = weight; } } public static void dijkstra(int v, int[][] data, int start) { ArrayList graph = new ArrayList(); for ..

mint*
'분류 전체보기' 카테고리의 글 목록 (4 Page)