목록✏️ 노트 (16)
( •̀ ω •́ )✧

※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 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를 참..

※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 인터페이스는 무엇인가? 어떤 것, 어떤 장소, 어떤 시간에 접근하고자 하지만 일반적인 방법으로는 접근할 수 없다. 접근할 수 있는 도구나 방법이 있다면 그것을 ‘인터페이스’라고 한다. 쉽게 생각하면, 인터스텔라에서 다른 우주에 접근하기 위한 도구로 웜홀이 있는데, 그것을 인터페이스로 볼 수 있다. 프로그래밍에서는 코드의 분리를 위해 고안된 개념이다. 가령, 배터리 분리형 스마트폰을 상상해보자. 💡 배터리를 분리하는 이유는 무엇일까? 하나의 스마트폰에 다양한 업체의 배터리를 교체하기 위해 하나의 배터리를 다양한 업체의 스마트폰에 호환하기 위해 아무튼 스마트폰 제조 상황과 배터리 제조 상황을 분리하여 진행하기 위함이라 생각하자. 그렇다면, 💡배터리..

0. Oracle XE, DBeaver 설치 완료한 상태 1. DBeaver 실행 2. 좌측 상단 플러그(새 데이터베이스 연결) 클릭 3. DB 종류 (Oracle) 선택 후 다음 4. 리스너 정보 입력 4-1. 리스너 정보는 cmd > lsnrctl status 명령어를 통해 조회할 수 있다. 5. 모두 입력 후 좌측 하단 'Test Connection' 눌러 연결 테스트 -> Connected면 연결 성공! 6. 연결된 상태 * 참고 : 오라클 서버 아키텍처
💡 문자 리터럴과 문자열 리터럴 문자 리터럴 : '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" 피연산자가 모두 숫자일 때는 두 수를 더하지만, 피연산자..
💡 상수 변수와 마찬가지로, ‘값을 저장할 수 있는 공간’을 뜻함 키워드 final을 붙여서 선언한다. final int MAX_SPEED = 10; 선언과 동시에 초기화 하는 것이 좋다. 상수 이름은 모두 대문자로 하는 것이 암묵적인 관례이며, 여러 단어로 이루어져 있는 경우 _로 구분한다. 💡 리터럴 원래 12, 123, ‘A’ 와 같은 값들을 상수라고 부르지만, 프로그래밍에서 상수를 값을 한 번 저장하면 변경할 수 없는 저장공간으로 정의하였기 때문에 상수를 리터럴이라고 부른다. int year = 2014; final int MAX_VALUE = 100; 위에서 year은 변수, MAX_VALUE는 상수, 2014와 100은 리터럴 💡 리터럴의 타입과 접미사 long타입 + l 또는 L float타..
💡 변수의 타입 - 기본형 (primitive type) 계산을 위한 실제 값을 저장 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 💡 기본 자료형의 크기 1byte 2byte 4byte 8byte 논리형 boolean 문자형 char 정수형 byte short int long 실수형 float double 범위 정수형(byte, short, int, long)의 경우, $-2^{n-1}$ ~ $2^{n-1}+1$ ($n$은 bit 수) int타입은 4byte = 32bit이므로 $-2^{31}$ ~ $2^{31}-1$ 의 범위를 가짐 $2^{31}$ ≒$2 * 10^9$, int타입은 대락 10자리수를 가짐 long타입..

💡 Redis (Remote Dictionary Server) → 오픈 소스 기반의 in-memory 데이터 저장소 💭 Redis 의 특징 In-Memory 저장소 👍 메모리에 데이터를 저장하기 때문에 빠른 읽기 및 쓰기 속도를 제공함 👎 메모리 기반의 저장소이기 때문에 저장 가능한 데이터 양에 제한이 있음 👎 메모리에 저장되기 때문에 서버 장애 시 데이터가 손실될 수 있음 다양한 데이터 구조 👍 단순한 Key-Value 구조뿐만 아니라 String, List, Set, Sorted Set, Hash 등 다양한 데이터 구조를 지원 Pub/Sub 메시징 👍 Publish/Subscribe 메시징 시스템을 지원하여 실시간 데이터 푸시 및 메시지 큐 기능을 제공 지속성 👍 디스크에 데이터를 저장하여 장애 발생..