스레드는 기본적으로 메인과 따로 작동을 하기 때문에 Main 안에 어떤 순서로 스레드를 놓아도 따로따로 실행이 된다. 그러나 특정 데이터 값의 연산이나 특정 작업을 각 스레드가 모두 종료된 뒤에 실행되게끔 만드려면, 각각의 스레드가 모두 종료될 때까지 대기하다 Main을 끝마쳐야 한다. 이럴 때 사용하는 메서드가 바로 join() 메서드이다. ARS로 모금을 진행하는 간단한 예제로 이해해보자. ○Account: package com.choonham; public class Account { //모금함 private int total = 0; public Account() { } public void deposit() { this.total = this.total + 1000; } public int ge..
각 스레드 객체를 생성한 뒤 어느 스레드를 우선으로 실행할 지 지정해줄 수 있다. 그러나, 예시에서 사용할 코드는 각각 스레드의 작업량이 그렇게 많지 않아서 뚜렷한 우선순위 차이를 보기는 힘들다. 그냥 priority 를 이렇게 지정하는구나...라고 생각하면 될 거 같다. ○PriorityThread: package com.choonham; public class PriorityThread extends Thread { public PriorityThread() { // TODO Auto-generated constructor stub } public void run() { int i = 0; System.out.println(this.getName() + "[우선권:" + this.getPriority..
주먹구구식으로 Spigot 플러그인을 제작할 때, 항상 Runnable 인터페이스를 잘 사용을 못해서, HashMap으로 스킬 쿨타임 들을 구현했던 기억이 난다. (뭐, 지금 생각해도 Map이 더 효율적인 방법이긴 하지만...ㅎ) 아무리 여러 블로그에 있는 포스팅들을 읽어봐도 Multi Threads 로 제 각각의 타이머를 만드는 개념이 이해가 잘 안 됐었다. 그래서 다루는 김에 간단히 1분을 세는 타이머를 구현한 방법을 적어볼까 한다. ○RunnableTest: package com.choonham; public class RunnableTest implements Runnable { int count = 0; int num = 0; boolean timeOut = false; public Runnab..
오늘은 Heap의 LV3 문제를 하나 푸려고 프로그래머스에 접속을 했는데, 평소에는 보이지도 않던 실력 체크라는 탭이 눈에 들어왔다. ㅎㅎ... 코테 문제를 풀기 시작한 지 이제 2주 정도 접어들었는데, 내 실력은 어느 수준일까? 한번 확인해보고 싶기도 하고, 괜한 호기심이 생겨서 가볍게 LV1부터 풀어보기로 했다. 1번 문제: 복잡해 보이지만, 사실 들어오는 입력 배열에서 중복 값을 제거한 포켓몬 종류의 수가 (입력 배열 / 2)의 값보다 큰 지 비교하여 출력 값을 결정해주면 되는, 짜는데 3분도 안 걸리는 아주 간단한 문제이다. 나는 HashSet을 이용하여 중복 값을 전부 제거한 뒤, 비교하는 과정을 진행했다. package com.choonham; import java.util.HashSet; c..
Multi Thread를 구현하기 위한 run() 메소드는 Runnable 인터페이스가 가지고 있으며, 이 Runnable 인터페이스를 구현받은 Thread 클래스를 이용하여 구현할 수도 있다. 즉, 간단하게 구조를 보면.. run() 메서드: public interface Runnable{ public void run(); } Thread 클래스: public class Thread implements Runnable{ public Thread(){ } @Override public void run() { } } 위와 같이 구성되어 있으므로 Thread 클래스를 상속 받거나, Runnable 인터페이스를 구현 받는 방식으로 run() 메서드를 구현할 수 있다는 것이다. ThreadClass를 상속 받는..
그 동안 여러 코딩 테스트, 알고리즘 문제를 풀면서 다양한 자료 구조를 사용하긴 했지만, 따로 정리한 내용이 부족한 것 같기도 하고, 오늘 강의에서 Java의 Collection 에 있는 자료 구조를 전부 설명해 주시길래 정리해보려고 한다. 1. ArrayList: 워낙 기본적인 내용이기도 하고 많이 사용해서...자세한 내용은 Pass. package com.choonham.list; import java.util.ArrayList; import java.util.Iterator; public class ArrayListTestClass { public ArrayListTestClass() { // TODO Auto-generated constructor stub } public static void a..
DB와 프로젝트를 연동하기 위해서는 드라이버나 사용자 정보를 가지고 있는 properties 파일이 필요하다. 기본적으로 properties 파일은 연동 작업을 할 클래스와 같은 위치에 생성하는데, 같은 위치에 있는 properties 파일을 절대 경로로 읽게끔 코드를 작성하면 그 코드는 클라이언트 측에서 사용할 수 없기 때문에 반드시 상대 경로로 읽어와야 한다. 우선, properties 파일의 예제는 다음과 같다. 더보기 driver = oracle.jdbc.OracleDriver url = jdbc.oracle:thin@localhost:1521:orcl username = scott password = tiger 그리고, 데이터베이스를 연동하는 작업을 하는 클래스는 다음과 같이 정의하여 상대 경로..
계산식: 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 개인적으로 이렇게 테스트 케이스를 하나만 주는 경우를 굉장히 싫어한다. 테스트 케이스'만' 성공했을 때 그 반례를 찾기가 너무 시간이 오래걸려서 잘못하면 진짜 몇시간씩 진전도 없이 날리는 경우가 생기기 때문에.... 이 문제는 어제 포스팅에서 정리한 Heap이나 Priority Queue만 잘 활용하면 별 문제 없이 해결할 수 있는 문제이다. 우선 받은 스코빌 지수 배열을 모두 Priority Queue에 저장하여 insert와 동시에 스코빌 지수가 낮은 순으로 자동 정렬될 수 있게 만들어 주고, 스코빌 지수가 낮은 두 음식을 섞을 함수를 따로 만들어 저장해주면 끝! 사실 자료..
분명히 3학년 때 알고리즘 강의를 수강하면서 한번 스쳐갔던(심지어 코드를 전부 암기했었던...) 개념이긴 한데 막상 활용해서 내 코드에 적용하려니 생각이 잘 안나서 다시 한번 정리할 겸 포스팅을 하려고 한다. 1. Heap Heap은 Priority Queue, Heap Sort 등을 구현하기 위해 사용되는 자료 구조로, 데이터의 정렬이나 검색 보다는 우선 순위의 있는 데이터가 무엇인지 알아내고, 삭제하는 데 좀 더 유용한 자료 구조이다. 정보처리기사를 공부하면 계속 나오는 개념 중 하나인 Binary Search에 사용하는 Binary Tree의 형식으로 보통 많이 쓰인다. Binary Heap은 가장 상위 노드의 최대 값을 갖는 Max Heap 과 최소 값을 갖는 Min Heap으로 각각 구현이 가능..
프로세스 순서: 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 처음엔 처음 작업할 문서를 꺼내서 나머지 문서의 중요도와 비교한 뒤 꺼낸 문서의 중요도가 대기 문서 중 한 문서라도 중요도가 밀리면 두 문서를 서로의 위치에 교환하는 작업으로 오해했다. 그렇게 생각하면 중요도가 높은 문서의 위치를 기억하고 있다가 작업 마지막에 맨 앞 문서와 바꿔줘야 했기 때문에 단순 queue로 문제를 푼다고 가정하면 작업이 매우 복잡해지고, 어려워진다. 그래서 실제로 굉장히 오랜시간 삽질하다가 LinkedList는 인덱스의 위치별로 값을 반환..
- javascript
- Async
- AsyncStorage
- react
- await
- 정보보안기사 #실기 #정리
- 인천 구월동 맛집
- 파니노구스토
- Promise
- redux-thunk
- 이탈리안 레스토랑
- 맛집
- redux
- react-native
- 인천 구월동 이탈리안 맛집
- Total
- Today
- Yesterday