반응형

동고 팔자 상팔자 225

System.out.println에 관한 고찰

자바 개발 시, 가장 먼저 배우는게 바로 System.out.println이다.아마 System.out.prinln("Hello World!")를 안써본 사람은 없을 것이다.그럼에도 불구하고 자바 개발 시 지양해야하는 것중 하나가 바로 System.out.prinln이다.이유는 리소스를 많이 사용하여 성능 부하를 초래하기 때문이다. 대신 log4j 등의 유틸리티를 사용하라고 한다. 궁금하지 않은가. System.out.println이 어떤놈인지, 그리고 얼마나 느린지.먼저 System.out.println의 정체를 살펴보자. 구글링도 좋지만 java doc을 먼저 뒤덕거려 보자.허접한 영어 실력으로 System, out, println을 차례로 따라가면서 살펴보면 아래와 같다. System은 Object..

개발 2016.04.03

Cloud9 사용하기 (ci9)

구름IDE에 이어 Cloud9을 써보았다. Cloud9도 구름IDE와 같은 클라우드 IDE라고 보면된다. Cloud9 사용법도 구름IDE와 거의 흡사하니 아래 구름IDE 사용법을 미리 훝어보는 것도 좋다. (안봐도 무관함) 구름IDE 사용하기 우선 회원가입을 한다. (방법은 생략) 로그인을 하면 아래와 같은 화면으로 이동된다. Workspaces 아래 'Create a new workspcae'를 클릭한다. 아래와 같은 화면으로 이동된다. 워크스페이스 이름, 설명 입력 및 공개여부를 선택한다. 템플릿은 원하는 것으로 선택해도 된다. 하지만 여기서는 Node.js를 예시로 할것이니 Node.js를 선택한다. 마지막으로 'Create workspace'를 클릭한다. 워크 스페이스를 만들면 아래와 같은 개발화..

개발 2016.04.01

자바 for문을 이용하여 Map, Hash 값 꺼내기

자바 for문을 이용하여 Map, Hash 값 꺼내기자주 사용하지는 않고 알고리즘 문제풀거나 디버깅할때 사용함 Map Map을 꺼내는 방법은 아래 3가지 방법이 가장 보편적이다.개인적으로는 1번 방법이 가장 간단하고 직관적인것 같아서 이것만 쓰고있음1234567891011121314151617181920212223Map map = new HashMap();map.put("a", "aaa");map.put("b", "bbb");map.put("c", "ccc"); // 방법1)for ( String key : map.keySet() ) { System.out.println("방법1) key : " + key +" / value : " + map.get(key));}System.out.println("===..

개발 2016.03.28

Git reset 명령어

reset은 사용자의 저장소와 작업 디렉토리를 특정 시점 상태로 변경한다. 메카니즘을 들여다보면 HEAD 참조를 지정된 commit 시점으로 변경한 후, 인덱스를 변경하여 해당 commit을 반영한다. 옵션에 따라 HEAD, 인덱스 뿐만아니라 작업 디렉토리 내의 모든 파일이 변경될 수 있기때문에 반드시 주의하여 사용하여야 한다. 주요 옵션 --soft git reset --soft [commit id] --soft 옵션은 지정된 commit을 가리키도록 HEAD 참조를 변경한다. 인덱스와 작업 디렉토리의 내용은 그대로 유지된다. 이 옵션은 새 커밋을 가리키도록 심볼릭 참조의 상태만을 변경한다. --mixed git reset --mixed [commit id] --mixed 옵션은 지정된 commit을 ..

개발 2016.03.28

자바 배열 출력

디버그 시 용이한 자바 배열 출력 방법(출처 : https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html) 단일 배열 Arrays 클래스의 toString 사용.(정확히 말하자만 Object 클래스의 toString이다.) 단일 배열만 가능12345int[] intArray1 = {1,2,3};int[][] intArray2 = {{1,1,1}, {2,2,2}, {3,3}}; System.out.println("1차원 배열 : " + Arrays.toString(intArray1));System.out.println("2차원 배열 : " + Arrays.toString(intArray2));cs 결과121차원 배열 : [1, 2, 3]2차원 배열 ..

개발 2016.03.27

자바 10진수 <-> 2진수, 8진수, 16진수 변환

자바 2진수, 8진수, 16진수 변환 시에는 Integer 클래스 API를 활용하면 편하다.(참고 : https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html) 10진수 -> 2진수, 8진수, 16진수 변환12345678int num = 77;String a2 = Integer.toBinaryString(num); // 10진수 -> 2진수String a8= Integer.toOctalString(num); // 10진수 -> 8진수String a16 = Integer.toHexString(num); // 10진수 -> 16진수 System.out.println("2 진수 : " + a2);System.out.println("8 진수 : " + ..

개발 2016.03.26

구름IDE 사용하기

집에서 공부용으로 쓸 클라우드IDE를 알아보다가 발견한 구름IDE Nitrous를 쓰려고했지만 회원가입 마지막 시점에 무료 계정이라도 맨처음에 신용카드 등록을 해야(?)하는것 같아서 포기 먼저 구름IDE를 사용하려면 회원가입은 당연히 필수 주소는 http://www.goorm.io 나는 구글 계정으로 사용했다. 로그인후에 '나의 구름으로 이동하기'를 누르면 아래와 같은 페이지로 이동한다. '새 컨테이너 생성 버튼'을 눌러서 컨테이너를 생성한다. 난 일단 가볍게 테스트만 해볼꺼니까 node.js 스택을 선택했다. 컨테이너를 생성하고 시작버튼을 누르면 아래와 같이 VM에 연결되면서 웹IDE모드로 들어간다. VM에 연결완료. UI가 이클립스랑 거의 똑같이 생겨서 친근하다. 아래를 보면 터미널까지 제공해준다. ..

개발 2016.03.26

자바 Arrays 클래스

Arrays 클래스에 배열에 관련된 유용한 함수들이 많다.아래는 가장 자주 쓰이는 유용한 API들이다.(※ 출처 : https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html) sort배열을 오름차순으로 정렬예)1234567String[] strArray = {"a", "c", "b"};Arrays.sort(strArray);System.out.println(Arrays.toString(strArray)); int[] intArray = {1,3,2};Arrays.sort(intArray);System.out.println(Arrays.toString(intArray)); 결과12[a, b, c][1, 2, 3] equals두개의 배열이 같은지 비교..

개발 2016.03.22

자바 배열 <-> 리스트 변환

1. 배열 -> 리스트 변환 배열 -> 리스트 변환 방법에는 크게 두가지 방법이 있다. 편한걸로 쓰면된다. 1) Arrays 유틸을 이용한 방법1234String[] strArray = {"a", "b", "c"};ArrayList strList = new ArrayList(Arrays.asList(strArray)); System.out.println(strList);Ccs결과 [a, b, c] 2) Coolections 유틸을 이용한 방법12345String[] strArray = {"a", "b", "c"};List strList = new ArrayList();Collections.addAll(strList, strArray); System.out.println(strList); 결과 [a, b,..

개발 2016.03.22

Git ~ 및 ^ (상대적 커밋 이름)

Git에서는 특정 참조(일반적으로 브랜치의 HEAD)를 기준으로 상대적인 위치에 있는 커밋을 식별하는 매커니즘이 있다. ~ (물결기호. 틸트) 상위 차수를 선택할 때 사용된다. ^ (삽입기호. 캐럿) 동일 차수 내에서 각기 다른 상위 커밋을 선택할 때 사용된다. show-branch 명령어를 사용하면 ~,^으로 표기된 브랜치 추적정보를 조회할 수 있다.자신의 브랜치 정보를 토대로 확인해보면 좀더 이해가 가기 쉬울것이다. 1 2 3 4 5 6 7 8 9 $ git show-branch --more=10 [master] Donggo Hate A Poop update [master^] Merge branch 'donggoHateAPoop' [master^^2] Lecture 5th [master~2] Upda..

개발 2016.03.17

Git diff 명령어

diff 명령어는 두 항목간의 차이를 비교할때 사용된다. 사용법git diff [options] [] [--] [ ...]git diff [options] --cached [] [--] [ ...]git diff [options] [--] [ ...]git diff [options] git diff [options] [--no-index] [--] 유용한 옵션--stat두 개의 트리 상태간의 차이점을 변경된 줄수, 추가된 항목 수 및 삭제된 항목 수를 간략하게 보여준다. 예git diff // 작업 디렉토리와 인덱스 비교git diff HEAD // 작업 디렉토리와 HEAD 비교git diff --cached // 인덱스와 HEAD 비교git diff --stat master // master 브랜치와의..

개발 2016.03.17

Git blame 명령어

blame 명령어는 특정 커밋을 식별할때 사용한다.소스의 각 줄을 마지막으로 수정한 사람이 누구인지 그리고 어떤 커밋에서 변경사항이 적용되었는지 알려준다.많이 사용하는 기능은 아니지만 해당 소스가 어느 시점에 누가 왜 적용했는지 추척할때 유용하게 사용할 수 있다. 사용법git blame [] [] [] [--] 예git blame HEAD ./README.md -> README.md의 마지막 수정 정보 조회1234567891011donggov@KPS MINGW64 /e/11_Project/git/DonggoGame (master)$ git blame HEAD ./README.md^16edc31 (donggov 2015-12-20 16:29:48 +0900 1) Donggo Game Project^16ed..

개발 2016.03.14

Git 객체 유형 및 구조

Git의 객체 저장소에는 blob, tree, commit, tag 객체가 존재하며 이 객체들이 Git의 상위 레벨 데이터 구조의 기초가 된다. blob 파일의 내용을 저장한다. tree . 한 레벨의 디렉토리 정보를 나타냄 . 한 디렉토리에 있는 모든 파일에 대한 blob ID, 메타데이터 등을 저장한다. . 커밋이 실행된 당시의 저장소 상태를 하나의 완전한 스냅샷으로 캡처한 내용이 담겨있다. commit . 변경 사항에 대한 메다데이터(tree, parent, author, committer 등)를 가지고 있다. . 각 커밋은 tree 객체를 가리킨다. tag . 사람이 읽기 힘든 해쉬값에 별칭을 붙인 것 다음은 Git Object Model 그림이다. git bash에서 아래 명령어를 통해 구조를 ..

개발 2016.03.14

Git 참조(ref)와 심볼릭 참조(symref)

참조 (ref) . Git 객체 저장소 내에 있는 객체를 참조하는 해시ID . 모든 Git 객체를 참조할 수 있다. . 브랜치, 태그 등도 모두 참조의 일종이다. 심볼릭 참조 (symref) . 간접적으로 Git 객체를 가리키는 이름. 심볼릭 참조도 참조의 일종이다. . Git에는 특별한 목적을 위한 아래와 같은 특수 심볼릭 참조들이 있다. 1) HEAD : 가장 최신 커밋을 참조한다. 2) ORIG_HEAD : pull, merge와 같은 특정 작업 수행전에 이전 버전의 HEAD를 ORIG_HEAD에 기록한다. 3) FETCH_HEAD : 'git fetch' 명령 수행시, 항상 마지막으로 가져온 브랜치의 헤드를 FETCH_HEAD에 저장한다. 단, 작업 직후에만 유효함. 4) MERGE_HEAD : ..

개발 2016.03.14
반응형