잠깐 ! JVM 정리하고 갑시다
·
프로그래밍 언어/Java
오늘부터 Java 강의를 듣고 과제를 수행한다.1~3주차 강의의 내용은 아주 기본적인 내용들이었다.몇몇은 건너뛰기도 하고, 1.5배속으로 훑으면서 가물가물한 부분들은 따로 공부를 진행하려고 메모를 해두었다.그리하여 이제 메모한 내용들을 공부할 시간 ... 먼저 JVM에 대해 정리하고 넘어가자   JVM이란?JVM은 Java Virtual Machine의 줄임말로, Java로 짜여진 코드들을 운영체제에서 실행할 수 있도록 만들어주는 가상의 기기(소프트웨어)이다.자바로 작성된 어플리케이션이 컴퓨터에서 동작하기 위해서는 반드시 JVM이 필요하다.일반적인 다른 어플리케이션이 바로 OS와 상호작용하는 것과 달리 자바 어플리케이션은 JVM과 상호작용하며, JVM이 OS와 상호작용하는 역할을 한다.이 때문에 어플리케..
날아갈랑말랑했던 SQL 문법 복기 (2)
·
Database
SQL 강의를 마저 들었다 !REPLACE : 글자 대치하기replace(컬럼, 대상 글자, 바뀔 글자) CONCAT : 문자열 합치기concat(합칠 문자열, 합칠 문자열, ...)select concat('[',substr(addr,1,2),']',restaurant_name,' (',cuisine_type,')') "음식점", count(1) "주문 건수"from food_ordersgroup by 1 SUBSTR : 원하는 위치의 글자만 가져오기substr(컬럼, 시작 인덱스, 가져올 글자 수)시작 인덱스 >= 1'가져올 글자 수'를 명시하지 않고 substr(컬럼, 시작 인덱스)로 적을 경우, 시작 인덱스부터 끝까지 가져옴 GROUP BY : select 절의 n번째 컬럼으로 묶기group b..
날아갈랑말랑했던 SQL 기본 문법 복기 (1)
·
Database
SQL 강의를 들으면서 정처기 공부할 때 또 바짝 공부했었던 SQL 문법들을 복습했다대부분 아는 내용들이었지만, 머릿속에서 사라져가려고 했던 몇몇 문법들을 다시 붙들어잡을 수 있었던 좋은 시간이었던 듯 ...너무 잘 아는 내용은 생략하고, 다시 붙잡을 수 있었던 내용들을 정리해본다 SELECT 시 별명(alias) 설정하기컬럼1 as 별명1ex) order_id as ord_no컬럼2 별명2ex) order_id as "주문 번호"⚠️ 주의할 점별명이 '영어'와 '언더바'로만 이루어져 있는 경우에만 "" 기호 없이 별명을 설정할 수 있다.  조건 필터링 IN : ~ 중에 하나인가?in (A, B, C) A, B, C 중 하나에 해당 된다면 선택됨ex) age in (15,21,31)  조건 필터링 LIK..
SpringBoot + QueryDSL 적용 살펴보기
·
Project
QueryDslConfig.javapackage com.lettrip.lettripbackend.configuration;import com.querydsl.jpa.impl.JPAQueryFactory;import jakarta.persistence.EntityManager;import jakarta.persistence.PersistenceContext;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class QueryDslConfig { @PersistenceContext private EntityMan..
[JPA] 지연 로딩, 즉시 로딩, N+1 문제
·
개발 공부
지연 로딩객체가 실제 사용될 때 조회즉시 로딩JOIN SQL으로 한번에 연관된 객체까지 미리 조회N+1 문제하나의 객체를 조회하는데 +N개의 쿼리가 함께 나가는 문제
[백준] BOJ 12852번 1로 만들기 2 (Java)
·
알고리즘/문제 풀이
문제https://www.acmicpc.net/problem/12852 풀이1로 만들기 풀이와 유사하지만, x에서 1까지 어떤 숫자를 선택했는지를 저장해야 한다.next[x]는 x 다음 ( /3, /2, -1) 연산을 통해 어떤 숫자가 되어야 최소 작업으로 1이 될 수 있는 지를 저장한다. package boj.dp;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Boj_12852_1로만들기2 { static int[] d; static int[] next; public static void main(String[] args) throws IOException { Bu..
[백준] BOJ 2579번 계단 오르기 (Java)
·
알고리즘/문제 풀이
문제https://www.acmicpc.net/problem/2579 풀이DP를 활용해서 풀면 된다. 문제에 나온 예제를 예로 들어보자.idx012345score[idx]102015251020 배열 d[idx] (dp)에 들어가는 값은 0부터 시작해서 idx번째 계단을 밟았을 때 얻을 수 있는 점수의 최댓값으로 정의한다. 문제 조건에 따라 마지막 계단은 반드시 밟아야 하는 상황이다.따라서 d[5]의 입장에서 시작해 보자. 5번째 계단을 밟으면 가능한 상황은 3번째 계단을 밟거나, 4번째 계단을 밟은 상황 두 가지이다.하지만 그렇다고 d[n] = max(d[n-1], d[n-2]) + score[n] 로 점화식을 세우면 안 된다. 문제에 명시된 "계단을 3개 연속해서 밟을 수 없다" 는 조건이 위배될 수 ..
[Algorithm] 최단 경로 탐색 알고리즘
·
알고리즘
최단 경로 알고리즘그래프 상황에서 vertex 간의 최단 경로를 구하는 알고리즘이다.   문제는 위와 같이 아예 그래프로 문제 상황이 주어지거나, 혹은 위와 같이 '경로'로서 문제 상황이 주어진다. 문제를 graph, vertex, edge로 표현하여 풀면 된다. 단일 출발 최단 경로특정 하나의 노드에서 다른 모든 노드까지의 최단 경로를 구하는 문제이다.  1. 다익스트라 알고리즘음수 가중치 미포함 경우에만 사용 가능하다.방문하지 않은 정점 중, 거리가 최소인(cost가 낮은) 정점을 방문한다. 정점을 방문 처리하고, 최단 거리를 확정한다.현재 처리 중인 (최단 거리가 확정된) 노드를 거쳐서 다른 노드로 가는 비용을 계산하고 갱신한다. 특징거리가 최소인 정점을 찾는 과정에서 Heap 혹은 Priority..
최소 비용 신장트리 (MST: Minimum Spanning Tree)
·
알고리즘/자료구조
Spanning Tree, 신장트리란?그래프에 포함된 모든 정점(vertex)들을 포함하는 부분 그래프이다. (즉, 그래프 구성 edge만이 달라짐)모든 vertex는 적어도 하나의 edge에 연결되어 있다.트리이므로 cycle이 존재해서는 안 된다.주어진 하나의 그래프에 대해 다양한 신장트리가 존재할 수 있다.vertex의 개수 v에 대해 (v-1)개의 edge를 가진다.신장 트리는 DFS, BFS 등을 이용하여 구성할 수 있다. (탐색을 통해 방문한 정점 순서대로 신장 트리 구성) Minimum Spanning Tree, 최소 비용 신장트리가중치가 부여된 무방향 그래프에서, 신장 트리의 비용이 가장 적은 spanning tree를 최소 비용 신장트리라 한다.즉, 신장트리를 구성하는 edge들의 가중치..
[프로그래머스] Lv.2 두 큐 합 같게 만들기 (Java)
·
알고리즘/문제 풀이
문제https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이첫 번째 풀이 : 실패class Solution { public int solution(int[] queue1, int[] queue2) { int middleIndex = queue1.length; int[] connectedQueue = new int[middleIndex*2]; long targetSum = 0l; for(int i=0; itargetSum) { ..
도메인 로직(Domain Login)이 뭔데?
·
개발 공부
https://enterprisecraftsmanship.com/posts/what-is-domain-logic/ What is domain logic?In this post, I’ll write about a couple of thoughts regarding what domain logic is and how to distinguish it from other types of logic.enterprisecraftsmanship.com 해당 포스트는 위 아티클을 읽고 정리한 내용이다. 어떤 하나의 소프트웨어 어플리케이션이 있을 때 크게 Problem space와 Solution space로 나누어 볼 수 있다.Problem Space / Solution SpaceProblem SpaceThe prob..
[BAW] Express + PostgreSQL 트랜잭션 처리 도입기
·
Project
* 현재 ORM 도입 없이 PostgreSQL 드라이버인 pg를 사용하여 데이터베이스와 연결하고 있습니다. 기존 코드  기존 CommentService의 코드입니다. commentId를 받아와서 댓글 하나를 삭제합니다.이 로직 한 번에 총 4번의 DB 쿼리가 날아가게 됩니다. 1. commentId로 comment를 찾아옵니다.2. 해당 comment의 부모 댓글을 찾아 recomment_count를 1 감소시킵니다.3. 해당 comment가 달린 article을 찾아 comment_count를 1 감소시킵니다.4. 만일 대댓글이 달린 댓글이라면 해당 댓글에 deleted를 마킹하고, 그렇지 않다면 해당 댓글을 테이블에서 바로 삭제합니다. 현재 트랜잭션 처리가 되어있지 않아 2~4번 과정에서 에러가 발생..