분류 전체보기 233

JDBC vs SQL Mapper vs ORM

JDBC, SQL Mapper, ORM은 모두 데이터베이스와 애플리케이션 간의 상호작용을 위해 사용되는 기술들이지만, 각기 다른 추상화 수준과 개발 방식이 적용됩니다. 간단한 코드 예시와 함께 이 세 가지의 차이점을 비교해보겠습니다. 1. JDBC (Java Database Connectivity)특징직접적인 SQL 사용: JDBC는 SQL 쿼리를 직접 작성하여 데이터베이스와 통신하는 방식입니다.낮은 추상화 수준: 데이터베이스와의 상호작용을 상세하게 제어할 수 있으며, 데이터베이스 특화된 기능을 쉽게 사용할 수 있습니다.장점제어력: 모든 SQL 쿼리와 연결 관리를 세밀하게 제어할 수 있습니다.성능 최적화: 성능에 민감한 작업에서 SQL 쿼리를 최적화하기 쉽습니다.단점반복 코드: 자주 사용하는 코드(예: ..

SQL 2024.09.25

[HTML] 자바스크립트 임포트 위치

HTML 문서에서 자바스크립트 파일을 임포트하는 위치는 성능과 사용자 경험에 영향을 미칠 수 있습니다. 자바스크립트를 어디에 삽입하느냐에 따라 페이지 로딩 시간, 초기화 속도, 그리고 페이지 렌더링에 차이가 발생합니다.주요 위치와 각각의 장단점을 살펴보겠습니다.1. - 장점 자바스크립트의 조기 실행: 자바스크립트가 페이지 로딩 초기에 실행되어야 할 때 유용합니다. 예를 들어, 초기 설정이나 중요한 데이터 로드가 필요할 때 사용할 수 있습니다. - 단점렌더링 차단: 자바스크립트 파일이 로드되고 실행될 때까지 HTML 파싱이 중단됩니다. 이는 페이지의 초기 렌더링 속도를 느리게 만듭니다. 2. 태그 끝에 위치 - 장점 렌더링 최적화: HTML 파싱과 렌더링이 완료된 후에 자바스크립트를 ..

Frontend/html 2024.07.05

[JavaScript] 호이스팅(Hoisting)

호이스팅(hoisting) 이란?자바스크립트에서 변수와 함수의 선언이 해당 스코프의 최상단으로 끌어올려지는 것처럼 동작하는 특성입니다.선언은 스코프의 최상단으로 옮기지만, 초기화(할당)는 그 위치에서 그대로 이루어집니다.호이스팅은 함수와 변수를 다르게 처리합니다. 호이스팅(hoisting) 원인실행 컨텍스트의 생성 단계에서 변수와 함수의 선언이 미리 처리되기 때문에 발생합니다.실행 컨텍스트는 자바스크립트 코드가 실행되는 환경을 정의하며, 함수 호출 또는 전역 코드가 실행될 때마다 생성됩니다.실행 컨텍스트는 생성 단계와 실행 단계로 나뉩니다.생성 단계 (Creation Phase)변수와 함수 선언 처리: 실행 컨텍스트가 생성될 때, 자바스크립트 엔진은 먼저 현재 스코프 내의 변수와 함수 선언을 찾아서 메모..

Frontend/javaScript 2024.07.05

HttpURLConnection

HttpURLConnection은 자바에서 HTTP 프로토콜을 사용하여 서버와 통신할 때 사용되는 클래스로  Java의 표준 라이브러리인 java.net 패키지에 포함되어 있습니다.URL을 통해 서버와 연결하고 데이터를 송수신하는 데 사용됩니다. 주요 기능서버와의 연결 설정: URL을 사용하여 서버에 연결하고, HTTP 요청 방법(GET, POST 등) 및 다양한 속성을 설정할 수 있습니다.데이터 송수신: 서버와의 연결을 통해 데이터를 송수신할 수 있습니다. 응답 처리: 서버로부터 받은 응답 데이터를 처리하고 응답 코드, 응답 헤더, 응답 본문 등을 확인할 수 있습니다.연결 관리: 연결을 열고 닫는 등의 연결 관리 작업을 수행할 수 있습니다. 사용 예제아래는 간단한 HttpURLConnection을 사용..

Backend/JAVA 2024.06.07

쿠키(Cookie), 세션(Session), 캐시(Cache)

쿠키(Cookie), 세션(Session), 캐시(Cache)는 웹 애플리케이션에서 데이터를 저장하고 관리하는 데 사용되는 세 가지 주요 개념입니다. 쿠키(Cookie)쿠키는 클라이언트 측(웹 브라우저)에 저장되는 작은 데이터 파일입니다. 주로 사용자와 웹 서버 간의 상태 정보를 저장하고 유지하는 데 사용됩니다.저장 위치: 클라이언트(웹 브라우저)수명: 서버가 설정한 만료 시간까지 지속됨. 만료 시간 없이 설정된 쿠키는 브라우저 세션이 끝나면 삭제됨.사용 예: 로그인 상태 유지, 사용자 설정 저장, 트래킹 정보 저장장점: 서버 부담 감소, 사용자의 장치에 데이터 저장 가능단점: 보안 취약성(쿠키 탈취), 저장 용량 제한(일반적으로 4KB) 세션(Session)세션은 서버 측에서 관리되는 데이터 저장 방식..

블록킹큐(Blocking Queue)

Queue의 개념Queue는 컬렉션 프레임워크의 일부로, 데이터를 선입선출(FIFO, First-In-First-Out) 방식으로 저장하고 관리하는 자료구조입니다. 큐는 주로 데이터의 순서를 유지하면서 처리해야 하는 상황에서 사용됩니다.  BlockingQueue의 개념Queue를 상속 받아, 큐의 기본작업에 블로킹 연이 추가된 인터페이스입니다.동기화된 방식으로 작동하여 여러 스레드가 안전하게 접근할 수 있습니다. BlockingQueue는 큐가 비어 있을 때 요소를 가져오려고 하면 대기하고, 큐가 가득 차 있을 때 요소를 추가하려고 하면 대기합니다. (put, take 함수에서 블락됐을 때 다음 코드가 실행되지 않고 대기하는 걸 볼 수 있다!!)  *블로킹 연산특정 조건이 충족될 때까지 스레드를 일시 ..

Backend/JAVA 2024.06.05

Callable, Runnable, Future

Runnable과 Callable은 둘 다 자바에서 멀티스레딩을 구현할 때 사용되는 인터페이스입니다.두 인터페이스는 스레드가 수행할 작업을 정의하며, ExecutorService와 같은 스레드 풀에서 관리되고 실행될 수 있습니다.RunnableRunnable 인터페이스는 자바에서 멀티스레딩을 구현하기 위한 기본 인터페이스입니다.run 메서드를 하나만 가지고 있으며, 예외 처리와 반환값이 없습니다. (Future.get()을 호출하면 null을 반환)간단한 비동기 작업을 수행할 때 유용합니다. (ex. UI 스레드에서 백그라운드 작업을 수행, 타이머 작업)메서드: void run()public class MyRunnable implements Runnable { @Override public v..

Backend/JAVA 2024.06.05

스레드 풀(Thread Pool), Executor

스레드 풀(Thread Pool)스레드 풀은 일정 수의 스레드를 미리 생성하여 관리하는 기법입니다.작업 큐에  새로운 작업이 들어오면, 스레드 풀에서 사용 가능한 스레드가 해당 작업을 처리하고작업이 완료되면, 해당 스레드는 다음 작업을 위해 다시 풀에 반환됩니다. 사용 이유자원 관리: 스레드 생성과 소멸의 오버헤드를 줄이고, 자원을 효율적으로 관리할 수 있습니다.제한된 스레드 수: 시스템에서 생성할 수 있는 스레드 수를 제한함으로써 자원 고갈 및 성능 저하를 방지할 수 있습니다.응답성 및 처리량 향상: 미리 생성된 스레드를 재사용(작업을 대기상태로 유지)함으로써 성능을 향상시킬 수 있고, 작업이 발생하면 대기 중인 쓰레드 중 하나를 선택하여 작업을 할당하므로, 작업 처리를 병렬로 진행할 수 있습니다. E..

Backend/JAVA 2024.06.05

쿼리 실행 속도 확인

1. SQL 실행 계획 확인MySQL에서는 `EXPLAIN` 키워드를 사용하여 쿼리의 실행 계획을 확인할 수 있습니다. 이 명령은 쿼리가 실행될 때 데이터베이스가 어떤 인덱스를 사용하고, 각 단계에서 얼마나 많은 행을 처리할지를 보여줍니다.EXPLAIN {QUERY};이 명령을 실행하면, 테이블 스캔 방식, 사용된 인덱스, 처리된 행 수 등의 정보를 포함한 실행 계획이 출력됩니다.2. 실제 실행 시간 측정쿼리의 실제 실행 시간을 측정하려면, SQL 콘솔 또는 프로그래밍 언어에서 직접 쿼리를 실행하고 SHOW PROFILE를 사용하여 시간을 측정할 수 있습니다.SET profiling = 1; -- 프로파일링 활성화-- 쿼리 실행{QUERY};SHOW PROFILES; -- 모든 실행된 쿼리의 프로파일..

SQL/RDBMS 2024.05.30

방화벽/IDS/IPS

방화벽(Firewall), 침입 탐지 시스템 (Intrusion Detection System, IDS), 그리고 침입 방지 시스템 (Intrusion Prevention System, IPS)은 모두 네트워크 보안을 강화하기 위한 도구들입니다. 방화벽 (Firewall) 방화벽은 네트워크를 통과하는 트래픽을 모니터링하고 필터링하여 보안 정책에 따라 허용되는 트래픽만 통과시킵니다. 주로 네트워크의 입구 지점에 위치하여 내부 네트워크와 외부 네트워크 간의 통신을 제어합니다. 패킷 필터링, 상태 기반 검사, 프록시 서비스 등의 기술을 사용하여 트래픽을 검사합니다. 침입 탐지 시스템 (Intrusion Detection System, IDS) IDS는 네트워크 또는 시스템에서 이상 행위나 악의적인 활동을 탐지..

study/보안 2024.03.12