본문 바로가기

프로그래밍

(57)
jitsi on AWS jitsi on AWS install dockersudo yum -y upgrade sudo yum -y install docker docker -v sudo service docker start 2. install docker-composesudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-c..
mongo + ec2 + springboot `sudo vim /etc/yum.repos.d/mongodb-org-3.6.rep` ``` [mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc ``` `yum install -y mongodb-org` `service mongod start` `vi /etc/mongod.conf` ``` # network interfaces net: port: 27017 #bindIp: 127.0.0.1 bindIp: 0.0..
iTerm2, zsh for mac terminal Homebrew /usr/bin/ruby -e "$(curl -fsSL
[링크] Spring WebFlux와 Armeria를 이용하여 Microservice에 필요한 Reactive + RPC 동시에 잡기 https://d2.naver.com/helloworld/6080222?utm_source=gaerae.com&utm_campaign=%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%8A%A4%EB%9F%BD%EB%8B%A4&utm_medium=social
디자인 패턴 몇가지 정리 디자인 패턴을 쓰는 이유? 여러 프로그래머들의 경험과 지혜가 모여 문제를 해결하는 데 도움이 되도록 발전된 디자인이기 때문. 그리고 어떤 문제에 대해 해결책을 논할 때 디자인 패턴이 간결한 용어모음을 제공한다는 점 때문. 하지만 디자인 패턴을 잘못 쓰면 애플리케이션이 쓸 데 없이 복잡해질 수 있고, 비효율적으로 구현되버려 버그가 생기거나 성능이 나빠질 수도 있다. ———————— 싱글톤 인스턴스가 최대 한개를 넘지 않도록 한다 한번만 생성되었으므로 메모리 방지를 막을 수 있고, 다른 객체들이 자원 공유를 하기 좋다. 캐시, DBCP, 로그 객체 등에서 싱글톤 패턴을 사용한다. 다른 인스턴스들간에 결합도가 높아져 수정이 어렵고 테스트하기 어려워진다. 동기화 주의해야 한다. # 1. public class ..
MySQL Locking Reads 온라인 게임에서 두 유저가 돈을 교환한다고 하자. A가 1000원을 B에게 주기 위해 A는 1000원이 있는지 확인한 후 B는 1000원을 증감한 뒤 트랜잭션을 커밋한다. 트랜잭션 커밋 또는 롤백 전에 다른 프로세스가 A의 돈을 조회하는 경우 차감전의 돈을 알게 될 것이다. 이를 방지하기 위해 물론 isolation으로 처리할 수 있지만 이러 동시성을 고려해야 하는 경우가 많지 않으면 간단히 잠금 쿼리를 활용하면 된다. SELECT ... LOCK IN SHARE MODE; SELECT ... FOR UPDATE;LOCK IN SHARE MODE는 트랜잭션이 끝날 때 까지 ROW값이 변경되지 않음을 보장한다. 따라서 UPDATE, DELETE 는 대기해야 한다. SELECT는 동시에 여러 세션이 수행할 ..
자바 Thread 순서 보장하기 자바 Thread 순서 보장하기 -> Thread.join() https://defacto-standard.tistory.com/1191 public void main(String[] args) { Thread t1 = new Thread(new CThread(1)); Thread t2 = new Thread(new CThread(2)); Thread t3 = new Thread(new CThread(3)); Thread t4 = new Thread(new CThread(4)); Thread t5 = new Thread(new CThread(5)); t1.start(); t2.start(); t3.start(); t1.join(); t2.join(); t3.join(); t4.start(); t5.sta..
N+1 (블로그글 요약함) https://jojoldu.tistory.com/165 JPA N+1 문제 및 해결방안 안녕하세요? 이번 시간엔 JPA의 N+1 문제에 대해 이야기 해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+ jojoldu.tistory.com 하위 엔티티들을 첫 쿼리 실행시 한번에 가져오지 않고, Lazy Loading으로 필요한 곳에서 사용되어 쿼리가 실행될때 발생하는 문제가 N+1 쿼리 문제 join fetch를 사용하는 것 @Query("select a from Academy a join fetch a.subjects") 이 방법은 불필요한 쿼리문이 추가되는 단점이 있습니다. 2번째 방법은 @EntityG..