본문 바로가기

자바12

[Java] POJO - Cache 구현 Java(POJO) Cache 구현개발을 하다보면 Cache, Caching 과 같은 단어들을 들어보고는 했을것이다.Spring framework 의 경우 기본적으로 캐싱을 지원하는 기능들을 지원한다, 또한 다양한 캐시 구현체들을 제공한다(Redis, Encache, Caffenine) 해당 구현체들로 더 많은 기능들을 사용할 수 있다. 1. Cache(캐시)란?그렇다면 Cache(캐시)란 무엇일까? Cache 는 데이터에 빠르게 접근하기위해 빠른 저장공간(Memory)을 활용하는 기술이다.Application 에서 자주 사용하는 데이터를 Memory 와 같이 빠른 저장소에 데이터를 임시로 저장하고,이후 데이터가 필요할 때 캐시 데이터에 접근하여 바로 사용한다. 캐시에서 데이터를 가져오는 이유는 DB나,.. 2025. 1. 8.
[Java] ThreadLocal이란? - (ThreadLocal, InheritableThreadLocal) 설명 및 예제(테스트) Spring Boot로 Log 추적기를 구현하던 도중, '동시성 문제'에 대해서 접하게 되었고, 여러가지 많은 해결 방법중 ThreadLocal 이라는 Class를 알게 되었다. ThreadLocal 이 무엇인지, 어떤 경우에 사용하는지에 대해서 알아보자. 1. ThreadLocal 이란? - JDK 1.2부터 등장한 클래스이며, Thread 단위로 로컬 변수를 사용할 수 있다.(각 스레드에 할당된 변수를 각각 전역변수 처럼 활용가능) 하지만 사용시 잘못 사용하게 되면, 부작용이 발생한다 (아래에서 다룰예정.) 종류에는 ThreadLocal, InheritableThreadLocal 2가지가 존재한다. - 공식문서 - 번역기를 통한 해석 이 클래스는 스레드 로컬 변수를 제공합니다. 이러한 변수는 (get.. 2023. 3. 7.
[Java] Multi Thread를 이용한 간단 게임 구현(구구단) Java Multi Thread를 이용한 간단 게임 구현하기 - 곱셈(구구단) 맞추기 - Java Thread를 공부 하던 중 간단한 입력을 통해 시간내에 많은 문제를 풀어보는 구구단 게임을 만들게 되었다. - Scanner 와 Thread만을 사용하여 간단하게 구현 해보자. 동작 방식 및 게임 룰 설정 문제 제한시간 60초 안에 많은 문제를 맞추자. 2자리 * 1자리 숫자가 문제로 주어진다. 맞추면 "정답입니다", 틀리면 "틀렸습니다. 정답은: xxx" 출력. 정답, 오답의 각 개수 체크하여 게임 종료시, (문제 갯수, 정답, 오답 갯수) 출력. 구현 Timer 기능과 문제를 발생시키는 Thread 생성(GuguTimer.class) 문제를 내고, 입력을 받아 정,오답을 검증하는 Thread 생성(Ga.. 2023. 1. 26.
[IntelliJ] Java 프로젝트 생성 IntelliJ 에서 Java 프로젝트 생성하는 방법 1. IntelliJ 실행 후 -> New Project 클릭 2. 아래 화면이 나오면 순서에 맞게 설정 후 NEXT - Project SDK 는 본인이 사용하는 Java 버전에 맞게 선택 하면 된다.(자동으로 잡아준다) 3. 아래 화면은 아무 설정 없이 NEXT. 4. Project 이름을 기입하고, 경로를 지정한다. 5. 프로젝트 생성이 종료되면 - src폴더 아래 / Pacakge 생성 / class 생성 후 - 출력 테스트를 하면 종료 된다. 2023. 1. 22.
[Java] Lombok 실제 사용법(2) Lombok 라이브러리 실제 사용법 및 적용법을 코드를 통해 알아보자! 롬복의 기본 개념과 어노테이션들에 대한 자세한 설명은 아래 링크에서 확인하세요! https://lucas-owner.tistory.com/26 [Java] LomBok이란? & 어노테이션 정리 (1) Java 라이브러리 Lombok이란? + 자주 사용 어노테이션 정리! ○ LomBok 이란? LomBok이란 어노테이션 기반으로 코드 자동완성 기능을 제공하는 라이브러리이다. Spring, Spring Boot 로 Web 개발을 하다보면 반 lucas-owner.tistory.com - 해당 코드 사용법은 필자의 개인적인 코딩 스타일이 적용되어 있고, 정답이 아닐수 있습니다! (상황에 따라 사용하세요!) ○ Code - 우선 아래와 같은.. 2023. 1. 17.
[Java] LomBok이란? & 어노테이션 정리 (1) Java 라이브러리 Lombok이란? + 자주 사용 어노테이션 정리! ○ LomBok 이란? LomBok이란 어노테이션 기반으로 코드 자동완성 기능을 제공하는 라이브러리이다. Spring, Spring Boot 로 Web 개발을 하다보면 반복되는 코드가 자주 등장하며 가독성을 떨어트린다. 예를 들어보면 Getter, Setter, ToString, Constructor(생성자)가 대표적인 예제일 것이다. - 간단 예시 예시를 간단히 설명해 보자면, 필자의 경우 Legacy 시스템(AS-IS)을 TO-BE로 개선하는 작업을 진행했었다. Legacy 코드를 처음보고 적잖이 당황했었다. 왜냐하면 DTO혹은 VO Class 의 경우 필드의 갯수가 많게는 30-50개 정도 (혹은 그이상)이었기 때문이다. 만약 이.. 2023. 1. 17.
[Data Structure] Stack(스택) 자료구조란? -Java Stack 자료구조란 무엇인가? - Java 1. 스택이란? - 'Stack'은 한쪽 방향에서만 자료를 넣고 빼는 형태의 자료구조이다 - LIFO(Last In First Out) - 선입후출 의 특징을 갖고 있으며, 제일 먼저 들어간 데이터는 제일 마지막에 꺼낼 수 있다는 의미를 가진다. - 이해하기 쉬운 예시로 -> '프링글스' 과자를 상상하면 쉬울 것이다. 제일 먼저 들어간 과자는 제일 마지막에 먹을 수 있게 되는 방식인 것이다. - Stack이 많이 사용되는 곳은 - DFS(깊이 우선 탐색)이다. 2. Java Stack 라이브러리 Mehtods push(object) : object를 Stack 에 삽입한다. pop() : stack에 있는 최상단 object를 삭제 하고 반환한다. peek().. 2023. 1. 16.
[Java] Stack 2개로 Queue 처럼 사용하기 java - Stack 2개로 Queue 구현하기 - 사실 Stack 2개로 Queue 처럼 구현할 일이 있는지는 잘 모르겠다... (그냥 Queue를 사용하면 되는 부분) 하지만 상황에 따라 Stack을 Queue 방식으로 구현해야 할 수도 있고, 필자의 기준에서는 신박한 내용이었기에 구현과 포스팅을 해보려 한다. - 자료구조에서 Stack, Queue 라는 개념을 한번쯤은 들어봤을 것이다! 간단하게 얘기하자면 Stack : 선입후출(FILO), 처음에 넣은 요소가 제일 마지막에 나오는 것이고 Queue : 선입선출(FIFO), 처음에 넣은 요소가 처음으로 나오는 것이다. 방법 목표 : 숫자 1,2,3,4 를 차례로 추가하고 1,2,3,4 순서대로 출력하는 것. 1. Stack이 A,B 2개가 있다고 .. 2023. 1. 13.
[springBoot] spring Boot 이메일 발송(Google SMTP) Spring Boot 이메일 발송하기! 웹 서비스를 기획하고 구성하다보면 이메일 관련한 작업을 해야 할 경우가 발생한다. 예를들면 우리가 많이 접하는 '회원가입시 이메일인증', '각종 알림을 위한 이메일 전송' 등 이 존재한다. 다양한 라이브러리가 이미 존재하기 때문에 우리는 선택을 해야한다. 1. 라이브러리를 사용해서 이메일을 발송할 것 인지? 2. 라이브러리를 사용하지 않고 코드만으로 작성 할 것인지! 이 글에서는 라이브러리를 사용하여 구글이메일 발송을 해볼 것이다. JavaMailSender 를 사용 할 것이며 2가지 방법을 소개할 예정이다. * 2022.05.30일 부터 Google 약관이 변경되어 2단계 인증 (앱 비밀번호 사용)을 해야 사용가능. -현재 개발 환경에서 이메일 발송 로직 1. F.. 2022. 12. 14.