전체 글 78

안드로이드 개발 (46) Process, Activity, Compose LifeCycle

안드로이드 개발에서 Process, Activity, Compose 의 세가지 LifeCycle은 안드로이드 개발자가 알아야할 필수 지식이며, 앱의 문제 해결에 있어서 매우 중요한 주제 입니다. 특히 실무 개발자라면 각 컴포넌트를 생성하고 파괴하는 과정과 그 사이에서 적절히 동작을 관리하는 방법을 잘 이해해야합니다.1. 안드로이드 앱 생명주기 (Application LifeCycle)//Application Classimport android.app.Applicationclass CustomApplication: Application(){ override fun onCreate() { super.onCreate() //.. 앱 초기화 시점 로직 실행.. }}Applic..

안드로이드 개발 (45) Alarm Manager 심층 분석

안드로이드 알람 어플리케이션의 꽃 Alarm Manager 에 대해 알아보기전에 두가지에 대해 먼저 알아보겠습니다.Doze 모드Doze 는 기기의 충전선을 뽑고 화면을 끈채 기기를 사용하지 않으면, Android가 배터리를 아끼기 위해 백그라운드 작업을 단계적으로 제한 하는 절전 모드 입니다. 배터리를 아끼려고 네트워크,CPU,일반 알람,Job/WorkManager 작업을 전부 잠시 미뤄둡니다. 시간이 지나면 잠깐 깨워 ( maintenance window ) 밀린 일만 몰아서 처리하고 다시 잠듭니다.Doze는 두가지 진입 단계가 있습니다.1) Light Doze (화면 OFF 직후 + 충전X) Light Doze 는 네트워크 차단, Job/Sync 작업을 연기 하고 몇 분 간격으로 한꺼번에 처리하는 ..

서버개발 (2) 실제 운영 경험담: Spring Boot 로그인 PessimisticLockException

안녕하세요, 개발자 SEOBI 입니다. 전 회사에서 프로젝트 전반을 책임졌던 서버 리딩 경험은 제 커리어의 가장 큰 설렘이었습니다. 사용자와 거래 데이터를 지켜내는 그 긴장감과 성취감을 다시 느끼고 싶어, 공부한 것들을 블로그에 아낌없이 공유하려 합니다. https://gift123.tistory.com/89 서버 개발 (1) MySQL - 트랜잭션 잠금 관리안녕하세요, 개발자 SEOBI 입니다. 전 회사에서 프로젝트 전반을 책임졌던 서버 리딩 경험은 제 커리어의 가장 큰 설렘이었습니다.사용자와 거래 데이터를 지켜내는 그 긴장감과 성취감을 다시gift123.tistory.com 사실 위 공부를 했었던 이유는 과거 운영환경에서 일어난 Pessimistic Lock 장애가 있었기 때문 입니다. 당시 재현이 ..

서버 Server 2025.04.23

서버개발 (1) MySQL - 트랜잭션 잠금 관리

안녕하세요, 개발자 SEOBI 입니다. 전 회사에서 프로젝트 전반을 책임졌던 서버 리딩 경험은 제 커리어의 가장 큰 설렘이었습니다.사용자와 거래 데이터를 지켜내는 그 긴장감과 성취감을 다시 느끼고 싶어, 공부한 것들을 블로그에 아낌없이 공유하려 합니다.1. 잠금(lock) 이란?잠금은 비유하자면 트랜잭션이 데이터(행·범위·테이블)를 자신만 안전하게 쓰거나 읽기 위해 ‘예약표’를 꽂아 두는 것입니다. 다른 트랜잭션이 같은 구역에 들어오면, 꽂혀 있는 예약표(잠금)와 호환되는지를 보고 — 호환되면 통과, 안 되면 대기(LOCK WAIT) 시킵니다. LOCK WAIT 된 트랜잭션은 원래 트랜잭션의 COMMIT 이 끝나야 다시 쿼리가 실행됩니다.'왜 잠근다고 표현할까?'공유(Shared, S) 잠금 - "읽기..

서버 Server 2025.04.22

안드로이드 개발 (44) Room @Transaction 에 대해 알아보자

@Upsert로 INSERT 또는 UPDATE 한 줄에 사용법@Upsert // Room 2.7.0+suspend fun save(user: User): Long 위와 같이 편리하게 사용하는 법이 있습니다. 동작 원리: Room이 생성한 EntityUpsertionAdapter가 내부적으로 기본 키(PK)나 고유 제약조건(unique) 예외가 없으면 INSERT, 예외 발생 시 (SQLiteConstraintException) UPDATE를 실행합니다. 그래서 같은 트랜잭션 안에서 UPDATE.. WHERE pk = ? 실행 합니다.Insert 가 실행된 경우 리턴 값은 row id , Update 가 실행된 경우 -1 입니다. 성공 여부나 업데이트된 컬럼 수를 알기 위해..

안드로이드 개발 (42) Kotlin In Action 정리 - 6

(이전편 다시보기) https://gift123.tistory.com/77 안드로이드 개발 (41) Kotlin In Action 정리 - 5 (이전편 다시보기) 안드로이드 개발 (40) Kotlin In Action 정리 - 4 (이전편 다시보기) 안드로이드 개발 (38) Kotlin In Action 정리 - 2 (이전 편 다시보기) 안드로이드 개발 (37) Kotlin In Action 정리 - 1 현업에서 gift123.tistory.com 어느덧 6장 요약 이네요 참고로, kotlin in action을 전체 요약본이 아니라 개인적으로 필요한 부분을 위주로 정리했습니다. 6장 코틀린 타입 시스템 kotlin 만의 타입 시스템은 타입이 널 허용하는지 안하는지에 따른 안전성과 가변과 불변 타입으로 ..

안드로이드 개발 (41) Kotlin In Action 정리 - 5

(이전편 다시보기) 안드로이드 개발 (40) Kotlin In Action 정리 - 4 (이전편 다시보기) 안드로이드 개발 (38) Kotlin In Action 정리 - 2 (이전 편 다시보기) 안드로이드 개발 (37) Kotlin In Action 정리 - 1 현업에서 일을 하다보면, Back To The Basic 을 통하여 디버깅 추적 및 안전 gift123.tistory.com 이전편들을 총 요약해보면, 1장은 kotlin의 탄생 배경,철학, 특징을 알아보았습니다. 2장은 기본적인 문법(if, when,try,for 등등..)을 설명하였습니다. 3장은 함수 호출 관련, collection 의 설명, 문자열 치환 등등을 설명하였고 4장은 kotlin의 class,interface, object, ..

안드로이드 개발 (38) Kotlin In Action 정리 - 2

이전의 순서 1편에서 2편까지 모두 한꺼번에 정리하였었으나, 포스팅 글 제목으로 인해서 2라고 표시된 순서가 3장을 요약하는 글이 되버려서 인식하기에 불편하다는 생각이 들었습니다. 그래서 1편에서 2장을 분리하여 글제목과 요약 장이 일치하도록 재작성 되었습니다. (이전 편 다시보기) 안드로이드 개발 (37) Kotlin In Action 정리 - 1 현업에서 일을 하다보면, Back To The Basic 을 통하여 디버깅 추적 및 안전한 코드 작성 능력을 강화 할 수 있다는 것을 알게 됩니다. 이 글은 J brains 에서 일하는 Dmitry Jemerov, Kotlin 개발팀의 일원인 Sv gift123.tistory.com 2장 - 코틀린 기초 2장에서 다루는 내용은 다음과 같다. 2장은 기본적인 ..

안드로이드 개발 (40) Kotlin In Action 정리 - 4

(이전편 다시보기) 안드로이드 개발 (38) Kotlin In Action 정리 - 2 (이전 편 다시보기) 안드로이드 개발 (37) Kotlin In Action 정리 - 1 현업에서 일을 하다보면, Back To The Basic 을 통하여 디버깅 추적 및 안전한 코드 작성 능력을 강화 할 수 있다는 것을 알게 됩니다. 이 gift123.tistory.com kotlin in action 요약 4번째 편 4장 요약입니다. kotlin 의 간단한 문법 설명 보다, 잊기 쉬울 만한 내용을 위주로 골라 정리하였습니다. 4장 - 클래스, 객체, 인터페이스 java와 kotlin은 비슷하면서도 사뭇 다릅니다. 예를들어, kotlin의 interface에 프로퍼티 선언이 들어갈수 있고, class는 기본적으로 ..