프로그래밍/JAVA
-
[Java] swing프로그래밍/JAVA 2022. 8. 16. 12:34
GUI(Graphical User Interface)는 그래픽을 이용하여 사용자에게 이해하기 쉽고 사용하기 쉬운 입출력 인터페이스를 의미하며 마우스나 키보드를 이용하여 직관적으로 입출력이 가능하다. AWT는 Java1.0에 포함된 운영체제가 제공하는 네이티브 UI컴포넌트를 이용하는 자바 라이브러리로 자바 애플리케이션이 실행되는 운영체제에 따라 UI의 모양이 서로 모양이 다르고 종류도 제한적인 단점이 존재한다. swing은 자바의 GUI(Graphic User Interface) 프로그래밍에 필요한 각종 킷을 모아놓은 것으로 GUI의 기능들을 구현할 수 있는 2D, Drag&Drop 등 을 지원한다. AWT와 달리 자바 프로그래밍 자체적인 컴포넌트이므로 플랫폼에 관계없이 모양이 동일하게 사용된다. JFra..
-
[Java] 소켓 통신(socket)프로그래밍/JAVA 2022. 8. 15. 14:20
들어가기 앞서 관련 용어 정리 네트워크(Network) : 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용형태 인터넷(Internet) : 컴퓨터로 연결하여 TCP/IP 프로토콜을 이용하여 정보를 주고 받는 네트워크 IP(internet protocol) : 인터넷의 연결되어있는 모든 장치를 식별할 수 있도록 장비에게 부여되는 고유주소 포트(Port) : 컴퓨터나 통신장비에서 다른 장치에 물리적으로 접속되는 특정한 통로 소켓(socket) : 두 호스트 사이 연결, 어떠한 방식으로 통신을 할지 정해주는 것 버퍼(buffer) : 입출력을 수행하는데 있어 속도차이를 극복하기 위해 사용하는 임시 저장 공간. 프로그래밍이나 운영체제에서 CPU와 보조기억장치 사이에서 사용되는 임시 저장 공간을 뜻함..
-
[Java] 람다 표현식(lambda expression)프로그래밍/JAVA 2022. 8. 15. 13:51
람다 표현식은 Java SE 8부터 제공되어, 메소드를 하나의 식으로 표현한 것으로 메소드의 이름은 생략하여 표기하는 익명 메소드 중 하나이다. 람다 표현식을 사용하면, 불필요한 코드를 줄일 수 있고 코드의 가독성을 높여주는 장점이 있다. 람다 표현식을 작성하기 위해서는 ( -> ) 화살표 기호를 사용한다. (매개변수목록) -> { 함수몸체 } 람다 표현식을 작성할 때 유의 사항을 알아보면 1. 매개변수의 타입을 추론할 수 있는 경우에는 타입을 생략이 가능하다. 2. 매개변수가 하나인 경우에는 괄호를 생략할 수 있다. 3. 함수의 몸체가 하나의 명령문만으로 이루어진 경우에는 중괄호를 생략할 수 있다. 4. 함수의 몸체가 하나의 return 문으로만 이루어진 경우에는 중괄호를 생략할 수 없다. 5. ret..
-
[Java] 스레드 동기화(Thread Synchronization)프로그래밍/JAVA 2022. 8. 14. 21:40
멀티 스레드 프로세스에서는 다른 스레드의 작업에 영향을 미칠 수 있기 때문에, 진행중인 작업이 다른 스레드에 간섭을 받지 않게 하기 위해 동기화(Synchronization) 라는 작업이 필요하다. 동기화는 간섭받지 않아야 하는 문장 또는 메소드를 락(lock)을 걸어 단 하나의 스레드만 출입이 가능하게 해준다. 마치 음식점 주문을 한명씩 받는 듯한 모습을 떠올리면 이해하기 쉽다. 멀티 스레드 프로그램에서 단 하나의 스레드만 실행 할 수 있는 코드 영역을 임계영역이라고하며, 자바에서 임계영역을 지정하기 위해 동기화 메소드를 제공한다. 스레드가 객체 내부의 동기화 메소드를 실행하면 즉시 객체에 잠금을 걸어 다른 스레드가 동기화 메소드를 실행 하지 못하도록 한다. 동기화 메소드를 만들기 위해서는 메소드 선언..
-
[Java] 스레드(thread)프로그래밍/JAVA 2022. 8. 14. 21:22
운영체제에서는 실행중인 하나의 애플리케이션(프로그램)을 프로세스라고 부르며, 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는것이 프로세스의 개념이다. 스레드는 하나의 프로세스 내부에서 독립적으로 실행되는 작업단위로 운영체제에 의해 관리되는 하나의 작업 혹은 Task를 의미한다. 다중 스레드 작업시에는 각 스레드간 정보를 주고 받을 수 있어 처리 과정의 오류를 줄일 수 있다. 단, 프로세스간에는 정보를 주고 받을 수 없다. JVM에 의해 하나의 프로세스가 발생하고 main() 문 안에 실행문들이 하나의 스레드를 발생한다. main() 외에 또 다른 스레드를 만들려면 Thread 클래스 상속받거나 Runnable 인터페이스를 구현하면되고 두 방법 ..
-
[Java] 싱글톤(singleton) 패턴을 활용한 DB접속프로그래밍/JAVA 2022. 8. 12. 23:32
싱글톤 패턴은 디자인 패턴 중 하나로 객체의 인스턴스가 단 한개만 생성되어 사용하는 것을 의미하며, 메모리 측면에서 공유자원이기 때문에 메모리 낭비를 방지할 수 있다. 이런 패턴은 프로그램 내에서 하나로 공유해야하는 객체를 싱글톤 패턴으로 처리하여 모든 사용자가 해당 객체를 공유하여 사용할 수 있도록 할 때 사용된다. 싱글톤 패턴을 사용하여 BD에 연결하는 코드를 다른 클래스로 만들어 사용하고 싶을 때 사용할 수 있도록 코드를 작성해보자. import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Dbconn { private static Connection conn; public ..
-
[Java] DB와 연동하기프로그래밍/JAVA 2022. 8. 12. 23:09
JAVA 에서 DB와 연동하기 위해서는 JDBC(Java Database Connectivity) 라이브러리를 개발환경에 맞게 추가해줘야한다. JDBC란 자바에서 DB 소프트웨어와 연결하여 프로그램을 개발하기 위해 사용하는 API로 JDBC Driver는 https://dev.mysql.com/downloads/connector/j/ 에서 다운로드 받으면 된다. 이클립스에서 JDBC 드라이버를 추가하는 방법으로는 먼저, 라이브러리가 준비 되어있다면, 프로젝트 파일에서 마우스 우클릭하고 Build Path -> Configure Build Path 에 들어간다. Java Build Path에서 Libraries 탭을 누르고 Add External JARs를 연다. 준비한 라이브러리 파일을 불러와 등록하면 ..
-
[Java] 제네릭(Generic) 타입프로그래밍/JAVA 2022. 8. 11. 23:08
제네릭은 클래스 구현할 당시 타입을 확정적으로 정하지 않고 변수의 모습으로 남겨놓는 것을 의미한다. 그리고 클래스 객체를 생성 시, 남겨놓은 타입을 기재하여 타입을 확정한다. 제네릭은 원래 최상위 타입인 Object 타입으로 객체를 받아 사용하였지만 대부분의 클래스와 메소드에서 반환 시 반환 타입을 원하는 타입으로 타입 변환을 해야 하는 번거로움이 있어 제네릭의 개념이 등장하였다. // 타입을 변수 T로 비워놓은 제네릭 클래스의 모습 public class Hello { // T : 타입 private T data; public void set(T data) { this.data = data; } public T get() { return data; } } // 객체 선언시 타입 설정 Hello strH..