Java generic erasure와 ParameterizedTypeReference

TRY Java의 Generic은 컴파일 시 Object로 변경되거나 혹은 bound type(<E extends ExampleObject>) 같은 경우 ExampleObject 로 변경됩니다.. 그렇다면 ParameterizedTypeReference 는 어떻게 동작하는걸까요? CATCH Generic erasure 먼저 제네릭 소거는 다음과 같이 제네릭이 사용된 경우 컴파일 시 소거됩니다. // 소거 전 public class ExamClass<T> { private T value; public void set(T value)... [Read More]
Tags: Java Spring

Jvm heap profiling

TRY 자바 앱의 메모리의 사용량이 높게 나와 메모리 누수를 확인하려고 했다. GC등 정상적으로 돌고있는 것 같은데 메모리가 조금씩 올라가는 것 같았다. 그래서 heap dump 분석하려한다. [Read More]
Tags: Java JVM Heap

Java Optional의 orElse 와 orElseGet

TRY Java의 Optional을 사용하면서 orElse와 orElseGet, orElseThrow는 정말 많이 사용한다. 그중 평소 orElse와 orElseGet는 그냥 null 값일때 빈 객체등을 받기위해 사용했었는데 이번에 map()등 stream api 메서드들과 사용하면서 의도와는 다르게 동작해 의아했고 또 재밌었다. 같이 보자. [Read More]
Tags: Java Optional

Aws sdk v2 와 Spring-cloud-aws(feat Spring boot3 and s3mock)

TRY S3관련 서비스를 구축하면서 겪었던 문제들이다. Spring boot 3을 사용하면서 다양한 이슈들을 겪었는데 (jakarta등 라이브러리 호환..) 처음 사용했던 Spring-cloud-aws 2버전대가 boot3와 이슈가 있다는 걸 지나가다 보았다. SQS를 이제 곧 사용하게 될텐데 이부분에서 이슈가 있다는 글들이었다. 해당 글들을 확인하고 spring-cloud-aws의 git을 확인하였다. link 이왕이면 호환도 되고 DynamoDB도 추가된 aws sdk v2를... [Read More]
Tags: Java Spring Aws

r2dbc에서 Custom id 사용하기.

문제 save 시 @Id 컬럼을 기준으로 이 객체가 isNew인지 아닌지 체크 repository의 기본 save를 이용 시 새로운 객체로 insert를 해야하는데 update를 하려고 하고, 이때 없는 데이터라 update가 되지않음. [Read More]

grpc protoc 예

protoc -I=. \ –go_out . –go_opt paths=source_relative –go-grpc_out . –go-grpc_opt paths=source_relative proto/pbfile.proto
Tags: Go proto grpc

python 에서 gRPC 테스트 해보기

gRPC란 RPC 란 Remote Procedure Call의 약자로 간편하게 다른 서비스의 함수 프로시저등을 호출할 수 있는 프로토콜이다. 다양한 언어를 지원하므로 언어가 다르거나 한 다른 서비스에 있는 함수나 프로시저를 호출하여 사용할 수 있다. 다양한 언어를 사용하는 MSA 구조에서 더욱 좋을 것 같다. gRPC gRPC는 구글에서 만든 RPC로 TCP/IP 와 HTTP/2를 프로토콜을 사용한다.... [Read More]
Tags: python gRPC

Stream 이란..

자바 Stream 이란 컬렉션에 저장된 요소들을 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. Iterator 와 비슷한 반복자이다. 내부 반복자를 사용해 병렬처리가 쉽다고 한다.(외부는 개발자가 직접 요소를 반복하는 패턴for,while등) 개발자는 로직 코드만 작성해주면 된다. 스트림의 흐름 스트림 생성 > 중간연산 지정(스트림 리턴) > 종료연산을 적용해 결과 리턴(기본이거나 optional) 중간연산(여러번 사용가능)... [Read More]
Tags: java

Junit사용..

Junit이란 단위테스트 도구.. 생각보다 맘처럼 안된다. test class에서 구현하므로 기능추가 시 재사용이나 restdocs같은 문서화가능한 것들과 같이 쓰면 문서 공유도 할 수 있다. [Read More]
Tags: Junit Java

자바는 CallBy???

면접 질문중 자바는 Call By Value와 Call By Reference중 어떤 것이냐는 질문도 있었다는 걸 들었다.. 사실 이런 부분까지 생각해 본 적은 없었다.. 자바는 어떤걸까? 일단 두개가 뭔지 알고 가자 [Read More]
Tags: Study Java

static에 대해

오늘 면접에서 static의 생명주기에 대한 질문을 들었다. static의 용도나 메모리에 한번 올라가고~ 이런건 알았는데 static이 언제 생성되고 언제 소멸하는지는 대충은 생각하고 있었지만 정확한 때는 몰랐던 것이다. 내가 생각하던건 선언될때 생성되고, 프로그램이 종료될때 소멸된다.. 라는 것 [Read More]
Tags: Study Java

해시맵이란

해싱(Hashing)이란 해시함수(hash function)를 이용해서 데이터를 해시테이블(hash table)에 저장하고 검색하는 기법을 말한다. [Read More]
Tags: Study Java

웹소켓과 쓰레드

WebSocket이란 웹소켓(WebSochet)은 서버와 클라이언트 간의 효율적인 양방향 통신을 실현하기 위한 구조 Transport protocol의 일종으로 쉽게 이야기하면 웹버전의 TCP 또는 Socket (소켓)이다. WebSocket은 서버와 클라이언트 간에 socket connection을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술 Real-time web application에 쓰이며 서버 쪽 또는 클라이언트 쪽 데이터가 실시간으로 업데이트 되는... [Read More]
Tags: Study Java

Test를 위한 @ 및 메소드

@RunWith JUnit 확장 하는 어노테이션이며 SpringJUit4classRunner로 JUnit용 테스트 컨텍스트 프레임 워크 확장 클래스를 지정하면 테스트 진행 시 컨텍스트를 생성하고 관리하는 작업을 한다. [Read More]
Tags: Study JUnit

스프링부트 회원가입,글쓰기

회원가입 GET /users/join - 회원가입 폼이 보여진다. name,nickName, passwd, email을 입력 POST /users/join - 회원정보가 저장된다. 이때 USER권한을 가지도록 한다. // config에 permitAll 해야함 .antMatchers(“/users/join”).permitAll() GET /users/welcome - 회원가입후 redirect하여 보여지는 페이지. POST /users/join 를 처리하는 컨트롤러에서는 폼 파라미터를 받아들이기 위해 다음을 사용할 수 있다. @RequestParam 을 이용하여 값을 받을... [Read More]
Tags: SpringBoot

자바 Optional이란?

자바 Optional NullPointerException 을 방지하기 위해 Java8에 Optional 클래스가 추가되었다. if문등을 써 반복적인 null 체크를 방지하기위해 Optional가 추가되었다. [Read More]
Tags: java

람다식

람다식이란 식별자 없이 실행 가능한 함수. 메서드를 하나의 식(expression)으로 표현한 것 메서드를 람다식으로 표현하면 이름과 반환값이 없어지므로 람다식을 ‘익명함수’라고도 한다. 익명함수(anonoymous function), 이름없는 함수, 익명메소드 익명객체… [Read More]
Tags: java

쓰레드

자바 쓰레드Java Thread의 정의를 알기 전에 프로세스Process에 대해 알아야 합니다. [Read More]
Tags: java