전체 글
-
[Docker] 도커 brew install —cask docker 문제 해결BACKEND/Docker 2023. 7. 9. 06:38
이전에 설치했던 docker에 문제가 발생해서 다시 설치하기 위해 인터넷에서 dmg 파일을 매번 다시 다운로드하기엔 귀찮아서 brew로 재설치를 진행해보려한다. 이 때 발생했던 오류를 해결했던 기록이다. brew로 도커를 한번에 설치하기 위해 brew install --caks docker —cask 옵션을 추가하여 docker와 관련된 프로그램까지 같이 설치하려 하는데 Warning: Cask 'docker' is already installed. 이러한 오류가 발생한다면, 잔여 파일 삭제 brew로 도커를 한번에 설치하기 위해 brew install --caks docker —cask 옵션을 추가하여 docker와 관련된 프로그램까지 같이 설치하려 하는데 Warning: Cask 'docker' is..
-
[Spring Boot][토이 프로젝트] 2. WebClient를 통한 기상청 공공 API 조회 및 @Scheduled를 사용한 자동화Spring/Study 2023. 6. 30. 20:04
https://code-list.tistory.com/75 이전 프로젝트와 이어지는 글입니다. WebClient 사용한 이유 RestTemplate를 사용하여 외부 API를 조회할 수 있었지만, 나중에는 Deprecated 된다는 글이 심심치 않게 보이길래.... https://velog.io/@dailylifecoding/Spring-RestTemplate-wont-Deprecate 그런데 그냥 유언비어라는 이야기도 있었다. 그래도 RestTemplate 보다 DTO 객체로 변환하기도 쉬운 것 같아서 사용해보게 되었다. 사용법 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-webflux' WebClient를 사용하기 위해 web..
-
[JAVA] JAVA의 Steam API 간단 예시 (람다식, 메서드 참조)Language/Java 2023. 6. 30. 01:26
각 용어 정리 stream() JAVA 8 부터 추가된 반복자다. 간단하게 컬렉션(ex. List, ArrayList....) 형식을 for문으로 하나씩 반복해서 끝까지 참조하는 메소드다. stream()으로 시작해서 람다식으로 처리하면 된다. 람다식 추상 메서드가 하나뿐일 때 간단하게 표현하는 방법이다. 예를 들어 정렬 방법을 선택할 때 사용한다. Arrays.sort(arr, new Comparator(){ @Override public int compare(int[] o1, int[] o2) { if (o1[1] == o2[1]) { return o1[0] - o2[0]; } return o1[1] - o2[1]; } }); Arrays.sort(arr, (int[] o1, int[] o2) -> ..
-
[Spring Boot][토이 프로젝트] 1. KakaoMap API 백엔드처리 및 테스트 코드 작성Spring/Study 2023. 6. 29. 18:21
토이 프로젝트 설명 목적 본 프로젝트의 목적은 첫 번째로 프론트의 카카오 맵 API 활용을 연습하려는 목적 백엔드의 지도 API 활용 방법 공부이다. 두 번째로 Controller의 테스트 코드를 작성하기위해 WebMvcTest 활용 방법을 연습했고 세 번째로 기상청 공공 API를 활용한 외부 데이터 수집 방법에 대한 학습을 목적으로 WebClient를 활용했다. 이번 글은 첫 번째와 두 번째의 내용을 정리했고, 추가적인 글을 통해 세 번째의 내용을 정리할 예정이다. 사용한 기술 및 스택 언어 : JAVA 프레임워크 : Spring Boot, JPA, WebFlux 데이터베이스 : H2, MariaDB DevOps : AWS, Docker 라이브러리 : Lombok, H2, MariaDB JDBC, Qu..
-
[QueryDsl] Q타입 컴파일 중 javax.persistence.entity 오류Spring/Trouble Shooting 2023. 6. 17. 21:47
Q타입 컴파일 시 발생한 javax.persistence.entity 오류 바뀐 환경 이전까지 프로젝트 진행함에 있어 QueryDsl을 사용하기 위해 Q타입 컴파일하는데 문제가 없었는데, 이번에 2.7.x 버전에서 3.1.x 버전으로 변경해서 그런지 Q타입 컴파일 하는데 오류가 발생했다. 해결 방법 build.gradle에 있는 dependencies에 QueryDsl 의존성의 모든 부분에 :jakarta 를 입력해주면 된다. implementation "com.querydsl:querydsl-jpa:${queryDslVersion}" annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"위를 아래와 같이 변경한다. implementatio..
-
[Transaction] 트랜잭션 정리 - 1Spring/Study 2023. 6. 16. 15:55
본 정리는 Spring Boot와 연관지어 정리한 것입니다. 1. Transaction 1-1. 사전적 의미 트랜잭션의 사전적 의미는 "거래"이다. A가 B에게 송금하고, B는 A에게 입금을 받는다. 이 행위를 통틀어서 거래라고 한다. 1-2. 개념 커밋 Commit A의 송금과 B의 입금 두 행위 모두 성공하게 된다면? 데이터 베이스에 정보를 저장한다. 데이터베이스에 저장(반영)하는 것을 커밋(Commit) 이라고 한다. 롤백 Rollback 만약 A의 송금은 성공했는데, B의 입금 행위는 실패한다면? 커밋을 하면 안되고 A의 송금 행동을 되돌려야 할 것이다. 이 되돌리는 것을 롤백(Rollback) 이라고 한다. 1-3.트랜잭션 ACID 트랜잭션은 ACID라고 하는 Atomicity, Consiste..
-
[DBCP] 데이터베이스 커넥션 풀 간단 정리: Database Connection PoolSpring/Study 2023. 6. 14. 16:35
본 정리는 Spring Boot와 관련지어 정리한 내용이다. Database Connection Pool Database Connection Pool이 필요한 경우? 유저가 특정 서비스를 요청했을 때, 서비스가 서버에서 DB에 접근을 해서 처리를 해야 하는 서비스라면? 서버는 DB에 연결을 하기위해 TCP/IP 연결을 수행한다. 이때 3-way 핸드셰이크도 수행하게 될 것이다. 그렇게 되면 데이터 베이스에서 SQL을 실행시키는 시간 + 연결 시간이 소요된다. 매번 연결하는 시간이 진행된다면 매우 비효율적이기 때문에 서버와 DB간의 커넥션을 미리 저장 해놓는 공간이 데이터베이스 커넥션 풀이다. 어떻게 동작하는가? 서버가 시작하는 시점에 기본적으로 설정된 커넥션을 미리 확보해서 서버가 보관해둔다. Sprin..
-
[백준/JAVA] 1620번 나는야 포켓몬 마스터 이다솜 - HashMapETC/Algorithm 2023. 6. 9. 10:19
풀이 문자열인지 정수형인지 판단? Character.isDigit() 메소드를 사용하여 문자열인지 정수형인지 판단한다. 정수형이면 true값이 나온다. 문자열 전체를 조회해서 정수형에서 나올 수 없는 내용이면 false가 한번이라도 나오게 되면 그 문자열은 정수형이 아니다. 자료형 선택 문자열이 입력되면 정수형으로 몇 번째 포켓몬인지 출력되어야 하므로 HashMap을 정수형이 입력되면 문자열으로 포켓몬 이름이 출력되어야 하므로 ArrayList를 사용하였다. 코드 제출 코드 import java.io.*; import java.util.*; class Main { static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out..