본문 바로가기

프로그래밍/JAVA12

자바 (JAVA) 힙 메모리에 관하여 Java 프로그래밍을 시작했을 때 Java에서 Java 힙 또는 힙 공간이 무엇인지 몰랐고 Java의 객체가 어디에서 생성되는지조차 알지 못했습니다. 전문 프로그래밍을 시작했을 때 OutOfMemoryError 오류가 발생했습니다. Tomcat 에서 Java 또는 Java Heap Space의 힙이 무엇인지 깨달았습니다. 언어를 배우는 것은 쉽지만 프로그래밍의 모든 기본을 프로그래밍의 비밀을 드러내는 경험과 작업을 가르 칠 수있는 공식적인 과정이 없기 때문에 기본을 배우는 것은 어렵 기 때문에 대부분의 프로그래머에게 발생합니다. Java의 힙 공간이란 무엇입니까? Java 프로그램이 시작되면 Java Virtual Machine이 운영 체제에서 일부 메모리를 가져옵니다. Java Virtual Machi.. 2020. 12. 27.
자바 JVM (RUNTIME DATA AREAS) 자바의 기본서적을 보면 자바는 '플랫폼에 독립적이다.'라고 설명되어있다. 하지만 그 설명이 매우 미약하여 대부분의 사람들은 왜 플랫폼에 독립적인지 잘 모른다. 자바의 철학이 바로 'Write Once, Run Everywhere' 인데, 이는 한번 작성된 프로그램은 어디에서나 실행 가능해야 한다라는 뜻이다. 이 철학을 실현하기 위해 가장 중요한 것이 바로 JVM이다. 사용자가 .java 파일을 작성하여 javac로 컴파일을 하게되면 .class라는 확장자를 가진 파일이 생긴다. 이는 JVM(Java Virtual Machine)이 읽을 수 있는 Bytecode로 해석된 것이며, 이 class파일을 가지면 JVM이 설치된 그 어느 곳에서도 사용이 가능하다는 것을 의미한다. 이로써 자바는 플랫폼에 독립적이다.. 2020. 4. 1.
[CODILITY] MINMAXDIVISION 문제 You are given integers K, M and a non-empty array A consisting of N integers. Every element of the array is not greater than M. You should divide this array into K blocks of consecutive elements. The size of the block is any integer between 0 and N. Every element of the array should belong to some block. The sum of the block from X to Y equals A[X] + A[X + 1] + ... + A[Y]. The sum of empty bl.. 2020. 4. 1.
Java의 Collections (List, Set, Map) 이해 1. 각 인터페이스의 특징 인터페이스 구현 클래스 특징 List LinkedList Stack Vector ArrayList 순서가 있는 데이터의 집합, 데이터의 중복을 허용한다. Set HashSet TreeSet 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않는다. Map HashMap TreeMap HashTable Properties 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합이다. 순서는 유지되지 않고, 키는 중복을 허용하지 않으며 값의 중복을 허용한다. 2. Collection Interface 모든 콜렉션의 상위 인터페이스로써 콜렉션들이 갖고 있는 핵심 메소드를 선언 (add, contain, isEmpty, remove, size, iterator ..... 2020. 3. 14.
Iterator 와 Enumeration 차이 Iterator, Enumeration은 둘다 모두 자바에서 제공하는 컬렉션에 대해 각 컬렉션의 항목들을 순차적으로 접근하는데 사용한다. 차이점은 Enumeration의 경우 자바의 초기버젼에서 개발되었습니다. 자바는 jdk1.2, 즉 자바2에서 많은 변화가 생겼는데, 그중에 하나가 컬렉션 클래스(Vector, List, Map, Set...)들을 컬렉션프레임웍 이라는것으로 관리하는것이다. 이때, 컬렉션프레임웍에서는 Iterator라고 해서, Enumeration의 기능을 확장해서, Collection인터페이스를 상속받은 모든 컬렉션(List, Set, Vector.)에서 Enumeration을 사용가능하게 하였다. 정리하면, Enumeration는 자바초기버젼에서 제공되는것으로 Hashtable, Ve.. 2020. 3. 14.
Hashtable, HashMap, ConcurrentHashMap 비교 1. Hashtable, HashMap, ConcurrentHashMap 위에 나열된 클래스들은 Map 인터페이스를 구현한 콜렉션들입니다. 이 콜렉션들은 비슷한 역할을 하는것 같으면서도 다르게 구현되어 있습니다. 기본적으로 Map 인터페이스를 구축한다면 구조를 가지게 됩니다. 하나씩 살펴봅시다. 2. Hashtable Hashtable은 put, get과 같은 주요 메소드에 synchronized 키워드가 선언 되어 있습니다. 또한 key, value에 null을 허용하지 않습니다. 3. HashMap HashMap은 주요 메소드에 synchronized 키워드가 없습니다. 또한 Hashtable과 다르게 key, value에 null을 입력할 수 있습니다. 4. ConcurrentHashMap Hash.. 2020. 2. 14.
Template 패턴 1.Template 패턴 이란? 전체적인 로직에는 큰 차이가 없지만 일부분만 바뀌는 비스무레한 몇 가지 클래스가 있다고 칩시다. 일부분을 위해서 전체를 새로 작성할 필요는 없지요. Template Method에서는 전반적인 구현은 상위클래스(주로 Abstract로 만듭니다.)에서 담당하고 부분적인 곳의 구체적인 구현은 하위클래스가 담당합니다. 2. 예제 ------------- 템플릿 메쏘드가 있는 Abstract Class --------------- package ch04_TemplateMethod; public abstract class Worker { protected abstract void doit(); public final void work(){ System.out.println("출근").. 2020. 2. 1.
Builder 패턴 1. Builder 패턴이란? bulider pattern은 창조적 디자인 패턴(creational patter) 에 속합니다. 이것은 factory pattern 또는 abstract factory pattern과 매우 비슷합니다. builder pattern은 선택적인 파라메터가 많을 경우 제공 상태를 일관성 있게 해주고, object를 생성시킬때 step-by-step으로 만들 수 있도록 제공해주며 최종에는 만들어진 object를 리턴한다 2. 예제 // Product 클래스 를 만들고 그안에 Builder 패턴을 사용하는 ProductBuilder 빌더를 만듭니다. package com.designpattern.builder; public class Product { private String n.. 2020. 2. 1.
Adapter 패턴 1. Adapter 패턴이란 이미 구현되어 있는 코드가 있는데, 둘이 연결 좀 시켜주고 싶을 때가 있죠. 어떤 좋은 메서드가 있는데, 인자로 A라는 형식을 받습니다. 근데, 이미 구현되어 있는 코드에는 B라는 형식으로 구현되어 있습니다. 이럴 때, B를 A의 형식으로 바꿔주면 좋은 메서드를 써먹을 수 있습니다. Adapter 패턴은 어떤 오브젝트를 캐스팅이 불가능한 다른 클래스의 형태로 변환시켜주는 것입니다. 2. 따라하기 // Adapter Class package com.designpattern.adapter; import java.util.Enumeration; import java.util.Iterator; public class IteratorToEnumeration implements Enum.. 2020. 2. 1.