프로그래밍 언어 7

[JavaScript]DOM 변경 감지하기 (MutationObserver 활용법)

웹 페이지를 동적으로 구성하다 보면 DOM의 변경을 감지하고 이에 반응해야 하는 상황이 자주 생긴다. 이러한 경우 가장 강력한 툴 중 하나가 바로 MutationObserver이다. 이 글에서는 MutationObserver의 개념부터 사용법, 실전 예제까지 자세히 알아보자.MutationObserver란?MutationObserver는 DOM 트리 내의 변경 사항을 비동기적으로 감지할 수 있게 해주는 Web API다. 이전에는 DOMSubtreeModified, DOMNodeInserted 같은 오래된 이벤트를 사용했지만, 성능 이슈와 브라우저 지원 문제로 인해 MutationObserver가 권장되고 있다.사용법1. 기본 구조const observer = new MutationObserver((mut..

[JavaScript]async & await는 어떻게 작동할까?

UI를 수정해야 하는 업무를 하다가, 이전에 작성된 코드들을 살펴보니 async function이 생각보다 많이 사용되고 있다는 걸 알게 되었다.async/await 개념 자체는 알고 있었지만, 이번 기회에 실제로 어떻게 동작하는지를 제대로 정리해보고 싶어 이 글을 쓰게 되었다.기존에는 "생성" 버튼을 누르면 서버로 데이터를 전송하면서 작업이 생성되고, 이후 사이드바의 버튼이 "취소" 버튼으로 바뀌는 흐름이었다.그런데 이번에는 작업이 정상적으로 생성된 후에 버튼이 바뀌도록 로직을 수정해야 했고, 그 과정에서 async/await의 작동 방식에 대해 다시 생각해보게 되었다.async와 await는 어떻게 동작할까?async/await는 JavaScript에서 비동기 작업을 처리할 때 사용하는 문법이다.Pr..

[Java] ByteBuffer 사용 시 `flip()`을 호출해야 하는 이유

Java의 ByteBuffer를 사용할 때, 데이터를 저장한 후 바로 출력하거나 반환하면 예상과 다른 결과가 발생할 수 있다.이는 Buffer가 쓰기 모드와 읽기 모드를 명확히 구분하기 때문이다.이 문서에서는 flip() 메서드가 필요한 이유와 사용 방법을 설명한다.🔹 Buffer의 동작 방식ByteBuffer는 내부적으로 position, limit, capacity 세 가지 속성을 관리한다.position: 현재 읽기 또는 쓰기 위치limit: 읽거나 쓸 수 있는 최대 위치capacity: 버퍼의 전체 크기📌 데이터를 쓰는 과정position은 0에서 시작한다.put() 메서드를 호출할 때마다 position이 증가한다.데이터를 모두 입력하면 position은 마지막 데이터를 가리키게 된다.Byt..

[Java] Map 컬렉션(키-값 구조)

✅ 특징키-값(Key-Value) 저장: Map은 데이터를 키와 값의 쌍으로 저장합니다.중복된 키 없음: 동일한 키로 값을 저장하면 기존 값이 덮어쓰여집니다.빠른 검색: 키를 통해 값을 빠르게 조회할 수 있습니다.📌 주요 구현 클래스HashMap해시 테이블을 기반으로 구현되어 빠른 검색과 삽입/삭제가 가능합니다.순서를 보장하지 않으며, null 키와 null 값을 허용합니다.import java.util.*;public class HashMapExample { public static void main(String[] args) { // HashMap 생성 Map map = new HashMap(); // 요소 추가 map.put("Java", 1); ma..

[Java]Set 컬렉션(순서 없음, 중복 불허용)

✅ 특징순서 없음: Set은 요소의 순서를 보장하지 않습니다. 즉, 삽입된 순서대로 저장되지 않으며, 순차적 접근이 불가능합니다.중복 불허용: Set은 동일한 값을 두 번 저장할 수 없습니다.인덱스 없음: Set은 인덱스를 사용한 접근을 지원하지 않으며, 요소를 찾거나 처리하려면 반복문을 사용해야 합니다.📌 주요 구현 클래스HashSet해시 테이블을 기반으로 구현되어 빠른 검색과 삽입/삭제가 가능합니다.순서를 보장하지 않으며, 중복된 값을 허용하지 않습니다.import java.util.*;public class HashSetExample { public static void main(String[] args) { // HashSet 생성 Set set = new HashSet();..

[Java] List 컬렉션(순서 유지, 중복 허용)

✅ 특징순서 유지: List는 요소가 삽입된 순서대로 저장되며, 인덱스를 통해 접근할 수 있습니다.중복 허용: 동일한 값을 여러 번 저장할 수 있습니다.인덱스 기반 접근: 각 요소는 0부터 시작하는 인덱스를 가지며, 해당 인덱스를 통해 접근 가능합니다.📌 주요 구현 클래스ArrayList배열 기반의 동적 리스트입니다.크기가 자동으로 조정되며, 인덱스를 통한 빠른 검색이 가능합니다.삽입/삭제 시 성능이 떨어질 수 있음 (특히 중간에 삽입/삭제).예제: ArrayListimport java.util.*; public class ArrayListExample { public static void main(String[] args) { // ArrayList 생성 ..

[Java] 자바 컬렉션 프레임워크란?

널리 알려져 있는 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 관련된 인터페이스와 클래스들을 java.util 패키지에 포함시켜 놓았는데 이를 컬렉션 프레임워크라고 한다. (출처 :  이것이 자바다)✅ 인터페이스 분류인터페이스 분류특징구현 클래스CollectionList- 순서를 유지하고 저장한다.- 중복 저장이 가능하다.ArrayList, Vector, LinkedListSet- 순서를 유지하지 않고 저장한다.- 중복 저장이 안된다HashSet, TreeSetMap- 키와 값으로 구성된 엔트리로 저장한다.- 키는 중복 저장이 안된다.HashMap, HashTable, TreeMap, Properties List와 Set은 객체를 추가, 삭제, 검색하는 방법에 있어 공통점이 있..