본문 바로가기

전체 글

(291)
[Kotlin] 기본 타입 코틀린에서 지원하는 타입들은 통상적으로 Java의 것을 따라간다. Numbers : 숫자 Integer Float Booleans : 불린 Characters : 문자 Strings : 문자열 Arrays : 배열 Unsigned Integer : 부호 없는 정수 타입. Java 에 unsigned 예약어가 없는 것처럼, 코틀린에서도 부호 없는 정수 타입을 만들 때 unsigned 를 사용하지 않는다. Number 정수 타입과 실수 타입이 있다. 정수 타입 타입 크기 ( bit ) 타 언어 unsigned Byte 8 byte / char UByte Short 16 short UShort Int 32 int UInt Long 64 long ULong 자바 언어처럼 숫자 및 문자에 대한 1 byte 크기의..
Intellij / vscode 단축키 실행 내용 단축키 vscode에서 실행 Shift + F10 F5 디버그 Shift + F9 Ctrl + F5 서식 맞추기 Ctrl + Alt + L Shift + Alt + F 한줄씩 주석 ( // ) Ctrl + / Ctrl + / 혹은 Ctrl + K + C ( 주석 ) Ctrl + K + U ( 해제 ) 다중 주석 ( /* */ ) Ctrl + Shift + / Shift + Alt + A 파일에서 검색 Ctrl + Shift + F Ctrl + Shift + F 현재 파일에서 검색 Ctrl + F Ctrl + F 다음 찾은 항목 Ctrl + L F3 ↓ ( 아래 방향키 ) Enter 이전 찾은 항목 Ctrl + Shift + L Shift + F3 ↑ ( 윗 방향키 ) Shift + Enter
[Kotlin] 기본 타입과 내부 처리 코틀린의 모든 변수는 멤버 함수를 가진다는 점에서 일종의 객체로 간주할 수 있다. 예를 들어 Intellij 환경에서 13을 입력한 후 ctrl + space 키를 입력하여 자동완성을 수행하면 아래와 같이 Int형 13에 대한 멤버 함수들을 호출할 수 있다. 위와 같은 특징은 JVM을 기반으로 하는 다른 언어인 Java 와도 사뭇 다르다. Java의 경우 int, float 등의 primitive type은 객체가 아니라서 멤버 함수를 가지지 않으며, raw value로 취급된다. 코틀린 언어 수준에서 int, float 등의 Number type 이 마치 객체인 것 처럼 사용되기는 하지만, 실제로 모든 값이 객체 형태로 처리되는 것은 아니다. 이를 알아보기 위해 코틀린 코드를 Java 코드로 디컴파일해..
[운영체제] 파일시스템 현재 글은 Operating System ConceptsTenth Edition 의 슬라이드 내용을 기반으로 하고 있습니다. 단, 본문의 내용이 반드시 해당 서적의 내용을 보장하지는 않으므로 필요하다면 직접 책을 찾아 읽는 것을 추천합니다. 링크 : https://www.os-book.com/OS10/ 파일 논리적 주소 공간에 연속하여 존재하는 데이터 덩어리로, 운영체제에 의해 물리적 주소에 매핑된다. 타입 데이터 타입 : Numeric, Character, Binary ... 프로그램 : 특정 명령을 수행하는 바이너리 코드 등 파일의 컨텐츠는 파일 생성자에 의해 정의되며, 정말 다양한 목적으로 사용될 수 있기 때문에 text, source, executable 등 다양한 타입을 가질 수 있다는 특징이 ..
[데이터베이스] Relational Database Design 함수 종속(Functional Dependency) relation 내의 attribute X와 Y에 대해 X가 Y의 값을 unique 하게 결정하여 X->Y가 성립되는 경우 함수 종속이라고 한다. Armstrong's inference rules 다음 추론 규칙들은 일종의 공리 처럼 여겨지며, sound / complete 한 추론 규칙들을 만드는데 사용된다. 따라서 모든 추론 규칙들은 아래 3개 규칙으로 구성되므로 어떤 규칙이든 아래 3개 규칙의 구조로 분해될 수 있다고 한다. Reflective : if X ⊇ Y , then X -> Y Augmentation : if X -> Y, then XZ -> YZ Transitive : if X -> Y and Y->Z, then X->Z 쓸만한 추론 ..
[운영체제] 가상 메모리 ( Virtual Memory ) 이 문서의 내용은 Operating System Concepts 10th의 슬라이드에 기반하고 있습니다. https://www.os-book.com/OS10/ 배경 우리가 롤을 한다고 생각해보자. 롤에는 많은 챔피언이 존재하고 모드도 다양하다. 따라서 롤에서 사용되는 모든 코드를 메모리 상에 적재해야 한다면 아마 메모리가 남아나지 않을 것이다. 그런데 사실 생각해보면 롤 프로그램을 시작한다고 내부에서 사용되는 모든 에셋 및 코드를 항상 메모리 상에 올려놓을 필요는 없다. 게임 한 판을 생각해보자. 한 판의 게임에는 기껏해야 10 종류의 챔피언이 사용되며, 일단 게임이 시작되면 해당 정보는 변경되지 않기 때문이다. 단일 모드에서 티모 vs 가렌의 경기가 펼쳐졌다면 사실 메모리 상에는 티모 및 가렌에 대한 ..
[오늘의 삽질] ec2 재시작 후 ssh 접근 안되는 문제 ec2을 프리티어 수준에서 자원을 너무 많이 사용했는지, 제대로 접근이 안되는 문제가 발생하여 잠시 인스턴스를 껐다가 다시 켜보려고 했다. 그런데, ec2를 재시작하니까 다시 접근이 안되는 문제가 발생했다! 원인은 매우 간단한데, ec2을 재시작하면 퍼블릭 IP 주소가 변경된다. 따라서 ssh 에 이전 퍼블릭 IP 주소를 넣어 접근해봤자 안된다. 해결 방법은 변경된 퍼블릭 IP 주소로 접근하면 된다. https://stackoverflow.com/questions/12465181/ec2-after-restart-can-not-access-via-ssh 이 문제 때문에 ec2 인스턴스 자체가 먹통이 된 줄 알고 지워버렸는데, 내 선택이 후회된다...
[운영체제] 페이징 기법 페이징 기법 연속 적재 기법을 이용하면 내부 단편화 및 외부 단편화가 발생하는 문제점이 존재했다. 그런데 사실 프로세스는 세그멘테이션 기법에서 언급했듯이 특정 기능 단위로 쪼개서 관리하는 것이 가능하다. 특정 프로세스가 실제로 저장되는 물리적 주소는 각각의 물리적 주소를 가리키는 연속적인 논리적 주소가 있다면 사실상 연속적으로 관리되는 것 같다. 페이징 기법은 물리적 메모리를 Frame 이라고 불리는 고정된 크기의 블럭 단위로 쪼갠 후 이를 동일 크기를 지닌 논리적 메모리 영역인 Page에 대응시켜 프로세스를 페이지 단위로 쪼개 관리하는 기법을 의미한다. 각 프로세스는 페이지라는 논리적 메모리 단위로 관리되며, 페이지와 프레임은 페이지 테이블에 의해 매핑되므로 실제 물리적 주소와는 독립적으로 동작할 수 ..