본문 바로가기
[Effective Java] 제네릭 타입을 애용하자. [Effective Java] 제네릭 타입을 애용하자. - 클래스를 제네릭화 하는 방법. - 1. 클래스 선언부에 하나 이상의 타입 매개변수를 추가. - 2. 코드 안에 나오는 모든 Object 타입을 그것에 맞는 타입 매개변수로 변경한 후 컴파일. new E[ size ] 와 같은 부분에서 보통 에러가 난다. 이를 피해가는 방법 1. E[] elements = (E[]) new Object[ size ]; // 타입 안전하진 않다. 이를 피해가는 방법 2. Object[] elements = new Object[ size ]; // 사용하는 부분에서 casting 이 필요하다.. scalar 타입보다 배열 타입에 대한 unchecked 캐스트 경고를 억제하는 것이 더 위험하므로, 2번 방법이 더 적합해.. 2016. 11. 29.
ViewPager 를 사용할 때 performance, memory 이슈 직면하지 않기. ViewPager 를 사용할 때 performance, memory 이슈 직면하지 않기. View 계층의 단순화 ViewPager 는 현재 보여지는 page 뿐만 아니라 좌, 우의 page 도 pre loading 시켜 놓는다.따라서 UI 복잡한 것들이 page 를 차지하고 있다면, scroll 을 하면서 계속 버벅이게 된다.즉, Pager 에 들어가는 view 구성은 최대한 단순하게. Thread 처리를 확실히. 한 화면에 모든것이 표현될 때는 Main Thread 에서 살~짝 heavy 한 일을 해도 그럭저럭 그냥 넘어가는 일이 발생한다.하지만, viewpager 의 경우는 좌우의 화면을 미리 그려놓기 때문에 생성되면서thread 에서 작업하는 것이 길어지면 성능이슈에 당면하게 된다.이에 대해 알지 .. 2014. 5. 15.
[Java] Double-checked locking 을 사용하지 말자! [Java] Double-checked locking 을 사용하지 말자! Double checked locking 이란? 보통 synchronized block 은 performance 이슈를 부르기 쉽다.double-checked locking 이 performance 이슈를 조금 완화시켜준다. double-checked locking 은 null check 와 같은 부분을 synchronized 밖으로 빼서synchronized 를 기다리지 않고 처리하게 만들어 준다. volatile 을 주면 read, write 가 sync 로 걸릴 경우 write 를 먼저 하게 하고, read 를 나중에 하게 한다.volatile 이 없다면 반대로 read 를 보통 먼저 하고 write 를 나중에 한다고 한다. .. 2014. 3. 31.
[android] minSdkVersion 에 대한 요즘 추세는 14. android, minSdkVersion 에 대한 요즘 추세는 14. minSdkVersion 에 대한 요즘 추세는 14. 그 이유는 여러가지가 있는데, 핵심만 요약하면. 1. Actionbar 와 holo theme 을 적용하기 쉽다. ( 추가 open source library 가 필요없다. ) 2. 풍부한 Animation 이 가능하다. 3. 4.0 부터는 하드웨어가 대부분 고사양이기 때문에 메모리를 비롯한 성능 이슈가 많이 완화되었다. 4. ICS 이전 버전들은 bug 가 많아 방어코드를 많이 삽입하거나, 기획 자체를 바꿔야 하는 경우가 많다. 4.0 이하 버전들의 비중은 점점 줄어들고 있다.중국이나 인도 타겟이 아니라면 API Level 14 이상을 지원하는 것을 강력하게 추진해보자! 14, a.. 2014. 1. 21.
[android] TransitionDrawable 을 잘 쓰면 훌륭한 애니메이션이 될 수 있다. TransitionDrawable 을 잘 쓰면 훌륭한 애니메이션이 될 수 있다. TransitionDrawable 의 존재는 익히 알고 있었으나, 드디어 테스트를 해 보았다. TransitionDrawable 은 2개의 이미지를 setting 해놓고 transition 을 시키면, fade in, fade out 효과처럼 이미지가 교체된다. 더 놀라운 것은 매우 부드럽게 된다는 것이며, 2개 이상의 이미지도 충분히 소화할 수 있고, 수치만 바꿈으로서 바뀌는 속도를 쉽게 조절할 수 있다. 자 이 위대한 녀석이 얼마나 간단하게 구현되는지예제 코드 ( example code ) 를 통해서 알아보자. ImageView imageView = new ImageView( this );TransitionDrawable.. 2013. 10. 1.
C# 은 왜 자바에게 밀리고 있는가? C#은 왜 자바에게 밀리고 있는가? ( C# 의 단점 ) C# 은 C, C++, 자바의 장점을 모아서 만든 언어이다.( 원래 마소에서 J# 이라는 프로그램을 내놓았는데, Java와 저작권 문제로 SUN 과 붙어서 패소 ) C# 은 여러 언어의 장점을 모아 만든 언어로 많은 장점이 있지만 그만큼 많은 단점을 가지고 있다. C#의 장점은? VB 처럼 GUI Component 를 다루기가 쉽고,C의 성격을 가져 시스템 컨트롤도 가능하다.또한 객체지향언어로 발전된 언어이다. Java에게 안 되는 이유 ( C#의 단점 ) 자바는 JRE ( Java Runtime Environment ) 만 있다면, 소스코드 수정 없이, 어느 OS 에서든 돌릴 수 있다. 하지만 C#은 M$ 에서 만들었고, 정책적으로 자신들이 만든.. 2013. 5. 21.
[android] baselineAligned ( horizontal LinearLayout text 의 align 맞추는 기능 ) baselineAligned ( horizontal LinearLayout text 의 align 맞추는 기능 ) LinearLayout 에서 orientation 을 horizontal 로 주게 되면, 첫번째 컴포넌트의 첫번째 텍스트 라인을 기준으로 나머지 컴포넌트들을 정렬시킨다. 이 기능은 performance 를 위해 disable 될 수 있다. android:baselineAligned="false" 를 주면 해결된다. 요즘은 lint 에서 자동으로 특수한 목적이 아니라면 끄는 것이 강조되고 있다. 도움이 되셨다면 손가락 꾸욱~ ( 로그인 필요 x ) 2012. 12. 3.
반응형