프로그래밍 언어
-
[Kotlin] Runtime 에 타입정보를 알아내는 방법프로그래밍 언어/Kotlin 2023. 5. 15. 20:37
Runtime 에 타입정보를 알아내는 법 (순수 Generic) fun printGenerics(value: T, classType: Class) { when (classType) { String::class.java -> { println("String : $value") } Int::class.java -> { println("Int : $value") } } } printGenerics("print generics function", String::class.java) printGenerics(1000, Int::class.java) Runtime 에 타입정보를 알아내는 법 (inline function) inline fun printGenerics(value: T) { when (T::class)..
-
[Kotlin] 객체 데이터 암호화 하기프로그래밍 언어/Kotlin 2023. 5. 8. 18:16
리소스 경로가 포함된 객체들은 Base64 로 암호화할 시, `/` 같은 문자가 포함되기에 Hex 로 암호화하는것이 좋다. decrpyt 의 반환형은 제네릭으로 이쁘게 처리하면 더 완벽하겠다. 코드 스니펫 object CipherEncryptor { private const val secretKey = "Ping9's SecretKey" private val log = LoggerFactory.getLogger(HMacEncryptor::class.java) fun encrypt(source: Any, objectMapper: ObjectMapper): String = Cipher.getInstance("AES/CBC/PKCS5Padding").run { init( Cipher.ENCRYPT_MODE, ..
-
[Java] Static Block 실행시점과 싱글톤(Singleton)에서의 활용프로그래밍 언어/Java 2022. 12. 28. 14:39
Kotlin 의 object 키워드와 companion object 키워드가 Java 코드로 어떻게 짜여지는지 궁금하여Decompile 해보던 중 이해할 수 없는 Static Block 을 발견하여 직접 실험해본 결과를 정리한다. Static Block 이란? (+ Instance Block)Static Block 은 static 키워드가 붙은 block 을 일컫는다.Instance Block 은 static 키워드가 붙지 않은 block 을 일컫는다.Instance Block 은 인스턴스가 초기화 될 때 실행된다.public class StaticBlockClass { public static final StaticBlockClass INSTANCE; // if it's called before..
-
[Java] multipartFile 이미지 리사이징 예제코드프로그래밍 언어/Java 2022. 11. 13. 16:27
사용자가 업로드 한 로고이미지를 리사이징한 후 S3 버킷에 저장해야하는 로직을 구현할 일이 있었다. 아래는 이미지를 컨트롤러에서 받아 리사이징 하는 코드이다. Using Java Library public class ImageUtils { public static File multipartFileToFile(MultipartFile multipartFile) throws IOException { File file = new File(multipartFile.getOriginalFilename()); multipartFile.transferTo(file); return file; } public static BufferedImage resizeImage(MultipartFile image, int maxW..
-
[Java] 클래스 로드와 클래스 초기화 (StaticInnerClass, InnerClass, MemoryLeak)프로그래밍 언어/Java 2022. 11. 6. 14:21
코드리뷰를 받던 중, "왜 내부클래스를 static 으로 선언하셨어요?" 라는 질문을 받게 되었다. 학생때부터 어떤 이유 때문에 습관적으로 써왔던 것이지만 기억이 안나던 나는 어버버 했다. 그 후 검색을 하여 메모리누수 때문이었다는게 기억이 났고, 다시 리뷰어분과 말씀을 나눴다. 그리고 다시 이런 질문을 받았다. "static 도 메모리에 올라가고, non-static 도 메모리에 올라가는건 마찬가지 아닌가요? 인스턴스가 초기화 되지 않으면 메모리에 안올라가는건 non-static 이지 않나요?" 클래스 로드와 클래스 초기화는 다르지 않나? 다른게 맞나..? static 은 클래스뼈대만 stack 영역에 올라가고, 인스턴스 초기화에만 heap 에 올라가는게 아닌가? non-static 은 인스턴스 초기화..
-
[Java/Kotlin] Static nested class 와 Inner Class 중 무엇을 써야할까?프로그래밍 언어/Java 2022. 11. 6. 14:10
불필요한 메모리사용과 메모리 누수를 피하려면 중첩클래스를 사용할 때 Static Nested Class 를 사용하는 것이 좋다. Static Nested Class 중첩 클래스 중, static 키워드를 붙인 내부클래스를 지칭한다. (Java) 중첩 클래스 중, 키워드 없는 내부클래스를 지칭한다. (Kotlin) Inner Class 중첩 클래스 중, 키워드 없는 내부클래스를 지칭한다 (Java) 중첩 클래스 중, inner 키워드를 붙인 내부클래스를 지칭한다. (Kotlin) 인스턴스 생성 시 // JAVA class A { class B{} static class C{} } 위의 예제 코드를 바탕으로 Static Nested Class 는 인스턴스를 생성하면 C 클래스만 생성된다. 반면에, Inner..
-
[Kotlin] static nested Class, inner Class 문법 정리프로그래밍 언어/Kotlin 2022. 11. 6. 13:54
문법 Java keyword Kotlin keyword static nested class static class class inner class class inner class 코드 예시 class Item{ class Price{ // = public static class (In Java) } } class Item{ inner class Price{ // = public class (In Java) } } Reference Kotlin과 Java의 Nested and Inner Classes를 알아보고, Nested classes를 왜 사용해야 하는지 알아본다. | I’m an Android Developer. thdev.tech