| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- 안드로이드
- NestedScrollView
- 데코레이터 패턴
- 자이고트
- 운영체제
- Dispatchers
- 내부 단편화
- DiffUtil
- recyclerview
- appcompatacitivity
- http발전과정
- 플로이드워셜
- 뷰홀더
- Kotlin
- AsyncListDiffer
- apk 빌드 과정
- GetX
- 물리 메모리
- 디자인 패턴
- http 역사
- Android
- viewModelScope
- appcompatactivity
- 프로세스
- AAC
- 상태관리
- 리사이클러뷰풀
- flutter
- 리사이클러뷰
- 절대 주소
- Today
- Total
목록Develop/Java (16)
hong's android
오브젝트풀링 이란? 객체들을 매번 새로 생성/제거하지 않고 풀 안에 기존 객체들을 재사용하는 디자인 패턴 언제 사용할까? 스레드를 생성하고 수거할때 스택 메모리를 이용(할당, 초기화) 해야 하기 때문에 매번 생성하는 것은 비교적 비용이 높다. 그래서 오브젝트 풀링 방식인 스레드풀을 사용해서 스레드를 재사용하면 오버헤드를 줄일 수 있다. 또한 개발자 입장에서 스레드 마다 생명주기를 신경 쓰지 않아도 된다. 하지만 풀에 너무 많은 스레드를 생성해 놓는다면 메모리 낭비로 이어진다. java.util.concorrent 패키지에 Executors 클래스를 사용해서 스레드 풀(Object polling 방식)을 사용할 수 있다. Executors클래스는 Executor Service 인터페이스의 구현 객체를 생성..
Object 클래스 // Object // equals 메서드 public boolean equals(Object obj) { return (this == obj); } Object 클래스의 대표적인 메소드들 1. equals() : 참조 값을 비교한다. 2. hashcode() : 객체의 주소값을 해시값으로 변환하여 반환한다. 3. toString() String 클래스 String 클래스의 equals는 문자열의 값을 비교한다. Object 클래스를 상속받아서 위와 같이 equals를 오버라이딩 했기 때문이다. 두 객체가 같은 경우 값 비교를 하지않고 동일하다고 판단한다. 다른 경우 서로의 string값을 비교한다. // String.java // 자바 8 public int hashCode() { ..
java.lang.Object란 java.lang 패키지에는 프로그래밍을 위한 다양한 클래스들이 모여있고 이를 활용 할 수 있다. (다른 패키지와 다르게 import 구문 없이 사용 가능하다.) 그중에서 object는 클래스들의 가장 상위 클래스이고 프로그래밍을 위한 다양한 메소드들을 제공한다. 1. equals() 동일한 객체인지 판단한다. 기본적으로 == 연산자를 통해 객체의 동등함을 판단하는데 이때 객체의 주소값을 갖고 판단한다. 그렇기에 두 객체의 내용이 같다는것을 판단하기위해선 따로 equasl() 메소드를 오버라이드해서 사용해야한다. (Collection 프레임워크 몇몇 클래스는 객체의 동등성을 판단하기위해서 객체의 hashcode() -> equals() 메소드를 통해 확인하기 때문에 위 프..
Collection 이란? 목록성 데이터를 처리하는 자료구조 - java.util 패키지에 Collection은 속해있다. - 형태가 비슷한 여러개의 값들을 저장하고 관리하기 위해선 배열이 필요하다. 하지만 크기가 지정되어있지 않은경우엔 따로 배열의 크기를 필요에 따라 계속 늘려주는 작업을 해야한다. Collection 인터페이스는 가변 크기를 가진다. - 하위 인터페이스는 List,Set,Queue,Map이 있고 구현 클래스들은 아래와 같다. 자료구조 : 데이터들을 효율적으로 처리하기위해 만든 구조 특징 1. collection은 iterable인터페이스를 구현하기 때문에 데이터를 순차적으로 가져올 수 있다. Public inetrface Collection extends Iterable 2. List..
동시성 문제 멀티 스레드 환경에서 같은 자원을 사용할 때 예상했던 값과 다르게 결괏값을 가져오는 경우가 있다. 동시성 문제들의 종류는 가시성 문제와 원자성 문제가 있다. 1) 가시성 문제 캐시와 메모리의 불일치로 생기는 문제이다. 예를들어, 한 스레드가 데이터를 가져오는 캐시가 메모리와 동기화되어있지 않다면 다른 결과 값을 가질 수 있다. 2) 원자성 문제 원자성 문제는 cpu의 instruction을 수행하는 과정에서 다른 cpu의 스레드가 그 사이에 해당 값에 접근을해서 값을 바꾸게 되는것이다. 이렇게 되면 연산을 원자 단위로 나누지 못한다. 위 가시성 문제를 해결한다고 원자성 문제도 해결되지 않는다. 예를 들어 메모리가 동기화되어있다고 가정하고 A 스레드가 공유 자원 int value에 +1을 할 ..
제네릭 이란? 내부에서 타입을 정하지않고, 외부에서 지정, 클래스나 메소드에서 다양한 타입을 사용할 수 있도록 데이터 타입을 일반화한다. (자바 5부터 새롭게 추가) 제네릭이 없이 다양한 타입을 클래스 또는 메소드에서 사용할때 객체들의 최상위 클래스인 object로 타입 파라미터를 받는다. 클래스 외부에서 타입을 지정한 다음, 해당 객체의 값을 가져와서 사용한다. 이때 클래스 외부에서 객체의 값을 사용하기 위해 형 변환을 해야하는데 그대로 사용하거나 잘못된 형변환을 하게되면 런타임에 오류가 생길 수 있다. 제네릭으로 다양한 타입을 클래스 또는 메소드에서 사용할때 클래스 외부에서 동적으로 타입을 지정한다. 객체의 값을 사용해야할때 강제로 형변환을 할 필요없이 제네릭 타입으로 지정한 값을 사용할 수 있다. ..