[개발 일기] 2025.05.22 - JavaScript 얕은 복사?
·
개발 일기
💡개요 리팩터링 2탄을 읽다가 JS의 얕은 복사 코드를 봤는데, 너무 어색하다. 자바에선 사용해본 적이 없는 문법이라서 그런 것 같다. 이게 뭔지 정리좀 해보자. 🛠️ 얕은 복사 자바스크립트의 얕은 복사란 객체나 배열을 복사할 때, 최상위 수준의 값만 복사하고 중첨된 객체나 배열은 참조값만 복사하는 방식이다. ..? 뭔 말이고.. 자바를 사용하는 난 난생 처음들어보는 문장이다. 쉽게 설명해보자면 int나 double, boolean 같은 기본 타입은 값 자체가 복사돼서 완전히 독립적인 복사본이 만들어진다. 반면, 배열이나 객체는 참조 타입이라서 얕은 복사를 하면 원본의 주소(참조)를 공유하게 된다. ⚙️ 기본 값 복사let a = 10;let b = a; // 값 복사b = 20;con..
[개발 일기] 2025.05.21 - 점진적인 개선 (Feat : 클린코드)
·
개발 일기
💡 개요 오늘은 개발 서적 클린코드의 ‘14장-점진적인 개선’ 부분을 읽으면서 느낀 점을 정리해 보자. 🛠️ 점진적인 개선 클린코드의 14장은 거의 90%가 코드이다… 대부분 애플리케이션의 main() 메서드가 받는 파라미터를 관리하는 Args 관련 코드의 점진적인 개선에 관련된 코드이다. 굉장히 지저분한 코드에서 점차 깔끔한 코드로 발전해나가는 모습이 인상적이니까, 꼭 읽어보면 좋슴다. 그래서 간략하게 저자가 하고싶은 말을 정리만 해보자. 일단 14장의 이름인 ‘점진적인 개선’ 이라는 의미는 일단 ‘1차 초안을 작성해서 점진적으로 개선하자?’ 나쁜 건 아니다. 근데 그건 진짜 어렵다. 많은 신입 개발자들은 ‘일단 코드를 작성하자!’ 라고 생각하고, 만약 정상적으로 동작하면 ‘어? 되네?..
[개발 일기] 2025.05.20 - XSS
·
개발 일기
💡 개요 HttpOnly 형태의 쿠키를 사용하면 XSS을 방지할 수 있다는데 도대체 XSS은 뭐고, 무슨 원리로 XSS을 방지할 수 있는 것일까..? 🛠️ XSS (Cross-Site Scripting) XSS(Cross-Site Scripting)란 크로스사이트 스크립팅의 약자로 웹 사이트의 게시판과 같은 기능에 공격자가 임의의 스크립트 코드를 삽입해 개발자의 의도와 전혀 다른 기능이 수행되게 하는 공격이다. 보통 많은 해커들은 Origin 서버를 공격하지만, XSS는 클라이언트 측을 공격하는 방식이다. XSS의 방식은 크게 Reflected XSS, Stored XSS, DOM based XSS로 나뉜다. ⚙️ Reflected XSS 가장 많이 사용되는 XSS 방식으로 사용자의 입력값..
[개발 일기] 2025.05.19 - ConcurrentHashMap이 HashMap보다 빠른 이유
·
개발 일기
💡 개요 클린코드 책의 동시성 파트에서 ConcurrentHashMap이 HashMap보다 빠르다고 나와있다. 어..? 왜..? 🛠️ ConcurrentHashMap [개발 일기] 2025.04.26 - Collections.synchronizedXXX() vs Concurrent Collections ConcurrentHashMap과 HashMap의 차이점은 위 글에서 확인할 수 있다. 간략하게 차이점을 정리하면 동기화 지원 여부의 차이이다. ConcurrentHashMap은 동기화를 지원하기 때문에 멀티스레드 환경에서도 안전하게 동작한다. 하지만 내부에서 동기화 작업을 수행한다면 당연히 동기화 작업을 수행하지 않는 HashMap보다 느려야 하는 게 정상 아닌가?? 일단 Concurr..
[개발 일기] 2025.05.18 - Spring Flux을 많이 사용하지 않는 이유?
·
개발 일기
💡 개요 오늘은 Spring에서 제공하는 비동기 프로그래밍 기술인 Spring Flux이 실제론 많이 사용되지 않는다고 하는데, 이 이유에 대해 정리해 보자. TMI : 오늘 코테봄. 그래서 피곤하다.. 😥 🛠️ Spring Flux Spring Flux는 기본적으로 동기 방식을 사용하는 서버(Spring MVC)를 비동기 방식을 사용할 수 있도록 해주는 프레임워크 기술이다. 사실 난 비동기 방식을 구현해 본 경험이 거의 없다. (동기도 잘 못하는데..) 굳이 비동기 방식과 관련된 경험을 따지자면, Spring Cloud Gateway를 사용할 때 비동기적인 방식이 기본 동작 방식이라, WebFlux를 어쩔 수 없이 사용하게 된 정도다. 그렇다면 Flux을 왜 많이 사용하지 않을까? ..
[개발 일기] 2025.05.17 - 비동기와 멀티스레딩?
·
개발 일기
💡 개요 나는 지금까지 비동기와 멀티스레딩이 유사한 개념이라고 생각했다. 아니, 거의 동일한 개념이라고까지 여겼다. 그래서 오늘은 이 두 개념이 어떻게 다르고, 어떻게 엮일 수 있는지를 정리해보려 한다. 🛠️ 비동기 vs 멀티스레딩 먼저 비동기란, 작업을 요청한 후 그 작업이 끝날 때까지 기다리지 않고 다음 작업을 바로 처리하는 방식이다. 즉, 어떤 요청을 보냈을 때, 그 요청의 처리가 완료되기를 기다리지 않고 콜백, 이벤트 루프 등을 활용하여 나중에 그 결과를 받아 처리한다. 이 방식은 주로 하나의 스레드로 여러 작업을 다루는 데 효과적이며, 특히 I/O 작업이 많은 시스템에서 성능을 높이는 데 유리하다. 참고로 하나의 스레드로도 비동기 작업이 가능한 이유는, I/O 작업의 경우엔 CP..