본문 바로가기

자바11

[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.