전체 글

초보 개발자의 지식 공유의 장
private 생성자나 enum 자료형은 싱글턴 패턴을 따르도록 설계하라 싱글턴은 객체를 하나만 만들 수 있는 클래스이다. JDK1.5 이전에서 싱글턴을 구현하는 방법은 2가지가 존재한다. 하나는 생성자는 private로 선언하고, 싱글턴 객체는 정적(static) 멤버를 통해 이용하는 방법 public class corn{ public static final Corn INSTANCE = new Corn(); private Corn() {... } public void run() { ... } }​ 두번 째는 public으로 선언된 정적 팩터리 메서드를 이용하는 방법이다. public class Corn{ private static final Corn INSTANCE = new Corn(); privat..
생성자 대신 정적 팩터리 메서드를 사용할 수 없는지 생각해 보라 클래스를 통해 객체를 만드는 일반 적인 방법은 public으로 선언된 생성자(constructor)를 이용하는 것이나, 한가지 방법이 더 존재한다. 클래스에 public으로 선언된 정적 팩터리 메서드(static factory method)를 추가하는 것이다. 아래의 예는 기본타입 boolean 값을 Boolean 객체에 대한 참조(reference)로 변환하는 것이다. public static Boolean valueOf(boolea b){ return b ? Boolean.TRUE : Boolean.False; } public으로 선언된 생성자 대신 정적 팩터리 메서드를 제공하는 방법의 장단점은 다음과 같다 장점 생성자와 달리 정적 팩터..
Can I ask you ~ 패턴 Can I ask you one more question?- 한 가지만 더 물어봐도 될까요?Can I ask you something off topic?- 좀 뜬금없는 거 물어봐도 돼?Can I ask you guys something personal?- 여러분한테 사적인 질문 하나 해도 될까요?Can I ask you to do me a favor?- 부탁 좀 해도 될까요?Can I ask you some more question?- 질문 더 해도 돼요? * off topic : 주제에서 벗어난* personal : 개인적인 bonus)I've been waiting to get a cat, but the cat that I like doesn't like me.난 고..
Sine when- 언제부터Since when do you make breakfast?- 네가 언제부터 아침을 만들었대?Since when do you play tennis?- 너가 언제부터 테니스를 했어?Since when did you do yoga?- 너가 언제부터 요가를 했어?Since when do you drive Uber?- 너 언제부터 우버 운전했는데?
객체화된 기본 자료형 대신 기본 자료형을 이용하라 자바의 자료형 시스템은 두 부분으로 나뉜다. 하나는 int, double, boolean 등의 기본 자료형(primitive type) 다른 하나는 String, List 등의 참조 자료형(reference type) 이다. 모든 기본 자료형에는 대응 되는 참조 자료형이 있는데, 이를 객체화된 기본 자료형(boxed primitive type)이라 부른다. (Integer, Double .. ) ※릴리스 1.5부터 자동 객체화(autoboxing)과 자동 비객체화(auto-unboxing)이 언어의 일부가 됨 기본 자료형과 객체화된 자료형 사이에는 세 가지 큰 차이점이 있다. 첫번째, 기본 자료형은 값만 가지지만 객체화된 기본 자료형은 값 외에도 신원(i..
정확한 답이 필요하다면 float와 double은 피하라 flat와 double 형은 기본적으로 과학 또는 엔지니어링 관련 계산에 쓰일 목적으로 설계된 자료형이다. 이 자료형들은 이진 부동 소수점 연산을 수행하는데, 이것은 넓은 범위의 값에 대해 정확도가 높은 근사치를 제공하지만 정확한(exact) 결과를 제공하지 않기 때문에 정확한 결과가 필요한 곳에서는 사용하면 안된다 (특히 돈과 관계된 계산) float이나 double로는 0.1 을 비롯한 10의 음의 거듭제곱 수(10^-1, 10^-2 등등)을 정확하게 나타낼 수 없기 때문이다. public static void main(String[] args){ System.out.println(1.03-0.42); System.out.println(1.00..
Cake 2일차I could use 패턴=> 사용 할수 있다 (x)가 아니라 I need, I want와 의미가 같은 표현임. I could use a vacation. - 휴가 좀 갔으면 좋겠다.I could use a cup of coffee. - 커피 좀 마시면 좋겠다.I could use a nap. - 낮잠 잤으면 좋겠다.You could use a shower - 너 샤워좀 해야겠다.Yon know what, I could use a drink, may be.- 있지, 나 뭐 좀 마시면 좋겠는데.Hey Gina, I couls use your help here.- Gina, 좀 도와주실 수 있나요?I could use a man of your telents.- 너 같이 재능 있는 사람이 필요해..
Cake 1일차,It is raining cats and dogs.- 비가 미친 듯이 내린다. It's been raining off and on.- 비가 안오다 오다 하고 있어요. It's a gloomy day.- 우중충한 날이에요. It's been raining all night.- 밤새 비가 왔어요. It's humid- 습해요. It's about to rain- 비가 오려고 해요. bonus) Are you mad at me ?- 너 나한테 화났니?
Map 인터페이스 구현 MyHashMaphashing을 이용한 MyBetterMap은 여전히 성장차수는 선형이었다. (MyBetterMap 포스팅) n개의 엔트리와 k개의 하위 맵이 있다면 하위 맵의 크기는 평균 n/k가 되고, 여전히 n에 비례하게 된다.하지만, n과 함께 k를 늘려간다면 n/k의 크기를 제한할 수 있다. 하위 맵당 엔트리의 개수가 일정하면 단일 하위 맵은 상수시간으로 검색이 가능(해시 함수를 계산하는 것 => 상수시간)MyHashMap 클래스는 MyBetterMap 클래스를 확장하므로 MyBetterMap에 정의된 메서드를 상속한다. 123456789101112131415161718192021222324252627282930public class MyHashMap extends MyB..
해싱의 동작방식해시함수의 근본적인 요구사항은 같은 객체는 매번 같은 코드를 만들어야된다는 것이다. 불변객체(immutable object)일 때는 상대적으로 쉽지만, 가변 객체(mutable object)일 때는 고민이 필요하다. 불변객체(immutable object)의 예객체를 생성할 때 항상 생각해야하는게 equals, hashcode 의 오버라이드 이다.두 메서드는 일치해야 하는데, equals 메서드가 true 이면 해시코드 또한 같아야 한다. 하지만 이 요구사항은 단방향 이기 때문에 두 객체의 해시 코드가 같더라도 그들이 같은 객체일 필요는 없다.String 객체를 캡슐화하는 SillyString 클래스를 정의12345678910111213141516171819202122232425public..
깡냉쓰
평범한 개발자 노트