목록전체보기 (70)
따..딱히 공부하려고 포스팅하는 건 아니니까..!
데이터베이스를 export/import 할 때에는 꼭 한 번만 하지는 않는다.삽입/수정/삭제가 빈번히 일어날 수도 있기 때문에 여러번 하게 되는데이때 이미 테이블이나 데이터베이스 등이 만들어져 있는데 또 import하는 것이 부담되는 경우라면 if exists/if not exists 라는 명령어를 사용하도록 하자. 사용 예) create database if not exists DB명;use DB명; drop table if exists TABLE명;
분할 정복 알고리즘 주어진 문제의 입력을 분할하여 문제를 해결(정복)하는 방식의 알고리즘 분류 분할되는 부분문제의 수와 부분문제의 크기에 따라 분류 1) 합병 정렬(Merge Sort)2) 퀵 정렬(Quick Sort)3) 선택 문제(Selection)4) 최근접 점의 쌍 찾기(Closest Pair) 1) 합병 정렬 (Merge Sort) 정의 : 입력이 2개의 부분문제로 분할되고, 부분문제의 크기가 1/2로 감소하는 분할 정복 알고리즘 합병의 시간복잡도 : 2개의 정렬된 두 배열의 크기가 각각 n, m 일때, 최대 비교 횟수는 n+m-1, 시간복잡도는 O(n+m)합병 정렬의 공간복잡도 : O(n)합병 정렬의 시간복잡도 : 층수 X O(n) = log2n X O(n) = O(nlogn) 외부 정렬의 기..
Native Code에는 C, C++ 등이 있고, Managed Code에는 C#, Java 등이 있다. 두 코드에는 큰 차이점이 있는데, 이 차이점 때문에 두 코드는 섞이기 어렵다. 두 코드의 차이점은 다음과 같다. 1) 인터프리터 필요성의 유무2) 자체 동적 메모리 할당/해제 1) Managed Code는 인터프리터를 필요로 한다. Native Code는 OS에 의해 컴파일되어 중간 단계없이 실행파일이 만들어진다.- 과정 : Native Code -> 컴파일 -> 링크 -> 실행파일 Managed Code는 중간 단계에서 인터프리터에 의해 기계 언어로 해석하는 단계를 거친다. - 과정 : Managed Code -> 중간 언어(IL, Intermedinate Language) -> 인터프리터 -> 실..
- 사용하는 이유1) 나의 소스를 다른이에게 보여주지 않고 기능만을 사용할 수 있게 하기 위해서2) 프로그램과 함께 컴파일 되지 않고, 프로그램 실행중에 동적으로 연결되어 램에 적재되지 않는다.(= 필요할 때에만 적재되므로 램 공간을 절약할 수 있다.) - 사용 예directx의 h, dll 파일을 추가하기 위해 추가 종속성에 d3dx.h, d3d9x.h 등을 추가하는 것 등 - 유니티에 dll 추가할 때 주의점 비주얼 스튜디오에 프로젝트를 추가할 때 NET Framework의 버전을 유니티가 사용하는 버전에 맞춰야 한다.-> 비주얼은 최신 버전에 맞추는데 비해 유니티는 낮은 버전을 이용하기 때문(2015년 기준 최신버전은 4.5, 유니티는 2.0 사용)
배열리스트(Array List) 연결리스트(Linked List) 특징 메모리가 연속적으로 배치 배열의 단점을 극복하기 위해 만듬 장점 1. 데이터의 참조가 쉽다. 즉, 인덱스값을 기준으로 어디든 한번에 참조 가능 1. 크기가 유동적이다 2. 메모리 중간에 삽입/삭제가 자유롭다. 단점 1. 배열의 길이가 정해져있다.(변경 불가) 2. 중간에 메모리의 삽입 삭제가 번거롭다 1. 포인터 공간이 하나이상이 추가되어서 메모리가 크다. 2. 메모리 할당/삭제때문에 성능 저하 ∴ 삽입/삭제가 필요할 때 : 리스트 크기가 작거나 빈공간에 채우는 방법이 필요할 때 : 배열
HEAP CORRUPTION DETECTED 에러의 원인은malloc이나 new로 할당한 메모리의 영역보다 더 큰 영역에 접근하고자 했기 때문이다. 어떤 경우가 있는지 예를 들자면, (1) new로 할당한 경우 char * a = new char[10]; 이라고 선언하고a[10]이나 a[11]과 같이 원래 할당한 공간의 영역인 10보다 더 큰 영역에 접근하려고 하면 이와 같은 에러가 난다. (2) malloc으로 할당한 경우 Test * test = (Test*)malloc(sizeof(Test*)); free(test); 이와 같이 메모리를 할당하고 해제했을 때 오류가 나는 경우이다. 실제로 위의 코드를 실행해보면 오류가 나지는 않지만만약 malloc/free 부분에서 Heap 에러가 난다면 한번쯤 훑..
1. 추상화 (Abstraction) ㅇ 실세계의 복잡한 상황을 간결하고 명확하게 단순화/일반화/개념화 (=구체화의 반대) - 이를 통해 모델링을 할 수 있게 됨 ㅇ 일반적으로, 추상화란 보통의 사람들이 이해할 수 있는 언어나 그림으로 표현하게됨 2. 추상화 과정 ㅇ 통상 구체적인 사항은 되도록 생략하고 핵심이 되는 원리만을 추구함 - 추상화를 통해 모델링되어 나타난 추상적 모델은, . 그후에 구체화(구현) 과정을 거쳐 프로그램,컴퓨터 내부언어 등으로 변환하게 됨 3. 추상화 방법의 종별 ㅇ 일반화 (Generalization) ㅇ 세분화 또는 상세화 (Specialization) ㅇ 집단화 (Aggregation) ㅇ 연관화 (Association) 4. [프로그래밍] 추상화 ㅇ 프로세스(제어)의 추상..
vagrant를 이용하여 리눅스를 사용하다보면 윈도우즈에 있는 프로그래밍 파일을 가져오고 싶을 때가 있다.(혹은 비주얼같은 컴파일러를 구매하기 어려워 gnu 컴파일러를 사용하기 위해 파일을 리눅스로 옮기려고 하는 때가 있을 것이다.) 이때, 리눅스 디렉터리와 윈도우즈 디렉터리를 공유하는 방법으로 옮기는 방법이 있다 vagrant 설치 폴더에 Vagrantfile 이라는 파일이 있다. 에디터로 실행하면 위와 같은 내용들이 있는데, 그중에서 붉은색 사각형 부분을 고치면 된다.위 스샷은 이미 수정한 것이고, 처음에는 config.vm.synced_folder "../data", "./vagrant_data" 라고 되어있었을 것이다. config.vm.synced_folder "../data", "./vagra..
Databases 전체 내보내기mysqldump -u[아이디] -p[패스워드] –all-databases > 저장될 파일명ex) mysqldump -uroot -ppass –all-databases > test.sql Database만 내보내기mysqldump -u[아이디] -p[패스워드] [디비명] > 저장될 파일명ex) mysqldump -uroot -ppass test > test.sql 테이블만 내보내기mysqldump -u[아이디] -p[패스워드] [디비명] [테이블명] > 저장될 파일명ex) mysqldump -uroot -ppass test student > test.sql 테이블구조만 내보내기mysqldump -u[아이디] -p[패스워드] –no-data [디비명] [테이블명] > 저장될 ..
컴파일 프로그래밍 코드를 다른 프로그래밍 코드로 번역하는 과정, 이 때 만들어지는 것이 오브젝트 파일이다. 즉, 오브젝트 파일을 만드는 과정이다. 링크 만들어진 오브젝트 파일을 이어주어 결과적으로 실행파일을 만드는 과정이다. 예를 들어, A 파일이 있다고 하자.A 파일에는 헤더파일과 그 헤더파일에 정의되어 있는 함수와 변수들이 있다.이때 A 파일은 각각 문법적 오류가 없기 때문에 컴파일했을 때에는 정상적으로 작동한다.그러나 A 파일 자체만으로는 실행 불가능하다.왜냐하면 A 파일만 보았을 때는 결과적으로 무엇을 실행해야하는지 정의되어있지 않기 때문이다.즉, A 파일에 선언된 헤더파일의 정보가 필요한데, 이 어딘가에 있을 헤더파일을 A 파일과 이어주는 과정을 '링크'라고 한다. 이렇게 컴파일과 링크를 나누어..