전체 글

개발 공부하는 블로그
·Java
java 코드 실행 과정 java를 사용해 확장자가 .java인 텍스트 파일을 생성 후 => javac 명령어를 통해 컴파일하면 확장자가 .class인 바이트 코드 파일이 생성된다. => .class 파일은 완전한 기계어가 아니기 때문에 바로 실행이 불가함. => java 명령어를 통해 .class 파일 실행 가능 .java 소스 코드 작성 => javac로 컴파일 => .class 바이트 코드 파일 생성 => java로 실행 java가 jvm을 사용하는 이유 바이트 코드 파일(.class)은 운영체제에서 바로 실행되지 않고 jvm(java virtual machine)을 통해 실행된다. jvm은 바이트 코드 파일을 OS를 위한 완전한 기계어로 번역하고 실행하는 역할을 하며 java 명령에 의해 구동된다..
·Linux
vim은 리눅스에서 제공하는 문서 편집기로, 유닉스의 문서 편집기인 vi를 업그레이드 한 것이다. 기본적인 사용법은 vi와 비슷하다. 리눅스도 GUI 형태로 문서를 편집할 수 있는 환경인 그놈이 존재하지만, 명령과 문서 편집을 왔다갔다하며 할 수는 없기 때문에 터미널에서 문서를 편집하기 위해서는 다른 편집기가 필요하다. 편집기에는 모드형과 비모드형이 있다. 모드형은 텍스트를 입력하는 입력 모드와 텍스트를 수정, 삭제, 복사, 붙여넣기 등을 하는 명령 모드가 나뉘어 있다. 입력 모드에서 키를 누르면 텍스트가 입력되지만 명령 모드에서 키를 누르면 명령이 실행된다. 입력 모드에서 j 입력 시 텍스트가 삽입되지만 명령 모드에서 j를 누르면 커서가 한 줄 아래로 이동한다. vi는 모드형 편집기이다. 비모드형은 나..
·Linux
파일 관련 기타 유용한 명령 touch 빈 파일을 생성한다. 형식 : touch [-acm] [-r ref_file | -t time] [파일] 옵션 -a : 접근 시간만 변경한다. -m : 수정 시간만 변경한다. -t : [[CC]CC]MMDDhhmm[.ss] : 시간을 직접 입력한다 grep 파일 내용 검색하기. 파일 내에서 특정 문자열을 검색할 때 사용한다. 형식 : grep [옵션] [패턴] [파일] 옵션 -i : 대소문자를 모두 검색 -l : 지정한 패턴이 포함된 파일명을 출력. -n : 행 번호 출력 find 파일을 찾는다. 파일 내용을 검색하는 grep과는 다르게 파일을 검색한다. 형식 : find [경로] [검색 조건] [동작]
·C
포인터 배열과 포인터 배열의 포인터 형 1차원 배열의 포인트 형은 배열의 첫번째 요소의 자료형에 따라 결정된다. 1차원 포인터 배열도 마찬가지이다. int * intarr[20]; double * dbarr[10]; 위에서 선언된 배열 intarr의 첫번째 요소는 int형 싱글포인터이다. 따라서 배열 intarr의 포인터 형은 int형 더블포인터가 된다. 마찬가지로 배열 dbarr는 double형 싱글포인터를 요소로 가지므로 double형 더블포인터가 된다. int num1=10, num2=20, num3=30; int * ptr1=&num1; int * ptr2=&num2; int * ptr3=&num3; int * ptrArr[3]={ptr1, ptr2, ptr3}; int **pptr=ptrArr;..
·C
이중 포인터 포인터의 포인터를 이중 포인터 또는 더블 포인터라고 한다. 이중 포인터 변수는 * 연산자를 두번 사용하여 나타낸다. 싱글 포인터 변수는 변수의 주소를 저장한다. 이중 포인터 변수도 마찬가지로 주소를 저장하는데 그 대상이 포인트 변수라는 점만 다르다. int num = 100; int * ptr = # int ** pptr = &ptr; 위와 같이 사용할 수 있다. num == *ptr == **pptr 모두 num을 의미한다. int num = 100; int * ptr = # int ** pptr = &ptr; num = 200; *ptr += 10; **ptr += 20; printf("num = %d \n", num); printf("*ptr = %d \n", *ptr);..
·Linux
리눅스 파일 파일 리눅스는 유닉스 계열의 운영체제로 유닉스의 많은 부분을 이어받았기 때문에 유닉스와 마찬가지로 시스템 정보나 장치등을 파일을 이용해 관리한다. 리눅스 파일의 특징 대소문자 구분 확장자 없음 파일마다 접근 허가권, 소유권 보유 파일은 일반 파일, 디렉토리, 심볼릭 링크, 장치 파일로 구분할 수 있다. 일반 파일 : 주로 데이터를 저장하며 텍스트 파일, 이미지 파일, 실행 파일 등이 이에 해당. 디렉토리 : 리눅스는 디렉토리도 파일로 관리한다. 다른 파일이나 하위 디렉토리를 포함하고 있음. 심볼릭 링크 : 다른 파일을 실행하는 링크. 윈도우의 바로가기 파일과 마찬가지이다. 장치 파일 : 앞서 말했듯 장치(하드웨어)도 파일로 관리한다. 리눅스에 연결된 장치를 관리하기 위한 특수 파일이다. 리눅..
·C
다차원 배열 다차원 배열은 2차원 이상의 배열을 말한다. 2차원, 3차원, 4차원 ... C언어는 4차원 이상의 배열도 문법적으로는 허용한다. 그러나 4차원 이상의 배열은 불필요하고 논리적으로 이해하기도 힘들기 때문에 다차원 배열은 2, 3차원 배열을 말하는 것으로 이해하는 것이 좋다. 선언 방법은 다음과 같다. 자료형 배열명[세로][가로];//2차원 배열 자료형 배열명[세로][가로][높이];//3차원 배열 1차원 배열 선언 시에는 []안의 수가 요소의 수를 의미했지만 다차원 배열에서는 순서대로 세로, 가로, 높이를 의미한다. 2차원 배열은 면으로, 3차원 배열은 직육면체 개념으로 생각하면 이해가 쉽다. 그렇다면 실제 메모리에도 면, 직육면체 형태로 할당되어 있을까? 메모리는 1차원 구조이기 때문에 실제..
·Linux
리눅스의 특징 리눅스는 크게 커널, 셸, 응용 프로그램으로 구성되어 있다. 커널은 리눅스의 핵심으로 프로세스 관리, 메모리 관리, 파일 시스템 관리 등 컴퓨터의 모든 자원을 초기화하고 제어한다 셸은 커널와 사용자 사이를 이어주는 역할로 사용자가 셸에 명령을 전달하면 셸이 명령을 해석하여 커널에 전달해주고 커널이 작업을 수행한 결과를 다시 해석하여 사용자에게 전달한다. 리눅스는 배시셸을 사용한다. 응용 프로그램에는 문서 편집 도구, 프로그래밍 개발 도구 등이 지원된다. 명령어 date 형식 : date 날짜와 시간을 출력한다. clear 형식 : clear 화면을 지운다. 명령어를 실행하면 화면에 있던 내용들이 모두 지워진다. 사실 지워지는 것은 아니고 스크롤을 위로 올리면 나온다. man 형식 : man..
·자료구조
자료구조와 알고리즘 프로그램 = 자료구조 + 알고리즘 '자료구조'란 프로그램에 필요한 자료들을 보관하는 방법 주어진 문제를 해결하는 방법은 '알고리즘' 예를 들어 학생 10명의 수학 성적 중 가장 높은 점수를 찾는 문제가 있다면 학생 10명의 성적을 배열에 저장하고 배열의 첫번째 요소를 변수 largest에 복사한 뒤 순차적으로 largest와 배열의 마지막 요소까지 비교하여 최고 성적을 구한다고 했을 때 여기서 배열은 자료구조가 되고 배열의 값을 순차적으로 비교하는 방법이 알고리즘이 되는 것이다. int largest = score[0]; for(int i=1; i
·C
포인터 대상 const 선언 포인터 변수를 대상으로 const 선언을 하는 데에는 두가지 형태가 있다. 첫번째는 포인터 변수가 참조하는 대상의 값을 변경하지 못하는 형태이다. 아래 코드와 같이 포인터 변수 선언의 맨 앞부분에 const가 위치하면 포인터 변수가 가리키는 대상의 값을 변경하지 못한다는 의미가 된다. 선언방법은 다음과 같다 int num = 20; const int * ptr = # *ptr = 40;//컴파일 오류 num = 40;//컴파일 오류 발생하지 않음 따라서 *ptr=30 과 같은 문장 작성 시 컴파일 오류가 발생한다. 그러나 변수 num이 상수화 되는 것은 아니기 때문에 num=40 처럼 변수에 저장된 값은 컴파일 오류없이 변경이 가능하다. '포인터 변수가 가리키는 대상'..
yeooniyeoon
개공블