내용 복습
JAVA
API
- java.lang(기본 패키지): Object, System, Class, String, StringBuffer/StringVuilder, Math, Wrapper 등이 포함되어 있다.
- java.util(java.lang의 추가 기능): Arrays, Calendar, Date, Objects, StringTokenizer, Random, Locale, Timezone 등
StringBuffer/StringBuilder 🔗
- String과 달리 가변적으로, 같은 메모리 주소에 변수 값을 저장할 수 있다. 따라서 동일 객체 내 문자열 추가, 수정, 삭제가 가능하다.
- StringBuffer는 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전하다
- StringBuilder는 동기화를 지원하지 않지만 단일쓰레드에서의 성능은 StringBuffer 보다 뛰어나다
java.util.Arrays
- 얕은 복사(shallow copy): 배열의 경우 그냥 대입할 경우, 다른 변수끼리 같은 주소를 배정한다. 따라서 한 변수의 값을 바꾸면, 다른 변수의 값도 바뀌게 된다.
- 깊은 복사: 배열을 Array.copyOf(배열, 길이)로 대입할 경우, 같은 값을 다른 주소에 배정하게 된다. 따라서 한 변수의 값이 바뀌더라도, 다른 변수의 값은 바뀌지 않는다.
enum 열거형
- enum은 상수형 클래스와 비슷하다. 필드는 대문자로, (상숫값)을 명시하여 배정할 수 있다. 명시하지 않을 경우 0부터 1씩 증가하여 자동 설정된다.
public enum Week {
MONDAY("월요일", "月"),
TUESDAY("화요일", "火"),
WEDNESDAY("수요일", "水"),
THURSDAY("목요일", "木"),
FRIDAY("금요일", "金"),
SATURDAY("토요일", "土"),
SUNDAY("일요일", "日");
public String korean;
public String chinese;
Week(String korean, String chinese){
this.korean = korean;
this.chinese = chinese;
}
}
...
Week[] wk = Week.values();
for(Week w: wk){
System.out.print(w+" ");
System.out.print(w.korean+" ");
System.out.println(w.chinese);
}
람다식
- 람다식: 함수형 프로그래밍 기법을 지원하는 자바의 문법 요소. 함수형 인터페이스의 호출 및 기능을 구현하는 방법을 새롭게 정의한 문법. 익명 이너 클래스의 축약된 형태, 메서드 참조와 생성자 참조에 사용된다.
- 함수형 인터페이스: 단 하나의 추상 메서드만을 포함하는 인터페이스.
- 람다의 추상체는 기능적 인터페이스(@FunctionalInterface)로 람다를 구현하려면, 이와 같은 추상체가 필요
@FunctionalInterface
interface LambdaClass{
function();
}
Class class = ()->{function();};
Class class = (o)->{function();};
Class class = ()->{
function();
return object;
};
Class class = (Object o)->{
function();
return object;
};
Class class = ()->function();
Class class = ()-> object_return;
Class class = a->{function();};
JavaScript
연산자
- 기본적으로 자바 연산자와 같다.
- 관계 연산자에 조금 차이가 있다.
| 관계 | |
| --- | --- |
| == | 같은가 타입 상관없이 값이 일치(자동 형변환됨) |
| === | 타입과 값이 모두 일치 |
| != | 다른가 |
| !== | 타입 또는 값이 다름 |
클래스
- 자바 스크립트에서도 클래스를 생성할 수 있다. 단일 인스턴스의 경우, {속성: 값}을 대입한다. 이외에는 생성자 함수로 클래스를 생성할 수 있다.
- 객체의 필드나 메서드를 추가하거나, 제거할 수 있다.
- for in문으로 객체를 순회할 수 있다.
var man1 = {no: 1, name: "김일일", style: "red", point: 100};
function People(no, name, age, style){
this.no = no;
this.name = name;
this.age = age;
this.style = style;
this.print = function(){
var res = document.getElementById("res");
res.innerHTML = "name "+this.name+" age "+this.age+" style "+this.style;
}
}
var st1 = new People(1, "김일일", 30, "yellow");
st1.family = "돌 김";
st1.toString = function(){
document.getElementById("res").innerHTML += "<br>"+"family "+this.family+" name "+this.name+" age "+this.age+" style "+this.style;
}
for(var field in st1){
console.log(field+"\t\t"+st1[field]);
}
delete st1.family;
이벤트 Event
- 이벤트(Event): 사용자가 어떤 특정 행위를 했을 때의 사건. 이벤트 타겟, 이벤트 핸들러, 서비스를 모두 합쳐 말한다.
- 인라인 이벤트: 해당하는 요소(태그)에 필요한 이벤트 핸들러를 직접 기술
- 스크립트 이벤트: 스크립트 태그 안쪽에 필요한 이벤트 핸들러를 해당 요소를 선택하여(document.getElement-) 필요한 이벤트를 적용하는 것.
- 이벤트 종류: 마우스 이벤트, 키보드 이벤트, 폼 이벤트, 기타 이벤트 등
- 마우스 이벤트: click, dblcclick(더블 클릭), mouseover/hover/mouseenter, mouseout/mouselet, mousedown, mouseup, mousemove, contextmenu, scroll(wheel 또는 mousewheel)
- 키보드 이벤트: keypress(눌렀다 뗄 때), keydown(누르고 있을 때), keyup(뗐을 때)
- 폼 관련 이벤트: focus(커서 가까이), blur(커서 떼면), change, submit, reset, select(드래그)
- 기타 이벤트(문서나 창): load, abort(로딩 중지 pause), unload(사라짐), resize(창 사이즈 바뀜), scroll(스크롤 바를 움직일 때)
BOM 객체
- 자바 스크립트의 객체에는 사용자 정의 객체(외장 객체), 데이터형 객체, BOM 객체, DOM 객체가 있다.
- 사용자 정의 객체: 개발자가 필요에 따라 정의해 사용하는 객체
- 데이터형 객체: 내장 객체로 특정 데이터형을 처리하기 위한 메소드와 속성을 제공함. Date, String, Video, Audio, Number 등
- BOM 객체: Window(최상위), Screen, document, navigator(브라우저 자체), location, history. 브라우저를 제어할 목적으로 제공하는 메소드와 속성
- DOM 객체: document. 현재 문서 안에 있는 태그(요소)를 제어할 목적의 메소드와 속성을 제공
- window.open()
- location.href = "주소", locationreload(), location.replace("주소"), location.assign("주소")
- hisotry.back, history.forward, history.go(n)
- navigator.userAgent;
DB
DB 기초
- 데이터베이스(DB): 테이블들이 모여 이루는 데이터 단위
- 관계형 데이터베이스(RDB, Relationship DataBase): 서로 관련성 있는 데이터를 테이블 형태로 저장하고 있는 데이터베이스
- 데이터베이스의 종류
- 계층적 데이터베이스: 계층적 데이터베이스는 검색 쿼리가 일상적이지만 고속 처리가 필요한 경우에 유용함. 계층적 데이터베이스는 은행, 항공 및 호텔 산업에서 선호되며, 고객과 관련된 모든 정보는 마스터 레코드에 저장되므로 다른 데이터 소스와 상호 참조할 필요가 없음. 가계도와 유사한 나무 구조로 구성되어 계층 구조의 다른 레벨을 부모/자식 관계로 언급하기도 함.
- 역 데이터베이스: 계층적 데이터베이스의 속도와 예기치 않은 질문에 응답할 수 있는 유연성을 갖추고 있기 때문에 다이렉트 마케팅 응용 프로그램에 적합. 업데이트 된 정보가 발생했을 때 역 데이터베이스에 새로운 요소를 추가하는 것도 쉬움. 일반적으로 사용되는 역 파일 시스템은 Model 204, Adabas, 그리고 Computer Associates 의 Datacom/DB이며, 구현 환경에 따라 처리 속도와 유연성이 다양함.
- 관계형 데이터베이스: 간단한 테이블들로 구성되며 사용자는 이러한 테이블에서 정보를 추출하여 재조합하는 쿼리를 작성할 수 있음. 유연성이 가장 높으나, 처리 속도는 다소 느림
DBMS
- DBMS(DataBase Management System): 데이터베이스를 관리하는 시스템
- DBMS의 특성
- 실시간 접근성 (Real-time-processing) 데이터베이스는 컴퓨터를 이용하여 접근하는 저장장치에 지속적이고 비정형적인 질의에 대하여 실시간 처리가 가능해야 함
- 계속적인 변화 (Continuous evolution) 데이터베이스는 데이터 삽입(Insert), 기존의 데이터 삭제(Delete), 갱신(Update) 등의 변화를 주어 정확한 데이터를 유지해야 함
- 동시 공용 (Concurrent sharing) 데이터베이스는 사용자가 동시에 접속하더라도, 원하는 데이터에 접근하여 이용할 수 있어야 함
- 내용에 의한 참조 (Contents reference) 데이터베이스 환경에서 사용자 요구하는 데이터 내용으로, 데이터가 가지고 있는 값에 따라 참조됨
데이터 모델링
- 데이터 모델링: 고객의 요구에 따라 데이터를 구조화하고 조직화하여 데이터베이스에 반영하는 작업
- 스키마: 데이터베이스의 정보를 저장하는 구조(현재 데이터베이스의 정체성을 나타내는 정보)와 제약조건을 정의한 . 외부, 개념, 내부 스키마의 3층 구조로 데이터 독립성을 향상시킬 수 있다.
- 외부 스키마: 사용자 개개인이 보는 자료와 관점에 대한 사용자적 스키마로 사용자에게 필요한 데이터베이스에 대한 다양한 정의
- 내부 스키마: 전체 데이터베이스의 논리적 구조로 데이터의 종류, 위치, 관계, 접근 권한 등을 정의. DBA 또는 설계자의 관점.
- 개념 스키마: 물리적 저장장치 측면에서 데이터의 내부(필드 이름, 필드의 종류, 필드의 크기 등) 실제로 저장되는 방법을 정의. 개발자의 관점.'
데이터베이스 구조
- 데이터베이스 > 테이블 > 레코드 > 필드
- 테이블(Tabe, Entity, Relation, 개체): 관계형 데이터베이스에서 표와 같은 형태의 데이터 집합. 서로 관련 있는 필드를 하나의 레코드로 묶어 관리함.
- 로우(record, tuple, row, instance): 서로 관련 있는 필드를 묶은 하나의 줄, 행 단위
- 자바 프로그래밍 상에서는 레코드와 필드라고 한다. DB 설계하는 입장에서는 튜플과 속성이라 한다. sql 상에서는 로우와 컬럼이라 부른다.
- ERD(Entity Relationship Diagram): 개체와 개체가 어떠한 관계로 이루어져 있는지 나타내는 그림으로 entity, tuple, attribute로 이루어져 있다.
- 차수(degree): 한 로우의 컬럼 수로, 모든 로우는 최소 하나의 차수를 가진다.
- 컬럼(field, attribute, column): 데이터의 최소 단위로, 항목을 나타내는 한 칸.
- 기수(cardinality): 튜플의 수로, 데이터가 삽입되지 않았다면 0의 값을 가질 수 있다.
- 관계(Relationship): 엔티티의 인스턴스 간 논리적 연관성으로, 존재나 행위에 있어 상호 연관성이 부여된 상태를 말한다.
키 Key
- 기본키(Primary Key, PK): 레코드 간에 서로를 각각 구분할 수 있는 특정 필드. 레코드 간 중복 및 레코드의 null 값이 허용되지 않는다. 이를 개체 무결성이라 한다.
- 무결성(integrity): 완전한 수명 주기를 거치며 데이터의 정확성과 일관성을 유지하고 보증하는 것.
- 후보키: 중복 불가. 언제든지 기본키가 될 수 있는 것. 기본키를 정하기 전 키.
- 대체키: 중복 불가. 기본키를 대체할 수 있는 컬럼으로 기본키가 정해지면 기존의 나머지 후보키가 대체키가 된다.
- 외래키(Foreign Key, FK): 한 테이블의 필드 중 다른 테이블의 행을 식별할 수 있는 기본키를 말한다.
- 참조 무결성(Referential Integrity): 하나 또는 다수의 다른 테이블의 기본 키로, 참조 테이블에 해당 컬럼의 값이 없거나 중복되거나 널값이면 안된다
- 참조 테이블(참조되는 테이블)과 연결하는 현재 테이블의 컬럼을 외래키라 한다. 외래키 컬럼은 참조테이블과 현재 테이블 모두 존재하지만, 참조테이블에서는 기본키여야 한다.
- 요즘에는 복잡성 문제로 잘 사용하지 않고, Join을 사용한다.
명령어
- TCL(Transaction Control Language): 여러 개의 명령이 한 번에 같이 이루질 때 쓰는 명령어
- commit, roll-back, savepoint.
- DCL(Data Control Language): 때로 어떤 DB는 DCL에 TCL을 포함시키기도 한다.
- 권한 명령
- 권한 부여: grant
- 권한 회수: revoke
- 병행 수행 명령: transaction
- 성공 수행 처리: commit
- 실패 수행 처리: rollback
- 트랜잭션 정의: savepoint
- 기타 명령
- 데이터베이스 선택: use 데이터베이스명;
- 데이터베이스 목록 보기: show databases;
- 테이블 목록 보기: show tables;
- 특정 테이블 구조 보기(description): desc 테이블명;
- DDL(Data Define Language): 데이터 정의어로 구조를 만드는 명령어이다.
- DML(Data Management, Manipulation Language): 데이터 조작어(운영어 CRUD).
- insert(create), select(read), update, delete
CRUD
INSERT INTO 테이블(컬럼명, ...) VALUES(값, ...);
INSERT INTO member(id, pw, NAME, email, tel) VALUES ('admin', '1234', '관리자', 'admin@edu.com', '010-1004-1004');
- select(read)
- WHERE 뒤의 조건절에는 비교연산자, IN, not IN, LIKE 등을 쓸 수 있다.
SELECT 컬럼명 FROM 테이블
SELECT 컬렴명 FROM 테이블 WHERE 조건
SELECT 컬렴명 FROM 테이블 WHERE IN(여러 조건)
SELECT 컬렴명 FROM 테이블 WHERE not IN(여러 조건)
SELECT 컬렴명 FROM 테이블 WHERE BETWEEN n AND m;
SELECT 컬렴명 FROM 테이블 WHERE LIMIT n, m;
SELECT 컬렴명 FROM 테이블 WHERE LIKE '와일드카드';
SELECT distinct 컬럼명 FROM 테이블;
UPDATE 테이블 SET 컬럼='새값' WHERE 조건;
DELETE FROM 테이블 WHERE 조건;
기타 명령
- Order by 정렬: 다른 일반적인 dbms는 명령어 끝에 order by가 와야 함(mariadby와 mysql은 like가 마지막에 옴)
- Group by 집계: count, sum, avg, max, min, stdev(표준 편차)
성찰
분명 수업에서 배웠던 내용인데 새롭다. 복습한다고 생각하고, 수업에서 배웠던 내용과 비교하여 추가 보충해야겠다.
이번 주 수업은 이 짤로 요약할 수 있다.

핵심 정리
- 다음 중 java.lang에 속하는 패키지를 모두 골라라.
- Objects, System, String, StringTokenizer, Math, Wrapper, Arrays
- 다음 코드의 문제점을 찾아 바르게 고치시오.
int arrA[] = {2, 3, 4, 5};
int arrB[] = arrA;
arrB[2] *= 2;
if(arrA!=arrB){
System.out.println(arrA[2]+arrB[2]);
}
- 다음 문장의 빈칸을 채우시오.
- JavaScript의 객체에는 사용자 정의 객체, 데이터형 객체, [ 1 ] 객체와 [ 2 ] 객체가 있다. [ 1 ] 객체에는 window, location, history, navigator 등이 포함된다.
- 오라클, 마이크로소프트 sql, MariaDB와 같은 데이터베이스 관리 시스템을 [ 1 ]이라 하고, 몽고DB와 같은 데이터베이스 관리 시스템을 [ 2 ]라 한다.
- 다음 중 틀린 문장을 찾고, 그 이유를 설명하시오.
- 기본키는 레코드 간 서로를 구분할 수 있는 필드로 중복 및 레코드의 null 값이 허용되지 않는다.
- 외래키는 한 테이블의 필드 중 다른 테이블의 행을 식별할 수 있는 키로, 개체 무결성을 가져야 한다.
- CRUD 명령어는 Create, Select, Update, Delete를 의미한다.