분류 전체보기
낙관적 LOCK 과 비관적 LOCK - (JPA, Mysql)
낙관적 LOCK 과 비관적 LOCK - (JPA, Mysql)
2022.07.06먼저 알고 가면 좋은 것들 ACID https://hanamon.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98%EC%9D%98-acid-%EC%84%B1%EC%A7%88/ [데이터베이스] 트랜잭션의 ACID 성질 - 하나몬 트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛을 말한다. 데이터베이스 트랜잭션은 ACID라는 특성을 가지고 있다. ACID는 데이터베이스 내에서 일어나는 하나의 트랜잭션(transaction)의 안 hanamon.kr Transaction 격리수준 https://zzang9ha.tistory.com/381#:~:text=%ED%8A%B8%EB%9E%9C%E..
JPA - Proxy
JPA - Proxy
2022.07.02Proxy 란 ? porxy 클래스란 실제 클래스를 상속 받아서 만든 실제 클래스와 겉모양이 똑같은 클래스 이다. Client 입장에서는 진짜 객체인지 Proxy 객체인지 구분하지 않고 사용하면 된다는 특징이 있다. Proxy 구조 Proxy 객체는 실제 객체애 대한 참조 (Ref) 를 보관한다. 그리고 Proxy 객체의 메소드를 호출 하면 Prxoy 객체는 실제 Method 를 호출한다. Prxoy 객체 초기화 proxy 객체는 member.getName() 처럼 실제 값에 접근하려고 할때 데이터베이스를 조회해서 실제 엔티티 객체를 생성하는데 이것을 프록시 객체 초기화라 한다. 프록시 객체에 member.getName() 을 호출해서 실제 데이터를 조회한다. 프록시 객체는 실제 엔티티가 생성되어 있지 ..
Connection Pool 이해하고 사용하기
Connection Pool 이해하고 사용하기
2022.06.25connection pool 이란? client 에서 요청이 올때마다 매번 connection 을 맺게 되면 TCP/IP 의 3way handshake 가 발생하게 되고 그만큼 client 에게 응답이 늦어지므로 사용자의 편의성이 하락 할 수 있다. 그리고 Database 의 connection 이 무한하게 증가 함으로 그다지 좋은 방법은 아니라 실무에서는 필수적으로 Connection Pool 을 사용하여 Database 를 사용한다. Spring boot 2.0 의 Connection Pool spring boot 2.0 에서는 connection pool 의 기본을 hikaricp 를 사용하도록 되어 있다. hikaricp 가 궁금하시다면 밑에 링크를 참조하자 GitHub - brettwooldri..
Strategy pattern (전략 패턴)
Strategy pattern (전략 패턴)
2022.06.18Strategy pattern (전략 패턴) 은 Template pattern 의 단점을 보완하고자 나온 패턴이다. 먼저 Template pattern 의 단점이 무엇인지 알아봅시다 Template pattern 은 부모 클래스에 알고리즘의 골격인 템플릿을 정의하고, 일부 변경되는 비즈니스 로직을 자식 클래스에 정의 하도록 했다. 이렇게 하면 자식 클래스가 알고리즘 전체 구조를 변경하지 않고 특정 부분만 재정의 할 수 있다는 장점이 있는데 결국 상속과 오버라이딩을 통한 다형성으로 문제를 해결 하는 것이다. http://www.yes24.com/Product/Goods/65551284 이펙티브 자바 Effective Java 3/E - YES24 자바 플랫폼 모범 사례 완벽 가이드 - Java 7, 8, ..
합이 같은 부분집합(DFS : 아마존 인터뷰) - (golang)
합이 같은 부분집합(DFS : 아마존 인터뷰) - (golang)
2022.05.28문제 풀이 해당 문제는 subset(부분집합) 을 만들어서 전체 배열의 원소의 합을 2로 나누었을 때 부분집합 의 합과 똑같으면 YES 다르면 NO 를 출력 하는 방식으로 접근 해보았다. 먼저 부분집합을 만드는 방식에 있어서 해당 원소를 부분집합으로 포함 할지 안할지 이렇게 2진 트리로 재귀호출을 할수 있다. func SameSumSubSet(depth, sum int) { SameSumSubSet(depth+1, sum+array[depth]) SameSumSubSet(depth+1, sum) } depth 와 함께 sum 이라는 변수를 재귀호출 로 넘김으로써 depth 가 N 과 같아졌을때 총합 / 2 와 비교하기 위해서 사용한다. 첫번째 재귀 호출은 해당원소를 부분집합으로 사용하는 재귀호출이고 두번..
상속 관계 매핑 Entity 를 QueryDsl 에서 사용하기
상속 관계 매핑 Entity 를 QueryDsl 에서 사용하기
2022.05.23Java 에서 말하는 상속 개념이 SQL 에서는 존재하지는 않지만 Jpa 를 사용하여 상속 전략 을 사용하여 두 객체관의 관계를 매핑 하고 상속 관계 전략을 구현한 여러개의 Entity 를 Querydsl 을 사용하여 select 해보겠습니다. https://ict-nroo.tistory.com/128 [JPA] 상속관계 매핑 전략(@Inheritance, @DiscriminatorColumn) 상속관계 매핑 객체는 상속관계가 존재하지만, 관계형 데이터베이스는 상속 관계가 없다.(대부분) 그나마 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑이라 ict-nroo.tistory.com 부모 Entity @Getter @Entity @Inheritance(strategy = S..
[백준] 9663번 : N-Queen - Golang
[백준] 9663번 : N-Queen - Golang
2022.05.22https://st-lab.tistory.com/118 [백준] 9663번 : N-Queen - JAVA [자바] www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하.. st-lab.tistory.com 해당 블로그를 참조하여 문제를 해결 하였습니다. 처음에는 2차원 배열을 사용하여 문제를 해결 하려고 하였는데 DFS 의 특성상 깊이를 행 for 문을 사용하여 열을 검사하는 방식으로 풀면 1차원 배열로도 해당 문제를 풀수 있엇습니다. package main import ( "bufio" "fmt" "math" ..
Docker hub 에 Image Push 하기
Docker hub 에 Image Push 하기
2022.05.05Kubernetes, Docker, CI/CD 에 많이 활용되는 docker push, docker pull 을 하기 위해서 docker image 원격 저장소에 이미지를 push 하는 방법을 소개 하겠습니다. 제일먼저 필요한 것은 docker hub 에 계정이 없으신 분들은 계정을 생성해주셔야 합니다. https://hub.docker.com/ Docker Hub Container Image Library | App Containerization Build and Ship any Application Anywhere Docker Hub is the world's easiest way to create, manage, and deliver your team's container applications. ..
AWS - EC2 Volume 확장하기
AWS - EC2 Volume 확장하기
2022.04.27EC2 ubuntu 를 사용하던 도중 기본 Volume 을8GB 로 사용하다가 Docker 와 Redis 가 8GB 가득 잡아먹고 있어 docker-compose up 명령어가 먹질 않는 오류를 만났습니다. 이를 해결 하기 위해 EC2 Volume 을 늘려줬습니다. AWS EBS 로 들어와 Volume 을 확장하려는 인스턴스를 우클릭하고 볼륨 수정을 클릭합니다. AWS 에서 Volume 만 수정한다고 직접적으로 EC2 의 root Volumes 이 늘어나지는 않습니다. ec2 로 접속하여 root volume 크기를 확인합니다. df -h 그리고나서 확장된 Volume 을 확인합니다. lsblk 저는 이미 볼륨이 확장되어 있어 1000G 에 1000G 로 뜨지만 확장이 안되어 있는 분들은 두개의 사이즈가..
Go - Response body 를 Close 해야하는 이유
Go - Response body 를 Close 해야하는 이유
2022.04.26Go HTTP 클라이언트는 응답 상태와 헤더를 Network socket 으로 부터 읽고, 읽은 데이터는 응답 객체에서 바로 사용할 수 있습니다. 하지만 클라이언트가 자동으로 Response body를 읽지는 않습니다. Response body는 명시적으로 코드상에서 읽기 전까지는 소비되지 않은 상태로 남아 있으며, Response body를 닫게되면 읽지 않은 바이트를 그대로 소비합니다. Go HTTP 클라이언트가 socket을 닫을 때 암묵적으로 Response Body를 소비하는 것이 잠재적으로 문제가 될 수 있습니다. 예를 들어, GET method 로 파일을 요청하고 서버로부터 응답을 받았습니다. 응답의 Content-Length 헤더를 읽었는데, 파일이 기대한 것보다 훨씬 크다는 것을 알았습니..
Easy - 9 . is palidrome (with golang)
Easy - 9 . is palidrome (with golang)
2022.04.21Given an integer x, return true if x is palindrome integer. An integer is a palindrome when it reads the same backward as forward. For example, 121 is a palindrome while 123 is not. Example 1: Input: x = 121 Output: true Explanation: 121 reads as 121 from left to right and from right to left. Example 2: Input: x = -121 Output: false Explanation: From left to right, it reads -121. From right to l..
AWS- VPC, Routing table, Internet Gateway 설정하기
AWS- VPC, Routing table, Internet Gateway 설정하기
2022.03.19VPC 설정 ipv4 에서 192.168.0.0/24 로 255개의 IP 를 할당 할 수 서브넷을 만들어 줍니다 VPC 를 생성하게 되면 그림에서 보게되는 가장큰 네모인 VPC 라는 녀석을 만들게 되었습니다. 방금 만든 VPC 의 기본 라우팅 테이블을 살펴보게 되면 VPC 대역대에 있는 것에 대해서는 내가 통신을 해줄수 있어 라고 설정되어 있습니다. 서브넷 생성하기 방금 만든 VPC 를 선택해주세요 총 4개의 서브넷을 생성 할 예정이고 2개의 서브넷은 public 하게 만들고 2개의 subnet 은 private 하게 만들예정입니다. 서브네팅 테이블에서 26 은 64 개의 ip 를 할당한다는 뜻입니다. 그 다음 subnet 은 64 개 를 한당한 뒤부터 192.168.0.64/26 으로 할당합니다 가용영..