본문 바로가기

목록83

자바 어노테이션(1) 안녕하세요. 이번 포스팅에서는 자바에서 사용되는 어노테이션에 대해 알아 보겠습니다. 1. 어노테이션 정의 어노테이션을 정의 할때 고려할 것은 크게 2가지로 볼수 있습니다. 첫번째는 어떤 대상에 어노테이션을 붙일것인가 인데 Class, Method, Field 등 적용할 대상을 정하는 것입니다. @Target 이라는 어노테이션을 사용하고 ElementType 이라는 열거형으로 정의할 수 있습니다. @Target({ElementType.[적용대상]}) ElementType (열거타입) 적용대상 TYPE 클래스, 인터페이스, 열거 타입 ANNOTATION_TYPE 어노테이션 FIELD 필드 CONSTRUCTOR 생성자 METHOD 메소드 LOCAL_VARIABLE 로컬 변수 PACKAGE 패키지 두번째는 어노.. 2021. 6. 18.
안드로이드 뷰가 그려지는 과정 안녕하세요. 이번 포스팅에서는 안드로이드에서 뷰가 그려지는 과정에 대해 포스팅해보겠습니다. 액티비티가 포커스를 얻게 될때 레이아웃을 그리게 요청하는데요. 뷰가 그려지는 건 레이아웃 트리의 루트노드 부터 시작하게 됩니다. 레이아웃 트리는 말그대로 레이아웃에 있는 뷰그룹이나 뷰들을 트리형태로 나타난건데 예를 들면 이런 구조로 되어 있다면 이를 오른쪽 처럼 전위순회 하면서 그려지는 방식입니다. 레이아웃을 그리는 과정은 측정패스(Measure Pass)와 레이아웃패스(Layout Pass)의 가 있습니다. Measure Pass는 onMeasure 메소드를 호출하는데 뷰의 크기를 결정하기 위한 메소드 입니다. Layout Pass는 onLayout메소드를 호출하는데 뷰의 위치를 결정하기 위해 호출되는 메소드 입.. 2021. 6. 9.
[운영체제] 상호배재와 교착상태 1. 상호배재와 임계영역 상호배재 : A프로세스가 공유자원을 사용할 때 B프로세스가 제어하지 못하게 하는 것 임계영역 : 하나의 프로세스만 접근 할 수 있는 영역 ※임계영역 3가지 조건 : 상호배재, 진행(어느 프로세스가 진입할 지 결정), 한정대기(무한히 대기하면 안됨) 2. 상호배재 방법 세마포어 이진 세마포어 : 0과 1로 카운트하여 1개의 자원만 접근 하도록 설계된 세마포어 계수 세마포어 : n개 자원까지 접근 할 수 있도록 설계된 세마포어 문제점 : 세마포어가 프로그램이 전체에 퍼져있을때 세마포어의 영향을 파악하기 어려움 모니터 세마포어보다 제어하기 더 쉽게 만든 동기화 도구 한개의 프로세스만이 모니터에 접근 가능 프로시저, 공유데이터, 초기화코드로 구성됨 3. 교착상태 교창상태란 서로 다른 프.. 2021. 5. 24.
[운영체제] 프로세스와 쓰레드 1. 프로세스와 프로그램 프로그램 : 컴파일된 코드와 전역 변수 등의 정적 데이터를 가진 정걱인 개체 프로세스 : 프로세스는 현재 메모리에 올라가 동작중인 프로그램 멀티프로세싱 : 여러개의 CPU에서 여러개의 프로세스를 처리하는 것 멀티프로그래밍 : 1개의 CPU에서 여러개의 프로세스를 처리하는 것 멀티태스킹 : 다수의 작업(프로세스, 쓰레드 등)을 운영체제 스케줄링에 의해 번갈아가면서 처리하는것 ※ 멀티프로그래밍과 멀티태스킹 차이 : 멀티프로그래밍은 프로세스가 Idle일때 실행되고 멀티태스킹은 정해진 시간동안 번갈아가면서 실행 2. 프로세스의 메모리 구조 프로세스는 4개의 영역으로 나누어져 있다. 1) 스택 : 지역변수나 매개변수들이 저장되는 공간, Top-Down방향으로 높은 메모리 주소에서 낮은 메.. 2021. 5. 16.
안드로이드 LiveData setValue 와 postValue 안녕하세요. 이번 포스팅은 LiveData에 값을 설정하는 2가지 메소드에 대해 알아보겠습니다. setValue는 기본적으로 MainThread에서 실행된다는 걸 전제로 하여 사용하는 메소드입니다. document를 보면 @MainThread protected void setValue(T value) { assertMainThread("setValue"); mVersion++; mData = value; dispatchingValue(null); } assertMainThread() 메소드에서 MainThread가 아닐때 바로 에러를 발생하게 됩니다. 반면에 postValue는 MainThread가 아닌 WorkerThread에서도 값을 반영 할 수 있게 되어있습니다. 그래서 MainThread가 아닌 .. 2021. 5. 13.
안드로이드 구글STT에서 Recording이 안되는 이유 안녕하세요. 이번 포스팅은 구글STT를 실행하면서 Recording하는 방법을 알려드리고 싶지만 현재 기술적으로 불가능해서 왜 안되는지에 대한 이유를 알려드리기 위해 적게 되었습니다. 구글STT는 Recording한 데이터를 가지고 서버에 보내서 해당 결과값을 받아 처리하게 되어있습니다. 이 과정에서 마이크 채널을 구글 STT가 점유하게 되는데 우리가 Recording을 하기 위해 AudioRecord나 MediaRecord를 쓸때도 마이크 채널을 씁니다. 즉 2개의 앱에서 마이크 채널을 사용하기 때문에 먼저 실행된 앱이 먼저 점유권을 가지에 되어 한쪽은 실행되고 다른 한쪽은 실행이 안되는 것입니다. 입력 공유에 대한 내용은 아래 사이트에서 확인하실 수 있습니다. developer.android.com/.. 2021. 4. 26.