썸네일 Android Lifecycle Andorid System의 리소스 관리 전략 Android 시스템이 실행중일 때, 필요한 자원이 부족하게되면 실행중인 프로세스를 강제로 종료시킨다. 프로세스 종료는 프로세스 상태(status)에 따르며, 위 그림에서 forground process의 중요도가 가장 높고 empty processes 의 중요도가 가장 낮은 우선 순위를 갖는다. Empty process는 새롭게 실행된 app을 처리하기 위해 대기중인 프로세스로, 메모리를 차지하고 있는 상태를 말한다. Activity Stack 모든 Activity는 Activity Stack으로써 관리된다. Stack이란 이름에 맞게, 새로운 액티비티는 스택에 최상단에 추가되며 running activity가 된다. 스택의 최상단에서만 activity의 ..
썸네일 [C++] 파일 입출력 파일의 종류 파일의 종류에는 텍스트 파일과 바이너리 파일 두가지가 있다. 텍스트파일 : 내용이 텍스트, 문자만으로 작성된 파일. 메모장 파일 , 소스 코드, xml문서 등. 바이너리 파일 : 파일 내용을 텍스트만으로 표현 불가. mp3, jpeg, hwp, obj, exe 등 컴파일된 코드나 실행 파일. C++ 표준 파입 입출력 일반적으로 파일입출력을 위해선 라이브러리 이용한다. 파일 입출력 모드 fsream은 텍스트 I/O와 바이너리 I/O 방식을 모두 지원 텍스트 I/O : 문자 단위로 파일 읽기/쓰기 바이너리 I/O : 바이트 단위 파일 읽기/쓰기, 바이너리 I/O 방식으로 텍스트 파일의 입출력 사용 가능 파일 입출력 스트림은 프로그램과 파일을 연결시켜준다. 파일 입력: ">>" 연산자, get()..
썸네일 [C++] 입출력 시스템 C++에 포맷 입출력은 3가지 방법이 존재한다. 1. 포맷 플래그 2. 포맷 함수 3. 조작자 포맷 플래그 ios 클래스에는 포맷 플래그 값을 가진 멤버 변수가 있다. 이 멤버 변수를 이용하여 입출력의 포맷을 수정할 수 있다. 포맷 플래그 값을 가진 멤버 변수를 수정하기 위해서는, set과 unset 메서드를 사용해야 한다. #include using namespace std; int main() { cout
[JAVA] 이것이 자바다.1-2 JDK = JRE + 컴파일러 등 개발도구 JRE = JVM + 기본 클래스 라이브러리 환경변수 PATH 설정 이유 : 어디에서든 java폴더 안에 있는 명령어를 찾아 실행시키기 위함. PATH에 jdk/bin 위치를 지정해 놓으면 명령어를 찾을 때, bin 폴더 안에서 찾을 수 있다. 주석 단일 행 주석(행 주석) // 여러 행 주석(범위 주석) /* ~ */ 주석에 들어갈 내용 : 작성자, 작성일과 시간, 프록램의 버전과 변경 이력, 주요 코드에 대한 설명 이클립스 각 폴더에 대한 설명 .metadata : 사용자가 지정해둔 개발 환경에 대한 속성을 저장. 이클립스 재시작 할 때, 이전 상태 복원할 목적 .bin : 바이트 코드파일을 저장한다. (.class)(이클립스는 소스코드를 작성하고 저장하는 ..
캐리지 리턴(CR)과 라인피드(LF) 리눅스를 공부하다 read를 이용해 키 입력을 받던 중, 문득 캐리지 리턴(CR)과 라인피드(LF)에 대해 궁금해졌다. 컴퓨터구조에서 문자코드를 처음 봤을 때도, 궁금했던 부분이었는데 어찌저찌 넘어가게 돼서 이제와 정리해보려 한다. 엔터키를 구성하는 요소 캐리지 리턴과 라인피드는 두개가 하나의 엔터키를 구성한다. 캐리지 리턴은 13, 라인피드는 10. 각각 유니코드로 나타내는 번호로, 13과 10이 모두 입력돼야 비로소 우리가 아는 엔터가 작동되는 것이다. 이 둘은 개행문자로, 각각 \r과 \n으로 나타낼 수 있다. 캐리지 리턴과 라인피드의 의미 사실 이 둘의 개념은 구식 타자기에서 가져온 것이다. 옛날 타자기를 생각해보자. 한자 한자 써내려가고 종이의 끝에 도달하면, 팅! 요란한 소리와 함께 다시 종이..
속성(Property)과 필드(Field)의 차이 C#을 공부하면서 속성이라는 개념이 헷갈리기 시작했다. JAVA에서는 속성을 getter와 setter로 정의해서 멤버변수를 은닉화하는 동시에 필드를 사용할 수 있게 하는, 필드를 다루기 위해 메서드를 정의하는 방법이라고 이해하고 넘어갔다. 반면, C#에서는(C#과 마이크로소프트가 제시하는 코딩스타일에 따르면) 속성(Property)란 클래스의 구성요소로써 Public Data Member처럼 사용될 수 있지만, '접근자'라는 특수한 메서드라는 것이다. 마이크로소프트가 제시하는 속성은 무엇이고 왜 써야되는 걸까? 이번 시간에는 속성과 필드에 대해 알아본다. A property is a member that provides a flexible mechanism to read, write, or comput..
[모바일] Context 선택 kotlin 코드를 작성 시, 이벤트 처리에서 Context를 인자로 갖는 메소드가 많다. Context를 지정 시, 대표적으로 사용할 수 있는 것은 applicationContext와 this가 있다. 간단히 말하자면 applicationContext의 경우 app이 종료될때까지, this는 현재 activity 가 종료 될 때 까지 유지된다.
(수정필요)[C++] 가상함수와 추상클래스 함수의 단순 재정의 #include using namespace std; class Base { public: void f() { cout
[c++] while, for 반복문 안에 srand, rand에 대해서 srand와 rand는 랜덤값을 반환하기 위한 함수로, C++에서는 C언어의 라이브러리인 를 가져와 사용한다. 일반적으로 rand함수를 사용하게 될 경우, 매 실행 결과에서의 rand값이 동일하게 나온다. C를 공부한 사람이라면 이것이 seed가 동일하기 때문에 발생하는 문제라는 것을 알 것이다. (seed==1) 매 실행마다 랜덤값을 얻기위해, 우리는 srand 함수를 사용해 매 초마다 seed를 변경해준다. 이와 같은 방법은 매 실행 시 seed값을 변경해주므로, 난수생성이 어려운 초보자들에게 매우 효과적이다. 다만, 사용시 주의해야할 점이 있는데, srand와 rand 함수를 같이 while이나 for문같은 반복문에서 실행하면 안 된다. 그렇게되면 매 실행 시, 나오는 랜덤값이 동일함은 물론이고, ..
bash, sh쉘에서의 시스템변수, PS1 프롬프트 변경 등. sh쉘에서는 PS1을 수정해서 프롬프트를 변경하려 해도, 수정이 되지않는다. 아니, 정확히는 수정은 되지만, \u, \s, \t 등의 명령이 모조리 문자로 인식되어 쓸 수 없다. bash쉘에서는 PS1="\u@\s~$ " 으로 수정하면 사용자명과 쉘이름이 나오는 반면 sh쉘에서는 그저 \u@\s~$ 문자열이 프롬프트가 된다.
floating point system에서 지수부와 가수부의 개수 수치해석학을 공부하던 중 IEEE 754, 64bits floating point system에서 지수부와 가수부의 개수가 궁금해졌다. 처음 의문이 들기 시작한건 수치해석학 교재에 32비트 부동소수점수의 표현이 부호 1비트, 지수 7비트, 가수 24비트라고 써져있어서이다. 분명 기초 cs로 컴퓨터구조를 공부할땐, 1,8,23이였는데 이건뭐지 싶었다. 문제는 아직 더 있다. 더 나아가다보니 64비트 부동소수점수에서 부호 1비트, 지수 11비트, 가수 52비트는 같게 나왔지만, 사실은 가수부분은 1bit + 52bits로 53개의 bit를 가진다는 설명이있었다. 멘붕이다. 이게 뭔 소린가 싶다. 열심히 구글링해 stack overflow의 검색결과 64bit floating point system에서 mai..
부동소수점수는 왜 0.1을 표현못할까? ++IEEE 754, 부동소수점수와 고정소수점의 차이++소수점이하 2진수 변환++IEEE 754, 32비트와 64비트의 표현범위/ 소수점 이하 수들을 2진수로 변환하는 방법을 이해하면 쉽다.소수 부분을 2진수로 변환하기 위해선, 소수 부분이 0이 될때까지 2를 곱하게 된다.하지만, 정수부분을 변환하는 경우와는 다르게, 소수부분을 변환할 때에는 아무리 곱해도 0이 되지않는 경우가 생긴다.0.1이 바로 이런 경우인 것이다. 0.1에 2를 아무리 곱해도 소수부분을 없앨수는 없다.아무리 넓은 범위를 표현할 수 있는 부동소수점수도 결국 표현할 수 있는 범위의 한계가 있다.따라서 컴퓨터는 0.1을 2진수로 변환하는 중 표현범위의 한계에 다다르면 뒷부분은 날려버린다! double과 float에서의 0.1의 값이 다른..