전체 글
-
[SPRING] JPA의 영속성 컨텍스트study/spring 2020. 8. 30. 15:27
영속성 관리에서 가장 중요한 것은 2가지이다. 객체와 관계형 데이터베이스간의 매핑 영속성 컨텍스트 ( JPA 내부 동작 ) EntityManagerFactory와 EntityManager 클라이언트의 요청이 올때 마다 ( 즉, thread가 하나씩 생성될 때마다 ) EntityManager를 생성한다. EntityManager는 내부적으로 DB 커넥션 풀을 사용해서 DB에 접근한다. EntityManagerFactory JPA는 EntityManagerFactory를 만들어야 한다. 애플리케이션이 로딩되는 시점에 DB당 딱 하나만 생성해야 한다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("emf"); 그리고 WAS가 종료되는 시..
-
[SPRING] @SpringBootApplicationstudy/spring 2020. 8. 29. 23:04
스프링부트를 사용해서 백엔드 개발을 공부하고 있었지만 정작 내가 직접 구현하지 않는 부분에 대해서는 파악하지 못하고 있다는 것을 느꼈다. 그 부분들을 찾아서 정리해나가려고 한다. 그 첫 번째는 @SpringBootApplication 이다. @SpringBootApplication 스프링 부트 프로젝트를 만들면 자동으로 생성되는 애플리케이션 클래스에 선언되어 있는 어노테이션이다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @SpringBootApplication을 찾아들어가보면 @Target(E..
-
[프로그래머스] 숫자 게임 (08.29)algorithm/프로그래머스 2020. 8. 29. 22:16
문제 https://programmers.co.kr/learn/courses/30/lessons/12987 코딩테스트 연습 - 숫자 게임 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 � programmers.co.kr 접근법 A팀의 출전 순서가 공개가 되었기 때문에 A팀에 맞게 B팀을 조정해주면 된다. 정렬을 해야 비교하기 편하기 때문에 일단 둘다 정렬을 했다. A팀의 공개된 순서와 상관없이 B팀이 A팀을 이길 수 있는 경우의 수 중 최대값을 찾으면 된다. A팀을 조회할 인덱스와 B팀을 조회할 인덱스로 나눠서 while 문을 사용해서 풀었다. 코드 im..
-
[프로그래머스] 기지국 설치 (08.27)algorithm/프로그래머스 2020. 8. 27. 17:21
문제 https://programmers.co.kr/learn/courses/30/lessons/12979 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 접근법 처음에는 전파를 받지 못하는 구간을 큐에 저장해서 그 큐를 돌면서 기지국을 설치하는 방법으로 풀었으나 시간초과가 났다. 결국에는 다른 코드를 참고할 수 밖에 없었다. 참고한 코드는 stations 배열의 인덱스와 아파트를 도는 인덱스 두개를 사용해서 while문을 돌리는 코드였다. 자세한 설명은 주석에 작성하였다. 코드 시간초과 ..
-
CHAP7. 병렬 데이터 처리와 성능book/모던 자바 인 액션 2020. 8. 26. 23:56
7.1 병렬 스트림 스트림 인터페이스를 이용하면 아주 간단하게 요소를 병렬로 처리할 수 있다. 컬렉션에 parallelStream을 호출하면 병렬 스트림이 생성된다. 병렬 스트림이란 각각의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림이다. 아래는 숫자 n을 인수로 받아서 1부터 n까지의 모든 숫자의 합계를 반환하는 메서드 구현 예제이다. public long sequentialSum(long n){ return Stream.iterate(1L, i -> i + 1) //무한 자연수 스트림 생성 .limit(n) // n개로 제한 .reduce(0L, Long::sum); //모든 숫자를 더하는 스트림 리듀싱 연산 7.1.1 순차 스트림을 병렬 스트림으로 변환하기 순차 스트림에 p..
-
[프로그래머스] 경주로 건설 (08.26)algorithm/프로그래머스 2020. 8. 26. 20:53
문제 https://programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 접근법 처음에는 dfs로 풀었다. 이전 x좌표를 계속 가지고 가면서 x좌표가 변하..
-
[프로그래머스] 보행자 천국 (08.25)algorithm/프로그래머스 2020. 8. 25. 23:16
문제 https://programmers.co.kr/learn/courses/30/lessons/1832 코딩테스트 연습 - 보행자 천국 3 3 [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 6 3 6 [[0, 2, 0, 0, 0, 2], [0, 0, 2, 0, 1, 0], [1, 0, 0, 2, 2, 0]] 2 programmers.co.kr 접근법 혼자서 DFS로 풀었다. 시간초과가 났다. BFS로 풀려고 했다. 잘 풀리지 않았다. 결국엔 다른 사람이 짠 코드를 참고하여 dp로 풀었다. 최단 경로이기때문에 자동차는 오른쪽과 아래쪽으로 진행할 수 밖에 없다. 오른쪽으로 가는 경우의 수와 아래쪽으로 가는 경우의 수를 나눠 두 개의 배열로 만들었다. rightArr 배열에는 오른쪽으로만 가는..
-
CHAP6. 스트림으로 데이터 수집book/모던 자바 인 액션 2020. 8. 25. 19:24
6.1 컬렉터란 무엇인가? 이전 예제에서는 collect 메서드로 Collector 인터페이스 구현을 전달했다. Collector 인터페이스 구현은 스트림의 요소를 어떤 식으로 도출할지 지정한다. toList를 사용해서 리스트로 만들 수도 있고 groupingBy를 이용할 수도 있다. 6.1.1 고급 리듀싱 기능을 수행하는 컬렉터 collect로 결과를 수집하는 과정을 간단하면서도 유연한 방식으로 정의할 수 있다는 점이 컬렉터의 최대 강점이다. 스트림에 collect를 호출하면 스트림의 요소에 리듀싱 연산이 수행된다. Collector 인터페이스의 메서드를 어떻게 구현하느냐에 따라서 스트림에 어떤 리듀싱 연산을 수행할지 결정된다. Collectors 유틸리티 클래스는 자주 사용하는 컬렉터 인스턴스를 손쉽..