String equals() 메소드를 사용하면서 늘 variable.equals("string value"); 형태로 사용해왔다. 그러던 중 다른 사람의 모듈을 수정해야할 일이 생겨 로직을 분석하던 중 JSON 특정 필드의 빈값 체크를 하는 코드에서 "".equals(variable) 형태를 자주 사용하는 것을 보게되었고 그 둘의 차이가 궁금해졌다. 후자의 경우 NullPointerException 위험을 배제할 수 있다고 머릿속에 좀 두루뭉실하게 알고 있어서 여기 저기 찾아보다가 이해가 한방에 되는 Stackoverflow 형님의 글을 발견하게 되었다. 나와 같은 문제를 앓고 있던 개발자였나보다 Java : “xx”.equals(variable) better than variable.equals(“xx..
Eclipse 에서 SVN 내 작업할 프로젝트를 Check out 받았는데 Check out as 를 통해 Project 환경을 지정하지 않고 그냥 했더니 General Project 가 되어 Java build가 되지 않았다. 해결책을 찾아서 펌. Problem: Migrate a Eclipse general project to a Eclipse Java projectYou have a Eclipse project, which contains Java code – but you didn’t set it up as a Java project when you created or checked out this project. So since Eclipse doesn’t allow you to change t..
Template Method Pattern : 상위 클래스에서 처리의 흐름을 제어하고, 하위 클래스에서 처리 내용을 구체화하는 기법 - 여러 클래스에 공통 적용되는 사항은 상위 추상 클래스에서 구현하고, 각각의 상세부분은 하위 클래스에서 구현한다.- 코드의 중복을 줄이고 리팩토링에 유리한 패턴으로, 상속을 통한 확장 개발 방법으로써 Strategy Pattern(전략 패턴)과 함께 가장 많이 사용되는 패턴 중 하나이다.
개발시 발생한 문제를 개인적으로 다시 반복하지 않기 위해 정리함. 매번 HTTP 요청을 통해 받는 JSON String 을 Jackson 의 ObjectMapper 를 통해 Map 의 Key-Value 형태로 변환하여 사용하였다. 그러다 Object Mapping을 좀 더 자동화하고 필드를 Getter 형태로 편리하게 사용할 수 없을까 고민하다가 사용하게 된 것이JSON Serialization, Deserialization 이다. 가뜩이나 영어 실력도 부족해서 영문서 번역이 오래걸리는데, 일정까지 촉박하여 마음이 급했다. 그래서 여기저기 다른 블로그나 문서들을 참조하여 이렇게 해보고 저렇게 해보고 대충 끼워맞추기식으로 코딩을 하다보니 다음과 같은 오류가 발생했다. 123456789101112131415..
최근 GITHUB 의 편리함을 느껴 사용중인데 아직 깊게 파고들지 않아서 GIT 의 개념도 잘 모르고 GITHUB 사용법도 익숙치 않지만 하나하나 차근차근 배워나가고 있다. 그러던 중 이클립스에서 작업한 프로젝트를 Github repository 로 관리하고 싶어 연동하게 되었는데 잊지않기 위해 그 방법에 대해 작성해둔다. -환경-OS : Windows 8.1ECLIPSE : MARS.1 Github repository 는 아래의 설정으로 사전에 미리 생성해두었다. https://github.com/hadbetter/Eclipse-Github-test 1. 일단 업로드를 할 프로젝트를 생성한다. 자바 개발을 주로 하고 있으므로 일반 자바프로젝트를 대충 생성하였다. 2. 우측 상단의 Git Perspect..
Java Blocking Queue 관련 공부 중에 Producer-Consumer Problem(생산자-소비자 문제) 에 대해서 리마인드 해보고자 찾다가 다른 재미난 문제들을 함께 찾게되었다. 대학교를 졸업한지 그리 오래되지 않았지만 공부를 잘 하지않아 잊혀졌던 개념도 있고, 처음들어본 문제도 있어 흥미로웠지만 역시 케케묵은 문제라고 표현하고 있듯, 고전적인 냄새가 많이 난다. 시간이 난다면 꼭 OS 개념에 대해서 한번 더 훑어봐야겠다. 케케묵은 문제들오래된 문제들이지만 현재 우리가 사용하는 컴퓨터의 기반 알고리즘을 설계하는데 결정적인 역할을 했던 문제들이다. 병렬 처리와 관련된 문제들로서 이를 제대로 파악하지 않으면 자신이 만든 코드가 왜 문제를 발생시키는지 알기 어렵다.Producer-Consume..
특정 프로세스에 대해 CPU 및 Memory 사용률을 확인하기 위해 top, sar, jstat 등의 명령을 자주 사용하게 되는데 그 중 파라미터도 길고 잘 안익혀지는 jstat 에 대하여깔끔하게 정리된 글이 있어 남겨본다. 1. jstat 수행 방법 - 우선 모니터링 하고자 하는 프로세스의 ID 를 확인합니다. 확인하는 방법은 ps -ef | grep java 로 확인을 해도 되고, 프롬프트 상태에서 jps 라고 입력한 뒤 엔터를 치면 해당 JVM에서 수행된 프로세스의 ID를 보여줍니다. (jps 사용시에는 PATH에 해당 JDK가 설정되어 있어야 합니다. - 두번째로 jstat 명령을 수행 합니다. jstat -gcutil -h20 -t 7251 3000 3000 -> gcutil : gcutil 에..
개요리눅스 Background 실행스크립트 백그라운드 실행SSH 접속 끊겨도 스크립트 계속 실행하기일반적으로 SSH 접속이 중단되면 그 세션에서 Foreground로 실행중인 스크립트도 중단된다.중단되지 않게 하려면 백그라운드로 실행하면 된다.테스트용 bash 코드/root/script/test.sh 파일의 내용#!/bin/bash rm -f /root/test.log for i in {1..100} do NOW=`date +%Y-%m-%d\ %H:%M:%S` echo "[$NOW] i = $i" >> /root/test.log sleep 2 done echo done... → 2초마다 /root/test.log에 기록을 남기는 스크립트Foreground 실행 (중단됨)[root@zetawiki ~]# ..
[프로그래밍 / Java] - Directory 만들기 /* File 클래스 객체 생성 : 디렉토리 경로, 디렉토리 이름 지정*/File directory = new File("./", "directory_name"); /* 존재 여부 검사 */if( ! directory.exists() ) {directory.mkdir(); //디렉토리 생성} log4j 를 통해 Log를 담기는데 디렉토리를 생성하는 방법을 알지 못해서 이것저것 해보다가 그냥 File 클래스를 통해서 디렉토리를 생성함.단 몇줄이면 끝날 것을 DirectoryManager니 뭐시기니.. 삽질만 한듯...
[대학의 정석] - 과제 + 팀플 기한이 길어도 소용없는 이유 대학시절 웃긴대학 커뮤니티 사이트에서 보고 박장대소 터트린 테이블ㅋㅋ 팀과제는 친한 친구들이랑 같은 팀을 한 경우가 대부분이었고 모르는 사람들과 한팀이 된 적도 있지만 그때도 다들 열심히 해주었던 팀원들이라 팀플에 대한건 덜 공감하지만 과제제출은 대부분 저랬던 것 같네요 ㅋㅋㅋ 과제언제 하지 부분에서 중간쯤은 대부분 잊고있다가 제출 d-4 정도 쯤에 다시 떠오르지만 다시 아 귀찮다 어떻게 해야되는거지 하면서 친구들한테 연락도 해보고 토의도 해보다가 결국 전날 밤샘ㅋㅋㅋ 그리운 그 시절..
- Total
- Today
- Yesterday
- github
- jstat
- json
- directory
- NullPointerException
- gcutil
- migrate
- 페북
- 페이스북
- 생산자
- 대학의 정석
- 기한
- shapeshifter
- 붙여넣기
- "
- equals
- Jackson
- variable
- 당신 없는 회사에 가고 싶다
- 클립보드
- 디렉토리
- 백그라운드
- Eclipse
- Template Method
- 템플릿 메소드
- 멀티프로세싱
- serialization
- 팀플
- commit
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |