본문 바로가기

전공

[알고리즘] 전공 필기시험 정리 ✔️ 정렬 1. 수행 장소 별 정렬 분류 2. 시간 복잡도 별 정렬 분류 O(n²)의 시간 복잡도 (정렬할 자료의 수가 늘어나면 제곱에 비례해서 증가) 버블 정렬(Bubble Sort) 선택 정렬(Selection Sort) 삽입 정렬(Insertion Sort) O(n log n)의 시간 복잡도 병합 정렬(Merge Sort) 퀵 정렬(Quick Sort) 3. 정렬 종류 1) 버블 정렬(Bubble Sort) 인접한 두 수를 비교하며 정렬해나가는 방법으로 O(n²)의 느린 성능 앞에서부터 시작하여 큰 수를 뒤로 보내 뒤가 가장 큰 값을 가지도록 완성해나가는 방법 또는 뒤에서부터 반복하여 앞의 작은 값부터 정렬을 완성해나가는 방법 2) 선택 정렬(Selection Sort) 한 바퀴 돌 때 가장 작은 .. 더보기
[소프트웨어공학] 전공 필기 시험 정리 ✔️ 모듈 1. 모듈과 모듈화 모듈화란 소프트웨어를 각 기능별로 나누는 것을 의미한다.그리고 그 결과로 각 기능별로 분할된 것을 모듈이라고 한다. 2. 독립성 좋은 모듈화는 용도에 맞게 잘 구분된 기능을 가진 독립적인 모듈로 나누는 것이다. 모듈의 독립성을 판단하는 것은 결합도와 응집도가 있다. 3. 결합도(Coupling) 결합도는 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성을 나타내는 정도 결합도는 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도 1) 결합도의 특징 모듈 연관성 없음 인터페이스 의존성 복잡성 감소 파급효과 최소화 2) 결합도의 유형 결합도의 유형은 내용>공통>외부>제어>스탬프>자료 결합도 순으로 결합도가 낮아진다. ▶ 내용 결합도(Content Coupling) - 내용 결.. 더보기
[컴퓨터 구조] 전공 필기 시험 정리 ✔️레지스터 PC : 다음에 수행할 명령어 주소 IR : 명령어 저장 MAR : 실행 데이터 주소 저장 MBR : 메모리 버퍼 ALU : 산술 논리 연산 장치 ✔️기억장치 1. 주기억장치 : RAM 2. 보조기억장치 : 하드 디스크, USB, CD-ROM, 외장 하드 ✔️캐시 기억 장치 1. 캐시 기억장치 - 중앙처리장치(CPU)에 명령어와 데이터를 빠르게 제공하기 위해 주기억장치에 저장되어 있는 명령어와 데이터 일부를 복사해서 임시로 저장하는 장치 - 주기억장치보다 명령어와 데이터를 저장하고 인출하는 속도가 빠름 - 빠르게 동작하는 중앙처리장치와 느리게 동작하는 주기억장치 사이에서 속도 차이를 줄여주는 완충제 역할을 하는 기억장치 - CPU는 주기억장치에 접근하기 전에 캐시 기억장치를 먼저 확인 2. .. 더보기
메모리 1 - 구조 / 종류 / 관리 / 정책 / 단편화 1. 메모리 - 컴퓨터에서 작업을 수행하기 위해 처리 대상이나 결과 등을 저장하기 위한 공간 - 프로그램을 실행하기 위한 정보들은 메모리에 저장되어 처리 2. 메모리 구조 Code, Data, Heap, Stack의 네 가지 영역으로 나누어져 있으며, 이들 각각을 세그먼트라고 함 Code : 실행할 프로그램 코드가 저장되는 영역. 프로세스가 종료될 때까지 유지 (정적 세그먼트) Data : 프로그램의 전역 변수와 정적 변수가 저장되는 영역. 프로세스가 종료될 때까지 유지 (정적 세그먼트) Heap : 동적으로 사용할수 있는 영역. Heap 영역에 메모리를 할당하는 것을 동적 할당이라고 함 (동적 세그먼트) Stack : 지역 변수, 매개 변수, 복귀 주소 등이 저장되는 영역. 프로세스 종료 시 반환 (동.. 더보기
MySQL튜닝6) 튜닝 심화 예제 1. 실습 데이터 세팅 - 실습 데이터 URL : https://github.com/7ieon/SQLtune - 실습 데이터 정보 2. JOIN / 서브쿼리 변형하여 SQL문 재작성으로 착한 쿼리 만들기 1) 처음부터 모든 데이터를 가져오지 않기 # 쿼리문 - 사원번호가 10001 ~ 10100번까지인 사원들의 평균연봉, 최고연봉, 최저연봉을 구하는 쿼리 # AS_IS -- 3.593 sec / 0.000 sec select 사원.사원번호, 급여.평균연봉, 급여.최고연봉, 급여.최저연봉 from 사원, ( select 사원번호, round(avg(연봉),0) as 평균연봉, round(max(연봉),0) as 최고연봉, round(min(연봉),0) as 최저연봉 from 급여 group by 사원번호 .. 더보기
MySQL튜닝5) 튜닝 기본 예제 1. 실습 데이터 세팅 - 실습 데이터 URL : https://github.com/7ieon/SQLtune - 실습 데이터 정보 2. SQL문 단순 수정으로 착한 쿼리 만들기 1) 사원번호가 1100으로 시작하면서 사원번호가 5자리인 사원 정보 출력 # AS_IS -- 0.329 sec / 0.000 sec SELECT * FROM 사원 WHERE SUBSTRING(사원번호,1,4) = 1100 AND LENGTH(사원번호) = 5 # Tuning - 기본키인 사원번호 접근 시 WHERE 절에서 가공하여 접근 => Table Full Scan이 발생 (type = 'ALL') # TO_BE -- 0.000 sec / 0.000 sec SELECT * FROM 사원 WHERE 사원번호 BETWEEN 11.. 더보기
MySQL튜닝4) 실행계획 살펴보기2 1. Extra 컬럼 - SQL문을 어떻게 수행할 것인지에 대한 추가 정보를 보여주는 항목 - 부가 정보들은 세미클론(;)으로 구분하여 여러 가지 정보를 나열할 수 있으며 30여 가지 항목으로 정리할 수 있다. - MySQL에서는 extra에서 수행되는 정보가 모두 출력되지는 않으므로 참고하는 수준으로 해석하는 것이 좋다. # const row not found - 쿼리의 실행 계획에서 const 접근 방식으로 테이블을 읽었지만 실제로 해당 테이블에 레코드가 1건도 존재하지 않았을 경우 # distinct - JOIN시 필요한 것만 JOIN했고 중복된 값 제거한 경우 EXPLAIN SELECT DISTINCT d.dept_no FROM departments d, dept_emp de WHERE de.de.. 더보기
MySQL튜닝3) 실행계획 살펴보기1 1. 실행계획 (MySQL Explain) -SQL문으로 요청한 데이터를 어떻게 불러올 것인지에 관한 계획(경로) - MySQL 튜닝에서 가장 중요한 것은 쿼리와 스키마 최적화이다. 스키마 설계는 한번 진행되면 그 테이블을 사용하는 모든 쿼리에 영향을 주기 때문에 좀처럼 변경하기 힘들지만 쿼리는 해당 쿼리만 수정하면 되므로 변경하기 쉽다. Slow Query를 없애는 것은 성능을 향상 시키기 위한 매우 중요한 수단이므로 어플리케이션의 성능을 향상 시키고 싶다면 우선적으로 쿼리의 튜닝을 검토해봐야 한다. 성능 진단의 가장 첫걸음은 실행한 SQL이 DB에서 어떻게 처리되는 지를 파악하는 것이다. 사람이 이해할 수 있는 언어로 구성된 SQL을 실행하도록 DB에 명령을 내리면 DB는 내부적으로 SQL 파싱 (문.. 더보기