공부방
[이것이자바다] 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) 그래프 탐색의 한종류로, 특정노드로부터 시작하여 최대로 진입하 '깊이 우선 탐색' 이름에서 알 수 있는 것처럼, 가능한 그래프상에서 '더 깊이', '더 깊게' 탐색을 진행하는 그래프 탐색 방법..
JAVA::JVM에 대한 이해
이 글은 '백기선의 더 자바, 코드를 조작하는 다양한 방법' 강좌를 듣고 해당 내용을 공부하며 정리한 글입니다. JVM에 대한 이해 자바를 사용할 때 사용하게 되는 JVM, JRE, JDK 그리고 자바에 대해서 알아보려고 한다. JVM이란? Java Virtual Machine의 약자. 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것으로 JAVA와 OS사이에서 중개자 역할을 수행하여 JAVA가 OS의 영향을 받지 않고 재사용할 수 있게 해준다. 자바, JVM, JRE, JDK JVM(Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드(.class파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행 바이트 코드를 실행하는 표준..
Longest Common Sub-sequence Algorithm(LCS, 최장 공통 부분수열)
Longest Common Sub-sequence Algorithm(LCS) LIS알고리즘을 정리하다가 비슷한류의 알고리즘으로 보여 함께 이어서 정리하려고 한다. 이문제 또한 아마 DP를 이용한 문제가 될것으로 생각된다. 다만 문자로 이루어진 수열이기에 LIS에서 사용했던 이분탐색은 불가능해보인다. 그리고 해당 문제에서도 길이 뿐만이 아닌 해당 부분수열을 구하는 방법도 알아보도록 하겠다. 정의(Definition) 최장 공통 부분수열으로 두 문자열의 가장 긴 공통된 부분문자열을 구하는 문제 Longest Common Sub-sequence 불린다. 여기서 string이 아닌 sequence는 사용하는 이유는 각 단어가 갖는 개념적 의미가 다르기 때문이다. string : 연속된 문자열 sequence :..
Longest Increasing Sub-sequence Algorithm(LIS, 최장 증가 부분 수열 알고리즘)
Longest Increasing Sub-sequence Algorithm(LIS) 동적계획법(DP)문제를 풀다가 우연찮게 해당 알고리즘의 문제를 풀게되면서 이전 기억을 살려 다시한번 정리를 해보려고 한다. 해당 문제는 최장길이만 구하다 보니 동적계획법을 이용해서 해결이 되었지만, 더 다양한 문제를 해결하기 위해 그리고 LIS알고리즘을 더 잘 이해하기 위해 해당 페이지에 정리를 하려고 합니다. 정의(Definition) 주어진 수열에서 오름차순으로 정렬된 가장 긴 부분수열을 찾는 알고리즘 부분 수열은 연속적이거나 유일한 필요가 없다. 최장길이를 구하거나, 해당 부분수열을 구할 수 있다. 여러 시간복잡도로 문제를 해결할 수 있다. 부분수열이란? 주어진 수열에서 특정 원소들을 선택해서 만들어진 수열을 그 수..