이끌든지 따르든지 비키든지

전체 글 67

[Java] File과 Files

Java에서 파일 처리를 위해 제공되는 주요 패키지(또는 클래스)는 크게 java.io과 java.nio로 구분되는데, 이 둘의 차이, 특징에 대해 정리해본다. io java.io.File 클래스는 Java 초기 버전부터 파일 및 디렉터리 작업을 위해 제공된 전통적인 클래스다. 객체 중심으로, 기본적으로 파일 처리 작업 위주 메서드로 구성되어 있다. 파일 또는 디렉터리 생성, 삭제파일의 존재 여부 확인파일 목록 조회 및 이름 변경기본적인 파일 메타데이터 접근(크기, 마지막 수정 날짜 등)  nio nio(New I/O)는 Java 7에서 도입되었고, 기존 java.io.File보다 더 세밀하고 다양한 메서드를 제공하며, 더 효율으로 대용량 파일 처리, 스트림 처리 등이 가능하다.  파일 읽기/쓰기, 복사..

카테고리 없음 2024.05.12

괜찮은 개발자 되기

꾸준하게어느 날 갑자기 많이 달린다고 해서 실력이 향상되는 것은 아니다. 갑작스러운 노력보다는 오랫동안 지속적으로 노력하고, 너무 서두르지 말고, 즐길 수 있도록 하면서 꾸준히 학습하고 연습하는 자세가 필요하다.  여유있게당연히 하루빨리 실력을 쌓고 싶은 마음이 크지만, 너무 서두르면 부상의 위험만 커질 뿐이다. 스스로에게도 마음이 급할 뿐, 스트레스만 받고 실력은 제자리걸음일 수 있다는 것을 잊지 말자. 처음부터 과하게 목표를 세우기보다는 차근차근 단계를 밟아가자.  재미있게의지만으로는 오래 지속하기 어렵다. 재미 있어져야 꾸준히 할 수 있게 된다.스스로에게 물어보자. 이것이 정말 재미있는가? 그렇지 않다면, 어떻게 하면 재미있게 할 수 있을지 고민해보자.  자신있게다른 사람과 비교하는 것은 정신건강에..

생각창고 2024.05.02

[Java] Java 21의 새로운 기능 톺아보기

Java 17에 이은 다음 LTS 버전인 Java 21에 추가된 기능에 대해 알아보도록 하겠습니다. 💡LTS?LTS란, 'Long-Term-Support'의 약자로, LTS 버전은 다른 버전보다 장기적인 지원과 보안 업데이트를 포함하여 상대적으로 긴 기간 동안 지원됩니다.Java의 LTS 버전은 약 3년 주기로 출시되고 있습니다.  Java 21에 추가된 기능 총 15개의 기능이 추가되었고, 이를 4가지 카테고리로 분류할 수 있습니다. Core Java LibraryJEP 431: Sequenced CollectionsJEP 442: Foreign Function & Memory API (Third Preview)JEP 444: Virtual ThreadsJEP 446: Scoped Values (Pr..

[Spring] 애플리케이션과 NCP Object Storage 연결하기

Spring 애플리케이션과 네이버 클라우드 플랫폼(NCP)의 Object Storage 간 연결을 구성하는 방법에 대해 알아보겠습니다. 💡Object Storage?데이터를 객체 단위로 저장하는 서비스로, AWS의 S3와 유사한 서비스입니다.  1. Object Storage 버킷 생성하기 NCP 콘솔에 로그인하셨다면, 왼쪽 메뉴 중 Services를 클릭 후, Object Storage를 클릭해주세요.    최초로 해당 서비스에 접근하는 경우, 이용 신청 및 약관 동의를 먼저 진행해야 합니다.동의 후, Bucket Management → 버킷 생성을 진행해 주세요.    다음으로, 생성할 버킷의 이름을 입력합니다.버킷의 이름은 리전 내에서 유일한 이름이여야 합니다!    이후, 설정 관리(잠금 여부 ..

Framework/Spring 2024.03.25

좋은 개발 습관?

■ Make it work - 작동하게 만들기 개발의 초기 단계는, 프로그램이 작동하도록, 의도한 목적을 달성하고, 원하는 기능을 제공하도록 만드는 것이다.  ■  Make it right - 올바르게 만들기 프로그램이 작동한다면, 코드베이스를 개선하고, 구조를 개선하여 장기적인 사용을 위해 유지보수성을 높여 '올바른' 코드를 만든다. ■  Make it fast - 빠르게 만들기 마지막 단계에서는 프로그램의 성능을 최적화해, 더 빠르고 효율적이게 만든다.그러나, 이 단계를 달성하기 위해 이전 단계에서 달성한 정확성과 유지보수성이 저하되어서는 안 된다.   "완벽함을 추구하다 기능을 잃어버리는 것보다, 완벽하지 않아도 작동하는 코드가 낫다." Make It Work, Make I..

생각창고 2024.03.24

[Spring] 스프링의 캐시 추상화

들어가기 앞서 - 캐시(Cache)란? 캐시(Cache)는 데이터 빠르게 접근하기 위해 임시로 저장하는 공간 입니다. 캐시는 자주 사용되는 데이터나 결과를 저장해 두었다가, 동일한 요청이 들어올 때 빠르게 응답할 수 있게 도와줍니다. 이는 데이터베이스나 외부 시스템에 대한 접근 횟수를 줄여 시스템의 전체적인 성능을 향상시킬 수 있습니다. 스프링에서는 이러한 캐시의 사용과 관리를 쉽게 만들어주는 캐시 추상화를 제공합니다. 스프링의 캐시 추상화는 다양한 캐시 저장소를 지원하며, 개발자가 캐시 로직을 쉽게 구현하고 관리할 수 있도록 지원합니다. 💡캐시 추상화란? 캐시 추상화는 캐시 구현을 애플리케이션 로직으로부터 분리하여, 개발자가 캐시를 보다 쉽게 사용할 수 있도록 하는 개념입니다. 어노테이션을 사용하여 메..

Framework/Spring 2024.03.17

[Spring] SpEL으로 더 강력하게 표현식 작성하기

SpEL이란? Spring Expression Language(SpEL)은, 객체 그래프를 조회하고 조작하는 데 사용되는 표현식 언어입니다. SpEL을 사용해 런타임에 객체의 속성에 접근하거나, 메서드를 호출하거나, 배열, 리스트 및 맵과 같은 컬렉션에 대한 조작을 수행할 수 있습니다. 또한, 논리적 및 산술 연산을 수행하는 데도 사용할 수 있습니다. SpEL의 기본 문법 1. 리터럴 표현식 - 문자열, 숫자, boolean 등 ExpressionParser expressionParser = new SpelExpressionParser(); String helloWorld = (String) expressionParser.parseExpression("'Hello World'").getValue(); i..

Framework/Spring 2024.03.13

[Spring] 애플리케이션의 초기 응답 속도 개선하기

들어가기 앞서 - 왜 Spring에서 초기 요청의 응답이 지연될까? Spring으로 개발을 하다 보면, 애플리케이션을 실행하고 초기 요청, 특히 첫 요청의 응답이 유난히 오래 걸린다는 점을 알 수 있습니다. 이러한 현상을 'Cold Start'라고 부르는데, 'Cold Start'의 주요 원인으로 추정할 수 있는 상황은 아래와 같습니다. 1. JIT 컴파일러의 작동 방식 Java는 'Write Once, Run Anywhere'를 지향하는 플랫폼 독립적인 언어입니다. 그래서, 일반적인 컴파일 언어와 동작 방식에서 약간의 차이가 있는데, Java 프로그램은 컴파일 시점에 바이트 코드로 변환되었다가, 실행 시점에 기계어로 변환되어 실행됩니다. 이러한 방식은 프로그램의 이식성을 높이는 대신, 바이트 코드를 실..

Framework/Spring 2024.03.07

[기술 면접 단골 질문] Spring

Spring DI / IoC 란?  의존성 주입(DI): 객체의 생성과 사용에 필요한 의존성을 객체 스스로 생성하지 않고, 외부(스프링의 경우 IoC 컨테이너)에서 주입하도록 합니다. 제어의 역전(IoC): 객체 생성, 의존성 연결, 메서드 호출 등 프로그램의 흐름을 개발자가 직접 제어하지 않고, 프레임워크에 맡기는 것을 말합니다.  IoC 컨테이너의 역할은 무엇이 있을까요? 빈의 생명주기 관리: 생성, 초기화, 소멸 과정을 관리빈의 의존성 관리: 빈 간의 의존성을 주입하고 관리빈의 설정 관리: XML, 어노테이션 등을 통해 빈의 구성 정보를 관리빈의 이름 해석: 이름이나 ID를 통해 특정 빈을 참조할 수 있게 관리   DI 종류는 어떤것이 있고, 이들의 차이는 무엇인가요? 생성자 주입: 의존성을 가진 ..

[Spring] Redisson으로 동시성 문제 해결하기

들어가기 앞서 - 동시성 문제란? 동시성 문제는 하나의 데이터에 여러 스레드가 동시에 접근할 때 발생할 수 있는 문제를 말합니다. 멀티스레딩 환경에서 특히 중요한 이슈로, 여러 스레드가 공유 자원에 동시에 액세스 할 때 정확성과 일관성에 문제가 생겨 데이터의 손상, 잘못된 실행 결과 등을 초래할 수 있습니다. 이를 방지하고, 공유 자원에 대한 안정적인 접근과 제어를 위해서는 한 번에 하나의 요청만을 처리할 수 있도록 하는 Lock이 필요합니다. 1. Synchronized 사용 다른 방법보다 비교적 간단하게, Java의 synchronized 키워드를 사용해 해당 메서드나, 코드 블럭을 동기화해 한 스레드에서 해당 자원에 접근 중이라면, 다른 스레드의 접근을 막아 해당 자원을 Thread-safe 하게 ..

Framework/Spring 2024.02.28