일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- String
- DP
- SQL
- 이진탐색
- binary search
- Trie
- union find
- Dijkstra
- MYSQL
- Two Points
- 그래프
- Hash
- Stored Procedure
- Brute Force
- two pointer
- 다익스트라
- 스토어드 프로시저
- Today
- Total
목록분류 전체보기 (425)
codingfarm
itmining.tistory.com/20 클래스 변수와 인스턴스 변수 public class test { int iv; // 인스턴스 변수 static int cv; // 클래스 변수 void method() { int lv; // 지역 변수 } } 인스턴스 변수 인스턴스 변수는 인스턴스가 생성될 때 생성됩니다. 그렇기 때문에 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야합니다. 인스턴스 별로 다른 값을 가질 수 있으므로, 각각의 인스턴스마다 고유의 값을 가져야할 때는 인스턴스 변수로 선언합니다. 클래스 변수 클래스 변수는 인스턴스 변수에 static만 붙여주면 됩니다. 인스턴스 변수는 각각 고유한 값을 가지지만 클래스 변수는 모든 인스턴스가 공통된 값을 공유하게 됩니다. 한 클래..

클래스란 객체를 정의해놓은 것으로 객체를 생성하는데 사용된다. 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다. 객체와 인스턴스 인스턴스화(instantiate) : 클래스로부터 객체를 만드는 과정 인스턴스(instance) : 클래스로부터 만들어진 객체 가령 '책상은 객체'라고 할때 '책상은 책상 클래스의 인스턴스' 라고 할 수 있다. 인스턴스와 객체는 같은 의미이므로 엄격히 구분할 필요는 없지만 문맥에 따라 구분할것 객체는 속성(property)과 기능(function)의 두 구성요소로 이루어 지며 각각 주로 멤버변수(memer variable)와 메서드(method)를 지칭한다. TV를 예로들면 TV의 속성과 기능은 아래와 같다. 속성 : 크기, 길이, 높이, 색상, 볼륨, 채널... ..
배열 생성 Java에서 정수형 배열을 만드는 방법은 아래와 같다. type[] varname; int[] score; string[] name; type varname[]; int score[]; String name[]; 크게 2가지 방법이 지원되며 가능하면 전자의 방법을 사용하기를 추천한다. int[] score = new int[5]; 배열 초기화 기본형 배열의 초기화 int[] score = new int[5]; score[0] = 100; score[1] = 90; score[2] = 80; score[3] = 70; score[4] = 60; 참조형 배열의 초기화 String[] name = new String[3]; name[0] = new String("Kim"); name[1] = new..

4.1 개요(Overview) CPU 이용의 기본 단위 스레드 ID, 프로그램 카운트(PC), 레지스터 집합(Register Set) 그리고 스택으로 구성된다. 같은 프로세스에 속한 스레드 끼리는 코드, 데이터섹션, 열린파일이나 신호같은 OS 자원을 공유한다. 멀티스레드 기능을 통해 프로세스는 동시에 하나 이상의 작업들을 수행할 수 있다. 4.1.1 동기(Motivation) 현대의 컴퓨터에서 동작하는 거의 모든 응용 프로그램들은 다중 스레드를 이용한다. 웹 브라우저는 이미지 또는 텍스트를 표시하는 하나의 스레드와 네트워크로부터 데이터를 가져오는 또다른 스레드를 가질 수 있다. 워드프로세서는 그래픽을 표시하는 스레드와 키보드로부터 입력을 받는 스레드, 백그라운드에서 문법을 체크하는 스레드를 가질 수 있다..

manpages.ubuntu.com/manpages/focal/en/man1/find.1.html 조건에 맞는 파일의 디렉터리를 찾는다. grep이 파일 내용을 검색하는데 반해 find는 파일의 생성 일자와 이름, 소유자 등 다양한 조건에 맞는 파일을 찾는다. 옵션 -name filename : 파일명으로 검색한다. -type filetype : 파일 종류로 검색한다. -user loginID : 지정한 사용자가 소유한 모든 파일을 검색한다. -per access_authority : 지정한 사용 권한과 일치하는 파일을 검색한다. 동작 -exec : 검색된 파일에 명령을 실행한다. -ok 명령 : 사용자의 확인을 받아서 명령을 실행한다. -print 명령 : 검색된 파일의 절대 경로명을 화면에 출력한다(..

manpages.ubuntu.com/manpages/focal/en/man1/grep.1posix.html 파일 내에서 특정 문자열을 검색할 때 사용한다. 정규 표현식을 이용한 복잡한 검색도 가능하다 옵션 -i : 대문자$\cdot$소문자를 모두 검색한다. -l : 지정한 패턴이 포함된 파일명을 출력한다. -n : 행 번호를 출력한다. grep root /etc/passwd grep -l hello *.c grep -n unix ~/*.txt 인자로 지정한 문자열을 검색할 수 있다. 실습을 위해 /etc/services 파일을 data 파일로 복사했다. -n 옵션으로 검색된 행의 번호도 함께 출력 가능하다. vim으로 확인결과 126번째 줄에 NNTP가 있음을 볼 수 있다.

manpages.ubuntu.com/manpages/focal/en/man1/touch.1posix.html 빈 파일을 새로성생하거나 파일의 마지막 접근 시간 또는 수정시간을 변경한다. 인자로 지정한 파일이 존재하지 않으면 내용이 없는 빈 파일을 생성한다. 파일이 존재하면 현재 시간 또는 옵션에 지정한 시간으로 파일의 관련 시간을 변경한다. 옵션 -a : 접근 시간만 변경한다. -m : 수정 시간만 변경한다. -t : [[CC]YY]MMDDhhmm[.ss] : 시간을 집적 입력한다. touch file_name 비어있는 파일이기에 크기가 0으로 설정된다. 시간표시 형식 : [[CC]YY]MMDDhhmm[.ss] CC : 연도의 첫 두자리 YY : 연도의 마지막 두자리 MM : 달(01~12 범위) DD ..

manpages.ubuntu.com/manpages/focal/en/man1/ln.1posix.html 링크를 생성한다. 옵션 -s : 심벌릭 링크 파일을 생성한다. ln test lntest ln -s test lntest 하드링크 만들기 : -l 옵션 리눅스에서는 하드링크 기능으로 파일에 여러개의 이름을 붙일 수 있다. 이때 붙이는 파일명을 하드링크라 한다. ln 명령으로 실행파일 a.out의 하드링크인 a_ln.out을 만들었다. a.out과 a_ln.out의 inode값이 같은것을 볼 수 있다. 3번째 열의 숫자가 1에서 2로 바뀌었음을 확인하라. 결국 a.out과 a_ln.out은 이름만 다르지 같은 파일이다. cp 명령어로 완전 독립적으로 복제하는 것과는 달리 심벌릭 링크는 원본 파일이 변경되..

기존 파일에 새로운 이름을 붙이는것 복잡한 디렉터리 계층 구조를 포함하여 파일명이 복잡할경우, 짧게 줄인 다른 이름을 붙여 원하는 디렉토리에 두게끔 한다. 하드링크와 심벌릭 링크가 있다. 하드링크 : 기존 파일에 새로운 파일명을 추가로 생성 파일에 여러개의 이름을 붙인다고 볼 수 있음 심벌릭 링크 : 원본 파일을 가리키는 새로운 파일을 만드는것 윈도우의 바로가기 기능과 유사 리눅스 파일 구성 우선 리눅스에서 파일이 어떻게 관리되는지 알아본다. 리눅스에서는 파일이 '파일명 + inode + 데이터블록'으로 구성된다. 파일명 : 사용자가 파일에 접근할 때 사용하는 파일의 이름 inode : 파일에 대한 정보를 가지고 있는 특별한 구조체 외부적으로는 번호로 표시된다. 내부적으로는 파일의 종류와 크기, 소유자,..
manpages.ubuntu.com/manpages/focal/en/man1/rm.1fun.html remove의 줄임말 파일을 삭제하는 명령이다 옵션 -r : 디렉터리를 삭제한다. -i : 파일을 정말 삭제할 것인지 물어본다. rm file rm -r directory
manpages.ubuntu.com/manpages/focal/en/man1/mv.1.html move의 줄임말이다. 파일을 다른 디렉토리로 이동하거나 파일명을 바꿀때 쓴다. 옵션 -i : file2가 존재하면 덮어쓸 것인지 물어본다. mv file1(directory1) file2(directory2)
manpages.ubuntu.com/manpages/focal/en/man1/cp.1.html 파일(디렉토리 포함)을 복사할때 쓰는 명령어 copy의 줄임말이다. 옵션 -i : file2가 존재하면 덮어쓸 것인지를 물어본다. -r : 디렉터리를 복사할 때 지정한다. cp file1 file2 cp f1 f2 f3 dir1 cp -r dir1 dir2

Git은 파일을 Untracked와 Tracked(Unmodified, Modified, Staged)상태로 분류한다. Untracked : Git에 의해 관리받지 않는 상태 Tracked : Gitd에 의해 관리받는 상태 Unmodified : 마지막 커밋 이후 수정이 이루어지지 않음 Modified : 마지막 커밋 이후 수정이 일어남 Staged : 커밋을 하기위해 사전에 거치게 되는 상태 파일의 상태 확인하기 git status를 통해 파일의 상태를 확인할 수 있다. 현재 작업중인 branch, 파일 상태를 보여준다. 프로젝트에 README 파일을 새로 만들고 git status를 실행하면 Untracked files에 들어있음을 확인 가능하다. README파일이 Untracked files에 속해..

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include #include #include using namespace std; int main(void) { int m, n; cin >> m >> n; vector mat; mat.assign(m, vector(n, 0)); for (int row = 0; row mat[row][col]; string ret; ret = "\\begin{bmatrix}"; for (int row = 0; row

0. 개요 소켓을 이용하면 인터넷의 복잡한 하부구조에 대한 세부 지식 없이 손쉽게 네트워크 프로그램을 개발할 수 있다. 이번장에서 배울 내용 소켓이란 무엇인가? 네트워크와 네트워크 프로그램의 관계 네트워크 프로그램을 작성하기 위해서 알아야 하는 네트워크의 특성 네트워크 프로그램과 소켓과의 관계 1. 소켓 소개 기존의 TCP/IP 4계층과 OSI 7계층은 세분화를 통해 전문화를 이끌어내도록 의도되었다. 하지만 계층을 나누어 전문화하고, 다시 통합하여 단순화 했음에도 여전히 네트워크 프로그램 개발 과정은 복잡하다. 이를 위해 '네트워크 프로그램 개발을 위한 새로운 계층'을 만들었으며 이것이 소켓이다. 소켓의 계층구조는 TCP/IP 계층에서 응용계층 바로 밑에 위치한다. 소켓계층은 개발자들이 응용계층에만 집중..
Git의 기초적인 사용방법 들에 대해서 배운다. Git에서 자주 사용하는 명령어들을 이곳에서 전반적으로 배울 예정이다. 저장소를 만들고 설정하는 방법 파일을 추적하거나(Track) 추적을 그만두는 방법 변경 내용을 Stage하고 커밋하는 방법 파일이나 파일 패턴을 무시하도록 Git을 설정하는 방법 실수를 쉽고 빠르게 만회하는 방법 프로젝트 히스토리를 조회하고 커밋을 비교하는 방법 리모트 저장소에 Push하고 Pull 하는 방법 Git 저장소 만들기 Git 저장소를 만드는 방법은 2가지다. 기존 프로젝트나 디렉토리를 Git 저장소로 만드는 방법 다른 서버에 있는 저장소를 Clone 하는 방법 1. 기존 디렉토리를 Git 저장소로 만들기. Git 저장소로 만들 디렉토리로 이동한다. cd /home/user/..
gabii.tistory.com/entry/Ubuntu-vim-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95 vi 대신 편리하게 쓸 수 있는 vim 설치 및 설정에 대해 다룬다. 설치 sudo apt-get install vim 설정 아래 명령어를 입력한다. 그러면 $home 루트에 .vimrc 파일이 생성되면서 편집기가 열린다. vi ~/.vimrc 그리고 아래의 내용을 복붙한다. set number " line 표시 set ai " auto indent set si " smart indent set cindent " c style indent set shiftwidth=4 " 자동 공백 채움 시 4칸 set tabstop=4 " tab을 4칸 공백으로 set i..
Git을 사용하기 위해 설치하는 방법을 알아보겠다. 이는 Linux 사용자 기준이다. Linux에서 패키지로 Git을 설치할 때는 각 배포판에서 사용하는 패키지 관리 도구를 사용하여 설치한다. Fedora에서는 아래와 같이 한다. sudo yum install git-all Ubuntu 등의 데비안 계열 배포판에서는 apt-get을 사용한다. sudo apt-get install git-all 최초 설정 'git config'라는 도구로 설정 내용을 확인하고 변경할 수 있다. Git은 이 설정에 따라 동작한다. 설정에 사용하는 설정파일은 세가지가 된다. /etc/gitconfig 파일 : 시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다. git config --system 옵션으로 이 파일을 읽고..

Git의 목표 빠른 속도 단순한 구조 비선형적인 개발(수천개의 동시 다발적인 브랜치) 완벽한 분산 Linux 커널 같은 대형 프로젝트에도 유용할것(속도나 데이터 크기 면에서) Git은 2005년 탄생하고 나서 아직도 초기 목표를 유지 하고 있다. 그러면서 갈수록 개선되고있다. Git 기초 Git의 핵심은 무엇일까? 이 질문은 Git을 이해하는데 매우 중요하다. Git이 무엇이고 어떻게 동작하는지 이해한다면 쉽게 Git을 효과적으로 사용할 수 있다. Git은 Sugversion이나 Perforce 같은 다른 VCS들과 인터페이스는 유사하지만 정보를 취급하는 방식이 다르다. 차이가 아니라 스냅샷 Subversion과 Subversion 비슷한 놈들과 Git의 가장 큰 차이점은 데이터를 다루는 방법에 있다. ..