생각정리 (200) 썸네일형 리스트형 Spring과 Spring boot의 차이 Spring Framework 순수 자바 객체(Plain Old Java Object)만을 사용하여 복잡성을 제거하고, 단순하고 가벼운 코드로 기업용 애플리케이션을 개발하기 위한 목적으로 개발된 프레임워크입니다. 개발자가 직접 설정 파일을 작성하여 스프링 컨테이너를 구성하고, 필요한 빈 객체를 등록하고, 빈 객체 간의 의존성을 설정해야 합니다. 제어 역전 (Inversion of Control) 메서드나 객체의 호출 작업을 개발자가 결정하는 게 아니라 프레임워크에서 제한하는 것으로 스프링 컨테이너에서 Bean 객체를 통해서 프로그램의 제어흐름을 가지고 있는 것으로 제어의 역전이라고 할 수 있습니다. 스프링은 객체의 생명 주기 및 의존성 관리를 담당하는 IoC 컨테이너를 제공합니다. 제어 역전의 핵심 목적.. [알고리즘] DFS / BFS (깊이 탐색 / 너비 탐색) 그래프 탐색에서 각 정점을 지나가는 과정을 말하고 주로 사용되는 탐색 방법으로는 깊이 우선 탐색(Depth-First Search)과 너비 우선 탐색(Breadth-First Search) 2가지 알고리즘이 있다. 깊이 우선 탐색 (Depth-First Search) 일반적으로 스택과 재귀함수로 구현을 하고 재귀함수가 편하고 많이 사용되고 있다. 탐색 과정 하나의 점에서 한쪽 방향(연결 노드)으로 먼저 이동을 하고 갈 수 있는 끝 점까지 탐색을 한 뒤 다시 시작 지점으로 돌아와 다른 방향으로 끝 점까지 탐색을 시도한다. 진행 중 여러 방향으로 연결된 점이 있다면 시작 점과 같이 한쪽 방향씩 끝 점을 탐색하고 시작 점으로 돌아와 결과를 출력한다. 경로 탐색 깊이 탐색에서 경로 탐색에 경우에는 갈림길이 있을.. 공채에 대한 좋은 경험 처음으로 도전해 본 공채의 경험이 통과하진 못 하겠지만 많은 걸 배울 수 있는 경험이 되었다. 토스 공채에 대한 소식을 공채 시작하기 3일 전에 접하고 공채를 준비를 뒤늦게 해서 급한 감이 있지 않지만, 공고 안내에 있는 정보를 보고 과제형 테스트를 준비해 보았다. 과제형 테스트에 대한 정보는 명확하게 나와있지는 않지만, 회사에서 사용하는 기술등을 보고 유추를 하고 준비를 해야 했다. 공고를 읽어보고 알 수 있는 점 해당 회사에서 중요하게 생각하고 있는 기술 (어떤 서비스를 사용하고 중요하게 생각하는지)을 보고 만들 수 있는 비즈니스 로직 어떤 언어를 이용해서 테스트를 진행하는지. 주어진 시간을 통해 어느 정도 볼륨으로 나올지 (분명 주어진 시간에 비해 어려울 수 있어 빠듯하게 생각을 해야 한다.) 어느.. 사이드 프로젝트 : 중고 거래 플랫폼 - 게시글 좋아요 레디스 활용 레디스 활용 레디스를 보면서 다양한 곳에 활용하는 방법을 봤는데, 그중 Set을 이용해서 중복이 없는 데이터를 키값 별로 사용을 할 수 있어 게시글의 아이디를 키로 잡고 유저의 아이디를 값으로 해 해당 게시글을 좋아요를 누른 유저를 가지고 있는 Set 키가 만들어지고 Set이기 때문에 한 게시글에 동일한 유저는 한 번 더 저장되지 않는다. 이미 좋아요를 했을 경우, Set에 해당 값(유저의 아이디)을 삭제를 해주도록 해, 데이터 베이스에 직접적으로 계속 연결될 때보다 레디스를 이용해서 빠르고 데이터베이스에 부담을 덜어 줄 수 있다. 변경 전 코드 public ResponseEntity likeBoard(long id, long userId) { Board board = findBoard(id); User.. Spring Redis 자료구조 사용 의존성 주입 gradle에 redis의존성을 추가해 준다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' 레디스 주소 설정 레디스를 사용할 호스트주소와 포트번호를 지정해 준다. spring: data: redis: host: localhost port: 6379 레디스 설정 Lettuce Client를 이용해 Redis와 연결하고 사용하기 편하게 Redis Template를 수정해 사용을 한다. 크게 사용하는 시리얼라이저는 3가지로 프로젝트와 개인에 맞게 설정해서 사용을 하는 듯하다. GenericJackson2JsonRedisSerializer 제일 많이 사용하는 방법으로 class type에 상관없이 값을 불러올 수 .. 레디스 클라이언트 Jedis, Lettuce Jedis https://github.com/redis/jedis GitHub - redis/jedis: Redis Java client Redis Java client. Contribute to redis/jedis development by creating an account on GitHub. github.com https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.html JedisConnectionFactory (Spring Data Redis 3.2.3 API) postProcessConnection Post proce.. [알고리즘] Binary Search(이진 탐색 / 이분 탐색) Binary Search란? 이분 탐색 알고리즘은 정렬되어 있는 배열(혹은 특정 범위)에서 특정한 값을 찾아내는 알고리즘이다. 배열에 중간에 있는 값을 선택하여 찾는 값과 비교해서 값을 찾아낸다. 중간 값이 찾는 값보다 작으면 중간 값을 기준으로 오른쪽 범위에서 다시 탐색, 크다면 왼쪽 범위에서 다시 탐색을 한다. 탐색을 반복하면서 찾는 값이 일치할 때와 왼쪽 값이 오른쪽 값보다 커지면 종료가 된다. 이분 탐색 과정 해당 배열에서 찾는 값이 16일 경우, 인덱스 0과 5부터 시작을 하고 중간 값은 (0 + 5) / 2 = 인덱스 2가 된다. 중간 값 설정 일반적으로 mid = (left + right) / 2로 계산이 가능하지만, left + right가 자료형의 최댓값을 초과할 경우 오버플로가 발생해 .. [JAVA 알고리즘]BAEKJOON 2343번 기타 레슨 기타 레슨 문제 설명 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경우에는 강의의 흐름이 끊겨, 학생들이 대혼란에 빠질 수 있기 때문이다. 즉, i번 강의와 j번 강의를 같은 블루레이에 녹화하려면 i와 j 사이의 모든 강의도 같은 블루레이에 녹화해야 한다. 강토는 이 블루레이가 얼마나 팔릴지 아직 알 수 없기 때문에, 블루레이의 개수를 가급적 줄이려고 한다. 오랜 고민 끝에 강토는 M개의 블루레이에 모든 기타 강의 동영상을 녹화하기로 했다. 이때, 블루레이의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 단, M개의 블루레이는 모두 같은 크기이어야 한다. 강토의 각.. 이전 1 2 3 4 5 6 7 ··· 25 다음