분류 전체보기

알고리즘 분석어떤 응용 프로그램에 어느 클래스가 더 좋을지 결정하는 한 가지 방법은 둘 다 시도해보고 각각 얼마나 걸리는지 알아보는 것인데, 이러한 접근법을 프로파일링(profiling)이라고 하는데 여기에는 몇 가지 문제점이 존재한다. 알고리즘을 비교하려면 사전에 그것을 모두 구현해봐야 한다. 결과는 사용하는 컴퓨터 성능에 의존한다. 결과는 문제 크기나 입력으로 사용하는 데이터에 의존하기도 한다. 알고리즘 분석(analysis of algorithm)을 사용하여 이러한 문제점을 해결할 수 있다. 알고리즘 분석은 그것을 구현하지 않고도 알고리즘을 비교할 수있도록 하는데 몇 가지 가정을 해야만 한다. 알고리즘을 이루는 더하기와 곱하기, 숫자 비교 등의 기본 연산을 식별한다. 그리고 각 알고리즘에 필요한 연..
DBMS와 버퍼 기억장치의 분류 기억 비용 : '데이터를 저장하는데 소모되는 비용' DBMS와 기억장치의 관계 DBMS는 데이터 저장을 목적으로하는 미들웨어이기 때문에 기억장치와 떨어뜨릴 수 없는 관계이다. 하디드스크(HDD) DBMS가 데이터를 저장하는 매체(저장소)는 대부분 HDD이다. 메모리 메모리는 디스크에 비해 기억 비용이 비싸기 때문에, 하드웨어 1대에 탑재할 수 있는 양이 크지 않다. DBMS는 항상 디스크 이외의 장소에도 데이터를 올려 놓는데, 바로 1차 계층의 기억장치 메모리에 올려놓는다. 버퍼를 활용한 속도 향상 DBMS가 일부라도 데이터를 메모리에 올리는 것은 성능 향상 때문이다. 한마디로 SQL 구문의 실행 속도를 빠르게 만들기 위함이다. 따라서 자주 접근하는 데이터를 메모리 위에 ..
DBMS 아키텍처한국에서는 Oracle, Micrisoft SQL Server, DB2, PostgreSQL, MySQL 등 많은 RDB가 존재하고 이러한 제품은 각각의 특징이 있다. 하지만 RDB로써 기능을 제공한다는 목적은 모두 동일하므로, 기본적인 구조 자체는 모두 같다.DBMS 내부에는 어떠한 기능이 있을까 1. 쿼리 평가 엔진사용자로부터 입력받은 SQL 구문을 분석하고, 어떤 순서로 기억장치의 데이터에 접근할지를 결정한다.=> 이때 결정되는 계획을 '실행계획'이라고 함, 데이터에 접근하는 방법을 '접근 메서드(access method)'라고 함한마디로 쿼리 평가 엔진은 계획을 세우고 실행하는 DBMS의 핵심 기능을 담당하는 모듈이다. 2. 버퍼 매니저DBMS는 버퍼라는 특별한 용도로 사용하는 메..
스프링이 개발자에게 제공하는 가장 중요한 가치는 객체지향과 테스트이다. 웹을 통한 DAO 테스트의 문제점DAO뿐만 아니라 서비스 클래스, 컨트롤러, JSP 뷰 등 모든 레이어의 기능을 만들고 나서야 테스트가 가능하다는 점이 가장 큰 문제였다.사실 테스트하고 싶었떤 건 UserDao 였는데 다른 계층의 코드와 컴포넌트, 심지어 서버의 설정 상태까지 모두 테스트에 영향을 줄 수 있기 때문에 이러한 방식으로 테스트하는 것은 번거롭고, 오류가 있을 때 빠르고 정확하게 대응하기가 힘들다는 문제가 있다. 테스트하고자 하는 대상이 명확하다면 그 대상에만 집중해서 테스트하는 것이 바람직하다.(단위 테스트)=> 안하게되면 이유를 찾기위해서 디버거를 돌려가며 스텝별로 확인해야하는 수고를 하게될지도 모른다. 테스트를 위한 ..
JavaScript DOM APISelectorsAPI라는 새로운 사양이 구현되면서, CSS 선택자를 이용하여 DOM을 조작할 수 있게 되었다.SelectorAPI는 getElementByTageName 과 getElementById와 같은 DOM의 객체를 취득하는 메소드이다. SelectorAPIquerySelector와 querySelectAll에 CSS셀렉터를 넘겨준다.12345678910111213141516171819202122232425 Document Selector API test class test Id var div1 = document.getElementsByTagName('div'); var div2 = document.querySelectorAll('div'); console.lo..
예외처리 방법1. 예외 복구 => 정상 상태로 돌려 놓는 것. 예외로 인해 기본 작업 흐름이 불가능하다면 다른 작업 흐름으로 자연스럽게 유도해주는 것ex) SQLException (네트워크가 불안해서 발생하는 문제라면)123456789101112int maxRetry = MAX_RETRY;while(maxEntry --> 0){ try{ .. return; // 작업 성공 }catch(SomeException e){ // 로그 출력 및 정해진 시간만큼 대기 }finally{ // 리소스 반납 }}throw new RetryFailedException(); // 최대 횟수를 넘기면 직접 예외 발생cs 2. 예외처리 회피예외처리를 담당하지 않고, 호출한 쪽으로 예외를 던져버리는 것.하지만 무책임한 회피는 금..
예외처리블랙홀 예외처리=> catch블록을 이용해 화면에 메시지를 출력한 것은 예외를 처리한 것이 아니다.예외를 처리할 때 반드시 지켜야 할 핵심 원칙은 한가지다.모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보돼야 한다.123456try{ // .. 로직}catch(SQLException e){ e.printStackTrace(); System.exit(1);}cs(그나마 나은 예외처리.. 시스템 종료) 무의미하고 무책임한 throws=> 기계적으로 throws를 던진다면, 결과적으로 적절한 처리를 통해 복구될 수 있는 예외상황도 제대로 다룰 수 있는 기회를 박탈 당한다. 예외의 종류와 특징예외처리에서 가장큰 이슈는 checked Exception(명시적 처..
clearRect()메소드를 이용한 Canvas 화면 지우기Canvas의 Context에는 clearRect()의 메소드가 존재한다.이 메소드는 사각형 영역을 지우는 메소드 인데, 4개의 파라미터를 필요로 한다. => clearRect(x, y, w, h)캔버스안에서 특정 영역을 지울 때 사용하는데, x = 0, y = 0, w = width, h = height로 설정하면 캔버스의 전체영역을 지울 수 있게 된다.12var canvas = document.getElementById("canvas");canvas.getContext("2d").clearRect(0, 0, canvas.width, canvas.height);cs
Map의 Value데이터 기준으로 정렬하기 TreeSet을 이용하면 Key 기준으로 쉽게 정렬할 수 있으나, Value로 정렬해주는 컬렉션은 존재하지 않는다. Value로 map을 정렬을 하려면 Comparator 인터페이스를 이용해야 한다. 밑에 예제는 Value를 기준으로 내림차순으로 정렬을 하고, Value가 같다면 Key를 기준으로 오름차순으로 정렬하는 예제이다. package sort; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; im..
데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질(ACID)Atomicity(원자성)모두 실행되던지 모두 실행되지 않도록 하던지 보장하는 특성트랜잭션과 관련된 작업들이 부분적으로 실행되더가 중단되지 않는 것을 보장하는 능력 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 헎는 작업을 실패해서는 안됨. 원자성은 이와 같이 중간 단계까지 실해오디고 실패하는 일이 없도록 하는 것 Consistency(일관성)트랜잭션이 성공했다면, 데이터베이스는 그 일관성을 유지해야 한다.트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태를 유지하는 것을 의미 Isolation(독립성)트랜잭션 수행 중에 다른 연산작업이 끼어들지 ..
깡냉쓰
'분류 전체보기' 카테고리의 글 목록 (50 Page)