실행 환경: JAVA7, OS(WIndow) 군대에서 프로젝트 개발 중 동시성을 만드는 작업 중에서 하나의 스레드가 실행하는 Process Thread 는 어떤 방식으로 해야 성능을 챙길 수 있을까 고민하며 이때 저는 성능을 최대한 절약하기 위해서 스레드를 정지하면서 핸들링하는 것이 좋다는 생각에 기반하여, 동시성 로직을 개발하였습니다. (그게 독인줄도 모르고..) 간단히 동시성 로직을 설명 하겠습니다. 1. 스레드가 한 작업을 완수하면 대기 상태로 변경해라 2. 여러 스레드가 모두 대기 상태라면 모두 실행 상태로 변경해라 개발을하면서 PING 에서 받는 값이 딜레이가 생겨 이때는 어떻게 해결을 못 하고 어떻게든 최소 0.001초 꾸역꾸역 정지하면서 만들고 실제 훈련 때 3박 4일 운영을 했습니다. 훈련..
(서사) https://oineh.tistory.com/19 딜레이가 발생한 프로세스 스레드의 원인에 대해서 자바 스레드의 정지를 기준으로 두 가지 가설을 세웠습니다. 저는 두 번째 가설이 맞지 않은 상황을 찾지 못했습니다. 그래서, 이 가설이 맞다는 가정하에 해결 방법을 고민하였습니다. 이에, 스레드 상태 로직에 문제가 있다는 것을 알고, 이를 해결하기 위해 기존에 잘못된 스레드 상태 제어 로직을 제거하였습니다. 그 후에도 같은 상황이 나온다 하더라도 해결할 수 있게 문제의 근본인 Process.exec을 제거하고 어떤 IP와 연결 타입이라도 확인 가능한 코드를 구현하여 lib로 만들어 배포하였습니다. https://github.com/oiNeh/tcp GitHub - oiNeh/tcp Contribu..
군대에서 이제 곧 시작하는 훈련을 앞두고 (제작 기간 총 10일, 남은 기한 3일) 컴파일 시 인코딩이 깨지는 문제가 발생했다.!!! 일단 나의 개발 환경은 Os: windows7 IDE: 메모장! Jdk: 6 Dev: tomcat, cmd 개발 환경이 UTF-8에서만 이루어지는데 한글이 깨지는 이유를 도통 몰라. 해 매이던 중 이건 javac 가 문제일까? 메모장이 문제일까? javac은 집에서는 잘만 했던 인코딩들( iso-8859-1, EUC-KR, UTF-8, ANSI) 여기서 똑같은 인코딩으로 하는데 안 될 이유가 없다고 생각해서 javac에서 문제가 날 가능성은 없다고 생각했다. 그럼 메모장이 문제 인대 메모장에서 UTF-8, UTF-8(BOM) 환경에서 인코딩을 하면 한글이 안될 이유가 없는..
자바를 예시로 들면 자바는 8 , 11 , 16 ,17 버전마다 환경 변수 설정이 다른데 클릭 한 번으로 편하게 바꾸고 싶다 이럴떄 일단 각 버전의 경로를 확인하자 C:\Program Files\Java\jdk1.8.0_321 C:\Program Files\Java\jdk-11.0.15 C:\Program Files\Java\jdk-16.0.2 C:\Program Files\Java\jdk-17.0.2 여기서 메모장을 열어 아래 보이는 틀을 입력하자 여기에 "경로 삽입"에 원하는 경로를 넣어주면 setx java_home c:/ -m (환경변수) (변수명) (경로) (설정) @echo on setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_321" -m 이런 식으로 바꿔..
2차원 배열을 아래와 같이 출력해야 할 때 어떤 코드가 좋을까 for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j] + " "); } System.out.println(""); } 각 값을마다 띄어쓰기 붙이고 1줄 끝날때마다 개행 추가도 해주는 코드이다 자 우선 for문 한문장 없애기 위해 Arrays.toString()을 사용해봤다 for (int i = 0; i < arr.length; i++) { System.out.println(Arrays.toString(arr[i])); } 문제없이 잘 나가지만 [] 괄호도 같이 출력이 되어 다른 방법을 모색을 해서 좀더 ..
코드 카타에서 알람시계를 만들면서 1초마다 시간이 달라지는 것을 출력을 해야 하는 상황이 나왔는데 이럴 때 1초 정지는 어떻게 해줘야 좋을까 1초를 정직하게 정지한다 Thread.sleep(1000) - 이렇게 1초를 정지해도 프로그램상 문제는 거의 없다 하지만 만약에 낮은 확률이긴 아마도 0.1% 확률로 알람을 무시할 수 있다 3초 4.9999초.. 6.0001초 실제 코드에서 1초 정지를 확인해본 결과 ============= || test case 1 || ============= | 알람 시간 | | 초 | |밀리초 | 7:30:19초 1_658_529_020. 974 7:30:20초 1_658_529_021. 983 7:30:21초 1_658_529_022. 991 7:30:22초 1_658_5..