본문 바로가기

전체 글1454

[Java][Android]Web3j 활용해 키쌍 생성하기 오늘은 web3j 라이브러리를 활용해 private key와 public key 키쌍을 생성하는 간단한 예시를 만들어 보겠습니다. 라이브러리 준비 및 그래들 설정=> web3j는 자바 17의 record 기능을 활용하기에 자바17의 기능을 사용할 수 있도록 app 수준 build.gradle 파일에서 위 이미지와 같이 설정해주세요.=> web3j는 Bouncy Castle, Jackson, OkHttp, RxJava, WebSocket 라이브러리들에 의존하는 라이브러리 입니다. 이에 따라web3j 포함 필요한 라이브러리들을 추가해주세요. https://github.com/LFDT-web3j/web3j?tab=readme-ov-file GitHub - LFDT-web3j/web3j: Lightweight .. 2025. 4. 4.
[JAVA] Callable과 Future로 비동기 작업 이해하기 비동기 프로그래밍은 현대 애플리케이션 개발에서 필수적인 기술입니다. 자바에서는 비동기 작업을 효율적으로 처리하기 위해 Callable과 Future라는 인터페이스를 제공합니다. 이 글에서는 비동기의 개념부터 Callable과 Future를 활용한 실질적인 예제까지 차근차근 설명하겠습니다.비동기란 무엇인가?비동기 작업이란 작업을 실행한 후 해당 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있는 방식을 말합니다. 이는 멀티쓰레드 환경에서 특히 유용하며, 다음과 같은 특징을 갖습니다:병렬 처리: 여러 작업을 동시에 실행하여 처리 속도를 높임.작업 대기 최소화: 작업 완료를 기다리지 않고 다른 작업을 수행 가능.효율성: 시스템 자원을 효율적으로 활용.자바에서는 이러한 비동기 작업을 구현하기 위해 .. 2025. 4. 3.
[Java] ScheduledExecutorService로 JVM 메모리 사용량 모니터링하기 안녕하세요 오늘은 JVM 의 현재 메모리 사용량을 3초 간격으로 출력하여 확인해보도록 하겠습니다.현대 소프트웨어 환경에서는 대부분 동시에 여러작업을 처리해야하는 상황이 늘 생깁니다. 예를 들어, 웹 서버가 여러 사용자의 요쳥을 동시에 처리한다거나, 채팅 앱이 백그라운드로 메시지를 계속 주고 받을 때,앱이 ui 는 유지하면서 백그라운드 작업을 해야할때 반드시 멀티 스레딩이나 비동기 프로그램이 필요합니다. 자바에서는 Thread 클래스, Runnable 인터페이스 구현을 지원하지만 이는 스레드를 직접 관리해야하며, 메모리 낭비로 이어지기 쉽습니다. 이를 보완하기 위해 오늘날 자바에는 java.util.concurrent 패키지를 제공합니다. 해당 패키지를 통해 병렬처리, 스케줄링, 스레드 풀 자동 관리,비동.. 2025. 4. 2.
[Java][Android] MotionLayout 활용하기 안녕하세요오늘은 MotionLayout을 활용해보도록 하겠습니다.MotionLayout은 UI간 애니메이션과 전환을 부드럽게 표현할 수 있는 레이아웃입니다. 우선 MotionLayout xml을 추가해줘야합니다.  res/xml/scene.xml 에다가 MotionScene 을 정의해줘야합니다.  전체 코드입니다. res/xml/scene.xml   activity_main.xml  시연 영상입니다. 2025. 4. 1.
[Java] Stack 구현 예제 1. Stack 구현 1.1. Stack의 개념Stack은 후입선출(LIFO, Last In First Out) 방식의 자료구조로, 마지막에 삽입된 요소가 가장 먼저 삭제됩니다. 일상적인 예로는 책 더미를 생각할 수 있습니다. 책을 하나씩 쌓을 때, 맨 위에 쌓은 책을 먼저 꺼내게 되죠. 1.2. 구현 방법배열을 사용하여 Stack을 구현할 수 있습니다. 배열을 사용하면 고정 크기의 Stack을 만들 수 있으며, Stack의 삽입(push), 삭제(pop), 확인(peek) 연산을 구현할 수 있습니다. 1.3. Stack의 기능push(value): Stack에 값을 추가.pop(): Stack에서 값을 제거하고 반환.peek(): Stack의 맨 위 값을 확인(삭제하지 않음).isEmpty(): Sta.. 2025. 3. 31.
[Java][Android] ChipGroup에 Chip 동적 추가하기 (+ 버튼) 안녕하세요,  오늘은  ChipGroup 에 +버튼을 만들고, 동적으로 Chip 을 추가하는 예제를 만들어보도록 하겠습니다.  activity_main.xml MainActivity.javapublic class MainActivity extends AppCompatActivity { private ChipGroup chipGroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); chipGroup = findViewById(R.id.chipGro.. 2025. 3. 30.
[Kotlin][Android] 배터리 상태 보기 오늘은 배터리 상태를 보여주는 예시를 만들어 보겠습니다     레이아웃 xml 파일 코드(activity_main.xml)        액티비티 코틀린 코드class MainActivity : AppCompatActivity() { private lateinit var batteryLevelText: TextView private lateinit var batteryStatusText: TextView private lateinit var batteryHealthText: TextView private lateinit var batteryTechText: TextView private lateinit var batteryTempT.. 2025. 3. 28.
[JAVA] HttpURLConnection을 활용한 HTTP 통신과 REST API 이해하기 안녕하세요.이번 글에서는 자바에서 HttpURLConnection을 활용해 HTTP 통신을 구현하는 방법과, 이를 통해 자주 사용되는 REST API의 개념을 알아보겠습니다. REST API는 현대 웹 개발에서 필수적인 기술로, HttpURLConnection을 활용해 RESTful 서비스와 통신하는 기본적인 방법을 살펴볼 것입니다. 1. REST API란?REST란?REST(Representational State Transfer)는 웹의 리소스를 HTTP 프로토콜을 통해 관리하는 아키텍처 스타일입니다. REST는 클라이언트와 서버 간의 상호작용을 단순화하고, 일관된 인터페이스를 제공하는 데 중점을 둡니다.REST의 주요 특징리소스 기반:모든 데이터(사용자, 게시물 등)는 고유한 URI로 식별됩니다.예.. 2025. 3. 27.
[Java] nanoTime 사용해서 경과 시간 측정하기 안녕하세요 오늘은 nanoTime 자바 메서드를 사용하여 경과 시간을 측정하는 기능을 구현해보도록 하겠습니다. 알고리즘 성능 테스트, 타자 속도 측정 게임 등에 응용해볼 수 있습니다.   이번에 사용할 System.nanoTime() 은 자바 기본 클래스인 System 에 포함된 내장 메서드 입니다해당 메소드는 나노초(ns -> 1초 = 1,000,000,000 나노초) 단위로 경과 시간을 측정할 수 있으며 현재 시간을 제공하지는 않습니다.   1. 경과 시간 측정 (nanoTime 버전)public class NanoTimeExample { public static void main(String[] args) { long startTime = System.nanoTime(); // 시.. 2025. 3. 26.