tweety1121의 등록된 링크

키자드에 등록된 총 140개의 포스트를 확인하실 수 있습니다.

Tistory

Spring boot multiple database 설정 (mybatis+hikari)

application.properties spring.db1.datasource.hikari.driver-class-name=org.mariadb.jdbc.Driver spring.db1.datasource.hikari.jdbc-url=jdbc:mariadb://localhost:3306/db1?characterEncoding=UTF-8 spring.d..

Tistory

Mapped Statements collection already contains value for - mybatis error

Mapped Statements collection already contains value for 사소한 거 왜 자꾸 실수 하는지 모르겠음;;ㅋㅋㅋ 복사해서 갖다 쓰다보니 mybatis의 id가 중복되서 발생하는 에러. 잘 확인하자.

Tistory

Microsoft Store 없이 다운로드 URL로 MS App 설치하기

번거롭고 귀찮은 일이긴 하지만 Microsoft Store가 열리지 않아서(회사에서 막은듯) 다운로드 URL로 설치했다. 방법은 어렵지 않음. 1. Online Microsoft store에서 URL을 확인한다. https://www.microsoft.com/en..

Tistory

헤드퍼스트 디자인패턴 - 전략 패턴

목차 전략 패턴 (Strategy Pattern) 이란? 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해주는 패턴 전략패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경..

Tistory

헤드퍼스트 디자인패턴 - 옵저버 패턴

목차 가상 모니터링 애플리케이션 알아보기 Weather-O-Rama와 계약하면 WeatherData객체로 현재조건, 기상통계, 기상예보 3가지 항목이 제공된다. 디스플레이 장비에 업데이트 하는 부분은 직접 개발 해야 한다...

Tistory

백준 1931번 회의실 배정 자바 풀이

문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사..

Tistory

헤드퍼스트 디자인패턴 - 데코레이터 패턴

목차 초대형 커피전문점 주문시스템 만들기 다양한 음료를 모두 포괄하는 주문 시스템을 만들려고 한다. 만약 Beverage클래스에 우유, 두유, 모카, 휘핑크림을 추가하려고 할 때 인스턴스 변수를 추가하면 메뉴..

Tistory

도메인 주도 개발(DDD) 도메인 서비스

목차 도메인 서비스 도메인 서비스를 사용하는 상황 계산 로직 : 여러 애그리거트가 필요한 계산 로직이나, 한 애그리거트에 넣기에는 다소 복잡한 계산 로직 외부 연동 시스템이 필요한 도메인 로직 : 구현하기..

Tistory

도메인 주도 개발(DDD) 애그리거트 트랜잭션 관리

목차 애그리거트와 트랜잭션 한 주문 애그리거트에 대해 운영자는 배송상태로 변경하고 사용자는 배송지 주소를 변경하면? 트랜잭션마다 리포지터리는 새로운 애그리거트 객체를 생성하므로 운영자 스레드와 고객..

Tistory

@CookieValue 스프링 쿠키 사용법

쿠키란 ? 클라이언트 로컬에 저장되는 key, value가 들어있는 작은 데이터 파일 서버에서 HttpResponse Header에 Set-Cookie 속성을 이용해서 클라이언트에 쿠키를 제공 이름, 값, 만료날짜, 경로 정보 등이 들어..

Tistory

도메인 주도 개발(DDD) 도메인 모델과 바운디드 컨텍스트

목차 도메인 모델과 경계 처음부터 도메인을 완벽하게 표현하는 단일 모델을 만들기는 어렵다 도메인은 여러 하위도메인으로 구분되기 때문에 한 개의 모델로 여러 하위 도메인을 표현하기 어려움 시스템을 사용..

Tistory

HttpSession 사용 방법 사용 이유

HttpSession은 둘 이상의 Page Request에서 사용자 식별 혹은 사용자 정보를 저장하기 위한 방법을 제공함. Spring Web MVC에서 HttpSession을 주입할 때 내부적으로 Servlet Container 에게 Session을 요청함. @G..

Tistory

Spring @Resouce, @Autowired, @Inject 의존 관계 주입 차이점

@Resource, @Autowired, @Inject 모두 의존 관계를 자동으로 연결해주는 기능을 가진 어노테이션이다 @Resource JSR에 실려있는 자바 기존 어노테이션 Name -> Type -> Qualifier 기준으로 찾음 사용 위치 : 멤버..

Tistory

도메인 주도 개발(DDD) 시작하기 이벤트

목차 시스템간 강결합 문제 쇼핑몰에서 구매 취소시 환불처리가 필요함 환불기능을 실행하는 주체는 주문 도메인 엔티티가 될 수 있음 보통 결제 시스템은 외부에 존재하기 때문에 외부 서비스가 아닐 경우 트랜잭..

Tistory

도메인 주도 개발(DDD)시작하기 CQRS

목차 단일 모델의 단점 주문 내역 조회 기능 구현시 여러 애그리거트에서 데이터를 가져와야함 시스템 상태를 변경할 때와 조회할 때 단일 도메인 모델을 사용하면 고민해야할 부분이 생김 조회화면 특성상 즉시..

Tistory

도메인 주도 설계 아키텍처

아키텍처 전형적인 네 가지 영역 표현 응용 도메인 인프라스트럭처 표현 영역 사용자의 요청을 받아 응용 영역에 전달하고, 응용영역의 처리 결과를 다시 사용자에게 보여주는 역할. 웹브라우저가 HTTP 요청 파라..

Tistory

도메인 주도 설계(DDD) 애그리거트

목차 애그리거트 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만들려면 상위 수준에서 모델을 조망할 수 있는 방법이 필요한데, 그 방법이 바로 애그리거트다. 애그리거트 장점 모델을 이해하는데 도움을 준..

Tistory

도메인 주도 개발(DDD) 리포지터리와 모델 구현

목차 JPA를 이용한 리포지터리 구현 - 도메인 모델과 리포지터리를 구현할 때 선호하는 기술은 JPA이다. - 데이터 보관소로 RDBMS를 사용할 때, 객체 기반 도메인 모델과 관계 데이터 모델간의 매핑 처리 기술로 O..

Tistory

도메인 주도 설계(DDD) 스프링데이터 JPA를 이용한 조회

목차 CQRS 란 명령(Command)모델과 조회(Query) 모델을 분리하는 패턴. 명령 모델은 상태 변경 기능 구현시 사용, 조회 모델은 데이터 조회기능 구현시 사용. ex) 명령모델 : 회원가입, 암호 변경, 주문 취소 > 상..

Tistory

도메인 주도 개발 (DDD) 시작하기 응용서비스와 표현영역

목차 public class Member { public void changePassword(String oldPw, String newPw) { if(!matchPassword(oldPw)) throw new BaddPasswordException(); setPassword(newPw); } // 현재 암호와 일치하는지 검사..

Tistory

SQL 전문가가이드 [과목3] 1장 1절 데이터베이스 아키텍처

데이터베이스 구조 1. Oracle 구조 데이터베이스 : 디스크에 저장된 데이터 집합(Datafile, Redo Log File, Control File 등) 인스턴스 : SGA 공유 메모리 영역과 이를 액세스하는 프로세스 집합 하나의 인스턴스..

Tistory

SQL 전문가가이드 [과목3] 1장 2절 SQL 처리 과정

구조적, 집합적, 선언적 질의 언어 SQL은 'Structured Query Language'의 줄임말이다. 구조적 질의언어다. SQL은 기본적으로 구조적이고 집합적이고 선언적인 질의 언어다. SQL 처리과정 서브엔진 별 역할 엔진..

Tistory

javascript 현재 접속 위치 좌표

if(navigator.geolocation) { navigator.geolocation.getCurrentPosition(function (position) { console.log(position.coords.latitude + " " + position.coords.longitude); },function (error){ console.error(..

Tistory

javascript $.ajax header추가

$.ajax({ type: "GET", url: "https://dapi.kakao.com/v2/local/search/keyword.json?query=" + keyword, beforeSend: function (xhr) { xhr.setRequestHeader("Authorization", "KakaoAK APIKEY"); }, success: f..

Tistory

block()/blockFirst()/blockLast() are blocking, which is not supported

WebClient 사용 도중 bodyToMono().block() 메서드 사용시 오류가 발생했다. 발생한 이유는 bodyToMono()메서드는 논블로킹인데 block()메서드는 블로킹으로 동작한다. block()/blockFirst()/blockLast() are bloc..

Tistory

DTO로 변환할 때 PropertyNamingStrategy 사용 snake->camel 변환

카카오 다음 지도 API를 사용하던 도중 응답이 _ 언더바가 포함된 SNAKE타입으로 와서 camel형태로 변환하여 받으려고 한다. 응답예시 { "documents":[ { "address_name":"서울 강남구 삼성동 172-66", "category_..

Tistory

SQL 전문가가이드 [과목3] 1장 3절 데이터베이스 I/O 메커니즘

블록단위 I/O 모든 DBMS에서 I/O는 블록(혹은 페이지) 단위로 이뤄진다. (즉, 하나의 레코드를 읽더라도 레코드가 속한 블록 전체를 읽는다.) SQL 성능을 좌우하는 중요한 성증지표는 액세스할 블록개수이고 옵티..

Tistory

도메인(DDD)주도 개발 도메인이란

도메인이란? 소프트웨어로 해결하고자 하는 문제 영역 일반적인 요구사항 ex, 온라인 서점 특정 도메인을 위한 소프트웨어라고 해서 모든 기능을 직접 구현하는 것은 아님(배송시스템, 결제시스템 등) 도메인 모..

Tistory

wsl2 우분투 cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running?

wsl2에서 docker실행할 때 계속 저 에러가 나는데 뜨문뜨문 할 때마다 계속 검색하는 내 자신이 싫어서 남겨놓음. $docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docke..

Tistory

[이펙티브자바] 아이템9. try-finally보다는 try-with-resources를 사용하라

자바 라이브러리에서 close메서드를 호출해 직접 자원을 닫아 줘야하는 경우가 있다. (InputStream, OutputStream, java.sql.Connection 등..) 자원을 닫을 때 finalizer는 믿을 수 없다. 2022.02.24 - [책리뷰/이..

Tistory

[이펙티브자바] 아이템10. equals는 일반 규약을 지켜 재정의하라

equals메서드는 많은 경우에 Object의 equals가 정확히 비교해주기 때문에 꼭 필요한 경우가 아니라면 재정의하지 말자. equals를 재정의 하지 말아야하는 경우 각 인스턴스가 본질적으로 고유하다.  인스턴스가..

Tistory

백준 2309번 일곱 난쟁이 자바 풀이

문제 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설..

Tistory

백준 3085번 사탕 게임 자바 풀이

문제 상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다. 가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그..

Tistory

[이펙티브자바] 아이템11. equals를 재정의하려거든 hashCode도 재정의하라

equals를 재정의할 때 hashCode를 재정의하지 않으면 HashMap이나 HashSet같은 컬렉션의 원소로 클래스의 인스턴스를 사용할 때 문제가 된다. Object 명세 규약 equals 비교에 사용되는 정보가 바뀌지 않으면 몇..

Tistory

Docker image offline 설치 이미지 오프라인에서 사용

1. 로컬에 도커 이미지 다운 docker pull nginx 2. tar로 압축 docker save -o nginx.tar nginx  nginx.tar 는 압축할 파일명 뒤에 nginx는 이미지명 사설 이미지일 경우 경로와 버전까지 명시해줘야한다. 3. 서..

Tistory

SQL 전문가가이드 [과목1] 1장 1절 데이터 모델의 이해

모델링이란 사람이 살아가면서 접할 수 있는 다양한 현상이 사람, 사물, 개념에 의해 발생된다고 할 때 모델링은 이것을 표기법에 따라 표기하는 것 자체를 의미한다. 즉, 모델을 만들어가는 일 자체가 모델링이다..

Tistory

[이펙티브자바] 아이템5. 의존 객체 주입을 사용해라.

많은 클래스가 하나이상의 자원에 의존한다. 정적 유틸리티 클래스를 예로 들어볼 수 있다. 정적유틸리티 잘못 사용한 예 - 유연하지 않고 테스트 하기 어렵다. public class SpellChecker { private static final..

Tistory

[이펙티브자바] 아이템6. 불필요한 객체 생성을 피하라

똑같은 기능을 하는 객체는 매번 생성하기보다 재사용하는 편이 빠르고 세련되다. String s = new String("bikini"); String s = "bikini"; 첫 번째 코드는 실행될 때마다 String 인스턴스를 새로 만들고 두 번째..

Tistory

Spring Boot 멀티 모듈 프로젝트 관리

Gradle을 이용한 멀티 모듈 프로젝트 관리 방법을 소개한다. 사용하는 이유는 프로젝트가 커질 수록 공통으로 사용하는 서버가 많아지는데 (혹은 클래스) 그 클래스들을 전부 복사&붙여넣기를 할 수 없다. 수정이..

Tistory

백준 2075번 N번째 큰 수 자바 풀이

문제 N×N의 표에 수 N2개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5일 때의 예를 보자. 12 7 9 15 5 13 8 11 19 6 21 10 26 31 16 48..

Tistory

Spring Boot 외부 설정 @Value, @ConfigurationProperties

스프링 부트 프로퍼티 파일은 설정이나 기타 정적인 값을 키값 형식으로 관리한다. 이것을 이용하면 복잡한 XML설정을 하나의 파일로 관리할 수 있다. YAML 파일을 이용하면 깊이에 따라 관계를 구분 짓기 때문에..

Tistory

Spring Boot @EnableAutoConfiguration

@SpringBootApplication @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 스프링부트에서 시작점은 @SpringB..

Tistory

Spring Boot @DataJpaTest 사용방법

@DataJpaTest JPA 관련 테스트 설정을 로드한다. 데이터소스 설정이 정상인지 JPA를 사용해서 생성, 수정, 삭제 등의 테스트를 할 수 있다. 실제 데이터베이스를 사용하지 않고 내장형을 사용해서 테스트할 수 있..

Tistory

[이펙티브자바] 아이템7. 다 쓴 객체 참조를 해제하라

자바에서는 다쓴 객체를 알아서 회수해가는 가비지 컬렉터가 있다. 자칫 메모리 관리에 신경을 쓰지 않아도 된다고 오해할 수 있는데 절대 아니다. Stack클래스의 메모리 누수 public class Stack { private Objec..

Tistory

[이펙티브자바] 아이템8. finalizer와 cleaner사용을 피하라

자바에서는 두 가지 객체 소멸자를 제공하는데 Finalizer는 예측불가능하고 위험하며 대부분 불필요하다. 자바9에서 deprecated되었다. 그 대안으로 Cleaner를 사용하는데 Finalizer보다는 덜 위험하지만 예측불가..

Tistory

Spring Boot security Oauth2 로그인 연동 (구글/카카오)

Spring security 스프링 시큐리티는 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크다. Spring 기반 애플리케이션을 보호하기 위한 사실상의 표준이다. 인증과 권한 부여를 제공하는데 중점을 둔 프레임워..

Tistory

Spring cloud circuit breaker fallback 메소드 테스트

Spring cloud Circuit Breaker Config빈 등록 방법은 아래 포스팅을 참고 https://tweety1121.tistory.com/entry/Spring-circuitbreaker-actuator-health-check-%EC%84%A4%EC%A0%95 Spring circuitbreaker actuato..

Tistory

Spring cloud circuit breaker fallbackUri 사용

서비스 하나를 (fallback 날릴) 만들어서 gateway instance로 추가해준다. application.yml spring: application: name: scg-gateway cloud: gateway: routes: - id: test-svc uri: lb://TEST-SVC predicates: - P..

Tistory

Spring restTemplate Connection pool 사용

ResteTemplate? 스프링3.0부터 제공하는 HTTP 요청을 수행하는 Synchronous 클라이언트. JDK HttpURLConnection, Apache HttpComponents 등과 같은 기본 HTTP 클라이언트 라이브러리를 통한 템플릿 메소드 API. 스..

Tistory

JAVA enum vs static 비교

enum이란? 비단 자바에만 있는 개념은 아니고 다른 언어에서도 볼 수 있는 형식이다. 열거형이라 불리며 요소, 멤버라 명명된 값의 집합을 이루는 자료형으로 열거자 이름들은 해당언어의 상수 역할을 하는 식별자..

Tistory

Spring Boot2 Swagger 사용

Gradle 설정 추가 // swagger implementation 'io.springfox:springfox-swagger2:3.0.0' implementation 'io.springfox:springfox-swagger-ui:2.9.2' SwaggerConfig.java @Configuration @EnableSwagger2 public c..

Tistory

JAVA GC가 발생하는 시기(Garbage Collector)

JAVA GC? java에서 메모리는 GC가 관리하기 때문에 개발자가 따로 메모리를 관리하는 로직을 넣을 필요가 없다. (만들어서는 안된다) Garbage Collector 쓰레기를 정리하는 작업으로 자바에서 쓰레기는 객체를 의..

Tistory

[이펙티브자바] 아이템1. 생성자 대신 정적 팩터리 메서드를 고려해야하는 이유

public static Boolean valueOf(boolean b) { return b? Boolean.TRUE : Boolean.FALSE; } 클래스는 정적팩터리 메서드를 제공 할 수 있는데 위 예제는 메서드의 기본타입인 boolean을 받아서 Boolean객체 참조로..

Tistory

[이펙티브자바] 아이템2. 생성자에 매개변수가 많다면 빌더를 고려하라

정적 팩터리와 생성자는 선택적 매개변수가 많으면 대응하기 어렵다. 영양 정보를 제공하는 클래스이다. 점층적 생성자 패턴 - 확장이 어려움 pubic class NutritionFacts { private final int servingSize; priva..

Tistory

[이펙티브자바] 아이템3. private생성자나 열거타입으로 싱글턴 보증

싱글턴 인스턴스를 오직 하나만 생성할 수 있는 클래스. 클라이언트를 테스트 하기 어려워질 수 있다. 싱글턴을 만드는 방법은 두 가지가 있는데 두 가지 모두 생성자는 private으로 감춰두고 static멤버를 이용해..

Tistory

[이펙티브자바] 아이템4. 인스턴스화를 막으려면 private을 강제하라

정적메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 있다. 예를 들면 java.lang.Math, java.util.Arrays와 같은 기본 타입의 값이나 배열 관련 메서드를 모아놓을 수 있다. java.util.Collections처럼 특..

Tistory

Spring MVC 동작 방식 (DispatcherServlet)

MVC모듈 서블릿 기반 웹 어플리케이션에 사용할 수 있는 프레임워크로 객체 사이의 관심사를 분리할 수 있는 프레임워크이다. 컨트롤러 : 요청을 처리 검증기(Validator) : 검증을 수행 모델 : 데이터를 저장..

Tistory

Spring ResourceHttpRequestHandler

ResourceHttpRequestHandler 정적 리소스를 처리하는 작업을 담당한다. 유연한 캐시설정을 허용해서 브라우저 성증에 최적화된 정적 리소스를 제공한다. 요청에 대한 리소스가 있는지 확인한 후 처음으로 발견..

Tistory

스프링 빈 라이프 사이클(Spring Bean Life Cycle)

스프링 빈은 스프링컨테이너에 의해서 관리된다. 프로그램이 실행되면서 스프링 컨테이너가 시작되고, 컨테이너의 요청에 따라 빈의 인스턴스를 생성하고 의존성을 주입한다. 스프링 컨테이너가 닫히면 빈이 파괴..

Tistory

Spring @Configuration @Bean 스프링 빈 등록 방법

프로그램으로 Spring Bean 설정시 @Configuration, @Bean 어노테이션을 이용할 수 있다. 클래스에 @Configuration을 설정하면 Class안애 @Bean메서드가 1개 이상 있어야하고 메서드는 빈 인스턴스를 생성해 반환한..

Tistory

Docker mariadb 설치

Docker image pull docker pull mariadb Docker Run docker container run -d -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=1234 \ -v /Users/Shared/data/mariadb:/var/lib/mysql \ --name mariadb mariadb docker vol..

Tistory

JAVA 직렬화란? 직렬화 사용이유

JAVA 직렬화란? JAVA시스템 내부에서 사용되는 데이터나 객체들을 외부 자바 시스템에서도 사용할 수 있도록 byte형태로 변환하는 기술로 바이트로 변환된 데이터를 다시 객체로 변환하는 역직렬화도 포함된다. 대..

Tistory

Spring boot + mariadb + mybatis + hikaricp 설정

Gradle 설정 implementation group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '2.2.2' implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '3...

Tistory

Spring @Valid 어노테이션으로 파라미터 검증하기

Gradle 추가 implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation' ProductInfo.java package com.heypli.productsvc.domain.request; import com.fasterxml.jackson.annot..

Tistory

Spring Cloud Gateway Global Error Handler

ErrorWebExceptionHandler spring-mvc에서는 ErrorController, AbstractErrorController, BasicErrorController가 기본적으로 제공되므로 에러를 핸들링 할 수 있다. Spring-cloud는 webflux 기반이므로 mvc에서..

Tistory

Spring circuitbreaker actuator health check 설정

Gradle implementation "org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j" implementation 'org.springframework.boot:spring-boot-starter-actuator' CircuitBreaker Confi..

Tistory

백준 2075번 N번째 큰 수 자바

문제 N×N의 표에 수 N2개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5일 때의 예를 보자. 12 7 9 15 5 13 8 11 19 6 21 10 26 31 16 48..

Tistory

백준 3040번 백설공주와 일곱 난쟁이 자바 풀이

문제 매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다. 어느 날 광..

Tistory

백준 10448번 유레카 이론 자바 풀이

문제 삼각수 Tn(n ≥ 1)는 [그림]에서와 같이 기하학적으로 일정한 모양의 규칙을 갖는 점들의 모음으로 표현될 수 있다. [그림] 자연수 n에 대해 n ≥ 1의 삼각수 Tn는 명백한 공식이 있다. Tn = 1 + 2 + 3 +..

Tistory

모던자바인액션 11강 Optional

Optional 클래스 소개 java.util.Optional Optional은 선택형값을 캡슐화하는 클래스다. 위의 그림처럼 Car가 null이 아니라 값이 없음을 나타낸다. Optional 클래스로 감쌀 경우 null이 아닌 Optional.empty 메..

Tistory

모던자바인액션 12강 Date, Calendar 날짜와 시간 API

기존 자바에서 날짜 표현 자바 1.0에서는 java.util.Date클래스 하나로 날짜와 시간 기능을 제공했다. Date클래스는 밀리초단위로 표현이 된다. Date date = new Date(117, 8, 21); // 출력 결과 Thu Sep 21 00..

Tistory

모던자바인액션 12강 Date, Calendar 날짜와 시간 API

기존 자바에서 날짜 표현 자바 1.0에서는 java.util.Date클래스 하나로 날짜와 시간 기능을 제공했다. Date클래스는 밀리초단위로 표현이 된다. Date date = new Date(117, 8, 21); // 출력 결과 Thu Sep 21 00..

Tistory

모던자바인액션 13강 디폴트 메서드

디폴트 메서드가 나온 배경 자바 8이전에 자바에서는 인터페이스를 구현하는 클래스는 인터페이스에서 정의하는 모든 메서드를 구현하여 제공하거나 슈퍼클래스의 구현을 상속받아야 한다. 그런데 인터페이스에..

Tistory

Spring ExceptionHandler & ControllerAdvice

SpringBoot가 제공하는 ExceptionResolver 1. ExceptionHandlerExeptionResolver @ExceptionHandler 처리 > API 예외처리 2. ResponseStatusExceptionResolver @ResponseStatus(value=HttpStatus.NOT_FOUND) Ht..

Tistory

Spring boot thymeleaf 로 Error페이지 처리

모든 에러를 다 잡아낼 수 없기 때문에 Spring에서 ErrorController를 구현해서 에러페이지를 처리할 수 있다. package org.springframework.boot.web.servlet.error; import org.springframework.stereotype.C..

Tistory

Spring Boot QR코드 이미지 생성 해서 thymeleaf로 보여주기

QR코드 생성을 위한 라이브러리 추가 pom.xml com.google.zxing javase 3.1.0 Controller.java @RequestMapping("/getQrcode") public String getQrcode(Model model) throws Exception { String img = getQRCodeI..

Tistory

java static 사용이유 생성자 대신 static 팩토리 메소드

JAVA Static 이란? 고정된 이란 의미를 가지며 static변수와 static메소드를 만들 수 있다. 메모리에 한 번 할당되어서 프로그램이 종료될때 해제되는 것을 의미한다. GC가 적용되지 않는다. 일반적으로 Class는 s..

Tistory

자바 스트림 처리

스트림이란? 한 번에 한개씩 만들어지는 연속적인 데이터 항목들의 모임. 입력스트림에서 데이터를 한 개씩 읽어들어 출력스트림으로 데이터를 한 개씩 기록한다. 어떤 프로그램의 출력 스트림은 다른 프로그램의..

Tistory

람다란 무엇인가

람다표현식 메서드로 전달할 수 있는 익명함수를 단순화 한 것. 이름은 없지만 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외리스트를 가질 수 있다. 보통 메서드와 달리 이름이 없기때문에 구현해야할..

Tistory

JAVA 병렬 스트림 사용시 고려할 점

1. 확신이 서지 않으면 직접 측정하라. 병렬스트림이 순차 스트림보다 언제나 빠른 것은 아니다. 병렬스트림의 수행과정이 투명하지 않을 수도 있고 공유된 가변상태가 있을 경우 올바르게 동작하지 않을 수도 있..

Tistory

컬렉션 API 개선

자바9에서 작은 컬렉션 객체를 쉽게 만들 수 있는 방법을 제공한다. String List를 만들 때 List friends = Arrays.asList("Rophael", "Olivia", "Thibau"); 고정 크기의 리스트를 만들었지만 요소를 추가하거나..

Tistory

백준 5397번 키로거 자바 풀이

문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드..

Tistory

백준 1935번 후위표기식2 자바 풀이

문제 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식..

Tistory

redis cluster 구성(windows)

1. Redis install https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100 Release 3.2.100 · microsoftarchive/redis This is the first release of Redis on Windows 3.2. This release is based..

Tistory

task non-zero exit (137) docker container 비정상 종료

task non-zero exit (137) 대부분 메모리 문제라고 함. docker-desktop 윈도우 로컬에서 띄웠고 wsl2 사용중이었다. docker memory를 늘려줬다. settings > advanced 에 메모리를 늘릴 수 있으나 wsl2 사용중일..

Tistory

자바최적화 - JVM

1. 인터프리팅과 클래스로딩 JVM인터프리터 > 'while루프 안에 switch문' java HelloWorld 로 자바 어플리케이션을 실행하면 OS는 가상 머신 프로세스를 구동한다(자바 바이너리) 자바 가상환경이 구성되고 스택머..

Tistory

intellij gradle 버전 변경하기

gradle-wrapper.properties에서 사용중인 버전을 확인할 수 있다. distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2..

Tistory

gitlab-runner register x509: certificate signed by unknown authority

gitlab-runner 등록할 때 gitlab에 ssl이 적용되어 있어서 에러날 때 gitlab서버에 인증서를 복사해서 gitlab-runner container /etc/ssl/certs에 넣는다. // ca-certificates 설치 $ apt install ca-certificates..

Tistory

gitlab-runner docker 내부 git연결 시 설정

config.toml [runners.docker] tls_verify = false image = "alpine" privileged = true disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = ["/cache"] shm_size =..

Tistory

Docker 에 rabbitmq 설치

docker pull rabbitmq:3-management management image를 받지 않으면 대시보드를 사용할 수 없다. docker run -d --hostname rabbit --name rabbit -p5672:5672 -p 15672:15672 rabbitmq:3-management -e RABBITMQ..

Tistory

Spring boot Rabbitmq test

exchange > test.exchange 추가 queues > test.queue 추가 exchange 에서 만든 exchange에 들어가면 Bindings에 추가할 수 있다. test.queue, test.route.# Spring Boot > rabbitmq consumer #application.prop..

Tistory

logstash input rabbitmq 설정 docker swarm

docker-compose.yml version: '3.8' services: logstash: image: docker.elastic.co/logstash/logstash:7.10.2 ports: - '9600:9600' - '9900:9900' - '9901:9901' environment: TZ: UTC networks: - prod configs..

Tistory

windows docker kubernetes fail to start

windows 에 kubernetes를 설치하려면 virtualbox로 많이들 하던데 회사 PC에 virtualbox설치가 안된다. 어쩔 수 없이 minikube를 설치해서 테스트해봤는데 minikube는 external ip 노출이 안되서 테스트가 쉽지 않..

Tistory

kubernetes kafka 연동 (with springboot)

kubernetes yaml 파일 작성시 띄어쓰기 조금만 잘못되도 object가 올라가지 않는다. 아래 사이트에서 yaml 파일 검증을 했다. https://codebeautify.org/yaml-validator Best YAML Validator Online Free YAML Val..

Tistory

intellij gitlab 기존소스 연동하는방법

이거 자꾸 할 때마다 검색해서 하는게 답답해서 정리함 일단 gitlab에서 프로젝트를 생성한 후 주소를 복사해둠. intellij VCS > Enable Version Control Integration git 선택한 후 OK 그러면 이렇게 메뉴에 g..

Tistory

gitlab package registry 생성 후 라이브러리 올리는법(gradle)

docs.gitlab.com/ee/user/packages/maven_repository/ Maven packages in the Package Repository | GitLab Maven packages in the Package Repository Version history Introduced in GitLab Premium 11.3. Moved..

Tistory

Jenkins Rest API with JAVA

www.jenkins.io/doc/book/using/remote-access-api/ Remote Access API Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their sof..

Tistory

docker gitlab 설치 & gitlab-runner 연동

Gitlab Runner 는 Gitlab CI/CD와 pipeline에서 Job을 실행시키는 어플리케이션으로 별도로 설치해서 사용할 수 있다. Gitlab docker 설치 (Windows Docker) docker run --detach --name gitlab --hostname gitlab..

Tistory

docker gitlab ssl(https) 적용

인증서 생성 //폴더 생성 $mkdir -p /var/opt/gitlab/certs cd /var/opt/gitlab/certs // 개인키 생성 $openssl genrsa -out gitlab.key 2048 // CSR 생성 $openssl req -new -key gitlab.key -out gitlab.csr You..

Tistory

unable to access ssl certificate problem self signed certificate in certificate chain intellij

intellij  - File > Settings > Tools > Server Certificates > Accept non-trusted certificates automatically 체크 그래도 안되면 git config --global http.sslVerify false 옵션을 끈다

1 2