
Thread(쓰레드) - 프로세스 ? 쓰레드 ? 우리가 일상생활에서 종종 쓰는 말이다. 프로세스는 "하나의 프로그램 실행 단위" 쓰레드는 "프로세스 안에서 실행하는 실행 단위(프로세스를 돌리기 위한 실행 흐름 단위)" - ex. 채팅을 보내면 보냄과 동시에 수신자에게도 채팅이 나타나죠. 프로세스 안에서 실행을 하는 단위 -> 쓰레드 쓰레드를 왜 쓰나요? => 속도 향상 - 쓰레드를 여러 개 만들어서 프로그램 작업을 좀 더 빠르게 수행을 하려고 씁니다. 그러나... 메모리 또는 CPU 자원 소모가 많아집니다. ex. 쓰레드 =>> 종업원 종업원 여러명두면 가게를 더 빠르게 운영하면 돈을 더 많을 벌 수 있습니다. 단, 종업원이 일을 잘해야 됩니다. 종업원이 일을 잘하면 좋지만 아니면 종업원의 존재가 피해이..

230411 HasTest2 package mega.backend_onemore.Day19.HT2; class B { } class C { B[] b = new B[5]; //멤버변수 has 관계 (변수만 있으면 Has관계 가능하다) // 그러면 당연히 배열도 가능한 것이다. } class D { //has 관계?? 아니다! // 멤버변수로 갖는 거랑 메서드로 부르는 거랑 차이가 있으므로 // 내가 실제로 가지고 있어야 한다. B make(B[] b) { b[2] = new B(); return b[2]; } } class E { D[][] d = new D[3][3]; /* D[][] sendD(D[][][] d, int i, int j, int k) { return d[0]; // 자료형으로 받고 싶..
예외와 오류 - 프로그램 실행 중 예기치 못한 사건을 예외라고 한다. 예외 상황을 미리 예측하고 처리하는 것을 예외처리라고 한다. - 기본적으로 런타임 시점에서 발생하는 오류는 에러(error)와 예외(exception)으로 나뉜다. 에러(Error) : 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 일단 발생하면 복구할 수 없는 심각한 오류 예외(exception) : 인자값 Null 에러NPE(NullPointException)같은 발생하더라도 수습이 가능한 덜 심각한 오류. 예제 1 > package mega.backend_onemore.Day30; import java.io.FileReader; // 방법 1. public class Ex..
문자열 자르기 split() 키워드를 이용한다. 예시코드 public class SplitTest { public static void main(String[] args) { // TODO Auto-generated method stub String a = "abc def xor"; String[] temp = a.split(" "); // 문자열을 공백(" ")을 기준으로 나눠서 문자열 배열 'temp'에 할당 for(int i = 0; i 앞에서부터 해당 내용이 주르르륵 나올 것! String total = dt.getYear() + "년 "; // dt에서 연도를 가져옴 total += dt.getMonthValue() + "월 "; // dt에서 월을 가져옴 total += dt.getDayOfM..

큐(Queue) : 선입선출(FIFO, First-In-First-Out) 방식으로 요소를 관리하는 자료구조 - 맨 앞에서부터 요소가 하나씩 제거되고, 새로운 요소는 항상 뒤에서 추가됨. - 키보드 입력에 많이 쓰이곤 합니다. 자바에서는 Queue 인터페이스를 구현한 여러 클래스가 제공되며, 그 중 대표적인 클래스로는 LinkedList와 PriorityQueue가 있다. 1. LinkedList : LinkedList는 이중 연결 리스트(doubly linked list)를 구현한 클래스 - LinkedList를 이용해 구현한 큐는 삽입과 삭제가 매우 빠르지만, 검색 속도가 느리다. 2. PriorityQueue : 이진 힙(binary heap)을 기반으로 하는 클래스로, 우선순위 큐(priority..
Map : 키와 값으로 (쌍으로) 데이터를 저장하는 자료구조 - 나중에 자바스크립트에서 데이터 넘어올 때 Map 형식으로 넘어오게 되므로 중요하다!!! 형태 Map - 특이한 지점은 Key를 통해 Value 값을 받음. - Key를 모르면 Value에 접근할 수 없으므로 주의해야 함. Key 는 Set 형식으로 들어온다. 그래서 Set이 좀 불편하더라도 알고 있어야 하는 것... 대표적인 사례 클래스 설명 HashMap - 가장 일반적으로 사용되는 해시 테이블(hash table)을 구현한 클래스. - 키와 값으로 이루어진 요소들을 저장하며, 순서를 보장하지 않는다. TreeMap - 이진 검색 트리(binary search tree)를 구현한 클래스. - 키에 대한 정렬을 유지하며, 키의 순서에 따라 ..

Set : 중복된 값을 저장하지 않는 집합(Set) 자료구조의 기능을 정의하는 인터페이스. - Set은 순서에 상관없이 요소를 저장하며, 중복된 값을 허용하지 않음. - 대표적인 클래스로는 HashSet, TreeSet, LinkedHashSet이 있음. HashSet : 해시 테이블(hash table)을 구현한 클래스, 가장 빠른 검색 속도를 제공. - 순서를 보장하지 않지만, 중복된 값을 허용하지 않음 TreeSet : 이진 검색 트리(binary search tree)를 구현한 클래스로, 요소를 자동으로 정렬함. - TreeSet은 검색 속도가 빠르지만, HashSet보다는 느리다. LinkedHashSet : LinkedHashSet은 해시 테이블과 연결 리스트(linked list)를 결합한 ..
파일 입출력 - 자바 콘솔 출력과 파일을 연동하여 파일 읽고 쓰기라고 생각하면 됨. 예제를 통해 익히기 1. 파일 쓰기 // 파일 입출력 public class FileWriterTest { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); String str = "자바는 정말 쉬워요! \n" + "오늘 숙제는 2개입니다. \n" + "주말 숙제는 4개입니다."; char[] change = new char[str.length()]; // 문자열을 문자열 길이의 배열으로 만들고 str.getChars(0, str.length(), change, 0); //처음부터 str의 길이만큼을..