분류 전체보기

    Java :: 람다와 스트림 (1/2)

    Java :: 람다와 스트림 (1/2)

    남궁성 저자의 Java의 정석 3판 스터디 자바는 자바8 (JDK1.8) 에서 람다식이 추가되면서 객체지향언어인 동시에 함수형 언어가 되었다. 람다식에 대해 알아보자 😊 람다식이란 ? 람다식은 간단히 말해 method 를 하나의 식(expression)으로 표현한 것이다. method 를 람다식으로 표현하면 method의 이름과 반환값이 사라지므로, 람다식을 익명함수(anonymous function) 이라고도 한다. int[] arr = new int[5]; Arrays.setAll(arr, (i) -> (int)(Math.random() * 5) + 1); // 위 람다식을 method 로 표현하면 아래와 같다. int method() { return (int)(Math.random() * 5) + ..

    Java :: Collection Class

    Java :: Collection Class

    남궁성 저자의 Java의 정석 3판 스터디 이전 글에서 Collections Framework 에 대해서 알아보았다. 이번에는 Collections Framework 의 클래스들을 알아보고자 한다. 다룰 클래스 ⬇️ ArrayList LinkedList Stack, Queue Iterator, ListIterator, Enumeration Arrays Comparator, Comparable HashSet TreeSet HashMap, Hashtable TreeMap Properties Collections ArrayList List 인터페이스를 구현했고, 기존의 Vector 를 개선한 클래스. 💡 Vector 는 기존에 작성된 소스와의 호환성을 위해 남겨두고 있는 것이기 때문에 Vector 보다는 Ar..

    Java :: Collections Framework

    Java :: Collections Framework

    남궁성 저자의 Java의 정석 3판 스터디 Collections Framework 는 데이터 그룹을 다루고 표현하기 위한 단일화된 구조 라고 정의하고 있다 (Java API docs) 무슨 말인지는 천천히 읽어가다보면 이해가 될 것이다 🙂 Collections Framework 란 Collections Framework 은 컬렉션이나 다수의 데이터를 다루는 데에 필요한 다양한 클래스들을 제공하고 있다. 객체지향적 설계를 통해 표준화되어 있어서 사용법 익히기에도 편리하고 재사용성 높은 코드를 작성할 수 있다. 핵심 인터페이스 Collections Framework 에서는 Collection Data 그룹을 크게 3가지 타입으로 보고 각 컬렉션을 다루는데 필요한 기능을 가진, 3개의 인터페이스를 정의했다. ..

    Experience Paper : Danaus - Isolation and Efficiency of Container I/O at the Client Side of Network Storage

    Experience Paper : Danaus - Isolation and Efficiency of Container I/O at the Client Side of Network Storage

    Middleware'21 논문 저자 : Giorgos Kappes, Stergios V. Anastasiadis Abstract 컨테이너는 영구적인 스토리지를 통해 stateful 워크로드를 실행하는 데 일반적으로 사용되는 가상화 기술이다. 활용률이 높은 multi-tenent 호스트에서는 시스템 커널에서 리소스 경합으로 인해 종종 컨테이너 I/O 를 비효율적으로 처리한다. 확장성을 위해 분산 스토리지 아키텍처를 가정할 경우 리소스 공유는 경쟁 테넌트의 어플리케이션을 지원하는 클라이언트 호스트에서 특히 문제가 된다. 시스템 커널의 확장성을 높이면 리소스 효율성이 향상될 수 있지만 시스템 서비스에 대한 공정한 접근을 위해 커널을 리팩토링하는 것은 매우 어렵다. 현실적인 대안으로 user-level 에서 실..

    FAASM : Lightweight Isolation for Efficient Stateful Serverless Computing

    FAASM : Lightweight Isolation for Efficient Stateful Serverless Computing

    USENIX ATC'20 논문 저자 : Simon Shillaker, Peter Pietzuch Abstract 서버리스 컴퓨팅은 수천 개의 병렬 기능으로 빠르고 저렴하게 확장할 수 있기 때문에 빅데이터 처리에 매우 적합하다. 기존 서버리스 플랫폼은 function 을 임시 stateless 컨테이너로 분리하여 메모리를 직접 공유하는 것을 방지한다. 이로 인해 사용자는 데이터를 반복적으로 복제하고 직렬화해야 하므로 불필요한 성능 및 리소스 비용이 추가된다. 우리는 function 간에 직접 메모리 공유를 지원하고 리소스 오버헤드를 줄이는 새로운 경량 격리 접근 방식이 필요하다고 생각한다. 고성능 서버리스 컴퓨팅을 위한 새로운 격리 추상화인 Faaslets를 소개한다. Faaslet 은 WebAssembl..

    Java :: 객체지향 프로그래밍 (1/2)

    Java :: 객체지향 프로그래밍 (1/2)

    남궁성 저자의 Java의 정석 3판 스터디 객체지향에 대해 놓치고 있는 부분을 다시 짚어보자. 객체지향이론의 기본 개념은 “실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.” 라는 것이다. 객체지향언어의 주요 특징은 아래와 같다. 1. 코드의 재사용성이 높다. 2. 코드의 관리가 용이하다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. 그 중 객체지향언어의 가장 큰 장점은 “코드의 재사용성이 높고 유지보수가 용이” 하다는 것 ! 객체지향개념을 학습할 때는 재사용성 과 유지보수 그리고 중복된 코드의 제거 이 세 가지 관점에서 보면 보다 쉽게 이해할 수 있을 것이다. 클래스와 객체 클래스란 객체를 정의해놓은 것 또는 객체의 설계도 라고 정의할 수 있다. 객체는 실제..

    JAVA :: JVM의 메모리 구조

    JAVA :: JVM의 메모리 구조

    남궁성 저자의 Java의 정석 3판 스터디 어플리케이션이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. Method Area 프로그램 실행 중 어떤 클래스가 사용되면, JVM 은 해당 클래스의 클래스파일(*.class)을 읽어서 클래스 데이터를 이 곳에 저장한다. 클래스 변수도 이 영역에 함께 생성된다. Heap 인스턴스가 생성되는 공간, 인스턴스 변수들도 이 곳에 생성된다. Call Stack Method 가 호출되면 Call stack에 메모리가 할당되며, 연산의 중간결과 등을 저장하는 데에 사용된다. 이 메모리는 Method가 작업을 수행하는 동안 지역변수(매개변수 포함)들과 Method 작업에 필요..

    JUnit :: Test 실패 - No tests found for given includes

    JUnit :: Test 실패 - No tests found for given includes

    IntelliJ 에서 JUnit 을 이용해서 테스트를 진행하는 도중 에러가 발생했다. 해결방법은 간단하다. IntelliJ 설정에서 Build, Execution, Deployment > Build Tools > Gradle 로 들어간다. 아래 화면에서 Run tests using 옵션을 Gradle 에서 IntelliJ IDEA 로 변경한다. 끝.