전체 글

전체 글

    [HTTP] GET 과 POST 의 차이

    HTTP 의 두 주요 메서드인 GET 과 POST 는 어떤 차이가 있을까?GET 은 서버에 데이터를 요청하는 용도로, POST 는 서버로 데이터를 전송할 때 쓴다.1. 데이터 위치GET /search?q=카트라이더POST /api/logindata: {"id":"user","pw":"1234"}GET 은 URL 에 파라미터를 붙여 데이터를 보낸다.POST 는 HTTP 헤더의 Body 에 데이터를 담아 전송한다.URL 에 데이터가 들어가면 주소창에 그대로 표시된다.POST 는 화면에 노출되지 않아 보안상 유리한 편이다.2. 데이터 길이 제한// GET 은 브라우저마다 한계가 있다.GET /search?q=매우긴문장+여러개... // 에러 발생 가능// POST 는 헤더 설정으로 길이를 늘릴 수 있다.POS..

    [Spring] @Component, @Service, @Repository 차이

    스프링 빈을 등록할 때 어떤 어노테이션을 써야 할지 고민된다면 이 글을 보자.컴포넌트 스캔으로 자동으로 감지하는 기본 스테레오 타입들이다.1. @Component@Componentpublic class MyBean {}모든 스프링 빈을 등록할 때 쓸 수 있는 가장 일반적인 어노테이션이다.특정 역할을 명시하지 않고 단순히 객체를 관리할 때 사용한다.컨테이너가 이를 스캔해서 빈으로 등록하고 의존성 주입을 처리한다.2. @Service@Servicepublic class UserService {}비즈니스 로직이 포함된 서비스 계층을 정의할 때 쓴다.기능적 의미는 @Component 와 동일하지만 코드 가독성을 높여준다.팀원들이 어떤 클래스가 비즈니스 역할을 하는지 한눈에 알 수 있다.3. @Repository..

    [Database] 인덱스를 만들었는데 안 타는 경우

    인덱스를 만들었음에도 불구하고 쿼리가 느린 이유는 무엇일까?인덱스는 검색 속도를 높이기 위한 자료 구조지만 모든 조건에서 효과가 있는 것은 아니다.1. select * 사용 시SELECT * FROM users WHERE id = 1;select * 를 쓰면 인덱스 스캔 이후 전체 행을 가져와야 한다.이때 DB 는 인덱스 대신 테이블 전체를 읽는 방식인 Table Scan 을 선택할 수 있다.필요한 컬럼만 명시적으로 선택해야 인덱스를 효율적으로 활용할 수 있다.2. 함수 적용 시SELECT * FROM users WHERE YEAR(reg_date) = 2023;컬럼에 함수를 적용하면 인덱스를 직접 사용할 수 없게 된다.DB 는 먼저 모든 행을 가져와서 함수 계산 후 필터링해야 하기 때문이다.함수 대신 ..

    [JavaScript] var, let, const 차이

    자바스크립트에서 변수를 선언할 때 무엇을 써야 할지 고민되는가? var, let, const의 핵심 차이는 스코프와 재할당 가능 여부에 있다. 상황에 맞는 적절한 키워드를 선택하는 것이 버그를 줄이는 첫걸음이다.1. 변수의 유효 범위: 스코프(Scope)var는 함수 레벨 스코프를 가진다. 함수 내부에서 선언된 변수만 지역 변수로 인정하며, if문이나 for문 같은 블록 내부에서 선언해도 외부에서 접근이 가능하다. 반면 let과 const는 블록 레벨 스코프를 따른다. 중괄호 `{}`로 둘러싸인 모든 블록을 기준으로 유효 범위가 결정된다.if (true) { var varVariable = 'I am var'; let letVariable = 'I am let'; const constVariable..

    ORACLE DB LINK 정의 및 사용 방법

    Oracle DB link 란? 말그래도 'LINK', 서로 다른 DB를 연결한다는 뜻.그리고 연결을 위한 타DB 접속설정을 정의하는 오라클 객체 를 DB Link라고 함.그냥 쉽게 다른 DB에 접근하는 걸 DB Link라 이해하면 쉽다.1. 모든 DB LINK 목록 조회SELECT *   FROM DBA_DB_LINKS; 2. DB LINK 사용 방법SELECT A.*   FROM 테이블명@DB_LINK명 A; 3. DB LINK 두 개이상 조회 방법SELECT A.*, B.*   FROM 테이블1명@DB_LINK1명 A,              테이블2명@DB_LINK2명 B WHERE A.ID = B.ID     AND A.NO = B.NO

    JSON.stringify(value, replacer, space) 설명

    JSON.stringify(value, replacer, space) 메서드는 JavaScript 객체를 JSON 문자열로 변환할 때 사용된다.value: JSON 문자열로 변환할 객체. replacer: 포함할 속성을 정의하거나 속성을 변환하는 함수 또는 배열. space: 반환된 JSON 문자열의 가독성을 높이기 위한 공백 또는 문자열 (들여쓰기). const obj = { name: "Alice", age: 30, city: "Wonderland", password: "secret" };// replacer 함수: 'password' 속성을 제외function replacer(key, value) { if (key === "password") { return undefined; } ret..

    [Java] 문자열(String) 비교시 equals()와 == 차이

    우선 두 가지의 정의 후에 차이를 보겠습니다.1. “equals” 메서드 원래 equals()의 경우 Object 클래스의 메서드이고이는 == 연산자와 동일하게 주소 값을 비교를 수행하는 메서드 이다. 흔히 문자열 비교를 위해 사용하는 equals()의 경우 String 클래스에서 오버라이딩을 함으로써 문자열 간의 비교가 가능하다.2. “==” 연산자== 연산자의 경우 객체의 주소값을 비교합니다.그래서 비교하는 객체가 동일한 객체인지를 판별합니다.Primitive Type의 객체에 대해서는 값 비교가 가능하고,Reference Type에 대해서는 주소 비교를 수행합니다. 정리하면,Primitive Type의 객체는 Constant Pool의 특정한 값을 참조하는 변수이기에,결국 Constant Pool내..

    [JavaScript] ==, === 비교 연산자 차이

    Javascript를 사용 중에 값을 비교시엔 비교연산자인 ==연산자와 ===연산자를 사용한다. 두 연산자 모두 비교한 피연산자 값이 일치하면 ture값을 반환하고,비교한 피연산자 값이 일치하지 않으면 false를 반환한다. 하지만 값을 비교할 때== 연산자보다는 === 연산자를 사용할 것을 권장하고 있다. 그 이유가 뭘까? == 연산자는 Equal Operator(비교연산자), ===연산자는 Strict Equal Operator(엄격한 비교 연산자)이기 때문이다. 두 연산자를 코드를 통해 쉽게 예를 들어 보자면 아래와 같다. 1. == 연산자100 == 100 // true100 == '100' // true1 == true // truetrue == 'true' ..

    [CS] 프로세스(Process)와 쓰레드(Thread)의 차이

    프로세스(Process) 운영체제에 의해 메모리 공간을 할당받아 CPU에서 실행/제어되고 있는 프로그램이다. 데이터(data) + 자원(memory) + 스레드(Thread)로 구성돼 실제로 프로그램이 실행되기까지는 스레드가 데이터+자원을 활용하여 작업을 수행한다. - 프로그램은 컴퓨터가 특정 작업을 수행하기 위해 따르는 명령어의 모음쓰레드(Thread) 하나의 프로세스 내에서 여러 개의 실행 흐름(단일, 동시적, 병렬적)을 두어 작업을 효율적으로 처리하기 위한 모델이다. 프로그램 실행하면 JVM이 시작되고 JVM이 시작되면 자바 프로세스가 시작된다. 이 프로세스 안에 스레드가 있다. 여러 프로세스가 공유하는 하나의 스레드가 수행되는 일은 없다. 어떤 프로세스든 하나 이상의 스레드가 수행된다. 두 개 이..

    [SQL] COUNT(*) 과 COUNT(1) 과 COUNT(칼럼명)과 COUNT(DISTINCT 칼럼명)의 차이

    SQL작성시 자주 쓰게 되는 것이집계함수 중 COUNT 이다.SELECT 구절에서지정된 조건의 ROW들의 수를가져오기 위해 사용하는 것으로COUNT(*) 과 COUNT(1) 과 COUNT(칼럼명)의 차이는 아래와 같다.COUNT(*) - NULL 값을 포함한 모든 ROW의 수COUNT (1) - NULL 값을 포함한 모든 ROW의 수  COUNT (칼럼명) - NULL 값의 행은 제외한 ROW의 수 번외로 칼럼에 DISTINCT를 사용한 결과값은 아래와 같다. COUNT (DISTINCT 칼럼명) - NULL값의 행, 중복을 제외한 ROW의 수

    [Spring] MyBatis의 Query 수정 후 WAS서버 재시작없이 반영하기

    Spring과 mybatis 환경에서 MyBais를 사용할때 쿼리를 바꾸고 적용시키기위해서는서버를 재기동해야 적용되는 것이 번거로울 때가 있다.하지만 RefreshableSqlSessionFactoryBean 를 사용하면서버를 재시작하지않고 수정된 쿼리를 적용할 수 있다.이를 사용시 xml mapper 파일들의 수정으로 인한재기동이 없기에 재기동시 발생할 수 있는 오류와번거로움이 줄어들어 더 편하게 개발할 수 있다. 아래는 설정 및 적용시 필요한 코드다.1. RefreshableSqlSessionFactoryBean.java 생성import java.io.IOException;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Meth..

    SDK와 JDK의 차이점

    SDK(Software Development Kit, 소프트웨어 개발 도구) - 일반적으로 소프트웨어 기술자가 사용하여 특정한 소프트웨어 꾸러미, 소프트웨어 프레임워크, 하드웨어 플랫폼, 컴퓨터 시스템, 운영체제 등을 위한 응용 프로그램 등을 만들 수 있게 해주는 개발 도구 집합. JDK(Java Development Kit, 자바 개발 도구) - Java EE, Java SE, Java ME 플랫폼 중 하나를 구현한 것 - Window, Linux, mac java 개발 대상으로 오라클에 의해 바이너리 제품으로 제공 됨. - Java만 개발할 수 있는 SDK 를 JDK 라고 한다. 마이크로소프트(MS) 등의 다른 회사에서도 SDK라는 이름으로 개발 도구들을 많이 발표함.