Home
zz9z9
Cancel

MySQL - MySQL 실행 계획 (1)

들어가기 전 슬로우 쿼리를 고쳐보고 싶은데 어떤 부분에서 비효율이 발생하는지는 “실행 계획”을 보면 알 수 있다고 들었다. 실행 계획이 무엇이고 어떻게 활용해야 하는 것인지 공부해보자. 실행 계획 DBMS의 쿼리 실행은 같은 결과를 만들어 내는 다양한 방법이 있다. 그 중 어떤 방법이 최적이고 최소의 비용이 소모될지 결정해야 한다. 이러...

MySQL - MySQL 내부 구조 간단히 살펴보기

들어가기 전 슬로우 쿼리를 고쳐보고 싶은데 고치려면 어떻게 해야할지에 대한 지식이 전혀없다. 근데 슬로우 쿼리는 차치하고, 쿼리가 어떻게 동작하고 DB 내부는 어떻게 생긴지에 대해서도 공부해보지 않았다. 그래서 먼저 MySQL을 기준으로 내부 구조가 어떤지 세부적인 내용을 제외하고 간단하게 정리해보려고 한다. MySQL의 전체적인 구조 ...

Java - 자바 애플리케이션이 실행되는 과정 살펴보기

들어가기 전 자바 애플리케이션이 실행되는 과정을 간단히 도식화 하면 아래처럼 표현할 수 있을 것이다. 이를 컴파일과 실행이라는 두 단계로 나눠서, 각 단계별로 어떤 과정이 일어나는지 살펴보자. ※ 컴파일 파트는 HomoEfficio 님의 블로그를 바탕으로 정리하였음을 미리 밝힙니다. 1. 컴파일 javac 컴파일러에 의해 자바 소스...

Java - 자바 버전별 특징 살펴보기(JAVA 7~17)

들어가기 전 글을 작성하는 현재(21.09.25) 자바 최신버전은 JDK17이다. 각 버전별 특징을 살펴보면서 이런게 있구나 정도를 인지하고, 추후에 공부가 필요한 부분은 좀 더 상세히 공부해보자. History 9 버전부터는 6개월 단위로 새로운 버전이 출시되고 있다. 버전 출시일 ...

Java - 왜 equals()와 hashCode()는 함께 오버라이딩 해야할까 ?

들어가기 전 실무에서는 equals(), hashCode() 메서드를 오버라이드 할 일이 별로 없었던 것 같다. 하지만 몇 달 전 간단한 웹 서버를 만들어보는 토이 프로젝트를 진행하던 중, 클라이언트로부터 받은 요청을 유틸 클래스의 메서드를 사용해서 HttpRequest 객체를 만드는 부분에 대한 테스트 코드를 작성했는데 원하는 결과가 나오지 않았...

OS - OS 캐시

OS 캐시 OS에는 디스크 내의 데이터에 빠르게 액세스할 수 있도록 하는 구조가 갖춰져 있다. OS는 메모리를 이용해서 디스크 액세스를 줄인다. 애플리케이션에서 이를 활용한다면 OS에 상당부분을 맡길 수 있다. 이를 가능하게 하는 것이 OS캐시이다. 리눅스의 경우에는 페이지 캐시(page cache...

추상화를 통해 엑셀 생성 로직 리팩토링하기

상황 현재 운영하고 있는 시스템에는, 사용자가 조회한 결과에 대해 엑셀 파일로 다운받을 수 있는 기능을 몇몇 화면에서 제공한다. 엑셀을 만드는 부분은 스프링부트 기반의 백엔드 서버에서 담당한다. 문제는 해당 로직에서 모든 셀에 대한 영역 지정을 하드코딩으로 해주고 있다는 것이다. 예를 들어, 아래와 같은 경우 Title1의 병합 영역을 ‘2번 ...

WEB - CDN(Content Delivery Network)

들어가기 전 얼마전 면접에서 ‘화면의 초기 로딩 속도가 느리다면 어떻게 해결할 수 있을까요?’ 라는 질문에 제대로 대답하지 못했던 기억이 있다. 뒤늦게 생각났는데 CDN을 활용하면 어느정도 개선되지 않을까 하는 생각이 들었다. 하지만, CDN에 대해 어렴풋이 알고있어 얘기를 꺼내지 못했다. 이번 기회에 CDN에 대해 잘 정리해보자. CDN이란 ?...

Java - 자바에서 파일 읽어오기

들어가기 전 사실 실무에서 자바 코드로 파일을 읽어와서 데이터를 처리하거나 할 일이 없어서, 파일을 다루는 부분에 대한 코드를 작성할 일이 생기면, 그 때 마다 구글링해서 사용했던 것 같다. 최근에 .json 파일에 있는 데이터를 읽어와서 처리해야할 일이 있었는데, 매번 구글링 하는 것 보다 머릿속에 한 번 확실히 정리해야 할 것 같다는 생각이 들...

Java - 자바 IO, NIO

Java I/O Input, Output을 나타낸다. In, Out의 기준은 JVM이다. 즉, JVM으로 들어오는 데이터를 다루는 경우엔 Input 데이터를 내보내는 경우엔 Output이다. Stream 기반이다. 한 번에 1byte 또는 그 이상의 byte를 읽는다. 데이터가 캐시되지 않는다. 따라서 ...