TIL 35

Java 대용량 데이터 이중반복문 vs 배열 사용 속도차이(예시)

개요 안녕하세요! 빈코입니다. 오늘은 제가 실무에서 개발을 진행하다 대용량 데이터를 다뤄야 하는 상황을 맞닥뜨리게 되었습니다. 사실 개발을 하다 보면 대용량인 데이터를 다뤄야 하는 상황이 왕왕 생깁니다. 기능상 문제가 없을지라도, 사용적인 측면에서 잘못된 코드로 속도가 느린다면 문제가 되겠죠? 그래서 오늘은 자주 접하는 반복문과 배열을 사용했을 때의 시간 차이점을 알아보려고 합니다😊 For 문(반복문)📙 For문은 일반적으로 반복을 제어하는데 사용합니다. 가장 보편적이면서 편한 방법이죠! 편한 이유는 복잡한 조건도 설정하기 쉽기 때문입니다. 대용량 데이터가 아닐 경우에는 사실 반복문을 쓰던, 배열을 쓰던 성능 차이가 미미하기 때문에 대부분 반복문을 선택합니다. 추후 클라이언트의 요구사항이 달라져서 복잡한..

TIL 2024.01.24

Java 엑셀 만드는 방법 완벽정리(JS에서 Controller까지)

개요 안녕하세요. 빈코입니다! 오늘은 프로젝트에서 자주 사용하는 기능인 엑셀 출력 기능에 대해 알아보려고 합니다. 엑셀 라이브러리인 POI 적용부터 엑셀을 만드는 방법, 엑셀 내용을 커스텀하는 방법 등 다양하게 소개해드리고자 합니다. 이번 포스팅은 js에서 엑셀 만들기까지 간단한 예시와 함께 작성했습니다. 혹여 엑셀 관련 함수들만 보실 분들은 포스팅 맨 하단에 위치해 있습니다😊 엑셀 라이브러리 POI📙 POI 라이브러리를 사용하면 엑셀(.xls, .xlsx), 파워포인트(. ppt,. pptx), 워드(. doc,. docx) 등의 Microsoft Office 파일 형식을 다룰 수 있습니다. 프로젝트에 POI 라이브러리를 적용하는 방법은 apache 다운로드 홈페이지(https://poi.apache...

TIL 2024.01.15

Java Spring Message 사용하는 방법 완벽정리

안녕하세요 빈코입니다! 오늘은 저번 포스팅(Spring Message 적용법)에 이어서 사용하는 방법에 대해 포스팅하려 합니다. 프로젝트를 만들다 보면 크게 Front, Back으로 나뉘는데 저희가 이전에 적용한 Spring Message도 각각의 파일마다 사용하는 방법이 다릅니다. 파일은 js(javascript), html(jsp), java(controller, service)로 나뉩니다. 바로 사용하는 방법을 확인해 볼게요😁 Java 단 사용법(Controller, Service)📙 Java단에서 사용하는 방법은 지난 포스팅에 맞게 잘 따라오셨다면 생각보다 간단합니다. 지난 포스팅에서 Spring Message라는 Bean을 ApplicationContext.xml에 등록해 줬었는데요! 여기서 J..

TIL 2024.01.10

jstree 핸들링 방법(이전 선택 값 남아있는 오류)

개요 안녕하세요 빈코입니다! 오늘은 jstree를 사용할 때 발생할 수 있는 특정 오류에 대해 포스팅하려 합니다. 해당 포스팅은 jstree의 전반적인 사용법에 대한 내용이 아닌, jstree를 여러 번 호출했을 때 기존에 선택했던 node의 값이 남아있는 문제에 대한 내용을 주로 다뤄 볼 예정입니다. 해당 포스팅에서는 jstree를 제거하는 "destory", jstree를 다시 갱신하는 "refresh", jstree에 있는 자식 node를 클릭할 때 함수를 발생시키는 "select_node.jstree"에 대해서 다뤄 볼 예정입니다😃 jstree 바인딩 및 특정 함수📙 기본적으로 jstree는 조직도에 많이 쓰이게 됩니다. 트리 형식으로 부서가 나뉘고, 부서 안에서도 사용자들이 있기 때문입니다. 기..

TIL 2024.01.09

Java Spring Message 적용하는 방법 완벽정리

안녕하세요. 빈코입니다! 오늘은 Java에서 자주 사용하는 spring:message에 대해 자세히 포스팅하려 합니다. message 적용을 위해서는 web.xml, applicationContext.xml에 대해 알아야 하기 때문에 각각의 역할이 무엇인지 알아본 후 message 적용하는 방법에 대해 포스팅하겠습니다😁 Spring:message란?📗 개발을 하다보면 국제화가 필요할 때가 있습니다. Spring에서는 메시지 처리의 다국어 지원 및 국제화를 위한 기능을 spring:message로 지원합니다. 이를 위해 Spring은 'MessageSources' 인터페이스를 제공하고 주로 'ReloadableResourcesBundleMessageSource' 클래스를 사용합니다. Spring messa..

TIL 2024.01.04

JavaScript 다중 검색 기능 만들기

안녕하세요 오늘은 JavaScript를 이용하여 다중 검색 기능을 만들어 볼 예정입니다. 겉으로는 쉬워 보이지만 코드 내용이 생각보다 많아서 잘 따라오셔야 할 것 같아요. 다중 검색 기능은 어디서든 사용이 가능하게 최대한 모듈화 방식으로 js 파일을 구성했습니다. 글 내용을 천천히 따라가시다 보면 해당 파일을 어떻게 적용하는지 아실 수 있어요😁 또한, 독자분들이 원하는 방향성과 다를 수 있기 때문에 개요에 있는 gif를 보시고 판단하시고, 비슷하다면 직접 원하시는 방향으로 커스텀해서 사용하시면 될 것 같습니다. 시작해 볼까요? 개요위의 gif 파일과 같이 특정 페이지에서는 다중 검색이 가능하게 만들어야 하는 경우들이 종종 있습니다. 사실 해당 페이지에서만 동작하게 만든다면 쉽게(!?) 구현할 수 있었겠..

TIL 2023.09.26

[Java] csv 파일 프로그램 여러가지 Tip

오늘은 Java를 이용해서 CSV 파일을 만드는 프로그램을 구성할 때 필요한 여러 가지 tip들을 공유해보려 합니다😁 개요 csv 파일이 무엇인지 잘 아시나요? csv 파일이란 comma-separated variables의 약자로 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일을 뜻합니다. 확장자는 .csv이며 MIME 형식은 text/csv입니다. 현업에서는 csv 파일을 많이 다루게 되는데요. 백업 파일을 준비하거나, 기업에서 요청하는 경우도 상당히 많습니다. csv 파일은 단순 텍스트 파일이기 때문에, 개발적인 측면에서 많은 공수가 들어가지 않는다는 장점이 있고, csv 파일을 엑셀로 열었을 때 쉼표(,) 기준으로 셀이 자동으로 나뉘는 편리함도 가지고 있기 때문입니다. 그럼 cs..

TIL 2023.09.14

Java String, StringBuilder, StringBuffer 차이와 장단점

개요 오늘은 Java에서 문자열을 다루는 String, StringBuilder, StringBuffer의 차이를 알아보려고 한다. 3가지 클래스는 각각 차이점이 있는 만큼 효율적으로 사용하는 방법 또한 다르게 작용이 된다. 어떠한 상황에서 어떤 문자열 클래스를 사용하는 것이 효율적인지는 각 클래스의 특징을 완전히 이해하고 사용해야 한다. 3가지 클래스는 어떤 부분에서 다를까? String📙 우리가 흔히 아는 Java의 문자열 클래스로 대표적인 클래스는 단연 String 일 것이다. String 변수에 값을 할당하는 방법은 2가지가 있는데, 리터럴 변수를 대입하는 방법과 new 연산자를 사용하는 방법이 있다. String str = "Binco"; // 리터럴 String str = new String(..

TIL 2023.08.21

PostgreSQL Join 활용 예제

오늘은 PostgreSQL에서 Join을 활용하는 예제를 살펴보려고 합니다. 제가 실무에서 겪은 이슈 중에 Left Join을 사용하여 손쉽게 쿼리를 작성했던 것을 다른 예시를 통해서 해결방법을 보여드리려고 합니다😁 개요 앞서 말씀드렸듯이, 실무에서 겪었던 이슈를 Join을 통해 손쉽게 해결했던 경험을 말씀드리려고 합니다. 상황은 mybatis를 사용하지 못하고 오직 쿼리로만 해결해야 했던 이슈입니다. 이슈를 간단하게 설명드리면, 고객사에서 기존에 진행했던 설정 방식과 달리 다른 방식으로 마이그레이션 하는 작업이기 때문에, 따로 Java 프로젝트를 실행시키는 것이 아닌 DB 구조만 바꾸는 과정이었습니다. 💡 제가 다니는 회사는 DBPatcher라는 프로젝트가 있어서 원하는 쿼리를 DBPatcher 프로그..

TIL 2023.08.03

PostgreSQL JSON 데이터 활용 II

오늘은 저번 포스팅에 이어 PostgreSQL에서 JSON 데이터를 활용하는 더 다양한 방법들을 소개하려고 합니다😁 개요 저번 포스팅에서는 JSON 데이터를 가져오는 다양한 연산자와 집계함수에 대해 설명했습니다. 이번 포스팅에서는 JSON과 JSONB의 차이, JSON 객체를 생성하는 방법, JSONB 값을 배열로 집계하는 방법 등 더 다양한 함수들을 소개하려 합니다. JSON과 JSONB의 차이📙 가장 큰 차이점은 JSON은 입력받은 텍스트 값을 그대로 DB에 저장하기 때문에 DB에 INSERT 할 때는 성능이 좋습니다. 하지만 JSONB는 입력받은 문자열에서 공백을 제거해 주고, 인덱싱 처리를 하기 때문에 DB에 INSERT 할 때 쓰기 비용이 발생합니다. 이렇게만 본다면 성능이 좋은 JSON을 자주..

TIL 2023.06.01