분류 전체보기 39

[ Java ] Java, Python, C 특징 및 차이점

Java의 특징 Java 는 1995년에 개발되었습니다. 객체 지향 언어(OOP) 로 기능 또는 역할에 따라 모듈화 하여 관리합니다. → 가독성, 유지보수성, 재 사용성이 좋습니다. 플랫폼 독립적 언어입니다. 운영체제에 관계없이 JVM 환경에서 실행됩니다. → 운영체제에 맞춰 코드를 재 작성할 필요가 없습니다. 다양한 라이브러리와 프레임워크가 존재합니다. → 빠른 개발이 가능하며 생산성이 증가됩니다. Multi Thread를 지원합니다. → 동시에 여러 작업이 가능해 분산 컴퓨팅에 유용합니다. 보안성이 높습니다. → 자바 실행 시 코드 검증을 통해 악성, 바이러스 실행을 방지합니다. 메모리 관리를 가비지 컬렉터가 맡아 합니다. → 가비지 컬렉터를 사용하여 메모리 관리를 자동으로 수행합니다. 개발자는 메모..

Java 2023.12.23

[ Java ] 추상클래스 vs 인터페이스

추상클래스와 인터페이스? 차이점은 무엇이며 언제 적절히 사용해야 할까요? 자세히 살펴 보도록 하겠습니다. 추상 클레스 추상클레스란? 일부 메서드가 추상 메서드로 선언된 클래스입니다. 추상 클레스에는 구현부가 있는 일반 메서드가 존재할 수 있습니다. 코드 예시) abstract class Singer { private String name; abstract void sing(); // 추상 메서드 public String getName() { // 일반 메서드 return name; } public void setName(String name) { this.name = name; } } 추상클래스의 특징 1. 클래스와 추상 메서드에 abstract 키워드를 사용합니다. 2. 로직이 있는 메서드와 추상 메서..

Java 2023.12.22

[ Java ] Stream 의 reduce 사용해보자

알고리즘 문제나, 개발을 하다 보면 Stream에 정의된 연산을 자주 사용하게 됩니다. 그중 reduce를 사용하는 방법에 대해 알아보려 합니다. reduce는 스트림의 요소를 하나씩 줄여가며 계산하는 연산(reducing)입니다. reduce는 forEach와 같은 최종 연산으로, 스트림 생성 후 단 한 번만 연산 가능합니다. 참고 - 스트림의 중간 연산과 최종 연산? 더보기 중간 연산은 스트림을 반환합니다. 그렇기 때문에 연속해서 연산을 이어갈 수 있습니다. 중간 연산의 종류로, distinct(), filter(), sorted(), map() 등이 있습니다. 최종 연산은 스트림이 아닙니다. 최종 연산을 하게 되면 스트림이 소모가 되어 연산을 추가로 진행할 수 없습니다. 최종 연산의 종류는 forE..

Java 2023.12.20

[ Springboot ] Swagger 설정 및 접속 ( + Swagger Spring Security 설정 )

Springboot 환경에 Swagger를 설정하고 접속까지 해보겠습니다. 프로젝트 환경 : Java 17 , SpringBoot 3.1.2 , ( spring security 적용되어 있음.) Build.gradle 스웨거 의존성을 추가해 줍니다. // Swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' SwaggerConfig swagger 를 사용하기 위해 설정 파일을 만들어 주겠습니다. @OpenAPIDefinition( info = @Info(title = "sns", description = "sns api - personal project", version = "v1") ) @RequiredArgsC..

Spring 2023.10.17

[ Springboot - swagger ] No operations defined in spec! 해결

스웨거 설정 후 http://localhost:8080/swagger-ui/index.html로 접속을 했을 때 No operations defined in spec! 이런 문구가 떴습니다. 해결을 위해 설정 파일을 살펴보도록 하겠습니다. 프로젝트 환경 : Java 17 , SpringBoot 3.1.2 , Swagger 2.0.2 SwaggerConfig 파일 config 파일을 확인해 보니 path 가 절대경로로 설정되어 있음을 알 수 있습니다. 해당 코드를 절대경로로 수정하겠습니다. 수정 완료한 코드 ↓ @OpenAPIDefinition( info = @Info(title = "sns", description = "sns api - personal project", version = "v1") ) ..

trouble_shooting 2023.10.17

[ Springboot - h2 ] could not execute statement ... constraint [null] , h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column SQL statement 해결하기

Dev , Test DB 분리 후 테스트를 시도하던 중 아래와 같은 오류가 났습니다. org.springframework.dao.DataIntegrityViolationException: could not execute statement [NULL not allowed for column "ID"; SQL statemen .. insert into ... constraint [null] --- org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "ID"; SQL statement: 오류 내용을 살펴보면 PK로 설정했던 id 필드가 null 이 허용되지 않는다는 것 같습니다. 하지만 아래 그림처럼 누락 없..

trouble_shooting 2023.10.09

[ SpringBoot - JUnit 5 ] Dev , Test DB 분리 ( feat. h2 )

Test 코드를 작성 할 때 DB 환경을 분리해 왔습니다. 하지만 초기 설정 때 마다 기억이 잘 나지않아 이번에 Dev 와 Test 를 분리하는 방법을 기록하려 합니다. 이 프로젝트는 gradle 환경이며 yaml 파일을 사용 중입니다. 이번 게시글의 목표는 Dev - Sqlite , Test - h2 를 사용해 실행 확인을 마치는 것입니다. ++ h2 사용하며 발생했던 문제 application.yaml 먼저 Dev 환경의 DB 설정입니다. 개인 프로젝트이기 때문에 sqlite 를 사용 하고 있습니다. spring: datasource: url: jdbc:sqlite:db.sqlite driver-class-name: org.sqlite.JDBC jpa: hibernate: ddl-auto: creat..

Spring 2023.10.09

[ Algorithm ] 백준 6588, 골드바흐의 추측 ( feat . 에라토스테네스의 체 , Java 시간 초과 해결)

이전 글 에서 에라토스테네스의 체를 알아보았습니다. 같은 방법으로 백준 6588, 골드바흐의 추측문제를 풀어보도록 하겠습니당. 먼저 문제를 살펴보면 "4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다" 고 합니다. 이 골드바흐의 말을 검증하는 프로그램을 작성하는건데요, 문제의 예시를 표로 정리해 보겠습니다. 4 보다 큰 짝수 두 홀수 소수 20 3 + 17 7 + 13 42 5 + 37 11 + 31 13 + 29 19 + 23 다음으로 입력을 살펴 보겠습니다. 입력으로는 6 이상, 1,000,000 이하 짝수 정수가 주어진다 합니다. 구해야 할 소수의 범위는 1,000,000 까지임을 알 수 있습니다. 테스트 케이스의 숫자 갯수는 주어지지 않았고, 입력에 0 이 주어지면 테스트 케이스 입력..

Algorithm 2023.09.24

[ Algorithm ] 에라토스테네스의 체 ( feat . 백준 1929 - 소수 구하기 )

수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 소수 구하는 문제는 에라토스테네스의 체를 이용하는게 가장 편리합니다. 소수란 ? 양의 약수를 두 개만 가지는 자연수. 1과 자기자신으로만 나누어지는 수 위키 백과에서 가져온 그림을 토대로 설명을 하면, 2 부터 목표 수(120) 사이 자기 자신을 제외 한 자신 배수를 모두 지우는 것입니다. 자바 코드로 살펴보겠습니다. public class Eratos { public static void main(String[] args){ int start = 1; int end = 120; // 소수인지 판별하기 위해 길이가 end + 1 인 배열 선언 // 마지막 수도 포함 하기 위해 (end + 1)사용 함. ..

Algorithm 2023.09.24

[ Query DSL ] Spring Boot + JPA + Query DSL setting ( Java17 / SpringBoot 3.1.2 )

팀 프로젝트 시 Query DSL을 사용했었는데, 생각 했던것과 달리 gradle 설정이 많이 어려웠던게 기억이 납니다. 특히, Java11 버전의 Query DSL 설정과 차이가나 여러 글들을 참고했음에도 (무엇이 문제인지 잘 몰랐기 때문에..) 많은 에러를 만났었는데요.. ㅠㅠ 그래서 ! 이번 글에서는 Java17 과 SpringBoot 3.1.2 에서의 Query DSL 설정을 공유하려 합니다. gradle dependencies implementation 'com.querydsl:querydsl-jpa:최신 버전' JPA 엔터티에 대한 Querydsl 쿼리를 작성하고 실행하게함. annotationProcessor "com.querydsl:querydsl-apt:최신 버전" JPA 엔터티 클래스에..

Database 2023.09.19