3.구현/Java or Kotlin 썸네일형 리스트형 [java] Collections like SQL 들어가기 Java에 배열, 맵, 셋들 사용해서 자료를 처리하는 중에 여러 조건으로 값을 찾을 경우가 있었다. 그 조건에 중간에 조금씩 계속 바뀌는 상황으로 자료 구조를 생각하면서 수정하기에 번거롭기 시작했다. 혹시 가벼우면서도 SQL 비슷한게 없나 찾아보았다. 물론 메모리 DB를 사용할 수 있지만, 너무 덩치가 커서 배보다 배꼽이 커지는 상황이다. 그러던 중에 Java Collection 라이브러리 중에서 SQL 쿼리와 비슷한 기능을 제공하는 라이브러리가 있었다. Java에는 간단한 자료 구조로 단순한 기능만 가진다. RDBMS는 기능은 풍부하지만, 간단한 처리에는 부담이 크다. 간단하지만 쉽게 memory db같은 형태의 자료 처리가 필요해서 찾은게 CQEngine(Collection Query Eng.. 더보기 [java] CompletableFuture 사용하기 들어가기 java.util.concurrent 패키지에는 비 동기 처리를 하기 위한 JDK 라이브러리를 제공한다. 그 중에서도 가장 간편하고 기능도 풍부한 CompletableFuture에 대해서 살펴보자. 작성자: ospace114@empal.com, http://ospace.tistory.com/ 단순한 예제 CompletableFuture는 완료가능한 작업을 지원하는 Future이다. CompletableFuture 클래스 선언이다. public class CompletableFuture extends Object implements Future, CompletionStage {...}Future와 CompletableFuture 인터페이스를 구현하고 있다. 대표적인 메소드인 complete()와 .. 더보기 Kotlin 배우기3 - Generic 들어가기 이번에는 Kotlin에서 Generic 부분을 다룰려고 한다. 이전 Kotline 배우기에 이어서 마지막으로 다룰 내용인데, 정리하는데 시간이 좀 걸렸네요. 가변성 부분이 직관적이지 않고, 내용이 정리안된 느낌이네요. 뭔가 어색한 글이지만 시작해보겠습니다. 작성자: ospace114@empal.com, http://ospace.tistory.com/ 제너릭 클래스 간단한 Box 클래스를 보자. 이 박스 클래스에는 임의 데이터를 저장해서 사용할 수 있다. Box에서 값을 설정하거나 조회할 수 있다. 만약 정수 데이터용 Box라면 아래와 같게 된다. data class IntBox(var value:Int)정수형이 아니라 문자열이거나 임의 객체라면 StringBox, FooBox 처럼 매번 Box .. 더보기 [Springboot] Spring boot WebFlux 사용하기 들어가기 Spring WebFlux은 Spring Framework의 모듈로서 비동기와 반응형 프로그래밍을 지원하며 작은 하드웨어 리소스에서 적은 수의 스레드로 동시성을 처리하는 웹 스택이다. 기존 Servlet API는 동기식 I/O형태로 처리되었지만 이를 비동기식으로 구성된 서버(예: Netty)에 의해 새로 구성된 API이다. 비동기 처리로 자원 사용 효율이 좋아졌지만 성능이 좋아진다는 보장이 없다. 다음과 장점이 있다. 비동기 처리에 의한 다중 요청 처리 반응형 프로그래밍으로 데이터 스트림 처리와 이벤트 기반 처리 유용 함수형 라우팅으로 간결하게 코딩 작성 가능 WebFlux에서는 크게 두가지 방식으로 사용할 수 있는데, 하나가 어노테이션을 사용한 방법과 다른 하나는 직접 라우팅 설정을 통한 방법.. 더보기 [spring boot] 다중 DB 사용하기: ApacheShardingSphere 활용 들어가기 자바에서 샤딩용 라이브러리로 많이 사용하고 있는 Apache ShardingSphere을 사용해서 다중 DB사용하는 방법을 살펴볼려고 한다. 여기서는 간단하게 맞보기로 살펴볼 예정이다. 작성자: ospace114@empal.com, http://ospace.tistory.com/ Sharding 이름에도 나오지만 Apache의 ShardingSphere는 샤딩에 많이 사용된다. 샤딩이란 데이터를 여러 DB 서버로 분산해서 처리량을 높이는 방법이다. 이런 샤딩은 데이터를 분산하는 방식에 따라 여러 종류로 구분할 수 있다. Vertical: 부하가 몰리는 테이블을 분리해서 다른 DB로 분산 Horizontal: 한 테이블 데이터를 여러 DB로 분산 샤딩하는 방법은 직접 연결 구현하거나 중간 프록시를.. 더보기 [spring boot] 다중 DB 사용하기: AbstractionRoutingDataSource 활용 들어가기 AbstractionRoutingDataSource을 사용해서 다중 DB를 구현하는 방식이다. 작성자: ospace114@empal.com, http://ospace.tistory.com/ 설정파일 구성 다중 DB에서 사용할 설정파일에 어떻게 설정값을 할당하는지 살펴보자. 다중 DB에 사용할 application.properties 내용은 아래와 같다. spring.datasource.master.jdbc-url = jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=UTC spring.datasource.master.username = foo spring.datasource.master.pasword = foopass spring.datasource.slave... 더보기 [spring boot] 다중 DB 사용하기: 설정 활용 들어가기 spring boot의 설정파일을 이용해서 다중 DB을 설정하는 기능이다. 이를 위해서는 순수한 spring boot 제공되는 설정은 1개 DB만 가능하기 때문에 그대로 사용하기에는 한계가 있다. 환경설정을 처리하기 위한 추가적인 작업이 필요하다. 작성자: ospace114@empal.com, http://ospace.tistory.com/ 설정파일 먼저 설정파일에 어떻게 설정할려고 하는지 먼저 살펴보자. 사용할 application.properties 내용은 아래와 같다. spring.datasource.db1.jdbc-url = jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=UTC spring.datasource.db1.username = foo spri.. 더보기 [spring boot] jackson대신에 gson으로 사용하기 들어가기 최근에 참고한 자료에 따르면 gson이 성능이 좋아져서 jackson보다 더 좋아졌다는 글이 있었다. 그래서 한번 spring boot의 json 매퍼를 변경해서 사용해보았다. 작성자: ospace114@empal.com, http://ospace.tistory.com/ 기본 환경 먼저 dependency을 추가하자. spring boot을 사용한다면 version을 사용하지 않아도 자동으로 버전을 잡아준다. 현재 기준(2022.07.06)으로 버전 2.8.8 이하는 vulerability가 있어서 사용을 권장하지 않는다. com.google.code.gson gson 그리고 기존 jackson은 spring-boot-starter-web에서 exclusions에 포함시켜서 제외시켜준다. org.. 더보기 이전 1 2 3 4 5 6 다음