목록Language (22)
시다바리
/** * 한글 UniCode 를 한글로 변환 시키는 소스 * Myoung-Geun Jang(jangsalt@nextelecom.co.kr) * 2008. 5. 9 **/ public class UnicodeToChar { public static void main(String[] arg) { String uniCodeStr = String.format("\uD14C\uC2A4\uD2B8"); String[] rawUnicode = uniCodeStr.split(""); int intVal = 0; char[] chVal; for(int i = 0; i < rawUnicode.length; i++ ) { chVal = rawUnicode[i].toCharArray(); for(int j = 0; j < ..
/** * 한글을 한글 UniCode 로 변환 시키는 소스 * Myoung-Geun Jang(jangsalt@nextelecom.co.kr) * 2008. 10. 1 **/ public class CharToUnicode { public static void main(String args[]) { String str = "테스트"; char[] code = new char[100]; int[] realCode = new int[100]; for(int i=0; i < str.length(); i++) { code[i] = str.charAt(i); realCode[i] = (int)(code[i]); // System.out.println( //"The unicode of '" + code[i] + "'..
import java.io.*; import java.nio.*; import java.nio.channels.*; /** * FileChannel과 ByteBuffer를 사용한 파일 복사 프로그램 **/ public class FileCopy { public static void main(String[] args) { FileChannel inputChannel = null; FileChannel outputChannel = null; try { FileInputStream in = new FileInputStream(args[0]); FileOutputStream out = new FileOutputStream(args[1]); inputChannel = in.getChannel(); outputCh..
시간 관련 관련함수 1) sleep(), usleep(), nanosleep() vs. Sleep() 이들 함수는 모두 프로세스를 일정 시간 대기시키는 함수입니다. 함수명도 다르지만 함수의 사용법 또한 좀 다릅니다. 각각의 함수 원형은 다음과 같이 생겼습니다. #include unsigned int sleep(unsigned int seconds); void usleep(unsigned long usec); #include int nanosleep(const struct timespec *req, struct timespec *rem); #include VOID Sleep(DWORD dwMilliseconds); VC++에서 제공하는 Sleep()함수는 밀리초를 인자로 받아들이는 반면 GNU C계열에서 ..
서버: select() 함수 [출처] : 시월의 주문 select() 콜은 네트워크에서 사용되는 전송 방식 중 I/O multiplexing 이란 기능을 사용할 수 있게 해주는 함수 입니다. I/O Multiplexing 기술을 사용하면 여러개의 소켓을 좀더 간편하게 관리할 수 있습니다. 실제로 사용되는 부분을 직설적으로 표현하자면 사용자 여려멍 접속을 받아서 그 사용자로 부터의 입력, 서버에서 사용자에게로의 출력 그리고 예외 처리를 해줄 수 있다고 할 수 있습니다. select() 는 Unix Network Programming 책의, 6.13 입출력 다중화 (309 페이지) 에 보시면 자세히 서술되어 있습니다. 그리고 저는 리눅스 서버 중심으로 설명 드리겠습니다. 다음은 select 함수의 man p..
Thread.stop가 추천 되지 않는 이유 본질적으로 안전하지 않기 때문입니다. Thread를 정지하면, 그 Thread가 잠근 모든 모니터의 락이 해제됩니다. (ThreadDeath 예외가 스택까지 전해지면, 모니터의 락이 해제된다.) 이러한 모니터에 의해서 이전 보호되고 있던 오브젝트가 정합성이 없는 상태가 되면, 다른 Thread도, 이러한 오브젝트가 정합성의 없는 상태에 있다고 봅니다. 그러한 오브젝트는 망가진오브젝트가 됩니다. 망가진 오브젝트에 대해서 Thread가 조작을 실행하면, 예기치 않은 결과가 될 가능성이 있습니다. 이 동작은, 미묘하고 검출이 곤란한 경우와 확실히 통지되는 경우가 있습니다. 체크되지 않는 것 외의 예외와는 달라,ThreadDeath는, 스렛드를 그대로 강제적으로 종료..
I. Multi thread의 개요 가. Multi thread의 개념 - 여러 개의 Thread를 사용하여 하나의 수행업무를 동시에 처리하는 프로세스 제어기법 정의 좋습니다. But 6하원칙으로 볼때 좀 빠진게 있습니다.. 여러 개의 Thread를 사용하여 하나의 수행업무를 동시에 처리함으로 컴퓨터의 처리속도를 증가시키는 프로세스 제어기법 나.. Multi thread의 개념도 - CPU가 매우짧은 단위시간인 시분할 방식으로 복수의 Thread에 차례로 할당하여 복수의 처리가 동시에 이루어지는 것처럼 보임 다. Multi thread의 특징
POSIX 쓰레드로 멀티 쓰레드 프로그래밍하기
#include #include #include #define MAXRANDOM 60 // 링크 리스트 구조체 typedef struct ListNode { int data; struct ListNode *link; } ListNode; // 사용되는 함수 선언 ListNode *create_node(int data, ListNode *link); void insert_node(ListNode **phead, ListNode *p, ListNode *new_node); void display(ListNode *head); void main() { int i; int number; ListNode *linklist = NULL; ListNode *p; randomize(); for(i = 0; i < 10..
이벤트 디스패치 쓰레드라는게 있습니다. 스윙에 관련된 작업이 모두 이 스레드를 통해서 이루어져야 하는데, 이 스레드가 바로 스윙 관련 작업들을 처리하는 역할을 합니다. 간단하게 말해서 스윙 관련 이벤트들을 일렬로 줄세워서 여러개의 이벤트가 동시에 하나의 스윙 컴포넌트에 접근해서 데이터 조작을 하는 것을 막아줍니다. (여러개의 이벤트가 동시에 하나의 JButton의 데이터를 바꾼다면 문제가 생길 겁니다...) 꼭 한순간에 하나의 이벤트가 원하는 작업을 하게끔 해준다는 겁니다. 하루에 하나씩 소원을 들어주는 바람돌이처럼 이벤트 디스패치 스레드는 한번에 한개의 이벤트가 실행되게 합니다. invokeLater는 말 그대로 "나중에 호출해라"라는 뜻 인데, 나중에 호출할 대상이 바로 파라미터로 주어지는 Runna..