즐겁게!! 자신있게!! 살아보세!!

재밌는 인생을 위하여! 영촤!

Language_Study/JAVA 25

[JAVA, App] 24.DB연결

관계형 데이터베이스 인 오라클 사용 1.프로그래밍 언어에서 관계형 데이터베이스를 사용하는 방법 1) 언어가 제공하는 기능만을 이용해서 구현 - Java의 경우는 JDBC 그리고 윈도우는 ODBC 등 2) 프레임워크를 이용해서 구현 - 언어가 제공하는 기능을 편리하게 사용할 수 있도록 만들어진 프레임워크 이용 SQL Mapper: Java 코드와 SQL을 분리해서 작성하는 구조, MyBatis(iBatis가 예전 이름)가 대표적 성능은 떨어지지만 쉬워서 SI(시스템 통합 - 기업의 전산화, 외주를 많이 줌)에서 많이 사용 Object Relation Mapper 최근에 많이 사용하는 프레임워크로 하나의 행을 하나의 인스턴스와 매핑하는 프레임워크 하나의 테이블을 하나의 클래스와 매핑 데이터베이스에 대한 구조..

Language_Study/JAVA 2020.12.28

[JAVA, App] 23.Design Pattern

Design Pattern 객체의 사용 용도에 따라 클래스를 디자인하는 것1.생성과 관련된 패턴 1) Singleton 인스턴스를 1개만 만들 수 있도록 클래스를 디자인 하는 것 관리자 클래스(Controller, Manager)나 애플리케이션 전체가 공유해야 하는 공유 데이터를 갖는 클래스 또는 서버에서 클라이언트의 요청을 처리하는 클래스 등은 일반적으로 인스턴스를 1개만 만들어서 사용 java.lang.Runtime 클래스가 이 패턴으로 디자인 2) Decorator Pattern 외부에서 데이터를 주입받아 인스턴스를 생성하는 구조 하는 일은 유사한데 일을 수행해야 하는 대상이 여러가지 종류일 때 사용하는 패턴 작업을 수행하는 대상을 클래스 내부에서 직접 생성하지 않고 외부에서 생성한 후 주입받는 형..

Language_Study/JAVA 2020.12.28

[JAVA, App] 22.Stream API

스트림 API java.io 패키지에 있는 스트림은 입출력을 위한 스트림 java.util.stream 패키지의 스트림은 Collection에 대한 작업을 위한 스트림 - 1.8 버전에서 추가 기존에는 동일한 자료형의 데이터 여러 개를 다룰 때 Collection 이나 배열을 이용 Collection 이나 배열을 이용하게 되면 코드가 길어지고 재사용성이 떨어집니다. Collection 과 배열에 있는 동일한 작업을 수행하는 메소드가 이름은 같은데 사용방법이 조금씩 다릅니다. 예를 들면 List 의 정렬을 위한 sort 메소드는 instance 메소드인데 배열의 정렬을 위한 메소드는 Arrays 클래스의 sort 라는 static 메소드입니다. 배열의 데이터를 하나씩 가져올 때는 [인덱스]를 이용하고 Li..

Language_Study/JAVA 2020.12.28

[JAVA, App] 21.Lambda

람다(Lambda) 자바에서의 람다는 함수형 프로그래밍을 지원하기 위해서 1.7에서부터 지원하기 시작한 이름없는 함수 메소드가 하나 뿐인 인터페이스를 구현해서 사용할 때 람다를 이용해서 대입하는 것이 가능 Intelli J 나 Android Studio 의 경우 메소드가 하나 뿐인 인터페이스를 anonymous를 이용해서 작성하면 람다로 자동 수정됩니다. 이전의 자바는 완전한 객체 지향 언어라서 메소드의 매개변수로 함수를 대입할 수 없었습니다. 누군가에게 작업만을 수행해달라고 요청을 해야 하는 경우 자바는 객체를 만들어서 메소드 형태로 대입한 후 요청을 했습니다. 이런 이유로 자바로 작업을 요청하는 경우 시스템이 무거워졌습니다. 이러한 문제를 해결하기 위해서 등장했던 언어들이 jvm을 사용하는 Scala..

Language_Study/JAVA 2020.12.28

[JAVA, App] 20.Parsing

XML Parsing RSS(Really Simple Syndication, Rich Site Summary): 빠른 속도로 변경되는 데이터를 제공하기 위한 서비스로 예전에는 XML을 많이 사용 XML: 태그 형식으로 표현하는 데이터 포맷 XML 의 해석은 XML 상단에 DTD가 있으면 DTD가 하고 없으면 개발자가 해석 HTML은 브라우저가 해석하기 때문에 우리가 원하는 내용만 골라서 보는게 안되고 출력을 직접 하게 되면 화면크기에 따라 원하는 모양으로 볼 수가 없습니다. 데이터를 제공해서 보고자 하는 쪽에서 원하는 것만 골라서 원하는 크기로 볼 수 있도록 해줍니다. 1.XML Parsing DOM(Document Object Model) Parser 이용 내용을 메모리에 트리 형태로 전부 펼쳐놓고 원..

Language_Study/JAVA 2020.12.28

[JAVA, App] 19.통신

java.net.InetAddress ip 정보를 저장하는 클래스 static 메소드인 getLocalHost(), getByName(String hostname), getAllByName(String hostname) getLocalHost(): 자기 컴퓨터의 IP 정보를 리턴 getByName은 host의 ip 정보 1개를 리턴 getAllByName은 host의 모든 ip 정보를 리턴 소켓 통신 Socket: NIC(Network Interface Card - LAN Card)를 추상화한 클래스 네트워크 프로그래밍이라는 용어 대신에 Socket Programming 이라고도 합니다. 1.통신 방법 1) TCP 프로토콜을 사용하는 스트림 소켓 2) UDP 프로토콜을 사용하는 데이터그램 소켓 2.TCP..

Language_Study/JAVA 2020.12.27

[JAVA, App] 18.Stream

File 클래스 파일을 생성하고 삭제 그리고 파일에 대한 정보를 리턴하는 클래스 1.생성자 File(String 파일경로): 파일경로를 가지고 생성 File(String parent, String child): parent 와 child를 조합해서 생성 File(File parent, String child): parent 와 child를 조합해서 생성 2.파일 경로 1) 절대 경로 : 루트로부터의 경로 windows는 디렉토리 기호로 \ 나머지 운영체제는 / 절대경로는 소스 상에서 등장하지 않는 것이 좋습니다. 개발환경에서 운영환경으로 이행할 때 소스의 수정을 유발할 수 있습니다. 절대경로를 사용해야 한다면 다른 파일이나 데이터베이스에 작성해두고 불러서 사용하는 형태로 작성해야 운영환경으로 이행할 때 ..

Language_Study/JAVA 2020.12.27

[JAVA, App] 17.자바GUI

Java GUI 1.awt 운영체제의 자원을 이용해서 GUI 프로그래밍 운영체제 별로 다르게 출력될 수 있습니다. 운영체제에 종속적이라고 느리고 무겁습니다. 2.swing jvm 자원을 이용해서 GUI 프로그래밍 운영체제에 독립적이고 속도가 awt 보다는 빠릅니다. swing 의 대부분의 클래스는 awt로부터 상속받았습니다. 3.javaFX 가볍고 풍부한 UI 제공 레이아웃, 스타일, 애플리케이션 로직의 분리: MVC 구현 html 이나 css 도 사용이 가능 swing으로 만들어져 있는 많은 애플리케이션들이 javaFX로 변환되고 있는 중 4.awt 와 swing의 이벤트 처리 방식이 안드로이드 이벤트 처리 방식 awt 와 swing은 이벤트 처리 클래스가 별도의 클래스로 존재하는데 안드로이드에서는 뷰..

Language_Study/JAVA 2020.12.27

[JAVA, App] 16.이벤트처리

Event 처리 Event는 외부에서 발생하는 사건 자바의 awt 나 swing의 이벤트 처리는 Listener 인터페이스나 Adapter 클래스가 처리합니다. 1.이벤트 처리 방법 처리하고자 하는 이벤트의 Listener 인터페이스를 implements 하거나 Adapter 클래스를 상속받은 클래스의 인스턴스를 생성 컴포넌트.add이벤트리스너(앞에서 생성한 인스턴스); 이러한 방식의 처리를 Delegate(위임) 를 처리 방식 이벤트가 발생한 객체가 이벤트를 처리하는 것이 아니고 이벤트가 발생한 객체가 다른 객체에게 이벤트 처리를 위임하는 방식 컴포넌트는 출력에만 집중하고 다른 작업은 별도의 객체가 처리하는 것이 유지보수에 유리 이벤트 처리하는 메소드를 확인 이 메소드의 매개변수를 이용하면 이벤트가 발..

Language_Study/JAVA 2020.12.27

[JAVA, App] 15.MutualExclusion

Mutual Exclusion 하나의 스레드가 수정 중인 공유자원을 사용이 끝나기 전에 다른 스레드가 수정하면 안된다. 1.volatile 변수 앞에 붙이는 예약어로 변수가 연산에 사용될 때 원자성을 보장 원자성: 작업이 완전히 끝나기 전에는 다른 작업이 끼어들 수 없다. 32bit 시스템에서 64bit 자료형인 long, double 을 멀티 스레드 환경에서 사용하다 보면 작업이 완료되기 전에 다른 스레드에서 사용해서 잘못된 결과를 사용할 수 있습니다. 이 경우에 volatile을 붙여주면 위와 같은 상황이 발생하지 않습니다. 2.synchronized 메소드 메소드 결과형 앞에 synchronized를 붙이면 메소드를 동기화해서 실행 이 메소드가 완료되기 전에는 다른 스레드가 수행될 수 없도록 합니다..

Language_Study/JAVA 2020.12.27