일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- 의존성역전원칙
- Test
- Convariance
- 객체지향
- 돌연변이 테스팅
- 코틀린
- resize image with go
- Java
- kotlin
- hugo 로 블로그
- JPA
- standard input
- Pitest
- IntelliJ
- 공짜블로그
- 코틀린 in
- output stream
- change refresh rate
- image resizer with go
- 개인블로그 hugo
- InnoDB
- cli 만들기
- Mutation testing
- 코틀린 노트북
- MySQL
- resizer 구현
- ruby
- standard output
- 코틀린 out
- Today
- Total
목록Spring (14)
Rlog
오늘은 간단하게 형태소 분석기 까지는 필요없는 자동완성 기능을 만들때 빠르게 만들 수 있는 방법을 해보려고 한다. 실제로 회사에도 적용한 방법이다 :) Ngram-Parser 를 택한 이유 일단 MySQL 에 ngram parser 를 이용한 방법인데 ngram parser 를 선택한 이유는 아래와 같았다. 첫째, 자동완성으로 검색되야 할 데이터 들이 MySQL 에서 관리되야 할 대상들이였다. -> 사실 NoSQL 로 가져가면 대표적으로 ES 형태소 분석 parser 나 빠른 검색등이 가능하다고 알려져 있으나 내 조건은 위와 같았다. 두번째, 딱히 ES 를 이것만을 사용하자고 추가하기에는 자원의 낭비이다. -> 굳이 MySQL 로도 가능한데 얼마 차이 안나는 성능때문에? 의문이다. 그리고 ROW 수가 적..
Spring 면접 하면 잘 등장하는 단골 질문 중 하나이다. 이 개념을 이해하기 위해서는 일단 Proxy 디자인 패턴에 대해서 간단하게 짚고 넘어가야 한다. 우리가 흔히 볼 수 있는 Server-Client 형태는 아래와 같다. Client 는 Server 에 요청을 보내고, Server 는 요청을 처리한다. 만약 객체 세상으로 가져온다고 했을때는 아래 그림처럼 A 객체가 B 객체에게 협력을 요청하는 것일 수 있다. 근데 만약 B 객체는 너무나 은밀한 친구라 중간에 누군가 자신이 한것처럼 대신 행동을 하는 척 해줬으면 좋겠다 라고 해보자. 그렇다면 A 객체는 B 객체와 이야기 하는것 같지만 사실은 대리자가 대신 해주고 있는 것으로 객체를 설계 해주어야 할 것이다. 위와 같은 설계가 될 것 이다. 하지만 ..
회사 프로젝트를 진행하던 동시성 문제를 해결하기 위해 분산락이 필요할 것 같다는 판단이 들었습니다. 분산락이란 무엇일까요? 아주 가볍게 설명하자면 예를 들어, 가게는 하나의 주문만 받을 수 있는데 A 손님과 B 손님이 0.0001 초차이로 주문을 한다고 해봅시다. 근데 가게에 있는 주문 기계는 주문이 들어오면 이미 주문을 받았는지를 체크하고 주문 수락을 누르는 프로세스라고 해봅시다. 하지만 주문을 받았는지 체크하기 위해서는 대략 0.1 초정도의 시간이 필요합니다. 그래서 가계기계는 A 손님의 주문과 B 손님의 주문간의 간격이 0.0001 초 밖에 되지 않아서 A 주문과 B 주문을 동시에 받게되는 상황이 발생합니다. 만약 지금과 같은 상황이면 주문을 받는 순간 뭔가 Lock 을 걸어 제어가 가능할 것 입니..
회사에서 Spring Batch 를 통해서 DB Column 들을 CSV 로 전환해서 뽑을 필요가 있었다. 일단 간단하게 DB 에서 값을 읽어와서 CSV 로 만드는 작업을 해보자. @Entity @Table(name = "user") class User( name: String, email: String ) { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null @Column(name = "name", length = 20) var name: String = name @Column(name = "email", length = 30) var email: String = email override fun toString()..
이번에 Spring MultiModule 을 진행하면서 계속해서 Jpa 설정에 관한 오류를 먹고 있었다. 아무리 application.yml 에 설정을 해도 설정이 안먹는 오류가 있었는데 위와 같이 설정을 해줘도 DataSource URL 이 없다고 나온다. 일단 멀티모듈 구조의 패키지를 한번 살펴보도록 하자. 일단 Api 는 Web 계층으로 쉽게 말하면 Controller 계층에 가깝고 Service 와 Entity 는 이름 그대로 Entity(Persistence 계층) , Service(Domain Layer) 라고 생각하면 편하다. 문제는 Service 에서도 Transactional 을 사용해야 해서 JPA 설정을 가지고 있어서 처음에는 아 Service Module 에도 entity 의 app..
A Module 에서 B Module 의 빈이 Resolve 안되는 경우 현재 내 디렉토리 구조는 아래와 같다. 여기서 Service 에서 Entity 즉 PersistenceLayer 에 대한 Dependency 를 주입받아야 했다. 그런데 Service 계층에서는 Entity 계층에 대한 Bean 의존성을 해석하지 못하고 있었다. 아래 사진처럼. 이유는 무엇일까? 바로 Service 계층에 Bean 을 Resolve 하는 과정에서 스캔대상에 Entity Module 이 포함되어 있지 않기 때문이다. 따라서 우리는 ComponentScan 의 basePackage 에 entity Module 도 추가해주어야 한다. 느낀점 멀티 모듈 Project 를 하면서 Spring 에 대한 지식이 생각보다 높지 않..