일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 가상컴퓨팅
- dfs
- data structure
- sql
- 클라우드 컴퓨팅
- generic class
- 공개키 암호화
- DB
- 알고리즘
- 코딩테스트
- 크루스칼
- JPA
- Java
- 생성자
- MVC
- 자료구조
- cloud computing
- javascript
- Stack
- spring
- python
- 자바의정석
- BFS
- Algorithm
- Queue
- JDBC
- 코테
- 암호학
- jsp
- dbms
- Today
- Total
목록개발 공부 (75)
PLOD
병행 제어에 앞서, 먼저 병행에 대해서 알아보자. 병행(Concurrency)은 매우 빠르게 여러 트랜잭션 사이를 이동하면서 조금씩 처리를 수행하는 방식이다. 따라서 실제로는 한 번에 한 트랜잭션만 수행하지만, 마치 동시에 여러 트랜잭션을 수행하는 것처럼 보이도록 하는 것이다. 병행 제어(Concurrency Control)는 이렇게 트랜잭션이 병행 수행될 때 트랜잭션이 데이터베이스의 일관성을 파괴하지 않고, 다른 트랜잭션에 영향을 주지 않도록 트랜잭션 간의 상호작용을 제어하는 것을 말한다. 병행 제어의 목적은 다음과 같다. 데이터베이스의 일관성 유지(consistency) 데이터베이스 공유 최대화 시스템 활용도 최대화 사용자 응답 시간 최소화(Minimize response time) 단위 시간당 트랜..
ACID 1. Atomicity(원자성) : 트랜잭션의 작업들이 모두 수행되거나 전혀 수행되지 않아야 함. 일부만 수행된 상태가 되어서는 안됨 2. consistency (일관성) : 트랜잭션의 수행 이후에도 데이터는 항상 일관되고 무결성이 유지된 상태에 있어야 함 -> integrity 유지 3. Isolation(격리성, 고립성) : 각 트랜잭션은 다른 트랜잭션의 수행에 영향을 끼치지 않아야 함 -> serializability : 각 트랜잭션을 따로 수행한 결과와 동일하여야 함 4. Durability(내구성, 지속성) 한번 commit된 트랜잭션의 결과는 계속적으로 유지되어야 함 Transaction Definition in SQL commit을 호출하면 트랜잭션 종료 rollback을 호출하면 ..
query optimization SQL 쿼리가 주어질 때 최단 시간내에 출력될 수 있는 최적의 query plan을 선택하는 작업, 특히 쿼리가 복잡한 경우 일반적으로 주어진 쿼리를 처리하기 위해 많은 전략에서 가장 효율적인 쿼리 평가 계획을 선택하는 프로세스 평가 계획은 각 작업에 사용되는 알고리즘과 작업 실행이 조정되는 방법을 정확하게 정의한다. query optimize를 하는 이유 : temporary result의 사이즈를 줄이기 위해 *cost-based query optimization 1) 동등성 규칙을 사용하여 논리적으로 동등한 식을 생성 2) 결과 식에 주석을 달아 대체 쿼리 계획을 가져온다. 3) 예상 비용을 기준으로 가장 저렴한 요금제 선택 평가 계획을 세울때는 관계에 대한 통계적..
접근 지정자는 접근 제어자라고도 불리며, 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 한다. 클래스나 멤버에서 접근 제어자를 사용하는 이유는 클래스의 내부에 선언된 데이터를 보호하기 위해서이다. 데이터가 유효한 값을 유지하도록, 또는 비밀번호와 같은 데이터를 외부에서 함부로 접근하지 못하도록 하기 위해서는 외부로부터 접근을 제한하는 것이 필요하다. 이것을 데이터 감추기(data hiding)이라고 하고 OOP에서 캡슐화에 해당한다. 자바의 접근 지정자는 클래스 내에서 멤버의 접근을 제한하는 역할을 한다. 접근지정자의 종류는 private , public, protected, default가 있다. 한정자 클래스 내부 동일 패키지 하위 클래스 그 외의 영역 public ● ● ●..
코딩테스트를 준비하거나 프로젝트를 구현할 때 데이터를 탐색하는 과정은 필수불가결하다 탐색은 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 의미한다. 프로그래밍에서는 graph, tree등 자료구조 안에서 탐색을 하는 경우가 많이 생긴다. 자료구조란 데이터를 표현하고 관리하고 처리하기 위한 구조를 의미한다. 그 중에서 stack과 queue 구조는 BFS, DFS 알고리즘 문제를 해결하기 위해 필요한 자료구조이다. * stack stack은 가장 나중에 들어온 자료가 가장 먼저 처리되는 LIFO(Last-In-First-Out) 자료구조이다. 입구 = 출구 = 1 이다. stack 배열은 append 함수를 사용하여 insert(push) 하고 pop 함수를 사용하여 delete 한다. * queu..
코딩테스트 문제를 풀면서 배열을 사용하면 정답 데이터들을 효과적으로 stack 할 수 있지만 문제의 요구사항에 맞춰 출력하기 위해서는 배열에 있는 데이터를 다듬어야 할 필요가 있다. 배열을 그대로 출력하게 되면 print(arr) >>>[ 원소,원소 ,원소 ,원소 ,원소 ] 이런 식으로 출력되게 되는데 코딩테스트의 정답(ex.SWEA)은 >>> 원소 원소 원소 원소 원소 이런식으로 출력해야 되는 경우가 많다. 아래처럼 for로 배열을 순회한 다음, print( , end = " ") 구문을 사용하면 아래처럼 출력할 수 있다.