티스토리 뷰

Item59에서는 라이브러리를 익히고 사용하라 말한다

예시로 Java의 Random 클래스의 random 메서드를 들었는데 내부 구현의 허점으로 이상적으로 동작하지 않는다고 한다

약 2/3 정도가 중간 값보다 낮은 쪽으로 쏠린다고 한다

다행히도 Random.nextInt() 메서드는 이를 보완해서 나왔고 일반적인 상황에서는 충분히 사용 가능하다

더 나아가 자바7 이상부터는 ThreadLocalRandom을 사용하라 한다

ThreadLocalRandom은 ThreadLocal과 Random을 짬뽕해 만들었다고 하고 Random보다 더 나은 성능을 보인다고 한다

또한 Fork-Join Pool을 사용해 병렬 처리를 할 때는 SplittableRandom을 사용하라 한다

 

그럼 ThreadLocalRandom 사용하면 되겠거니 싶겠지만 암호학 상 안전하지 않으니 

security-sensitive 환경에서는 SecureRandom을 사용하라 한다

사이드 프로젝트가 아니라면 보안이 중요하지 않은 곳이 없을 테니 SecureRandom을 사용하면 되겠다

난수 생성 하나에도 정말 길고 긴 여정이다

 

https://stackoverflow.com/questions/44502167/should-i-prefer-threadlocalrandom-or-securerandom#:~:text=Instances%20of%20ThreadLocalRandom%20are%20not%20cryptographically%20secure.%20Consider%20instead%20using%20SecureRandom%20in%20security%2Dsensitive%20applications.

 

 

이와 비슷한 사례로 java + springboot 프로젝트에 JWT 도입할 때 어떤 라이브러리를 사용하느냐를 들 수 있겠다

com.auth 어쩌구랑 jjwt랑 또 있을지도 모르겠는데 나는 학습 차원에서 한 번씩 사용해보고 com.auth 어쩌구가 편해

현재는 얘로 선택해서 다른 프로젝트에도 사용하고 있다, 대단한 이유가 있는 것이 아닌 약간은 무지성 선택이었다

공부할 때는 이거저거 써보고 더 간편한 거 빠른 거 등을 선택하면 되는 아주 간단한 초이스인데

실무를 접하고 보니 실무는 정말 차원이 다른 것 같다

오래 준비해서 좋은 직장으로 바로 가는 것보다 일단 취업해서 일하면서 공부하라는 데는 다 이유가 있는 것이었다

라이브러리 하나 선택하는데도 호환성 & 보안 & 성능 이슈는 없을지 등등 고민할 것이 정말 많다

 

요즘은 Spring MVC 내부 구현에 대해 조금씩 파보고 있는데 정말 방대하게 느껴진다

인프런에서 MVC 강의 몇번 보고 MVC 할만하고만 하고 까불었는데 내부를 파볼수록 어질어질하다

그동안엔 이런 것들이 뭔 역할을 하는지도 모르고도 웹을 뿅 하고 개발했었는데 알고 보니

스프링이 얼마나 추상화를 잘해뒀고 스프링부트가 auto-configuration을 잘해뒀는지 감탄이 나온다

얼마 전 ModelAttribute, RequestBody, Jaxb 등의 매핑 방식이 어떻게 되는지를 파보던 중

도대체 스프링을 어느 정도까지 알아야 하는가 싶어서 살짝 현타가 왔었다

5월이면 끝날 줄 알았던 이펙티브 자바 정리를 아직도 못 끝낸 것도 한몫했다

에라 모르겠다 씩씩하게 다시 가야지, 천천히 해도 2022년엔 끝내겠지?!

댓글
링크
글 보관함
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday