일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스레드
- Kotlin
- 코루틴
- ReactiveProgramming
- 회고
- 안드로이드스튜디오
- 알고리즘
- 코틀린
- 병럴프로그래밍
- g 단위테스트
- Compose
- 자바
- mockito
- k8s
- 안드로이드
- Coroutine
- 커스텀상태
- viewmodel
- Gradle
- kotlin강좌
- 테스트
- 책
- android
- 병렬프로그래밍
- 알게되는
- 디자인패턴
- Rxjava
- 안드로이드강좌
- 글또
- theming
- Today
- Total
목록분류 전체보기 (154)
선생님, 개발을 잘하고 싶어요.
공유되고 변경할 수 있는 상태에 대한 접근을 관리하는 것이다. 공유됐다 👉 여러 스레드가 특정 변수에 접근할 수 있다. 변경할 수 있다(mutable) 👉 해당 변수 값이 변경될 수 있다는 뜻이다. 스레드 안정성은 코드를 보호하는 게 아니라, 데이터에 제어 없이 동시 접근하는 걸 막으려는 의미 스레드가 하나 이상 변수에 접근하고 + 변수에 값을 쓰면 👉 해당 변수에 접근할 때 관련된 모든 스레드가 동기화를 통해 조율해야 한다. 🌟 어떤 스레드가 변경할 수 있는 상태 변수를 적절한 동기화 없이 접근한다면 그 프로그램은 잘못됐다. 이런 문제를 해결하는 3가지 방법이 있다. 변수를 스레드 간에 공유하지 않는다. (스택에 저장된 변수 접근 등) 변수를 변경할 수 없도록 만든다. 접근할 땐 언제나 동기화를 사용한..
작업을 동시에 실행하는 일에 대한 간략한 역사 운영체제: 여러 개의 프로그램을 각자의 프로세스 내에서 동시에 실행 프로세스: 각자가 서로 격리된 채, 독립적으로 실행되는 프로그램 운영체제가 프로세스마다 메모리, 파일 핸들, 보안 권한등의 자원을 할당한다. 프로세스간 통신: 소켓, 시그널 핸들러, 공유 메모리, 세마포어, 파일 등으로 통신 프로그램 동시 실행으로 해결하는 문제들 자원 활용 IO 대기와 같이 유용하지 않은 일을 하며 자원을 점유하고 있으면 비효율적이다. 차라리 다른 프로그램을 사용하는 게 바람직하다. 공정성 한 프로그램을 모두 끝내야 다른 프로그램을 시작하는 것 보다는 더 작은 단위로 컴퓨터를 공유하는 게 바람직하다. 편의성 여러 작업을 전부 처리하는 하나의 프로그램을 작성하는 것보다 각기 ..
다루는 거 영역 특화 언어, DSL, Domain-Specific Language 수신 객체 지정 람다, invoke 관례 API에서 DSL로 클래스간 상호작용을 이해하기 쉽고 명확하게 표현할 수 있게 만드는 것이 목표 2부에서 살펴본 내용은 API를 깔끔하게 작성할 수 있게 돕는 코틀린 특성 깔끔하다는 것은? 코드를 읽을 때, 어떤 일이 벌어질지 명확하게 이해할 수 있어야함. 이를 위해서 이름과 개념의 선택을 잘 해야한다. 코드가 간결해야함, 불필요한 구문이나 보일러플레이트가 가능한 적어야한다. 개념적 DSL? 범용 프로그래밍 언어: 모든 문제를 충분히 풀 수 있는 기능을 제공 영역 특화 언어: 특정 과업 또는 영역에 초점을 맞추고 그 영역에 필요하지 않은 기능을 제거, (e.g. SQL, 정규식) D..
다루는 거 애노테이션(annotation) 라이브러리가 요구하는 의미를 클래스에게 부여 리플렉션(reflection) 실행 시점에 컴파일러 내부 구조를 분석 애노테이션 메타데이터를 선언에 추가해 애노테이션을 처리하는 도구가 컴파일 시점이나 실행 시점에 적절한 처리 애노테이션 인자로 원시 타입 값, 문자열, enum, 클래스 참조, 다른 애노테이션 클래스 그리고 이러한 배열이 들어갈 수 있다. 애노테이션 인자는 컴파일 시점에 알 수 있어야한다. 코틀린 한 소스코드의 선언을 컴파일한 결과가 여러 자바 선언과 대응하는 경우가 있다. (e.g. var로 선언한 property는 getter, setter에 대응된다) 사용 지점 대상(use-site target) 선언으로 애노테이션을 붙일 요소를 정할 수 있다...