나의 첫 SQL 최적화(?) - 27초를 1.7초로 줄이기
제목이 굉장히 자극적이다. 나 역시 알고 있다. 하지만 실제로 있었던 일이다. 쿼리 수행시간이… 2.7초요? 아니 27초요?!! 회사에서 통계 화면을 테스트하고 있는데 네트워크 응답이 너무 안오길래 로그를 뒤져봤다. SQL 하나에 평균 27000ms가 찍혔다. 보자보자.. 0이 하나..둘.. 2.7초인가? 1000ms가 1초니까… 아니 27초??...
제목이 굉장히 자극적이다. 나 역시 알고 있다. 하지만 실제로 있었던 일이다. 쿼리 수행시간이… 2.7초요? 아니 27초요?!! 회사에서 통계 화면을 테스트하고 있는데 네트워크 응답이 너무 안오길래 로그를 뒤져봤다. SQL 하나에 평균 27000ms가 찍혔다. 보자보자.. 0이 하나..둘.. 2.7초인가? 1000ms가 1초니까… 아니 27초??...
참조: https://mangkyu.tistory.com/182 단위 테스트 단위 테스트(Unit Test)는 하나의 모듈을 기준으로 진행되는 가장 작은 단위의 테스트이다. 여기서 모듈은 자바에서는 객체의 메서드, 타입스크립트에서는 함수일 것이다. 개발할 때 단위 테스트를 작성하는 데에는 여러가지 이유가 있다. 몇 가지 추려보자면 테스트...
지금 회사에서 프로젝트로 자바, 스프링 기반의 웹 솔루션을 개발하고 있다. (사실 거의 SI 프로젝트다) 이 프로젝트는 CI/CD같은 파이프라인이 구축되지 않고, 시간에 쫓기느라 그런 걸 할 시간도 없다. 만약 하는 게 어떠냐고 제안하면 욕먹을 게 뻔했다.. (물론 아직 1년도 안 된 신입이기 때문에 제안도 못 해봤지만..) 우리끼리 ‘개발서버’라...
데이터베이스 연결 자바에서 데이터베이스에 연결하려면 다음과 같은 작업이 필요하다. Connection는 DB와 TCP/IP 통신을 통해 연결되는 것이고, Statement는 SQL문을 전달하는 것, ResultSet은 DB로 부터 데이터를 조회하는 것을 말한다. 현재는 DB라고 그려놨지만 해당 DB가 MySQL 이라면 어떨까? 큰 틀의 ...
원활한 프로그램의 작동을 위해서는 예외처리는 필수적이다. 이번 포스팅에서는 자바에서 예외처리를 하는 방법에 대해 알아본다. 예외처리란? 자바에는 에러(Error)와 예외(Exception)가 있다. 에러는 하드웨어적인 문제로 오류가 발생하는 것인데, 개발자의 코드 작성으로는 어쩔도리가 없는 문제이다. 그와 달리 예외는 개발자가 코드로 어쩔도리 있는...
들어가며 동일성과 동등성에 대해 본격적으로 들어가기에 앞서 JAVA의 모든 객체의 최고 조상인 Object에 대해 먼저 알아본 뒤, 동일성과 동등성에 대해 알아본다. 모든 객체의 조상 Object 자바의 java.lang 패키지에 포함된 Object는 모든 객체의 조상이다. 보통 자바에서 상속을 하기 위해서는 아래와 같이 작성해야한다. ...
회사 프로젝트 마무리 단계에서 보안 취약점 검사를 진행했는데 SQL Injection 에 관한 취약점이 다량 발견되었다. SQL Injection은 말 그대로 화면 등에서 SQL을 주입하여 개발자의 의도와 다르게 SQL문을 수행 시키는 것이다. 문제 SELECT id FROM users WHERE id = 'inputId' AND pw = ...
ArrayList에는 무슨 타입이 들어갈까? ArrayList에 대해 공부하던 중 문득 궁금한 것이 생겼다. Java 공식 문서(11)에 따르면 ArrayList의 add 메서드는 객체를 매개변수로 받아 ArrayList에 추가한다. 아래의 공식문서에서 알려주는 ArrayList의 모든 add 메서드이다. 보다시피 int값을 index로 받고 ...
멀티 스레드 스레드란 하나의 프로세스 내의 실행흐름을 말하며 멀티 스레드란 하나의 프로세스에서 여러 개의 실행흐름(스레드)으로 작업을 수행하는 것을 말한다. 즉, 하나의 프로그램에서 두 개 이상의 동작을 동시에 수행하기 위해 필요한 것이다. 예를 들어 채팅을 하면서 첨부파일을 보낸다던가하는 것이다. 자바는 고맙게도 언어 단에서 멀티 스레드를 지원하기...
JAVA는 JVM(Java Virtual Machine)위에서 작동한다. 따라서 변수, 리터럴, 객체 등 모든 정보들이 JVM의 메모리 영역(Runtime Data Area)에 저장된다. 그 중 객체의 메서드는 어디에 저장될까? 객체는 어디에? public class Test { String str = "test"; public ...