Java
-
[Java] 크롤링(Crawling)프로그래밍/JAVA 2022. 8. 17. 12:26
Crawling 혹은 scraping은 인터넷 또는 컴퓨터에 나눠 저장되어있는 문서를 수집 및 추출하여 색인으로 포함시키는 기술이다. 크롤링하는 프로그램을 크롤러(crawler)라고 부른다. 크롤링 하기위해서는 https://jsoup.org/download 페이지에서 관련 라이브러리를 다운받으면된다. Download and install jsoup Download and install jsoup jsoup is available as a downloadable .jar java library. The current release version is 1.15.2. What's new See the 1.15.2 release announcement for the latest changes, or the c..
-
[Java] LocalDateTime프로그래밍/JAVA 2022. 8. 16. 12:59
java.time 패키지에는 날짜를 표현하는데 사용되는 LocalDate 클래스와 시간을 표현하는데 사용되는 LocalTime 클래스, 날짜와 시간을 동시에 출력하는 LocalDateTime 클래스가 있다. now() 메소드는 현재 날짜와 시간을 객체로 생성하여 반환한다. of() 메소드는 특정 날짜와 시간을 지정하여 객체로 생성하여 반환한다. LocalDateTime now = LocalDateTime.now(); System.out.println(now); LocalDateTime targetTime = LocalDateTime.of(2022,01,01,10,22,00); System.out.println(targetTime); /* 실행결과 2022-08-16T12:30:00.000 2022-01-..
-
[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 ..