분류 전체보기 122

Android 08. Garbage Collection(가비지 컬렉션)

(1) Garbage Collection(가비지 컬렉션 줄여서 GC) 이란? 1) JVM 은 Heap 메모리에 객체를 생성합니다. GC 는 이런 JVM 의 Heap 메모리를 정리하는 알고리즘을 말합니다. 2) 한마디로 GC 는 메모리 관리 기법 중 하나로 메모리 영역 중에서 더 이상 사용하지 않는 영역들을 정리해서 메모리를 관리해주는 기법이라고 할 수 있습니다. 즉, 동적으로 할당된 메모리 영역 중에서 어떤 변수도 가리키지 않는 메모리 영역을 탐지하여 자동으로 해제하도록 해줍니다. 3) 좋은 Java 개발자가 되려면 GC 에 대해 잘 알고 있어야 합니다. 자신이 개발하는 애플리케이션의 특징에 따라 어떤 GC 알고리즘을 선택할 것인지 고민해야 합니다. (2) Garbage Collection 의 동작 원리..

Android 2022.06.07

Android 07. Android Open Source License 종류

(1) Apache License(아파치 라이선스) 1) 이름 그대로 아파치 소프트웨어 재단에서 자체적으로 만든 라이선스입니다. 안드로이드 프레임워크쪽의 대부분의 라이브러리가 이 라이센스 규정에 따르고 있습니다. 2) 아파치 라이선스는 소스코드를 공개할 필요가 없습니다. 3) 아파치 라이선스는 특허권 측면에서 좀더 완성도를 높여서 아파치 라이선스로 출원한 특허에 대해서는 소스코드 사용자에게 특허의 무제한적 사용을 허가한다는 규정이 있습니다. 즉, 어떤 소프트웨어가 아파치 라이선스를 채택해서 배포했다면 그 소프트웨어가 특허출원이 되어 있어도 사용자에게 특허 사용료를 요구할 수 없다는 의미 입니다. (2) MIT License(MIT 라이선스) 1) 이름 그대로 미국의 MIT 공대에서 만든 소프트웨어 라이선..

Android 2022.06.03

Android 06. Platform Architecture(플랫폼 아키텍처)

(1) 아키텍처 구조 1) Linux Kernel(리눅스 커널) Android 플랫폼의 기반은 Linux 커널 입니다. 예를들어 ART(Android 런타임)는 스레딩 및 하위 수준의 메모리 관리와 같은 기본 기능에 Linux 커널을 사용합니다. Linux 커널을 사용하면 Android가 주요 보안 기능을 활용하고 기기 제조업체가 널리 알려진 커널용 하드웨어 드라이버를 개발할 수 있습니다. 2) Hardware Abstraction Layer(하드웨어 앱스트랙션 레이어: 하드웨어 추상화 계층) HAL( Hardware Abstraction Layer )은 상위 수준의 Java API 프레임워크에 기기 하드웨어 기능을 노출하는 표준 인터페이스를 제공합니다. HAL 은 여러 라이브러리 모듈로 구성되어 있으며..

Android 2022.05.30

Android 05. 동기(Synchronous) & 비동기(Asynchronous)

(1) 동기( Synchronous ) 1) 동기란 작업을 수행하고 그 작업이 완료될 때까지 다른 작업을 하지 못하고 기다리는 방식입니다. (2) 비동기( Asynchronous ) 1) 비동기란 어떤 작업을 수행하지만 완료와 상관없이 계속해서 작업을 할 수 있는 방식입니다. 2) 비동기가 필요한 이유 첫번째 이유는 예를 들어 A 라는 애플리케이션에 다운로드와 페이지 닫기 라는 두개의 버튼이 존재한다고 가정했을 때, 두개의 버튼 모두 Main Thread 가 수행하도록 설계했다면 사용자가 다운로드 버튼을 누르는 순간 Main Thread 가 다운로드 작업을 시작하게 되고 페이지 닫기 버튼은 먹통이 될 것입니다. Thread 는 작업을 순서대로 하나씩 처리하기 때문에 그렇습니다. 즉, 사용자가 보고있는 화..

Android 2022.05.26

Linux 02. Linux 의 명령어

(1) 파일 시스템 탐색을 위한 명령어 1) ls( List segments ) == 현재 위치의 파일 목록 조회 ls-l == 파일의 상세정보 ls-a == 숨김 파일 표시 ls-t == 파일들을 생성시간순(제일 최신 것부터)으로 표시 ls-rt == 파일들을 생성시간순(제일 오래된 것부터)으로 표시 ls-f == 파일 표시 시 마지막 유형에 나타내는 파일명을 끝에 표시 ( / == 디렉터리, * == 실행파일, @ == 링크 등등...) 2) cd( Change directory ) == 디렉터리 이동 cd 디렉터리경로 == 이동하려는 디렉터리로 이동(경로 입력시 폴더를 / 로 구분) cd ~ == 홈 디렉터리로 이동 cd / == 최상위 디렉터리로 이동 cd . == 현재 디렉터리 cd .. == ..

Linux 2022.05.26

Embedded 01. 임베디드(Embedded)란?

(1) Embedded System(임베디드 시스템)의 정의 1) Embedded System 이란 넓은 범주에서 정의하면 특정한 목적을 가지고 만들어진 프로그래밍 가능한 모든 컴퓨터를 의미합니다. 2) 더 큰 시스템 내에서 특정 기능을 위해 설계된 기능으로 고정되거나 프로그래밍 가능한 컴퓨터 하드웨어와 소프트웨어의 조합이라고 할 수 있습니다. 3) Embedded System의 대표적인 예로는 자동차가 있습니다. 4) 자동차에는 일반적으로 사용자 경험과 내부 시스템 관리를 위해 다양한 스마트 기능이 포함되어 있습니다. 자동차는 일반적으로 CPU에 의존하며, 트랙션 컨트롤 시스템(차량 바퀴의 정지 마찰력 손실 방지), GPS Navigation, 안정성 컨트롤 및 에어백을 관리하는 내장 시스템을 갖추고 ..

Embedded System 2022.05.25

Linux 01. Linux 란?

(1) Linux(리눅스)의 정의 1) Linux는 컴퓨터 운영체제 중 하나이며, 다중 사용자, 다중 작업(멀티테스킹, 다중 쓰레드)을 지원하는 네트워크 운영체제(NOS)입니다. 2) 1991년 핀란드의 헬싱키 대학에서 리누스 토발즈에 의해 개발되었고, 독점되거나 배타되지 않는 프리 소프트웨어 중 하나로 GNU 프로젝트에 따라 쉽게 이용할 수 있게 배포되고 있습니다. 3) Linux는 개인용 컴퓨터부터 슈퍼 컴퓨터는 물론 휴대전화, 스마트TV 등 임베디드 시스템까지 광범위하게 이용되고 있습니다. cf) Linux( Linux is not Unix ) 는 리눅스는 유닉스가 아니다 의 약자이다. cf) NOS( Network Operation System ) 는 사람이 컴퓨터를 사용할 수 있도록 하는 프로그..

Linux 2022.05.25

Java 17. String.format & SimpleDateFormat

(1) SimpleDateFormat 1) Java 에서 현재 시각이나 어떤 시각을 특정 형식에 맞추어 출력할 때 사용한다. 2) 사용법 표현식 1 (날짜 & 시간) 표현식 2 (날짜 & 시간 & 지역) 태그 종류 (2) String.format 1) 필수 값 2) 문법 3) 옵션 4) 지역도 설정 가능 String str = String.format(Locale.US, "%05d/%05d", 1, 1); 참고자료: https://shyunku.tistory.com/33 https://interconnection.tistory.com/116

Java/Java 2022.05.24

Android 04. 안드로이드의 가상머신은?

JAVA의 가상머신은 JVM 이다. (1) JVM( Java Virtual Machine ) 1) JVM은 자바 바이트코드를 실행할 수 있는 주체이다. 2) 자바 바이트 코드는 플랫폼에 독립적이며, JVM에 의존적으로 실행된다. 3) 한마디로 플랫폼에 맞춰 소스코드를 빌드 할 필요없이, 한번의 빌드로 여러 플랫폼에서 실행할 수 있다. (즉, Windows, Mac, Linux 어느 플랫폼에서도 JVM만 동작한다면 새로 컴파일 할 필요없이 실행가능) 4) JVM의 특성 스택 기반의 가상머신이다. 단일 상속형태의 객체지향 프로그래밍을 가상머신 수준에서 구현했다. 포인터를 지원하지만, C언어와 같이 주소값을 임의로 조작하는 포인터 연산은 불가능하다. 가비지 컬렉션을 사용한다. 모든 기본타입의 정의를 명확히 함..

Android 2022.05.19

Android 03. 핸들러(Handler)란?

(1) Handler 란? 1) Handler(핸들러) 란 Work Thread 에서 Main Thread 로 메시지를 전달해주는 역할을 하는 Class 입니다. Handler 는 Handler 객체를 만든 스레드와 해당 스레드의 Message Queue 에 binding 됩니다. Message Queue 는 Handler 가 전달하는 Message 를 보관하는 FIFO( First Int First Out ) 방식의 Queue 입니다. 다른 스레드에게 Message 를 전달하려면 Message 를 전달하려는 스레드에서 생성한 Handler 의 post() 와 sendMessage() 등의 메서드를 사용해야 합니다. 그래야 수신대상 Message Queue 에 Message 가 저장되기 때문입니다. Me..

Android 2022.05.19