보호되어 있는 글입니다.
문자열 인코딩(Character Encoding)이란 2진법을 사용하는 컴퓨터가 인간의 언어를 일정한 규칙에 따라 2진수로 변환하는 방식을 뜻한다. - 2진수와 문자를 일대일 대응하도록 만들어 처리하는 방식을 사용한다 - 아스키코드, EUC-KR, UTF-8, UTF-16 등... 문자 집합(Charset)은 사용할 수 있는 문자들의 집합을 뜻한다 - 유니코드, ISO-8859, ASCII 등이 이에 해당. 문자열 인코딩은 문자를 코드로 표현하는 방식을 일컫는다. 유니코드 문자 집합을 표현하는 문자열 인코딩 방식으로 UTF-8, UTF-16 등이 있는 것. 대체로 문자 집합과 문자열 인코딩은 혼용해서 사용되어진다. # ASCII - 처음으로 표준을 정립한 문자열 인코딩 방식 - 0부터 127까지 총 12..
* 난 배민 커넥트 그만뒀기 때문에 쓸데없는 광고나 추천인 코드따위는 없다 # 현실적으로 얼마 버나? 가장 중요하고 궁금한 질문이라는 것을 알기에 가장 먼저 적어본다. 콜이 얼마나 많으냐에 따라 갈리는데, 콜이 적을 때와 많을 때를 평균내서 보통 1시간에 1만원 정도 번다고 생각하면 된다. (기본 콜이 2900원인데 "쉬는시간 없이" 계속하면 한시간에 3~4콜 정도 뺀다) 또한 도보 운행은 700m? 800m 이내 초단거리만 잡아주기 때문에 한 건 하는데 크게 오래 걸리지 않는다. (보통 20분 이내) - 그러다 간혹 100m 이내 개꿀콜이 잡히는 경우가 있는데 이런 꿀콜이 잡히는 날은 정말 기분이 좋다 :D - 콜이 얼마나 잘 잡히냐 + 꿀콜이냐 똥콜이냐에 따라서 시급이 좌지우지되긴 하는 면이 있긴 하..
자바 언어는 JVM(Java Virtual Machine)을 사용해 플랫폼에 독립적인 개발을 가능하게끔 해준다 (Write Once, Run Anywhere) JVM - JRE(Java Runtime Enviroment) - JDK(Java Development Kit) 순서로 포함되어 있는 구조를 갖게된다. JVM이 그만큼 핵심이라는것. 그럼 자바 코드는 어떤 식으로 실행되는 것일까? # 바이트 코드란? - 고급 언어로 작성된 코드를 JVM이 이해할 수 있는 언어로 변환된 코드 - 명령어 크기가 1바이트라서 바이트 코드라고 불린다. # 왜 바이트 코드가 필요할까? 고급 언어에서 기계어로 바로 바꾸면 안될까? -> 바이트코드는 가상머신(JVM)에서 돌아가는 프로그램을 위한 언어 표기법이다. -> 같은 p..
* 이펙티브 자바 2/E를 읽고 공부하기 위해 기록한 게시글입니다. 45. 지역변수의 유효범위를 최소화하라 * 메서드의 크기를 줄이고 특정한 기능에 집중하라. - 두 가지 서로 다른 기능을 한 메서드 안에 넣어두면 한 가지 기능을 수행하는데 필요한 지역 변수의 유효범위가 다른 기능까지 확장되는 문제가 발생한다. 이러한 문제를 막기 위해서는 각 기능을 나눠 별도 메서드로 구현하라.(SRP) * 지역변수의 유효범위를 최소화하는 가장 강력한 기법은, 처음으로 사용하는 곳에서 선언하는 것이다. - 사용하기 전에 선언하는 것은 코드를 읽는 사람만 혼란스럽게 만든다. - 지역변수를 너무 빨리 선언하면 유효범위가 너무 앞뒷쪽으로 확장되게 된다. 지역변수의 유효범위는 선언된 지점으로부터 해당 블록 끝까지다. 어떤 블록..
* 이펙티브 자바 2/E를 읽고 공부하기 위해 기록한 게시글입니다. 43. null보다는 빈 배열이나 컬렉션을 반환하라 빈 배열이나 컬렉션을 반환하는 대신 null을 반환하는 메서드를 사용하게 되면 오류가 발생하기 쉽다. - 클라이언트가 null 처리 과정을 빼먹을 수도 있기 때문. - null을 반환하는 메서드는 상대적으로 구현하기도 더 까다롭다. 배열 할당 비용을 피할 수 있으니 null을 반환하는 것이 좋다는 주장은 틀린 부분이 있다 1. 성능 걱정을 할 정도의 수준이 아니다. 2. 길이가 0인 배열은 변경이 불가능하므로 아무 제약없이 재사용할 수 있다. 그리고 책이 오래되서 그런건지 모르겠는데 개인적으로는 이런 경우에 Optional을 쓰는것이 좋지 않나? 생각이 들기도 한다. Optional에 ..
* 이펙티브 자바 2/E를 읽고 공부하기 위해 기록한 게시글입니다. 41. 오버로딩 할 때는 주의하라 메서드가 오버로딩(Overloading)되면 어떤 메서드가 호출될 지는 컴파일 시점에 정적으로 결정된다. 반면 오버라이딩(Overriding)된 메서드는 런타임 중에 동적으로 결정된다. 오버로딩은 메서드 이름은 동일하되 그 이외의 메서드 시그니처(리턴타입이나 파라미터 정보)를 달리 설정하는 것 - 컴파일 시점에 어느 메서드를 실행할 지 선택한다. - 리턴값만 다른 오버로딩 메서드는 만들 수 없다 public class EffectiveJava { public static String classify(LinkedList list) { return "LinkedList"; } public static Str..
* 이펙티브 자바 2/E를 읽고 공부하기 위해 기록한 게시글입니다. 40. 메서드 시그니처는 신중하게 설계하라 1. 메서드 이름을 신중하게 골라라 - 네이밍 컨벤션을 따르는 것이 제일 베스트. - 이해하기 쉬우면서도 같은 패키지 안의 다른 이름들과 일관성이 유지되는 이름을 고르자 - 널리 합의된 사항에도 부합하는 이름을 고를 것. 2. 편의 메서드를 제공하는데 너무 열올리지 마라 - 모든 메서드는 맡은 일이 명확하고, 또 그것에 충실해야 한다. - 클래스에 메서드가 너무 많으면 학습, 사용, 테스트, 유지보수 등 모든 측면이 어려워진다. 특히 인터페이스의 경우는 메서드가 많으면 더 심각하다. - 클래스나 인터페이스가 수행해야 하는 동작 각각에 대해서 기능적으로 완전한 메서드를 제공하라. 3. 인자 리스트..