본문 바로가기

전체 글

(92)
[JAVA] 클래스 자바는 객체지향 패러다임 기반의 언어이다! 객체지향이란 시스템을 상호작용하는 객체들의 협력으로 바라보고 시스템의 책임을 분할하여 각각의 객체가 맡은 책임을 메시지로 소통하며 수행하는 방법이다. 객체는 자신이 맡은 책임을 수행하기 위해 다른 객체와 협력한다. 각 객체는 협력 내에서 정해진 역할을 수행하며 역할은 관련된 책임의 집합이다. 객체는 다른 객체와 협력하기 위해 메시지를 전송하고, 메시지를 수신한 객체는 이를 처리하는데 적합한 메서드를 자율적으로 선택한다. -> 조영호님의 객체지향의 사실과 오해 인용 클래스란? 객체를 만들기 위한 설계도(구현 메커니즘) 클래스는 [필드, 생성자, 메서드]를 가질 수 있다. 인스턴스 설계도에 따라 메모리상에 실체화된 객체 어떻게 하면 Variable로 상징되는 데이터..
[DB] 1NF, 2NF, 3NF 간단 정리 1NF (1차 정규화) 각 로우마다 컬럼의 값이 "원자 값"으로 존재하는 것 한 컬럼에 여러 개의 값이 동시에 존재한다면 새로운 튜플을 만들어 컬럼 값을 나눠서 원자값을 만들어 줄 수 있다. 2NF (2차 정규화) 테이블의 모든 컬럼이 완전 함수적 종속을 만족하는 것. 테이블의 기본 키의 일부로 결정할 수 있는 컬럼(부분 함수적 종속)이 없어야 한다. 부분 종속성을 가지는 컬럼을 다른 테이블로 쪼개서 정규화를 수행한다. 3NF (3차 정규화) 기본키를 제외한 속성들 간 "이행적 함수 종속"이 없는 것. 기본키 이외의 컬럼이 다른 컬럼을 결정하면 안된다. 서로 종속성을 가지고 있는 컬럼을 다른 테이블로 쪼개서 정규화를 수행한다. Reference 3months.tistory.com/193
[DB] 함수적 종속성 (Funtional Dependency) 함수적 종속성이란? 테이블에서 속성들 사이의 종속성을 표현 X -> Y X는 '결정자'이며 Y는 '종속자'이며 X가 Y를 결정한다. Y가 X에 종속되어있다고도 볼 수 있다. [학번, 이름, 학부] 으로 이뤄진 테이블있다고 했을 때 학번은 이름과 학부를 결정할 수 있으므로 결정자가 된다. (학번 -> (이름, 학부)) 부분 함수적 종속 이름을 [학번, 과목코드]가 결정할 때 [학번, 과목코드]의 일부인 [학번]만으로도 이름을 결정할 수 있으면 이름은 [학번, 과목코드]에 부분 함수적 종속이라고 볼 수 있다. 완전 함수적 종속 성적을 결정하기 위해선 [학번, 과목코드]가 모두 필요하다. 둘 중 하나만으로는 어떤과목에 대한 학생의 성적을 결정할 수 없다. 그러므로 성적은 [학번, 과목코드]에 완전 함수적 종속..
[DB] 데이터베이스 삽입, 갱신, 삭제 이상 현상 (Anomaly) 데이터베이스 정규화란? 데이터베이스의 잘못된 설계로 발생할 수 있는 데이터 중복과 이상(Anomaly)현상을 해결하기 위한 방법. 이상현상의 종류에는 삽입이상, 갱신이상, 삭제이상이 있다. STUDENT_ID NAME COURSE_ID DEPARTMENT 1 park 10 컴퓨터공학 1 park 11 컴퓨터공학 3 kim 13 전자정보 4 lee 13 수학과 삽입이상 학생 정보는 넣고 싶은데 해당 학생이 어떠한 수업도 신청하지 않았다면 추가될 수 없는 문제. STUDENT_ID와 COURSE_ID가 기본키이므로 COURSE_ID는 NULL이 될수 없으므로 학생은 삽입될 수 없다.. 학생데이터가 추가되려면 "미수강"과 같은 불필요한 데이터가 함께 추가되어야만 하므로 이런 문제를 "삽입 이상"이라고 한다. ..
[LCS] Longest Common Subsequence (최장 공통 부분 문자열) LCS 알고리즘이란..? 한국말로 번역해보면 "최장 공통 부분 문자열"이다. 여기서 Subsequence와 Substring의 차이에 대해 이해해야만 한다. 둘의 차이는 연속성이다. 연속된 부분 문자열을 만족하는 것은 Substring이고 연속되지 않은 부분 문자열이라면 Subsequence이다. "ACAYKP" "CAPCAK" 가장 긴 Substring은 CA이고 가장 긴 Subsequence는 ACAK이다. LCS 를 구하는 방법 (다이나믹 프로그래밍) 먼저 dp배열을 만들어준다. 0열 0행을 추가적으로 만들어준다. (편의를 위해) 배열1과 배열2를 비교하는데 배열2의 문자하나를 잡아서 배열1의 모든 문자와 비교해나간다. 문자를 비교해서 값이 같으면 왼쪽 위(현재 문자를 포함하지 않은 최댓값)에 +1..
[1주에1번자문자답] 데이터베이스에 대한 자문자답 ✋🏻 데이터베이스가 무엇이며 왜 사용하나요? 여러 사용자들이 공유해서 사용할 목적으로 구조화하여 관리하는 데이터 집합입니다. 하나의 데이터베이스에 여러 응용프로그램이 접근할 수 있어서 데이터를 효율적으로 사용할 수 있습니다. 또한, 데이터가 여러 곳에 산재되어 있지 않고 하나에 모여있기 때문에 데이터의 무결성을 유지하기가 좋습니다. 데이터 중복의 최소화, 공용 데이터, 데이터의 일관성 유지(접근 시 유효성 검사), 데이터의 무결성 유지(정당한 사용자, 데이터, 연산 체크), 보안 보장, 표준화 ✋🏻 파일시스템을 사용하지 않고 데이터베이스를 사용하는 이유? 파일 단위로 저장해서 사용할 때 데이터 종속성 문제와, 데이터 무결성 문제가 발생하기 때문입니다. 데이터 종속성 데이터 구성이나 접근 방법 변경 시 관..
[JAVA] primitive type과 reference type 차이 primitive type과 reference type 차이 프리미티브 타입은 메모리에 값을 저장하고 있고, 레퍼런스 타입은 객체가 저장되어 있는 주소가 저장되어 있다. 기본 자료형 -> byte, short, int, long (런타임 스택 영역) 객체 -> String, Class, Interface, Array 등 (가비지 컬렉션 힙 영역) 레퍼런스 타입은 실제 객체의 주소를 가리키기 때문에 `복사` 시에 항상 유의해야 한다. Wrapper Class (객체) int와 Inteager가 둘다 존재하는 이유를 드디어 알게되었다. 프리미티브 타입으로 표현할 수 있는 데이터를 객체로 만들어야하는 경우에 사용하기 위해 만든 기능 두 타입간 변환을 `Boxing` 과 `Unboxing`이라고 한다. Wrap..
[JVM] Java Virtual Machine : 자바 가상 머신이란? JVM이란? 스택 기반의 자바 가상머신으로서 클래스 파일을 실행할 수 있다. JVM의 역할 자바 애플리케이션을 클래스 로더를 통해 읽어들이고 자바 API와 함께 실행하는 역할 JVM의 특징 JAVA와 OS사이에서 중개자 역할 수행 (OS 종속적이지 않음) [JVM 자체는 운영체제에 의존적이므로 맞게 설치해야함] Garbage Collection을 통해 메모리 관리를 해준다. JVM 구성 Class Loader 생성한 인스턴스가 Runtime시점에 메모리에 로드하게 함 Runtime Data Areas JVM이 프로그램을 수행하기 위해 별도로 할당받은 메모리 공간 PC Register, Java Virtual Machine Stack, Native Method Stack, Method Area, Heap ..

반응형