본문 바로가기

전체 글71

[Android] RecyclerView의 성능 비결: ViewHolder 사용의 중요성 RecyclerView에서 ViewHolder를 사용하는 주요 이유는 성능 향상과 메모리 사용 최적화에 있다. RecyclerView는 대량의 데이터 세트를 효율적으로 표시하기 위해 설계된 안드로이드의 강력한 UI 컴포넌트이다. 데이터가 많을 때, 모든 항목을 한 번에 화면에 표시하는 것은 메모리를 많이 사용하고, 앱의 반응 속도를 느리게 할 수 있다. 여기에서 ViewHolder 패턴이 중요한 역할을 한다. ViewHolder 패턴의 주요 기능 뷰 재사용(Recycling): ViewHolder 패턴을 사용하면 스크롤할 때마다 새로운 뷰를 생성하는 대신, 화면에서 사라진 뷰를 재사용할 수 있다. 이는 뷰의 생성과 파괴로 인한 비용을 줄여준다. 뷰 찾기 비용 최소화(FindViewById): 뷰를 재사용.. 2024. 4. 21.
청년 부동산 중개보수 및 이사비 지원 * 지원대상 * 2022.1.1.이후 서울시로 전입 또는 서울시 내에서 이사 후 전입신고 완료한 만 19~39세 청년가구로서 신청 자격을 충족하는 자 * 동거인(부모, 배우자, 형제‧자매 등) 있어도 지원 가능※ 단, 세대주와 임대차계약서상 임차인은 신청자 본인이어야 함 * 지원규모 * 6,000명 ※ 상반기 4,000명 / 하반기 2,000명 모집선정 * 지원금액 * 최대 40만원 한도 내 실비 지원※ 생애 1회 * ※신청시 기준 * 다음 조건을 모두 만족하는 사람 * 연령 : 2024년 기준 만 19~39세 청년 (1984.1.1.~2005.12.31. 출생) * 소득 : 가구당 기준 중위소득 150% 이하 * 신청인이 속한 가구의 건강보험료 고지금액('24년 3월분)이 '24년 건강보험료 소득판정기.. 2024. 4. 18.
[Java] Map 인터페이스와 HashMap 구분과 Map 인터페이스를 통해 HashMap을 사용하는 것이 좋은 이유 자바에서 키와 값의 쌍으로 데이터를 관리할 때, Map 인터페이스가 기본적으로 사용된다. 이 인터페이스는 각 키가 고유한 값을 가지도록 보장하며, 이를 통해 데이터를 효율적으로 저장하고 검색할 수 있게 해 준다. Map 인터페이스의 여러 구현체 중에서도 HashMap이 가장 널리 사용되지만, TreeMap이나 LinkedHashMap 같은 다른 구현체들도 특별한 사용 사례와 이점을 제공한다. Map interface의 구현체들에 대한 내용은 추후에 공부 후 블로깅 해 보겠다. 이번 글에서는 특히, Map 인터페이스를 통해 HashMap을 사용하는 것이 가지는 이점에 초점을 맞춰 보겠다. 이러한 접근 방식은 자바 프로그래밍에서 데이터를 효율적으로 관리하는 방법에 도움이 될 것 이다. HashMap을 직접 .. 2024. 4. 9.
[Java] 자바 빌더 패턴: 복잡한 객체 생성의 단순화와 한계점 탐구 회사에서 담당하게 된 부분의 코드 분석 중, 자바에서 많이 사용되는 디자인패턴 중 하나인 "빌더 패턴"에 대해 알게 되었다. 이에 빌더패턴의 사용 목적, 방법 그리고 이점에 대해 알아본 내용들을 정리해 두고자 한다. 자바에서 빌더 패턴(Builder Pattern)은 주로 복잡한 객체의 생성 과정을 단순화하기 위해 사용된다. 이 패턴은 객체의 생성과 표현을 분리함으로써, 동일한 생성 과정을 통해 서로 다른 표현 결과를 얻을 수 있게 해 준다. 빌더 패턴은 특히 많은 수의 매개변수를 가진 객체를 생성할 때, 그리고 이 매개변수 중 일부는 필수적이고 일부는 선택적일 때 유용하다. 빌더 패턴사용의 목적과 결과 목적: 복합 객체의 생성 과정을 단계별로 진행하여 최종적으로 객체를 안정적으로 생성한다. 결과: 클라.. 2024. 4. 9.
[Android] 안드로이드에서 FLAG_ACTIVITY_REORDER_TO_FRONT 플래그를 활용한 효율적인 액티비티 관리 안드로이드에서 Intent와 함께 사용되는 Flag는 액티비티나 서비스 등의 컴포넌트를 시작할 때 시스템에게 어떻게 해당 컴포넌트를 관리해야 하는지에 대한 추가적인 지시를 제공한다. 이러한 Flag들은 주로 액티비티의 태스크와 백스택 관리에 관련된 동작을 정의하는데 사용된다. Intent Flag 사용 방법: Intent 객체에 Flag를 설정하는 방법은 간단하다. Intent 객체를 생성한 후, setFlags() 메서드나 addFlags() 메서드를 사용하여 flag를 추가할 수 있다. Intent intent = new Intent(context, TargetActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startA.. 2024. 4. 8.
[Android] 안드로이드에서 BroadcastReceiver 활용하기: 정적 및 동적 등록과 명시적 vs 암시적 브로드캐스트 전송 이해하기 안드로이드에서 BroadcastReceiver를 이용한 명시적 및 암시적 브로드캐스트 전송과 수신에 대해 정리 해 두고자 한다.BroadcastReceiver는 안드로이드에서 중요한 역할을 하는 컴포넌트로, 애플리케이션에서 다양한 시스템 이벤트를 감지하고 반응할 수 있게 해준다.정적 및 동적 등록 방법을 이해하고, 명시적 및 암시적 브로드캐스트 전송 방법을 알고 있으면 안드로이드 애플리케이션 개발에 있어 더 효율적으로 BroadcastReceiver를 활용할 수 있다.BroadcastReceiver란?BroadcastReceiver는 안드로이드 애플리케이션 구성 요소 중 하나로, 시스템이나 애플리케이션에서 발생하는 다양한 이벤트나 정보를 수신할 수 있는 기능을 제공한다. 예를 들어, 네트워크 상태 변경,.. 2024. 4. 5.
[Android] 안드로이드에서 WindowManager를 활용하여 윈도우 위치 최상단으로 설정하기 안드로이드 애플리케이션 개발에서 윈도우매니저를 활용하여 특정 뷰 또는 윈도우를 화면의 최상단에 위치시키는 방법에 대해 정리 해 두고자 한다.이 기능은 다양한 상황에서 유용하게 사용될 수 있으며, 특히 사용자와의 인터랙션이 중요한 앱을 개발할 때 필수적인 요소가 될 수 있다. WindowManager란?WindowManager는 안드로이드 시스템에서 윈도우(액티비티, 다이얼로그 등)를 관리하는 역할을 한다.이를 통해 애플리케이션은 이 서비스를 사용하여 애플리케이션은 윈도우를 생성하고 윈도우의 크기, 위치, 표시 방식 등을 조정할 수 있게 되며, 윈도우를 화면에 추가하거나 제거할 수 있다. WindowManager는 주로 다음과 같은 작업을 수행하는 데 사용된다.윈도우 추가: 애플리케이션은 WindowMan.. 2024. 4. 4.
[Kotlin, Java] Kotlin과 Java의 문법적 차이와 각 언어의 특징을 가위, 바위, 보 게임을 예시로 알아보기 Java 코드 package eu.tutorials.rockpaperscissors; import java.util.Scanner; import java.util.Random; public class Main { public static void main(String[] args) { String computerChoice = ""; String playerChoice = ""; System.out.println("Rock, Paper or Scissors? Enter your choice"); Scanner scanner = new Scanner(System.in); playerChoice = scanner.nextLine(); Random rand = new Random(); int randomNum.. 2024. 4. 2.
[Kotlin] Kotlin에서 '..' 연산자로 더 쉽고 간결하게 범위 다루기 Kotlin에서 Ranges는 두 값 사이의 모든 값을 나타내는 방법이다. 범위를 사용하면 특정 범위 내의 값들을 쉽게 반복하거나 검사할 수 있다. Kotlin은 이를 위해 특별한 연산자 '..'를 제공한다. 또한, Ranges를 사용하는 것은 코드를 더욱 읽기 쉽고 간결하게 만들어 준다. 사용법 Range 생성: '..' 연산자를 사용하여 Range를 생성할 수 있습니다. 예를 들어, 1부터 5까지의 범위는 1..5로 표현된다. val range: IntRange = 1..5 2. Range를 사용한 반복: for 반복문과 함께 Range를 사용하여 특정 범위 내의 값들을 반복할 수 있다. for (i in 1..5) { println(i) } 3. Range 검사: in 연산자를 사용하여 어떤 값이 .. 2024. 4. 2.
[Java] 오버로딩과 오버라이딩: 객체 지향 프로그래밍에서의 메소드 다형성 이해하기 이슈 수정을 위해 생성자 오버로딩을 사용할 필요가 생겼다. 이를 잊지 않기 위해 오버로딩에 대해 정리하려고 한다. 그 과정에서 오버라이딩과의 비교가 자주 나오기 때문에, 이 두 개념을 함께 정리하고자 한다. 오버로딩과 오버라이딩은 비록 서로 다른 목적과 작동 방식을 가지고 있지만, 이들은 메소드 재정의의 중요한 형태로, 객체 지향 프로그래밍에서 메소드의 다형성을 구현하는 데 필수적인 기술이다. 오버로딩(Overloading) 오버로딩은 메서드 오버로딩과 생성자 오버로딩 두가지 형태로 나뉜다. 오버로딩은 같은 이름을 가진 메소드나 생성자를 여러 개 정의할 수 있게 하며, 매개변수의 타입, 개수, 순서에 따라 구분된다. 이를 통해 메소드나 생성자에 다양한 입력을 처리할 수 있는 유연성을 제공한다. 1. 메소.. 2024. 4. 2.
[Git] Git Diff 명령어로 변경사항 꼼꼼하게 검토하기 git diff 명령어는 Git에서 매우 유용하게 사용되는 도구 중 하나로, 두 커밋 사이의 차이점을 비교하거나, 작업 디렉토리와 인덱스(스테이징 영역) 또는 마지막 커밋과의 차이점을 확인할 때 사용된다. 로컬에서 작업한 내용을 원격지로 올리기 전, 변경사항 중에 문제가 없는지 확인하는 데 사용한다. 이를 통해 변경된 내용을 세밀하게 검토하고, 예상치 못한 변경사항을 발견하거나 수정 사항을 정리할 수 있다. 기본 사용법 작업 디렉토리와 인덱스(스테이징 영역) 비교: 변경사항이 스테이징 영역에 추가되지 않은 경우, 즉 git add를 실행하지 않은 변경사항을 확인할 때 사용한다. git diff 인덱스(스테이징 영역)와 마지막 커밋 비교: 스테이징 영역에 추가된 변경사항과 마지막 커밋과의 차이를 확인할 때.. 2024. 4. 1.
[Android] ItemTouchHelper.Callback으로 리사이클러뷰 아이템을 마스터하는 방법: 주요 오버라이드 메서드와 그 역할 ItemTouchHelper.Callback 클래스를 사용하면서 clearView 기능을 통해 드래그 앤 드롭 작업의 종료 시점을 감지할 수 있다는 것을 알게 되었다. 이 과정에서 ItemTouchHelper.Callback 클래스에는 clearView 외에도 다양한 유용한 오버라이드(Override) 메서드들이 있다는 것을 발견했다. 이러한 메서드들을 정리하여 기록해 두고자 한다. ItemTouchHelper.Callback 클래스는 리사이클러뷰의 아이템을 드래그 앤 드롭하거나 스와이프할 때 사용자 정의 동작을 구현할 수 있도록 해주는 중요한 클래스이다.이 클래스를 통해 다음과 같은 여러 메서드들을 오버라이드할 수 있다. isLongPressDragEnabled() 역할: 길게 눌러서 드래그를 시작할 .. 2024. 4. 1.