Language/Java 14

[Java] 자바 메모리 구조

자바 프로그램이 실행되면 JVM (자바 가상 머신)이 메모리를 할당 받고, 그 메모리를 용도에 따라 여러 영역으로 나누어 관리함.그 메모리 공간을 크게 메서드영역, 스택 영역, 힙 영역으로 구분한다. 메서드 영역 프로그램을 실행하는데 필요한 공통 데이터.- 클래스 정보 : 클래스의 실행 코드, 필드, 매서드와 생성자 코드. - static 영역 : static 변수 보관- 런타임 상수 풀 : 프로그램을 실행하는 데 필요한 공통 리터럴 상수 보관. 스택 영역자바 실행 시 하나의 실행 스택이 생성됨. - 스택 프레임 : 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함함.- 메서드를 호출할 때마다 하나의 스택 프레임이 쌓임. - 각 스레드 별로 하나의 실행 스택이 생성됨. 스레드 수 만큼 스택이..

Language/Java 2025.05.01

[Java] 컨텍스트 스위칭

컨텍스트 : 현재 작업하는 문맥멀티태스킹을 할 때 각 스레드를 멈추는 시점에 실행하던 값을 메모리에 저장해 두어야 함. 이전에 실행 중인 값을 메모리에 잠깐 저장하고, 이후 다시 실행하는 시점에 저장한 값을 불러와야 한다. >> 컨텍스트 스위칭은 빈번할수록 좋지 않음. 컨텍스트 스위칭 비용은 매우 큼. >> 하지만! 어떤 작업이느냐에 따라 다름. 스레드가 하는 작업: CPU 바운드 작업 vs I/O 바운드 작업- CPU 바운드 작업 : 연산 능력을 많이 요구하는 작업. - I/O 바운드 작업: 입출력 작업을 많이 요구하는 작업. 디스크, 네트워크, 파일 시스템과 같은 입출력 작업. - 실무에서는 I/O 바운드 작업이 많다. CPU 를 많이 사용하지 않음. 스레드의 숫자는 스레드 작업에 따라 다르게 ..

Language/Java 2025.04.22

[Java] 멀티스레드, 멀티태스킹, 스레드

- 프로그램 실행 : 코드를 순서대로 cpu 에서 연산하는 일. - cpu 코어가 하나가 있어도, 동시에 프로그램이 실행 수 있도록 하는 방법은 ? - cpu 코어 : 실제 연산을 처리할 수 있는 것. 하나의 cpu 안에 여러 개의 코어가 들어 있음. 멀티 태스킹- cpu가 매우 빠르게 두 프로그램의 코드를 번갈아 수행 하면 동시에 실행하는 것처럼 느껴질 수 있음.- 단일 cpu가 여러 작업을 동시에 수행하는 것 처럼 보이게 하는 것. >> 시분할 기법. 운영체제 소프트웨어의 관점 스케쥴링 - 어떤 프로그램이 얼마만큼 실행할지 결정하는 것. - cpu 를 활용할 수 있는 다양한 우선순위와 최적화 기법을 사용. 멀티 프로세싱 - 프로세서가 여러 개. cpu 코어가 두개 이상이라면 ? - 물리적으로 동..

Language/Java 2025.04.20

[Java] Optional

값이 있을 수도 있고 없을 수도 있는 객체를 캡슐화 하는데 사용됨. 이전에는 객체를 직접 null인지 아닌지 확인했으나, Optional 을 받으면서 Null을 다루기가 좋아짐. - 목적 - NPE 발생을 방지하기 위해 사용함.- Optional 을 사용하면 명시적으로 객체가 null 일 수 있다는 것을 나타냄. 메서드에 null을 반환하면 오류가 발생할 가능성이 매우 높은 경우에 '결과 없음'을 명확하게 드러내기 위해 메소드의 반환 타입으로 사용되도록 매우 제한적인 경우로 Optional을 설계 https://velog.io/@juhyeon1114/Java-Optional-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 [Java] Optional 사용하기Optional클래스 완벼크 ..

Language/Java 2024.07.06

[Java] Stream

람다를 이용해서 스트림 파이프라인 1) 스트림의 생성. 스트림 인스턴스 생성. stream()2) 중간 연산. 필터링, 맴핑, 등등 원하는 결과를 만들어내는 과정. 3) 최종 연산  // 1. order에서 List 를 가지고 와서Set orderCoffees = order.getOrderCoffees();// 2. List를 순회하며 List coffeeList = new ArrayList(); for(OrderCoffee orderCoffee: orderCoffees) { // 3. coffeeId 를 가지고 온 뒤, long currentCoffeeId = orderCoffee.getOrderCoffeeId(); // 4. 해당 coffeeId 로 Coffee 객체를 찾은 후에..

Language/Java 2024.06.17

[Java] boolean , if문

📚문제상황 1. isChecked 의 초기화를 false로 했는데, 밑에 ! isChecked 를 하는 이유는 뭐지?  💡if문- 조건식이 true일 때 실행문을 동작하는 것임. if(조건식) { // 조건식이 true일 때 아래 실행문을 동작 실행문 ; ....} else { // 조건식이 false 일 때 실행 } [JAVA/자바] 조건문(if문, if else문, else if문) 이번 포스팅은 조건문 중 if / if else / else if문에 대해서 알아보도록 하겠다. 조건문을 익히고 ...blog.naver.com 🔎 해결boolean 의 초기값은 false 임.false, true 일 때 각자 어떤 일을 수행하라고 코드를 짜 넣을 수 있는데, false 일 때에는..

Language/Java 2024.06.08

[Java] 기타 제어자

전에 인스턴스 변수 먼저 무엇인가. 클래스 변수는 static 변수. 인스턴스 변수는 인스턴스가 생성되었을 때.  [java] 클래스변수, 인스턴스 변수 차이(static변수와 non Static변수) - Break Out of Your Comfort Zone목차 클래스 변수, 인스턴스 변수 클래스 변수, 인스턴스 변수, 지역 변수가 메모리에 적재되는 위치 클래스 변수(Static)의 주의점, 클래스 변수가 필요한 이유 클래스 변수, 인스턴스 변수sujinhope.github.io 💡static * 멤버 변수    - 모든 인스턴스에 공통으로 사용되는 클래스 변수.    - 인스턴스를 생성하지 않고도 사용 가능. * 메서드    - 인스턴스 생성 않고도 호출 가능.    - static 메서드 내에서 ..

Language/Java 2024.06.08

[Java] 메소드 관계 파악

💡 getShopIndex(Shop[] arr, int maxLength, String shopName) - shops 배열을 돌며 같은 이름이 있는지 없는지 확인하는 메서드.  💡 isValidIndex(Object[] arr) - isValidIndex(shops) 면 shops의 비어있는 배열의 Index를 확인해라.  💡addFood(String foodName, int price) - boolean 인 이유: int나 String 일 이유가 없음.                                add Food 를 했는지 안했는지가 중요한 것이기 때문에                                true  false 로 확인할 필요가 있음.  🔎 주석 달기  코드를 볼..

Language/Java 2024.06.07

[Java] 객체, 배열 활용

클래스에서 객체를 생성. 생성자를 통해서 변수 초기화를 받겠다.   객체는 왜 붕어빵이 아닐까객체는 왜 붕어빵이 아닌지에 대해서 자세하게 알아보자!velog.io클래스는 객체들의 같은 속성들을 정의한 분류나 집합. 생성자는 틀에 넣는 도구. 객체는 틀에서 나온 것. 그 객체를 이용해서 활용하는 건 다른 곳. Order 객체를 만들어가지고! 배열에 넣음. index를 돌면서 비어있는 곳에 객체를 넣는다.

Language/Java 2024.06.04

[Java] 생성자(Constructor), this.

📚 문제상황1. this 를 쓰는 상황, 안 쓰는 상황이 뭔지 모르겠다. 2. 초기화를 하는 건 뭐지?  💡 생성자인스턴스가 생성될 때 (new로 불러올 때 ) 호출되는 "인스턴스 초기화 메서드"* 연산자 new 가 인스턴스를 생성하는 것. 생성자가 인스턴스를 생성하는 것은 아니다. https://velog.io/@jungnoeun/%EC%83%9D%EC%84%B1%EC%9E%90%EC%99%80-%EB%B3%80%EC%88%98%EC%9D%98-%EC%B4%88%EA%B8%B0%ED%99%94  생성자와 변수의 초기화생성자는 인스턴스가 생성될때 호출되는 "인스턴스 초기화 메서드" 이다. 변수의 초기화 작업에 주로 사용된다.인스턴스 생성시에 실행되어야 할 작업을 위해서도 사용된다.메서드처럼 클래스ve..

Language/Java 2024.06.04