일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- android studio
- Android
- PyCharm
- aging
- GIT
- generics
- fixedRateTimer
- cache
- Android IDE
- Kotlin
- android studio 설치
- 안드로이드 스튜디오 설치
- 크롤링
- InteliJ
- 파이썬
- GC
- 파이참
- 안드로이드 스튜디오
- data class
- jsoup
- jvm
- process
- Anaconda
- HTML Parser
- 딥러닝
- 안드로이드
- sealed class
- 객체지향
- Schedule
- thread pool
- Today
- Total
목록분류 전체보기 (31)
탐비의 개발 낙서장
Observer 패턴 / Publisher-Subscriber 패턴 서로에 대한 인지 Observer 패턴의 경우 Subject에 Observer를 등록하고 Subject가 직접 Observer에 직접 알려주어야 합니다. Pub-Sub 패턴의 경우 Publisher가 Subscriber의 위치나 존재를 알 필요없이 Message Queue와 같은 Broker역할을 하는 중간지점에 메시지를 던져 놓기만 하면 됩니다. 반대로 Subscriber 역시 Publisher의 위치나 존재를 알 필요없이 Broker에 할당된 작업만 모니터링하다 할당 받아 작업하면 되기 때문에 Publisher와 Subscriber가 서로 알 필요가 없습니다. 결합도 Publisher와 Subscriber가 서로의 존재를 알 필요가 ..
Timer Timer 일정 주기마다 동작을 실행하기 위해 Timer를 사용할 수 있습니다. 원래 JAVA에서는 new TimerTask()를 통해 별도로 TimerTask 객체를 선언해주어야 했지만, 코틀린에서는 아래와 같이 편하게 사용할 수 있게 되었습니다. import kotlin.concurrent.timer fun run(){ timer(period = 1000, initialDelay = 1000){ // 1초 후부터 1초 간격 실행 // SomethingToDo.. if (isStopCondition()) cancel() } } 위 코드와 같이 kotlin.concurrent.timer를 import 한 후, 밀리세컨드 단위로 시간을 입력해 실행 타이머를 실행합니다. 만약 작업이 완료되어, 종..
프로세스와 스레드 프로세스 Process - 작업의 단위 CPU가 처리하는 작업(Task)라고도 불리며, 실행중인 프로그램을 의미합니다. 구체적으로는, 디스크에 저장되어 있던 실행 가능한 프로그램이 메모리에 적재되어 운영체제가 관리하는 상태를 의미합니다. 프로세스의 상태 변화 - New : 프로세스가 생성되기 위해 준비된 상태로 아직 디스크에 프로그램의 형태로 존재 - Ready : 메인 메모리에 적재 되어 프로세스에 의해 실행되기를 대기하는 상태. OS의 대기 큐에 적재됨. - Running : 프로세스가 실행되는 중인 상태 - Waiting : I/O와 같은 이벤트로 인해 대기중인 상태 - Terminated : 프로세스가 실행 완료된 상태로, 프로세스 제어 블록(PCB)가 삭제됨. 스레드 Threa..
VCS 버전관리 시스템 Git 파일 상태 변화 Git 내부 구조 Git 구조 만들기 스스로 확인할 사항 실제 git 명령어와 구현한 명령 동작 공통점과 차이점에 대해 정리한다. Git에서 blob 객체에 해당하는 file 객체를 git new 할때 부터 생성했는데, 실제로는 git add 할 때 추가된다. 또한 커밋이 각자 별개의 객체가 아니라 최상위 부모 커밋을 기준으로 다음커밋이 이어지는 식으로 연결되어있어서 트리 형태로 되어있고, 실제로 git에서 객체의 이름도 Tree이다. 대신 commit 할 때 마다 전체 파일을 복사해서 저장하는 방식으로 구현한 부분은 실제와 같다. 객체를 복사할 때, 얕은 복사와 깊은 복사 차이점에 대해 정리한다. 얕은 복사는 객체를 복사할 때, 해당 객체만 복사하여 새 객..
Programming Paradigms 명령형 프로그래밍 언어 "어떻게 할 것인가(How)" - 프로그램의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 방식의 언어 - 세분화하면 절차지향 프로그래밍 언어와 객체지향 프로그래밍 언어로 나눌 수 있습니다. - 절차지향 프로그래밍은 수행되어야 할 연속적인 계산 과정을 포함하는 방식으로 구성됩니다. (C, C++ 등) - 객체지향 프로그래밍은 객체들의 집합으로 프로그램의 상호작용을 표현합니다. (C++, JAVA, C# 등) 함수형 프로그래밍 언어 "무엇을 할 것인가(What)" - 어떤 방법으로 해야하는지를 나타내기보다 무엇과 같은지를 설명하는 방식의 언어 - 함수형 프로그래밍은 순수 함수를 조합하여 소프트웨어를 만드는 방식으로 구성됩니다. (Cl..
클래스 / 객체 / 인스턴스 클래스(Class) - 설계도 - 객체를 만들어내기 위한 설계도 - 연관되어 있는 변수들과 메소드 들이 저장되어 있습니다. 객체(Object) - 설계도로 구현한 모든 대상 - 소프트웨어에 구현할 대상으로, 클래스에 선언된 대로 생성한 실체 - OOP의 관점에서, 클래스의 타입으로 선언되었을 때, "객체"라고 부릅니다. 인스턴스(Instance) - 객체가 메모리에 할당된 것 - 클래스라는 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체 - 객체를 소프트웨어에 실체화 한 것 - JAVA에서는 객체를 new를 이용해 메모리에 할당 한 경우에 인스턴스가 생성되었다고 합니다. Data Class / Sealed Class Data Class data class DataCl..
Tokenizer / Lexer / Parser JSON & XML well-formed XML XPath
프로세스 메모리 구조 모델 TEXT 섹션 - 프로그램에 있는 함수 코드, 제어문, 상수 등을 포함하며, 일반적으로 한 번 로딩하면 바뀌지 않습니다. - 단, JVM에서는 TEXT 영역을 사용하지 않습니다. GVAR / BSS 섹션 - 범위가 정해지지 않는 전역 변수(Global / Static)를 포함합니다. - GVAR는 초기값을 0이 아닌 특정한 값으로 지정한 경우 사용합니다. HEAP 섹션 - 동적으로 할당되는 메모리 공간으로, malloc 또는 new로 할당합니다. - 할당된 메모리는 free 또는 delete 함수를 이용해서 소멸시킵니다. - 힙 영역에 할당한 메모리 공간에 대한 주소를 참조하여 사용하는 경우가 많습니다. STACK 섹션 - 함수를 호출할 때 마다 지역 변수, 매개 변수 및 리턴..