전체 글 183

[Java] : Local Class알아보기

지난 글에서 Nested Class와 Inner Class가 뭔지 공식문서를 읽어 보았는데, 이어서 Local Class, Anonymous Class 그리고 Lambda 에 대해 읽을 예정이다. 0. Enclosing Class?Enclosing Class는 바디 안에 다른 클래스를 포함하고 있는 클래스이다. 그런데 생각해보니 Outer class도 있자나? 이전에 Inner class에 대해 공부할 때 Inner class의 외부 클래스를 Outer class라고 부를 수 있는데 enclosing class와 outer class가 뭐가 다른지 이번에는 GPT의 힘을 빌려보았다. 키메라 : 두 개는 비슷한데 뭐가 다른거야?MyClass.javapublic class MyClass { void ..

[Java] : Nested Class 와 Inner class

오늘도 고군분투하는 우리의 키메라! 캬오! 원래는 람다에 대해서만 알아보려고 했는데, 공부하다보니 먼저 Nested Class와 Inner Class에 대해 알아보려고 한다. 다 이해하고 외워버려!1. 중첩 클래스(Nested class)우선 inner class를 알기 위해서는 Nested Class에 대해 먼저 알아야 한다. 자바 프로그래밍 언어는 다른 클래스 안에 클래스를 정의할 수 있는데 이러한 클래스는 중첩 클래스(nested class)라고 한다. class OuterClass { ... class NestedClass { ... }} 여기서 Nested class는 non-static와 static이라는 두 개의 카테고리로 나눌 수 있는데, Non-static n..

[Docker] 기초 : 컨테이너란? + Docker란?

요즘 어딜가나 두들겨 맞는 우리의 키메라! 이제 좀 더 내가 공부한 것을 자세히, 꿀리지 않게(?) 정리해서 외우고 써먹으려고한다. 대충 명령어 쳐서 하는건 다 할 수 있다고 생각한다. 이러면 공부를 했는데 설명하라면 말을 못하니 결국 거짓말을 치게 된 것이다. 이제 눈으로 흘깃 대충 보지말고 좀... 제대로 정리하자... 1. 컨테이너란? (+ 탄생 배경) 물건을 담아서 상하차 할 때 쓰이는 그 컨테이너? 컨테이너가 뭐지? 과거 어플리케이션들은 한 컴퓨터에서 운영이 되었는데 보통 한 대의 컴퓨터를 하나의 용도로만 사용했다. 이러면 문제가 있는데, 남는 서버 공간을 그대로 방치하게 되는 것이다. 이것이 아깝다고 같이 사용을 한다면 어떻게 될까? 한 서비스에서 문제가 생기면 다른 서비스에도 문제..

[JPA] : save시에는 @Transactional 이 왜 필요하나? 없는 경우는 뭐지?

최근에 열심히 이직 준비를 하고 있는 오늘의 키메라! 필자는 이와 같은 질문을 받았다 면접관 : JPA를 사용해 보셨다고요? JPA가 뭐죠?키메라 : 네! JPA는 Java Persistent API로 ORM을 위해 사용되는 인터페이스입니다.면접관 : 그러면 JPA에는 왜 save 시에 @Transactional을 붙여야 할까요? 안되다가 마법같이 데이터 조작 작업이 되더라고요.키메라 : 아... 그건 잘... 모르겠는데요?면접관 : ???키메라 : ??? 이에 대한 대답을 찾기 위해 글을 정리했다. 막상 쭈욱 다시 정리하니 별거 없는데 참... ㅠㅠ 1. 트랜잭션에 대해서트랜잭션이란 데이터베이스의 상태를 변화시키기 위해서 수행되는 작업의 단위를 뜻한다. 트랜잭션의 특징은 원자성, 일관성, 독립성..

Spring/JPA 2025.04.13

[끄적 끄적] 이사를 하며

정말 정신없이 시간이 빨리 흘렀다. 현재 글을 적는 시간은 주말이다. 그거 아나? 왜 주말이 빨리 가는지 말이다. 그것은 정말 사실인게, 실제로 월~금은 토~일보다 길기 때문에 주말이 빨리간다. (암튼 그렇다!) 필자 키메라는 최근에 이사를 진행했다. 그래서 이사를 하며 일들을 적어보려고 한다.    2023년 1월 28일 구로 디지털 단지 인근에 방을 얻었다.  아주 조용하고 주변에 아파트가 많은 곳이었다. 그리고 시간이 흘러... 계약 만료가 다가왔지만 다시 계약하지는 않았다. 왜? 짐이 많아지면서 집도 좁아진것도 문제고, 뭐 더 좋은 집에서 살고 싶은것도 있었지만, 가장 큰 문제는 전 세 사 기! 가 무서웠기 때문이다.  그래서 부동산업자와 이야기를 하다보니 전세보증보험이 되는 집에 가는게 안전하고..

끄적끄적 2025.02.09

[Java] ForkJoinPool 알아보기

전에 Future랑 CompletableFuture에 대해 간단히 알아보았다. 이번에는 ForkJoinPool에 대해 알아보고자 한다. 지난 글에서 Future, FutureTask, CompletableFuture 에 대해 공부를 사알~짝 했었는데 이 내용을 보고 해당 글을 보면 더 이해가 잘 될 것이다. (지난 내용 클릭) 1. Fork? Join? ExecutorSerivce? ForkJoinPool? Java 7에서부터 Fork/Join 프레임워크를 도입했다. 사용 가능한 모든 프로세서 코어를 사용하여 병렬 처리 속도를 높이는 데 도움이 되는 도구를 제공하는데 이는 분할 및 정복 접근 방식을 통해 달성된다. Fork 비동기식으로 실행될 수 있을 만큼 단순해질 때 까지 작업을 더 작은 독립 하위 작..

[Java] 스레드 - Future, FutureTask, ComplatebleFuture?

최근에 스레드에 대해 공부를 진행하고 있다. 그런데 Future, FutureTask, ComplatableFuture 관련해서 필자가 잘 이해를 못하고 있다. 그래서 이를 정리하고자 한다. 1. Future? Oracle에서는 공식 문서에서 future에 대해 다음과 설명하고 있다. Future는 비동기 계산의 결과를 나타냅니다. 계산이 완료되었는지 확인하고, 완료될 때까지 기다리고, 계산 결과를 검색하는 메서드가 제공됩니다. 결과는 계산이 완료되었을 때 get 메소드를 사용해서만 검색할 수 있으며 필요한 경우 준비될 때까지 차단됩니다. 취소는 cancel 메소드로 수행됩니다. 작업이 정상적으로 완료되었는지 또는 취소되었는지 확인하기 위한 추가 메서드가 제공됩니다. 계산이 완료되면 계산을 취소할 수 없..

[Spring Batch] 5장 : Configuring a Step - 4 : Controlling Step Flow ~ Batch Status Versus Exit Status

지난 시간에는 StepExecutionListener ~ Example Tasklet Implementation을 읽어보았다 (지난 내용은 여기 클릭!) 이번 시간에는 Controlling Step Flow부터 다시 읽어볼 것이다. Controlling Step Flow 가지고 있는 job안에서 step을 함께 그룹핑 하는 능력이 한 step에서 다른 step으로 어떻게 job이 "흘러가는지" 제어할 필요가 있다. Step의 실패는 Job 이 실패한다는것을 꼭 의미하는건 아니다. 또한 다음에 어떤 단계를 실행해야 하는지 결정하는 "성공" 유형이 두 가지 이상 있을 수 있다. Step의 그룹이 어떻게 설정되냐에 따라서 특정 step이 전혀 처리되지 않을 수 도 있다. 1. Sequential Flow 가장..

Spring/Spring Batch 2023.12.20

[Spring Batch] 5장 : Configuring a Step - 3 : StepExecutionListener ~ Example Tasklet Implementation

지난 시간에는 스킵 로직을 설정하는 것에서부터 Step 실행에 중도에 끼어드는 방법까지 알아 보았다. (Configuring Skip Logic ~ Intercepting Step Execution) 지난 내용은 여기 클릭! 이번 시간에는 StepExecutionListener에서부터 다시 이어서 읽어보도록 하겠다. Listener? 리스너는 배치 흐름 중에 Job, Step, Chunk 실행 전후에 어떤 일을 하도록 하는 Interceptor 개념의 클래스다. 스프링 MVC의 Interceptor가 실제로 HandlerAdapater 호출 전후로 Interceptor가 호출되는 것처럼 Job, Step, Chunk 전후로 오버라이딩된 메서드가 호출된다. 주로 각 단계별로 로그 기록을 남기거나, 진행된 ..

Spring/Spring Batch 2023.12.13

[Spring Batch] 5장 : Configuring a Step - 2 : Configuring Skip Logic ~ Intercepting Step Execution

이번 시간에는 지난번에 읽던 Step 설정을 이어서 읽어볼 것이다. (지난 내용이 궁금하면 여기 클릭!) 1. Configuring Skip Logic 처리하는동안 맞닥드린 에러들은 Step 의 실패로 결과를 초래하는 대신에 생략해야만 하는 시나리오가 있다. 이것은 데이터를 그것이 무슨 의미인지 이해하는 누군가에 의해 만들어지는 결정이다. 예를 들어, 금융 데이터는 돈이 전동될 때 스킵할 수 없는데 그것이 완벽한 정확함을 필요로하기 때문이다. 반면에 벤더의 리스트를 로딩하는 것은 스킵을 가능케 할 수도 있다. 만약 벤더가 부정확하게 포맷되어잇고 필요한 정보가 빠져 있다면 이슈가 없다. 대개, 이렇나 나쁜 기록들이 또한 쌓이는데 listener에 대해 논의할 때 나중에 다룬다. 다음 Java 예시가 ski..

Spring/Spring Batch 2023.12.07