본문 바로가기

전체 글50

[Algorithm] 알고리즘 읽기와 분석(시간복잡도) ·코딩 테스트를 준비하면서 지금까지 알고리즘 문제를 풀 때 시간 복잡도/공간 복잡도 등에 대해서는 생각을 안 하고, 문제를 읽고 해당 문제의 조건으로 구현해서 제출하고 맞으면 다른 사람의 풀이 보고 넘어가고 틀리면 "왜 틀렸지?"라고 막연히 생각만 했었다. 그러다 좋은 강의로 인해 시간복잡도 등 분석에 대해서 알게 되어서 기록 및 공유하고자 한다. 먼저 시간 복잡도에 대해서 간단히 얘기하면, 시간 복잡도는 문제를 해결하는데 걸리는 시간과 입력의 함수 관계를 가리킨다. 시간 복잡도는 주로 빅-오 표기법을 사용하여 나타내며, 빅-오 표기법은 계수와 낮은 차수의 항을 제외시키는 방법이다. $$ O(N!) > O(2^N) > O(N^2) > O(NlogN) > O(N) > O(\sqrt{N}) > O(logN).. 2022. 3. 16.
JPA @MappedSuperclass @MappedSuperclass 엔티티를 구현하다 보면 보통 공통적으로 사용하는 속성들이 존재한다. 가장 많이 나오는 게 등록일, 수정일, 등록자, 수정자 등이 이에 해당한다. 이렇듯 공통 매핑 정보를 부모 클래스에서 상속받아 사용할 때 쓰인다. 부모 클래스는 테이블과 매핑하지 않고 자식 클래스에게 매핑 정보만 제공하는 것이다.(자식 클래스에서는 상속한 필드들도 칼럼으로 인식한다) @MappedSuperclass를 선언한 클래스는 엔티티가 아니다. 그리고 직접 생성해서 사용할 일이 없으므로 추상 클래스(abstract)로 만드는 것을 권장한다. 2022. 3. 7.
JWT Token(JSON Web Token) JSON 웹 토큰 JSON 웹 토큰(JSON Web Token, JWT)은 클레임(사용자 정보)을 안전하게 표현하기 위한 인터넷 표준(RFC 7519)이다. JWT 구조 헤 더 { "alg" : "HS256", "typ" : "JWT" } 서명 생성을 위해 어떤 알고리즘을 사용할지 식별한다. 토큰의 타입을 지정한다. 페 이 로 드 { "loggedInAs" : "admin", "iat" : 1422779638 } iss (Issuer)- 발급자 sub (Subject)- 주제 aud (Audience)- 대상 exp (Expiration Time)- 만료 시간 nbf (Not Before)- 활성 날짜 iat (Issued Time)- 발급 시간 jti (JWT ID)- 고유 식별자 다음 예는 표준 Is.. 2022. 3. 7.
JUnit @Before & @After @Before 애노테이션을 지금까지 테스트 실행 전 실행이 된다는 것 정도만 알고 있었는데, 박재성 님의 책을 통해 좋은 내용을 알게 되었다. JUnit을 사용할 때 인스턴스 생성을 위해 @Before 애노테이션을 활용한다. @Before 애노테이션을 사용하지 않고 필드(field)로 구현하는 방법도 단위 테스트는 성공한다. 각 단위 테스트를 실행할 때마다 인스턴스를 생성하는 것은 똑같기 때문이다. 위와 같이 작성해도 테스트는 성공한다. 하지만, JUnit은 초기화 작업을 위와 같이 구현하는 것을 추천하지 않는다. 인스턴스를 매 테스트마다 생성하는 이유는 테스트 메서드를 실행할 때 인스턴스의 상태 값이 변경되어 다음 테스트 메서드를 실행할 때 영향을 미칠 수 있기 때문이다. 이와 같이 테스트 실행 순서나.. 2022. 3. 7.
Github 패스워드 변경 Github 패스워드 변경 방법 이 글에서 패스워드는 Github에서 사용하는 계정의 패스워드를 의미하지 않는다. Github는 ID/PW기반의 Basic Authentication 인증을 더 이상 사용하지 않고, ID/Personal Access Token 방식의 Token Authentication 인증을 사용한다고 한다. 그래서 git push/pull 등 사용하려고 하면 에러가 발생한다. 그리고 Username, Password를 입력하라고 하는데 Password에 Github에서 발급한 Token의 값을 입력하면 된다. 이 글은 Personal Access Token 발급에 대한 글이 아니다. 이 글은 Personal Access Token 값을 변경하거나 다른 계정으로 변경하면서 Usernam.. 2022. 3. 7.
[Linux] Ubuntu(우분투) root 패스워드 분실 및 초기화 Ubuntu root 계정 패스워드 초기화 방법 Ubuntu 부팅 시 위의 화면에서 아래(down) 키로 변경해 "Ubuntu용 고급 설정"을 선택해 enter키로 눌러 진입해준다. 그다음 마찬가지로 "*Ubuntu, with Linux 5.0.0-32-generic (recovery mode)"로 진입해준다. 진입하고 잠시 기다려주면 아래와 같은 화면이 나온다. 위의 화면에서 "root Drop to root shell prompt"로 진입한다. 진입하면 root 쉘 프롬프트로 이동된다. $ mout -rw -o remout / $ passwd root 위의 명령어를 입력하면 패스워드를 변경하라고 shell prompt에 글이 나오게 된다. 패스워드를 입력해 재설정하고 "reboot" or "shutd.. 2022. 3. 7.
Ubuntu dock에 프로그램 등록 우분투 데스크톱 독에 프로그램을 등록하려고 하는데 즐겨찾기 추가가 안 되는 실행파일이 있다. 그럴 때 프로그램 실행 아이콘을 만들어서 등록할 수 있는 방법이 있다. 2개의 경로 중에 원하는 곳에 등록하면 된다. ~/.local/share/applications /usr/share/applications 경로로 이동하여 .desktop 파일을 만들어준다. $ cd ~/.local/share/applications/ $ vi clickup.desktop [Desktop Entry] Name=ClickUp-3.0.6 Exec=/home/user/clickup/bin/ClickUp-3.0.6.AppImage Comment=ClickUp 3.0.6 Terminal=false Type=Application Icon.. 2022. 3. 1.
Ubuntu 런처(윈도우 메뉴) 아이콘 추가 $ cd /usr/share/applications $ sudo vi 파일명.desktop [Desktop Entry] Version=2021.1.1 Name=파일명 Comment=코멘트 Exec=절대경로/실행파일 Icon=절대경로/png Terminal=false Type=Application Categories=IDE $ sudo chmod 755 파일명 2021. 7. 10.
우분투(Ubuntu) brew(Homebrew) 설치 Homebrew는 macOS의 패키지 관리자 프로그램이다. 우분투의 apt-get과 같은 역할이다. Homebrew 설치 [Homebrew Site] https://docs.brew.sh/Homebrew-on-Linux Homebrew on Linux Documentation for the missing package manager for macOS. docs.brew.sh 설치 전 필수 패키지 대부분 이미 설치가 되어있겠지만, 혹시 모르니 남겨둔다. $ sudo apt-get install build-essential curl file git Homebrew를 설치하기 위해선 다음과 같은 명령어를 실행하면 된다. $ sh -c "$(curl -fsSL https://raw.githubuserconten.. 2021. 5. 23.
Hugo & Github.io 블로그 만들기 Hugo & Github.io [Hugo Site] http://gohugo.io The world’s fastest framework for building websites The world’s fastest framework for building websites gohugo.io Hugo 설치 더보기 mac의 경우 $ brew install hugo 로 간단히 설치할 수 있다. 그렇지만.... 난 Window10.... [Window Hugo 설치] http://gohugo.io/getting-started/installing#windows Install Hugo Install Hugo on macOS, Windows, Linux, OpenBSD, FreeBSD, and on any machine .. 2021. 4. 20.
하노이 탑 이동 순서 ✔ 하노이 탑 하노이의 탑에는 크기가 다른 원반이 n개 있고 원반을 끼울 수 있는 기둥이 세 개 있다. 하노이의 탑 문제는 어떻게 하면 원반 n개를 모두 가장 왼쪽 기둥(출발점, 1번 기둥)에서 오른쪽 기둥(도착점, 3번 기둥)으로 옮길 수 있을까 하는 문제이다. ※ 하노이 탑 규칙 - 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. - 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력. 단, 이동 횟수는 최소가 되어야 한다. ✔ 하노이 탑 풀이 원반이 3개일 때 원반 전체를 'C'로 옮기려면, 3원반이 'C'로 먼저 옮겨져야 하니깐, 1,2원반이 'B'로 옮겨져야 한다. 그러면 위와 같이 3원반을 'C'로 옮길 수 있다. 이제 'B'에 .. 2021. 4. 12.
Spring Boot 자동 환경 설정 Spring Boot 자동 환경 설정 이해하기 Spring Boot 자동 설정은 Web, H2, JDBC 등 100여 개의 자동 설정을 제공한다. 새로 추가되는 라이브러리(JAR)는 Spring Boot 자동 설정 의존성에 따라서 설정이 자동 적용된다. 자동 설정은 @EnableAutoConfiguration 혹은 @SpringBootApplication 중 하나를 사용하면 된다. @EnableAutoConfiguration 사용 시 @Configuration와 같이 사용해야 한다. SpringBoot Version은 2.4.4 버전이다. @SpringBootApplication spring-boot-autoconfigure-2.4.4.jar/org/springframework/boot/autoconfi.. 2021. 4. 10.