| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 플러스 백엔드
- MSA
- 알고리즘
- 티스토리챌린지
- 트리
- event
- Java
- 이진트리
- 삽입
- docker
- stack
- 백준
- jdk
- code blocks
- bean
- 코딩테스트
- 연습문제
- Unity
- 프로그래머스
- 아키텍처
- Spring
- redis
- jre
- Kafka
- 오블완
- Gradle
- EDA
- 탐색
- JPA
- Kotlin
- Today
- Total
목록Java (17)
Repository
1단계: Java 기초 다지기4년간 Java를 실무에서 사용하며 얻은 경험과 통찰을 담아, 단순히 문법을 넘어 '왜'와 '어떻게'를 깊이 있게 다루겠습니다.1.1 Java 개발 환경 구축JDK 설치와 환경 변수 설정JDK vs JRE: 개발자가 알아야 할 핵심JRE (Java Runtime Environment)Java 애플리케이션을 실행하기 위한 최소 환경구성요소: JVM + 핵심 라이브러리 (java.lang, java.util 등)컴파일러(javac)가 없어 개발 불가능최종 사용자가 설치하는 환경JDK (Java Development Kit)Java 애플리케이션을 개발하기 위한 전체 패키지구성요소: JRE + 개발 도구 (javac, javadoc, jar, jdb 등)실무 관점: JDK 11+ 부..
Java를 사용하여 개발을 하기 위해서는 JDK, JRE, JVM을 필요로 한다. 오늘은 이것들이 무엇이며, 우리가 프로그램을 개발하고 실행되기까지 어떤 일들이 벌어지는지 알아보도록 하겠다.1. JDK( Java Deployment Kit )가장 먼저 알아볼 것은 자바 개발 도구이다.JDK는 기본적으로 우리가 자바를 사용하여 개발하고, 실행하기 위해 필요한 것들이 담겨있다. 자바로 개발된 프로그램을 실행하기 위한 JRE와 필수적 그리고 기본적인 자바 개발 도구들(Java, Javac,...)등이 포함된다. 그럼 JDK만 설치되어 있다면 메모장만 사용해도 코드가 돌아가게 할 수 있나요? 물론이다. 이를 증명하기 위해 메모장으로 코딩을 진행해 보겠다.우선, 텍스트 파일에 기본적인 코딩을 해보았다.이후 해당 ..
Java에서 제네릭과 메서드 오버로딩이 함께 사용될 때, 우리가 기대했던 것과는 다른 결과가 나오는 경우가 있습니다. 이번 글에서는 아래 코드에서 왜 B0가 출력되는지 심층적으로 분석해 보겠습니다.코드 분석class Main { public static class Collection { T value; public Collection(T t) { value = t; } public void print() { new Printer().print(value); } class Printer { void print(Integer a) { System.out.print("A" + a); } void print(Obj..
Java에서 멀티스레드 환경을 개발하다 보면, 스레드마다 독립적인 데이터를 저장하고 관리해야 할 때가 있습니다.이럴 때 유용하게 활용할 수 있는 클래스가 바로 ThreadLocal입니다. 이번 글에서는 ThreadLocal의 개념, 사용 방법, 그리고 실제 사례를 중심으로 살펴보겠습니다.ThreadLocal이란?ThreadLocal은 각 스레드마다 별도의 변수를 저장할 수 있도록 지원하는 Java 클래스입니다. 동일한 ThreadLocal 인스턴스를 사용하더라도, 각 스레드가 자신만의 독립적인 값을 가지며, 다른 스레드와 공유되지 않습니다.즉, 하나의 변수를 스레드 간에 안전하게 관리할 수 있는 메커니즘을 제공합니다.ThreadLocal의 특징각 스레드마다 독립적인 데이터 저장 공간을 제공합니다.스레드 ..
컴퓨터 프로그래밍에서 실수 연산은 흔히 오차 문제를 동반합니다. 특히 금융, 과학 계산, 그리고 데이터 분석 등 정확한 수치가 중요한 분야에서는 이 문제가 더욱 부각되는 문제인데요.이번 글에서는 Double의 한계, Float를 사용한 실수 연산의 특징, 그리고 BigDecimal을 활용한 오차 없는 실수 연산 방법을 살펴보겠습니다.1. Double의 문제: 부동소수점 연산의 한계Double은 대부분의 프로그래밍 언어에서 기본 실수형으로 사용됩니다. 이는 64비트 IEEE 754 표준을 따르며, 빠른 연산 속도와 넓은 범위의 숫자를 처리할 수 있는 장점이 있습니다.하지만 정확도 면에서는 한계가 있습니다.public class DoubleExample { public static void main(S..
1. Static이란??Static 키워드를 선언하게 되면 사용할 때만 메모리에 할당하고, 사용 안 할 때는 제거되는 일반 선언들과 달리 프로그램이 종료될 때 까지 메모리에 할당되어 있는 것을 의미합니다. 그렇기 때문에 우리가 Static으로 선언한 것들은 따로 생성하지 않고 가져다 사용할 수 있는 것입니다. 그렇다면 우리가 흔히 사용하는 Static 변수와 Static 메소드들은 어떤 작동원리를 가지고, 어떤 차이점이 존재하는지 알아보도록 하겠습니다.2. Static 변수Static 변수는 클래스 수준에서 선언되며, 인스턴스와 관계없이 모든 객체가 동일한 메모리 공간을 공유합니다. Static 변수는 클래스가 메모리에 로드될 때 한 번만 초기화되며, 프로그램이 종료될 때까지 메모리에 유지됩니다.Stat..
I/O 스트림이란?I/O 스트림은 Java에서 데이터를 입력(Input)하거나 출력(Output)할 때 사용하는 추상화된 모델입니다.InputStream: 데이터를 읽어오는 데 사용.OutputStream: 데이터를 외부로 쓰는 데 사용.특징데이터의 흐름을 Stream으로 간주.Byte 단위 또는 Character 단위로 처리.데이터 소스: 파일, 네트워크 소켓, 메모리 등.💡 "Java의 I/O는 Stream 기반이다. 데이터를 한 번에 처리하지 않고, 스트림으로 데이터를 흘려보내면서 효율적으로 작업한다."InputStream과 OutputStream의 기본 구조InputStream의 주요 메서드 int read() throws IOException int read(byte[] b, int off,..
JPA를 사용하여 데이터베이스에 락을 거는 방법은 2가지방법을 뽑아 볼 수 있습니다. 테이블에 행하는 행위 ( 조회, 수정, 등록, 삭제 )를 막는 비관적 락과 데이터에 버전을 명시하고 해당 버전을 통해 데이터의 일관성을 보장하는 낙관적 락이 이 경우입니다. 비관적 락 - Pessimistic Lock비관적락은 데이터를 조회하고 특정 작업을 할 때 테이블에 어떤 작업도 일어나면 안되는 상황에서 사용하기 적합하다고 볼 수 있습니다.이는 데이터의 정확성과 일관성을 보장하는 방법이며, 이 방법은 테이블에 락을 거는 행위로 성능에 큰 영향을 끼칠 수 있습니다. 데이터베이스의 종류에 따라 락을 걸었으나 데이터가 조회되는 경우도 있으니 이는 어떤 데이터베이스를 사용하는지를 확인을 하고 잘 선택하기 바랍니다.pub..