분류 전체보기

    MySQL 데이터베이스(DB)에 배열 넣기 (feat. JSON)

    MySQL 데이터베이스(DB)에 배열 넣기 (feat. JSON)

    일반적으로 배열의 값을 데이터베이스(DB)에 넣기 보다는, 별도의 테이블에 저장하고, 해당 테이블과 원래 테이블 간의 관계를 생성합니다. 즉 정규화를 하는 것인데 이를 통해 배열 요소의 개별 검색, 수정, 추가가 용이해지는 장점이 있지만, 배열의 크기가 크거나 굳이 정규화를 하지 않아도 될 경우에도 정규화를 하게 되면 성능 문제가 발생할 수 있습니다. 때문에 배열 그대로 테이블에 집어넣는 방법에 대해서 알아보도록 하겠습니다. 문자열로 저장하는 방법 `배열 자료형`을 `문자열`로 변환하고, 그대로 테이블에 문자열 컬럼으로 저장해버리는 방법입니다. 배열을 넣을 때는 문자열로 변환하여 저장하고, 가져올 때는 문자열을 불러와 파싱하여 배열 자료형으로 만들어 사용하면 됩니다. 1) org.json 라이브러리 의존..

    Java 동기화와 비동기 처리

    Java 동기화와 비동기 처리

    데이터 동기화와 비동기 처리는 멀티 스레드 환경에 대해서 공부하다보면 많이 접할 수 있는 용어입니다. 이 용어들에 대한 개념들을 명확하기 위해 포스팅을 해보려 합니다. 동기화 동기화는 여러 스레드가 공유하는 데이터에 대한 접근을 조절하여 데이터의 일관성과 안정성을 보장하는 것을 의미합니다. 동기화를 사용하면 한 스레드가 공유 자원을 사용할 때 다른 스레드가 동일한 공유 자원에 접근할 수 없도록 통제하는 것을 말합니다. 동기화는 `상호 배제`를 통해 데이터 경쟁 상태를 방지합니다. 상호 배제 방법으로 뮤텍스, 세마포어 방식이 사용됩니다. 경쟁 상태: 멀티스레드 환경에서 두 개 이상의 스레드가 공유 자원에 접근하여 동시에 변경하려고 할 때 발생하는 문제, 데이터 일관성과 안정성이 보장되지 않습니다. 임계 영..

    JS 스와이프 동작 구현을 위한 Swiper API

    JS 스와이프 동작 구현을 위한 Swiper API

    Swiper API Swiper API는 웹 및 모바일 애플리케이션에서 스와이프 동작을 구현하기 위한 JavaScript 라이브러리입니다. 이 API는 사용자의 터치 입력을 감지하고 해당 동작을 가로 스와이프 또는 세로 스와이프로 해석하여 애플리케이션에 반응합니다. Swiper API를 사용하면 다양한 스와이프 기능을 구현할 수 있습니다. 일반적으로 스와이프 기능은 이미지 슬라이더, 캐러셀, 슬라이드 메뉴, 드래그 앤 드롭 등의 인터랙티브한 기능을 구현하는 데 사용됩니다. 주요 메서드 new Swiper(container, options) Swiper 인스턴스를 생성하는 메서드입니다. container는 Swiper 컨테이너 요소의 선택자 또는 DOM 객체이고, options는 Swiper의 옵션을 설정..

    JAVA ThreadPoolExecutor을 이용한 스레드 풀(Thread Pool)

    JAVA ThreadPoolExecutor을 이용한 스레드 풀(Thread Pool)

    스레드 풀 스레드 풀(Thread Pool)은 스레드를 미리 생성하고 관리하는 기법입니다. 병렬 작업 처리가 많아지면 스레드의 개수가 증가하게 되고 그에 따른 스레드 생성과 스케줄링으로 인해 어플리케이션 성능이 저하가 됩니다. 스레드 풀을 사용하면 스레드 생성 및 제거에 따른 오버헤드를 줄이고, 스레드의 재사용성을 높여 성능을 향상시킬 수 있습니다. 일반적으로 스레드 풀은 고정된 크기의 스레드 집합을 가지며, 작업을 수행하기 위해 해당 스레드를 사용합니다. 스레드 풀을 생성하고 관리하며 스레드를 처리하기 위해 Java에서는 `Executor` 인터페이스를 제공해줍니다. 개발자는 Runnable을 이용하여 작성만 해주면 스레드를 생성해서 작업을 처리하고, 처리가 완료되면 스레드를 제거하고 종료하는 작업을 ..

    Spring @RequestParam/@PathVariable/@RequestBody/@RequestHeader/@CookieValue

    Spring @RequestParam/@PathVariable/@RequestBody/@RequestHeader/@CookieValue

    Spring Framework에서 Controller 메서드의 매개변수와 함께 사용되는 어노테이션들을 정리해보겠습니다. 이들은 클라이언트의 요청에서 데이터를 추출하거나 전달되기 위해서 주로 사용되며 각 어노테이션은 서로 다른 용도와 사용 방식을 가지고 있습니다. `@RequestParam`: 요청 매개변수 값 취득 `@PathVariable`: 경로 변수 값 취득 `@RequestBody`: 요청 본문(body)에서 데이터를 추출, JSON 또는 XML 같은 형식의 데이터를 컨트롤러 메서드의 매개변수로 변환합니다. `@RequestHeader`: 요청 헤더 값 취득 `@CookieValue`: 쿠키 값 취득 @RequestParam 요청 매개변수를 추출하는데 사용됩니다. URL 쿼리 문자열이나 POST ..

    Spring web.xml, root-context.xml, servlet-context.xml

    Spring web.xml, root-context.xml, servlet-context.xml

    web.xml은 웹 애플리케이션의 배포 설명자 파일로, 웹 어플리케이션의 구성과 설정을 정의하는 XML 파일입니다. root-context.xml과 servlet-context.xml은 web.xml에서 로드되는 Spring 구성 파일입니다. root-context.xml은 전역적인 빈을 servlet-context.xml은 웹 계층과 관련된 빈을 설정합니다. 이를 통해 Spring 웹 애플리케이션의 구성과 설정을 모듈화하고 관리할 수 있습니다. web.xml Java 웹 애플리케이션의 배포 설명자 파일(Deployment Descriptor)로, 웹 애플리케이션의 구성과 설정을 정의하는 XML 파일입니다. 즉 설정을 위한 설정 파일입니다. 처음 WAS가 구동될 때 각종 설정을 정의해줍니다. root-c..

    Vue.js 유용한 Plugin

    Vue.js 유용한 Plugin

    Prettier 코드를 자동 정렬해줍니다. Rainbow Brackets 괄호 별로 색을 구분지어 주고 매칭시켜주기 때문에 가독성을 높여줍니다. Auto Close Tag & Auto Rename Tag 자동으로 태그를 닫아주고 태그 이름을 수정 시 나머지 태그도 자동 수정해줍니다. Live Server 개발 로컬 서버에서 Live Reload 해주어 실시간 확인이 가능합니다. Vetur 뷰의 코드 하이라이팅을 지원해줍니다. 문법 강조, 코드 자동 완성, 디버깅 등 지원해줍니다. Vue 2 Snippets .vue 파일 생성시 처음 입력해야 하는 코드를 자동 완성 해주는 기능입니다. Vue 3 이용하는 사람은 `Vue 3 Snippets`를 설치해주면 됩니다.

    Eclipse 유용한 Plugin

    Eclipse 유용한 Plugin

    Darkest Dark Theme Eclipse Marketplace에서 설치가 가능합니다. 여러가지 테마로 가독성이 향상됩니다. (IntelliJ Dark Theme 가능) 설치시 테마만 바꿀거면 `DevStyle with CodeTogether Bundle` 해제해도 상관없습니다. MyBatipse 이클립스에서 MyBatis를 작성하는데 편리함을 제공합니다. [ctrl + 좌클릭]으로 mapper와 xml을 이동할 수 있고 자동완성을 제공합니다. Eclipse Marketplace에 설치가 되지 않는다면 https://github.com/mybatis/mybatipse#installation 링크에서 확인하여 다른 방법으로 설치해주면 됩니다. DBeaver DB TOOL로 저는 따로 설치하여 사용했기..