프로그래밍

    자바에서 String을 조심해야하는 이유

    자바에서 String을 조심해야하는 이유

    String 클래스는 잘 사용하면 상관없지만, 잘못 사용하면 메모리에 많은 영향을 주기 때문이다. 그렇다면 잘못 사용한 사례를 살펴보자. String 클래스를 잘 못 사용한 사례 보통 서버에서는 DB 데이터를 갖고와서 그 데이터를 화면에 출력하는 시스템을 가지고 있다. 쿼리 문장을 만들기 위해 String 클래스 결과를 처리하기 위한 Collection 클래스 위 두 클래스를 가장 많이 사용하게 된다. 일반적으로 사용되고 가장 단순하게 만드는 쿼리 작성 문장을 살펴보자. String sql = ""; sql += "select * "; sql += "from ( "; sql += "select A_column, "; sql += "B_column ,"; // 생략된 쿼리 (약 400라인) ... ... ..

    JVM(자바가상머신)이란? - Part5, Garbage Collection

    JVM(자바가상머신)이란? - Part5, Garbage Collection

    22/10/14 게시글 등록 22/10/15 내용 수정 및 추가 JVM(자바가상머신)이란? - Part 1, 소개 JVM(자바가상머신)이란? - Part 2, Execution Engine JVM(자바가상머신)이란? - Part 1 자바를 쓰는 개발자라면 누구나 들어봤을 JVM(Java Virtual Machine)을 알아보려고 한다. 자바 바이트코드가 JRE에서 동작을.. ssdragon.tistory.com JVM(자바가상머신)이란? - Part 2, Execution Engine JVM(자바가상머신)이란? - Part 1, 소개 자바를 쓰는 개발자라면 누구나 들어봤을 JVM(Java Virtual Machine)을 알아보려고 한다. 자바 바이트코드가 JRE에서 동작을 하는데, 이 JRE에서 가장 중..

    JVM(자바가상머신)이란? - Part4, Runtime Data Area

    JVM(자바가상머신)이란? - Part4, Runtime Data Area

    22/09/29 - 게시글 등록 22/10/13 - PermGen에 관한 Heap 영역 수정 및 추가 JVM(자바가상머신)이란? - Part 1, 소개 자바를 쓰는 개발자라면 누구나 들어봤을 JVM(Java Virtual Machine)을 알아보려고 한다. 자바 바이트코드가 JRE에서 동작을 하는데, 이 JRE에서 가장 중요한 요소는 자바 바이트코드를 해석하고 실행하 ssdragon.tistory.com JVM(자바가상머신)이란? - Part 2, Execution Engine JVM(자바가상머신)이란? - Part 1 자바를 쓰는 개발자라면 누구나 들어봤을 JVM(Java Virtual Machine)을 알아보려고 한다. 자바 바이트코드가 JRE에서 동작을 하는데, 이 JRE에서 가장 중요한 요소는 자..

    [Java] sort와 parallelSort 비교

    [Java] sort와 parallelSort 비교

    백기선님의 자바 8 강의에서 정렬을 학습하다가 궁금해서 적게되었다. (정리한 깃허브) 자바 8 이전에는 Arrays.sort()를 사용하여 정렬을 하였다. 자바 8 이후 sort()를 개선한 새로운 메소드인 Arrays.parallelSort()가 나왔다. 특히 parallelSort에 대해 간단하면서도 내부적으로 동작하는 설명이 없어서 직접 찾아보고 작성하게 되었다. 1. Arrays.sort()란? 객체 또는 기본타입의 배열(array of objects or primitives)을 정렬하기 위해 나왔다. 여기에 사용된 정렬 알고리즘은 Dual-Pivot Quicksort 이다. 즉, 더 좋은 성능을 내기위해 Quicksort 알고리즘을 커스터마이징한 것이다. 이 방법은 싱글 쓰레드(Single-Th..

    아파치 카프카란 무엇일까?

    아파치 카프카란 무엇일까?

    백엔드 아키텍처에서 자주 보였던 플랫폼인 아파치 카프카가 무엇인지 궁금했다. 포춘 100대 기업에서 80개 기업 이상이 도입할 정도이고, 국내 서비스 기업들도 많이 사용하고 있다. 카프카가 나오기 전, 링크드인 개발자들이 대용량·대규모 데이터를 처리하기 위해 여러 플랫폼을 조합해서 사용했지만 실패하였다. 그 후 최초로 배치성 데이터와 실시간 이벤트 스트리밍 데이터를 혼합하여 처리하는 독특한 로직의 플랫폼을 만들어 냈는데, 이것이 "아파치 카프카"의 탄생이다. 아파치 카프카는 이벤트 스트리밍뿐만 아니라, 빅데이터 아키텍처에 있어서 중요한 역할을 하는 만큼 대용량·대규모 데이터 처리에 이를 대체할 플랫폼이 없을 정도이다. 아파치 카프카는 실시간 스트리밍 데이터 처리를 하는 데에 있어 가장 주목받는 프레임워크..

    Kotlin(코틀린) - var 와 val

    https://kotlinlang.org/docs/basic-syntax.html#variables Basic syntax | Kotlin kotlinlang.org 코틀린을 시작하면 기본적으로 사용하는 타입이 있다. 바로 var 와 val 이다. Variables (변수) variables를 뜻하는 var는 여러 번 값 할당이 가능하다. Values (값) values를 뜻하는 val은 이름 그대로 한 번만 값 할당이 가능하다. 이렇게 외우면 편하지만 공식문서에서는 다음과 같이 정의한다. val은 읽기 전용 지역 변수로 한 번만 값 할당이 가능하다. val a: Int = 1 // 즉시 할당 , immediate assignment val b = 2 // 'Int' 타입 추론하여 넣음 , 'Int' t..

    [React] React.memo란?

    [React] React.memo란?

    이것 역시 전 게시글과 마찬가지로 useMemo와 비슷하다. const MyComponent = React.memo(function MyComponent(props) { /* props를 사용하여 렌더링 */ }); 리액트 공식문서에 따르면 다음과 같다. React.memo는 Memoization(메모이제이션) 기법으로 동작하며, 고차 컴포넌트(Higher Order Component, HOC)이다. 컴포넌트가 props로 동일한 결과를 렌더링하면, React.memo를 호출하고 결과를 메모이징(Memoizaing) 하도록 래핑하여 경우에 따라 성능 향상을 할 수 있다. 즉, React는 컴포넌트를 재렌더링하지 않고 마지막으로 렌더링된 결과를 재사용한다. React.memo는 props 변화에만 영향을 ..

    [React] useMemo란?

    [React] useMemo란?

    우선 우리는 이것을 왜 쓰려고 하는가?? 분명 리액트가 랜더링 또는 재랜더링 될 때 함수들이 똑같은 동작인데도 연산하여 성능을 잡아먹기 때문이다. 따라서 이러한 리액트 어플리케이션 성능을 최적화하기 위한 방법인 연산 결과 재사용을 알아볼 것이다. 먼저 이런 연산 결과 재사용하는 방법인 useMemo는 Memoization(메모이제이션) 기법을 적용하였다. 🧐 그렇다면 Memoization은 무엇인가? Memoization이란? 한 번 연산해본 결과를 기억해두고, 다시 동일한 입력이 들어오면 기억해둔 데이터를 반환하는 방법이다. 1+1 은 무엇인가? (계산중...) (계산완료) => 2 다시 한번더 1+1은 무엇인가? (전이랑 동일하네? 기억해뒀던거 바로 반환) 2 위 방식처럼 엄청 복잡하거나 성능을 잡아..