728x90
반응형

ALL 607

android recyclerview에서 싱글톤 안에 있는 list 를 사용해도 참조가 동일한가?

싱글톤 내에 있는 List를 RecyclerView에서 사용한다면, RecyclerView의 어댑터에서 해당 List를 참조할 수 있습니다. 이 경우에는 싱글톤 내의 List를 변경하면 RecyclerView에 표시되는 데이터도 함께 변경됩니다. 즉, RecyclerView 어댑터에서 List를 참조하면 해당 List를 수정하는 것은 원래 List의 참조를 수정하는 것과 동일합니다. 그러므로 RecyclerView에서 사용되는 List는 참조가 동일합니다. 하지만, 이러한 방식은 동시성 문제가 발생할 가능성이 있습니다. RecyclerView와 싱글톤 내의 List가 동시에 수정되는 경우, 일관성이 없는 결과가 발생할 수 있습니다. 따라서, 이러한 문제를 방지하기 위해서는 동기화(Synchronizati..

Android 공부 2023.03.29

HandlerThread 대해서

HandlerThread에 대해서 Main Thread는 HandlerThread 구조를 가진다고 하였다. 그것이 왜 필요한지 부터 설명토록 하겠다. 자 Thread의 생명주기는 run() 함수내에서 끝난다. 아래의 그림을 보자. 위 처럼 run() 진입이 Thread의 생성이며, run()함수의 끝이 Thread 종료이다. 만일 Main Thread가 위처럼 run()함수에서 끝나버리면 Android Appliction이 유지 될 수 없지 않겠는가? 바로 아래를 보자. 위와 같이 run() 함수에서 어떤 일을 계속 처리하기 위해서 while(true) 와 같이 계속 loop 를 돌게 된다. 계속 바로 아래를 보자. 위와 같이 마냥 loop만 돌고 있는 것이 아니라, looper는 처리해야 할 일을 쌓아..

Android 2023.03.22

Is와 As의 차이 ( feat. casting )

① 업캐스팅(Upcasting) 서브 클래스 인스턴스를 "슈퍼 클래스의 타입"으로 참조한다 업 캐스팅은 항상 성공한다 as 연산자를 사용해서 할 수도 있다 (컴파일 시점에 캐스팅 가능 여부를 결정한다) as : "컴파일 시점"에 타입 캐스팅(업캐스팅)을 하며, 실패할 경우 에러가 발생한다. 패턴 매칭(switch)에도 사용한다 서브 클래스의 인스턴스를 슈퍼 클래스의 타입으로 참조하는 것을 업캐스팅이라고 함 => 사용할 수 있는 기능은 업캐스팅된 부분에 한정이됨, teacher은 person이라는 것을 상속받는다고 할때 업캐스팅을 하면 person의 기능에 한정지어 사용하게됨. ② 다운캐스팅(Downcasting) 슈퍼 클래스 인스턴스를 "서브 클래스의 타입"으로 참조한다 업캐스팅된 인스턴스를 다시 원래 ..

개인 공부 2023.03.20

Java 대용량 데이터 청크로 분리해서 데이터 전송하기

import java.io.*; import java.net.*; public class LargeDataSender { public static void main(String[] args) throws Exception { // 대상 서버와 포트 설정 String host = "example.com"; int port = 80; // 데이터를 보낼 파일 경로 설정 String filePath = "/path/to/largefile.txt"; File file = new File(filePath); // HTTP 요청 생성 URL url = new URL("http://" + host + ":" + port + "/upload"); HttpURLConnection connection = (HttpURLC..

JAVA 2023.03.10

Java ) DataInputStream

java.lang.Object - java.io.InputStream - java.io.FilterInputStream - java.io.DataInputStream 데이터 입력 스트림에의해 어플리케이션은 원시형의 Java 데이터를 기초의 입력 스트림로부터 머신에 존하지 않고 읽어들일 수가 있습니다. 어플리케이션은 데이터 출력 스트림을 사용해 데이터를 출력하는 것으로 그 데이터를 나중에 입력 스트림로부터 읽어들일 수도 있습니다. DataInputStream public DataInputStream(InputStream in) 지정된 기본이 되는 InputStream를 사용하는 DataInputStream를 작성합니다. 파라미터: in - 지정의 입력 스트림 메서드 상세 read public final i..

JAVA 2023.02.17

Protocol Buffer 사용법 - 컴파일링

java_package (file option) 생성된 Java나 Kotlin 클래스에서 사용하기 위해 사용 .proto 파일에 java_package 옵션을 명시하지 않으면 기본 proto 패키지가 사용 proto 패키지는 도메인 역순 이름으로 생성되지 않기 때문에 일반적인 Java package를 생성하지 않음 Java나 Kotlin 코드를 생성하지 않을 경우 옵션은 무시됨 option java_package = "com.example.foo"; java_outer_classname (file option) 생성하기 원하는 자바 클래스 래퍼에 대한 클래스 이름을 지정 .proto 파일에 java_outer_classname을 명시하지 않으면 클래스 이름은 .proto 파일에 명시된 이름을 camel-..

개인 공부 2023.02.09

모듈 만들기

안드로이드 스튜디오. File > New > New Module을 클릭합니다. Create New Module 창이 표시되면 Android Library, Next를 차례로 클릭합니다. 일반적인 JAR 파일을 빌드하는 Java 라이브러리를 생성하는 옵션도 있습니다 빌드 방법 : - 안드로이드 스튜디오 오른쪽의 Gradle 탭 클릭 - Excute Gradle Task 클릭 - gradle assembleDebug 또는 gradle assembleRelease 클릭 - C:\AndroidProject\해당모듈명\build\outputs\aar 위치에 .aar 파일 생성 사용 : - 사용할 프로젝트의 app 디렉터리 안에 libs 디렉터리 생성 - 위에서 생성한 .aar 파일을 libs 디렉터리에 넣기 bu..

Android 2023.01.30

JavaScript ) 함수 ( 중첩함수, 렉시컬 환경, 클로저, 가비지 컬렉션 )

1. 중첩 함수 - 자바스크립트는 함수 내부에서 함수를 또 선언해서 사용하는 중첩(nested) 함수를 사용합니다. 중첩 함수는 새로운 객체의 프로퍼티 형태나 중첩 함수 그 자체로 반환될 수 있다는 점에서 흥미롭습니다. 이렇게 반환된 중첩 함수는 어디서든 호출해 사용할 수 있습니다. 물론 이때도 외부 변수에 접근할 수 있다는 사실은 변함없습니다 function makeCounter() { let count = 0; return function() { return count++; }; } let counter = makeCounter(); alert( counter() ); // 0 alert( counter() ); // 1 alert( counter() ); // 2 그런데 makeCounter를 살펴..

JS . JSP 2023.01.16
728x90
반응형