일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- intellij recode issue
- java sentry
- java.util.list
- ResponseBody
- jpa
- @FunctionalInterface
- DeferredImportSelector
- EnableWebMvc
- sentry environment
- spring MVC
- java
- traceId
- Spring JPA
- cache sizes may be underestimated as a result
- map
- elasticsearch
- spanId
- intellij issue
- list
- CompletableFuture
- HashMap
- SpringMVC
- Spring Boot
- software.aws.rds.jdbc.mysql.Driver
- spring
- java lambda
- 센트리
- java recode with intellij
- java list
- kotlin
- Today
- Total
목록전체 글 (66)
du.study기록공간
현재 서버에서 nginx 를 이용해서 서비스 중인데, 인증서를 변경하고 계속 비밀번호를 입력하는것도 여간일이 아닙니다. 만약 한번 까먹기라도 하면 또 찾아야하는... 이 말도안되는 행동을 하지않기 위해 ssl 설정시 password 자동 설정을 하고 있습니다. server { listen 443; server_name domain~~setting ex) *.du.com; ssl on; ssl_certificate /usr/local/nginx/cert.pem; ssl_certificate_key /usr/local/nginx/key.pem; ssl_password_file /usr/local/ssl.pass; ...... ssl_session_timeout 5m; ssl_protocols TLSv1 TL..
이번에는 간단하게 스프링 부트 웹에서 제공하는 내장 Container를 변경하는법을 기록하려 합니다. 현재 회사에서는 성능 테스트 결과 및 사용 가이드등의 이유로 Undertow 내장 모듈을 사용하여 사용중에 있습니다. 이번에 스프링부트를 사용하는 도중, 기본으로 Tomcat을 사용하고 있어서 찾아보게 되었고 해당 부분을 Undertow로 변경하려 합니다. 우선 spring-boot-starter-web 을 살펴보면 다음과 같은 모듈을 내장하고 있습니다. 스트링 부트 웹모듈을 보면 내부적으로 tomcat을 내장하고 있습니다. 그리고 이로 인하여 Spring.factories 에 있는 EmbeddedWebServerFactoryCustomizerAutoConfiguration 를 호출하게됩니다. 이 속에서..
이번엔 간단하게 SpringBootApplication 에 대하여 정리해보려 합니다. 먼저 Spring boot 프로젝트를 실행하면 다음과 같은 @SpringBootApplication이 생성되며, 내부는 다음과 같습니다. @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoC..
stream을 사용하는 도중 자주 사용하지만 자꾸 까먹어 다시 찾아보는 기능을 기록하려합니다. 우리는 객체를 사용하면서 정렬을 하거나, 정렬을 하고 출력을 하는등에 대한 기능을 사용할 때가 많습니다. 이 기능은 스트림을 사용하면 간단하게 사용할 수 있습니다. 다음은 예제 코드입니다. // Integer List를 reverseOrder한 결과 public static void main(String[] args) { List list = new ArrayList(); list.add(1); list.add(2); list.add(45); list.add(6); list.add(3); list.add(7); list.add(11); list.add(13); list.add(1); list.stream().s..
이번에는 Map의 구현체인 ConcurrentHashMap에 대하여 작성하려합니다. 이전에 작성했던 HashMap을 보면 내부적으로 동기화를 보장해주는 부분은 없습니다. (즉 멀티스레드 환경에서 HashMap은 동기화를 보장해 주지 않는다.) 그렇다면 HashTable은 어떨까? HashTable의 메서드를 간략하게 살펴보면 다음과 같습니다. public synchronized boolean contains(Object value) public synchronized boolean containsKey(Object key) public synchronized V get(Object key) public synchronized V put(K key, V value) public synchronized V ..
프로젝트에서 reousrce로 등록한 데이터를 @value를 통해서 데이터를 받아 사용하고 있습니다. 이 기능 덕분에 각 존별로 다른데이터를 코드의 분기처리없이 사용하고 있습니다. @Configuration public class Config { @Value("${test.value}") private String test; } 여기서 든 첫번째 궁금증.. 1. 어디서 예를 set해주는걸까? 우선 결론부터 작성하면 빈 생성과정에서 AutowiredAnnotationBeanPostProcessor 해당 프로세서를 보는 과정에서 postProcessProperties 메서드의 metadata.inject(bean, beanName, pvs); 호출을 통해 @Value가 inject가 됩니다. 좀 더 과정을 ..
이번에는 Set에 대해 간단히 정리하려 합니다. 먼저 Set의 자료구조를 살펴보면 다음과 같습니다. 1. Set에 들어오는 값(Key)의 중복을 허용하지 않는다. 2. 저장 순서를 유지하지 않는다.(물론 구현체에 따라 순서대로 뽑을 순 있다.) Set을 구현한 구현체는 HashSet, TreeSet, LinkedHashSet, ConcurrentSkipListSet 등 다양하게 있으나 주로 사용하는 자료구조인 HashSet부터 정리해보려 합니다. HashSet 클래스는 해시 알고리즘을 사용하기에 검색속도가 매우 빠르며 (O(1) 또는 거의 근접) 합니다. 또한 해시를 사용하기 위해 내부적으로 HashMap 인스턴스를 이용하여 요소를 저장합니다. HashMap 관련 정리 : https://duooo-sto..
이번엔 List의 구현체중 Stack에 대해 기록하려 합니다. 정확하게 Stack 은 Vactor를 상속받은 구현체입니다. 하지만 stack에서 제공해주는 대부분의 기능은 거의 대부분 vector의 기능을 사용하고 있습니다. 먼저 일반적인 자료구조의 스텍을 먼저 살펴보면 가장 나중에 들어간 데이터가 가장 먼저 나오게되는 LIFO(Last In First Out)의 특징을 가지고 있습니다. 데이터를 넣는 과정을 push라고 칭하며 데이터를 빼는 작업을 pop이라고 부르게 됩니다. 그렇다면 이제 Stack을 사용할때 주로 사용하는 기능들을 살펴보겠습니다. 1. push public E push(E item) { this.addElement(item); return item; } //아래부턴 Vector내부 ..
저번에 확인했던 ArrayList이후로 LinkedList를 확인하려 합니다. 이번에도 ArrayList와 동일하게 GET, ADD, REMOVE 연산에 대해 확인해보려 합니다. 1. GET public E get(int index) { this.checkElementIndex(index); return this.node(index).item; } private void checkElementIndex(int index) { if (!this.isElementIndex(index)) { throw new IndexOutOfBoundsException(this.outOfBoundsMsg(index)); } } // checkElementIndex함수에서 호출 private boolean isElementI..
이번에는 자바에서 흔히 사용한는 컬렉션중 하나인 List를 정리하려합니다. 저는 List중에서도 거의 ArrayList만 사용을 하고 있었는데요, 최근 어쩌다 구현체를 제대로 다 모르는거 아닌가 싶은 생각이 들어서 몇가지 정리하려 합니다. 간단하게 List를 먼저 소개하면 다음과 같은 특징이 있습니다. 1. 인덱스를 통해서 원하는 List내부에 접근할 수 있다. 2. 중복을 허용하며, 순서가 순서가 있다. 3. 대표적인 구현체로는 ArrayList, LinkedList, Stack 등이 있다. 이번에 정리하려 하는 구현체는 아마 다들 매우 많이 사용하고 있을 ArrayList를 정리하려 합니다. 1.GET 연산 해당부분은 사실상 별다른게 없습니다. 인덱스 체크후 값을 가져오는 로직으로 되어있습니다. 2...