목록Language/Java (13)
시다바리
/** * 한글 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..
Thread.stop가 추천 되지 않는 이유 본질적으로 안전하지 않기 때문입니다. Thread를 정지하면, 그 Thread가 잠근 모든 모니터의 락이 해제됩니다. (ThreadDeath 예외가 스택까지 전해지면, 모니터의 락이 해제된다.) 이러한 모니터에 의해서 이전 보호되고 있던 오브젝트가 정합성이 없는 상태가 되면, 다른 Thread도, 이러한 오브젝트가 정합성의 없는 상태에 있다고 봅니다. 그러한 오브젝트는 망가진오브젝트가 됩니다. 망가진 오브젝트에 대해서 Thread가 조작을 실행하면, 예기치 않은 결과가 될 가능성이 있습니다. 이 동작은, 미묘하고 검출이 곤란한 경우와 확실히 통지되는 경우가 있습니다. 체크되지 않는 것 외의 예외와는 달라,ThreadDeath는, 스렛드를 그대로 강제적으로 종료..
I. Multi thread의 개요 가. Multi thread의 개념 - 여러 개의 Thread를 사용하여 하나의 수행업무를 동시에 처리하는 프로세스 제어기법 정의 좋습니다. But 6하원칙으로 볼때 좀 빠진게 있습니다.. 여러 개의 Thread를 사용하여 하나의 수행업무를 동시에 처리함으로 컴퓨터의 처리속도를 증가시키는 프로세스 제어기법 나.. Multi thread의 개념도 - CPU가 매우짧은 단위시간인 시분할 방식으로 복수의 Thread에 차례로 할당하여 복수의 처리가 동시에 이루어지는 것처럼 보임 다. Multi thread의 특징
이벤트 디스패치 쓰레드라는게 있습니다. 스윙에 관련된 작업이 모두 이 스레드를 통해서 이루어져야 하는데, 이 스레드가 바로 스윙 관련 작업들을 처리하는 역할을 합니다. 간단하게 말해서 스윙 관련 이벤트들을 일렬로 줄세워서 여러개의 이벤트가 동시에 하나의 스윙 컴포넌트에 접근해서 데이터 조작을 하는 것을 막아줍니다. (여러개의 이벤트가 동시에 하나의 JButton의 데이터를 바꾼다면 문제가 생길 겁니다...) 꼭 한순간에 하나의 이벤트가 원하는 작업을 하게끔 해준다는 겁니다. 하루에 하나씩 소원을 들어주는 바람돌이처럼 이벤트 디스패치 스레드는 한번에 한개의 이벤트가 실행되게 합니다. invokeLater는 말 그대로 "나중에 호출해라"라는 뜻 인데, 나중에 호출할 대상이 바로 파라미터로 주어지는 Runna..
* Serializable 객체 직렬화란 객체의 내용을 바이트 단위로 변환하여 파일 또는 네트워크를 통해서 송수신(스트림)이 가능하게 만들어 주는 것을 말합니다. 여기서 객체란 멤버변수의 메모리만으로 구성된 것을 말하구요. 따라서 객체 직렬화에서 메서드와 생성자는 제외된다는 것을 잊지 마세요! 이렇게 객체를 직렬화 함으로써 얻을 수 있는 장점은 객체 자체의 내용을 입출력 형식에 구애 받지 않고 객체를 파일에 저장함으로써 영속성을 제공할 수 있고, 객체 자체를 네트워크를 통하여 손쉽게 교환할 수 있게 됩니다. 객체 직렬화는 자바 1.1 이후에 도입이 되었는데 그 이유는 RMI와 Bean 때문이었습니다. RMI는 원격객체통신을 지원해야 하기 때문에 객체가 그대로 이동할 수 있어야 합니다. 따라서 이를 지원하..
* ResourceBundle의 활용 API 위치 java.util.ResourceBundle 역할 프로그램 배포시 고정된 자원과 변화하는 자원이 있다. 게시판 배포를 예로 든다면 안에 소스는 대부분 고정된 자원이다. 하지만 사용자마다 database의 설정 등은 수정해서 사용해야 하는 부분이다. 이러한 값들은 프로그램의 알고리즘과 상관없는 부분으로 따로 관리해야 하는 자원들이다. 이러한 자원은 파일로 저장해서 관리하는 것이 보편적 추세로 ResourceBundle을 이용 할 수 있다. 아래는 현제 사용중이 properties 파일이다. ADMIN_ID=id ADMIN_PWD=pass MAX_UPLOAD_SIZE=6291456 위에서 보면 단순히 "="를 기준으로 해서 왼쪽에 key 오른쪽에 value가..
* MVC : Model, View, Controller - MVC패턴은 Smalltalk에서 그래픽 인터페이스와 실제로 동작하는 코드를 분리하기 위해 개발되었다. - 지금은 다른 객체지향언어에서도 널리 사용되는 패턴 중 하나이다. ▶ Model 프로세스 주요 로직 - DAO (Data Access Object) : DB table에 접근하여 삽입, 수정, 삭제, 검색하는 로직 - VO (Value Object) : View, Controller, Model 사이에서 DB Table에 대한 정보를 표현하는 객체 모델(model)이란 어떠한 동작을 수행하는 것을 코드를 말한다. 표시 형식에 의존하지 않는다. 다시 말해, 사용자에게 어떻게 보여질지에 대해 신경쓰지 않아도 된다. 모델은 순수하게 public ..
* indexOf 와 startsWith 의 차이 indexOf는 예를 들어 하나의 배열이 있다고 합시다 String[] sArry = new String[]{"a","b","c"}; 이런경우에 for( int i = 0 ; i < sArry.length ; i++ ) { System.out.println( sArry[i].indexOf("b") ); } 라고 하시면 아마도 -1, 1, -1 이라고 위치가 출력될 것입니다. indexOf란 인자값으로 받은 것이 대상객체에 있는 위치(인덱스번호)를 리턴해줍니다. 만약 없다면 -1을 리턴해줍니다. 중복값을 체크할때 유용하게 많이 사용합니다. 이런식으로요 for( int i = 0 ; i < sArry.length ; i++ ){ if( sArry[i].ind..