목록분류 전체보기 (29)
( •̀ ω •́ )✧

※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 https://heyitzme.tistory.com/41 Spring 핵심 기능 - DI(Dependency Injection) ※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 DI (Dependency Injection) DI는 ‘종속성 주입’, 결론부터 말하자면 ‘부품 조립’에 해당한다. Dependency = 종속성 Injection = 주입 두 단어 heyitzme.tistory.com 저번 포스팅에서 알아본 것처럼 spring의 핵심 기능 중 하나가 DI, 즉 ‘부품 조립’이다. Spring이 부품 조립을 하기 위해서는 개발자가 사용할 부품들을 명시한 ‘주문서’를 제공해야 한다. Spring은 주문서대로 부품을 조립하는 역..

※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 DI (Dependency Injection) DI는 ‘종속성 주입’, 결론부터 말하자면 ‘부품 조립’에 해당한다. Dependency = 종속성 Injection = 주입 두 단어 모두 난해하게 느껴진다. 아래에서 두 단어가 각각 의미하는 바를 알아보도록 하자. Dependency = 종속성 = 부품 프로그램은 객체들의 조립관계로 만들어진다. 객체는 곧 부품이다. 이를테면, A class에서 B를 객체화해서 사용하는 경우를 생각해보자. 1. 일체형 관계 (A class가 생성될 때 A가 직접 B를 생성해서 사용) class A { private B b; public A() { b = new B(); } } 2. 조립형 관계 (A 객체에 B 객..
※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 https://heyitzme.tistory.com/38 [Java] 인터페이스의 구현 ※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 초기 상태 초기 상태는 위와 같다. main class인 Program과 A, B가 결합력이 강한 상태로 결합되어 있다. 위 코드를 도식화하면 이 그림과 heyitzme.tistory.com 위 글에서는 인터페이스를 통해 A 객체와 결합될 객체를 B, C, ... 로 자유롭게 대체할 수 있다는 가능성까지 제시하였다. 하지만 여전히, B를 C로 대체하기 위해서는 main class의 코드 수정이 불가피하다. 만약 교체가 자주 일어나는 객체의 자리라면, 아래와 같이 설정 부분을 외부 파일로 빼내고 코드..

※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 초기 상태 초기 상태는 위와 같다. main class인 Program과 A, B가 결합력이 강한 상태로 결합되어 있다. 위 코드를 도식화하면 이 그림과 같다. 지금은 A와 B가 결합되어 있고, B가 있으므로 문제가 없다. 하지만 만약 B가 없는 상황이라면, A는 구현될 수 없다. 따라서, B가 없는 상황을 상정하고 A에 인터페이스(X)를 구현하여 추후 B를 사용할 수 있도록 바꿀 것이다. 인터페이스 구현 전체 코드는 위와 같다. 클래스별로 자세히 살펴보자. 📁 class A package ex6; public class A { // private B b; // B객체를 대체할 수 있는 인터페이스 X private X x; // 나중에 X를 참..

※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 인터페이스는 무엇인가? 어떤 것, 어떤 장소, 어떤 시간에 접근하고자 하지만 일반적인 방법으로는 접근할 수 없다. 접근할 수 있는 도구나 방법이 있다면 그것을 ‘인터페이스’라고 한다. 쉽게 생각하면, 인터스텔라에서 다른 우주에 접근하기 위한 도구로 웜홀이 있는데, 그것을 인터페이스로 볼 수 있다. 프로그래밍에서는 코드의 분리를 위해 고안된 개념이다. 가령, 배터리 분리형 스마트폰을 상상해보자. 💡 배터리를 분리하는 이유는 무엇일까? 하나의 스마트폰에 다양한 업체의 배터리를 교체하기 위해 하나의 배터리를 다양한 업체의 스마트폰에 호환하기 위해 아무튼 스마트폰 제조 상황과 배터리 제조 상황을 분리하여 진행하기 위함이라 생각하자. 그렇다면, 💡배터리..
🔎 BOJ 18353. 병사 배치하기 (Silver 2) https://www.acmicpc.net/problem/18353 18353번: 병사 배치하기 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 💡 SOL import sys from bisect import bisect_left input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) dp = [0] for a in arr[::-1]: if dp[-1] < a: dp.append(a..
🔎 BOJ 2110. 공유기 설치 (Gold 4) https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 💡 SOL import sys from bisect import bisect_left input = sys.stdin.readline N, C = map(int, input().split()) # N 집 수 C 공유기 수 X = [0] * N for i in range(N): X[i] = int(..

0. Oracle XE, DBeaver 설치 완료한 상태 1. DBeaver 실행 2. 좌측 상단 플러그(새 데이터베이스 연결) 클릭 3. DB 종류 (Oracle) 선택 후 다음 4. 리스너 정보 입력 4-1. 리스너 정보는 cmd > lsnrctl status 명령어를 통해 조회할 수 있다. 5. 모두 입력 후 좌측 하단 'Test Connection' 눌러 연결 테스트 -> Connected면 연결 성공! 6. 연결된 상태 * 참고 : 오라클 서버 아키텍처
🔎 BOJ 16118. 달빛 여우 (Gold 1) https://www.acmicpc.net/problem/16118 16118번: 달빛 여우 첫 줄에 나무 그루터기의 개수와 오솔길의 개수를 의미하는 정수 N, M(2 ≤ N ≤ 4,000, 1 ≤ M ≤ 100,000)이 주어진다. 두 번째 줄부터 M개의 줄에 걸쳐 각 줄에 세 개의 정수 a, b, d(1 ≤ a, b ≤ N, a ≠ b www.acmicpc.net 💡 SOL import sys from heapq import heappush, heappop input = sys.stdin.readline N, M = map(int, input().split()) arr = [[] for _ in range(N + 1)] for _ in range(M)..
💡 문자 리터럴과 문자열 리터럴 문자 리터럴 : 'A' 와 같이 작은 따옴표로 문자 하나를 감싼 것 문자열 리터럴 : 큰 따옴표로 감싼 것 char ch = 'J'; char ch = 'JAVA'; // 이건 안 됨 String name = "JAVA"; String name = new String("JAVA"); 💡 빈 문자열 String str = ""; // OK. 빈 문자열 가능 char ch = ''; // error. 반드시 하나의 문자 필요 char ch = ' '; // OK. 공백 문자 가능 💡 덧셈 연산자 덧셈 연산자를 이용하여 문자열을 결합할 수 있다. String name = "JA" + "VA"; // name은 "JAVA" 피연산자가 모두 숫자일 때는 두 수를 더하지만, 피연산자..