728x90

분류 전체보기 68

[ORACLE] DECODE와 CASE

ORACLE의 DECODE와 CASE에 대해 알아보자 🤓 DECODE와 CASE는 SQL에서 조건에 해당하는 값을 추출할 때 사용한다. DECODE 조건에 따라 데이터를 다른 값이나 컬럼 값으로 추출할 수 있으며, DECODE(VALUE, COND1, THEN1, COND2, THEN2, ...) 형태로 사용할 수 있다. VALUE == COND1 일 경우 THEN1 반환, VALUE == COND2 일 경우 THEN2 반환한다. DECODE 내에 DECODE를 중첩하여 사용 가능하고 일반적으로 아래와 같이 사용된다. SELECT DEPT_CODE , DECODE(DEPT_CODE , 10, 'SALES' , 20, 'ACCOUNTING' , 30, 'HR') AS DEPT_NAME FROM DEPT D..

💾DB 2023.06.19

[ORACLE] INDEX 타지 않는 경우 (feat. INDEX HINT)

시스템을 운영하다 보면 꼭 한번씩 DB상의 처리 속도가 늦어져 장애🤯로 이어질 뻔한 상황이 생기는데, 로직 상의 문제인 경우도 있지만, 내가 생각했던 INDEX를 타지 않거나 옵티마이저(OPTIMIZER)가 실행계획을 변경시켜 버리는 상황이 종종 발생하곤 했었다. 옵티마이저(OPTIMIZER)?? 그게 뭔데? 🙋‍♂️ 옵티마이저(OPTIMIZER)에 대해 간단히 설명하면, 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진이다. 먼저, INDEX를 타지 않는 경우에 대해 알아보고, 옵티마이저에 의존하지 않고 INDEX를 탈 수 있도록 HINT를 주는 방법에 대해 추가적으로 알아보자. INDEX를 타지 않는 경우 1) INDEX가 걸려있는 컬럼 절을 변형한 경우 - ..

💾DB 2022.09.15

[C#] Boxing & UnBoxing (박싱과 언박싱)

일반적으로 Boxing과 UnBoxing에 대해 잘 몰라도 개발은 가능하지만, 메모리의 관리가 필요하다면 필수적으로 알아두면 좋을 내용이다. 자 그럼, Boxing과 UnBoxing에 대해 알아보자. 🤔 Boxing Boxing(박싱)이란 아래와 같이 값 형식을 Object형식 또는 이 값 형식에서 구현된 임의의 인터페이스 형식으로 변환하는 것이다. 기존에 저장된 Stack 영역에서 Heap 영역에 값 형식을 저장한다. int i = 123; object o = i; 위의 코드를 보면, int 값 형식을 Object 참조 형식으로 형변환을 시도한다. 보통 파라미터로 전달되거나, List 형식으로 모든 값들을 입력받고자 할 때, 사용 될 수 있다. 위의 코드의 메모리 할당은 아래와 같이 이루어 진다. St..

🪟C# | .NET 2022.09.14

[Java] Java의 메모리 관리(2)

이전 Java Memory 영역에 대한 설명에 이어 참조 타입과 GC의 동작에 대해 알아보자! 🙋‍♂️ 이전 포스팅 : https://dev-jy.tistory.com/56 [Java] Java의 메모리 관리(1) Java의 Memory 영역 Java 프로그램이 실행되면 JVM(Java Virtual Machine)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. JVM의 메모리 공간(Runtime Data Area)은 크게 M dev-jy.tistory.com 아래의 Memory 구조 그림을 자세히 보면, Heap에서 객체에 대한 참조를 나타내는 화살표가 다르게 생긴것을 알 수 있다.😶‍🌫️ Java에서는 Strong Reference, Weak Referenc..

🌱Java | Spring 2022.07.31

[Java] Java의 메모리 관리(1)

Java의 Memory 영역 Java 프로그램이 실행되면 JVM(Java Virtual Machine)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. JVM의 메모리 공간(Runtime Data Area)은 크게 Method(Static) 영역, Stack 영역, Heap 영역으로 구분되고 Data Type에 따라 각 영역에 나누어 할당 된다. 컴퓨터의 메모리는 사용 가능한 공간이 한정되어 있기 때문에 어떻게 관리하느냐에 따라 프로그램의 성능이 좌우된다. 따라서 같은 기능의 프로그램이라 하더라도 메모리 관리에 따라 성능 차이가 크게 나타난다. 따라서 Java Application에서 메모리를 효율적으로 사용하기 위해 메모리 구조와 특징, GC의 동작 방식에 대해..

🌱Java | Spring 2022.07.24

[Spring] Filter vs Interceptor

Spring에서 중복된 코드를 제거할 수 있도록 공통적으로 작업을 처리할 수 있는 기능들을 많이 제공하고 있는데, 그 중 Filter와 Interceptor의 차이에 대해 알아보자. 먼저, 아래의 그림을 보고 차이점에 대해 자세히 알아보자. Filter Filter는 J2EE 표준 스팩 기능으로 Dispatcher Servlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가적인 작업을 처리할 수 있는 기능을 제공한다. Dispatcher Servlet은 Spring의 가장 앞 단에 존재하는 Controller로 Filter는 Spring 범위 밖에서 처리가 이루어 진다. 즉, Filter는 Spring Bean으로 등록은 되지만 톰캣과 같은 Web Container에 의해 관리가 ..

🌱Java | Spring 2022.07.18
728x90