목록분류 전체보기 (718)
쌓고 쌓다
서버와 DB는 통신시 다음 과정을 거친다. 커넥션 연결 : TCP/IP를 통해 연결 SQL 전달 : 커넥션을 통해 서버는 MySQL에 맞는 SQL을 전달한다. 결과 응답 : DB는 서버가 전달한 SQL을 수행하고 결과를 응답한다. 그런데 여기서 DB의 종류가 바뀌면 어떻게 될까? DB마다 커넥션을 연결하고 쿼리를 전달하고 응답이 다르다는 문제가 발생한다. 즉, 서버에서 개발한 DB 사용 코드도 변경해야하고 DB에 맞는 통신 방법을 공부해야한다. 이런 문제를 해결하기 위해 JDBC가 등장한 것이다. JDBC 표준 인터페이스 JDBC(Java Database Connectivity)는 자바에서 DB에 접속, 자료의 쿼리, 업데이트등을 돕는 자바 API이다. 다음 3가지 기능을 표준 인터페이스로 제공한다. j..
스프링부트 서버는 Container로 띄우고 DB는 로컬을 사용하길 원하는 상황이다. DB는 localhost만 접속이 가능한 상황인데 Docker 컨테이너에서 localhost는 로컬이 아닌 컨테이너 자신의 ip이다. 쉽게말해 컨테이너에서 localhost는 컨테이너이기 때문에 내 로컬에 접근하지 않는것이다. 그래서 Dokcer 컨테이너에서 local의 DB에 접근을 못하는 상황이다 application.properties를 다음과 같이 수정한다. spring.datasource.url=jdbc:mysql://host.docker.internal:3306/spot -> 원래는 mysql://localhost:3306 이지만 host.docker.internal로 컨테이너 내부에서 호스트 머신의 네트워..
https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 위의 피라미드는 다음과 같은 배열로 들어온다. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 아래의 층부터 위로 채워나갈 예정이다. 2 7 4 4가 존재하는 층 시작한다. 2 는 다음과 같은 선택지가 있다. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 4 와 5중에 더 큰 수를 2에 더하면 된다. 이때 2에 5를 더해주면 된다. 다음은 7에 대해 이야기해보자. 7에서 선..
IP(Internet Protocol) 지정 IP 주소에 데이터 전달 패킷 단위로 데이터 전달 IP 프로토콜의 한계 비연결성 : 패킷 전송시, 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 내가 어떤 친구가 있겠지하고 전송했지만 상대 PC가 꺼져있을 수 있다. 그런 경우에도 난 전송을 하는것을 뜻한다. 난 전송이 제대로 되었는지 모름... 비신뢰성 : 내가 패킷을 전송했는데 패킷이 사라지거나 순서가 제대로 도착하지 않을 수 있다. 이것을 해결 못함... 프로그램 구분 : 한 피씨에서 카톡, 게임 등등.. 여러 애플리케이션이 있는데 통신하는 애플리케이션이 구분할 수 없음.. 인터넷 프로토콜 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워..
C++로 알고리즘을 풀고 공부했는데... 우아한 테크 캠프 모집을 봤는데 코딩 테스트 언어로 Java만 지원 받는다는 ... 충격적인... 그래서 백엔드를 희망하기도해서 이제 알고리즘 공부를 Java로 시작하기로 다짐했다.. 당장 코딩 테스트인데 자바로 기본적인 자료구조 사용하는 법을 정리하고자 한다.. 자료구조 사용을 위해 다음을 import하면 된다. import java.util.*; Stack Stack s = new Stack(); // 생성 s.push(1); // 삽입 s.pop(); // 삭제 s.peek(); // 조회 s.empty(); // 크기 조회 Queue Queue q = new LinkedList(); // 생성 q.add(1); // 삽입 q.remove(); // 삭제 q..
아래의 Dockerfile을 만들어 주자. FROM openjdk:17 ARG JAR_FILE=build/libs/spotServer-0.0.1-SNAPSHOT.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] COPY : ${JAR_FILE}를 도커 이미지의 ./app.jar 경로에 복사한다. ENTRYPOINT : Docker 컨테이너가 시작될때 실행되는 명령을 지정한다. 그리고 로컬에서 빌드한다. 테스트 코드는 빌드에서 제외하기 위해 -x test를 추가해주었다. ./gradlew build -x test 빌드한 파일은 JAR_FILE 경로에 존재하게 된다. 그리고 다음 명령어를 실행하자. docker build --platf..
https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 장르별 총 재생 횟수 Map을 이용해 장르별 총 재생 횟수를 기록 -> genresCnt 장르별 총 재생 횟수를 기록할때, 장르별 노래 Map에 노래 저장 -> genresSong 장르별 총 재생 횟수 Map을 재생 횟수로 정렬 -> List genre genre를 순차적으로 탐색하며 genresSong에서 노래 목록을 조건에 맞춰 정렬 -> songs songs에서 노래를 두개 꺼내 ..
원하는기능은 다음과 같았다. 게시글과 댓글은 일대다 관계이고 작성한 댓글의 게시글을 중복없이 최근에 작성한 댓글의 게시글이 먼저 오도록 정렬하는 QueryDSL을 작성하길 원했다. 처음에 QueryDSL을 사용하다가 다음과 같은 코드를 작성했었다. List posters = jpaQueryFactory .select(new QPosterResponse( poster.id, poster.writer.id, poster.writer.name, poster.title, poster.content, poster.regDate, ExpressionUtils.as( JPAExpressions .select(posterLike.count()) .from(posterLike) .where(posterLike.poste..