본문 바로가기
✨ 서울대생이 면접 떨어지고 6개월간 삽질하며 정리한 'CS 정리 노트', 지금 무료로 풀립니다!

Programming Language56

Spring MVC에서 코루틴을 쓰면 정말 성능이 좋아질까? 코틀린 코루틴을 처음 배우면 이런 생각이 든다: "코루틴은 경량 스레드니까, Spring MVC에서 suspend 함수를 쓰면 더 많은 요청을 처리할 수 있겠지?" 하지만 현실은 그렇지 않다. 이 글에서는 왜 Spring MVC에서 코루틴의 이점이 제한적인지, 그리고 언제 진짜 도움이 되는지 알아보자.TL;DRSpring MVC + 톰캣: 요청 1개당 스레드 1개 할당 (코루틴 써도 변하지 않음)톰캣은 코루틴을 모름: suspend 함수도 그냥 일반 함수로 처리코루틴의 이점: 한 요청 내에서의 병렬 처리만 가능진짜 성능 향상: Spring WebFlux 써야 함코루틴에 대한 흔한 오해오해: "코루틴 = 무제한 동시성"@RestControllerclass UserController { @GetMap.. 2025. 7. 3.
인터페이스 설계 철학: 왜 확장함수를 사용하는가? 코틀린 코루틴 코드를 보면서 궁금한 점이 생겼다. CoroutineScope 인터페이스는 단 하나의 프로퍼티만 가지고 있는데, isActive, cancel 같은 기능들은 왜 인터페이스 안에 넣지 않고 확장함수로 만들었을까?interface CoroutineScope { val coroutineContext: CoroutineContext // 이것만!}// 이런 것들은 왜 확장함수로?val CoroutineScope.isActive: Booleanfun CoroutineScope.cancel(cause: CancellationException? = null)operator fun CoroutineScope.plus(context: CoroutineContext): CoroutineScope초보 .. 2025. 6. 25.
[Javascript] MVC, MVP, MVVM 간단히 비교하기 MVC전통적인 방식뷰에서 모델을 직접 참고함 -> 뷰에서 렌더링 시 모델의 정보를 사용컨트롤러는 뷰로부터 이벤트를 받아서 모델을 업데이트 해주는 역할// Model (데이터 및 로직 관리)class Model { constructor() { this.text = "Hello, MVC!"; } updateText(newText) { this.text = newText; }}// View (UI, Model 직접 참조)class View { constructor(model) { this.model = model; // ✅ View가 Model을 직접 참조 this.button = document.createElement("butt.. 2025. 3. 6.
[Javacript] 동기와 비동기, 이벤트 루프와 태스크 큐 동기 처리코드를 순차적으로 실행하는 방식앞의 작업이 완료될 때까지 다음 작업은 실행되지 않고 대기함직관적이고 코드 흐름을 이해하기 쉬우나, 오래 걸리는 작업이 전체 프로그램을 차단할 수 있음console.log("A");function syncTask() { for (let i = 0; i 비동기 처리특정 코드의 실행이 끝날 때까지 기다리지 않고 다음 코드를 즉시 실행하는 방식오래 걸리는 작업(네트워크 요청, 타이머 등)을 백그라운드로 넘기고, 그동안 다른 작업이 실행됨코드 흐름이 멈추지 않아 전체 프로그램의 성능이 향상됨console.log("A");setTimeout(() => { console.log("B");}, 1000); // 1초 후 실행console.log("C");// 출력 결과://.. 2025. 2. 23.
[자바스크립트] DOM과 이벤트 DOM이란- 웹 페이지를 트리 구조로 표현한 객체 모델- 브라우저는 HTML 문서를 파싱하여 DOM을 생성하고, 자바스크립트는 DOM을 통해 웹 페이지의 구조와 내용을 조작함DOM의 구조 Hello, DOM! This is a paragraph. Document ├── ├── │ └── └── ├── └── - Document: DOM 트리의 최상위 객체- 각 HTML 요소(, , 등)을 노드로 표현- JavaScript를 통해 이 노드들을 조작DOM 조작 메서드- getElementById: 특정 id를 가진 요소를 찾는다.const title = document.getElementById("titl.. 2025. 1. 5.
[자바스크립트] 배열과 객체 다루기 1. 배열 메서드1.1 map배열의 각 요소를 순회하며, 주어진 콜백 함수의 결과를 새로운 배열로 반환합니다.기존 배열은 변경되지 않습니다.const numbers = [1, 2, 3, 4, 5];const squared = numbers.map((num) => num ** 2);console.log(squared); // [1, 4, 9, 16, 25]console.log(numbers); // [1, 2, 3, 4, 5] (원본 배열은 변경되지 않음)1.2 filter배열의 각 요소를 순회하며, 주어진 조건에 일치하는 요소들로만 새로운 배열을 반환합니다.기존 배열은 변경되지 않습니다.const numbers = [1, 2, 3, 4, 5];const evenNumbers = numbers.filter.. 2025. 1. 5.