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..
자바

안녕하세요. 이번 게시글에서는 클라이언트가 요청을 보냈을 때 WAS에서 일어나는 작업에 대해 알아보도록 하겠습니다. 특히 디버거를 사용해서 직접 코드를 살펴보며 자세히 알아볼게요~! 먼저 클라이언트에 요청이 일어난 후 내부적으로 진행되는 순서를 아래와 같이 그려보았습니다.. 저번 게시글에 그렸던 그림과 약간 차이가 있죠? 저번 게시글이 틀렸었습니다.. Connector와 ThreadPool을 별도의 모듈로 표현했었는데, Connector내부에 ThreadPool이 존재하는 것이었습니다.. (이전글 수정은 나중에...) - 각 모듈의 사양을 구분하기 위해서 Connector(Coyote) 모듈은 노란색, ServletContainer(Catailna)는 파란색, Spring은 초록색으로 표현했습니다. - ..

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

알고리즘 문제를 풀다가 헷갈리는 상황이 생겼습니다.. 링크드 리스트, 큐, 데크 등의 선형 자료구조의 이미지를 떠올릴 때.. 어디가 앞이고 어디가 뒤인 거지? (front) LIST (last) //..? 혹은 (last) LIST (front) // 어디가 front야..? 위 상황에서 보통 add()와 addLast()라는 메소드가 있으니까.. 두 메소드는 반대의 기능을 하는걸까...? add-->> (front) LIST (last) (front) LIST (last) (last) LIST (front) (last) LIST (front) (front) LIST (rear) (front) LIST (rear) 4 [1, 2, 3] deque.removeFirst() ==> 1 [2, 3] deque..

안녕하세요~ 꾸준함의 미더덕입니다. 이전 게시물에선 Enum의 field name 자체로 의미를 가진 경우에 대하여 간단한 Enum 클래스를 적용해보았습니다. 이번에 리팩토링할 대상은, 값 자체로는 특정한 도메인 의미를 갖지 않는 코드값들에 대한 처리입니다. 일단 작성한 Enum 클래스들을 확인해볼까요? 상황) 상수명과 코드값이 일치하지 않음 @Getter@AllArgsConstructorpublic enum CategoryCode { CUSTOMER_INQUIRY("CT000001"), FREE_BOARD("CT000002"), REFUND_INQUIRY("CT000003"), //... private String code;} 위의 Enum클래스를 보시면, 상수명과 코드값이..

안녕하세요~ 꾸준함의 미더덕입니다. 이번 시간에는 레거시 코드들을 Enum Class을 사용하여 리팩토링 하는 시간을 가져볼까 합니다. (그런데, Enum을 Class라고 봐도 될까요? -> 맞습니다.. Enum은 추상클래스입니다..!) 기존을 하드코딩되어 배드 스멜 코드들을 Enum을 사용하여 클린하게 바꿔볼 것인데요.크게 두 부분을 봐볼까 합니다. 1. 비즈니스 로직상에서 Enum 활용 2. JPA 엔티티에서의 활용(@Converter 사용) 레거시 코드 예시 우선, 이번 게시물에서는 레거시 코드를 보면서 문제점이 되는 부분들을 찾아보겠습니다.(상황의 복잡성을 더하기 위해 복합키 설정까지 해보았습니다.) cf) 복합키 상황에서 GeneratedValue는 사용할 수 없습니다.복합 키를 갖고 ..