분류 전체보기
-
HashSet이란?알고리즘, SQL/알고리즘 2023. 12. 2. 23:59
개요 알고리즘을 공부를 위해 다시 한 번 정리해보고자 한다. Set이란? 데이터 자료구조 중 하나로 특정한 값들을 저장하는 추상자료형(interface)이다. Set은 비선형 구조이기 때문에 '순서'의 개념과 '인덱스'가 존재하지 않는다. 값들은 순서가 존재하지 않으며, 중복되지 않는다. 이는 수학에서 집합을 컴퓨터 구현한 것이다. 다른 모음(Collection)타입에서 특정원소를 검색하는 것이 주 업무인 반면, 집합은 대상 원소가 집합에 소속되어 있는지 여부를 검사한다. Set의 특성 데이터를 비순차적으로 저장할 수 있는 순열 자료구조 삽입(insert)한 데이터가 순서대로 저장되지 않는다. 수정 가능하다. 중복해서 삽입이 불가능하다.(중복값이 들어오면 하나의 값만 저장한다.) FastLookup이 필..
-
Spring AOP란 무엇인가?Java 2023. 11. 30. 22:24
개요 @Transactional을 정리하면서 AOP에 관한 내용이 많이 나왔는데, AOP를 따로 정리한 적이 없기 때문에 이번에 정리를 해보려고 한다. AOP란? AOP는 Aspect-Oriented Programming의 약자로 관점 지향 프로그래밍이라 불린다. 어떤 로직을 기준으로 핵심적인 관점과 부가적인 관점으로 나눠보고 그 관점을 기준으로 각각 모듈화 하겠다는 의미 주로 핵심 비즈니스 로직에서 횡단 관심사(Cross-cutting concerns)를 모듈화하고 분리하기 위한 목적으로 사용된다. AOP는 횡단 관심사를 별도의 모듈로 분리하여 개발자가 핵심 비즈니스 로직에 집중할 수 있도록 해준다. 위의 사진과 같이 흩어진 관심사, 횡단 관심사의 모듈화를 통해 핵심 비즈니스 로직을 분리한다. 관점 지..
-
@Transactional은 모든 예외에 rollback이 될까?Java 2023. 11. 29. 15:21
이전에 @Transactional이 무엇인가에 대해 간단하게 알아봤었다. 그런데 "@Transcational 어노테이션은 모든 예외에 rollback이 될까?" 라는 질문에 해당 내용을 좀 더 정리 해야겠다고 생각을 했다. "@Transcational은 모든 예외에 rollback이 될까?" 정답은 아니다. @Transactional은 디폴트로 RuntimeException(UnCheckedException)과 Error에 대해서 롤백 정책을 설정한다. 그렇기에 @Transactional의 기본값을 사용하면, CheckException이 발생했을 때 롤백이 되지 않는다. //메일 보내기 @Transactional(rollbackFor = {RuntimeException.class, Error.class}..
-
백준 3052번 : 나머지알고리즘, SQL/알고리즘 2023. 11. 28. 16:08
문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 문제보고 별 생각 없이 이중for문 사용하면 될 것 같아서 사용했는데, 잘 안돼서 이것저것하다가 2시간 정도 해맸다... 이게 풀 수 있을 거 같은데 안돼서 이악물고 혼자 풀..
-
[리팩토링] @Transactional 적용프로젝트/웹 ERD 프로젝트 2023. 11. 27. 22:12
개요 저번에 친구가 dao.saveMail(mailDto); 이후에 예외가 발생하면 어떻게 될까? - 첨부파일은 이미 저장되어 있는데 삭제되어야 할까? - DB에 보낸 메일정보를 저장은 삭제되어야 할까? 라는 문제를 줘서 @Transactional 에 대해서 찾아보면 정리를 좀 했었다. https://hsch19.tistory.com/13 @Transactional이란 무엇인가 개요 친구가 문제를 줬다. dao.saveMail(mailDto); 이후에 예외가 발생하면 어떻게 될까? - 첨부파일은 이미 저장되어 있는데 삭제되어야 할까? - DB에 보낸 메일정보를 저장은 삭제되어야 할까? 검색해 hsch19.tistory.com 그래서 이번엔 @Transactional을 사용해서 프로젝트를 리팩토링 해봤다...
-
백준 1157번 : 단어 공부알고리즘, SQL/알고리즘 2023. 11. 27. 12:34
https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 오답 import java.util.Scanner; public class Main { public static void ..
-
Java 입출력 Scanner와 BufferedReaderJava 2023. 11. 26. 23:59
자바에서 입출력을 배울 때 Scanner를 임포트해서 Scanner객체를 만들어서 사용했었는데, 코딩 테스트 준비를 위해 사람들 코드를 참고하는데, Scanner대신 BufferedReader를 사용하길래 정리를 해봤다. Scanner Scanner 클래스는 Java에서 입력을 쉽게 처리하기 위한 유틸리티 클래스이다. 키보드, 파일, 문자열 등 다양한 소스에서 입력을 읽을 수 있으며, 다양한 데이터 유형을 편리하게 파싱할 수 있다. BufferedReader BufferedReader 클래스는 Java 입력 스트림에서 문자를 읽기 위한 클래스이다. 버퍼를 사용하여 입출력 성능을 향상시키며, read() 메서드를 통해 한 문자씩이 아니라 한 줄씩 데이터를 읽을 수 있습니다. 속도 차이의 이유 Scanner..
-
@Bean과 @ComponentJava 2023. 11. 24. 12:20
개요 스프링에서 Bean을 생성할 때, @Bean어노테이션과 @Component어노테이션 두 개를 사용하는데, 둘의 차이점이 뭘까라는 생각이 들어서 정리해보고자 한다. @Component 싱글톤 클래스 빈을 생성하는 어노테이션으로 선언적(Declarative) 어노테이션이다. 패키지 스캔안에 선언적으로 어노테이션을 작성함으로서 "해당 클래스를 정의했으니 빈으로 등록해줘" 라는 뜻이다. @Component어노테이션은 클래스에 붙여서 해당 클래스를 스프링 빈으로 등록할 때 사용된다. 일반적으로 클래스에 직접 사용하며, 해당 클래스의 객체가 스프링 컨테이너의 빈으로 등록된다. @Component 어노테이션은 컴포넌트 스캔(Component Scan)과 함께 사용되어 클래스를 자동으로 스프링 빈으로 인식하게 만..