반응형

분류 전체보기 309

태태영어일지 - 리얼클래스

일상영어1. Do me a favor 해석: 내 부탁 좀 들어줘 ~ 부탁내용ex) 누군가에게 내 부탁좀 들어줘라 ~~~ 해줄수있니?  할 때 사용 부탁좀 들어줄래? 라고 사용하려면Can you do me a favor? 이라고 사용할 수 있다. 2. what if? 해석: ~~한다면 어떻게해ex) 상황을 가정할 때 사용한다. what if my hand gets caught in the mail slot만약 내 손이 메일 슬롯에 걸리면(끼이면) 어떻게 해? 전치사시간 preposition of time during:  특정 기간동안ex) during summer vacaction  until: 특정 기간 까지ex) util summer time for: 특정 날짜 기간동안ex) for two days, ..

태태개발일지 - 자바 고급 (김영한) CAS 연산

자바 원자적 연산 원자적 연산이란? 하나의 연산이 중간에 끊기지 않고 한 번에 수행되는 것  원자적 연산을 사용하는 이유멀티스레드 환경에서 동시에 여러 스레드가 공유 변수에 접근하면 경합이 발생할 수 있다.이 문제를 해결하기 위해 synchronized 와 같은 키워드로 lock을 걸어서 동기화 할 수 있지만, 락을 사용하면 성능이 저하될 수 있다. ex) 아래는 원자적인 연산이 아니여서 경합이 발생할 수 있는 코드이다.public void use(){if(i==10){}i++;}CAS CAS(Compare-And-Swap) 을 사용해서 동기화 없이(비블로킹, Lock-Free) 원자적 연산을 수행할 수 있도록 설계된 클래스  사용법 import java.util.concurrent.atomic.Atom..

JAVA 2025.03.17

태태영어일지 - 리얼클래스

초급편을 수강하면 타일러 선생님이 스누피 애니메이션으로 설명을 해주신다. Cut it out!!번역: 그만해! 멈춰! ex) 한 여자아이가 발표를 하고있는데, 주변 아이들이 웅성웅성 떠들면서 발표를 방해하여 짜증나게 할 경우.cut it out!! (컷 잇 아웃) 이라고 표현한다. Forget It!번역: 됐어, 관둬 ex) 대화도중 한숨을 쉬면서 됐다.. 그만하자, 할 때 사용하는 표현이다Forget it(폴겟잇) 잊어버려 관둬~ 라고 표현한다.

태태영어일지 - 리얼클래스 할까말까 (솔직 후기)

출퇴근 길에 경제와 영어공부를 하고싶다고 생각했다. 기본문법, 단어도 중요하지만, 나는 해외여행을 많이 다니기 때문에 일상영어를 더 배우고싶었다. 영어 강의를 찾던 도중 타일러 선생님이 가르쳐주시는 리얼클래스를 발견했다. 리얼클래스https://realclass.co.kr/new/promotion/package/real-pass?utm_campaign=purchase&utm_source=google&utm_medium=search&utm_content=re_brand_1&gad_source=1&gclid=Cj0KCQjw7dm-BhCoARIsALFk4v-E3B4Sw_wExEI249rN_Q6LAmR_ErowAhiAFQTbM2NZQSA4DOo0-KcaAjrFEALw_wcB 콘텐츠로 배우는 진짜 영어, 리얼클래..

태태개발일지 - java 고급 멀티스레드(김영한)

전 글에 이어서 작성하겠다.전 글을 요약하자면, 생산자와 소비자가 같은 대기공간에 들어가고 랜덤으로 깨어진다는 것이였다. ReentrantLock여기서 사용하는 것이 ReentrantLock 이다. 예시코드 public void awaitMethod() { lock.lock(); try { while (!ready) { // ready가 true가 될 때까지 대기 System.out.println(Thread.currentThread().getName() + " 대기 중..."); condition.await(); // 현재 스레드를 대기 상태로 만든다. } S..

JAVA 2025.03.08

태태개발일지 - java 고급 멀티스레드

생산자 스레드와 소비자 스레드 시뮬레이션가정:1. 생산자는 데이터를 가져와서 queue에 입력을한다.2. 소비자는 데이터를 queue에서 가져와서 제거한다.  기본 코드 예시 public synchronized void produce(int value) throws InterruptedException { while (queue.size() == MAX_SIZE) { System.out.println("Queue is full. Producer is waiting..."); sleep(); // Queue가 꽉 차면 기다림 } queue.offer(value); System.out.println("Produced..

JAVA 2025.03.06

태태개발일지 - 도메인 주도 설계의 사실과 오해 후기(조영호 강사님) 2일차

시작에 앞서 Q&A를 진행하셨다. 1. 성장할 수 있는 방법사람마다 성장할 수 있는 방법이 다양하다. 본인에게 맞는걸 선택해야한다. 조영호 강사님의 스타일은다양하고 넓게 공부하고, 파보고 싶은 분야를 정해서 더 깊게 들어가는 스타일이라고 하셨다. 1. 회사 공부 따로, 내 개인적인 공부 따로: 난 강의를 보면서 공부하는 것이 조금 더 이해도 빠르고 쉽게 습득 할 수 있다고 생각한다. 2.개발자가 아닌 Domain 전문가가 읽을 만한 DDD 책Domain 주도 설계의 첫 걸음( 개발을 가장 적게 언급한다)Domain 주도설계의 구현  DDD DDD를 프로세스, 방법론으로 바라보면 어렵다. 모델링과, 코드작업이 동시에 일어난다.그 이유는 도메인 모델을 코드로 보기 때문이다. 도메인기능요구사항불변식불변식A의 ..

태태개발일지 - 자바 고급 멀티쓰레드(김영한)

동시성저번 글은 메모리 가시성에 대한 글을 작성했다. 보통 성능을 위해 변수를 메모리에서 직접 참조하지 않고, 캐시에 담아서 값을 처리를 하는데, 이를 통해서 생기는 문제였다. 이번에 다룰 부분은 동시성이다. private Integer x = 7000if(x > 5000){ x -= 4000;} 쓰레드 안에서 이러한 로직을 실행할 때 문제가 생긴다.  만약 두개의 쓰레드가 동시에 실행한다면 어떻게 될까?  둘다 if문에 들어가서 검증로직을 수행 후 , x의 값을 변경하게 된다. 동시에 값을 참조했으므로 x의 값은 7000으로 찍히고 둘다 if문 안으로 들어가게 된다. 첫번째 쓰레드가 x에서 -4000을 해버렸고, 두번째 쓰레드가 값을 변경할때 x는 1000이 되게 되어 x는 음수가 되는 상황이 발생..

JAVA 2025.02.22

태태개발일지 - 멀티스레딩(김영한 고급 자바)

메모리 가시성 (Memory Visibility) 스레드를 선언할 때 공유변수를 volatile 으로 선언하는 이유를 알아보았다. 쓰레드와 메인쓰레드는 효율을 위해서 캐시에 변수의 값을 집어넣고 프로세스를 진행한다.즉. Main Thread에서 기존 쓰레드의 공유변수의 상태값을 바꾼다해도 캐시의 값이 바뀌기 때문에 쓰레드는 그 값의 변화를 인지하지 못한다는 것이다. private Boolean flag;를 쓰레드안에 선언해놓고 MainMethod에서flag = "false";를 선언한다고 해도 바로 실행중인 멀티 스레드에서 인지하지 못한다는 뜻이다.이것이 메모리의 가시성이다. 이유위에 언급한 것 처럼, MainThread 와 Multi Trhead모두 변수의 값을 캐시에 불러와서 그 값을 지속적으로 읽기..

JAVA 2025.02.17
반응형