목적 : VSCode에서 Draw.io를 연동해서 써보자 미국 기준으로 6월 1일에 VSCode Diagrams Plugin에 대한 Post가 올라왔다. 요즘은 주로 Software Design을 할 때 Draw.io를 쓰고 있는 나로써는 굉장히 좋은 소식이어서 글을 남겨 보려고 한다. https://www.diagrams.net/blog/embed-diagrams-vscode VS Code에 Diagrams Plugin 설치하기 Extension 버튼을 눌러서 Plugin 조회 창에 Draw.io를 조회한다. Henning Dieterichs 라는 이름을 갖은 개발자가 만든 Plugin을 install 하면 되는데.. 업데이트 log를 보니 작년부터 사용 가능했던 것 같다. 왜 이제서 이 내용을 Pos..
알고자 하는 것 : Synchronized keyword, ReentrantLock, Semaphore, Atomic, varHandle Synchronized https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html synchronized의 경우에는 다양한 기법으로 동시성 제어에 쉽게 사용될 수 있다. Locks In Synchronized Methods와 Synchronized Statements 으로 나누어서 생각 할 수 있다. Locks In Synchronized Methods public class SynchronizedCounter { private int c = 0; public synchronized void ..
오류 내용 Exception in Application start method java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.la..
Stress 테스트 용도로 많이 사용되고 있는 Jmeter 기본 사용법 목표 : Get을 처리하고 CSV에서 파라메터 받아서 가변형 Request 호출하기 https://jmeter.apache.org/download_jmeter.cgi 최신 버전 Binaries를 다운로드 zip파일을 unzip 후 bin 디렉토리에 ApacheJmeter.jar 실행 실행 방법은 상기 jar 파일을 더블클릭 하거나 하기와 같이 jmeter.bat 또는 아래 명령어로 GUI 모드를 실행 하면 됨 jmeter.bat run JMeter (in GUI mode by default) jmeterw.cmd run JMeter without the windows shell console (in GUI mode by default..
Word Search II 문제 내용 주어진 m x n 문자 배열이 있고, Dictionary가 주어진다면 해당 문자배열에서 조합가능한 모든 Dictionary내 words를 찾아라. 접근 방법 이런 board가 주어 졌다고 생각해 보자 가장 쉬운 접근 방법은 하나씩 조회해 보는 것일것 같다. 가령 'o'가 있이니까 Dictionary내에서 'o'가 있는 모든 words를 1회 search한다. 그리고 다음으로 a또는 e로 이동한다. 다시 앞서 조회된 o의 words에서 a또는 e가 있는 words를 찾는다. 이렇게 찾다가 words의 마지막 char와 board의 char가 동일해지는 순간 결과 값으로 등록 하면 된다. 그리고 다시 (0,1)인 'a'부터 다시 조회를 시작하면 된다. 이 방법을 최악의 ..
Udemy java-multithreading-concurrency-performance-optimization 강좌 코드 사용(MIT 라이센스) Thread Demon Main Thread에서 Child Thread를 실행하게 되면 Main Thread가 종료 되었다고 해도, Child Thread가 끝날 때까지 기다리게 된다. import java.math.BigInteger; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.logging.FileHandler; import java..
기본 Thread 실행 코드 import java.util.logging.Logger; public class Main { public static void main(String[] args) { Logger logger = Logger.getLogger("MAin Logger"); //default Thread Thread thread = new Thread(new Runnable() { @Override public void run() { logger.info("Running...1 Name = " + Thread.currentThread().getName()); logger.info("Running...1 = Priority " + Thread.currentThread().getPriority())..
Context Switch 하나의 프로세스에는 여러 Thread가 존재 가능 해당 Tread를 Core에서 스케쥴에 따라서 처리 할 때 A Tread와 다음에 오는 B Tread를 Switching하는 것을 Context Switch라고 부름 Thread의 주요 포인트는 다음과 같음 Thread 가 많아지면 관리 시간이 더 늘어나서 Thrashing 확률이 이 높아짐 하나의 프로세스 내 Thread간의 Context Switch 비용이 Process 간의 Switch 비용보다 싸다. Thread는 Process에 비해서 리소스를 적게 먹는다. OS에서의 Thread 스케쥴링 Epoch 라고 하는 주기로 작동 구간을 나눔 Epoch에 Thread를 잘라서 넣음 -> 남은 Thread가 있으면 다음 Epoc..
Java로 마이크 음성데이터를 Read 하기 위해서 인터넷을 조회 해봤다. http://blog.gtiwari333.com/2011/12/java-sound-capture-from-microphone.html?m=1 이곳에 있는 코드가 가장 적절히 잘 작동하는 코드였는데, 2가지를 글쓴이가 알려주지 않았다. Audio Format하고 WaveData 그래서 대충 돌려보는 방법을 여기 남기고자 한다. import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.logging.Log..