JNI가 뭔지 궁금해서 6년전쯤 윈도우에서 dll를 만들고 자바에서 호출한 적 있었는데 최근에 다시 해 볼 일이 있어서 자료를 찾던 중에 좋은 소스가 있어서 소개해 드립니다. 다른 부분은 자료도 많고 해서 패스. 핵심인 C 구현부인데요.자바에서 문자열을 넘겨주고 (jstring jstr) 다시 자바로 문자열을 리턴하는 함수 입니다. 색칠한 부분이 소스의 핵심입니다. JNIEnv 와 jobject를 이용하면 자바의 클래스변수, 생성자, 함수 모두에 접근할 수가 있더군요. EXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *env, jobject obj, jstring jstr) { char buf[128]; const jbyte *str; str = (*env)->G..
Java로 FTP 클라이언트를 구현한 오픈 소스입니다.
오라클 pro*c에서 부득이하게 DBMS Call를 통해 클라이언트로 데이터를 fetch할때 또는 반대로 insert, update 할때에 Array Processing를 하게되면 DBMS Call 횟수를 줄여 성능을 향상 시킬 수 있습니다. pro*c에서는 host변수를 배열로 만들어 Array Processing를 수행합니다. pro*c로 하는 Array Processing은 쉽게 찾아 볼 수 있음으로 생략하구요. 자바를 활용한 Array Processing 샘플이 있어 소개해 드려요. 출처> http://www.gurubee.net/pages/viewpage.action?pageId=3901805 public class JavaArrayProcessing{ public static void inse..
어제 시간이 나서 레포트 프로그램을 만들었는데요. 여전히 DB 접속하고 SQL작성하는게 맘에 안들어 전부터 해봐야지 했던 iBatis를 적용해 보았습니다. 생각보다 적용하는게 너무 간편해서 놀랐는데요. 다만 config파일(xml)의 위치로 좀 고생을 했습니다. ClassLoader의 함수가지 보고야 해결했습니다. ^^ 아무튼 iBatis를 적용하니 몇가지 좋은 점이 있더군요. 1. SQL이 자바코드와 섞이지 않으니 수정이 정말 편리했습니다. PRO*C가 편리한 점이 SQL를 바로 사용할 수 있다는 것인데요. iBatis는 자바코드와 완전히 분리가 되기 때문에 더 편한것 같습니다. 2.JDBC 환결설정 만으로 jdbc는 몰라도 되는게 좋더군요. Connection 얻고, Statement객채 생성하고 R..
최근에 안드로이드 공부로 다시 자바를 사용하는데요. 제너릭이 정말 편리더군요. 가장 최근에(약 1년 6개월전) 사용한것도 jdk 1.4여서 제너릭을 사용할 기회가 없었거든요. Vector의 원소를 탐색할때 전통적인 방법은 크게 2개가 있죠. 1. for(int i=0; i< Vector.size(); i++) { } 2. iterator를 이용하는 방법 그러나 제너릭을 이용하면 더 쉽습니다. Vector v = new Vector(); // ~! for(Car c : v){ } // 정말 심플하죠.
Vector 에 들어 있는 원소를 정렬하는 방식은 자바의 Vector와 C++ STL의 vector가 비슷 합니다. 표현의 방식이 다를 뿐이죠. 자바에서는 아래와 같은 순서로 하시면 됩니다. 1. 비교자 Comparator 구현 : Comparator 인터페이스를 상속받아 구현합니다. 예제는 아래에 있습니다. 2. Collections.sort(정렬할 벡터,Comparator 인스턴스); -- 예제 --- Member 클래스에 이름과 나이를 저장한 후 이를 Vector에 넣고 나이의 오름 차순으로 정렬하는 예제 입니다. 내림차순으로 할때는 Comparator 부분에서 리턴값만 바꿔주면 됩니다. package com; import java.util.Comparator; import java.util.Vec..
Multi Break 문은 C 언어의 goto 문처럼. 레이블을 이용하여 중첩된 반복문을 한번에 탈출하는 방법입니다. 아래 예제는 이중 for문에 Multi Break문을 적용한 예입니다. public class MultiBreak { public static void main(String [] args){ end: for(int i=0; i< 100; i++) /*레이블 선언*/ for(int j=0; j< 50; j++){ System.out.println(""+i+" : "+j); if(i==5 && j==5) break end; } } }
- Total
- Today
- Yesterday
- VARIDESK
- Life Chair
- 매직 트랙패드2
- 증권정보포털
- GKRS
- 유가바이트디비
- 솔리드 쿨론
- 홈 오피스
- 별잉 빛나는 밤
- Pixel Pals
- 브리다 정수기
- yugabyteDB
- 남설 팔찌
- 오미크론
- 빈센트 반 고흐
- 루미큐브 종류
- 톡토기
- 배당급
- JMW 헤어드라이기기
- node.js
- 화분벌레
- 별이 빚나는 밤
- 고체 향수
- 르세라핌
- 로니카 BCS
- 파나소닉 비데 DL-EH10KWS
- 코라나 19
- 카카오 에드
- Sybase IQ
- weka
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |