반응형

분류 전체보기 130

[이펙티브 자바] Item 64 객체는 인터페이스를 사용해 참조하라

예제 // 인터페이스 참조한 예 Set set = new LinkedHashSet(); // 그렇지 않은 예 LinkedHashSet set = new LinkedHashSet(); LinkedHashSet 은 Set 인터페이스를 상속받고 있다. 위의 예제에서는 LinkedHashSet을 Set 타입으로 업캐스팅하여 사용하고 있다. ※ 주의: 업캐스팅으로 인해 set은 Set 타입이므로 LinkedHashSet 에만 존재하는 기능을 사용할 수 없게 됨 WHY?? 왜 인터페이스를 참조하라는 걸까? ( 더 나은 성능을 위해 ) 원래의 타입을 변경해야 하는 경우 예제 // 인터페이스를 참조한 예 // 구현체(LinkedHashSet -> HashSet)를 변경해도 코드는 변경되지 않음 Set set = new..

Java 2023.02.07

[프로그래머스] 삼총사 - Java(자바)

문제설명 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 제한사항 3 ≤ number의 길이 ≤ 13 -1,000 ≤ number의 각 원소 ≤ 1,000 서로 다른 학생의 정수 번호가 같을 수 있습니다. 입출력 예 d 배열 result [..

프로그래머스 2023.02.06

[Java] 조합 알고리즘 java 코드로 구현하기

조합이란? 배열에서 몇개를 중복없이 추출하는 것을 말한다. 예를 들면, 배열 int[] arr = {1, 2, 3, 4} 에서 2개의 요소만 중복없이 추출하고 싶은 경우 [1, 2], [2, 3], [3, 4] [1, 3], [2, 4] [1, 4] 총 6개가 출력되어야 한다. 조합을 구현할때 백트래킹과 재귀함수 방법이 있다고 한다. 나는 너무 헷갈려서 우선 가장 간단한 예제로 조합을 구현해보았고, 나중에 프로그래머스에서 문제 풀 때 조건만 다르게 해서 적용해 볼 예정이다. 코드 class CombinationExample { public static void main(String[] args) { int[] arr = {1,2,3,4}; getCombination(arr); } public static..

Java 2023.02.06

[Docker] 엘라스틱서치 설치하기

1. Docker에 엘라스틱서치 image 설치 $ docker pull docker.elastic.co/elasticsearch/elasticsearch:7.9.1 2. image 설치 확인 $ docker images 3. 컨테이너 구동 $ docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name elasticsearch docker.elastic.co/elasticsearch/elasticsearch:7.9.1 4. 컨테이너 구동 여부 확인 $ docker ps 5. 컨테이너 재 실행 // docker container restart {{컨테이너 이름}} docker container restart elasticse..

docker 2023.02.05

[프로그래머스] 시저암호 - Java(자바)

문제설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 제한사항 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다. 입출력 예 s n result "AB" "z" "a B z" 1 1 4 "BC" "a" "e F d" [ 내가 푼 방법 ] class Solution { public String solut..

프로그래머스 2023.01.30

[이펙티브 자바] Item 61. 박싱된 기본 타입보다는 기본 타입을 사용하라

기본 타입이란 int, double, boolean ... 박싱된 기본 타입이란 기본 타입과 1대1 대칭되는 Integer, Double, Boolean ... 기본 타입과 박싱된 기본 타입의 차이점 1. 기본 타입은 값만 가지고 있고, 박싱된 기본 타입(참조 타입)은 값 + 식별성을 가진다. 박싱된 기본 타입은 두 인스턴스의 값이 같아도 서로 다른 객체임. 예제 int i = 1, j = 1; Integer k = new Integer(2); Integer l = new Integer(2); if (i == j) System.out.println("i와 j는 같다!"); if (k == l) System.out.println("k와 l은 같다!"); → 'i와 j는 같다!' 라고 출력되지만 'k와 l은..

Java 2023.01.30

[에러] ModelMapper 사용 시 Method threw 'org.modelmapper.ConfigurationException' exception 에러 해결방법

MoelMapper를 그냥 new ModelMapper().map() 으로 사용할 경우 매핑 전략의 기본값은 타입만 맞으면 매핑된다. 그렇기 때문에 매핑 전략을 아래와 같이 STRICT로 해주면 해결!! public ResponseEntity getUser(@PathVariable(name = "userId") String userId) { ... ModelMapper mapper = new ModelMapper(); mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); UserDto user = mapper.map(user, UserDto.class); ... }

에러 2023.01.21

[에러] JdbcSQLException: Table "{{테이블명}}" not found; SQL statement: 에러 해결방법

spring data jpa 를 사용하면서 자동으로 db에 테이블을 생성한다음 data.sql에서 insert into 할 경우 발생하는 에러 이유는 스프링부트 버전 2.5부터는 data.sql 사용 시 설정 방법이 변경되었기 때문이다. 내가 사용중인 스프링 부트는 2.7.7 버전 - application.yml spring: application: name: catalog-service datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:test h2: console: enabled: true settings: web-allow-others: true path: /h2-console jpa: hibernate: ddl-auto: create-d..

에러 2023.01.19
반응형