전체 글 127

[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제만들기

비즈니스 요구사항과 설계아래와 같은 요구사항을 보면  회원데이터, 할인 정책 같은 부분은 지금 결정하기 어려운 부분이다.그치만 정책이 결정 나기 전까지 기다릴 수만은 없다.이때 우리는 객체 지향 설계 방법을 활용하면 된다. 인터페이스를 만들고 언제든지 구현체를 갈아 끼울 수 있도록 설계하면 된다. 회원회원을 가입하고 조회할 수 있다.회원은 일반과 VIP 두 가지 등급이 있다.회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)주문과 할인 정책회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다.할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해 달라. (나중에 변경될 수 있다.)할인 정책은 변경 가능성이 높다. 회사의 기본..

Spring 2024.10.09

[스프링 핵심 원리 - 기본편]객체 지향 설계와 스프링

스프링 단어?스프링이란 단어는 문맥에 따라 다르게 사용된다.스프링 DI 컨테이너 기술스프링 프레임워크스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계 이 기술을 왜 만들었는가?이 기술의 핵심 컨셉은? 과거 범용적으로 쓰이던 EJB 은 EJB 에 종속적으로 개발을 해야하는 불편함이 있었고 객체지향 프로그램밍을 잘 개발할 수 있게 스프링이 등장하였다. 스프링은 자바 언어 기반의 프레임워크자바 언어의 가장 큰 특징 - 객체 지향 언어스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 좋은 객체 지향 프로그래밍이란?스프링을 제대로 이해하기 이해서 다형성과 SOLID 을 알아야한다. 다형성이란?하나의 객체가 여러..

Spring 2024.10.08

[MySQL] B-Tree 인덱스

인덱스를 생성하는 도중 의문에 생겼다.다중컬럼 인덱스를 생성하면 단일컬럼인덱스를 왜 또 생성해주어야할까?다중컬럼 인덱스를 걸어두면 단일컬럼 조회 시에도 인덱스 스캔을 타야 하는 것이 아닐까?B-Tree 인덱스 구조를 파헤쳐보면 이 문제에 대한 해답을 얻을 수 있었다. 인덱스란? 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조를 뜻한다.즉 데이터를 빨리 찾기 위해 특정 컬럼을 기준으로 미리 정렬해 놓은 표 라고 이해하면 쉽다. 인덱스의 장단점인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 검색하는데 빠르지만, 새로운 값을 추가하거나 삭제, 수정하는 경우에는 쿼리문의 실행 속도가 느려집니다.즉, 인덱스는 저장성능을 희생하고 그 대신 데이터의 검색 속도를 높이는 기능이라 ..

다익스트라 알고리즘

https://www.youtube.com/watch?v=tZu4x5825LI  내비게이션은 어떤 원리로 최단거리를 추천해줄까? 궁금하다면 다익스트라 알고리즘을 알아보자! 다익스트라(Dijkstar) 알고리즘은 그래프의 한 정점에서 모든 정점까지의 최단거리를 구하는 최단 경로 문제 알고리즘입니다. 음수 간선이 없는 경우 사용할 수 있고, 음수의 간선이 존재할 경우 벨만-포트 알고리즘을 사용하면됩니다.1. 다익스트라 알고리즘은 아직 확인되지않은 거리는 전부 초기값을 무한으로 잡습니다.Q 는 방문하지 않는 노드들의 집합   초기화를 실행합니다.출발지를 A 로 설정했기 때문에 ,  d[A] = 0 이 된다. ( A 노드를 아직 방문한 것은 아니다)출발지를 제외한 모든 노드들은 아직  확인되지 않았기에, d[다..

알고리즘 2024.10.03

[Real Mysql 8.0] 5.2 MySQL 엔진의 잠금

5.2  MySQL 엔진의 잠금 Mysql 에서 사용되는 잠금은 크게 스토리지 엔진 레벨과 MySQL 엔진 레벨로 나눌 수 있다. MySQL 엔진 :MySQL 엔진 레벨의 잠금은 모든 스토리지 엔진에 영향을 미침스토리지 엔진 : 스토리지 엔진 간 상호 영양을 미치지 않음. 5.2.1GLOBAL LOCKFLUSH TABLES WITH READ LOCK 명령으로 획득 할 수 있다.MySQL 에서 제공하는 잠금 가운데 가장 범위가 크다.한 세션에서 글로벌 락을 획득하면 다른 세션에서 SELECT 를 제외한 대부분의 DDL ,DML 문장을 실행하는 경우 글로벌 락이 해제될 때까지 해당 문장이 대기 상태로 남는다.글로벌 락이 영향을 미치는 범위는 MySQL 서버 전체이다.작업 대상 테이블이나, 데이터베이스가 다르..

프로그래머스 광고삽입 [JAVA]

https://school.programmers.co.kr/learn/courses/30/lessons/72414 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  해당 문제는 누적합의 개념을 알아야 시간안에 풀 수 있다.시간은 초로 환산하여 계산하면 간단히 구현할 수 있다.  주의 1. 재생시간에서 끝나는 시간 end 에서는 -1 을 해주어야 한다. 시청 구간의 의미: 예를 들어, 로그에 00:00:00 - 00:00:10이라고 되어 있으면, 일반적으로 시청이 00:00:00에서 시작하고, 00:00:10이 시작되는 순간에 끝난다는 것을 의미합니다. 즉, 실..

알고리즘 2024.10.02

프로그래머스 택배 배달과 수거하기 [JAVA]

https://school.programmers.co.kr/learn/courses/30/lessons/150369#  접근 방법매 순간 최적의 선택을 통해 문제를 해결해 나가는 그리디 유형이다.먼 곳의 택배의 갯수를 매번 최적으로 가져오면 최소한의 이동거리를 얻을 수 있다.멀리 있는 지점부터 시작해 트럭의 용량만큼 배달하고, 용량이 허용하는 한 수거작업 또한 진행한다.  import java.util.*;class Solution { public int update(int pointer, int[] arr, int cap){ int sum = 0; while(pointer >= 0 && sum cap){ arr[++pointer] = sum - ca..

알고리즘 2024.09.30

백준 2579 계단 오르기 [JAVA]

https://www.acmicpc.net/problem/2579문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다.예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다.계단 오르는 데는 다음과 같은 규칙이 있다.계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다.연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.마지막 도..

알고리즘 2024.09.30

[2장 객체 생성과 파괴] 아이템2. 생성자에 매개변수가 많다면 빌더를 고려하라

생성자에 매개변수가 많다면 빌더를 고려하라정적 팩터리와 생성자에 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 제약이 있다. 대안1. 점층적 생성자 패턴 식품포장의 영양정보를 표현하는 클래스를 예를 들어보자. public class NutritionFacts{ // 필드(기본값이 있다면) 기본값으로 초기화된다. private final int servingSize; // (mL, 1회 제공량) - 필수 private final int servings; // (회, 총 n회 제공량) - 필수 private final int calories; // (1회 제공량당) - 선택 private final int fat; // (g/1회 제공량) - 선택 private fina..

백준 10814 나이순 정렬 [JAVA]

https://www.acmicpc.net/problem/10814  문제온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.입력첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000)둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다.출력첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 ..

카테고리 없음 2024.09.27