[Java]
-
[Java]멀티태스킹과 스레드[Java] 2024. 11. 20. 01:13
멀티태스킹이 반드시 효율적인 것은 아니다나는 멀티태스킹을 들었을 때, 여러 가지 일을 동시에 처리하면 무조건 생산성이 높아지고 효율적일 것이라는 생각을 가지고 있었다. 하지만 멀티태스킹이 항상 긍정적인 결과만을 가져오는 것은 아니라는 것을 알게 되었고, 여기서는 프로세스와 스레드에 대해서 적어볼까한다. 컨텍스트 스위칭의 비용컨텍스트 스위칭은 CPU가 한 작업에서 다른 작업으로 전환할 때 발생하는 과정입니다. 이때 CPU는 현재 작업의 상태(레지스터 값, 프로그램 카운터 등)를 메모리에 저장하고, 전환할 작업의 상태를 메모리에서 불러옵니다. 이 과정은 시간이 소요되며, 빈번한 컨텍스트 스위칭은 시스템의 전체적인 성능을 저하시킬 수 있습니다.예제: 컨텍스트 스위칭의 비용 측정public class Cont..
-
[Java] 결합도 / 응집도[Java] 2024. 8. 2. 00:30
결합도는 낮추고 응집도는 높여라 개인프로젝트할때 많이 들었던 말이였지만 그때 당시에는 그래서 어떻게 하라는거야 ? 그게 뭔대 라는 생각이 들었다 .그래도 한번 해보려 했지만 시간이 촉박해서 리팩토링을 하지못했다 .이번 팀 프로젝트 때는 실천해보고자 정리를 하려고 한다 .결합도와 응집도에 대해 알아보기 전 모듈과 모듈화에 대해 알아볼 필요가 있다 . 모듈화란 소프트웨어를 각 기능별로 나누는 것을 말한다 .각각의 기능별로 나눠진 모듈화의 결과를 모듈 이라고 하고 서브루틴, 소프트웨어 내의 프로그램 또는 작업 단위등의 의미로 사용된다 .좋은 모듈화는 목적에 맞는 기능만으로 모듈을 나누는 것이다. 가각의 모듈은 주어진 기능만을 독립적으로 수행하며 다른 모듈과 적게 연관되어야 한다 . 즉, 독립성이 높은 모듈일..
-
[Java] 스택 / 큐 / 덱[Java] 2024. 5. 12. 23:36
스택 (Stack)LIFO(last in, firstout)리스트의 한쪽 끝에서 수행 되는 선형 리스트 한가지 형태( 삽입(push), 삭제(pop) )예시설명함수 호출함수 내부에서 사용되는 변수를 스택에 저장. 호출이 끝나면 스택에서 제거수식 계산수식에서 괄호를 계산할때 스택 이용웹 브라우저 방문 기록방문한 웹 페이지를 스택에 저장. 이전 페이지로 돌아갈때 이용. 메서드설명push()스택에 추가, 반환peek()마지막 요소 반환pop()마지막 요소 제거, 반환isEmpty()비어있는지 확인, 비어있으면 true , 아닐경우 falsesearch()해당위치 반환, 없으면 -1 반환큐 (Queue)FIFO(first in , first out)여러개의 데이터 항목을 일정한 순서대로 나열 하는 형태( pus..
-
[Java] 명명규칙 / 형변환 / Steak / Heap[Java] 2024. 3. 15. 17:01
형변환public class PrimitiveCast { public static void main(String[] args) { byte b = 10; int i = b; // 묵시적 형변환 b = (byte) i; // 명시적 형변환 float f = 10f; long l = (long)f; // 명시적 형변환 }묵시적 형변환 : 자동으로 실행해 주는 타입 변환명시적 형변환 : 큰 데이터에서 작은 데이터로 변환될때 작은 데이터 크기에 맞춰주는 것 명명 규칙1. 하나 이상의 글자로 이루어져야됨 2. 첫 번째 글자는 문자 또는 $ , _ 3. 두 번째 이후 글자는 숫자 문자 또는 $ , _ 4. $ , _ 이외는 특수 문자 사용 ..
-
[Java] 접근 제한자 / 연산자[Java] 2024. 3. 15. 16:57
접근 제한자같은 클래스 같은 패키지 다른 패키지 같은 클래스같은 패키지다른 패키지publicOOOdefaultOOXprivateOOXprotectedOO△(상속관계만) public : 모든 접근 허용protected : 같은 패키지에 있는 객체들과 상속관계 객체들만 허용default : 같은 패키지에 있는 객체들만private : 현재 객체 내에서만 허용 setter/getterprivate를 관리하는 매서드 (단축키 ALT + INS) getter : 내부의 멤버변수에 저장된 값을 외부로 리턴매개변수 O 리턴값 X setter : 외부의 데이터를 전달받아 변수에 저장매개변수 X 리턴값 O 증감 연산자 public class OpEx2 { public static void main(String[..
-
[Java] 자바 언어 특징[Java] 2024. 3. 15. 16:48
자바 언어 특징1. 객체 지향 언어2. 쉽다3. 플랫폼에 독립적4. 재사용성5. 네트워크에 강함컴파일 vs 인터프리터1. 컴파일 컴파일러는 파일 전체를 한꺼번에 번역하여 번역한 결과를 저장 특정 시스템에서 만들어진 실행 파일이 다른 시스템에서는 실행되지 않는 경우가 있다. 2. 인터프리터 코드를 한 줄씩 해석하여 실행 소스코드를 한 줄씩 기계어로 번역하기 때문에 실행속도는 컴파일러 보다 느림 컴파일러 보다 프로그램 수정 , 디버깅 간단 3. 하이브리드 자바는 두개의 장점을 섞은 프로그램이다.1) 먼저 컴파일러가 동작하여 소스코드를 바이트 코드로 변환한다.2) 인터프리터가 해당 바이트 코드를 기계어로 변환하여 실행한다. 파일 분석public -접근 제한자class - 예약어main - 매서드static -..
-
[Java] 조건문[Java] 2024. 2. 19. 23:06
if문 if 문은 특정 조건이 참( true )일 경우 특정 코드 블록을 실행. 예시)public static void main(String[] args) { int age = 20; // 사용자 나이 if (age >= 20) { Ststem.out.println("성인입니다."); // 18 이상이면 참 } if (age 실행값 -> 성인입니다. else문 else문은 if문에서 만족하는 조건이 없을 때 실행하는 코드를 제공. 예시)public static void main (String[] args) { int age = 18; // 사용자 나이 if (age >=20) { System.out.println ("성인입니다."); //..
-
[Java] 변수[Java] 2024. 2. 19. 22:19
변수 선언 변수를 선언하면 컴퓨터의 메모리 공간을 확보해 데이터를 저장할 수 있다. 그리고 변수의 이름을 통해서 해당 메모리 공간에 접근할 수 있다. 쉽게 이야기해서 데이터를 보관할 수 있는 공간을 만들고, 그곳에 이름을 부여한다. 변수 초기화 변수를 선언하고, 선언한 변수에 처음으로 값을 저장하는 것을 변수 초기화라 한다.public static void main(String[] args) { int a; // 변수 선언 a = 10; // 변수 초기화: a(10) System.out.println(a); // 10 출력 a = 50; // 변수 값 변경: a(10 -> 50) System.out.println(a); // 50 출력} public static void main(String..