프로그래밍 언어
-
[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] 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
-
[Kotlin] 코틀린에서 JPA Lazy Loading 적용하기프로그래밍 언어/Kotlin 2022. 9. 25. 21:00
실컷 열심히 API 를 작성하고 뿌듯해하며 테스트코드를 작성하여 실제 쿼리호출을 확인하였다. ??? 왜 쿼리가 예상한 것보다 더 나가지 ??? 상황은 아래와 같았다. A 엔티티 -> B 엔티티 (@OneToMany, Lazy Fetch) A 엔티티 -> C 엔티티 (@OneToOne, Lazy Fetch) A 엔티티 단독 조회 -> A,B,C 조회쿼리 발생 어디선가 getter 가 호출된 것인가... 아무리 찾아도 getter 가 호출된 흔적은 찾을 수 없었다. 그래서 구글링 결과 아래와 같은 포스팅을 만나게 되었다. 코틀린에서 하이버네이트를 사용할 수 있을까? | 우아한형제들 기술블로그 {{item.name}} 신규 시스템을 개발하면서 코틀린과 하이버네이트를 함께 사용한 경험을 나누기 위해 작성해봅니다..