공부방

    자바 함수형 인터페이스

    들어가며자바 8에서 도입된 함수형 인터페이스(Functional Interface)는 현대 자바 프로그래밍의 핵심 개념 중 하나입니다. 람다식과 스트림 API의 기반이 되는 함수형 인터페이스에 대해 알아보겠습니다.함수형 인터페이스란?함수형 인터페이스는 단 하나의 추상 메서드만을 가지는 인터페이스를 의미합니다. Java 8부터 도입되었으며, @FunctionalInterface 어노테이션을 통해 함수형 인터페이스임을 명시적으로 선언할 수 있습니다.예시:@FunctionalInterface public interface SimpleFunction { void doSomething(); } 주요 함수형 인터페이스1. Function입력값 하나와 리턴값이 있는 가장 기본적인 함수형 인터페이스R a..

    MacOS에 Docker 설치하기 - 완벽 가이드

    목차Docker 소개시스템 요구사항설치 방법설치 확인기본 사용법문제 해결다음 단계1. Docker 소개Docker는 애플리케이션을 컨테이너화하여 개발, 배포, 실행을 쉽게 만들어주는 플랫폼입니다. 컨테이너는 소프트웨어가 실행되는 환경을 패키징하여, 어떤 환경에서도 동일하게 작동하도록 보장합니다.2. 시스템 요구사항- macOS 버전 10.15 (Catalina) 이상- 최소 4GB RAM- Intel 프로세서 또는 Apple Silicon (M1/M2) 프로세서- 약 20GB의 저장 공간3. 설치 방법3.1 Homebrew를 통한 설치 (권장)Homebrew가 설치되어 있지 않다면, 터미널에서 다음 명령어를 실행합니다:/bin/bash -c "$(curl -fsSL https://raw.githubuse..

    싱글톤(Singleton)과 정적(Static)의 차이

    디자인패턴의 싱글톤패턴 강의를 듣고 언뜻 드는 생각이 있었다. GoF::싱글톤 패턴(Singleton Pattern)이 글은 '백기선의 코딩으로 학습하는 GoF의 디자인 패턴' 강좌를 듣고 해당 내용을 공부하며 정리한 글입니다. 싱글톤 패턴(Singleton Pattern) 인스턴스를 오직 한 개만 만들어서 제공하는 클래스가dev-sanghun.tistory.com 해당 패턴 자체가 인스턴스를 오직 한 개만 만들어서 제공하는 클래스가 필요한 경우에 사용하는 패턴인데 여기서 오직 한개만 만들어서 제공되다는 말에 static이 떠올랐다. 일단 싱글톤과 스태틱의 특징을 정리하면 다음과 같다. 싱글톤과 정적의 특징싱글톤단 하나의 객체만을 생성할 수 있는 패턴으로 객체를 생성하려고 할 때마다 이미 생성된 것을 반..

    [이것이자바다] chapter 1. 자바 시작하기

    " 이것이 자바다 - 신용권의 Java 프로그래밍 정복" 공부하며 정리한 글 입니다. chapter 1. 자바 시작하기 자바를 실무에서 요령껏 사용하다보니 기초가 부족해 실수하는 영역이 많아...예전에 보려고 사둔 책을 꺼내들었다. 물론, 이책의 자바버전과 현재 버전은 다르나 현재 사용하는 자바 버전에는 문제가 없어 해당 책으로 정리하며 공부를 해보려고 한다. 1. 1 프로그래밍 언어란? 기계어 : 컴퓨터가 이해할수 있는 언어로 0, 1로 이루어진 이진코드 자연어 : 사람이 일상적으로 사용하는 언어로 컴퓨터가 이해하기 힘든 언어(문자집합) 프로그래밍 언어 : 기계어와 자연어의 매개채로 사람이 컴퓨터와 대화(?)할 수있게 하는 언어 고급언어 : 좀 더 사람이 쉽게 이해할 수 있는 언어 > 컴퓨터가 바로 이..

    [모던 자바 인 액션] chapter 1. 자바 8, 9, 10, 11???

    " Modern Java In Action - 모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드 " 공부하며 정리한 글 입니다. Chater1. 자바 8,9,10,11: 무슨 일이 일어나고 있는가? 자바는 1996년 발표된 이유로 새로운 기능이 계속 릴리즈 되어 발전되어왔고, 현재에도 많이 쓰이는 언어중 하나이다. 이러한 발전에 있어서 가장 큰 변화가 자바 8에서 일어났다. 1.1 역사의 흐름은 무엇인가? 위에서 말한것과 같이 현재 11까지 릴리즈된 상황에서 매번 변화가 있었지만 자바 8에서는 그 역사상 가장큰 변화가 있었다. 자바 8은 이제 좀 더 자연어에 가깝게 간단한 방식으로 코드를 구현할 수 있게 변화하였다. 예를 들어, 그동아 자바에서 어떤 객체(사과)의 무게를 비교하기위해서..

    Docker::우분투 환경에 Docker 설치하기

    우분투 환경에 Docker 설치하기 우분투 환경에 Docker를 설치하려고 한다. 설치 가이드는 아래 사이트를 통해 확인 할 수 있다. Install Docker Engine on Ubuntu docs.docker.com 해당 가이드에는 우분투를 설치할 수 있는 방법이 순서대로 나와있기 때문에 잘 따라하면 설치를 할 수 있을 것이다. 사용하기 위한 저장소를 설치 우선 위 가이드가 안내하는 순서에 맞춰 진행하면 됩니다. 업데이트 및 HTTP 패키지 설치 > Update the apt package index and install packages to allow apt to use a repository over HTTPS. sudo apt-get update sudo apt-get install \ ca-..

    JAVA::파일의 수정 날짜 확인하기

    파일의 수정 날짜 확인하기 자바에서 파일을 사용하는 경우를 종종 접하게 되는데 이경우 파일의 수정날짜를 확인해야하는 경우가 있을 것이다. 이 경우 여러가지 방법을 사용할 수 있는데 해당 경우들에 대해서 소개를 해보도록 하겠다.(전부는 아닐 수 있음) BasicFileAttributes File.lastModified Files.getLastModifiedTime Files.getAttribute BasicFileAttribute 사용 파일의 attribute(속성)을 읽어서 만든 객체를 통해 해당 파일의 수정날짜 등의 파일 속성을 담고있다. 그 속성객체에서 파일의 수정날짜를 출력시킴으로써 파일의 수정날짜를 확인 할 수 있다. 사용 package java.nio.* Example source code im..

    명령어::touch 사용하기(파일 생성 및 시간정보 변경)

    touch 사용하기 리눅스 환경에서 파일의 시간정보를 변경하기 위해서 touch 명령어를 사용하곤 하였는데, touch 명령어는 0byte의 파일을 생성하기 위해 자주 사용되곤 한다. touch에 대한 가장기본적인 사용법은 다음과 같다. touch [OPTION] [파일명] 우선 리눅스가 갖는 3가지 time stamp에 대해서 알아보면 다음과 같다 atime : 파일을 마지막으로 읽은 시간 :: access time ctime : 상태라고 불리는 파일의 메타데이터의 마지막 변경시간 :: change time mtime : 파일의 내용을 마지막으로 수정한 시간 :: modification time 해당 time stamp는 'stat'명령어를 통해 확인할 수 있다. 여기서 만약 option 값을 아무 값..

    MySQL::DATABASE 생성,사용,조회

    DATABASE database를 사용하기 위해서는 우선 생성을 하고 사용을 해야한다. 하지만, 이미 database가 생성되어 있을 수도 있기 때문에 확인을 할 줄도 알아야하는데, 일련의 SQL 명령어가 다음과 같다. SHOW DATABASES; 하나의 DB 서버에 여러 독립된 databases가 존재할수 있는데 해당 sql를 통해 모든 database 항목을 볼 수가 있다. show databases; MySQL의 경우 처음 설치하게 되면 기본적으로 5개의 db가 설치되어 있습니다. 해당 DATABASE는 각각 DB의 메타정보를 모아둔 DB가 되는데 읽기전용으로 관리가 될 것이다. 즉, 사용하고자하는 DB는 일반적으로는 추가로 생성하여 작업을 해주면 된다. CREATE DATABASE ; create..

    MySQL::윈도우에서 MySQL 설치하기

    윈도우에서 MySQL 설치하기 MySQL :: MySQL Downloads MySQL Cluster CGE MySQL Cluster is a real-time open source transactional database designed for fast, always-on access to data under high throughput conditions. MySQL Cluster MySQL Cluster Manager Plus, everything in MySQL Enterprise Edition Learn More » C www.mysql.com 해당 링크에서 다운로드를 진행하면 된다. MySQL 설치하기 우선 'MySQL Community (GPL) Downloads' 클릭한다. 윈도우에서 설치할..

    GoF::추상 팩토리 패턴(Abstract Factory Pattern)

    이 글은 '백기선의 코딩으로 학습하는 GoF의 디자인 패턴' 강좌를 듣고 해당 내용을 공부하며 정리한 글입니다. 추상 팩토리 패턴(Abstract Factory Pattern) 추상 팩토리 패턴은 다양한 구성 요소 별로 ' 객체의 집합'을 생성해야 할 때 유용하다. 이 패턴을 사용하여 상황에 알맞은 객체를 생성할 수 있다. - 위키백과 팩토리 메소드와 비슷하지만 조금 다른... 어떻게 보면 팩토리 메서드 패턴을 좀 더 캡슐화한 방식으로 볼 수 있는 디자인 패턴이다. 물론, 추상 팩토리 패턴이 팩토리 메소드 패턴을 개선시킨 디자인 패턴은 아니다. 즉, 상황에 맞게 잘 적용시키면 되는 문제인 것이다. 그렇다면 추상 팩토리는 무엇일까? 그 내용에 대해서 알아보도록 하겠습니다. 정의(Definition)

    Depth First Search Algorithm(DFS, 깊이 우선 탐색)

    Depth First Search Algorithm(DFS) 그래프를 탐색하는 방법중 대표적인 DFS, BFS 중 DFS 알고리즘에 대해서 알아보려고 한다. 알고리즘 문제를 접할때 솔루션으로 많이 접하는 알고리즘이기도 하고 해당 탐색으로 부터 해서 특정 조건이 추가 됨으로써 백트래킹으로 확장(?)되기도 하며 최단거리 혹은 경로를 구하는 문제로 적용(확장) 되기도 합니다. 어찌되었든, 그래프를 탐색하는 방법인 Depth First Search Alogithm에 대해서 알아보도록 하겠습니다. 정의(Definition) 그래프 탐색의 한종류로, 특정노드로부터 시작하여 최대로 진입하 '깊이 우선 탐색' 이름에서 알 수 있는 것처럼, 가능한 그래프상에서 '더 깊이', '더 깊게' 탐색을 진행하는 그래프 탐색 방법..