CS
-
vectorDB와 GraphDBCS/DataBase 2025. 9. 16. 14:57
자동목차 데이터베이스에는 다양한 종류가 있습니다.흔히 아는 데이터베이스 종류로는 RDBMS가 있습니다.RDBMS는 오랫동안 사용되어왔지만 최근 데이터 양, 데이터 형식, 데이터 관계가 많아지고 ai가 등장하면서 데이터 관리에 대해 더 많은 요구사항이 생겼습니다. 그래서 등장한 데이터베이스가 vectorDB와 graphDB입니다 Vector Database벡터 데이터베이스는 텍스트, 이미지, 오디오 등 비정형 데이터를 수치적인 '벡터' 형태로 저장하고 검색하는 데 특화된 데이터베이스입니다.기존 관계형 데이터베이스가 정확히 일치하는 데이터를 검색하는 것과 달리, 벡터 데이터베이스는 '벡터 임베딩'을 활용해 데이터 간의 의미적 유사성을 측정하여 가장 유사한 항목을 찾아내는 '유사성 검색'을 수행합니다. 예..
-
Java Template EngineCS/JAVA 2025. 3. 31. 08:14
자바 템플릿 엔진이란 서버 사이드에서 HTML 등의 문서(뷰)를 생성할 때, 자바 코드와 데이터를 HTML에 삽입할 수 있도록 도와주는 도구입니다. 쉽게 말하면, 백엔드에서 동적으로 웹 페이지를 만들어 클라이언트에 전달할 때 사용하는 기술입니다.대표적인 자바 템플릿 엔진에는 타임리프(Thymeleaf), 프리마커(FreeMarker), JSP 등이 있습니다. ⸻1. 타임리프 (Thymeleaf)HTML 원본을 그대로 브라우저에서 볼 수 있음 (natural templating)HTML을 그대로 열어도 깨지지 않아 디자이너와 협업하기 좋음.표현식 문법: ${변수}, th:text, th:if, th:each 등Spring Boot와 잘 통합됨 (자동 설정 지원)HTML5를 기반으로 동작비교적 배우기 쉬운 ..
-
Maven 빌드 과정CS/Spring 2025. 3. 31. 08:13
1. Maven의 기본 생명 주기Maven에는 세 가지 기본 생명 주기(Build Lifecycle)가 있습니다.① Clean Lifecycle기존 빌드 결과물을 정리하는 과정주요 단계:pre-clean: 정리 전에 실행clean: 빌드 결과물 삭제post-clean: 정리 후 실행② Default (Build) Lifecycle가장 중요한 생명 주기로, 프로젝트의 빌드 과정이 포함됨주요 단계:validate: 프로젝트가 정상적인지 검증 (pom.xml 파일 존재 여부, 필수 정보 확인)compile: 소스 코드 컴파일test: 단위 테스트 실행 (src/test/java의 테스트 코드 실행)package: 실행 가능한 형태로 패키징 (.jar 또는 .war 생성)verify: 패키징된 결과물이 정상적인..
-
SSL, HTTPS, SSHCS/웹 보안 2025. 3. 28. 22:32
HTTPS란?HTTPS는 HyperText Transfer Protocol Secure의 약자로, 웹 통신 프로토콜인 HTTP와 보안 프로토콜인 TSL이 합쳐진 보안 버전을 의미합니다. 데이터의 안전한 전송을 위해 사용되며, 웹 사이트와 웹 브라우저 간의 통신을 암호화하여 보호합니다. SSL/TSL 이란?SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)은 네트워크 통신에서 보안을 제공하기 위해 사용되는 암호화 프로토콜입니다.OSI 계층에서, 아래 그림과 같이 HTTP 프로토콜 아래에 TSL 프로토콜이 추가된 모습입니다. SSL은 웹의 초기 보안 프로토콜로 개발되었으나 SSL은 취약점이 발견되고 개선이 필요하다는 점에서 뒤이어 TLS로 대체되었습니다.따라..
-
CTAS란?CS/DataBase 2025. 3. 28. 21:22
CTAS(Create Table As Select)는 SQL에서 기존 테이블의 데이터를 새로운 테이블에 복사하여 생성하는 방법입니다.즉, 새로운 테이블을 만들면서 동시에 데이터를 삽입하는 역할을 합니다. CTAS의 기본 구조는 다음과 같습니다CREATE TABLE new_table AS SELECT * FROM existing_table; 예시를 들기 위해, 아래 쿼리로 테이블을 하나 생성하고, 값을 넣어보겠습니다.create table sub (idx INT AUTO_INCREMENT primary key,name VARCHAR(20),score double);insert into sub(name, score) values('algorithm',4.0),('Operating System',3.5),..
-
SALT 암호화CS/웹 보안 2025. 3. 17. 07:27
Salt 암호화란?Salt 암호화는 비밀번호 해싱(Password Hashing) 과정에서 추가적인 보안 강화를 위해 임의의 데이터(Salt) 를 추가하는 기법입니다. 단순 해싱만 수행하면 동일한 비밀번호는 항상 같은 해시 값이 생성되지만, Salt를 사용하면 같은 비밀번호라도 서로 다른 해시 값을 만들 수 있습니다. 1. 왜 Salt가 필요한가?비밀번호를 안전하게 저장하기 위해 해시 함수를 사용하지만, 단순 해싱에는 몇 가지 보안 문제가 있습니다.(1) 무차별 대입 공격(Brute Force Attack)공격자가 가능한 모든 비밀번호를 해싱하여 미리 저장한 후, 이 값을 비교하여 비밀번호를 찾는 방법.해시 함수만 사용하면 공격자는 사전(Dictionary) 공격을 통해 쉽게 비밀번호를 알아낼 수 있음...
-
Spring JPA가 Auto Configuration(자동 설정) 되는 과정 + Connenction, CPCS/Spring 2025. 2. 27. 16:49
JPA 연결 과정Data를 연결하고 관리하기 위해서는 원래 다음과 같은 과정들을 거쳐야 합니다. 1. yml 설정datasource를 연결하기 위한 설정 정보를 yml로 작성합니다. 2. DataSource 생성JPA가 DB와 연결되기 위해서는 DataSource가 필요합니다.따라서 DataSource를 생성하고 빈으로 등록합니다. 3. EntityManagerFactory 생성JPA는 EntityManagerFactory를 통해 EntityManager를 생성하며, 이 과정에서 DataSource를 사용합니다.Spring Boot에서 LocalContainerEntityManagerFactoryBean을 이용해 EntityManagerFactory를 생성합니다. 4. TransactionManager..
-
트랜잭션 격리 수준CS/DataBase 2025. 2. 23. 01:31
트랜잭션 격리 수준에 따라 발생되는 문제Dirty Read다른 트랜잭션에 의해 수정되었지만, 아직 커밋되지 않은 상태의 데이터를 읽는 것을 말합니다. 1. 1번 트랜잭션 시작2. 1번 트랜잭션이 데이터 삽입3. 2번 트랜잭션 시작4. 2번 트랜잭션이 데이터 조회 => 1번 트랜잭션이 추가한 데이터가 읽힘5. 1번 트랜잭션 ROLLBACK => 데이터 불일치 Non-Repeatable Read하나의 트랜잭션 안에서 반복읽기가 불가능한 현상입니다. 1. 1번 트랜잭션 시작2. 1번 트랜잭션이 데이터 조회 -> 2개의 행 반환SELECT * FROM name WHERE idxidxnickname1sunnuy2stella 3. 2번 트랜잭션 시작4. 2번 트랜잭션이 데이터 편집UPDATE name SET nic..