Programming/Java 썸네일형 리스트형 [swing] Event Dispatch Thread Swing(정확하게는 AWT)의 GUI 이벤트는 event dispatch thread라는 특수한 스레드에서 처리되며, Swing 객체의 메소드는 대부분 thread-safe하지 않기 때문에1 모든 Swing 이벤트 핸들링과 Swing 프레임웍을 다루는 코드 대부분은 event dispatch thread 상에서 실행되어야 한다.2 따라서 일반적인 Swing 애플리케이션의 main 메소드는 GUI를 구동하는 Runnable 객체를 생성하여, event dispatch thread에서 실행되도록 요청(invoke)하는 코드가 된다. Swing의 event dispatch thread에 이런 실행을 요청하는 방법은 SwingUtilities 클래스의 invokeLater 메소드3와 invokeAndWait .. 더보기 serializable 직렬화 컴퓨터에 저장했다가 다음에 다시 꺼내 쓸 수는 없을지 또는 네트웍을 통해 컴퓨터 간에 서로 객체를 주고 받을 수는 없을까라고 고민해 본 적이 있는가? 과연 이러한 일들이 가능할까?가능하다. 이러한 것을 직렬화가 처리해준다. 1. 직렬화란 직렬화(스트림으로)란 객체를 데이터 스트림으로 만드는 것을 뜻한다. 즉, 객체에 저장된 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환하는 것을 말한다.반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 역직렬화(객체로)라고 한다.객체 스트림은 프로그램 메모리상에 존재하는 객체를 직접 입출력해 줄 수 있는 스트림으로 현재 상태를 보존하기 위한 영속성을 지원할 수 있다.자바에서 객체 안에 저장되어 있는 내용을 파일로 저장하거나 네트워크를 통하여 다른 곳으로.. 더보기 Thread Synchronized 공유 아래와 같은 방식으로 run()에서 공유할 객체에 접근하는 것이 가능해진다. 예) 쓰레드가 객체를 공유하게 되는 방식 1 - Runnable 인터페이스 상속?12345678910111213141516171819202122232425262728import java.util.*; class example { public static void main(String[] args) { RunnableImpl r = new RunnableImpl(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); t1.start(); t2.start(); }} class RunnableImpl implements Runnable { int iv = 0; @Override pu.. 더보기 vector 여기서는 2D 벡터를 쉽게 사용할 수 있는 클래스를 생성하려고 한다. 이 클래스는 Vector2라고 부르겠다. 이 클래스에는 벡터의 x, y 요소를 포함하기 위한 두 개의 멤버가 있어야 한다. 추가로 다음과 같은 기능을 하는 메서드도 제공해야 한다.벡터의 덧셈과 뺄셈스칼라를 사용한 벡터 요소의 곱셈벡터 길이의 측정벡터의 정규화벡터와 x축 사이의 각도 계산벡터의 회전자바에는 연산자 오버로딩 기능이 없으므로 Vector2 클래스를 사용하기 쉽게 하려면 자체 메커니즘을 만들어야 한다. 이 메커니즘은 다음과 같이 구현하는 게 좋다.Vector2 v = new Vector2(); v.add(10,5).mul(10).rotate(54); Vector2 메서드 각각이 벡터 자체에 대한 참조를 반환하게 하면 이를 쉽게.. 더보기 String 다음과 같은 사진에서, s1과 s2가 같은 경우 출력 되는 문장은 무엇일까? 당연히 두 문장 모두 true를 반환한다. 그러나 s1과 s2는 분명 다른 변수이다. 왜 저러한 결과가 나오는 것일까 출력문에 들어가는 문장은 주소를 비교하는 문장이다. 그러므로 저 결과값을 통해 알 수 있는 사실은 주소값이 같다는 의미가 되는 것인데, 기존 우리가 알고 있는 상식과는 매우 다른 이야기이다. 왜 그러한 것일까 자바에서는 어떠한 변수를 생성하면 new라는 명령어를 사용해야 한다. new라는 명령어를 사용함으로 인해 메모리에 있는 힙에 공간을 할당하여 정보를 저장하게 되는데, 해당 코드에서는 new를 사용하지 않았다. 그 말은 힙에 공간을 할당하지 않는다는 것이다. 그렇다면 해당 변수는 어디에 저장되는가? 문자열이 .. 더보기 equals, hashcode equals() 와 hashcode()equals 는 두 객체의 내용이 같은지, 동등성(equality) 를 비교하는 연산자hashCode 는 두 객체가 같은 객체인지, 동일성(identity) 를 비교하는 연산자 다음과 같은 클래스가 있을때 equals() 를 이용한 두 객체의 동등성 비교는 올바른 결과가 나오지 않는다. public class Person { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { thi.. 더보기 Singletone pattern / Synchro * Singleton Pattern (싱글턴 패턴) - 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어진다. - 어디서든지 그 인스턴스에 접근할 수 있도록 한다. - 클래스에서 자신의 단 하나 뿐인 인스턴스를 관리하도록 만들면 된다. 싱글턴 패턴은 인스턴스가 하나 뿐인 특별한 객체를 만들 수 있게 해주는 패턴이다. 주로 쓰이는 용도는 아래와 같다. - 스레드 풀, 캐시, 대화상자, 사용자 설정, 디바이스 드라이버 등등 객체가 전체 프로그램에서 오직 하나만 생성되어야 하는 경우 그럼 전역 변수로 static 으로 선언해서 사용하면 되지 않을까? 만약 전역 변수로 객체를 생성하면 어플리케이션이 실행 될 때 객체가 생성 될 것이다. 그러나 그 객체가 자원을 많이 차지 한다면 사용도 되기 전에, 괜히 자원.. 더보기 override & overload [오버라이딩 & 오버로딩] 1. 다형성 자바에서는 다형성을 지원하기 위한 기능으로 override & overload 기능이 있다.overload - 같은 이름의 메소드를 여러개 가지면서 매개변수의 유형과 개수가 다르면 다른 메소드로 인식하여 자바 내부에서 판단해주는 기술.override - 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용하도록 해주는 기술. override , 재정의라고 한다. 이름이 비슷해 헷갈리기 쉬운 개념인데 확실히 알고 가야 객체지향 기반의 자바에서 중요한 3 요소를 이해할 수 있으니 잘 알아둬야 한다. 1-1. overload오버로딩(overloading)은 메소드 오버로딩과 생성자 오버로딩이 있다. 그러나 결국 같은 개념으로서 같은 이름의 함수를 여러개 정의하고 매개변수의 유형과 갯수.. 더보기 상속 - 2 1. 상속과 생성자 부모 클래스의 생성자가 없을 시에, 자식 클래스에게 부모 클래스를 상속시키려고 하면 에러메세지가 뜬다.이를 이용하여 상속에는 생성자가 관련되어 있음을 알 수 있다. 에러메세지를 읽어보면 부모클래스에 기본 생성자가 정의되지 않았다는 내용의 에러 메세지를 뿜는다. 강제로 A클래스를 호출해보면 A의 기본 생성자가 없다는 메세지가 뜬다. 그 이유는 부모클래스와 자식클래스의 상속 관계에서 부모클래스의 생성자를 먼저 실행하기 때문이다. 생성자를 이용해 부모클래스를 호출해 정보를 사용하는 시스템이라는걸 알 수 있는 부분이다. 결국 계속해서 자식은 부모를 호출하며, 부모클래스는 자신의 부모클래스를, 또 그 위 클래스를 연속해서 호출하게 되는데 이것을 연쇄 호출이라 한다. 그렇다면 맨위 클래스, 그러.. 더보기 상속 1. 개념 자바에는 상속이라는 개념이 있다.A extends B 라고 표현하며, A가 B를 상속한다. 라는 의미이다. 일상생활의 상속과 비슷한 의미로 이해하면 편하며, 그렇기 때문에 B에서 생성된 변수나 메소드를 똑같이 사용 가능하나 역으로 A에서만 생성된 변수 & 메소드를 B에서 사용하는 것은 불가능하다. extend의 영사전적 의미는 확대하다. 넓히다. 의 의미로서. 이 의미를 생각하고 공부하면 이해하기가 쉽다.A를 자식 클래스, B를 부모 클래스라고 할 때, 부모가 가지고 있는걸 자식이 사용하면서 자식이 개인적인 물품을 사용하는 방식이라 이해하면 된다. B에서 쓰는 변수와 메소드는 A에서 상속받아 사용이 가능하며, 또한 A에서 추가로 변수와 메소드의 생성이 가능하다. 위 사진에서 Employee 클.. 더보기 이전 1 2 다음