CS

· CS/💾 DB
프로젝트에서 쿼리를 튜닝하면서 한가지 궁금증이 생겼다 🎋 쿼리 튜닝을 통한 응답 속도 개선 ( feat. QueryDSL, JPQL )현재 구현된 서비스의 검색 기능들 중 대부분은 조건이 한 개이다. 물론 다양한 테이블을 join하는 것은 있을수 있지만 검색의 조건이 다양한 것은 조금 다르다고 생각했다기존의 특정 단어로만latewalk.tistory.com ❓ 궁금증우리는 서브쿼리를 종종 사용하다보면 그리고 많은 쿼리문을 작성하다보면 언뜻이라도 그런 생각이 든다어? 이거 조인으로 할 수 있는거 아냐? 혹은 어? 이거 서브쿼리문 작성하면 되겠는데?그런 쿼리문 중 대부분은 두 개를 같이 써도 같은 결과를 도출해내고는 한다하지만 튜닝을 좋게 하기 위한 방법으로 서브쿼리는 지양해야 한다고 말한다. 그 이유가 ..
🎗 Garbage Collection이란?자바의 메모리 관리 방법 중 하나이다. JVM의 Heap 영역에서 동적으로 할단했던 메모리 중 필요가 없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스를 말하게 된다 Java는 가비지 컬렉터가 메모리 관리를 대행해주고 있기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할 수 있게 하고, 개발자 입장에서 메모리 관리, 메모리 누수 문제에서 관리하지 않고 오롯이 개발에 집중을 할 수 있다는 것이다 그렇다면 가비지 컬렉터의 단점은 무엇일까?물론 메모리를 자동으로 제어해준다는 것은 매우 매력적인 내용이다. 하지만 이가 무조건적인 장점이라고 볼 수 는 없다는 것이다. 메모리가 언제 해제되는지 정확하게 알 수가 없기 때문에 제어가 힘들다가비지 컬렉션이 ..
🧶 공통점new String() 과 ""의 차이는 둘 다 문자열을 생성하는 방법이다. 하지만 그럼 둘 중 하나만 사용하면 되지 왜 굳이 한 개가 더 있는 것일까? 🧶 차이점두 개를 비교하기 위해 Java에서 String을 어떻게 다루고 있느냐 부터를 알아야 할 필요가 있다. 자바에서 String은 java.lang의 패키지에 String클래스의 인스턴스로 관리한다. 즉 Heap 메모리에 String을 관리하는 StringPool 이라는 곳이 있고 우리가 거기에 단어를 저장 해두고 있는 것이다.String의 객체의 값은 변하지 않는다. 기존의 값을 변경한다고 해서 기존의 값이 사라지는 것이 아니라 그냥 추가로 더 생긴다는 것을 알 수 있다. 그렇다면 두개의 차이는 뭘까먼저 사진을 보자 사진을 보면 바로..
· CS/💾 DB
🥝 데이터베이스의 분할서비스를 운영하면 할수록 데이터의 양이 점점 커지고 그 모든 데이터를 한 테이블에서 나아가 DB에서 감당하기 쉽지 않아진다. 즉, 데이터의 볼륨이 커지면 커질수록 DB의 read/write성능이 감소하고 DB의 병목 현상을 유발한다 그래서 DB를 분할하기 위해 사용할 방법인 파티셔닝과 샤딩을 알아보고자 한다 🥝 파티셔닝파티셔닝은 매우 큰 테이블을 여러개의 테이블로 분할하는 작업이다. 큰 데이터를 여러 테이블로 나눠 저장하기 때문에 쿼리 성능이 개선된다. 이때, 데이터는 물리적으로 여러 테이블로 분산하여 저장되지만, 사용자는 마치 하나의 테이블에 접근하는 것과 같이 사용할 수 있다는 점이 특징이다.  ♬ 파티셔닝의 종류1. List Partitioning지정된 값은 컬럼값을 기반으..
· CS/💾 DB
🧊 JOIN이란?RDBMS는 데이터의 중복을 피하기 위해 데이터를 여러 단위로 쪼개서 여러 테이블로 나눠서 저장한다. 이렇게 분리되어 저장된 데이터에서 원하는 결과를 다시 도출하기 위해 여러 테이블을 조합할 필요가 있다.  서로 관계있는 데이터가 여러 테이블로 나뉘어 저장되므로 각 테이블에 저장된 데이터를 효과적으로 검색하기 위해 조인이 필요하게 된다. 🧊 JOIN의 종류Join을 공부하기 전에 먼저 예시 테이블을 하나 만들어야 한다1. Inner Join여러 어플리케이션에서 사용되는 가장 흔한 결합 방식이며 기본 조인 형식으로 간주되었다.내부 조인은 조인 구문에 기반한 2개의 테이블의 컬럼 값을 결합함으로써 새로운 결과 테이블을 생성한다.JOIN SQL은 명시적 표현과 암묵적 표현법 2가지 구문으로..
🥌 커널이란?운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분으로써 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역할을 하며 컴퓨터의 자원들을 관리하는 역할을 한다.  즉, 커널은 인터페이스로써 응용 프로그램 수행에 필요한 여러가지 서비스를 제공하고 여러가지 하드웨어등의 리소스를 관리한다. 하지만 커널은 컴퓨터자원과의 상호작용으로 인해 사용자와는 상호작용하기 어렵다. 때문에 사용자와의 직접적인 상호작용을 하기위해 만들어진 쉘(shell)을 사용해야 한다. 추상화컴퓨터의 자원을 관리하는 커널을 더 큰 역할로 분류를 해보자면 물리적 자원과 추상화 자원을 관리하는 것을 말한다. 마치 하나의 하드웨어를 여러개처럼 보이게 하는 기술과도 같다. 관리자물리적 자원 이름→추상화한 자원 용어태스크..
🎞 OSI 7계층말고 또??이전 블로그에서는 네트워크 전송 시 데이터 표준을 정리한것이 OSI 7계층이라는 말을 했다. 이것은 이론과도 같은 말인데 이 이론을 현대 인터넷 표준에 맞춰 재설정된것이 TCP/IP 4계층이다. 굳이 나누지 않아도 되는 층을 단순하게 합치고 중요하게 다뤄야하는 층만을 나누어 확인한다. 그렇다면 간단하게 어떤 층이 생략되고 어떻게 이름이 변경되었는지 알아보자🎞 TCP/IP 4계층1. Network LayerOSI 에서 물리와 데이터 링크 계층을 합쳐놓은 곳이다Node - to - Node간의 신뢰성 있는 데이터 전송을 담당하는 계층이다.기존의 데이터 링크의 역할인 MAC주소를 핸들링 할 뿐아니라, 물리의 역할인 데이터 패킷을 전기신호로 변화하여 선로를 통하여 전달할 수 있게 ..
✉ 왜 7계층으로 나눈걸까?쉽게 말해 이상이 발생하면 어느 단계에서 이상이 발생한지 쉽게 알 수 있고 그에 따라 빠른 대처가 가능하기 때문이다. 그것을 네트워크의 진행과정을 7단계로 나누면서 OSI 7계층이 나타난 것이다 ✉ 네트워크 OSI 7계층1. 물리 계층 (Physical Layer)전기적 신호가 나가는 물리적인 장비이다단지 데이터를 전달할 뿐 어떤 데이터인지 어떤 에러가 있는지에 대한 정보는 다루지 않는다 2. 데이터 링크 계층 (Data Link Layer)물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와준다.통신에서의 오류를 찾고 재전송도 해준다.※ e.g. 흐름제어, 오류제어, 순서제어해당 계층에서는 MAC주소를 가지고 통신한다.MAC주소..
🩹 Naver가 보이는게 당연???우리가 Naver를 클릭하면 자연스럽게 보여지는 화면은 항상 당연하다고 생각하게 된다. 때문에 CS를 공부할때도 생각보다 당황하게 되는 주제 중 하나이다. 왜냐하면 늘 당연하고 자연스럽다고 생각한것에 대한 과정을 막상 바라보면 굉장히 복잡하고 생각보다 어렵기때문이다. 그래서 한번 알아보고자 한다. 🩹 Web 동작의 원리1 & 2. 사용자가 웹 브라우저를 URL 입력을 통해 검색한다 사실 이는 2번의 과정과도 같다.3. 사용자가 입력한 URL 주소 중에서 도메인 네임 부분을 DNS 서버에서 검색한다4. DNS 서버에서 해당 도메인 네임에 해당하는 IP주소를 URL과 함께 전달한다.5 & 6. 웹 페이지의 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용해서 ..
· CS
🎛 프레임 워크란?프레임워크는 애플리케이션의 구조를 정의하고, 개발자가 그 구조 내에서 코드를 작성할 수 있도록 도와주는 일종의 뼈대, 골격이다. 프레임워크는 전체적인 흐름을 제어하고 개발자는 그 안에 필요한 부분을 채워 넣는 방식으로 개발을 진행한다. ♬ 특징제어 역전 (IoC)프레임 워크는 제어 역전 패턴을 적용해서 개발자가 작성한 코드를 호출하는 대신 프레임워크가 개발자가 작성한 코드를 호출한다. 이를 통해 개발자는 애플리케이션의 핵심 비즈니스 로직에 집중할 수 있다.의존성 주입프레임워크는 의존성 주입 패턴을 적용하여 애플리케이션의 객체 간 의존성을 관리해준다. 이를 통해 객체 간 결합도를 낮춘다컴포넌트 기반 아키텍쳐프레임워크는 컴포넌트 기반 아키텍처를 적용해서 애플리케이션의 코드를 재사용 할 수..
늦은산책
'CS' 카테고리의 글 목록