본문 바로가기

자바

[Java] Java Interface feature 변화의 history - 번역 History of Java interface feature changes 원문 : https://www.vojtechruzicka.com/java-interface-history/ 지나가며 글을 읽다가 빠른 번역(잘못된 번역이 많을 수 있습니다)을 해보았습니다. Original interfaces java 1.0의 interface는 두개의 type만 포함한다. constants와 public abstract methods. Constant fields Inteface는 field를 포함하고, 보통의 class와는 몇가지 차이점이 있다. - Fields는 value가 할당되어야 한다.(Fields must be assigned a value) - Fields는 public static final로 간주..
throw new UnsupportedOperationException() 자동생성되는 메소드에 throw new UnsupportedOperationException()넣기 이클립스에서 제공해주는 코드 템플릿을 이용하여, 인터페이스를 만들고 그 구현체를 퀵픽스를 통해 메소드를 자동생성했을 때 리턴값이 있을 경우 컴파일에러가 일시적으로 나지 않게 해주기 위해서 return null; 이나 return 0; 이나 임시땜빵으로 이런작업을 해주는데 이게 귀찮을 때 throw new UnsupportedOperationException()을 코드 템플릿을 이용하여 넣어주는 방법 이클립스라면 Preference – Java – Code Style – Code Templates 안에 Code/Method Body에 이를 추가해주면 된다. 자꾸 까먹어서, 링크 해 둡니다.
[dW] Diagnosing Java code: Java generics without the pain, Part 1 JavaOne 2008 Wrap-up 세미나 발표자료에 올라온 "More Effective Java" 주제로 양수열님이 2nd Edition으로 출간된 Effective Java의 저자직강으로 JavaOne에서 열렸던 내용을 소개하는 부분으로 Java 5.0에 추가된 Generics, Enum types, Lazy initialization 관련 부분이 나와서 찾아보던 중 Generics에 관한 글로 2003년 글로 dW에 있군요. Part 1, Introduction to generic types and support features (February 2003) Part 2, Extension limitations and implementation strategies (March 2003)Part 3,..
[책] 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기 - 이상민 지음/한빛미디어 이번으로 세번째 Blog2Book 시리즈를 읽었습니다. 이번 책은 자바 초보 프로그래머인 저에게 유용한 정보가 많이 있었습니다. 이 책은 코드 짜긴 짜는데 우선은 급급한 처지에 있는(저같은..) 프로그래머에게 한숨 돌릴 수 있도록(?) 자신의 코드를 점검해 보라는 취지에서 읽기에 좋은 것 같습니다. 엄청!나게 새로운 지식이 있는건 아니지만 아차하고 그냥 넘어갈 수 있을 수 있는 부분이여서 저에겐 ~ +_+ 아직은 튜닝보다는 코딩습관을 어떻게 들여야 할까에 대해 더 관심이 있는 저로서는, 튜닝에 대한 툴소개가 많지않을까~ 생각되었는데 의외로 개발하면 서 자세히 모르고 마냥 코딩을 하다보면 얼마나 서버에게 미안한 일(?)이 많아질 지 ..
[dW] 클래스 로딩 문제 분석하기 클래스 로딩 문제 분석하기에 좋은 글이 있어서 올립니다 원문이 나온지는 좀 되었지만, 한번 읽어보기에 좋은 것 같습니다. 아래 내용은 저혼자 공부하면서 내용을 잠깐 정리해 본 것입니다. Part 4로 이루어져 있기에 정리한 내용보다 더 방대한 내용이 담겨져 있습니다. ^^ 클래스 로딩 문제 분석하기, Part 1: 클래스 로딩과 디버깅 툴 소개 (한글) 클래스 로딩 문제 분석하기, Part 2: 기본적인 클래스 로딩 예외(Exception) (한글) 클래스 로딩 문제 분석하기, Part 3: 특이한 클래스 로딩 문제 해결 (한글) 클래스 로딩 문제 분석하기, Part 4: 교착 상태와 제약 조건 (한글) 원문 시리즈 http://www.ibm.com/developerworks/views/java/libr..
티스토리에서 Syntaxhighlighter를 이용하기 소스코드를 거의 블로그에 많이 넣는 편이 아니라 그다지 많이 필요없었지만, 앞으로 소스코드 하이라이팅을 할 수 있다면 편할 것 같아서 찾다가 태터툴즈는 플러그인을 찾아보니 있던데, 티스토리는 없는것 같더군요. 그러다 겨우 syntaxhighlighter를 tistory에서 사용 하는 방법. 을 찾았습니다! 자세한 설명은 여기 링크를 이용하시면 될것 같습니다.~ 너무 잘 정리해 놓으셔서,, 다양한 언어를 지원해서 좋더군요. 제가 주로 쓰는 Java 문법 하이라이팅을 테스트 해보았습니다. Javascript로 이루어진 소스코드를 받아서 티스토리의 HTML/CSS에 업로드하고 링크만 시키면 되어 너무 편합니다. ^_^ Java public class test { /** * @param args */ publi..
Java 성능개선을 위한 Programming 기법 Performance CheckList . 임시로 사용하기 위해 Object를 생성하는 것을 피하라. 특히 Loop에서.. . 빈번하게 호출되는 메소드에서 Object를 생성하는 것을 피하라. . 가능한 Object를 재사용 하라. . 임시 Object의 생성을 줄이기 위해 데이타 타입 컨버전 메소드를 재정의 하는 방법을 고 려하라. . 메소드 설계 시 데이타를 유지하고 있는 Object를 반환하는 메소드보다 데이타로 채워진 재사용 가능한 Object에 접근하는 메소드를 정의하라. . string이나 Object를 integer 로 대치하라. Object 비교를 위해 equal() 메소드를 호출하지 말고 기본 데이타 타입의 == 연산자를 사용하라. . 인스턴스 변수로 기본 데이타 타입을 사용하라. . 단..
awt와 swing의 차이점 java로 응용프로그램을 만들어본게 손에 꼽을 정도라서 awt와 swing의 확실한 차이점을 몰랐습니다. 오늘 배운내용을 이번기회에 확실히 알고 넘어가기 위해서,, AWT는 Abstract Windows Toolkit의 약자로 '추상 윈도우 개발 도구'라는 뜻으로 운영체제의 자원을 이용하여 control의 외형을 형성합니다. 즉 MS의 윈도우와 유닉스계열에서 GUI가 비슷하게는 나타나지만 같게 보이지는 않습니다. 그래서 'abstract'인거지요. 예로 button component를 생성하면 운영체제마다 그 버튼의 모양과 크기는 조금씩 다르게 나타납니다. 이것이 peer를 통한 component의 생성으로 나타나는 문제입니다. (현재 운영제체의 각 component를 peer component라고 합니..
Refactoring 마틴 파울러의 Refactoring에서 나온 좋은 문구 1. 새로운 기능을 추가해야 하는데 프로그램의 코드가 새로운 기능을 추가하기 쉽도록 구조화 되어 있지 않은 경우에는 먼저 리팩토링을 해서 프로그램에 기능을 추가하기 쉽게 하고, 그 다음에 기능을 추가한다. 2. 리팩토링을 시작하기 전에 견고한 테스트 셋을 가지고 있는지 확인하라. 이 테스트는 자제 검사여야 한다. 3. 리팩토링은 작은 단계로 나누어 프로그램을 변경한다. 실수를 하게 되더라도 쉽게 버그를 찾을 수 있다. 4. 컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다. 5. 리팩토링(Refactoring) 명사 - 소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수..
객체지향 프로그래밍. 한빛미디어의 책 자바 디자인 패턴과 리팩토링 공부를 시작하였습니다. 1장부터 제가 객체지향에 대해 모르고 있었단 생각이 확 들었습니다. 절차지향적인 C와 객체지향적인 Java의 코드를 비교해주니, 쏙! 들어옵니다. 책의 내용 발취. 객체 지향 방식에는 데이터와 함수가 객체안으로 함께 캡슐화된다는 특징이 있다. 데이터는 속성이 되고 그것을 다루는 함수는 메소드가 된다. 속성에 있는 데이터만으로 제대로 작업을 해내지 못하면 필요한 데이터를 메소드의 인자값으로 받는다. 프로그램은 객체로 구성되며 그들의 내부 데이터인 속성은 외부에 직접적으로 노출되지 않는다. 객체들은 서로의 메소드를 호출하며 원하는 기능을 수행한다. 각 객체는 자기가 수행하는 작업에 책임을 지며 다른 객체의 작업을 돕는 서비스를 한다. 객체지..
[java] java.util.Properties 클래스 java.util.Properties 클래스 * 환경설정 정보를 하드코딩하지 않고 외부파일을 이용하여 설정할때 사용한다. InputStream is = ... Properties props = new Properties(); try { props.load(is); } ....이와 같이 사용한다. * 좀더 효율적인 방안 org.apache.commons.configuration.AbstractFileConfiguration.FileChangedReloadingStrategy org.apache.commons.configuration.reloading.FileChangedReloadingStrategy props = new PropertiesConfiguration(CONFIG_NAME); props.set..
Huffman algorithm(호프만 알고리즘) 저는 C/C++에 많은 관심을 가져보지도 않고, 특히나 응용 프로그램은 많이 안해봐서 작년에 압축은 어떻게 되는것일까, 의문이 든적이 있었습니다. 그때 아는분께 여쭈었더니, 가장 빈도수가 높은 기호를 가장 적은 비트로 표현하여 압축을 한다고 대충 들었습니다. 그땐 이 알고리즘인지 몰랐는데, 그 알고리즘이 호프만 알고리즘이었는지 이제 알았습니다. 쉬워보이는듯 하면서 트리로 가니깐 복잡해 보이는 알고리즘. 이번에 자바로 한번 짜볼려고 하는데 C/C++ 자료는 많은데 자바는 없네요.. 저에겐 마냥 어렵네요..ㅎㅎ 자주 사용되는 문자는 짧은 코드를, 자주 사용하지 않는 문자는 긴 코드를 지정 실제 평균 문자 코드 길이를 줄여 압축하는 방법 Making binary codes from probabilities W..