💻 computer science
-
🎒 Knapsack 알고리즘 (배낭 알고리즘)💻 computer science/🤔 알고리즘 2024. 5. 9. 15:21
🎒 배낭 알고리즘DP 알고리즘 중 하나주어진 공간(배낭)에 최대 가치를 가지는 물건들을 넣도록 물건들을 선택하는 것이다. 배낭 알고리즘에는 2가지 유형이 존재한다. 1️⃣ Fraction Knapsack물건을 쪼갤 수 있는 경우이 경우는 그리디 알고리즘이 사용될 수 있다.단위 무게당 가치가 높은 물건을 차례대로 배낭에 넣는 방식 2️⃣ 0-1 Knapsack물건을 배낭에 넣을지 (1) 또는 넣지 않을지(0)을 결정하는 경우 🤔 왜 배낭 알고리즘이 Dynamic Programming 일까? 결국 최대 이익을 구하기 위해서는 물건을 배낭에 넣어야 한다.이때, 배낭에 물건을 넣는냐 마느냐 가 중요한 선택이다.2가지 선택지가 존재 만약, 배낭에 넣을 수 있는 양이 N 이고, 넣고자 하는 물건의 무게가 M 이..
-
💡 템플릿 콜백 패턴💻 computer science/🌠 디자인패턴 2024. 5. 7. 16:20
🧩 Template Callback 패턴스프링 프레임워크에서 DI(의존성 주입)에서 사용하는 특별한 전략패턴ex) Jdbc Template, Rest Template, Transaction Template, Redis Template public class TransactionTemplate extends DefaultTransactionDefinition implements TransactionOperations, InitializingBean { ... @Override @Nullable public T execute(TransactionCallback action) throws TransactionException { ... }} 🆚 기존의 전략패턴 기존의 전략패턴은 전략 알고리즘 부분을..
-
Hash Table 과 Hash Map💻 computer science/🧐 data structure 2022. 12. 4. 14:57
📍 Hash, Hash Function 해시(Hash) 데이터를 다루는 기법 중 하나 해시 함수 데이터를 효율적으로 관리하기 위해 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 해시 함수 특징 같은 입력값에 대해서 같은 출력값이 보장된다. 서로 다른 입력값으로부터 동일한 출력값이 나올 가능성이 희박하므로 입력값에 대한 무결성이 보장된다. 일방향성을 갖는다. 📌 해시 테이블 (Hash Table) 키(key)와 값(value)이 하나의 쌍을 이루는 데이터 구조 즉, 키와 배열의 인덱스(index)를 이용하여 키를 저장하는 자료구조 해시 테이블은 해시 함수(hash function)으로 계산하여 그 값을 배열의 인덱스로 사용한다. 해시 함수로 의해 반환된 데이터의 고유 숫자 값을 해시 값 또는..
-
HTTPS💻 computer science/🌐 network 2022. 10. 9. 19:34
HTTP HTTP (Hyper Text Transfer Protocol) 서버 / 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 80번 포트 사용 HTTP 특징 애플리케이션 레벨의 프로토콜 TCP/IP 위에서 작동 Stateless 프로토콜 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜 중요 내용을 주고 받으면 제 3자가 정보를 조회할 수 있다 HTTPS HTTPS (Hyper Text Transfer Protocol Secure) HTTP에 데이터 암호화가 추가된 프로토콜 443번 포트 사용 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원 SSL / TLS SSL (Secure Socket Layer) 암호화 기반 인터넷 보안 프로토콜 전달되는 모든 데이터를 암호화..
-
TCP / UD💻 computer science/🌐 network 2022. 10. 9. 19:28
TCP (Transmission Control Protocol) 💡 인터넷 상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 특징 연결 지향형 프로토콜 (1:1 연결) 3-way handshaking 과정을 통해 연결 설정, 4-way handshaking 을 통해 해제 높은 신뢰성 보장 흐름 제어 및 혼잡 제어 전이중, 점대점 방식 3-way handshaking 클라이언트와 서버가 통신할 때 3단계의 과정을 거친다. SYN 단계 클라이언트 → 서버 ISN을 담아 SYN을 보낸다. SYN + ACK 단계 클라이언트의 SYN을 수신하고 서버의 ISN을 보낸다. 승인번호로 클라이언트의 ISN + 1을 보낸다. ACK 단계 클라이언트는 서버의 ISN + 1한 값을 승인번호로 담아 A..
-
OSI 7 계층 과 TCP/IP 계층💻 computer science/🌐 network 2022. 10. 9. 19:26
계층 모형 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약(프로토콜)의 모음 각 계층은 담당하는 위치마다 처리 역할을 구분해 진행한다. 서로 간의 간섭을 최소화해 사용의 편리성을 높인다. 특정 계층에서 이상이 생겨도 문제 있는 계층만 고쳐서 문제를 해결할 수 있다. 통신이 일어나는 과정을 단계별로 파악하기 용이하다. 다른 계층끼리는 데이터의 전달 과정을 구체적으로 알 필요가 없기 때문에, 데이터의 캡슐화와 은닉이 가능하다. OSI 7계층 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것. 네트워크 호환을 위해 OSI 7계층이라는 표준 네트워크 모델을 만들었다. 실제로는 OSI 7 Layer model 이 아닌 TCP/IP 가 표준 1. 물리 계층 전기적, 기계적, 기능적인 특성을..
-
HTTP💻 computer science/🌐 network 2022. 10. 9. 19:21
HTTP 🌐 HyperText Transfer Protocol 웹 서버와 웹 브라우저 사이에서 데이터를 주고 받기 위한 통신 규약 서버 / 클라이언트 모델을 따른다. Application layer로 TCP/IP 위에서 작동한다. 동작하는 환경 / 구조 HTTP는 기본적으로 Server - Clinet 환경에서 동작한다. 애플리케이션 영역에서 사용되는 프로토콜이고 주로 TCP을 사용하는 환경에서 사용된다. 클라이언트는 서버로 요청 Request를 전송하고 서버는 요청에 대한 응답 Response 를 함으로써 통신을 하게 된다. 특징 1. 클라이언트 서버 구조 클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보내는 클라이언트 서버 구조 Request - Response 클라이언트는 서버에 요청을..
-
인덱스💻 computer science/📦 database 2022. 10. 5. 18:13
인덱스 🔖 추가적인 쓰기 작업과 저장공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료 구조 ex) 책의 마지막 장에 있는 찾아보기 인덱스를 활용하면, 데이터를 조회하는 SELECT 외에도 UPDATE, DELETE 의 성능이 함께 향상된다. → 해당 연산을 수행하기 위해서는 해당 대상을 조회해야만 작업을 할 수 있기 때문이다. 인덱스 관리 DBMS는 index를 항상 최신의 정렬 상태로 유지해야 원하는 값을 빠르게 탐색할 수 있다. 인덱스가 적용된 컬럼에 INSERT, UPDATE, DELETE가 수행되면 각각의 연산을 추가적으로 해주어야 한다. 그에 따른 오버헤드가 발생 INSERT : 새로운 데이터에 대한 인덱스 추가 UPDATE : 기존의 인덱스를 사용하지 않음 처리 후 갱신된..