전체 글 383

[Java] 출력 스트림과 입력 스트림 불일치

채팅 서버와 클라이언트를 구현하던 중에, 서버가 보낸 메시지를 클라이언트가 수신하지 못하는 문제가 발생했다. OutputStream에 메시지를 전달하는 Session 객체package main.server.session;import static main.server.config.ServerConstant.CHANGE_USERNAME;import static main.server.config.ServerConstant.CLOSE_CONNECTION;import static main.server.config.ServerConstant.FIND_ALL_USER;import static main.server.config.ServerConstant.INVALID_COMMAND_FORMAT_MESSAGE;impor..

[Spring/DB] 03. 트랜잭션 이해

3. 트랜잭션 이해#Spring/DB정리트랜잭션 - 개념 이해파일이 아닌 데이터베이스에 데이터를 저장하는 이유 트랜잭션하나의 거래를 안전하게 처리하도록 보장커밋(Commit): 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것롤백(Rollback): 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것트랜잭션 ACID트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장해야 함원자성: 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다.일관성: 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한..

Spring/DB 2025.03.25

[Spring] Spring에서 Bean Validation이 동작하는 내부 원리

Spring에서 Bean Validation이 동작하는 내부 원리#Spring/MVC엔티티 클래스에 Bean Validation 애노테이션 사용엔티티 클래스의 필드에 @NotNull, @Size, @Min, @Max 등과 같은 애노테이션을 붙이면, 해당 필드에 대한 제약 조건이 정의된다.public class User { @NotNull(message = "이메일은 필수입니다.") @Email(message = "올바른 이메일 형식이 아닙니다.") private String email; @Size(min = 2, max = 20, message = "이름은 2자 이상 20자 이하여야 합니다.") private String name; // Getter, Setter ..

Spring 2025.03.11

[Spring MVC] 스프링 MVC Redirect 처리 방법

스프링 MVC Redirect 처리 방법#Spring/MVC/Redirect/Redirect 처리 방법/1. HttpServletResponse의 sendRedirect()/2. ResponseEntity/3. RedirectView 직접 반환/4. “redirect:” 접두사/RedirectAttributes/1. Flash Attribute/2. Query Parameter 전달RedirectRedirect 는 클라이언트의 요청을 완전히 새로운 URL로 전달하여 처리하는 방식이다.웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동한다.Redirect 처리 방법1. HttpServletResponse의 sendRedirect()@PostMapping("..

Spring/MVC 2025.03.09

[Spring MVC] 스프링 MVC 기본 기능 정리

스프링 MVC 기본 기능 정리#Abstract/SpringMVC스프링 MVC 구조와 동작원리, 스프링 MVC가 제공하는 기능의 기본적인 사용법을 정리했습니다./스프링 MVC 구조/ArgumentResolver와 HTTP 메시지 컨버터/ArgumentResolver/HTTP 메시지 컨버터/스프링 MVC 확장/컨트롤러 등록/컨트롤러 등록 - Controller 인터페이스 구현(거의 안씀)/컨트롤러 등록 - HttpRequestHandler 인터페이스 구현(거의 안씀)/컨트롤러 등록 - @Controller, @RestController + @RequestMapping, @XXXMapping/HTTP 조회 방식/HTTP 요청 파라미터 조회/HTTP 요청 파라미터 조회 - 스프링 MVC/1. HttpServle..

Spring/MVC 2025.03.09

[자료구조] 자바 Collection 총 정리(자료구조, Iterator, Iterable, Comparator, Comparable)

컬렉션#Abstract/Java/Collection 인터페이스/List 자료 구조/ArrayList - 배열 리스트/연결리스트 - LinkedList/자바 List 인터페이스/자바 ArrayList/자바 LinkedList/Set/해시 알고리즘/자바의 hashCode()/자바 Set 인터페이스/Map 인터페이스/Stack - 사용 금지/Queue 인터페이스/Deque 인터페이스/Deque와 Stack, Queue/순회/Iterable, Iterator/자바가 제공하는 Iterable, Iterator/정렬 - Comparable, Comparator/컬렉션 유틸/Collection 인터페이스 정리Collection 인터페이스Collection 인터페이스는 java.util 패키지의 컬렉션 프레임워크의 핵..

[PS/BOJ] 1541번. 잃어버린 괄호 - C++[cpp]

문제 이 문제는 문자열 처리와 식의 값을 최소로 만드는 방법을 요구하고 있다.아이디어나올 수 있는 경우의 수를 생각해보자.1 + 2 + 3 + 4 -> 그대로 더한다.1 - 2 - 3 - 4 -> 그대로 뺀다.1 - 2 + 3 - 4-> (2 + 3)을 묶어버린다 1 - (2 + 3) - 4 = 1 - 2 - 3 - 4즉, - 가 한 번 나온 뒤로, 그 뒤에 오는 모든 수는 다 빼주면 된다.코드(중요!)아이디어는 대부분 다 떠올렸겠지만, 문자열 처리를 어떻게 할 지 고민인 분들이 많을 것이다.이 부분이 이 글을 쓰는 이유이기도 한데,구글링해서 나오는 코드 대부분은 아래와 같이 문자를 하나씩 입력받아 숫자, 연산자를 구분하고 있다.#include #include using namespace std; int..

PS/BOJ 2025.02.16

[Spring MVC] 타임리프 문법 정리

타임리프 몰아서 정리#Spring/Thymeleaf/타임리프 사용 선언/th:xxx=“value2”/타임리프 속성/th:href/th:onclick/반복 출력 - th:each/반복 상태 유지/내용 변경 - th:text/속성 변경 - th:value/속성 변경 - th:action/조건문 평가 - th:if, th:switch/텍스트 - text, utext/Escape/HTML 엔티티/Unescape/th:inline="none"/속성 값 설정/속성 추가/checked 처리">/블록 - /URL 링크 표현식 - @{...}/리터럴 대체 - |...|/변수 표현식 - ${...}/지역 변수 선언 - th:with/URL 링크 표현식2 - @{...}/URL 링크 간단히/타임리프 기본 객체/유틸리티 객체..

Spring/MVC 2025.02.13

Tailwind - 다크모드

Tailwind - 다크모드#Web/CSSTailwind는 다크 모드를 적용할 수 있는 유틸리티 클래스를 제공하며, 기본적으로 운영 체제의 선호도에 따라 다크 모드를 적용하거나, 사용자가 직접 선택할 수 있게끔 설정할 수 있다.예시: dark 유틸리티 Writes Upside-Down The Zero Gravity Pen can be used to write in any orientation, including upside-down. It even works in outer space. 평시와, 다크 모드가 활성화되었을 때 스타일을 각각 지정한다.다크 모드 전환 전략운영 체제 선호도 사용 (기본 전략,media)Tailwind는 기본적으로 운영 체제의 다크 모드 선호도에 따라 스타일을 ..

WEB/CSS 2025.02.13

Tailwind - 트랜지션, 애니메이션

Tailwind - 트랜지션, 애니메이션#Web/CSSTailwind에서는 간단한 유틸리티 클래스를 통해 Transition 효과를 적용할 수 있다.기본 사용법transition 클래스는 색상, 배경, 보더 등 여러 속성에 전환 효과 적용.duration-500은 전환 시간을 500ms로 설정합니다.hover:bg-blue-900은 마우스를 올렸을 때 배경색을 blue-900로 변경합니다.전환 속성 지정 (transition-property)transition-all, transition-colors, transition-opacity 등의 클래스를 사용하여 특정 속성만 전환되도록 할 수 있습니다. Hover metransition-colors는 색상 변경에만 전환 효과를 적용합니다.duration-5..

WEB/CSS 2025.02.13