README Item 04 : 객체 생성을 막을 때는 private 생성자를 사용하라 (Enforce noninstantiability with a private constructor) 객체 생성을 막는 것에는 어떤것들이 있을까? java.lang.Math java.util.Arrays java.util.Collections (위 클래스들은 객체를 만들 목적의 클래스가 아니다.) 1. java.lang.Math public final class Math { /** * Don't let anyone instantiate this class. */ private Math() {} public static final double PI = 3.14159265358979323846; public static in..
Transaction_4_Principle 트랜잭션 4가지 특징 ACID ? ㅇㅇ 이번 설날에 대학교 동아리 졸업하신 형들이랑 학교근처에서 술자리를 가졌다. 형들중 한명이 나에게 트랜잭션 4가지 특징을 물었다. 아토믹.... 이라고밖에 답을못했다. DB 수업때 교수님이 은행 거래할때 아토믹해야한다~ 이거밖에 떠오르지 않았다. 보면알거같은데... ㅠㅠ.. 안떠오른다! 그래서 이번에 트랜잭션 ACID 특징을 내 머리 깊숙히 박아놓고자 한다. 트랜잭션 ? 영어 낱말 transaction은 거래를 뜻한다. 예를 들어 돈을 줬는데 물건을 받지 못한다면, 그 거래는 이루어지지 못하고 원상태로 복구되어야 한다. 쪼갤 수 없는 하나의 처리 행위를 원자적 행위라고 한다. 여기서 쪼갤 수 없다는 말의 의미는 실제로 쪼갤 ..
README Item 03 : 싱글톤을 쓸때 property는 private 생성자나 enum타입으로 하라 (Enforce the singleton property with a private constructor or an enum type) 싱글톤 만드는법 using public final field using static Factory using Enum (결론: 1번 쓰지마라) 1. Using public final field public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis(){...} public void leaveTheBuilding(){...} } 문제점 reflection으로 private..
README Item 02 : 생성자 인자가 많을 때는 Builder패턴 적용을 고려하라 (Consider a builder when faced with many constructor parameters) 아래에서 소개될 패턴들 Telescoping constructor pattern JavaBeans Pattern Builder Pattern (결론: Builder Pattern 을 써라.) 1. Telescoping constructor pattern public class NutritionFacts { private final int servingSize; // (mL) required private final int servings; // (per container) required private..
README Item 01 : 생성자 대신 static factory method를 사용할 수 없는지 생각해 보라 (Consider static factory methods instead of constructors) 정적 팩토리 메서드 (static factory method) 장단점 First Adventage 생성자와는 달리, static factory method들은 이름을 붙일 수 있다. (unlike constructors,static factory methods have names.) public class Member { private String memberName; private String memberPhone; //member1 생성자 public Member(String membe..
asd StringBuffer -> StringBuilder buffer -> builder 로 변경하는 코드는 아래와 같습니다. public static void main(String[] args){ //buffer 생성StringBuffer buffer = new StringBuffer(); buffer.append("Add in Buffer"); //builder 생성 StringBuilder builder = new StringBuilder(); builder.append(buffer); //builder 출력 System.out.println(builder.toString());} //결과 : Add in Buffer How ?StringBuffer와 StringBuilder는 클래스가 다른데 ..
대학생활을 하면서 개발 일은 절대 직업으로 삼지않겠다 다짐하고 행복을 찾아 방랑생활을 하며 워킹홀리데이를 생각중이던 나였는데.. 삼성S/W A형 Test를 준비하기 위해 Java로 백준 알고리즘 문제를 풀었다. 삼성전자 들어갈 일이야 없겠지만 이런것도 한번 쳐보고싶었다랄까... 결과는 탈락했다. DFS문제만 좀 풀줄알면 통과하는 테스트인데.. 알고리즘 문제풀다가 재밌어서 문제를 풀다보니 1달간 200문제를 풀게 되었다. 평소에 자기전에 유튜브를 챙겨보는데 우연히 유튜브에서 나프다를 보게되었고, 열정넘치는 많은 개발자들을 볼 수 있었다. 특히 호주에서 프로그래밍 방송하시는 분이 있는데, 그 분의 방송을 보다가 타고 타고해서 한 개발자를 알게되었다. 대기업에 입사하여 지금은 Naver Labs에서 근무하고 ..