일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 카카오인턴
- Java
- 구현
- 11723
- 가장먼노드
- Algorithm
- 쇠막대기 문제
- BinarySearch
- 징검다리
- 프로그래머스
- 스프링
- 이진검색
- 플로이드워셜
- Spring
- 알고리즘
- 플로이드와샬
- 스프링프로젝트 시작하기
- 이진탐색
- sope
- 그래프
- 전화번호 목록
- Singtone
- 스프링이란
- 자바
- 토비의스프링
- 백준
- Spring이란
- @Profile
- bitmasking
- 카카오
- Today
- Total
육감적 코딩
문제 설명 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있습니다. 모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고 싶습니다. 입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개변수로 주어질 때, 모든 사람이 심사를 받는데 걸리는 시간의 최솟값을 return 하도록 solution 함수를 작성해주세요. 제한사항 입국심사..
7.5 DI를 이용해 다양한 구현 방법 적용하기 7.5.1 ConcurrentHashMap을 이용한 수정 가능 SQL 레지스트리 멀티스레드 환경에서 안전하게 HashMap을 조작하려면 Collections.synchronizedMap()등을 이용해 외부에서 동기화해줘야한다. 하지만 이렇게 HashMap의 전 작업을 동기화하려면 고성능 서비스에서는 성능에 문제가 생긴다. → ConcurrentHashMap 사용이 권장된다. ConcurrentHashMap은 데이터 조작 시 전체 데이터에 대해 락을 걸지 않고 조회는 락을 아예 사용하지않는다. 7.5.2 내장형 데이터베이스를 이용한 SQL 레지스트리 만들기 ConcurrentHashMap이 멀티 스레드 환경에서 성능이 그리 나쁜편은 아니지만, 잦은 조회와 변..
매번 별 생각없이 사용했던 @Autowired 에 대해 정리해보았습니다. @Autowire를 사용하려면 주입되는 객체를 빈으로 등록해야 한다. 하나의 인터페이스를 상속한 같은 타입의 여러 클래스가 있다면 해당 타입으로 @Autowire를 사용하려면 특정 방법을 사용해야한다. 방법으로는 크게 세가지가 있다. 방법1. @Primary @Autowire로 주입받을 때, @Primary가 달린 타켓을 주입해준다 확인방법. ApplicationRunner을 implements 받아 컴포넌트로 등록하면, 실행시 해당 클래스의 run() 을 실행 시켜준다. 이를 활용하여 확인해 보자. @Component public class BookServiceRunner implements ApplicationRunner { @..
정리 시작 전 이해를 돕기위한 사전설명 프로젝트는 Spring Boot의 web starter만 dependency를 받아 사용. BookService , BookRepository class를 만들어 사용하였습니다. public class BookService { BookRepository bookRepository; public void setBookRepository(BookRepository bookRepository) { this.bookRepository = bookRepository; } } public class BookRepository { } 다양한 ApplicationContext 설정방법 ClassPathXmlApplicationContext 아주 고전적인 Spring Bean설정방..
기존에 이미 스프링을 사용하며 프로젝트를 진행해 왔지만, 더 깊게 스프링을 공부할 수록 자신이 스프링 프레임워크에 대한 이해가 부족하다는 걸 알게되었습니다. 다시 생각하고 복습할겸 공부 내용을 정리해 보려고합니다. IoC컨테이너 스프링이 제공. IoC컨테이너 안에 들어있는 객체를 빈이라고 부른다. 우리는 컨테이너 안의 빈을 가져와 사용할 수 있다. 더보기 공부하던 중 POJO란 단어를 접하게 되었고, 간단히 조사하여 정리해보았습니다. POJO 란 Plain Old Java Object, 말 그대로 해석을 하면 오래된 방식의 간단한 자바 오브젝트라는 말로 Java EE등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 “무거운” 객체를 만들게 된 것에 반발해서 사용하게 된 용어이다. 쉽게 말..
JVM 자바 가상 머신으로 자바 바이트 코드를 OS에 특화된 코드로 변환 바이트 코드를 실행하는 표준이자 구현체 JVM 구조 클래스로더 시스템 클래스 로더 시스템은 크게 세 가지로 볼 수 있습니다. 로딩 : 실제 클래스 파일에서 바이트 코드를 읽어오는 과정 링크 : 레퍼런스를 연결한다 초기화 : static 값들을 초기화 및 변수에 할당 메모리 스택 : 스택 영역에는 쓰레드 마다 런타임 스택을 만들고, 그 안에 메소드 호출을 스택프레임이라 부르는 블럭으로 쌓는다. 쓰레드를 종료하면 런타임 스택도 사라진다. (에러 발생 시 런타임 스택내역이 주르륵 뜨는 걸 볼 수 있습니다.) PC 레지스터 : 쓰레드 마다 쓰레드의 현재 실행할 스택 프레임을 가리키는 포인터가 생성됩니다. 힙 : 객체를 저장. 공유자원입니다..
6.5 스프링 AOP 지금 까지 해왔던 작업의 목표는 트랜잭션 코드를 깔끔하고 효과적으로 분리해내는 것이다. 투명한 부가기능제공 마치 투명한 유리를 사이에 둔 것처럼 다른 코드에서는 그 존재가 보이지 않지만, 메소드가 호출되는 과정에 다이내믹하게 참여해서 부가적인 기능을 제공해주도록 만드는 것. 6.5.1 자동 프록시 생성 투명한 부가기능을 적용하는 과정에서 발견됐던 거의 대부분의 문제는 제거했다. 하지만, 아직 해결할과제가 남아있다. 문제. 부가기능의 적용이 필요한 타깃 오브젝트마다 거의 비슷한 내용의 ProxyFactoryBean 빈 설정정보를 추가해 주는 부분. 예) transactionAdvisor transactionAdvisor 빈 후처리기를 이용한 자동 프록시 생성기 관심을 가질 만한 확장 ..
2장 테스트 2.1 UserDaoTest 다시보기 2.1.1 테스트의 유용성 테스트는 내가 예상하고 의도했던 대로 코드가 정확인 동작하는를 확인해서, 만든 코드를 확신할 수 있게 해주는 작업이다. 이를 통해 코드의 결함을 제거해가는 작업, 일명 디버깅을 거치게 되고, 최종적으로 테스트가 성공하면 모든 결함이 제거됐다는 확신을 얻을 수 있다. 2.1.2 UserDaoTest의 특징 public class UserDaoTest { public static void main(String args[]) throws SQLException{ ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml"); UserDao ..