분류 전체보기 149

Clean code

코드는 요구사항을 상세히 표현하는 수단이다. 기계가 실행할 정도로 상세하게 요구사항으 ㄹ명시하는 작업, 바로 이것이 프로그래밍이다. 궁극적으로 코드는 요구사항을 표현하는 언어라는 사실을 명심한다. 논리가 간단해야 버그가 숨어들지 못한다. 의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철저히 처리한다. 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망치려는 유혹에 빠지지 않는다. 깨끗한 코드는 한 가지를 제대로 한다. 깨끗한 코드는 단순하고 직접적이다. 깨끗한 코드는 잘 쓴 문장처럼 읽힌다. 깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와 단순한 제어문으로 가득하다. 깨끗한 코드는 작성자도 아닌 사람도 읽기 쉽고 고치기 쉽다. 단위 테스트..

Book/클린코드 2023.10.01

[JPA] @GeneratedValue (Entity key생성)

@GeneratedValue @GeneratedValue는 Java Persistence API (JPA)에서 엔티티 클래스의 주요 키(Primary Key) 값을 자동으로 생성하기 위해 사용되는 어노테이션입니다. JPA는 관계형 데이터베이스와 자바 객체를 매핑하는 ORM(Object-Relational Mapping) 기술을 제공하는데, 이때 엔티티 클래스의 주요 키 값을 생성하는 방법 중 하나로 @GeneratedValue를 사용할 수 있습니다. @GeneratedValue (strategy type) @GeneratedValue 어노테이션은 다음의 4가지 방식으로 자동 생성 전략을 설정할 수 있습니다. GenerationType.IDENTITY: 주로 MySQL과 같은 데이터베이스에서 사용되는 방법..

Spring 2023.08.06

인텔리제이 error : 클래스를 찾거나 로드할 수 없습니다.

새로운 컴퓨터에서 기존에 쓰던 파일을 인텔리제이로 run 하려고 하니 '클래스를 찾거나 로드할 수 없습니다' 라는 오류가 계속 나와서 애를 먹었다 해결법 File -> Project Structure 을 들어간 뒤에 Modules에 있는 것들 중 경로가 꼬여 있는 것들을 삭제해서 해결하였다. 나 같은 경우 상위경로와 그 밑 하위경로 두 개가 모두 module에 포함되어 있었고 이거 때문에 class가 인식을 못했었던 것 같아 하위경로 module을 지워 해결하였다.

error , solution 2023.08.02

[Java] JDK 환경변수 설정 방법 및 이유

JDK 환경변수 설정 이유 환경변수 설정을 통해 운영체제 어디에서든 Java를 인식할 수 있도록 할 수 있습니다. *bin 폴더 안에 javac를 비롯한 각종 실행파일이 있기 때문에 환경변수를 설정할 때, jdk의 bin 디렉터리 경로를 등록합니다. 자바 실행파일의 경로가 환경변수 path에 제대로 세팅되어 있다면 어느 곳에서나 jdk의 bin에 있는 프로그램들을 실행시킬 수 있습니다. 환경변수 설정 방법 1. 환경 변수를 검색하여 '시스템 환경 변수 편집'을 열어주세요. 2. 고급 탭을 클릭 후 하단에 있는 환경 변수를 눌러줍니다. 3. 시스템 변수 탭에서 새로 만들기를 클릭하고, 값을 입력해 줍니다. 4. 시스템 변수에서 Path를 찾아 클릭하고, 편집을 눌러줍니다. - 새로 만들기를 통해 %JAVA..

Java/Java 2023.07.27

Java, Intelij,JetBrains Toolbox 다운로드

Java 설치 https://www.azul.com/downloads/?version=java-11-lts&os=windows&architecture=x86-64-bit&package=jdk#zulu Azul Downloads According to the Gartner report, “by 2025, more than 70% of Java applications will be deployed on third-party Java runtimes, up from 30% in 2019.” www.azul.com 위에 링크를 타고 들어가 본인의 OS , java 버전, 아키텍처에 맞게 선택한 뒤 다운로드를 합니다. IntelliJ 설치 https://www.jetbrains.com/ko-kr/idea/down..

Java 2023.07.27

Git 설치 - windows(윈도우) 및 SSH 등록 방법

https://gitforwindows.org/   Git for WindowsGit for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike. Git BASH Git for Windows provides a BAgitforwindows.org git 설치를 위해서는 위 링크주소를 들어간 뒤 다운로드를 하면 됩니다.(체크사항은 기본 설정값으로 하셔도 상관없습니다.)   SSH 등록ssh..

Git 2023.07.26

백준 2751번 수 정렬하기 2

문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 난 이 문제를 처음에 수가 100만 개나 입력되기 때문에 시간복잡도가 효율적인 정렬을 사용하기 위해 Quick Sort를 이용해서 풀려고 했었다. Quick Sort import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impo..

Algorithm 2023.06.26

[Algorithm]정렬 알고리즘의 성능과 선택 기준: 상황에 맞는 최적의 선택

정렬은 컴퓨터 과학에서 핵심적인 작업 중 하나로, 데이터의 순서를 재조정하는 과정입니다. 이는 다양한 분야에서 중요한 역할을 수행하며, 데이터 처리와 탐색에 필수적입니다. 정렬 알고리즘은 데이터 크기, 구현 제약사항, 사용 가능한 메모리 용량 등에 따라 효율적으로 선택되어야 합니다. 이 글에서는 데이터 크기, 구현 제약사항, 메모리 사용 등을 고려하여 상황에 맞는 최적의 정렬 알고리즘을 선택하는 방법에 대해 다루고자 합니다. 작은 데이터 크기 작은 데이터에 대해서는 삽입 정렬(Insertion Sort)이 효율적입니다. 추가적인 메모리 사용 없이 구현이 간단하며, 데이터 크기에 민감하지 않습니다. Insertion Sort 시간 복잡도 : - 최선의 경우 : O(n) - 평균 및 최악의 경우: O(n^2..

Algorithm 2023.06.26

[알고리즘] Backtracking(백트래킹)

백트래킹은 조합 탐색과 같은 문제에서 해를 찾는 도중에 해가 될 수 없는 경우를 미리 파악하여 탐색을 중단하고 다른 경로를 탐색하는 효율적인 기법입니다. 이번 글에서는 백트래킹 알고리즘의 개념과 구현 방법, 그리고 실제 문제를 해결하는 과정을 예시를 통해 알아보겠습니다. 1. 백트래킹 알고리즘이란? 백트래킹은 문제의 조건에 따라 탐색해야 하는 모든 경우의 수를 시도하면서 해를 찾는 알고리즘입니다. 주로 DFS(깊이 우선 탐색)와 함께 사용되며, 재귀 함수를 통해 구현됩니다. 백트래킹은 가능한 경우의 수를 줄여나가면서 해를 찾는 방법으로, 탐색 과정에서 불필요한 경로를 배제하여 실행 속도를 향상할 수 있습니다. 2. 문제 설명 이제 실제로 백트래킹을 사용하여 해결할 문제를 살펴보겠습니다. 주어진 조건에 따..

Algorithm 2023.06.23

알파벳 전체를 포함하는 String[] 배열 만들기 - 자바(JAVA)

char 타입으로 초기값을 넣어주고 값을 증가시켜주면 단어사전 순으로 단어가 변화된다. String[] alphabet = new String[26]; char currentChar = 'a'; for (int i = 0; i < 26; i++) { alphabet[i] = String.valueOf(currentChar); currentChar++; } System.out.println(Arrays.toString(alphabet)); 결과는 [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z] 만약 대문자로 구성된 배열을 만들고 싶으면 'a' 대신 'A'를 넣어주면 된다. 또한 알파벳 뿐만 아니라 한글도 가능하다!

Algorithm 2023.06.16