
설치 1. github에서 tar.gz 파일 다운로드 (https://github.com/yahoo/CMAK) 2. 압축 해제 후 설치한 폴더 내에서 ./sbt clean dist 명령어 실행 Cannot use JVMCI compiler: No JVMCI compiler found 명령어 실행 시 위 에러가 발생한 경우, 링크 참고 3. target/universal 경로에 생성된 .zip 파일을 원하는 위치에 압축 해제 4. conf/application.conf 파일 수정 (로컬에 주키퍼를 띄웠기 때문에 아래와 같이 수정) 5. ./bin/cmak 명령어 실행 후, localhost:9000 접속 ! @7jn3njc8f - Internal server error, for (GET) [/assets..

기수 정렬 (Radix Sort) ? 기수 정렬은 각 자리 위치를 하나씩 증가시키면서 숫자들을 정렬하는 방법이다. 안정 정렬에 속하며, 카운팅 정렬과 마찬가지로 값의 비교연산 없이 정렬한다. 기수 정렬의 단점은 다음과 같다. 제자리 정렬이 아니기 때문에 추가적인 메모리가 필요하다. 동일한 길이를 가진 숫자나 문자열이여야 한다. 정렬하는 숫자 자릿수 k 에 따라 O(kn) 의 시간 복잡도를 가진다. 기수 정렬 과정은 다음과 같다. 1의 자리 숫자를 비교해서 오름차순 또는 내림차순으로 정렬한 뒤, 큐 버킷에 삽입한 뒤 순서대로 뽑아 정렬한다. 그 다음, 10의 자리 숫자를 비교해서 동일하게 수행한다. 가장 큰 숫자의 자릿 수만큼 반복해서 수행한다. Code public static void r..

Proxy 클라이언트가 프록시 서버를 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템 또는 응용 프로그램 프록시 (Proxy) : 서버와 클라이언트 사이에서 대리로 통신을 수행하는 것 프록시 서버 (Proxy Server) : 중계 기능을 수행하는 서버 1. Forward Proxy 클라이언트가 인터넷에 접근하는 것이 아니라 프록시 서버가 요청을 받고 인터넷에 연결하여 결과를 클라이언트에 전달 (Forward) 해준다. 장점 보안 : 프록시 서버에서 In / Out Bound 패킷에 대한 보안 정책 (Content Filtering 등) 을 적용할 수 있다. 성능 : 프록시 서버 내부에 캐시를 유지하며 한 번 통신한 외부 서버의 이미지, 파일 등을 저장할 수 있다. 캐시에 ..

count(*) VS count(1) 차이가 없다. count(*) VS count(컬럼) count(*) : null을 포함하여 모든 Row 수를 카운트한다. count(컬럼명) : null을 제외한 Row 수를 카운트한다. Reference https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_count https://asktom.oracle.com/pls/apex/f?p=100:11:0::NO::P11_QUESTION_ID:1156159920245

Spring MVC? Model / View / Controller로 역할을 나누는 패턴이다. MVC 패턴의 목적은 Business Logic과 Presentation Logic을 분리하는 것이다. Business Logic : 어떤 특정한 값을 얻기 위해 데이터 처리를 수행하는 응용프로그램의 일부 (즉, 원하는 값을 얻기 위해 백엔드에서 일어나는 각종 처리) Presentation Logic : 화면상의 디자인 구성을 위한 처리 (즉, 화면을 보여주기 위한 처리) 역할 별로 코드를 분리하여 하나의 파일에 코드가 모이는 것을 방지하기 때문에, 가독성과 코드 재사용이 증가한다. 단점으로 View와 Model 사이의 높은 의존성 때문에 애플리케이션이 커질수록 복잡해지고 유지보수가 어렵다. Model Cont..

HomeBrew 설치 M1 칩 있는 맥북 /bin/bash -c "(curl -fsSL https://gist.githubusercontent.com/nrubin29/bea5aa83e8dfa91370fe83b62dad6dfa/raw/48f48f7fef21abb308e129a80b3214c2538fc611/homebrew_m1.sh)" M1 칩 없는 맥북 /bin/bash -c "(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 그런데 만약 M1 칩 있는 맥북에서 M1 칩 없는 맥북 설치 방법으로 한다면 아래와 같이 인식을 못한다. zsh: command not found: brew 그러면 아래 명령어를 입력..

팩토리 메서드 패턴? 객체 생성 코드를 별도의 클래스 또는 메서드로 분리하여 객체 생성 변화에 효과적으로 대응할 수 있는 디자인 패턴 등장 배경 여러 대의 엘리베이터가 있다고 생각해보자. 사용자가 버튼 (FloorButton) 을 눌렀을 때, 여러 대의 엘리베이터 중 하나를 선택하여 이동시켜야 한다. 여기서 주어진 요청 (목적지 층과 방향) 을 받았을 때, 여러 대의 엘리베이터 중 하나를 선택하는 것을 '스케줄링' 이라고 한다. 스케줄링은 여러 가지 전략이 있을 수 있다. ex) 목적지 층과 가까우면서 목적지 층의 방향으로 이동 중인 엘리베이터 선택 ElevatorManager 클래스 : 이동 요청을 처리하는 클래스 (ThroughputScheduler 객체, ElevatorController 객체 복수..

데코레이터 패턴? 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우, 필요한 기능들만을 골라 조합하여 설계하는 디자인 패턴 ex) 기본 도로 표시 기능 (+ 차선 표시, 교통량 표시, 교차로 표시, 단속 카메라 표시) 4가지 추가 기능이 있을 때, 이 들의 조합은 총 15가지가 된다. 데코레이터 패턴을 사용하면 이를 4가지 Decorator 클래스만 구현하여 객체 형태로 조합하여 추가 기능의 조합을 구현할 수 있다. 등장 배경 네비게이션에 아래와 같은 기능이 있다고 해보자. 그리고 이를 클래스 다이어그램과 코드로 표현하면 다음과 같다. 기본 기능 : 도로를 간단한 선으로 표시 추가 기능 : 도로의 차선을 표시하는 기능 // 기본 도로 표시 클래스 public class RoadDisplay { pub..