Language
POJO, DAO, DTO, VO 차이
POJO (Plain old java object) 프레임워크를 사용하기 위해서 해야만 하는 어떤 제약이 없는 평범한 자바 객체 비즈니스 처리가 아닌 데이터를 유지하는 책임짐 getter / setter를 가진 단순한 자바 오프젝트"이며 의존성이 없고, 테스트도 용이하며 추후 수정이 편리한 오프젝트라 DAO (Data access object) 지속성 / 데이터베이스 처리를 담당 한마디로 DB에 액세스하는 객체 DAO는 POJO 객체를 사용하여 저장하거나 가져올 수 있음 DTO (Data Transfer Object) DAO는 POJO 객체를 사용하여 저장하거나 가져올 수 있음 VO(Value Object) VO는 DTO와 동일한 개념이지만 read only 속성을 갖음 VO는 특정한 비즈니스 값을 담는..
메모리 누수 (Memory leak)
Java Virtual Machine (JVM)과 메모리 관리 C 나 C++ 에서는 OS 레벨의 메모리에 직접 접근하기 때문에 free() 라는 메소드를 호출하여 할당받았던 메모리를 명시적으로 해제해주어야 한다. 그렇지 않으면 memory leak 이 발생하게 되고, 현재 실행중인 프로그램에서 memory leak 이 발생하면 다른 프로그램에도 영향을 끼칠 수 있습니다. 반면, 자바는 OS 의 메모리 영역에 직접적으로 접근하지 않고 JVM 이라는 가상머신을 이용해서 간접적으로 접근한다. JVM 은 C 로 쓰여진 또 다른 프로그램인데, 오브젝트가 필요해지지 않는 시점에서 알아서 free() 를 수행하여 메모리를 확보한다. 웹 애플리케이션을 만들 때 모든 것을 다 직접 개발하여 쓰기보다 검증된 라이브러리나 ..
자바 가상머신 (JVM: Java Virtual Machine)
JVM 이란? 자바 가상 머신(Java Virtual Machine, JVM)은 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공한다. JVM은 다른 프로그램을 실행시키는 것이 목적인 프로그램이다. 방어적 코딩(Coding Kung Fu)의 가장 훌륭한 예 가운데 하나이기도 한 간단한 아이디어이기도 하다. JVM은 당시에도 상황을 뒤집어 놓았고 지금까지도 프로그래밍 혁신을 지원하고 있다. JAVA program 실행 과정 프로그램이 실행되면 JVM은 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받습니다. (JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리함 ) 자바 컴파일러(javac)가 자바 소스코드(.java)를 읽어들여 자바 바이트 코드(.cla..
1. BinaryGap : Find longest sequence of zeros in binary representation of an integer.
A binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary representation of N. For example, number 9 has binary representation 1001 and contains a binary gap of length 2. The number 529 has binary representation 1000010001 and contains two binary gaps: one of length 4 and one of length 3. The number 20 has binary r..
Kotlin 배열(Array), 문자열(String)
배열 자료형을 연속적으로 나열한 형태 전통적인 배열은 동일한 자료형이지만, 코틀린에서는 혼합해 구성가능 일단 정의되면 배열의 길이와 내용이 메모리에 고정됨 1. 배열 사용 방법 배열 선언 // 기본 배열 val nums:Array = arrayOf("A", "B", "C", "D") val myDatas:Array = arrayOf(1, 3, "A", "B") // n차형 배열 val nums2 = arrayOf(arrayOf(1, 2, 3), arrayOf(4, 5, 6)) // 한가지 자료형 배열 선언하기 val arr1 = arrayOf(1, 2, 3, 4) val arr2 = intArrayOf(1, 2, 3, 4) val arr3 = charArrayOf('a', 'b', 'c', 'd') va..
[Kotlin 함수형 (2)] 연산자 오버로딩 - inline(인라인), infix(중위)
인라인(inline) 함수 Kotlin 코드가 Java 코드로 변경될 때 함수를 호출하는 코드를 함수내에 구현한 코드로 변경하는 함수이다. 함수 호출 방식은 전체 코드양이 줄어들어 메모리를 적게 쓴다는 장점이 있지만 호출 시 코드 흐름이 이동하고 다시 돌아와야 하기 때문에 작업량이 늘어난다. 인라인 함수는 전체 코드양이 늘어 메모리를 더 많이 사용하지만 코드 흐름의 이동 없이 수행되기 때문에 작업량이 늘어나지 않는다. fun main() { testFunc1() testFunc1() testFunc2() testFunc2() } fun testFunc1(){ println("------------------------") println("testFunc1") println("----------------..