본문 바로가기

프로그래밍 언어(Programming Language)

(7)
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..
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
Python3의 산술연산자 정리 Python3.4를 기준으로 산술연산자(Arithmatic Operators)를 정리한다. a = 10, b = 20, c = 3 이라고 가정한다. Operator Description Example + 더하기 a + b = 30 - 빼기 a - b = -10 * 곱하기 a * b = 200 / 나누기 b / a = 2.0 % 나머지 b % a = 0 ** 제곱 a ** c = 1000 // 몫 a // c = 3 다음의 링크를 참고하였습니다. [1] https://wikidocs.net/1153