
Java Multi Thread Example : Chat 사용한 API 1. ServerSocket 서버 역할을 하는 소켓 객체 클라이언트의 연결 요청을 기다리면서 연결 요청에 대한 수락을 담당한다. public void bind(SocketAddress endpoint) 어떤 소켓으로 연결을 기다릴 것인지 바인딩 public Socket accept() 연결을 기다리며, 연결이 될 때까지 block 상태 2. Socket 클라이언트와 서버 간의 통신을 직접 담당 public SocketAddress getRemoteSocketAddress() 소켓에 연결된 종단의 주소를 반환 public InputStream getInputStream() 소켓을 위한 input stream을 반환 public Out..

힙(Heep) 최댓값, 최솟값을 빠르게 찾기 위해 고안된 자료형으로 우선순위 큐를 위해 만들어졌다. 완전 이진 트리의 일종으로, 각 노드의 키값이 그 자식의 키 값보다 작지않거나(최대 힙), 크지 않은(최소 힙) 완전 이진 트리이다. 완전이진트리는 중복을 허용하지 않지만 힙은 허용한다. 우선순위 큐 우선순위가 있는 큐 가장 우선순위가 높은 데이터가 먼저 나간다. 배열, 연결리스트 힙 으로 구현이 가능하다. 힙으로 구현하는 것이 가장 효율적이다. 자료구조 삽입 삭제 정렬된 배열 / 순서 없는 배열 O(n) / O(1) O(1) / O(n) 정렬된 연결 리스트 / 순서 없는 연결리스트 O(n) / O(1) O(1) / O(n) 힙 O(logn) O(logn) 힙(Heap) 최대 힙(Max heap) 부모 노..
안드로이드가 view를 그리는 것은 다음과 같다. Measure 시스템은 각 ViewGroup 및 View 요소의 크기를 결정하기 위해 하향식으로 뷰 트리를 탐색한다. ViewGroup이 측정되면 자식도 측정한다. Layout 측정 단계에서 결정된 크기를 사용하여 각 ViewGroup이 자식의 위치를 결정하는 또 다른 하향식 탐색을 한다. Draw 뷰 트리의 각 객체에 대해 Canvas 객체가 생성되어 그리기 명령어들을 GPU로 보낸다. 이 명령에는 시스템이 결정한 ViewGroup 및 View 객체의 크기와 위치가 포함된다. 즉, 그리는 과정에서 모든 단계마다 뷰 트리에 대한 하향식 탐색을 필요로 한다. 따라서 각 뷰 계층내에 포함시킨 뷰가 많을 수록 더 많은 연산 시간과 능력이 필요하다. 앱 레이아웃..
상수(Constant)란? 변하지 않는 값을 말한다. 즉 프로그램이 실행되는 동안 값을 변경할수 없다. 상수를 정의하는 방법은 크게 3가지가 있다. final static Enum TypeDef final static 보통 하나의 class에 final static으로 상수를 정의한다. 장점 간단하게 상수를 정의할 수 있다. static을 사용해서 메모리에 한번만 적재된다. (메모리를 적게 차지 함) 단점 코드의 가독성이 떨어진다. 타입에 대한 안정성을 보장 받을 수 없다. class Fruits{ public final static int APPLE = 0; public final static int PEACH = 1; public final static int ORANGE = 2; public fin..
git사용에 익숙하지 않아 오늘 프로젝트를 하다가 생긴 git관련 이슈를 정리하고자한다. 새로 B브랜치파서 작업해야 할 내용을 A브랜치에서 했을 때, 작업한 내용을 B브랜치를 새로 파서에 적용시키는 일이다. (+ .gitignore 관련도 있다.) 무시할 파일 gitignore에 추가하기 먼저 .idea/~.xml 파일을 .gitignore파일에 추가한다. (시스템 설정과 관련된 파일이기때문에 원격 저장소에 올리지 않는것이 좋다.) git add .gitignore 를 한 후 git status 로 확인을 했더니 아래와 같이 남아있다. Changes to be committed: (use "git reset HEAD ..." to unstage) modified: .gitignore new file: ...
.gitignore이란? 프로젝트에서 원하지 않는 파일(예를 들어 세팅파일이나 로그파일 등)들을 Git에 올릴 때 제외시키는 파일이다. 즉, .gitignore에 명시되어 있는 파일들은 무시한다. .gitignore에는 OS마다 다른 시스템 세팅, .gradle, .idea 같은 파일들을 명시한다. 그렇지 않으면 협업을 할 때 매번 캐시를 날리고 다시 clean을 해야하는 번거로운 일들이 발생한다. 그래서 프로젝트를 시작할 때 .gitignore파일을 만들고 시작해야지 매번 clean이나 다시 세팅하는 수고를 덜 할 수 있다.
- Total
- Today
- Yesterday
- 기능개발
- git
- MFQ
- 프로세스 스케줄링
- 알고리즘
- Android
- programmers
- Objective function
- SWExpert
- MLQ
- 네트워크
- 사회망서비스
- N-Queen
- 백 트래킹
- java
- loss function
- 프로그래머스
- algorithm
- 백트래킹
- 농협정보시스템IT
- 4-way-handshake
- DFS
- SRTN
- Process Scheduling
- hashtable
- hash
- 자료구조
- 우선순위큐
- binarySearch
- 3-way-handshake
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |