// 인접 리스트를 이용한 그래프 구현 class Node { int id; // 노드가 id 들고 있음 주의 -> 추후 dfs,bfs 시 방문배열체크용 ! Node next; public Node(int id, Node next) { this.id = id; this.next = next; } } class MyGraphList { char[] vertices; Node[] nodeList; int idx; public MyGraphList(int size) { this.vertices = new char[size]; nodeList = new Node[size]; idx = 0; } public void addVertex(char c) { if (idx == this.vertices.length) {..
분류 전체보기
class GraphMatrix { char[] vertices; // 노드 int[][] matrix; // 인접 행렬 int idx; public GraphMatrix(int size) { this.vertices = new char[size]; this.matrix = new int[size][size]; this.idx = 0; } public boolean isFull(){ return this.vertices.length == idx; } public void addVertex(char c) { if(isFull()){ System.out.println("Graph is full"); return; } this.vertices[this.idx++] = c; } public void addEdg..

안녕하세요 ~ 린내입니다.오늘은 식별관계 복합키인 DB 구조에서 JPA 사용 시 유의 사항들에 대해 알아보겠습니다. 식별관계 복합키 DB 구조는 주로 레거시 환경에서 볼 수가 있는데요.https://techblog.woowahan.com/2595/위의 프로젝트와 흡사한 경우를 맞닥뜨렸을 때에 일어날 수 있는 상황과 유의사항에 대해 정리해보겠습니다. 일단 식별관계 복합키로 부모 자식 엔티티를 만들어 보겠습니다. 위의 우아한 형제들 기술 블로그에서 언급해주셨던 것처럼저도 @IdClass를 사용하는 것이 가독성이 더 좋고 사용하기 편리하다고 생각하여식별관계 복합키의 엔티티 표현은 @EmbededId가 아닌 @IdClass를 사용하겠습니다. cf) 부모 클래스인 경우 복합키 구조에서 @GeneratedValue..
// AVL 트리 import java.util.LinkedList; import java.util.Queue; class Node { int key; int height; Node left; Node right; public Node(int key, Node left, Node right) { this.key = key; this.height = 0; this.left = left; this.right = right; } } class AVLTree { Node head; public int height(Node node) { // 노드가 null일 때 높이는 -1 if (node == null) { return -1; } return node.height; } // LL 케이스 public Node ..
class Node2 { int data; Node2 left; Node2 right; public Node2(int data, Node2 left, Node2 right) { this.data = data; this.left = left; this.right = right; } } class BinarySearchTree2 { Node2 head; public BinarySearchTree2(int data) { this.head = new Node2(data, null, null); } public Node2 addNodeRecursive(Node2 cur, int data) { if (cur == null) { return new Node2(data, null, null); } if (data < ..
GROUP BY GROUP BY구는 자르기와 집약이라는 두 개의 기능으로 구분된다. -> GROUP BY는 필드로 테이블을 자르고, 잘라진 조각 개수 만큼의 레코드 수에 대한 작업 결과를 출력함. SELECT address, COUNT(*) FROM Address GROUP BY address; -- 결과 address | count ---------------- 서울시 | 3 인천시 | 2 부산시 | 1 -> address라는 필드의 레코드 종류가 3가지라면 3가지로 잘리고, 집약되어 3개의 레코드만 출력됨! PARTITION BY PARTITION BY를 사용하는 윈도우 함수는 자른 후에 집약하지 않음. -> 잘려진 레코드의 종류별로 작업이 처리되나, 출력 결과는 집약되지 않으므로 기존 레코드 개수만..

안녕하세요. 이번 게시글에서는 클라이언트가 요청을 보냈을 때 WAS에서 일어나는 작업에 대해 알아보도록 하겠습니다. 특히 디버거를 사용해서 직접 코드를 살펴보며 자세히 알아볼게요~! 먼저 클라이언트에 요청이 일어난 후 내부적으로 진행되는 순서를 아래와 같이 그려보았습니다.. 저번 게시글에 그렸던 그림과 약간 차이가 있죠? 저번 게시글이 틀렸었습니다.. Connector와 ThreadPool을 별도의 모듈로 표현했었는데, Connector내부에 ThreadPool이 존재하는 것이었습니다.. (이전글 수정은 나중에...) - 각 모듈의 사양을 구분하기 위해서 Connector(Coyote) 모듈은 노란색, ServletContainer(Catailna)는 파란색, Spring은 초록색으로 표현했습니다. - ..
class Node { int data; Node left; Node right; public Node(int data, Node left, Node right) { this.data = data; this.left = left; this.right = right; } } class BinarySearchTree { Node head; public BinarySearchTree(int data) { this.head = new Node(data, null, null); } public void addNode(int data) { Node cur = this.head; Node parent = cur; while (cur != null) { if (data == cur.data) { System.out.p..
1. 직접 프록시 객체 작성 - 데코레이터 패턴 - 직접 작성하므로 프록시 대상 클래스마다 클래스 구현 필요.. public class UserServiceTx implements UserService{ UserService userService; // 타겟 오브젝트 PlatformTransactionManager transactionManager; public void setTransactionManager( PlatformTransactionManager transactionManager){ this.transactionManager = transactionManager; } public void setUserService (UserService userService){ this.userService..

이번 게시글에선 WAS가 어떻게 실행되고, 요청을 처리하는지 알아보겠습니다. 또한, 그 과정에서 WAS에 배포된 Spring 프로젝트를 어떻게 구동시키는지도 함께 알아보시죠,, WAS가 뭐야? - Tomcat… 우리는 면접 단골 문제로 web server와 web application server의 차이점에 대해서 외운 적이 분명히 있습니다.. web server는 정적 컨텐츠를 다루고, web application server는 동적 컨텐츠를 다룬다고 말이죠.. 그 후, 실무에서 WAS를 접할 땐 종종 이런식으로 접하게 됩니다. WAS 그거 스프링 서버 아냐? 톰캣? 아~ 그 고양이 그림~? 톰캣이 스프링 아니야? 응 아냐… 톰캣과 스프링은 분명 다른데 어디까지고 톰캣이고 스프링인지, 또한 각자의 구분..