반응형

java 53

Call By Value와 Call By Reference

Call By Value와 Call By Reference 특정 메서드를 호출하는 경우 인자로 전달하는 방법은 값에 의한 호출( Call BY Value ) 참조에 의한 호출( Call by Reference )이 있다. 값에 의한 호출( Call BY Value) 메서드를 호출할 때 값자체를 넘기는 방식이다. 호출하는 함수의 변수와 호출된 함수의 파라미터는 다른 변수이다. 참조의 의한 호출( Call by Reference ) 메서드를 호출할 때, 참조를 직접전달하는 방식이다. 참조값을 직접 전달하기 때문에 호출하는 함수의 변수와 호출된 함수의 파라미터는 동일한 변수이다. 자바는 어떤 방식을 채택하는가? 자바는 값에 의한 호출만 존재한다. 자바의 변수는 스택영역에 할당된다.변수의 타입이 원시타입..

CS/면접 2025.09.01

교착상태

교착상태두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고있어 결과적으로 아무것도 완료되지 못하는 상태 교착 상태 조건상호 배제한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 것점유 대기자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태비선점자원이 강제적으로 해제될 수 없으며, 점유하고 있는 프로세스의 작업이 끝난 이후에만 해제되는 것원형대기프로세스들이 원의 형태로 자원을 대기하는 것을 의미한다.Java에서 데드락 해제하는 방법1. synchronized 블락안에 synchronized 블락 넣지 않기synchronized(resoucre1){synchronized( resoucre2)}synchronized(resoucre2){synchronized( resoucre..

CS/면접 2025.08.29

태태코딩 - 김영한 고급 java 람다

강의 링크https://inf.run/EXqku 김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍| 김영한 - 인프런 강의현재 평점 5점 수강생 3249명인 강의를 만나보세요. 최신 자바에 꼭 필요한 람다, 스트림, 자바를 활용한 함수형 프로그래밍 기술을 기초부터 실무 레벨까지 깊이있게 학습합니다. 람다, 함수형www.inflearn.com 즉시평가와 지연평가 get 과 getElse의 차이를 알기 위해 간단한 코드구현 1. 즉시평가public class EagerEvaluationIf { public static int calc() { System.out.println("즉시평가: 연산이 수행됨!"); return 42; } public s..

JAVA 2025.07.29

태태개발일지 - 김영한 고급 JAVA LAMBDA

강의 링크https://inf.run/EXqku 김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍| 김영한 - 인프런 강의현재 평점 5점 수강생 3236명인 강의를 만나보세요. 최신 자바에 꼭 필요한 람다, 스트림, 자바를 활용한 함수형 프로그래밍 기술을 기초부터 실무 레벨까지 깊이있게 학습합니다. 람다, 함수형www.inflearn.com JAVA OPTIONAL optionalJava의 Optional은 NullPointerException을 방지하고, 코드ㅢ 명확성을 높이기 위해 등장한 컨테이너 클래스다.그럼 언제쓰는가?Nullable한 값 처리직접 null 체크 로직을 넣는 대신 Optional을 활용해 더 명확하고 안전하게 값을 다룰 수 있다.NullPointerExcepti..

JAVA 2025.07.28

태태개발일지 - JAVA 고급편(3) 김영한 람다

람다&제네릭제네릭 사용 이유1. 중복과 가시성Function func1 = a -> a+3;Function2 func2 = a -> a+2; 이와같이 람다를 만들 때 비슷하거나 같은 코드를 여러개만든다면, 중복과 가시성에 문제가 생길 수 있음 2. 람다 대입Function func1 = a -> a+3;#Function2 func2 = a -> a+2;Function2 func2 = func1 (x) 아래와 같이 java 특성상 같은 값이라도 다른 자료형에 값을 대입할 수 없다. 즉 int s = 10String w = "10"w =s (x) 같은 값이라도 대입할 수 없기 때문이다. 제네릭&람다@FunctionalInterfacepublic interface Function { R apply(T ..

JAVA 2025.05.05

태태개발일지 - JAVA 고급편(3) 김영한 람다

고차함수 고차 함수(Higher-Order Function)는 함수를 인자로 받거나, 함수를 반환하는 함수를 의미한다 쉽게 말해서 기본적인 함수는 int, float, 객체 ... 간단한 자료형을 넘기지만, 함수자체를 넘기는 함수를 고차함수라고 한다. 즉, 함수 자체를 값처럼 전달하거나 반환할 수 있는 함수가 고차 함수다. 기본적인 함수는 int, float, 객체 등 단순 자료형을 인자로 받지만, 고차 함수는 함수 자체를 인자로 받거나 결과로 반환한다 import java.util.function.Function;public class HighOrderFunctionExample { // 함수를 인자로 받는 고차 함수 public static int compute(Function oper..

JAVA 2025.05.02

태태코딩 - 람다(김영한 실전자바 고급 3편)

요즘 AI공부를 시작하다보니, AI공부를 쉬고싶을 때 백엔드 공부로 치유하는 느낌이다,, 원래는 백엔드도 점점 공부라고 느껴지던 참이였는데,, 치료된건가..? 싶다 일단 AI 끝나면 멀티스레드를 마무리하고, 람다를 제대로 다시 공부해볼 예정이다. 효율적인 코드?역시 영한 강사님이다,, 아직 시작 부분이지만, 람다가 왜 필요한지 설명해주신다.머리속 코드로 작성해보자면 public void ex1(){ String ex1 = "행복"System.out.println("오늘은 "+ ex1+ "해요");} public void ex2(){ String ex2 = "우울"System.out.println("오늘은 "+ ex2+ "해요");}public class Main { public static void..

JAVA 2025.04.27

태태개발일지 - 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

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

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

JAVA 2025.02.22
반응형