일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 알고리즘
- C++
- Android P
- FLUTTER
- Rxjava2
- Django REST framework
- android architecture component
- UWP
- livedata
- Android
- Kotlin
- flutter firestore
- Java
- 코틀린
- Django REST Android
- 안드로이드 구글맵
- 안드로이드
- kodility
- C
- mfc
- dart
- Flutter TextField
- NDK
- Django REST
- RxAndroid
- C/C++
- android push
- RxJava
- Python
- Today
- Total
목록2018/09 (25)
개발하는 두더지
[Effective Java 규칙23] 새 코드에는 무인자 제네릭 자료형을 사용하지 마라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다.
[Effective Java 규칙22] 멤버 클래스는 가능하면 static 으로 선언하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 중첩 클래스에는 4가지 종류가 있다. 정적 멤버 클래스 ( static member class), 비 정적 멤버 클래스 ( nonstatic member class), 익명 클래스(anonymous class), 지역 클래스(inner class) 바깥 클래스 객체에 접근할 필요가 없는 멤버 클래스를 정의할 때는 항상 static을 사용해서 정적 멤버 클래스로 만들어야 한다. 만약 비 정적 멤버 클래스로 만든다면 객체는 내부적으로 바깥 클래스에 대한 참조를 유지하므로 시간과 공간 요구량이 늘어나고 GC 수집이 힘들어..
[Effective Java 규칙21] 전략을 표현하고 싶을 때는 함수 객체를 사용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 함수 포인터(function pointer), 대리자(delegate), 람다 표현식(lambda expression)은 파라미터 값으로 메서드를 전달하여 실행할 수 있다.자바는 함수 포인터를 지원하지 않지만 비슷한 효과를 낼수있다. String[] fruits = {"pineapple", "banana", "apple"}; Arrays.sort(fruits, (c1, c2) -> { return c1.length() - c2.length(); }); System.out.println(Arrays.toString(fr..
[Effective Java 규칙20] 태그 기반 클래스 대신 클래스 상속을 활용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 첫번째 태그 기반 클래스란 무엇일까?간단하다. 원을 표현할 수도 사각형을 표현할 수도 있는 모양의 넓이를 구하는 클래스가 있다고 생각해보자태그 기반 클래스는 아래의 코드와 같다. public class Figure { enum Shape { RECTANGLE, CIRCLE }; final Shape shape; double length; double width; double radius; Figure(double radius) { shape = Shape.CIRCLE; this.radius = radius; } Figu..
[Effective Java 규칙19] 인터페이스는 자료형을 정의할 때만 사용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 인터페이스를 구현해 클래스를 만든다는 건, 해당 클래스의 객체로 어떤 일을 할 수 있는지 클라이언트에게 알리는 것이다.이진호환성이란 "클래스를 변경할 때, 그 클래스를 사용하는 클래스들에서 리컴파일 할 필요가 없어야된다" 라는 말이다. 자바에서 이진호환성이란 무엇인가?자바에서 이진호환성 예시 상수 인터페이스 패턴은 인터페이스를 잘못 사용한 패턴이다.public interface Constants { static final double AVOGADROS_NUMBER = 6.02214199e23; static final dou..
안드로이드 디바이스에서 백그라운드로 진입했을 때 작업을 수행하려면 서비스를 사용해야합니다.하지만 서비스를 사용할때 고려해야될 사항들이 있습니다. 1. 서비스는 프로세스가 계속 실행되고 있으므로 배터리 소모가 상당합니다.2. 마시멜로우 버전부터 잠자기 모드( doze mode )가 생겼습니다.3. 잠자기 모드는 누가버전에서 발전시키고 오레오 버전에서 더욱 강화되었습니다. 잠자기 모드는 유저가 디바이스 스크린을 끄고나면 네트워크, Sync, GPS, 알람, 와이파이 스캔 등을 비활성화 시켜버립니다.스크린을 켜거나 충전기에 연결할때 까지 이 상태가 유지되버립니다. 그리고 중요하지 않은 작업/앱을 종료시켜버림으로써 디바이스의 배터리를 절약하는 전략을 사용합니다. 그리고 오레오 버전으로 타겟팅된 앱이 백그라운드에..
모든 OS, 브라우저에서 SHA-1 알고리즘을 지원 중단하고 SHA-2 계열( SHA-224, SHA-256, SHA-384, SHA-512 )을 지원합니다. SHA-256을 가장 많이 사용하므로 SHA-2가 일반적으로 SHA-256을 의미한다고 봐도 될것 같습니다. SHA는 Secure Hash Algorithm으로 안전한 해시 알고리즘을 의미합니다. SHA-1은 미국 국가안전국(NSA)이 개발해 미국 국립표준기술원(NIST)이 표준으로 공표했습니다. 하지만 SHA-1은 160비트의 메시지 다이제스트를 생성하는데 무차별 대입 공격으로 동일한 해시를 만들 수 있는 취약점이 제기되면서 2011년 1월(NIST 문서 SP800-131A) SHA-2가 새로운 권장 해시 표준이 되었습니다. NIST의 권장사항으..
[Effective Java 규칙18] 추상 클래스 대신 인터페이스를 사용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 이미 존재하는 클래스를 개조해서 새로운 인터페이스를 구현하는 것은 간단하다. 자바 플랫폼에 Comparable 인터페이스가 추가된 이후, 많은 기존 클래스들이 Comparable을 구현하도록 개조되었다. 인터페이스는 믹스인(mixin)을 정의하는데 아주 유용한데 믹스인이 무엇이냐면어떤 주기능 A를 제공하는데 선택 기능 B를 제공하여 기능을 혼합할 수 있다는 것을 의미한다. 예를들어 Comparable을 구현한 클래스를 예를 들어보자. 클래스는 원래 본연의 기능A가 있을 것이다.. 하지만 Comparable을 구현(impleme..