자바 쓰레드 인터럽트 블로킹 해결 (Java Thread Interrupt Blocking) 자바 - 인터럽트에 응답하지 않는 블로킹 작업 다루기자바Java 라이브러리에 포함된 여러 블로킹 메소드는 대부분 Thread 인터럽트가 발생하는 즉시 멈추면서 InterruptedException을 띄우게 되어 있다. 따라서 작업 중단 요청에 적절하게 대응하는 작업을 쉽게 구현할 수 있다. 그런데 잘 살펴보면 모든 Java 블로킹 메소드가 인터럽트에 대응하게 되어 있지는 않다. 예를 들어 동기적인 소켓 I/O를 실행하는 도중에 스레드가 멈춰 있는 경우라던가 암묵적인intrinsic 락을 확보하기 위해 대기하는 등의 작업에 멈춰있는 경우라면, Interrupt를 거는 것이 인터럽트 상태 변수의 값을 설정하는 것 말..
리눅스 유닉스 명령어 모음.pdf (Linux Command) 유닉스, 리눅스 명령어 모음입니다. 딱!! 주로 사용하는 것들만 모여있네요. pdf 다운로드 - Unix_Linux_Command_Reference.pdf [링크] File Commands ls – directory listingls -al – formatted listing with hidden files cd dir - change directory to dircd – change to home pwd – show current directory mkdir dir – create a directory dir rm file – delete filerm -r dir – delete directory dirrm -f file – force re..
실시간 시스템(Real Time) 정의, 경성(Hard) 연성(Soft) 이란? 실시간 시스템이란, 실시간 시스템 정의실시간 시스템은 제출된 작업의 수행 결과가 정확해야 할뿐 아니라 도출되는 시간이 주어진 제약 조건을 만족시켜야 하는 시스템이라 할 수 있습니다. 이러한 실시간 시스템에는 크게, 경성 실시간(Hard real-time)과 연성 실시간(Soft real-time)로 구분할 수 있습니다. 경성 실시간 시스템 (Hard real-time)외부의 이벤트에 대해 명시된 시간 내에 응답하지 못했을 경우 완전한 실패로 판정되는 시스템입니다. 예를 들면 공항 관제 시스템이나 인공위성 발사 제어 시스템과 같이 시간 제약 조건을 한 번이라도 만족하지 못한다면, 심각한 피해를 일으키기 때문에 수용할 수 없는 ..
ARM Architecture, 프로세서 버스와 버전별 특징 버클리 RISCⅠ 논문이 발표된 이후 이 새로운 CPU가 상업적으로 성공할 수 있다는 것을 ARM 社가 증명하기 위해 버클리 RISCⅠ 관련 기술(Architecture)을 상당수 채택하였고, 스탠포드의 MIPS(Microprocessor without Interlocking Pipeline Stages) 등에서도 관련 기술과 설계 개념을 빌려왔다. 이후의 꾸준한 연구를 통해 ARM 라이선스가 전 세계 반도체 제조업체에게 팔리게 되면서 ARM CPU는 저전력, 저가격 임베디드 시장을 주도하는 현재에 이르렀다. 임베디드 시스템은 작은 센서 모듈에서부터, 고정밀 실시간 제어 시스템에 이르기까지, 다양한 디바이스들을 제어하는 데 사용됩니다. 이 모든..
펀드 수익률 계산 방법, 적립식 펀드 확인해요 신문이나 책에서 펀드 수익률계산 된 표가 많이 보여요. 6개월 수익률 30% 등으로 소개되는데요. 근데, 언론에서 알려주는 것은 거치식이라 실제 수익률은 조금 달라요. 일반적으로 직장인들은 적립식 펀드에 가입하기 때문에 수익률에서 차이가 나는 거죠. 펀드 수익률 계산 방법! 거치식과 적립식은 다르다! 즉, 거치식과 적립식 펀드 수익률 계산 결과는 다를 수 있어요. 투자 기간과 투자 시점, 『매수 시점』에 따라 수익률은 다르기 때문이죠. 그래서 간단하게 계산 방법 알려드릴게요. 가입 당시 기준가격과 현재 기준가격만 알면 누구나 계산할 수 있어요. 계산 방법공식 : ((현재 기준가 또는 가입 기준가) / 가입 기준가)) * 100 예 1) 1,100원에 가입, ..
카카오 정책 변경으로 티스토리 운영 포기하고 사이트 이전합니다. C++ 200제 관련 문의는 여기에 남겨주세요.
[MFC강좌] 파일 경로 1. PathFileExists 등 12개 함수 LPTSTR PathAddBackslash( LPTSTR lpszPath ); 경로 문자열의 맨 뒤에 '\'를 붙여준다. 만약 이미 '\'문자로 종결된 상태라면 아무 일도 하지 않는다. lpszPath는 MAX_PATH 크기(또는 그 이상)이라야 하며, lpszPath에 '\'를 더 붙일 수 없다면 NULL이 반환된다. BOOL PathAddExtension( LPTSTR pszPath, LPCTSTR pszExtension ); 파일 경로(pszPath)의 맨 뒤에 지정된 확장자를 붙여준다. 만약 pszPath가 이미 확장자가 포함된 파일 경로라면 아무 일도 하지 않는다. pszExtension이 NULL이라면 기본적으로 ".ex..
OpenGL ES 3.1 Tutorial, Color Line 예제 (Qt 프로그래밍) 작업 환경 - Ubuntu 14.04 - OpenGL ES 3.1 - Qt 5.3 - ARM Cortex A-15 프로젝트 - Opengl ES 3.1_LineColor.tar.gz [링크] ARM용 보드에서 Opengl ES를 설치하면 예제 폴더가 생성됩니다. 이하 소스는 기본 예제를 수정한 내용입니다. 1. 버전 설정 저는 OpenGL ES 3.1을 사용하기에 setVersion() 함수에 3과 1을 넘겼습니다. 123456789void Widget::start(){ QSurfaceFormat fmt; fmt.setVersion(3, 1); // ES 3.1 fmt.setProfile(QSurfaceFormat::..
자바 쓰레드 안전성을 위한 동기화, 캡슐화 (thread safety 방법) 스레드(Thread, 쓰레드) 안전성을 정의하기는 굉장히 까다롭다. 더 정형화할 수는 있겠지만 복잡해서 실용적 참고나 직관적 이해 어디에도 도움이 안 된다. 남는 것은 계속해서 빙빙 도는 대략적인 설명뿐이다. 구글로 검색하면 다음과 같은 수많은 쓰레드 안전성 '정의'가 나온다. - 여러 프로그램 스레드에서 스레드 간에 원치 않는 상호 작용 없이 호출할 수 있는...- 호출하는 측에서 다른 작업을 하지 않고도 여러 쓰레드에서 동시에 호출할 수 있는... 이런 정의를 놓고 보면 쓰레드 안전성 개념이 헛갈리는 것도 무리가 아니다. thread safety가 대체 뭔가? 마치 "여러 스레드에서 안전하게 사용될 수 있으면 해당 클래스는 ..
펀드투자원칙 7가지, 꼭 외워야할 것들 (투자 비법) 제가 생각하는 펀드투자원칙 7가지 공유합니다. 1. 짧은 기간 큰 손해를 봤다면 주저 없이 환매하자.물론, 짧은 기간 안에 다시 회복할 수 있습니다. 그러나, 펀드투자원칙상, 펀드손해 보는 속도가 일반적으론 펀드수익 내는 속도보다 빠릅니다. 그러니, 환매하고 다른 상품을 찾는 것이 더 낫습니다. (경험상) 2. 과거 펀드수익률에 얽매이지 말자.최근 3년 적자였어도 최근 1, 3, 6개월 연속 펀드수익이 났다면 오를 가능성이 있습니다.최근 3년 흑자였어도 최근 1, 3, 6개월 연속 펀드손해가 났다면 계속 하락할 가능성도 있습니다. 3. 100억 미만 소형 펀드는 조심하자.증권사 대표펀드들 특징은 펀드 규모가 천억 이상은 된다는 겁니다. 한 증권사가 여..
자바 ZIP 파일 압축 예제 (ZipOutputStream) 먼저 사용 방법 이론을 설명하고 이어서 예제 2개를 소개하겠습니다. 변수에 저장된 폴더와 파일 경로를 JAVA ZIP으로 압축하는 예제 소스입니다. Java에는 라이브러리가 존재하므로 구현하긴 쉬워요. 별도로 자바 압축파일(ZIP)을 이용하기 위한 설치 파일이나 3rd party 라이브러리는 필요 없어요. 우선, Oracle에서 제공하는 자바 플랫폼 문서를 참조합니다. SE 7 버전의 기반의 문서이나 다른 버전과의 차이는 없습니다. 무슨 뜻이냐면, 자바 버전 신경쓰지 말고 그냥 쓰면 된다는 겁니다. 참조 - Oracle - Package java.util.zip [링크] 많은 ZIP 압축 패키지들이 있는데 기본적으로 사용하는 패키지는 아래에 3..
[Qt Qwt 강좌] ShapeItem 삭제 예제 (메모리 누수 방지) Qt qwt 요소를 제대로 삭제하지 않으면 아래처럼 속성들이 겹칩니다. 아래 그림에서 속성을 제대로 삭제했다면 한 색깔의 그래프만 보여야 합니다. 하지만, 모든 색상의 그래프가 겹쳐있네요. 그리고 저 상태로 프로그램을 종료하면 메모리 누수가 일어납니다. 그러니, 아래 소스를 소멸자에 넣어두세요. 그래야 메모리 누수와 그래프 겹침 현상을 막을 수 있습니다. 12345678910/** 기존의 ShapeItem 삭제 */QwtPlotItemList list = plot_goods_->itemList(); for (QwtPlotItemIterator it = list.begin(); it != list.end(); it++) { if((*i..