본문 바로가기

전체 글

(120)
[Intellij] Java21 한글 깨짐 사이드 프로젝트를 java 21로 진행하며, 콘솔 한글 깨짐 현상을 발견했다. 17버전에서 해결했던 방식들로 해결이 되지 않아 찾아보던 중 JDK 18버전 이전, 이후로 방식이 다르다는 것을 알게 되었다. 참고 : https://unagi-zoso.tistory.com/109 해결 방법 Edit Configurations >> VM options에 아래 옵션을 추가한다. -Dfile.encoding="UTF-8" -Dsun.stderr.encoding="UTF-8" -Dsun.stdout.encoding="UTF-8"
[CS] 조인의 종류와 원리 조인(Join) 두 개 이상의 테이블을 묶어 하나의 결과물을 만드는 것 MySQL에서는 JOIN, MongoDB에서는 lookup이라는 쿼리로 처리할 수 있다. 하지만 MongoDB의 lookup은 성능이 떨어지므로, 여러 테이블을 조인하는 작업이 많을 경우, 관계형 데이터베이스를 써야 한다. 두 테이블의 조인을 위해서는 기본키와 외래키 관계로 맺어져야 하고, 이를 일대다 관계라고 한다. 조인의 종류 INNER JOIN, (LEFT, RIGHT, FULL) OUTER JOIN, CROSS JOIN, SELF JOIN 이 있다. INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. OUTER JOIN(외부 조인)은 두 테이블을 조인할 때, 1개의 ..
[CS] 프로세스와 스레드 프로그램(program) 윈도우의 *.exe 파일이나 Mac의 *.dmg 파일과 같은 컴퓨터에서 실행 할 수 있는 파일 프로세스(process) 컴퓨터에서 실행되고 있는 프로그램 운영체제로부터 자원을 할당받은 작업의 단위 스레드(thread) 프로세스 내 작업의 흐름 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행한다. 프로세스 상태 생성 상태(create) 프로세스가 생성되고 아직 준비가 되지 않은 상태로 이때 PCB가 할당된다. 대기 상태(ready) 메모리 공간이 충분하면 메모리를 할당받고, 아니면 아닌 상태로 대기하고 있으며, CPU 스케줄러로부터 CPU 소유권..
[CS] 네트워크 기기 네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다. 네트워크 기기는 계층별로 처리 범위를 나눌 수 있다. 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만, 그 반대는 불가능하다. 물리계층 전송에 필요한 두 장치 간 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의한다. 디지털 신호를 전기 신호로 전송한다. 장비 설명 허브 - 여러 대의 컴퓨터를 연결하여 네트워크로 보내거나, 하나의 네트워크로 수신된 정보를 여러 대의 컴퓨터로 송신하기 위한 장비 - L1 스위치(더미 허브)라고도 하며, 자신에게 꽂혀있는 모든 장비에 데이터를 전부 전달한다. 리피터 - 전송되는 신호가 원래 형태와 다르게 왜곡되거나 약해질 경우, 원래 신호 형태로 증폭하여 다시 전송하는 장비 -..
[CS] 네트워크 분류 / 네트워크 성능 분석 명령어 / 네트워크 프로토콜 표준화 네트워크 분류 네트워크는 규모에 따라 근거리 통신망 LAN, 도시권 통신망 MAN, 광역 통신망 WAN 등으로 구분된다. LAN (Local Area Network) 근거리 통신망은 지리적으로 한정된 범위 안에 분산된 컴퓨터 및 각종 기기를 통신 회선으로 연결한 네트워크이다. 가정, 사무실, 학교 등의 비교적 좁은 지역을 커버하며, 고속 데이터 전송이 가능하다. 보통 이더넷(Ethernet)이나 와이파이(Wi-Fi)와 같은 기술을 이용해서 구축한다. 통신회선을 이용해 공간을 어떻게 구성하느냐에 따라 버스형, 스타형, 링형, 메시형, 트리형으로 구분된다. 장점 데이터 전송 속도가 빠르고, 데이터의 손실률이 낮다. 네트워크 구성이 비교적 간단하며, 관리가 용이하다. 네트워크 내의 자원을 여러 사용자가 공유할..
[java] split() 메서드 limit 활용 split() 메서드의 두번째 파라미터에 limit 값이 들어간다. 양수인 경우 지정된 크기만큼 값이 나눠지고, 음수인 경우 마지막 공백도 포함해서 모든 값을 나눠 배열로 반환한다. limit를 사용하지 않고 split() 메서드를 사용하면, 구분한 문자열의 뒷부분 공백들은 사라진다. 코드 String[] splitString = myString.split("x", -1); 결과 "oxooxoxxox" -> "o", "oo", "o", "", "o", "" split() 메서드 설명 The limit parameter controls the number of times the pattern is applied and therefore affects the length of the resulting arr..
[CS] OSI 7계층 - 세션, 표현, 응용 계층 5계층 - 세션 계층 (Session Layer) 통신 세션*을 구성하는 계층으로, 네트워크 상 양쪽 연결을 관리하고 연결을 지속시켜주는 계층이다. 포트(Port)번호를 기반으로 연결한다. 응용 프로그램 간 통신을 하기 위한 세션을 OS를 통해 확립, 유지, 중단하는 작업을 수행한다. 전송 중단시 데이터를 재전송하거나 연결을 복구한다. 동기화를 하여 송수신 중 오류가 발생하면, 동기점 이후부터 재전송한다. 동시송수신(Duplex, 전화), 반이중(Half-Duplex, 무전기), 전이중(Full-Duplex, TV) 방식의 통신과 함께 체크 포인팅과 종료, 다시 시작 과정 등을 수행한다. 규칙(프로토콜) : NetBIOS, SSH, TLS 단위 : 데이터 * 세션 : 클라이언트와 웹 서버 간 네트워크 연..
[CS] 가상메모리 스와핑 메모리에서 사용되지 않는 프로세스들을 보조기억장치로 내보내고, 실행할 프로세스를 메모리에 적재하여 실행하는 메모리 관리 기법 메모리 할당 비어 있는 메모리 공간에 프로세스를 연속적으로 할당하는 방식 최초 적합 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식 방식이므로 검색을 최소화할 수 있고 결과적으로 빠른 할당이 가능 최적 적합 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식 최악 적합 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식 외부 단편화 메모리에 남아있는 공간이 요청한 메모리 공간보..
[Spring] 절차지향/객체지향/함수형 프로그래밍 & 시간복잡도/공간복잡도 Q. 절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가? 절차지향 프로그래밍은 프로그램의 순서와 흐름을 먼저 세우고, 필요한 자료구조와 함수들을 설계하는 방식입니다. 대표적인 프로그래밍 언어로 C, Visual Basic, Fortran, Pascal이 있습니다. 특징 하나의 큰 기능을 처리하기 위해 작은 단위의 기능들로 나누어 처리하는 Top-Down 접근 방식으로 설계된다. 데이터와 함수를 별개로 취급한다. 모든 함수는 데이터 공유가 가능하다. 정해진 순서대로 입력해야 하므로 순서가 바뀌면 결과를 도출하기 어렵다. 프로그램이 커질수록 구조가 복잡해져 유지보수가 어렵다. (소형 프로젝트에 적합) 객체지향 프로그래밍은 자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에, 이들..
[Spring] 웹서버(WS)와 WAS & 자료구조 Q. 웹 서버와 WAS의 차이는? WS 웹 서버 정적인 파일을 제공하기 위한 서버로 Http 프로토콜에 의해 제공 정적인 파일로만 처리 가능한 것은 Was로 넘기지 않고 WS에서 처리 대표적인 예로 apache, nginx, gws 등이 있다. WAS 웹 애플리케이션 서버 동적 데이터를 제공하기 위한 서버 웹 서버에서 처리할 수 없는 동적 정보를 처리하여 웹서버에 제공 일반적으로 웹서버의 기능을 내제하고 있어 웹 서버 없이도 서비스가 가능 WAS와 DB가 연결되어 WAS에서 처리에 필요한 데이터를 꺼내와 원하는 정보로 가공 1. 웹 서버로부터 요청이 들어오면 제일 먼저 스프링 컨테이너가 이를 알맞게 연산 처리한다. 2. 컨테이너는 배포 서술자를 참조하여 해당 서블렛에 대한 스레드를 생성하고 요청 http..
[Spring] 트랜잭션 & TCP와 UDP Q. 트랜잭션이 무엇인지 설명해 주세요. 트랜잭션은 데이터베이스 상태를 변화시키기 위해 수행하는 작업의 단위를 말한다. 상태를 변화시킨다는 것은 데이터베이스에서 SQL 질의어(Select, Insert, Delete, Update)를 통해 DB에 접근하는 것을 의미한다. 작업 단위는 사람이 정하는 기준에 따라 정해진다. 예를들어 블로그에 글을 작성하고 업데이트 된 목록을 본다면, 글을 create하고 update하는 작업이 모두 수행되어야 하나의 작업 단위가 되는 것이다. [트랜잭션의 4가지 원칙] 원자성(Atomicity) 한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리한다. 모두 성공해 DB에 반영되거나, 실패해 전혀 반영되지 않아야 한다. 일관성(Consistency) 트랜잭션은 일관성 있는..
[Spring] 의존성 주입(DI) 의존성 주입(Dependency Injection)은 객체를 외부에서 주입하여 결합도를 낮추고 유연한 코드를 작성하는 디자인 패턴이다. 의존성 주입은 크게 생성자 주입, Setter 주입, 필드 주입으로 나뉜다. 1. 의존성 주입(DI)방식 3가지 1) 생성자 주입(Constructor Injection) 생성자 주입은 의존성 객체를 생성하는 시점에 주입하는 방식 생성자의 호출 시점에 1회 호출되는 것이 보장되어 주입받은 객체가 변하지 않거나, 객체의 주입을 강제할 수 있다. public class MyClass { private final MyData myData; public MyClass(MyData myData) { this.myData = myData; } } 2) Setter 주입(Setter..
[Spring] Rest Client & @SpringBootTest와 @WebMvcTest Q. Spring 에서 사용하는 Rest Client에 대해서 설명해 주세요. Rest API 서버에 HTTP 요청을 보낼 수 있는 클라이언트 툴 또는 라이브러리입니다. UI가 갖춰진 Rest Client 예 : Postman WebClient는 HTTP 요청을 수행하기 위한 비차단 반응형 클라이언트입니다. non-blocking I/O 반응성 스트림 적은 하드웨어 리소스로 높은 동시성 처리 Java 8 람다 활용하여 HTTP 요청 빌드 가능 동기 및 비동기 상호 작용 가능 서버로부터 스트리밍 데이터를 받거나 서버로 스트리밍 데이터 전송 가능 RestTemplate는 HTTP 클라이언트 라이브러리를 통해 더 높은 수준의 API를 제공합니다. 한 줄로 REST 엔드포인트를 호출할 수 있습니다. HTTP 인..
[Spring] 컬렉션(List, Set, Map, HashMap) & 스프링 컨테이너 Q. List, Set, Map, HashMap의 차이에 대해서 설명해주세요. List는 순서가 있고, 중복을 허용한다. 저장공간이 필요에 의해 자동으로 늘어난다. Set은 순서가 없고, 중복을 허용하지 않는다. 집합. Map은 순서가 없고, 키는 중복을 허용하지 않고, 값은 중복을 허용한다. HashMap은 Map 인터페이스를 implements한 클래스로 중복을 허용하지 않는다. 특정 키에 대한 값을 찾는 과정에서 HashMap은 HashTable을 이용해서 키-값 관계를 유지하고, Map은 red-black Tree알고리즘을 이용한다. Q. 스프링 컨테이너(Spring Container)에 대해 설명해주세요. 스프링 컨테이너(Spring Container)는 스프링 프레임워크의 핵심 컴포넌트이다. ..
[CS] DBMS 기능과 종류 DBMS 기능 DBMS 요구사항 DB를 효율적이고 직관적이고 안전하게 사용할 수 있게 해주는 기능 효율적으로, 동일한 데이터가 저장되는 것을 방지하는 중복 제어기능 무결성 제약 조건을 정의/검사하는 기능 직관적으로, 서로 다른 데이터 간의 관계를 표현해주는 관계 표현 편리한 인터페이스 제공 안전하게, 접근하는 사용자마다 다른 권한을 주는 접근통제 기능 데이터가 잘못 수정/삭제 되었을때 백업하는 기능 Transaction(트랜잭션) 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 트랜잭션의 특성 원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료되든지 아니면 전혀 반영되지 않도록 복구되어야 한다. 또한 트랜잭션 내의 모든 명령은 반드시 완벽히..
[CS] 데이터베이스(DB 구조와 유형) 데이터베이스(DB) 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 것 특징 데이터의 대규모 저장소로 여러 사용자에 의해 동시에 사용된다. 모든 데이터가 중복을 최소화하면서 통합된다. 운영 데이터 뿐 아니라 그 데이터에 관한 설명까지 포함한다. (설명 : 데이터베이스 스키마 or 메타데이터) 프로그램과 데이터 간 독립성이 제공된다. (프로그램 메모리가 아닌 개별적인 저장공간에 저장되기 때문) 효율적으로 접근이 가능하고 질의를 할 수 있다. (쿼리) 데이터베이스 관리 시스템(DBMS : Database Management System) 데이터베이스를 정의하고, 질의어를 지원하고, 리포트를 생성하는 등 작업을 수행하는 소프트웨어 DBMS의 기능 사용자가 새로운 데이터베이스를 생성..