본문 바로가기

반응형

전체 글

[탐색알고리즘] 깊이 우선 탐색, 너비 우선 탐색 깊이 우선 탐색(depth-first search, DFS)은 부모노드부터 왼쪽부터 자식노드가 없을 때까지 탐색하고 탐색하려는 값이 없으면 루트의 다음 자식 노드를 탐색합니다. 장점 단지 현 경로상의 노드들만을 기억하면 되므로 저장공간의 수요가 비교적 적음 목표노드가 깊은 단계에 있을 경우 탐색을 빨리 할 수 있음 단점 탐색한 결과가 최단 경로가 된다는 보장은 없음 이론출처: https://ko.wikipedia.org/wiki/%EA%B9%8A%EC%9D%B4_%EC%9A%B0%EC%84%A0_%ED%83%90%EC%83%89 너비 우선 탐색(Breadth-first search, BFS)은 시작 노드를 탐색하고 인접한 모든 노드를 우선 탐색하는 방법입니다. 더 이상 탐색히자 않은 노드가 없을 때까지 .. 더보기
컬렉션 팩토리 리스트 팩토리 - List 생성 - 고정 크기의 리스트로 변경은 되지만 추가, 삭제 불가능 - 리스트 크기를 변경하려고 하면 UnsupportedOperationException 발생 List.of 팩토리 메소드를 이용하여 생성 가능 - 크기 가변 불가능 - 컬렉션이 의도치 않게 변경되는 것을 방지 - but, 요소 자체가 변하는 것은 막을 수 없음 - null요소 유입 방지 - 오버로딩 vs 가변 인수 - List나 Set, Map 인터페이스를 살펴보면 List.of와 같은 다양한 오버로드 버전이 존재 → 가변 인수는 추가 배열을 할당해서 리스트로 감싸기 때문에 배열을 할당하고 초기화하며 가비지 컬렉션을 하는 비용이 발생 → 고정된 숫자의 요소(max=10)로 비용 제거 가능 집합 팩토리 - Set 생.. 더보기
병렬 데이터 처리 스트림으로 데이터 컬렉션 관련 동작을 얼마나 쉽게 병렬로 실행할 수 있는 지 설명 - 자바7 이전 1. 서브파트로 분할 2. 분할된 서브파트를 스레드로 할당 3. 스레드 경쟁상태가 되지 않도록 동기화 4. 마지막으로 부분 결과를 합쳐야함 - 자바 7 포크, 조인 프레임워크 기능 제공 - 자바 8 병렬 스트림 병렬 스트림 컬렉션에 parallelStream을 호출하면 병렬 스트림(parallel stream)이 생성 - EX) 숫자 n을 인수로 받아서 1부터 n까지의 모든 숫자의합계를 반환하는 메서드를 구현 - 순차 스트림에 parallel() 메서드를 호출하면 기존의 함수형 리듀싱 연산(숫자 합계 계산)이 병렬로 처리 - 반면에 sequential() 메서드를 호출하면 순차 스트림으로 변경 - seque.. 더보기
[JPA] PhysicalNamingStrategy - Table, Column명 커스텀 저는 보통 테이블이나 컬럼명을 대문자로 사용하는데, 그럴 경우 엔티티에 아래와 같이 테이블이나 컬럼명을 지정해줘야합니다. jpa 설정 시 아래와 같이 physical-strategy를 지정하여 사용하면, 자동으로 대문자로 변환하여 사용할 수 있도록 변경할 수 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 spring: jpa: database: mysql database-platform: org.hibernate.dialect.MySQL8Dialect open-in-view: false show-sql: true hibernate: ddl-auto: none format_sql: true naming: implicit-strategy: org.springframework.boot.orm.jp.. 더보기
[MySQL/Oracle] 데이터 있으면 update, 없으면 insert 추가하려는 데이터가 있을 때는 update, 없으면 insert하도록 쿼리에서 처리할 수 있습니다. MySQL은 ON DUPLICATE KEY UPDATE 명령어로, Oracle은 MERGE INTO로 해당 기능을 수행할 수 있습니다. 12345678910111213141516171819202122232425262728293031-- MySQLINSERT INTO HALF_STORAGE( UESR_ID, GROUP_NAME )VALUES ( 'halfJang', 'admin')ON DUPLICATE KEY UPDATE USER_ID = 'halfJang' -- ORACLEMERGE INTO HALF_STORAGE hsUSING DUALON ( hs.USER_ID = 'halfJang' )WHEN MATC.. 더보기
[Bash] jar파일 실행, 외부 설정파일 사용 halfstorage.tistory.com/67 [Bash] jar파일 실행(내장 톰캣) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #!/bin/sh SERVICE_NAME=HALF-JANG-API PATH_TO_JAR=/app/ua_.. halfstorage.tistory.com 쉘로 spring boot 프로젝트를 실행했었는데, 토이프로젝트로 진행한 부분이라 설정 파일을 변경할 일이 없었습니다. 이번에 기능을 추가하면서 나름 개발 스키마와 운영 스키마로 분리했는데, jar 파일을 교체하는 것은 .. 더보기
[Kafka] Java 테스트 애플리케이션 제작 및 테스트 간단하게 kafka의 cluster 구성에 성공했는지 테스트하기 위해서 프로젝트를 생성해보겠습니다. dependency는 kafka만 추가하셔도 됩니다. @Slf4j로 로그 출력을 위해 Lombok도 추가했습니다. application.yml에 카프카 설정을 추가합니다. KafkaConfig.java로 자바 파일을 생성하여 상단에 @Configuration @EnableKafka 카프카 설정을 위한 어노테이션을 추가합니다. yml에 선언한 변수를 @Value로 받아옵니다. ProducerConfig와 ConsumerConfig를 설정합니다. 추가한 설정을 Factory로 생성합니다. 테스트를 위해 Consumer 클래스를 생성했습니다. 이렇게 하면 테스트를 위한 애플리케이션 생성이 끝났습니다. 이제 이전.. 더보기
[Kafka] Error when sending message to topic {topic-name} with key: null, value: 1 bytes with error kafka-console-producer로 메시지를 추가하려고 할때 해당 에러가 발생했습니다. $ ./kafka-console-producer.sh --broker-list {ip1}:9092,{ip2}:9092 --topic {topic name} Error when sending message to topic {topic-name} with key: null, value: 1 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) org.apache.kafka.common.InvalidRecordException: This record has failed the validation on broker and.. 더보기

반응형