본문 바로가기

전체 글

(21)
Keywords of Java such as private, default, protected and public Let's take a look at keywords of Java. Keyword Inner class Same package Inheritaged class Other areas private o x x x default o o x x protected o o o x public o o o o In addition, we are gonna go through 'protected' and 'default' in code. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class AAA { int num1; protected int num2; } class BBB extends AAA { BBB() { num1 = 10; // access to default member of AAA clas..
쓰레드의 메모리 구성 이번에는 쓰레드의 메모리 구성에 대해서 설명해보겠다. 쓰레드가 생성되면 가상머신은 쓰레드의 실행을 위한 별도의 메모리 공간을 할당한다고 설명하였다. 그렇다면 이러한 별도의 메모리 공간은 정확히 무엇을 의미하는 것일까? 쓰레드의 가장 큰 역할은 별도의 실행흐름 형성이다. 그리고 별도의 실행흐름은 메소드의 호출을 통해서 형성된다. 즉 처음에는 run 메소드가 호출되고, run 메소드 내에서는 또 다른 메소드를 호출하면서 main 메소드와는 다른 흐름을 형성한다. 이렇듯 main 메소드와는 전혀 다른 실행흐름을 형성하기 위해서는 별도의 스택이 쓰레드에게 할당되어야 한다. 따라서 main 쓰레드 이외의 두 개의 쓰레드가 추가로 생성되면, 가상머신은 다음의 형태로 메모리를 구성한다. 위 그림에서 보듯이 모든 쓰레..
[Java] Try catch 그리고 finally!? Java의 문법을 공부하다보면 종종 헛갈리는 부분들이 있다. try catch finally문은 자주 헛갈리는 종류 중 하나이다. Try문을 실행한다. Catch문을 실행한다. Finally문을 실행한다. 이 구문은 몇 가지의 실행 가능한 경우의 수를 갖는다. 1을 실행하던 도중 에러 발생한다. 2를 실행한다. 그리고 3을 실행한다. 1을 에러 없이 실행한다. 그리고 3을 실행한다. // Background : 하나의 인스턴스에 대한 공유자원인 String형 newString과 boolean형 isNewString을 이용하여 문자열을 읽고 쓴다. // String newString : 새로운 문자열을 저장한다. // boolean isNewString : Writer 인스턴스에 의해 읽혔으면 true. ..
Oracle JDK vs Open JDK 일반적으로 Java 어플리케이션을 실행하기 위해서는 JVM(Java Virtual Machine)이 필요하고 컴파일하기 위해서는 JDK가 필요하다. JDK를 설치하게 되면 JVMeh 도 함께 설치된다. JDK는 크게 두 가지 버전으로 나뉜다. Oracle JDK : 폐쇄적인 상업 코드 기반 Open JDK : 오픈 소스 기반 Oracle JDK에만 존재하는 대표적인 기능으로는 글꼴 라이브러리와 Java Web Start가 있다. 사용자의 웹 브라우저에서 자바 어플리케이션을 실행하려면 필요한 기능이다. 하지만 일부 라이브러리를 제외하고는 Open JDK와 Oracle JDK간의 큰 차이는 존재하지 않는다. 아래의 링크를 참고하였습니다. 감사합니다. [1] https://www.lpcinc.co.kr/blo..
Windows10에 Django 개발 환경 설치하기 2020년 1월 15일 기준, Python과 Django 모두 최신버전으로 설정하였습니다. [1] python3.8 최신 버전을 다운 받습니다. (https://www.python.org/) [2] 원하는 버전을 선택하여 Download 버튼을 누릅니다. 필자의 경우 최신 버전인 Python3.8.1을 선택하였습니다. [3] 필자의 컴퓨터는 윈도우10이고, 64bit를 기본사양으로 합니다. 파란색 체크로 다운 받은 것을 표시해 두었습니다. 32bit의 경우에는 체크한 부분 기준 아래로 세번째 것을 다운 받도록 합니다. [4] 다운받은 파일을 실행합니다. 이 때, 빨간색으로 표시한 부분에 체크를 반드시 해주도록 합니다. 윈도우에서 경로를 따로 지정하지 않도록 도와줍니다. [5] '시작->명령프롬프트'를 시..
Interrupt와 polling의 차이 Interrupt와 Polling은 CPU가 다른 프로세스를 실행하는 동안 디바이스로 부터 발생하는 이벤트들을 처리하는 두 가지 방법이다. Polling과 Interrupt는 CPU가 현재 하던 일을 멈추고 중요한 일에 반응하도록 멈추게 한다. 아래는 둘을 비교하여 서로의 특징을 나타내었다. 기본적인 비교 Interrupt Polling 기본 디바이스가 CPU에게 attention이 필요하다고 알려준다 CPU가 계속 CPU의 attention이 필요한 지 안한지 디바이스의 상태를 체크한다 메커니즘 Interrupt는 하드웨어의 메커니즘이다 Polling은 프로토콜이다 Servicing Interrupt 헨들러가 디바이스를 처리한다 CPU가 디바이스를 처리한다 Indication Interrupt-requ..
Binding의 개념 Binding은 속성과 개체 혹은 operation과 symbol 간의 협력(association)이다. Binding time이란 binding이 발생할 때 걸리는 시간인데 어디서 발생하느냐에 따라 여러 시간으로 나뉜다. Language design time '*'는 보통 곱하기 연산자로 묶인다 Language implementation time 데이터 타입(예를 들어 integer)은 가능한 값의 범위로 묶인다 compile time Pascal 프로그램 내의 변수는 특정한 데이터 타입으로 묶인다 link time library subprogram을 call하는 것은 subprogram의 코드로 묶인다 load time 프로그램이 메모리에 올라갈 때 변수는 storage cell에 묶일 수도 있다 r..
프로그래밍 언어에서 Aliasing 이란? Aliasing은 같은 메모리 영역에 대한 두가지 서로 구별되는 참조하는 방법이나 이름을 약하게 갖는 것을 말한다. 프로그래밍에서 이것은 위험한 특징이라고 통상 여겨진다. 예를 들어, Fortran에서 Equivalenced variable과 Pascal에서 pointers가 이러한 특징을 가진다. C++에서 이것을 간단하게 구현해보면 다음과 같다. #include using namespace std; int main() { /* New value of assinged to *i (Eg *i = 10) change is also visible by data referencing j */ int x = 0; int *i = &x; int *j = &x; *i = 10; cout