본문 바로가기

전체 글54

퀵정렬 (QuickSort) 피봇을 정하여 해당 피봇보다 작은 값을 왼쪽에서부터 찾기 시작.큰 값을 오른쪽에서부터 찾기 시작.양쪽에서 진행 중 찾아지는 값들을 서로 위치 변경.반복 중에 양쪽에서 비교하던 인덱스가 만나면 그 위치와 피봇 값을 교환. 이 과정에서 중간지점으로 이동된 피봇을 중심으로 양쪽에 부분집합이 생긴다.각 부분집합마다 피봇을 다시 정하여 위의 과정을 반복한다. 자료가 균일하게 분포되어 있으면 log2(n)의 연산 횟수가 필요하다.매번 정렬시마다 n만큼 비교하므로 O(nlog(n))의 평균 효율을 보인다.데이터 이동 연산은 비교보다 적게 발생한다. 데이터가 불균형하게 분포되어 있으면 최악의 경우 n(2)의 효율성을 지닌다. 기존 피봇을 재사용하지 않고, 먼 곳에 있는 값을 교환하므로 효율이 우수하다.최악의 경우 효율.. 2018. 12. 19.
선택정렬 (Selection Sort) 키 값을 선택하여 값을 이동한다. 오름차순으로 정렬시 제일 먼저 제일 작은 값이 와야하므로 데이터 내에서 가장 작은 키 값을 선택하여 제일 앞으로 보낸다.나머지 데이터에서 가장 작은 값을 찾아서 이미 정렬된 키 값 다음 위치로 보낸다.반복하여 제일 마지막 키 값이 남을 때까지 작은 키 값을 찾아 이미 정렬된 키 값 다음 위치로 보내는 동작을 반복한다.마지막 키 값은 정렬되지 않아도 위치가 확정이므로 정렬이 끝난다. 비교 연산 : 두 개의 루프. 1. n개 만큼 비교 시작. 2. n-1개와 비교. 즉 비교에 n(2) 만큼의 효율.이동 연산 : 두 값의 위치 변경. temp 변수 포함 3번의 이동 연산. 즉 이동에 3n = n 만큼의 효율. 최종 n(2)+n 이므로 O(n(2))의 효율을 지닌다. 상대적으로.. 2018. 12. 19.
알고리즘 (algorithm) 알고리즘은 시간 복잡도와 공간 복잡도로 나눔.공간 복잡도는 필요한 하드디스크 기준이므로 현대에는 크게 신경쓰지 않음.시간 복잡도는 입력 값에 따른 연산 횟수를 표현하므로 시간 복잡도 함수의 최고 차항 만으로 성능을 표현. (최고 차항을 제외한 다른 값들은 비율상 미비함으로)빅오 표기법은 시간 복잡도 함수의 상한을 표현. (최소한 빅오 성능 이상을 보장) 오름차순 정렬 : 작은 키 값부터 올라간다.내림차순 정렬 : 큰 키 값부터 내려온다. 정렬은 비교 - 이동 과정을 거친다.비교 연산 성능이 같더라도 비교 후 이동해야 하는 자료의 크기가 크다면 이동이 적은 정렬이 성능이 좋다.자료가 저장된 상태에 따라 평균 효율성과 최악 효율성에 차이가 있다면 이 또한 알고리즘 선택의 기준이 된다. 한번의 정렬시 기존 자.. 2018. 12. 19.
MSSQL 계정 로그인 잠김 풀기. Login failed for user 'id' because the account is currently locked out, The system administrator can unlock it. 이라는 문구와 함께 계정이 잠겨버리는 현상이 발생한다. 이때는 select LOGINPROPERTY ( name , 'IsLocked' ) ,* from sys.server_principals where type = 'S' 쿼리를 실행해보면 계정들의 상태를 확인할 수 있다. 잠겨있는 계정이 있으면 ALTER LOGIN 계정명 WITH PASSWORD = ‘계정 비밀번호’ UNLOCK 쿼리를 날려서 잠금을 풀어준다. 2016. 9. 6.
트랜젝션 로그 파일 줄이기. 트랜젝션 로그 설정을 자동 증가가 되지 않도록 해놓았을때 로그가 정해진 용량에 도달하면 The transaction log for database is full. To find out why space in the log cannot be reused. see the log_reuse_wait_desc column in sys.databases 라는 문구를 내보내면서 쿼리가 동작하지 않는다. 해결 방법으로는 정해진 용량을 자동 증가되도록 설정하는 방법이있다. DataBase Properties -> Files -> Log 파일을 선택해서 Autogrowth 옵션에 자동 증가를 켜준다. 그리고 무제한 증가로 설정해주면 된다. 단, 이때 이 Log 파일이 커지다보면 HDD 용량을 초과하게 되고, 더 이상 쓸.. 2016. 8. 31.
Tortoise SVN Repository 생성 및 구동 - Console 창에서 SVN 메인 경로로 이동. 예) C:\>cd SVN_MAIN - svnadmin create --fs-type fsfs 디렉토리명 (디렉토리 생성) 예) C:\SVN_MAIN>svnadmin create --fs-type fsfs New_Folder - svn checkout file:///체크아웃할 디렉토리 경로 (디렉토리 체크아웃) 예) C:\SVN_MAIN>svn checkout file:///C:/SVN_MAIN/New_Folder체크아웃된 리비전 0. (체크 아웃 결과 출력됨.) - svnserve -d -r SVN메인경로 (SVN 서버 구동) 예) C:\SVN_MAIN>svnserve -d -r C:/SVN_MAIN 이후 생성된 디렉토리로 가서 디렉토리내에 conf 폴.. 2016. 8. 26.
바이너리로 읽어온 1바이트 4개를 4바이트 변수로 변환하기 SQL 컬럼 중 varbinary 같은 경우 RecordSet에서는 RFX_Binary로 불러온다. RFX_Binary(pFX, _T("[컬럼이름]"), m_arValue, 400); 2015. 10. 30.
File Programming 기본 File은 곧 Stream 이라고 할 수 있다.Stream이란 내부적으로 Pointer를 가지고 순차적인 조작을 하는 개념적인 시스템이다. File을 조작할 경우 파일을 생성/열기 -> 조작 -> 닫기 순차적으로 이루어진다. 생성/열기시에 열기는 읽기 전용/쓰기 전용/공통으로 열기로 나누어지고, File의 형태는 TEXT/Binary로 나누어진다.또한 자원을 혼자 독점할 것인지, 다른 곳에서 사용 가능한 공용으로 사용할 것인지를 설정하고, 보안 특성을 설정한다.이 후, 파일 조작의 핸들을 얻어내고 이것으로 이후 조작을 한다. File 조작시 API는 ANSI 표준과 WIN32 Native로 나뉜다. ANSI 표준은 C언어 표준함수로 어떤 OS에서도 대부분의 기능을 제공해주나, 해당 OS의 특수한 기능은 .. 2015. 6. 23.
디자인 패턴의 종류 - 생산성 극대화 - Gof 패턴 Abstract Factory Singleton Factory Method Builder Prototype Template Method Command Iterator Observer State Strategy Decorator Composite Proxy Facade Adaptor - C++ 경험치 : 적정량 이상 - 객체지향 : 제너릭 설계의 이해 - 템플릿 - 다형성 : Virtual과 상속 - 클래스와 인터페이스 2014. 9. 22.