목록분류 전체보기 (212)
개발자 끄적끄적
- 균형 이진검색 트리는 말단 노드가 모두 같은 레벨에 존재하는 형태 - 이진 트리에 대한 연산이 가장 효율적으로 이루어진다 - 불균형이 가장 심화된 상태(사향트리(skewed tree)의 경우 - 사향트리의 경우는 데이터값이 크기 순서대로 오름차순 또는 내림차순으로 입력될 때 나타난다 - 검색 트리가 불균형 상태 : 검색 성능의 저하 - 이러한 문제점을 해결한 구조로서 AVL 트리가 있다 이 이진 검색트리는 모든 노드에서 왼쪽과 오른쪽 부트리의 깊이의 차이가 1이하인 상태를 유지하도록 데이터의 삽입/삭제 시에 균형을 이루도록 노드를 재배치하는 구조를 가지고있다 - AVL트리는 이진 검색트리로서 트리의 균형을 유지한다 - 균형트리의 조건 - 트리의 균형을 유지하기 용이 - 트리의 깊이가 O(log2n)을..
- 기본키 무결성 제약 - 참조 무결성 제약 - NOT NULL - UNIQUE - CHECK - DEFAULT - 오라클의 권한 종류 - 시스템 권한(System privileges) - 사용자의 생성, 테이블이나 테이블 스페이스의 생성 등과 같이 주로 시스템의 자원을 관리할 수 있는 권한 - 데이터베이스 관리자 계정(sys, system)은 모든 시스템 권한을 가진다 - 객체 권한(object privileges) - 해당 객체에 대해 select, insert, delete, update 등과 같은 DML을 실행 할 수 있는 권한 - 객체 - 테이블이나 뷰 또는 사용자 정의 함수 등 1. 사용자 - create user : 사용자 계정을 생성할 수 있는 권한 - drop user : 사용자 계정을 ..
- 사용자가 특정 객체에 대해 특정 연산을 실행할 수 있는 권리 - 특정 객체 - 테이블 부, 필드 등 데이터베이스의 구성 요소 - 권한 제어가 가능한 연산의 종류 - 데이터의 접근권한 연산(DML) - SQL의 select, insert, delete, update 등 - 스키마 관련 연산(DDL) - 스키마를 수정하는 연산 - create table, alter table, drop table, create index 등 - 데이터베이스 관리자(DBA) - DBMS내의 모든 객체에 대해 모든 권한 - 객체에 대한 연산, 객체의 제거와 변경을 포함 - 다른 사용자에게 해당 객체에 대한 권한을 부여하거나 회수 - 객체 소유자(owner) - 특정 사용자가 객체를 생성한 사용자 - 생성한 객체에 대해 모든..
- 콘텐츠의 증가 - 콘텐츠의 증가로 인하여 사용자가 원하는 콘텐츠를 선택하기가 어려워짐 - 사용자의 패턴이나 구매 내역을 분석해서 사용자 취향에 맞는 콘텐츠를 필터링하여 자동으로 제공하는 것이 요구된다 - 적용분야 - 고품질의 추천 필요 - 인터넷 쇼핑몰에서의 상품 추천(상품, 도서, 영화) - 웹 환경에서의 웹 사이트, 웹 페이지 추천, SNS상의 추천 - 구글, YouTube, Facebook, LinkedIn, 포털사이트 - 각 사람에 맞는 추천을 해주기 위해서는 아래와 같이 여러 가지 정보들을 고려해야 한다 - 개인화된 추천을 제공하기 위해 고려할 수 있는 정보들 - 사용자의 인구통계학적 속성 정보(Demographic features) : 나이, 성별 주소 등 - 콘텐츠의 속성 정보(Conte..
- 현대 대칭키 블록 암호는 - n비트 평문 블록을 암호화 하거나 - n비트 암호문 블록을 복호화한다 - 암호화 혹은 복호화 알고리즘은 k비트 키를 사용한다 ex) 만약 인코딩 과정에서 8비트 ASCII 코드가 사용되고 64비트 블록 암호를 이용하여 암호화하기를 원한다면, 100개의 문자로 구성된 메시지는 몇 비트가 덧붙이기 되어야 하는가? Solution) 100개의 문자를 8비트 ASCII 코드로 인코딩하면 800비트의 메시지가 된다 평문은 64로 나누어야만 한다 만약 |M|과 |Pad|를 각각 메시지 길이와 덧붙이기 길이라고 한다면 |M| + |Pad| = 0 mod 64 -> |Pad| = -800 mod 64 -> 32 mod 64 - 현대 블록 암호는 대치 암호 혹은 전치 암호로 동작하도록 설..
- 암호에서는 자주 네 개의 연산(덧셈, 뺄셈, 곱셈, 나눗셈)을 필요로한다 다시 말해서, 암호에는 체가 필요하다 - 그러나 컴퓨터에서 체에 정의된 연산을 수행할 때, 양의 정수들은 컴퓨터에 n-비트 워드들로 저장된다 - N은 보통 8, 16, 32, 63 등의 배수형태를 취한다 이것은 정수들의 범위가 0에서 (2^n)-1 까지인 것을 의미한다. 즉, 모듈러는 2^n - 따라서 체를 사용할 때는 두 가지 방법이 있다 - n-bit 워드들을 표현하는 다항식들은 두 개의 체 GF(2)와 GF(2^n)를 사용한다 - GF(2^n)의 다항식들의 집합들에 대해서, 차수 n의 다항식의 어떤 집합은 군의 모듈러로서 정의된다 - 이 경우 모듈러는 소수 다항식(prime polynomial)으로서 행동하는데 다항식은 집..
- 마스크를 이동하여 처리하는 것으로서, 구형 마스크(홀수 길이) 또는 주어진 영상에 걸쳐 다른 형태의 마스크를 사용한다 마스크 함수와 결합은 필터의 기능을 가진다 새로운 그레이 값으로 계산되는 함수는 마스크 내의 모든 그레이 값의 선형함수이기 때문에 선형필터라고 한다 선형필터는 이웃하는 화소들을 대상으로 마스크 내에서 대응하는 모든 값들을 각각 곱한 후에 이들을 모두 더하기하는 기능이다 1. 현 화소에 걸쳐진 마스크의 위치 2. 이웃 화소들에 대응하는 값(화소의 값)과 필터의 해당 값(가중치)을 각각 서로 곱한다 3. 곱의 항들을 모두 더한다 이 과정을 영상의 모든 화소에 대하여 반복처리한다 - 3x3 마스크는 널리 사용되는 하나의 필터이고, 이는 마스크 내의 총 9개의 값들을 평균처리 하는 것이다 이..
- 기기마다 다른 크기, 해상도 비율 - 크기, 해상도에 따라 이미지 크기를 다르게 사용 - 화면 크기, 비율에 따라 레이아웃을 다르게 구성 - 태블릿은 폰 보다 더 큰 화면 - 더 많은 위젯을 포함할 수 있다 - 화면 크기에 따라 위젯 크기도 자동으로 조정 - 프래그먼트(Fragment)활용 - 기기 방향 변화에 따른 디자인 - 가로 보기와 세로 보기에 따라 다르게 디자인 - 또는 방향을 고정하여 한가지만 디자인 - UI를 구성하는 요소는 위젯과 레이아웃으로 나눌 수 있다 - 위젯 - 정보를 출력, 입력 받기 위한 UI 구성 요소 - TextView, Button, EditText, Checkbox 등 - 레이아웃 - 사용자 인터페이스에 대한 시작적 형태를 계층적 구조로 정의 - 레이아웃(부모)과 포함..
- 문자열에 대해서는 일부분만 일치하는 경우를 찾아야 할 때 사용 - '=' 연산자 대신에 'like 연산자'를 사용 - '='는 정확히 일치하는 경우에만 사용 - 형식 where like - 에 지정된이 들어 있는 지를 판단 - 문자열 패턴 종류 - _ : 임의의 한 개 문자를 의미 - % : 임의의 여러 개 문자를 의미 - ‘%서울%’ : ‘서울’이란 단어가 포함된 문자열 - ‘%서울’ : ‘서울’이란 단어로 끝나는 문자열 - ‘서울%’ : ‘서울’이란 단어로 시작하는 문자열 - ‘_ _ _’ : 정확히 세 개의 문자로 구성된 문자열 - ‘_ _ _%’ : 최소한 세 개의 문자로 구성된 문자열 - ex) student 테이블에서 김씨 성을 가진 학생들을 찾는 질의 select * from studen..
- SQL은 자연어와 유사하고 '비절차적 언어'이므로 사용하기 용이하다 비절차적 언어 : what to do - 표현력이 떨어진다 절차적 언어 : how to do - SQL은 크게 DDL과 DML로 구성된다 - 데이터 정의 언어(DDL : Data Definition Language) - 데이터 저장 구조를 명시하는 언어 - '테이블 스키마(table schema)'의 정의, 수정, 삭제 - 자동 commit 즉, rollback 불가 -> drop table - 데이터 조작 언어(DML : Data Manipulation Language) - 사용자가 데이터를 접근하고 조작할 수 있게 하는 언어 - '레코드(인스턴스)'의 검색(research), 삽입(insert), 삭제(delete), 수정(upd..
- Common algebraic structures 1. Groups 2. Rings 3. Fields - 군(Group, G)은 네 개의 성질(혹은 공리)을 만족하는 이항연산이 정의된 원소들의 집합이다 - 가환군(Commutative group)혹은 아벨군(Abelian group)은 군에 대한 네 개의 성질에 교환법칙을 추가로 만족하는 집합니다 - 닫힘(Closure) - 결합법칙(Associativity) - 교환법칙(Commutativity) - 항등원의 존재(Existence of identitiy) - 역원의 존재(Existence of inverse) - 하나의 군에는 한 개의 연산만이 정의되지만, 그 연산에 대한 성질들은 그 연산과 역함수 관계에 있는 연산의 사용을 허용한다 - ex) 정..
- 전치암호는 한 기호를 다른 기호로 대체시키지 않고 대신에 그 기호의 위치를 바꾼다 - 즉, 전치암호는 기호를 재정렬시킨다 - 과거에 사용된 간단한 전치암호는 키가 없다 ex)rail fence암호 - 키가 없는 암호는 한쪽 방향으로(예를 들어, 행 순서로) 평문을 기록하고 역 방향으로(예를 들어, 열 순서로)그것을 읽음으로써 문자를 치환한다 - 전체 암호문을 생성하기 위하여 전체 평문에 치환이 적용된다 - 다른 방법은 블록(block)이라고 하는 사전에 정의된 크기로 평문을 나눈 뒤, 각각의 블록에 독립적으로 키를 사용하여 문자를 치환하는 것이다 1. 행렬의 사용(Using Matrices) - 전치암호의 암호화/복호화 과정을 살표보기 위하여 행렬을 이용 - ex) Representation of t..
- 이진 트리는 노드에 저장된 데이터의 크기와 무관히 데이터가 노드에 위치되었다 - 그러나 이진트리의 응용에서는 이진트리를 사용하여 데이터를 트리 내에 저장하고 검색, 삭제하는 연산이 많이 사용 - 이진 검색 트리 - 데이터의 크기에 따라 트리 내부에 저장되는 위치가 결정되고 검색이나 삭제 시에도 데이터의 크기에 따라서 검색의 경로가 결정되는 구조 - 이진 검색트리에서 데이터를 크기에 따라 저장될 위치를 결정하기 위한 조건이 먼저 지정되어야 한다 - 조건 1. 루트 노드의 데이터값은 왼쪽 부트리의 모든 노드보다 크거나 같다 2. 로트 노드의 데이터값은 오른쪽 부트리의 모든 노드의 데이터 값보다 작다 3. 모든 부트리에서 위의 두 조건을 만족한다 struct list{ strunct list*left; i..
- 화소(pixel)의 그레이 값의 변환을 의미한다 1. 변환 - Time Domain 또는 주파수 도메인 칼라 도메인 변경 등 2. 주위 화소처리 : 영역처리 - 주어진 화소의 그레이레벨을 변환하기 위해 주어진 화소를 둘러싸고 있는 주위 화소를 이용하여 해당 화소의 그레이레벨 값을 처리하는 방법 3. 점처리 - 한 화소의 그레이레벨 값이 주위의 어떤 것도 이용하지 않고 변환하는 방법 4. 연산처리 - y = f(x) //함수 또는 알고리즘을 적용시킨다 함수의 값은 0~255의 범위에 있는 정수값으로 주어지는 함수 y = x +- C(C는 상수) y - Cx 또는 y=x/C - 각 경우 대하여 그 결과가 주어진 범위 0~255에서 정수 값이 되도록 조정할 필요가 있다 그리고 결과가 아래 식와 같이 범위를..
- 함수형 프로그래밍이란 - 자료 처리를 수학적 함수의 계산으로 다루고 - 상대 변경(Changing state)과 가변 데이터(Mutable data)를 쓰지 않는 프로그래밍 패러다임 - 명령형 프로그래밍(Imperative programming)에서는 상태를 바꾸는 것을 강조하는 것과 달리 함수형 프로그래밍은 함수의 응용을 강조 - 1930년대에 계산가능성, 결정문제, 함수정의, 함수응용과 재귀를 연구하기 위해 개발된 형식체계인 람다 대수(Lambda-calculus)에 근간을 두고 있다 - 수학적 함수와 명령형 프로그래밍에서 사용되는 함수 - 명령형 프로그래밍의 함수 - 프로그램의 상태 값을 바꿀 수 있는 부수 효과가 생길 수 있다 - 참조 투명성이 없고, 같은 코드라도 실행되는 프로그램의 상태에 ..
어떤 클래스가 더 중요할 때 많은 경우에 하나의 클래스 멤버들을 찾는 게 더 중요할 수 있다(클래스의 중요성이 불균등한 경우 성능평가) - 세금 사기 - 신용 부도 - 판촉 행사물에 대한 응답 - 전자 네트워크 침입 감지 - 비행지연 예측 이러한 경우에, 전체 정확도가 낮아지더라도 좀 더 관심을 갖는 중요한 클래스를 더 잘 찾도록 해주는 평가 척도가 필요하고, 그러한 척도들의 균형을 맞추는 기준값 설정이 중요 - 만약 “C1”이 중요한 클래스라면 (C1, C2) - 민감도(Sensitivity )= “C1” 클래스가 정확하게 분류될 확률, 즉 중요 집단의 소속 레코드를 정확하게 판별하는 능력=𝑛_1,1∕〖(𝑛_1,1+𝑛_1,2)〗 - 특이도(Specificity )= “C2” 클래스가 정확하게 분류될 확..
- 나이브 규칙(Naive Rule) - 예측 변수의 정보를 무시하고 모든 레코드를 빈도가 자주 발생하는 우세한(Prevalent)클래스의 일원으로 분류 혹은 평균값으로 예측 - 때때로 벤치마크로 사용된다 - 분류기의 성능이 나이브 규칙을 적용한 결과보다 우수하기를 희망 - ex : (수치형) 예측변수는 무시하고 결과변수의 평균값을 사용, R-square - 예외 - 가치가 높지만 희귀한 결과를 내는 것을 찾는 것이 목표일 때, 나이브 규칙보다 더 나쁘게 함으로써 성능이 더 좋을 수 있다 - 분류기는 학습 데이터로부터 구축 - 학습과 검증과 성능상 큰 차이는 과적합을 암시 - 정확도(Accurancy) = 1-err - 클래스가 많다면, 오분류율은 다음과 같다 - (잘못 분류된 레코드의 총합)/(전체 레..
- 공격자 Eve는 항상 암호/복호 알고리즘을 알고 있다고 가정한다 - 암호의 안전성은 키의 안전성에만 바탕을 둔다 - 바꾸어 말하면, 키를 알아내는 것이 매우 어려워서 암호/복호 알고리즘을 비공개로 할 필요가 없어야 한다 - 현대 암호에서는 각각의 알고리즘의 매우 큰 키 공간(Key domain)을 가져서, 공격자가 키를 찾기 어렵게 한다 - 암호(Cryptanaly)가 비밀 코드를 생성하는 과학이자 예술인 것처럼, 암호 분석(Cryptanalysis)은 그런 코드를 깨는 과학이자 예술이다 - 암호 기술을 공부하는 것도 필요하지만, 암호 분석 기술을 연구하는 것도 필요하다 - 암호 분석 기술은 다른 사람의 코드를 깨는 데 사용되는 것이 아니라, 우리가 사용하는 암호 시스템이 얼마나 취약한지 측정하는데..
- 단순한 클래스 정의 - class 클래스_이름(생성자 인자 리스트) - 생성자 인자들 중 val/var이 붙은 것은 클래스의 속성이 된다 - 자바와 다르게 - 코틀린은 기본적으로 public class - 객체를 생성할 때 new 키워드를 쓰지 않는다 - 속성 접근 메소드를 자동으로 만들어주며, 커스텀 접근 메소드를 만들 수도 있다 - 자바의 인터페이스와 비슷하다 - 구현이 있는 메소드 정의 가능 - 자바처럼 default를 붙이진 않는다 - 인터페이스 구현 클래스의 메소드 구현에서 override를 반드시 써야한다 - 클래스르 상속받을 때에도 메소드 오버라이드할 때 override를 쓴다 - interface, abstract class는 기본적으로 상속(구현), 메소드 오버라이드 가능 - clas..
- 네트워크 환경 지원 - 다양한 운영체제 지원 - 대용량 데이터 처리 지원 - 여러 사용자의 동시 접속 지원 - 신뢰성 높은 보안 기능 제공 - 오류 및 장애에 대한 대비책 지원 - 논리적 구성요소 - 데이터 블록(data block) - 익스텐트(extent) - 세그먼트(segment) - 테이블스페이스(tablespace) - 물리적 구성요소 - 데이터파일 - 컨트롤 파일 - redo 로그 파일 - 매개변수 파일 - alert/trace 로그 파일 - 백업 파일 1. 테이블보기 - 현재 사용자 계정에서 사용하는 테이블 정보 - 형식 : select* from tab; //tab은 table이름 2. 직전에 실행했던 며령문 보기 및 실행 - list, run - list : 바로 직전에 사용한 명령..