전체 글 458

[단위] 나만 헷갈리는 기억용량, 속도 단위..컴퓨터 연산 단위

데이터 통신 계산문제 공부할때, 클록주파수 구할때,, 단위 때문에 틀리는건 나만 그러는건가...?;; 1. 기억용량 단위 컴퓨터 시간 속도 바이트 B,Byte 1 1 킬로 바이트 KB 2^10 10^3 메카 바이트 MB 2^20 10^6 기가 바이트 GB 2^30 10^9 테라 바이트 TB 2^40 10^12 페타 바이트 PB 2^50 10^15 B -> KB -> MB -> GB -> TB -> PB 2. 속도단위 밀리 초 ms milli second 10^-3 마이크로 초 µs micro second 10^-6 나노 초 ns nano second 10^-9 피코 초 ps pico second 10^-12 펨토 초 fs femto second 10^-15 아토 초 as atto second 10^-18..

컴퓨터/팁 2017.01.21

[알고리즘] 우선순위 큐 최소힙 구조, 최대힙 구조

최소힙 구조 최소값이 우선일 때 {34,12,87,45,35,66} 순서로 입력됨 완전 이진 트리를 사용하고 루트에 가장 우선순위가 높은 자료가 위치함. 최소힙 삽입연산 최소힙 삭제연산 최대힙 구조 부모노드의 키 값이 자식노드의 킷값보다 항상 큼. 대소 관계는 오로지 부모노드와 자식노드 간에만 성립 특히 형제 사이에는 대소 관계 정해지지 않음. 최대힙 삽입연산 최대힙 삭제연산

CVIPTools로 주파수 변환, 푸리에변환 fourier 이산 코사인 변환 discrete cosine walsh-hadamard 웨이브릿 Wavelete

CVIPTools 다운로드 http://cviptools.siue.edu/downloads.php Analysis -> Transforms에서 FFT 고속 푸리에 변환(fast Fourier transform), DCT (Discrete Cosine Transform) 이산 코사인변환 왼쪽부터 순서대로 Original Image blocksize = 128로 설정 Fourier transform Spectrum이 가운데로 옮겨짐 cosine transform Spectrum이 왼쪽상단으로 옮겨짐 Walsh-Hadamard Transform 왼쪽부터 순서대로 Original Image Walsh blocksize = 32로 설정 Handamard blocksize = 32로 설정 Wavelet transf..

CVIPTools로 Hough Transform 허프 변환

CVIPTools 다운로드 http://cviptools.siue.edu/downloads.php Analysis에서 Edge/Line Detection에서 Hough Transform을 할 수 있다. Hough Transform에서의 CVIPTools 변수 Line Angles 허프변환이 검색할 각도의 범위 Line Pixels 선이 유지되도록 가져야할 최소 화소의 개수 또한 허프 화상에서 임계값이라고 함 Connect distance 어느정도까지 떨어져있는 두 개 선 분할 제어를 연결될 수 있거나 여전히 연결. Delta Length 허프공간의 로우 매개변수를 양자화 한다. 선의 두께가 제어가 될 수 있다. 우선순위에 가까이 있으면 선 두께는 여러 분할 선으로 구성될 수 있다. Segment Leng..

[리팩토링 refactoring] Simplifying Method Calls 메서드 호출 단순화 - Add Parameter 매개변수 추가

▪Add Parameter 매개변수 추가메서드를 변경해야 하며 이 변경 사항은 이전에는 메소드에서 사용할 수 없었던 정보 또는 데이터를 추가해야한다.Problem메소드에 특정 조치를 수행하기 위한 충분한 데이터가 없다.class Calendar { // ... private Set appointments; public ArrayList findAppointments(Date date, String name) { Set result = new ArrayList(); Iterator iter = kent.getCourses().iterator(); while (iter.hasNext()) { Appointment each = (Appointment) iter.next(); if (date.compareTo(..

[리팩토링 refactoring] Simplifying Conditional Expressions 조건문의 간결화 - Consolidate Duplicate Conditional fragments 조건문의 공통 실행 코드 빼내기

▪Consolidate Duplicate Conditional fragments 조건문의 공통 실행 코드 빼내기Problem동일한 코드 조각이 조건문의 모든 분기 안에 있는 경우if (isSpecialDeal()) { total = price * 0.95; send();}else { total = price * 0.98; send();} Solutionif (isSpecialDeal()) { total = price * 0.95;}else { total = price * 0.98;}send();동일한 코드를 조건문 밖으로 옮겨라. 절차조건에 상관 없이 동일하게 실행되는 코드 확인.공통으로 사용되는 코드가 시작 부분에 있다면, 그 코드를 조건문 앞으로 옮긴다.공통으로 사용되는 코드가 끝 부분에 있다면, 그..

[리팩토링 refactoring ] Organizing Data 데이터 체계화 - Encapsulate Collection 컬렉션 캡슐화

▪Encapsulate Collection 컬렉션 캡슐화 Problem & Solution 클래스는 객체 컬렉션을 포함하는 필드를 포함이 콜렉션은 배열,리스트, 세트 또는 벡터 일 수 있다.컬렉션에 대한 작업을 위해 정상적인 getter 및 setter가 만들어짐. 그러나 컬렉션은 다른 데이터 유형에서 사용되는 프로토콜과 약간 다른 프로토콜에 의해 사용되야 한다. getter 메소드는 컬렉션 객체 자체를 반환하지 않아야한다. 그러면 클라이언트가 소유자 클래스에 대한 지식없이 컬렉션 내용을 변경할 수 있기 때문 클라이언트에 대한 오브젝트 데이터의 내부 구조가 너무 많이 보인다. 콜렉션 요소를 가져 오는 메소드는 콜렉션을 변경할 수 없거나 구조에 대한 과도한 데이터를 공개 할 수없는 값을 리턴해야한다. 컬렉..

[리팩토링 refactoring] Moving Features between Objects 객체간의 기능이동 - Introduce Local Extension 국소적 상속확장 클래스 사용

▪Introduce Local Extension 국소적 상속확장 클래스 사용 사용중인 클래스에 필요한 메소드가 없다.더 나쁜 것은 클래스가 타사 라이브러리에 있기 때문에 이러한 메서드를 추가 할 수 없다는 것이다. 이때 두 가지 방법이 있다. •관련 클래스에서 하위 클래스를 만들고 메서드를 포함하고 부모 클래스의 다른 모든 것을 상속한다이 방법은 더 쉽지만 때로는 유틸리티 클래스 자체에 의해 차단된다.(결함 때문에). • 모든 새 메서드를 포함하고 다른 곳에서 유틸리티 클래스의 관련 객체에 위임 할 래퍼 클래스를 만든다.이 메소드는 랩퍼와 유틸리티 오브젝트 사이의 관계를 유지 보수하도록 코드 할뿐만 아니라 유틸리티 클래스의 공용 인터페이스를에 D 레이트하기 위해 많은 수의 단순 위임 메소드를 필요로하므로..

[리팩토링 refactoring] Composing methods 메소드 구성 - Inline Method 즉시 처리하는 메소드

▪inline Method 즉시 처리하는 메소드 Problem java메소드 몸체가 메소드의 이름 만큼이나 명확할 때 사용한다.class PizzaDelivery { //... int getRating() { return moreThanFiveLateDeliveries() ? 2 : 1; } boolean moreThanFiveLateDeliveries() { return numberOfLateDeliveries > 5; }} Solution해당 본문을메소드를 호출하는 호출자안으로 옮기고 메소드를 삭제한다.int getRating(){ return (_numberOfLateDeliveries > 5) ? 2 : 1;}인디렉션이 도움이 되기는 하지만, 필요 없는 인디렉션은 짜증나게 한다.또한, Inline..

리팩토링 refactoring

리펙토링이란?리팩토링이란 무엇인가?리팩토링은 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법으로 소프트웨어 시스템을변경하는 프로세스이다. 이것은 버그가 끼어 들 가능성을 최소화 하면서 코드를 정리하는 정형화된 방법이다.본질적으로 우리가 리팩토링을 할 때, 우리는 코드가 작성된 후에 코드의 디자인을 개선하는 것이다. 리팩토링의 정의리랙토링(Refactoring) - 소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는 것리랙토링 하다(Refactoring) - 일련의 리펙토링을 적용하여 겉으로 보이는 동작의 변화 없이 소프트웨어 구조를 바꾸다.첫째 리팩토링의 목적은 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것이다..