본문 바로가기

Thread Dump & Heap Dump 참고: https://brunch.co.kr/@springboot/126https://brunch.co.kr/@springboot/98https://imasoftwareengineer.tistory.com/4 jstack을 사용해서 Thread Dump를 뜰 수 있다. $ ps -ef | grep java$ jstack pid > output.txt Thread의 Life cycle은 아래와 같다. NEW: Thread가 막 생성됨. start는 아직 안됨.RUNNABLE: start된 상태. run호출하면 RUNNING 된다.WAITING: 다른 Thread의 통지를 기다는 일시정지 상태.TIMED_WAITING: 주어진 시간동안 기다리는 상태.BLOCKED: 사용하려는 자원에 대해 락이 풀리길 기다림..
[Git] How to push another repository? (feat: expected committer email.. but..) 회사 프로젝트 개발을 bitbucket에서 형상관리하면서 타사의 bitbucket으로 소스를 push해야 하는 상황이 생겼다. 1. 계정이 있는 유저로 스위칭을 우선 한다. 일단 확인$ git config --global user.name$ git config --global user.email $ git config --global user.name "hong"$ git config --global user.email "hong@some.com" 2. remote set-url 을 통해서 원격 remote를 변경해 줄 수 있다. 일단 현재 repository 확인$ git remote -v $ git remote set-url origin https://bitbucket.some.com/scm/haha..
[Tutorial] JPA With Postgres and SpringBoot * 해당 내용들은 백기선님의 JPA 강의를 정리하면서 작성되었습니다. 1. Postgres 셋팅 # postgres docker docker run -d -p 5432:5432 --name postgres_boot -e POSTGRES_USER=kkwonsy -e POSTGRES_PASSWORD=pass postgres # into bashdocker exec -i -t postgres_boot bash -i : interactive -t : target # access# psql -U kkwonsy # database 생성postgres=# CREATE DATABASE springdata; # 확인 \list\l # database 선택\c springdata; 2. ORM # JDBC 대신 도메인 모..
Couchbase cluster with 2 vm VM을 두대만 할당 받음으로써 한 VM에는 multi instance 구성이 필요했다. 권장 사항은 아니지만 진행해보기로 했는데, 막히는 부분들이 많아 정리를 하게 되었다. 아래의 문서들을 참고 했다. Installing Multiple Instances on Linux PlatformsInstalling as non-root, non-sudoNetwork and Firewall RequirementsUsing user-defined portsInitializing the ClusterInstalling the Couchbase Server Cluster Running Couchbase Server Using Docker VM 1) 우선 rpm을 받자.$ wget https://packages.couch..
SpringBoot JPA (feat. h2 db) 이번 포스팅은 SpringBoot와 JPA를 다루는 방법에 대해 아주 간략하게 작성했다. 로컬에서 개발환경을 구축하면 H2 DB를 많이들 사용하곤 한다.H2 DB는 설치형이 아닌 SpringBoot에 Embedded 되어 있기 때문인 듯 하다.즉, 로컬에 MySQL 등의 설치가 안되어 있어도 프로젝트를 로컬환경에서 실행할 수 있어 외부 미들웨어에 대한 디펜던시를 없애는 장점이 있다. 디펜던시 걸기implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' 여기서 H2 DB는 일반적으로 웹형태의 콘솔을 사용하기 때문에 불편한 점이 많다. IntelliJ에서 Database Client..
Git, ssh keygen (Permission denied (publickey) https://zeddios.tistory.com/120 IntelliJ에만 github(or bitbucket) 암호를 넣어놓고 쓰고 있었다.그러던 중 프로젝트에 git submodule을 사용하는 부분이 있었는데 clone을 받고 나니 Permission denied (publickey) 문제가 발생했다.bitbucket에 ssh key를 넣어놓고 쓰면 되는 듯! $ ssh-keygen -t rsa -C "aaa@abc.com" (비밀번호를 입력하는 부분이 있는데 git 사용하면서 매번 입력해야 하는 번거로움이 있다.보안에 문제 없다면 입력없이 진행해도 된다. ) 파일이 생성 된다. 생성된 파일은 파일이나 디렉토리가 아니여서 cat을 써야 한다. $ cat /Users/~~~/id_rsa.pub 이제..
REST 기반의 간단한 분산 트랜잭션 구현 - 1편 (퍼옴) 이 글은 필자가 스프링 부트Spring Boot로 TCC를 구현해 본 것으로 부제를 달자면 '스프링 부트로 구현하는 TCC'이다.TCC 이외에 이벤트를 사용하여 구현하는 방법은 김형준 님의 글 대용량 환경에서 그럭저럭 돌아가는 서비스 만들기에 일부가 나와 있으니 참고하길 바란다.나의 REST 시스템 시나리오마이크로 서비스로 만들어진 온라인 쇼핑몰에서 아래와 같은 순서로 주문이 처리된다고 가정해보자.[1]1 단계 : 클라이언트는 주문 서비스(OrderService)에 주문을 요청한다.2 단계 : 주문 서비스는 재고 서비스(StockService)에 재고 차감을 요청한다.3 단계 : 주문 서비스는 결제 서비스(PaymentService)에 결제 요청한다.4 단계 : 주문 서비스는 구매 주문을 생성한다.주문을..
자바8 Optional 출처: http://www.daleseo.com/java8-optional-before/http://www.daleseo.com/java8-optional-after/http://www.daleseo.com/java8-optional-effective/ Java8이 나오기 이 전에는 얼마나 힘들게 null 처리를 했었나.. 아래 클래스를 살펴보자.Order 클래스는 Member 타입의 필드를 가지고,Member 클래스는 Address 타입의 필드를 가진다.class Order { private Long id; private Date date; private Member member; } class Member { private Long id; private String name; private Addre..