이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. ●⚝ ✎정리 ⍟실습 📂content 1. main 스레드 - main메서드의 코드를 수행하는 스레드 - 스레드는 '사용자 스레드'와 '데몬 스레드' 두 종류가 있다. => 사용자 스레드는 main 스레드이고, 데몬 스레드는 보조 스레드이다. 실행 중인 사용자 스레드가 하나도 없을 때 프로그램은 종료된다. 즉, 멀티 스레드에서는 메인 메서드가 종료되었어도, 실행중인 스레드가 남아있다면 프로그램은 종료되지 않는다. ⍟실습 더보기 Ex13_11 class Ex13_11 { static long startTime = 0; public static void main(String args[]) { ThreadEx11_1 th1 = new Threa..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 프로세스와 스레드 (process & thread) - 프로세스 실행 중인 프로그램, 자원(resources)과 스레드로 구성 - 스레드 프로세스 내에서 실제 작업을 수행 모든 프로세스는 최소한 하나의 스레드를 가지고 있다 프로세스 : 스레드 = 공장 : 일꾼 - 싱글 스레드 = 자원 + 스레드 - 멀티 스레드 = 자원 + 스레드 + 스레드 + .... 하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 스레드를 생성하는 것이 더 적은 비용이 든다. 2. 멀티스레드의 장단점 대부분의 프로그램이 멀티스레드로 작성되어 있다. 그러나, 멀티스레드 프로그래밍이 장점만 있는 것은 아니다. 장점 - 시스템 자원을 보다 효율..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. Object클래스 - 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다. - notify(), wait() 등은 스레드와 관련된 메소드 Object클래스의 메서드 설명 protected Object clone() 객체 자신의 복사본을 반환한다. public boolean equals(Object obj) 객체 자신과 객체 obj가 같은 객체인지 알려준다. (같으면 true) protected void finalize() 객체가 소멸될 때 가비지 컬렉터에 의해 자동적으로 호출된다. 이 때 수행되어야하는 코드가 있을 때 오버라이딩한다. (거의 사용 안 함) public Class getClass() 객체 ..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. hashCode() - 객체의 해시코드(hash code)를 반환하는 메서드 - Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환 public class Object { ... public native int hashCode(); native는 native method라는 것이다. 이 말은 os가 가지고 있는 메서드라는 것. 주로 c언어로 작성되어 있다. 그래서 이것을 사용하면 실제로는 c언어로 작성되었지만 마치 java로 작성된 메소드처럼 사용할 수 있다. 해시코드는 객체의 지문이다. - equals()를 오버라이딩하면, hashCode()도 오버라이딩해야 한다. why? 이 둘은 객체..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 사용자 정의 예외 만들기 - 우리가 직접 예외 클래스를 정의할 수 있다. - 조상은 Exception과 RuntimeException중에서 선택 class MyException extends Exception { MyException(String msg) { // 문자열을 매개변수로 받는 생성자 super(msg); //조상인 Exception클래스의 생성자를 호출한다. } } class MyException extends Exception { //에러 코드 값을 저장하기 위한 필드를 추가 했다. private final int ERR_CODE; //생성자를 통해 초기화 한다. MyException(String ms..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 예외 발생시키기 1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음 Exception e = new Exception("고의로 발생시켰음"); 2. 키워드 throw를 이용해서 예외를 발생시킨다. throw e; ⍟실습 더보기 Ex8_6 class Ex8_6 { public static void main(String args[]) { try { Exception e = new Exception("고의로 발생시켰음."); throw e; // 예외를 발생시킴 // throw new Exception("고의로 발생시켰음."); } catch (Exception e){ System.out.print..
프로젝트를 정리하다가 갑자기 특정 repository에서 `button`이라는 코드가 들어간 파일을 찾고자 했다. 물론 프로젝트를 클론받아서 찾는 방법도 있지만, 클론받아서 고칠게 있는 것이 아니라 단순히 궁금해서 찾아본 거라서 클론까지 갈 필요가 없다고 생각했다. 그래서 구글링하다가 깃허브에서 검색하는 구문에 대해서 알게되었다. 해결해야할 상황 깃허브에서 repository에서 button이라는 단어가 들어간 파일을 다 찾고 싶음! 해결방법 1. 찾아야되는 repository에 들어가서 빨간상자에 있는 검색창을 이용한다. 2. 검색창에 아래와 같은 형식을 이용해서 검색한다. `repo:/ ` 예를 들어 내 아이디가 `Id`이고, 탐색할 repository는 `ABCDE`, 찾아야할 단어는 `button..
이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 프로그램 오류 - 컴파일 에러 (compile-time error) : 컴파일 할 때 발생하는 에러 - 런타임 에러 (runtime error) : 실행 할 때 발생하는 에러 => 실행이 되다가 실행 중 문제 발생 에러 (error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예) Out of Memory Error 예외 (exception) 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 에러는 어쩔 수 없지만, 예외는 처리하자! - 논리적 에러 (logical error) : 작성 의도와 다르게 동작 => 잘 동작은 하는데 개발자가 원하는대로 동작x 자바 컴파일러가 하는 일 1. 구문 체크 2...
❓문제 https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 파일정리라는 알고리즘을 푸는데 split(".")을 사용하여 문제를 풀려고 했다. Strint tmp = sbrus.txt; String[] tmp = str.split("."); >> 예상결과 [sbrus, txt] >> 실제 결과 [] 그런데 위와 같은 결과가 나왔다. 왜 이런 결과가 나오는 것일까? 그것은 정규식 표현식에서 .는 임의의 문자열을 의미하기 때문이다. 그래서 예상결과를 원한다면 ..
⏰문제 https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 빙고 게임은 다음과 같은 방식으로 이루어진다. 먼저 아래와 같이 25개의 칸으로 이루어진 빙고판에 1부터 25까지 자연수를 한 칸에 하나씩 쓴다 다음은 사회자가 부르는 수를 차례로 지워나간다. 예를 들어 5, 10, 7이 불렸다면 이 세 수를 지운 뒤 빙고판의 모습은 다음과 같다. 차례로 수를 지워가다가 같은 가로줄, 세로줄 또는 대각선 위에 있는 5개의 모든 수가 지워지는 경우 그 줄에 선을 긋는다. ..