본문 바로가기

전체 글142

자바 Swing으로 GUI 만들기 자바의 GUI를 만드는데에는 AWT와 Swing이 있다. Swing은 AWT보다 컴포넌트가 많고, AWT보다 가볍기 때문에 보통 Swing을 사용한다. AWT 자바가 처음 나왔을 때 함께 배포된 패키지로 많은 GUI 컴포넌트를 가지고 있다. 컴포넌트들은 운영체제의 도움을 받아 출력을 하기때문에 운영체제의 리소스를 많이 소모하여 운영체제에 부담을 많이 준다. AWT 버튼은 실행되는 운영체제에 따라 서로 다른 모형으로 그려진다. Swing AWT 기술을 기반으로 작성된 라이브러리이다. AWT와 달리 순수하게 자바언어로 작성되어 있다. 스윙 컴포넌트들은 경량 컴포넌트라고도 한다. 운영체제의 도움을 받지 않고 구현되기 때문에 운영체제와 관계없이 항상 동일하게 작동하며 동일한 모양으로 그려진다. 스윙은 모든 AW.. 2019. 3. 11.
자바 숫자야구 소스 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586import java.math.*;import java.util.Scanner; public class NumberBaseball { static int answer[] = new int[3]; static int input[] = new int[3]; static int count = 0; //몇번만에 성공하였는지 체크하기 위한 변수 static int strike; static int ball; static voi.. 2019. 3. 7.
자바 멀티 쓰레드(Thread) 동기화 예제 자바에서 멀티스레딩을 하게 되는 경우 같은 프로세스 내의 자원을 공유하여 작업하기 때문에 서로의 작업에 영향을 줄 수 있어 동기화를 해주어야한다. 스레드의 동기화의 방법은 임계영역을 지정하고 하나의 스레드만 임계영역에 접근하게 해주는 것이다. synchronized 동기화 객체 동기화 synchronized(객체 참조 변수) { ... } 메소드 동기화 synchronized void test(){ ... } 객체 동기화 예제 이전에 https://ming9mon.tistory.com/43 에서 사용했던 소스에서 synchronized만 추가해주면 된다. import java.lang.Thread; class Sum{ int num=0; int sum(){ for(int i=0;i 2019. 3. 5.
자바 쓰레드(Thread) 쓰레드란? 스레드란 실행 단위다. main() 메소드를 만들면 main() 메소드룰 실행하는 하나의 스레드가 생긴다. 스레드를 사용하게 되면 보다 빠른 처리가 가능하다. 하나의 응용프로그램을 여러 개의 스레드로 구성하면 스레드 사이의 문맥 교환 시 작업량이 작고 시간이 짧은 장점을 가진다. 인터넷 브라우저로 예를 들면 멀티 스레딩을 통해 검색을 하며 인쇄도 할 수 있고, 인터넷으로 영화도 볼 수 있다. 만약 인터넷 브라우저가 싱글 스레드로 구성되어 있다면 검색을 하는중에는 영화는 볼 수 없으며 인쇄도 할 수 없다. Thread의 상태 NEW : 스레드가 객체가 생성됨, 아직 실행되지 않은 상태 RUNNABLE : 스레드가 실행되기 위한 준비단계 WAITING : 다른 스레드가 통지할 때까지 기다리는 상태.. 2019. 3. 1.
자바 파일 입출력 과 입출력 스트림 자바에는 바이트 스트림과 문자 스트림이 존재한다. 바이트 스트림 바이트 스트림은 입출력되는 바이트의 바이너리 값을 있는 그대로 처리한다. 그러므로 스트림에 들어오는 데이터가 문자이든 단순 바이너리 정보이든 상관없이 처리할 수 있다. 문자는 물론 이미지나 오디오 같은 파일도 읽을 수 있다. [ 바이트 스트림 계층 구조 ] 바이트 스트림 파일 읽고 쓰기 예제 import java.io.IOException; import java.io.FileInputStream; import java.io.FileOutputStream; public class test{ public static void main(String[] args) { try { FileOutputStream out = new FileOutputSt.. 2019. 2. 27.
자바 Jsoup를 이용한 웹 크롤링 예제 크롤링 라이브러리 Jsoup 크롤링을 위한 라이브러리는 많지만 그 중 Jsoup를 이용한 크롤링을 소개하고자 한다. Jsoup이란 자바로 만들어진 HTML parser다. Jsoup는 DOM 구조를 추적하거나 CSS 선택자를 사용하여 데이터를 찾아 추출할 수 있다. Jsoup 라이브러리 추가 https://jsoup.org/download 에 접속하여 jsoup-?.??.?.jar 파일을 다운받아 준다. 해당 프로젝트 우클릭 -> Properties -> Java Build Path -> Add External JARs -> 다운받은 Jar파일 추가 Jsoup을 이용한 크롤링 예제 CGV를 크롤링하여 원하는 값만 가져오는 예제를 만들것이다. CGV 홈페이지에서 순위와 영화이름을 가져와 보자. import.. 2019. 2. 25.
자바 제네릭(generic) Generic의 사전적 뜻을 찾아보면 포괄적인 이라는 뜻이 있다.Generic을 사용하게 되면 컴파일할 때 컴파일러가 타입캐스팅을 해준다. 그렇기 때문에 타입만 다르고 코드의 내용이 같을 때 코드의 재사용성이 좋아진다. 제네릭 클래스 작성 class t1{//제네릭 클래스 t1, 타입 매게 변수 T와 ST data;S data2;void set(T a,S s) {data=a;data2=s;}T getT() {return data;//T타입의 값 리턴}S getS() {return data2;//S타입의 값 리턴}} public class test{public static void main(String[] args) {t1 t = new t1();t.set(1,"aa");System.out.println(.. 2019. 2. 23.
자바 컬렉션(Collection)과 Iterator 자바의 컬렉션은 대량의 데이터를 처리할 때 사용한다. 컬렉션의 인터페이스에는 HashSet, Vector, AraayList, Stack 등이 있으며 Map 인터페이스에는 HashMap등이 있다. List 순서가 있으며, 데이터의 중복을 허용한다. ArrayList : 가변의 길이를 가지고 있으며, 많은 데이터를 처리시 성능이 떨어지지만 각 데이터에 대한 인덱스를 가지고 있어 검색은 빠르다. Vector : 비교적 성능이 좋지 않고 무겁기 때문에 잘 사용하지 않는다. LinkedList : 데이터의 삽입 삭제는 빠르지만, 검색은 느리다는 단점이 있다. Stack : LIFO(Last in first out)으로 구현되어 있다. Set 데이터의 순서가 없으며, 중복을 허용하지 않는다. HashSet : 가.. 2019. 2. 22.
자바 인터페이스(interface) 인터페이스란 서로 다른 하드웨어 장치들이 상호 접속하여 데이터를 주고받을 수 있는 규격을 말한다.인터페이스의 개념이 소프트웨어에도 적용되어 규격화된 부품 모듈로 만들고 서로 인터페이스가 맞는 모듈을 조립하듯이 응용프로그램을 작성할 수 있다. 자바의 인터페이스 모든 메소드가 추상 메소드이다.상수 필드만 포함 가능하다.다중 상속이 가능하다.모든 메소드는 Public이며 생략이 가능하다.상수도 public static final을 생략하여 선언할 수 있다.다른 인터페이스에 상속될 수 있다. 인터페이스 상속 인터페이스끼리 상속할 때는 extends를 사용하며 클래스에서 상속받을 때에는 implements를 사용한다. interface I1{} interface I2{} interface I3 extends I1.. 2019. 2. 21.