✔ 직렬화 ( Serialization )
객체의 상태 혹은 데이터 구조를 기록할 수 있는 포맷으로 변환해줌
나중에 재구성 할 수 있게 자바의 객체를 JSON 으로 변환해주거나 , JSON을 자바객체로 변환해주는 라이브러리
✔ Hash란 ?
데이터 삽입 및 삭제시, 기존 데이터를 밀어내거나 채우지 않고 데이터와 연관된 고유한 숫자를 생성해 인덱스로 사용하는 방법, 검색속도가 매우 빠름
✔ 배열과 연결리스트의 차이?
배열은 인덱스를 가지고, 원하는 데이터를 한번에 접근하기 때문에 접근속도가 빠름
but 크기 변경이 불가능하며, 데이터 삽입 및 삭제시 그위치의 다음 위치부터 모든 데이터 위치를 변경해야함
연결리스트는 인덱스 대신 현재 위치의 이전/ 다음위치를 기억함
크기는 가변적, 인덱스 접근이 아니기 때문에 연결되어 있는 링크를 쭉 따라가야 접근이 가능 (배열보다 속도느림)
데이터 삽입 및 삭제가 용이
- 데이터 양이 많고 삽입/삭제가 없음. 데이터 검색을 많이 해야할 때 -> Array
- 데이터 양이 적고 삽입/삭제가 빈번함 -> LinkedList
✔ 메모리 , 성능을 개선하기 위해 생각나는 방법은?
static을 사용해 선언한다
인스턴스 변수에 접근할 일이 없으면, static메소드를 선안하여 호출
모든 객체가 서로 공유할 수 있기 때문에 메모리가 절약되고 연속적으로 그 값의 흐름을 이어갈 수 있는 장점
✔ 클래스와 구조체의 차이 ?
구조체는 하나의 구조로 묶일 수 있는 변수들의 집합
클래스는 변수뿐만아니라, 메소드도 포함 시킬수 있음
✔ 프로레스와 스레드의 차이
프로세스는 메모리상에서 실행중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름 단위
프로세스 마다 최소 하나의 스레드를 보유, 각각 별도의 주소공간을 독립적으로 할당받음 (code, data, heap, stack)
스레드는 이중에 stack만 할당받고, 나머지 영역은 스레드끼리 서로 공유함
>> 프로세스 : 자신만의 고유 공간과 자원을 할당받아 사용
스레드 : 다른 스레드와 공간과 자원을 공유하면서 사용
✔ 오라클 시퀀스
unique한 값을 생성해주는 오라클 객체 , pk와 같이 순차적으로 증가하는 컬럼을 자동생성
✔ DBMS의 기능은?
- 정의 기능 (DDL : Data Definition Languae)
데이터 베이스가 어떤 용도이며, 어떤 식으로 이용될 것에 대한 정의 ( CREATE, ALTER, DROP, RENAME)
- 조작기능 (DML: Data ManipulationLangauge)
데이터 베이스를 만들었을때 그 정보를 수정하거나 삭제, 추가 검색할 수 있어야함 ( SELECT,INSERTM, UPDATE, DELETE)
-제어기능 (DCL: Data Control Language)
데이터 베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어 ( GRANT, REVOKE)
✔ UML이란?
프로그램 설계를 표현하기 위해 사용하는 그림으로된 표기법. 이해하기 힘든 복잡한 시스템을 의사소통하기 위해 만듦
✔ VIEW란 ?
허용된 데이터를 제한적으로 보여주기 위한것, VIEW에 나타나지 않는 데이터를 간편히 보호할 수 있는 장점 존재
✔ 정규화란?
중복을 최대한 줄여 데이터를 구조화하고, 불필요한 데이터를 제거해 데이터를 논리적으로 저장하는 것 ,
✔ 데이터 베이스를 설계할때 가장 중요한것?
무결성을 보장해야함
* 무결성이란? 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구 외래키 값은 NULL이거나 참조테이블이 PK값이어야함 , 한 컬럼에 대해 NULL허용 여부와 자료형, 규칙으로 타당한 데이터 값 지정
(데이터를 조작하는 프로그램 내에서 데이터 생성, 수정, 삭제시 무결성 조건을 검증함)
✔트리거란?
자동으로 실행되도록 정의된 저장 프로시저 (INSERT, UPDATE,DELETE문에 대한 응답을 자동으로 호출)
- 업무 규칙 보장, 업무처리 자동화, 데이터 무결성 강화
✔ 오라클과 MY SQL의 차이는?
오라클: 대규모 트랜잭션 로드를 처리하고, 성능 최적화를 위해 여러 서버에 대용량 DB를 분산함
MY SQL: 단일 데이터베이스로 제한되어 있고 , 대용량 데이터베이스로는 부적합, 작은 프로젝트에서 적용시키기 용이하며 , 이전상태를 복원하는데 COMMIT과 ROLLBACK만이 존재
✔ Commit과 Rollback이란?
Commit : 하나의 논리적 단위(트랜잭션)에 대한 작업이 성공적으로 끝났을 때, 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산
Rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 DB의 일관성을 깨뜨렸을 때, 모든 연산을 취소시키는 연산
✔ index란 ?
책의 목차 / DBMS에서 저장 성능을 희생하여 데이터 읽기 속도를 높이는 기능
B+- Tress 인덱스 : 원래의 값을 이용하여 인덱싱
Hash인덱스 : 칼럼값으로 해시 값 계산하여 인덱싱, 메모리 기반 DB에서 많이 사용
✔ get과 post의 차이
http 프로토콜을 이용해 서버에 무언가 요청할때 사용하는 방식
GET : url을 통해 모든 파라미터를 전달하기 때문에 주소창에 전달값이 노출 , 길이제한, 인코딩 필요
POST: HTTP BODY에 데이터를 포함해서 전달
✔ Annotation
소스 코드에 @ 어노테이션 형태로 표현하며 클래스,필드,메소드의 선언부에 적용할 수있는 특정기능이 부여된 표현법
애플리케이션 규모가 커질수록 xml환경설정이 매우 복잡해지는데 이런 어려움을 개선시키기위해 자바 파일에 어노테이션을 적용해서 개발자가 설정파일작업을 할때 발생시키는 오류를 최소화해줌.
- @Autowired : 자동으로 의존성 주입하기 위한 어노테이션
✔ MyBatis
객체, 데이터베이스, Mapper 자체를 독립적으로 작성하고, DTO에 해당하는 부분과 SQL실행결과를 매핑해서 사용할 수 있도록 지원
기존에는 DAO에 모두 sql문이 자바 소스상에 위치했으나, MyBatis를 통해 SQL은 XML 설정파일로 관리
설정파일로 분리하면, 수정할 때 설정파일만 건드리면 되므로 유지보수에 좋음,
'개념정리' 카테고리의 다른 글
4. String, StringBuffer, StringBuilder 차이 및 장단점 (0) | 2023.04.06 |
---|---|
3. 자바 컴파일 과정 (0) | 2023.04.05 |
2. 싱글톤패턴 (Singleton pattern) (0) | 2023.04.05 |
1. OOP 객체지향 프로그래밍 (0) | 2023.04.05 |