728x90 All130 서블릿(Servlet)이란? 1. Servlet (서블릿) 서블릿은 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술을 말한다. 간단하게 서블릿은 자바를 사용해 웹을 만들기 위해 필요한 기술이다. 클라이언트가 어떤 요청을 하면 그에 대한 결과를 다시 전송해줘야 하는데, 이러한 역할을 하는 자바 프로그램이다. 예를 들어, 어떤 사용자가 로그인하려고 할 때 사용자는 아이디와 비밀번호를 입력하고 로그인 버튼을 누른다. 그때 서버는 클라이언트의 아이디와 비밀번호를 확인하고 다음 페이지를 띄워줘야하는데 이 역할을 수행하느 것이 서블릿(Servlet)이다. Servlet 특징 1. 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트 2. HTML을 사용해 요청에.. Tech/Java 2024. 3. 17. @EntityGraph와 Fetch Join Fetch Join 실무에서는 부가적으로 가져올 데이터들이 많아서 N+1문제가 많이 발생한다 -> fetch join으로 해결 N+1 문제란? 모든 Member를 가져오기 위한 쿼리(쿼리수 1개) + 각 Member의 Team이 모두 다르다면 Member 1명 당 Team 프록시 객체 초기화를 하기 위한 쿼리(쿼리수 n개) N+1 문제 해결: Fetch Join Member와 관련된 Team 모두 Select절에서 조회해 한방의 쿼리로 가져온다. MemberRepository 예시 @Query("select m from Member m join fetch m.team") List findMemberWithTeam(); 이렇게 되면 select절에 Member 필드 값 뿐만 아니라, Team의 필드 값까지.. Tech/JPA 2024. 3. 12. [프로그래머스]모음 사전 (level 2, 완전 탐색) from itertools import product def solution(word): answer = 0 word_list = generate_words() word_list.sort() # 사전순 정렬 for i, w in enumerate(word_list): if w == word : answer = i + 1 return answer def generate_words(): char_list = ['A', 'E', 'I', 'O', 'U'] words = [] for length in range(1, 6): # 1부터 5까지 길이의 문자를 만들 것임 for p in product(char_list, repeat=length): # repeat: 반복 횟수 -> 길이가 length인 조합을 생성함.. CS/자료구조&알고리즘 2024. 3. 11. @Modifying과 벌크 연산 @Modifying 이란? Spring Data JPA에서 사용되는 어노테이션으로, @Query 어노테이션을 통해 작성되어 변경이 일어나는 쿼리(Insert, Update, Delete)를 실행할 때 사용된다. @Modifying을 변경이 일어나는 쿼리와 함께 사용해야 JPA에서 변경 감지와 관련된 처리를 생략하고 더 효율적인 실행이 가능하다. JPA에서 벌크 연산은 단건 데이터를 변경(더티 체킹)하는 것이 아닌, 여러 데이터에 변경 쿼리를 날리는 작업을 말한다. @Modifying 어노테이션을 사용하여 벌크 연산을 수행할 수 있다. 예를 들어 게시글 아이디(lostFoundBoardId)를 통해 해당 게시글의 댓글을 모두 삭제하기 위해 벌크 연산을 수행할 수 있다. @Modifying(clearAuto.. Tech/JPA 2024. 3. 10. 스프링 순환 참조 에러 발생 및 해결 방법 사전 지식 @Bean 특징 @Bean이 붙은 메서드는 싱글톤이므로 여러번 호출되어도 동일한(하나의) 객체만 return된다고 알고있지만, @Configuration 클래스 내부에서 지정된 @Bean 메서드에만 한정되는 이야기이다. @Configuration 메서드 내부에 있지 않은 @Bean 메서드는 싱글톤을 보장받을 수 없다. 싱글톤 보장 원리 CBLIB(바이트 코드 조작 라이브러리)를 이용하여, @Configuration이 붙은 클래스를 상속한 임의의 클래스를 만들고 그 임의의 클래스를 빈으로 등록한다. 그렇게 빈으로 등록된 클래스 내부의 @Bean 메서드들은 Spring Container에 존재한다면 Spring Container에 존재하는 빈을 반환하고, 없다면 새로 생성하여 빈으로 등록 후 반환.. Tech/Spring 2024. 3. 1. 자바의 예외 처리 1. 자바에서 예외 처리 방법 자바에서 예외 처리란, 프로그램 실행 중 발생할 수 있는 예기치 못한 예외 발생에 대비한 코드를 작성하는 것이며, 예외 처리의 목적은 예외의 발생으로 인한 실행 중인 프로그램의 갑작스런 비정상 종료를 막고 실행 상태를 유지할 수 있도록 함 예외 처리(Exception Handling) 정의: 프로그램 실행 시 발생할 수 있는 예외 발생에 대비한 코드를 작성하는 것 목적: 프로그램의 비정상 종료를 막고, 정상적인 실행 상태를 유지하는 것 자바의 예외 처리는 예외가 발생한 메소드 내에서 직접 처리하는 방법 예외가 발생한 메소드를 호출한 곳으로 예외 객체를 넘겨주는 방법 사용자 정의 예외를 생성해서 처리하는 방법 1. 예외가 발생한 메소드 내에서 직접 처리 (try - catch.. Tech/Java 2024. 2. 26. Spring으로 게시판 만들기(1) : 개요 현재 진행하고 있는 프로젝트에서 분실물 찾기 게시판을 담당하여 구현하고 있다. 어떻게 보면 CRUD밖에 없어서 시시하다고 생각할 수 있겠지만 기본은 언제나 중요하다고 하니까. 스스로 기본기가 부족하다고 느꼈고 차근차근 다시 쌓아볼 예정이다. 아직 프로젝트를 완성하진 못했지만 지금까지 구현한 기능에 대해 정리하고, 고민했던 거나 궁금했던 걸 기록해보기 위한 목적으로 작성하게 되었다 ꒰⑅◡̎ ꒱𓈒𓏸 데이터베이스 우선 데이터베이스 설계부터 살펴보면, LostFoundBoard: 분실물 찾기 게시판 LostFoundBoardImage: 분실물 찾기 게시판 이미지 Comment: 분실물 찾기 게시판 댓글 (현재 고민하고 있는 게 초기에는 불필요한 관계라고 판단하여 Comment에서 Member 연관관계를 맺지 않.. Tech/Spring 2024. 2. 22. 메모리 관리 기법 및 단편화 메모리 관리 기법 연속 메모리 기법 프로그램 전체가 메모리에 연속적으로 할당되어야 하는 관리 기법 고정 분할 기법: 메모리가 고정된 파티션(길이)로 분할 필요한 용량보다 더 큰 메모리를 받으면 메모리 낭비 내부 단편화 발생 동적 분할 기법: 파티션들이 동적으로 생성 자신의 크기과 같은 파티션에 적재 메모리를 적재/해제 반복하면서 외부 단편화 발생 불연속 메모리 기법 프로그램 일부가 서로 다른 주소 공간에 할당될 수 있는 기법 Page: 프로세스를 고정된 크기의 작은 블록들로 나눴을 때, 그 블록들을 페이지라 함 Frame: 페이지 크기와 같은 주 기억장치 메모리 블록 Segment: 서로 다른 크기의 논리적 단위 가상 메모리 가상 메모리란 실제 메모리 크기와 관계없이 메모리를 사용할 수 있도록 가상 메모.. CS/OS 2024. 2. 18. [백준] 20310번: 타노스 (25점 반례) https://www.acmicpc.net/problem/20310 20310번: 타노스 어느 날, 타노스는 0과 1로 이루어진 문자열 $S$를 보았다. 신기하게도, $S$가 포함하는 0의 개수와 $S$가 포함하는 1의 개수는 모두 짝수라고 한다. 갑자기 심술이 난 타노스는 $S$를 구성하는 문자 www.acmicpc.net 1차 시도: 25점 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffere.. CS/자료구조&알고리즘 2024. 2. 15. 스프링 AOP(Aspect Oriented Programming) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것을 의미한다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예를 들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드들을 발.. Tech/Spring 2024. 2. 13. 최단 경로 알고리즘 비교 다익스트라 알고리즘 (Dijkstra's Algorithm): 특징: 다익스트라 알고리즘은 하나의 출발점에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘입니다. 음의 가중치가 없는 그래프에서 사용됩니다. 알고리즘 사용하는 상황: 음의 가중치가 없는 그래프에서 사용되며, 최단 경로를 찾아야 하는 경우에 활용됩니다. 알고리즘 동작 과정: 출발 정점을 기준으로 초기화합니다. 출발 정점에서부터 각 정점까지의 최단 경로를 갱신합니다. 방문하지 않은 정점 중에서 최단 거리가 가장 짧은 정점을 선택하여 방문합니다. 해당 정점을 경유로하여 인접한 정점까지의 거리를 갱신합니다. 위 과정을 모든 정점을 방문할 때까지 반복합니다. 벨만-포드 알고리즘 (Bellman-Ford Algorithm): 특징: 벨만-포드 알고리.. CS/자료구조&알고리즘 2024. 2. 11. [백준] 8979번: 올림픽 문제 유형은 구현, 정렬 문제 풀이 방법 나라, 금/은/동메달 개수, 순위 등을 저장할 클래스 (Medal)를 생성한다. 이때 동점자를 계산하기 위해 score 변수를 Medal 클래스 내에 정의한다. 금메달은 10점씩 은메달은 5점씩 동메달은 1점씩 부여해 총점을 계산한다. 우선 금/은/동메달을 기준으로 정렬한다. 금메달 수가 더 많은 나라 금메달 수가 같으면, 은메달 수가 더 많은 나라 금, 은메달 수가 모두 같으면, 동메달 수가 더 많은 나라 순위를 계산한다. - 각 나라의 score를 비교해서 동일한 경우 동점 국가와 동일한 등수가 되고, 그렇지 않다면 (자신보다 더 잘한 나라 수) + 1 이 등수가 된다. 결과를 알고 싶은 국가의 등수를 출력한다. package 구현; import java.io.. CS/자료구조&알고리즘 2024. 2. 4. 이전 1 ··· 4 5 6 7 8 9 10 11 다음 728x90 반응형