전체 글 411

[리팩토링 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) - 일련의 리펙토링을 적용하여 겉으로 보이는 동작의 변화 없이 소프트웨어 구조를 바꾸다.첫째 리팩토링의 목적은 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것이다..

데이터마이닝 weka - IBK (KNN K-Nearest Neighbor)

▶데이터 마이닝 기법 해보기 확장자 .arff로 바꿔야 weka에서 사용 가능함 (http://slavnik.fe.uni-lj.si/markot/csv2arff/csv2arff.php 사이트에서 변환) 데이터는 http://learnersdesk.weebly.com/weka-tutorials.html http://storm.cis.fordham.edu/~gweiss/data-mining/datasets.html 다운. ▶IBK(KNN K-Nearest Neighbor) 근접 이웃의 비효율성을 없애려고 제안된 기법 K 근접 이웃은 가장 근접한 K개의 데이터로 클래스를 분류 과거 데이터 인스턴스를 사용하여 새 데이터 인스턴스의 결과물을 예측할 수 있는 데이터 마이닝 기술이다. bmwreponses(수입/첫번..

데이터 마이닝 weka - K-means k-평균

▶데이터 마이닝 기법 해보기 확장자 .arff로 바꿔야 weka에서 사용 가능함 (http://slavnik.fe.uni-lj.si/markot/csv2arff/csv2arff.php 사이트에서 변환) 데이터는 http://learnersdesk.weebly.com/weka-tutorials.html http://storm.cis.fordham.edu/~gweiss/data-mining/datasets.html 다운. ▶K-means k-평균 K개의 군집으로 나누는 대표적인 군집 방법 각 데이터들의 평균값 혹은 중심값 계산 후에 그 곳을 기준점으로 세워 가장 가까운 데이터부터 차례차례 군집으로 만듦. bank_data중에서 몇가지 속성만 따로 arff로 바꿈. bank_data_a.arff를 4가지 속성..

데이터 마이닝 WEKA - LibSVM(Support Vector Machine)

▶데이터 마이닝 기법 해보기 확장자 .arff로 바꿔야 weka에서 사용 가능함 (http://slavnik.fe.uni-lj.si/markot/csv2arff/csv2arff.php 사이트에서 변환) 데이터는 http://learnersdesk.weebly.com/weka-tutorials.html http://storm.cis.fordham.edu/~gweiss/data-mining/datasets.html 다운. ▶LibSVM(Support Vector Machine) 높은 성능을 보장함 서로 다른 클래스에 속해있는 데이터들을 분류하는 초평면 중 가장 거리가 먼 초평면을 찾아냄 2종류의 데이터들이 맵핑되는 공간에서 두 그룹을 나누는 경계선을 찾는데, 이 경계선은 두 데이터와 직선의 거리가 가장 커지..

도스창 네트워크 명령어 Ping / netstat / arp / tracert / ipconfig / nslookup

Ping 1) 용도 유닉스에서 주로 사용되는 명령어의 하나로 지정한 IP 주소가 원활히 통신되는지 확인 할 수 있고 연결하고자 하는 상대방의 IP 주소를 확인하고 상대방이 응답하는지 여부와 응답을 받는데 걸리는 시간이 표시된다. 예시 - TCP/IP가 정상적으로 동작하는지 알아보기 위해서 IP 주소를 입력하여 컴퓨터에 ping 명령을 수행하도록 한다. (상대방 컴퓨터, 네트워크 장비, 서버장비들이 통신 여부를 확인할 수 있다.) - ping 명령어와 연결하고자 하는 IP 주소를 입력하여 연결 상태를 확인할 수 있다. - 라우터가 실행중인지를 확인하기 위해서 로컬 라우터에 ping 명령을 수행하도록 한다. 구분 내용 -t Ctrl + C로 중단시키기 전까지 계속 ping 패킷을 보낸다. -a 도메인네임의 ..

컴퓨터 네트워킹 하향식 접근 연습문제

몇페이지에 몇번문제인지 기억안남. 예전에 과제로 했던거 포스팅용으로 올림. 4. 연습문제 P5, P7를 풀어서 제출 P5 회선 교환 네트워크를 통해 호스트 A에서 호스트 B로 160,000비트의 파일을 보내려고 한다고 가정하자. 네트워크의 모든 링크는 12개의 슬롯을 가진 TDM을 이용하여 1.536Mbps의 전송속도를 갖는다고 가정하자. 또한 호스트 A가 파일을 전송하기 전에 종단간 회선을 구축하는 데 600msec가 걸린다고 가정하자. 파일을 보내는 데 얼마나 걸리는가? 각 회선은 1.536Mbps/12 = 128kbps 전송속도를 가진다 파일을 전송하는데 160000/128kbps = 1.25초가 걸린다. 여기에 회선 설정시간 0.6초를 더하면 1.25+0.6 = 1.85 총 1.85초 P7 패킷 ..

컴퓨터 네트워킹 하향식 접근 연습문제

파일 정리하다가 예전에 연습문제 푼거 있어서 올립니다. 몇년전에 푼거라 기억이안나요... 몇 페이지에 몇번문제인지도 기억조차 안남...ㅠㅠ 연습문제 P8, P10 P8. 3개의 DNS서버를 방문하고 k의 값은 2라고 하자. 그리고 HTML파일이 같은 서버에서 5개의 작은 객체를 참조한다고 가정하자. 전송시간을 무시할 때 다음의 경우 시간이 얼마나 걸리겠는가? a. 병렬 TCP 연결을 하는 비지속적 HTTP일 경우는? b. 병렬 연결을 하는 비지속적 HTTP일 경우는? 병렬 연결 사용 이후로 5개의 객체는 병렬적으로 다운로드 됨. c. 파이프라이닝을 하는 지속적 HTTP일 경우는? 지속연결을 사용함으로써 다시 객체 다운로드 연결을 열지 않아도 된다. P10. 송신자가 양방향으로 160비트/초의 속도로 전송..

세마포어와 뮤텍스의 동작원리

프로세스에 한번에 여러 자원이 점유되지 못하기 때문에 스레드를 사용한다. 한 스레드는 + 연산 다른 스레드는 – 연산을 하게 된다. 이렇게 연산이 이루어지는 공간이 임계영역이고,이 자체가 동기화이다. 동기화 객체로는 뮤텍스(하나의 자원에만 접근) , 세마포어 (하나 이상 가능) 등 이벤트가 있으며 스레드에서 연산이 꼬이게 될 경우를 대비하기 위해 동기화 객체를 이용한다. ▶세마포어 세마포어는 빈 화장실 열쇠의 갯수에 비유할 수 있다. 즉 비어 있는 칸만큼 열쇠가 있다고 가정하면 예를 들어 네 개의 화장실에 자물쇠와 열쇠가 있다고 한다면 세마포어는 열쇠의 갯수를 계산하고 시작할 때 4의 값을 갖는다. 사람들이 화장실에 들어갈 때마다 열쇠의 숫자는 줄어들게 된다. 화장실 칸이 다 찰 경우 카운트는 0이 되며..