본문 바로가기

Programming/JAVA

IO vs NIO performance compare (성능 비교) Java 1.4 버전에서 이미 NIO가 나왔음에도 일반 IO 쓰는게 대부분이다. 이번에 IO와 NIO의 성능 비교를 하고자 파일 복사 테스트를 하였으니 참고 시 유용하게 쓰였으면 한다(단, 걸린 시간만 체크). 테스트조건 - Java 버전: jdk1.6.0_39 - 파일크기: 232 Mbytes (src.zip) - 버퍼사이즈: 8192 bytes (1~6번까지 하나씩 테스트) 공통 view plaincopy to clipboardprint? private static File srcFile = new File("src.zip"); private static File desFile = new File("des.zip"); private static int bufferSize = 8192; public s.. 더보기
자바<JAVA> 아파치(APACHE) 오픈소스 COMMONS NET 이용하여 FTP파일업로드 하기 출처 : http://blog.naver.com/lover4908?Redirect=Log&logNo=110072552163 필요한 라이브러리 import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPReply; public class Util { public static final void simpleSendFileToFTP(String targetUrl , String id , String pwd .. 더보기
이클립스에서 Ctrl + Space가 동작하지 않을 때 내가 이클립스를 이용하면서 가장 많이 사용하는 단축키(hot key) 중에 하나가 Code Assist를 지원하는 Ctrl + Space이다. 그런데 우분투에서 이클립스를 처음 사용했을 때 의외로 이 기능이 동작하지 않았다. 그 이유를 찾아본 결과 우분투에서 Ctrl + Space는 한/영키 전환과 매핑되어 있는 관계로 다른 단축키로 매핑되어 있는 것을 확인했다. 단축키를 확인해 보려면 Window >> Perferences >> General >> Keys로 이동한 후 검색 화면에서 Assist로 검색해보자. 그러면 Content Assist가 나타나면서 Alt + /로 매핑되어 있는 것을 확인할 수 있다. 최초 예약되어 있는 Alt + /로 사용해도 되지만 윈도우와 우분투를 동시에 사용한다면 가능한 .. 더보기
[JAVA Spring]강의 출처 : http://name267.tistory.com/entry/JAVA-Spring%EA%B0%95%EC%9D%98 [JAVA Spring]강의 01일차 스프링 프레임워크?, ID: Dependency Injection(의존성주입) http://snoopy81.tistory.com/166 02일차 Bean 생성 및 사용 http://snoopy81.tistory.com/167 03일차 의존 관계 설정 http://snoopy81.tistory.com/168 04일차 빈 객체 범위 http://snoopy81.tistory.com/170 05일차 빈의 라이프 사이클 (커스텀 초기화/소멸 메서드, BeanNameAware/ApplicationContextAware 인터페이스)http://snoopy81.. 더보기
SPRING TOOL SUITE 설치하기 http://dkfemdnjs.tistory.com/27 http://gangzzang.tistory.com/161 더보기
이클립스 실행 오류 해결 Ubuntu 환경에서 이클립스를 설치하고 실행했더니 다음과 같은 오류가 발생하였습니다. (An error has occurred. See the log file ...) 경고창에 적힌 See the log file 문구대로 로그파일을 gedit를 이용하여 읽어보았습니다. ↓ 로그 내용중 빨간 밑줄을 보시면 SWT library를 찾을 수 없다라고 나옵니다. (Could not load SWT library) 또한 /home/mooyou/.swt/lib/linux/x86_64/ 폴더에서 SWT library를 찾는 것을 볼 수 있습니다. 이것 때문에 문제가 발생한 것입니다. 따라서 다음과 같이 터미널에 입력하여 SWT library 파일들을 링크시켜주면 해결됩니다. ln -s /usr/lib/jni/lib.. 더보기
How to Load a Java Native/Shared Library (.so) How to Load a Java Native/Shared Library (.so) http://www.chilkatsoft.com/java-loadLibrary-Linux.asp http://xyplot.com/jni.simple.htm http://www.jvmhost.com/articles/using-native-methods-shared-libraries-in-java-jsp-code http://stackoverflow.com/questions/8650472/how-do-i-import-a-native-library-so-file-into-eclipse 더보기
자바 Eclipse 이클립스 SWT/JFace 참고 사이트 http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/CatalogSWT-JFace-Eclipse.htm 더보기
[SWT] Java Tutorial http://www.java2s.com/Tutorial/Java/0280__SWT/Catalog0280__SWT.htm 더보기
SWT 컴포넌트 http://lovedev.tistory.com/267 더보기
자바 룩앤필 try { UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) { // TODO Auto-generated catch block e.printStackTrace();} 더보기
자바와 오라클(Oracle) 연동하기 출처 : http://cafe.naver.com/breakjava/93package db;/* * 자바와 db연동 시키기 * insert, select, delete, update를 db를 이용해서 작성및 변경, 삭제하기 */import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import org.omg.CORBA.SetOverrideType;public class DbTest1 { Connection conn; Statement stmt; // 필요한것을 매번 불러옴 .스테이트 먼트의 특징 ResultSet rs; String sql; // 전역변수 초기값은 0 .. 더보기
[자바] Infinity 처리 참고 : http://www.java2s.com/Code/Java/Data-Type/ShowINFINITYandNaN.htm /** * Show INFINITY and NaN * @author Ian F. Darwin, http://www.darwinsys.com/ * @version $Id: InfNaN.java,v 1.4 2004/02/09 03:33:57 ian Exp $ */public class InfNaN { //+ public static void main(String[] argv) { double d = 123; double e = 0; if (d/e == Double.POSITIVE_INFINITY) System.out.println("Check for POSITIVE_INFINITY w.. 더보기
[자바] NaN, Infinity 자바에서 NaN(Not a Number)와 Infinity(무한대) - NaN : 실수 연산에서만 존재 cf) 0/0, 5/0, -5%0 과 같은 정수연산은 컴파일은 되나 실행시 오류(예외처리) 발생 - 자바에서 0 으로 나누기 연산 / 나머지 연산 관련 소스코드 ------------------------------------------------------------------ public class TestNaN { public static void main(String[] args) { System.out.println("나눗셈(/) 연산"); System.out.println("0.0/0.0 : "+0.0/0.0); System.out.println("0.0/0 : "+0.0/0); System.. 더보기
[Swing] 스크린 가운데 배치 // 스크린을 가운데 배치dim=Toolkit.getDefaultToolkit().getScreenSize(); // 스크린의 사이즈 측정dim1=super.getSize();xpos=(int)(dim.getWidth()/2-dim1.getWidth()/2);ypos=(int)(dim.getHeight()/2-dim1.getHeight()/2);super.setLocation(xpos,ypos);super.setVisible(true); 더보기
[Swing]JTable 에 체크박스 넣기 import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;public class JTableTesterII extends JFrame { private final Object [] colNames = {"ChkBox","이름","나이","성별"}; private Object [][] datas = {{false,"홍길동","20","남"},{true,"김말자","18","여"}}; public JTableTesterII(){ super("JTable Tester"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(ne.. 더보기
[Swing] JTree의 이벤트들 1. addTreeSelectionListener ( TreeSelectionListener listen) //트리 노드가 선택 되었을때 일어나는 이벤트 2. addTreeWillExpandListener ( TreeWillExpandListener listen) //트리 노드가 펼쳐졌을떄 일어나는 이벤트 1. addTreeSelectionListener ( TreeSelectionListener listen) public void valueChanged(TreeSelectionEvent e) { < --이 매서드 Override 해야함. TreeSelectionEvent의 매소드 TreePath getPath(); 리턴받은 트리패스는 toString 하면 해당 트리의 요소들을 [ROOT명, 자식, 손자.. 더보기
[Swing]JSplitPane 반으로 쪼개는 판넬 JSplitPane은 대상을 반으로 쪼갠다. 세로 , 혹은 가로로. 쪼개내는 부분을 Divider 라고 하는데 이 이치를 설정 할 수 있다. 생성자 이다. new JSplitPane(int newOrientation,boolean newContinuousLayout); 1번째 : 어떤형태로 나눌것인가. JSplitPane.HORIZONTAL_SPLIT // 좌우 등분 JSplitPane.VERTICAL_SPLIT // 상하 등분 2번째 : true로 하면 디바이더를 이동시킬떄 바로바로 이동되고 false로 하면 디바이더를 끌어서 내려놓았을때 이동이 된다 ㅋㅅㅋ;; newContinuousLayout a boolean, true for the components to redraw continuously a.. 더보기
[Swing] JTree를 이용해 트리 구성하기 TreeNode 인터페이스를 구현한 DefaultMutableTreeNode 클래스를 사용합니다. 방법은 간단합니다. DefaultMutableTreeNode를 만들때 생성자로 노드명을 적습니다. DefaultMutableTreeNode root = DefaultMutableTreeNode("루트노드요"); 이러면 노드가 한개 생긴검니다. DefaultMutableTreeNode child1 = DefaultMutableTreeNode("1번째자식"); DefaultMutableTreeNode child2 = DefaultMutableTreeNode("2번째 자식"); 이렇게 두개 만들수도 있지요. 얘들을 루트노드 하위노드로 만들수 있습니다. root.add(child1); root.add(child2).. 더보기
[Swing]파일열기 JFileChooser JFileChooser(String currentDirectoryPath) 위와 같은 다이어로그를 여는 클래스이다. 생성자에 들어가는 경로가 최초 보여주는 위치가 된다. JFileChooser fc = new JFileChooser("D:\\JavaRoom"); //JFileChooser 생성 int choice = fc.showOpenDialog(f); //다이어로그를 보여준다. f는 부모 프레임. //리턴값은 열기선택, 취소 중에 하나. if(choice == JFileChooser.APPROVE_OPTION){ //리턴값 체크. 해서 열기 누른 경우에는 File file = this.fc.getSelectedFile(); //선택 파일을 반환한다. tf.setText(file.getAbsoluteP.. 더보기
[Swing] JTable 생성하기. 초기 데이터 입력하기 new JTable(); // 로 만드세용new JScrollPane(Component c); // 이거니까 여기에 JTable 도 들어갈수있어요. // 스크롤 판넬이니까 테이블이 공간보다 크면 스크롤바 나와서 좋아요table = new JTable();pane = new JScrollPane(table);this.add("Center", pane); 이렇게 만든 JTable 의 setModel(TableModel t) 매소드를 이용해서 데이터를 넣는다. 먼저 TableModel 객체에 데이터들과 컬럼을 넣어야 한다. TableModel을 만들기위해 DefaultTableModel 을 상속받아서 클래스를 만들자. class MyTableModel extends DefaultTableModel { //이렇.. 더보기
[Swing] JCombobox 콤보박스 리스트가 나와서 선택해요 콤보 박스 입니다. Integer [] array = {0,1,2,3,4}; JComboBox cbNight = new JComboBox(array); JCOmboBox는 제네릭스 클래스 이기 때문에 안에 들어갈 클래스를 정의해 주어야 합니다. 위에서는 Integer 타입으로 정의하였습니다. 생성자는 배열로 넘어갔고요 벡터 객체를 넘길수도 있습니다. 넘어간 인스턴스의 toString 매소드에 정의된 내용들로 리스트를 출력하는듯 함니다. 원하시는 형태로 기존 인스턴스의 toString 매소드를 오버라이드 하세요. 매소드 setSelectedIndex(0) //입력한 인덱스를 선택상태로 만든다. getSelectedIndex(); //선택된 인덱스를 가져온다 [출처] [자바][스윙] JCombobox 콤보박.. 더보기
[Swing] JRadioButton 라디오 버튼 한번에 1개만 선택 할 수 있는 것이 라디오 버튼이다. 라디오버튼은 아래의 순서로 만든다 1.라디오 버튼 객체 생성 2.버튼 그룹 객체 생성 3.라디오버튼 객체를 버튼그룹에 add 하여 그룹화 4.버튼 객체들을 컨테이너(프레임, 판넬) 에 추가. 아래와 같이 만든다. gibonCode.setLayout(new GridLayout(1,4)); // 그리드 레이아웃 설정. JRadioButton rb1 = new JRadioButton("1"); rb1.setFont(font); // JRadioButton 생성JRadioButton rb2 = new JRadioButton("2"); rb2.setFont(font);JRadioButton rb3 = new JRadioButton("3"); rb3.setFo.. 더보기
[Swing] 윈도우 창 위쪽에 아이콘 바꾸기 "사원 관리 프로그램" 좌측의 아이콘은 원래 자바 아이콘이다. 그러나 이것을 원하는데로 바꿀수 있다. 최상위 프레임의 setIconImage(Image image) 메소드로 설정 가능하다. Image 객체를 받아내려면 Toolkit 클래스를 이용한다. JFrame f = new JFrame("사원 관리 프로그램");Toolkit toolkit = Toolkit.getDefaultToolkit();Image img = toolkit.getImage("open.gif");f.setIconImage(img); [출처] [자바][스윙] 윈도우 창 위쪽에 아이콘 바꾸기|작성자 카루 더보기
[Swing]FileDialog 파일 다이얼로그 파일 다이얼로그 이거 잘만 쓰면 물건이다. FileDialog fileD = new FileDialog(f, "열기", FileDialog.LOAD);FileDialog fileD = new FileDialog(f, "저장", FileDialog.SAVE); // 컴포넌트, 다이얼로그 타이틀제목, // 저장 버튼인지 열기버튼인지. 이와 같이 쓰면 생성자 부분에서 바로 다이얼로그가 떠서 파일을 선 택 하게 한다 ㅋ 선택하게되면 fileD 에 그게 기록이 남는 모양인데. 아래 메소드로 경로를 받아낼수 있다!. String fileD.getFile() //파일이름.확장자 를 받아온다.String fd.getDirectory() //선택한 파일의 경로를 받아온다.File[] fileD.getFiles() [출처.. 더보기
[Swing] JMenuBar 위에 메뉴줄 만들기 JMenuBar mb = new JMenuBar();JMenu mFile = new JMenu("File"); //파일 탭 을 만들고 miOpen = new JMenuItem("Open"); //파일 탭 안에 들어갈 아이템을 만듬mFile.add(miOpen); //파일 탭 안에 Open을 넣는다.miSave = new JMenuItem("Save");mFile.add(miSave);mFile.addSeparator(); //구분선 걍 줄하나 쭉 그어줌.miExit = new JMenuItem("Exit");mFile.add(miExit); mHelp = new JMenu("Help"); //Help 탭 만들기miAbout = new JMenuItem("About Notepad..."); //about .. 더보기
[Swing] Border 보더 BevelBorder bb = new BevelBorder(BevelBorder.RAISED);TitledBorder tb = new TitledBorder(bb, "로그인");p.setBorder(tb); [출처] [자바][스윙] Border 보더|작성자 카루 더보기
[Swing] 자주 쓰는 ActionListener 예제 addActionListener( ActionListenr listener) // 액션 리스너 호출 implements ActionListener //액션 리스너 구현 @Overridepublic void actionPerformed(ActionEvent e) { //액션 퍼폼드 오버라이드 e.getSource() // 이벤트를 호출한 메소드는 Object 형태로 리턴 한다. 형변환 해줘서 사용 하면 된다.} 액션 리스너는 버튼을 클릭 할때나. 텍스트필드에서 엔터를 쳤을때 등 다양한 경우에 작동된다. [출처] [자바]자주쓰는 ActionListener 예제|작성자 카루 더보기
[Swing] 컴포넌트별 포커스 옮기기 4가지 메소드가 있다. 근데 웃긴건 내가 지정한 컴포넌트로 가진 못하고 그 앞 뒤로 간다. 3,4번은 아마 순서가 지명되있는경우 그 싸이클상 앞 뒤를 말하는것 같다. 원하는 컴포넌트인스턴스로 매소드를 호출하면 된다. 1.Component.transferFocus(); 2.Component.transferFocusBackward(); 3.Component.transferFocusDownCycle(); 4.Component.transferFocusUpCycle(); [출처] [자바][스윙]컴포넌트별 포커스 옮기기.|작성자 카루 더보기
[Swing] JTabbedPane 위에 탭을 선택해서 페이지 넘기기 JTabbedPane 라는 패널이 있다. 위쪽에 탭이 나와서 원하는 페이지를 볼 수 있다. 물논 getContentPane() 으로 받아낸 Container 위에 올려야한다. JTabbedPane tab = new JTabbedPane(); tab.addTab("Login", new JPanel() ); tab.addTab("Input", new JPanel() ); tab.addTab("zz", new JPanel() ); //세개 추가하면 새개 추가됨 ㅋ this.con.add("Center", tab); //보더 레이아웃 상태라 Center에 이 Tab 판넬을 넣었다. //con 은 JFrame 객체에서 뽑아낸 Container 값이다. [자바][스윙] JFrame 위에 JPanel을 올릴수 없다 .. 더보기