일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 가변객체
- list
- 자바
- Iversion of Control
- dynamic checking
- Dependency Injection
- Abstraction Barrier
- 합성관계
- interface
- 조선대 nhn academy
- 전후조건
- collctionframwork
- 의존관계
- 제어역전
- abstract calss
- 버그줄이기
- 추상화
- Collection
- 집합관계
- java
- Abstractin
- 추상클래스
- 조선대 nhn
- abstraction
- 타입정의
- 뮤택스
- nhn 부트캠프
- DI
- static checking
- postcondition
- Today
- Total
목록프로그래밍 기초 (13)
꾸준한 기록을
프로세스란 프로세스는 메모리에 적재되어 실행중인 프로그램을 말합니다. 프로세스의 메모리 구조는 다음과 같습니다. Stack: 여기에는 메서드 호출 시 생성되는 지역 변수, 매개변수 및 자바의 기본 데이터 유형(primitive type) 값들이 저장됩니다. 재귀 함수 호출과 같이 런타임에 크기가 변경될 수 있습니다. Heap: 참조 타입(Reference Type, Non-Primitive Type)의 객체들이 여기에 할당됩니다. 런타임에 크기가 동적으로 결정되며 Garbage Collector에 의해 관리됩니다. Data: BSS 영역과 Data 영역으로 나뉩니다. 정적(static) 변수, 상수 등이 이 영역에 저장됩니다. Code: 프로그램의 소스 코드가 컴파일되어 생성된 기계어 코드가 저장되는 영..
가상메모리(Virtual Memory)란 OS에서 사용하는 메모리 관리 기법중 하나 입니다. 컴퓨터가 실제 이용가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 더 큰 메모리로 보이게 만드는 것으로 HDD의 일부 영역을 RAM처럼 사용함으로써 구현됩니다. 포토샵과 유투브를 실행해 RAM이 꽉 찬 상황을 가정하겠습니다. 기존의 방법으로는 RAM이 꽉 찬 상태에서 Word를 실행시키는 것은 불가능합니다. 하지만 RAM에 적재돼 있는 포토샵,유투브 중 사용하지 않는 프로세스를 가상메모리(HDD)로 보내 공간을 만들고 그 공간에 Word를 할당시킨다면 더 많은 프로세스를 실행 가능하게 만들고 더 큰 메모리를 사용하는것과 같은 효과를 나타내게 됩니다. 이는 프로세스들끼리 메모리 침범이 일어날 여지를 크게..
운영체제란 (Operating System) 컴퓨터 시스템을 관리하고 제어하는 소프트웨어를 말합니다. OS 구성요소 OS의 구성 요소는 다음과 같습니다. Interface System Call Kernel (I/O 드라이버, 파일시스템) Interface Interface의 경우 크게 2가지 로 나뉩니다 GUI (Graphical User Interface) 그래픽으로 구성된 화면을 말하며 , 키보드와 마우스를 조합하여 상호작용 합니다. ex(Window , Mac) CUI (Chracter User Interface) 텍스트로 구성된 화면을 말하며 , 키보드를 중심으로 상호작용 합니다. ex(MS-DOS, chatGPT) 초기에는 CUI를 사용했지만 현재는 대부분의 OS가 GUI(Graphical Us..
[Immutable Vs Mutable]프로그램의 오류는 예기치 못한 동작으로 인해 발생하게 됩니다. 이 예기치못한 동작을 줄이고 예측 가능하게 동작시키려면 어떻게 설계해야 할까요?? 자바는 생성된 이후 상태를 변경할 수 있는 Mutable Type과 그렇지 않은 Immutable Type이 존재합니다. 지금부터 각 타입의 특징과 장단점에 대해 알아보겠습니다.Immutable Type (불변 타입)Immutable Type은 생성된 후 상태를 유지하는 타입을 의미합니다. 대표적인 예시로 String 이 존재합니다.String Class value , coder 등등의 field가 final로 선언된 것을 볼 수 있습니다. 이를 통해 String Type을 불변객체로 만드는 것이죠 하지만 우리는 한가지 의..
Specification 프로그램에서 터지는 버그는 대부분 동작에 대한 오해로 발생합니다. 이러한 동작의 오해를 줄이기 위한 대표적인 방법으로 Spec(명세)이 존재합니다. 또한 완성된 프로그램은 필수적으로 Spec을 갖고있어야 합니다. 그렇다면 Spec은 무엇을 의미하는 걸까요?? 다음은 실제로 사용되는 BigInteger 클래스 Spec입니다. Class BigInteger public BigInteger add(BigInteger val) Returns a BigInteger whose value is (this + val). Parameters: val - value to be added to this BigInteger. Returns: this + val add 메서드의 Signature와 실..
Collection FramWork 자바는 Collection FramWork를 제공합니다 이 안에는 대부분의 자료구조가 존재합니다. List, Map, Set, Tree... 또 기본적으로 Collection은 Parameterized Type을 사용합니다. Collection을 한마디로 정리하면 자료를 다루는 방법과 저장하는 구조가 다른 Abstract Data Type의 집합입니다. 따라서 용도에 따라 어떤 자료구조를 사용할 것인지 잘 이해했다면 Collection FrameWork를 이해했다고 볼 수 있습니다. List List Interface를 상속받는 구현체는 대표적으로 ArrayList, LinkedList 가 존재합니다. 둘다 같은 List를 상속받아 구현체로써 사용되지만 , 구현할떄 사..
Abstract Class Vs Interface Abstract Class(추상클래스) 와 Interface(인터페이스)는 어떤 차이가 있을까요? 기능적인 차이점 부터 알아보겠습니다. 추상클래스 타입에 제한없는 변수 메서드 제한 없음 extend KeyWord로 상속 다중 상속 불가능 인터페이스 static final 상수 변수 abstract method , default method implements KeyWord로 상속 다중 상속 가능 보다 다양한 차이점이 있지만 크게 4가지만 간추렸습니다. 여기서 중요한것은 단순히 기능적인 차이점이 아니라 어쨰서? 입니다 왜 이런 기능적인 차이가 있는걸까요? 지금부터 왜? 에 대해서 알아보겠습니다. (이 글은 클래스의 Implementation과 Abstrac..
클래스란 클래스란 특정한 타입을 지정하는것을 의미합니다. 우리는 이미 자바에서 제공하는 Primitive Type을 사용하고있습니다. (byte,short,int,long,folat,double,boolean,char) 이 Type은 각각 특정한 목적을 가집니다. 정수를 표현하기 위한 byte,short,int ,long (1,2,4,8 byte로 표현가능한 크기가 다름) 실수를 표현하기 위한 float , double (4,8 byte로 표현가능한 크기가 다름) 참,거짓을 표현하기 위한 boolean 문자를 표현하기 위한 char 이렇게 타입은 특정한 목적을 가지고 설계됩니다. 우리가 만드는 클래스또한 타입을 정의하는 것으로 , 특정한 목적을 가지고 연산을 수행하게 됩니다. 따라서 "클래스를 작성한다"..