HikariPool 생성자 super(config); this.connectionBag = new ConcurrentBag(this); this.suspendResumeLock = config.isAllowPoolSuspension() ? new SuspendResumeLock() : SuspendResumeLock.FAUX_LOCK; this.houseKeepingExecutorService = initializeHouseKeepingExecutorService();super(this) HikariPool은 PoolBase를 상속받아 구현한 클래스로서 기본 값을 설정합니다. PoolBase(final HikariConfig config) { this.config = config; this.network..
HikariDataSource getConnection() isClosed if (isClosed()) { throw new SQLException("HikariDataSource " + this + " has been closed."); } private final AtomicBoolean isShutdown = new AtomicBoolean(); Determine whether the HikariDataSource has been closed. Returns: true if the HikariDataSource has been closed, false otherwise public boolean isClosed() { return isShutdown.get(); } isClosed는 커넥션 풀이 닫..
설정값은 어떻게 처리되나? application.properties 혹은 application.yml 의 값들은 어떻게 처리되는 것일까? 해당 내용을 자세히 확인해보고 싶으면 HikariConfig 을 참조 해주세요. 자주 쓰이는 값들 ✔autoCommit // Properties NOT changeable at runtime // private boolean isAutoCommit; public HikariConfig() { dataSourceProperties = new Properties(); healthCheckProperties = new Properties(); isAutoCommit = true; String systemProp = System.getProperty("hikaricp.conf..
AOP는 뭘까? 객체지향적인 코드를 다른 방식으로 구성한 방식. Call Exit 부분이 공통적으로 되어 있는 코드들이 있을 때 사용할 수 있는 기법 대표적으로 사용하고 있는 @Transactional 로그 찍을 때 그 외 AOP는 어떤 것을 지원할까? Before 특정 메소드가 실행되기 전에 대한 행동을 정의 After returning 특정 메소드가 정상적으로 실행되고 나서 일어날 행위를 정의 After throwing 특정 메소드가 실행되면서 에러가 났을 때 일어날 행위를 정의 After 특정 메소드가 실행되면서 정상적으로 끝나든 에러가 나듣 상관없이 일어날 행위를 정의 Around 특정 메소드 전 후의 행위를 정의 그렇다면 Spring AOP를 어떻게 정의해야 할까? Spring AOP의 목표는 ..
Spring Transactional 스프링 Transaction 처리는 PlatformTransactionManager를 구현한 클래스를 통해 처리한다. 이를 구현한 클래스는 DataSourcePlatformTransactionManager, HibernatePlatformTransactionManager, JpaPlatformTransactionManager 등 다양하게 존재한다. (여기에서도 느껴지는 스프링의 철학. 역할과 구현을 분리. PlatformTransactionManager라는 역할을 만들고 이를 구현한 클래스를 각 상황에 맞게 사용) 예외처리 Transactional 어노테이션을 감싼 메소드에서 RuntimeException의 경우에는 롤백이 일어나고, checkedException(가..
파이썬에서는 인터페이스를 통한 다형성의 성질을 잘 사용하지 않으며, 의존관계 주입에 대한 활용성이 많이 떨어진다.( Django Framework에서는 더욱이 그러한 것을 볼 수 있다.) 하지만 파이썬에서도 인터페이스를 통해 역할과 구현을 나누면 많은 이점을 챙길 수 있다. 이번에 실제로 회사 코드를 리팩토링을 하게 되면서 사용한 방식에 대해서 예를 들며 설명해보겠습니다. Before ( 리팩토링 이전의 모습) def do(self): number = self.line.number if number == 'One': result = self.do_One() elif number == 'Two': result = self.do_Two() elif number == 'Three': result = self...
저번 글에서 Read Commited에 대해서 알아보았다. https://vixxcode.tistory.com/236 [PostgreSQL] Read Commited 에 대해서 기본 내용 SQL 표준 안에서는 네 종류의 트랜잭션 격리 수준을 정의하고 있다. 격리수준 Dirty Read Nonrepeatable Read Phantom Read Serialization Anomaly PostgreSQL 지원 Read uncommitted 허용 가능 가능 가.. vixxcode.tistory.com 이번 글에서는 남은 트랜잭션 고립 레벨인 Repeatable Read, Serializable에 대해서 알아보는 시간을 가져보도록 해보겠습니다. 1. Repeatable Read Isolation Level 반복적..
필자가 다니고 있는 회사는 요즘 큰 문제점(?)을 가지고 있다. 트래픽이 증가하면서 예기치 못한 장애가 발생하면서 현재 작동하고 있는 애플리케이션에 대한 튜닝 작업을 해야하는 것이다. 제가 다니고 있는 회사에 있는 DevOps 엔지니어 분은 우선 해결책으로 현재 데이터베이스의 성능이 좋은 걸 쓰고 있으니 애플리케이션이 모든 Request를 받을 수 있게 증설하면 되지 않을까? 라는 것으로 시도하여 진행하였습니다. 확실히 이전보다 증설하면서 Request 처리량과 500 에러를 많이 줄일 수 있었다. 하지만 근본적인 이유는 아니였다. 필자 또한 같이 고민해보았다. 무엇이 문제였을까? DevOps 엔지니어 분께서 추가적으로 현재 애플리케이션이 제대로된 퍼포먼스를 보여주지 못하고 있다고 했다. 그래서 저는 이..
- Total
- Today
- Yesterday
- django
- BFS
- PostgreSQL
- dockerignore
- ubuntu
- docker-compose
- Celery
- 그래프
- 백준
- DRF
- 파이썬
- env
- Collections
- 면접
- docker
- setattr
- Pattern
- 자바
- 카카오
- headers
- Linux
- 알고리즘
- Spring
- Python
- postgres
- Command Line
- 2021 KAKAO BLIND RECRUITMENT
- thread
- Java
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |