○JDBC (Java Database Connectivity)

 ▷java에서 DB접근을 위한 표준 API

 ▷여러 DBMS (Database Management System)을 동일한 방법으로 접근하게 도와주는 API

 ▷해당 DBMS, DBMS접근을 위한 JDBC Driver가 필요하다.

 

 ▶접근 방법

  ▷import java.sql.*

  ▶Register JDBC driver

   ▷드라이버 종류

 

 

  ▶DB 연결

   ▷Connection conn = DriverManager.getConnection(DBMS 테이블, 사용자, 암호)

 

 

  ▶SQL 문장(쿼리) 정의, 사용

   ▷String sql = "SELECT ~~ FROM ~~ ..."

   ▷PreparedStatement - 같은 명령을 다른 매개변수로 여러 번 실행 가능

 

 

  ▶결과 획득

   ▷ResultSet rs = stmt.executeQuery(sql);

   ▷명령어에 따라 메소드가 다름

 

 

  ▶종료

 

 

 

※SQL 기초

'컴퓨터 언어 > java' 카테고리의 다른 글

Network Programming  (0) 2020.12.08
Stream  (0) 2020.12.01
Thread  (0) 2020.11.24
Process  (0) 2020.11.23
Exception  (0) 2020.11.19

●Client - Server Model

 ▷Client : 서버에 서비스를 요청

 

 ▶서버 : 클라이언트에게 서비스를 제공

  ▷Host : 서버 주소

  ▷Port : 서버의 서비스 특정

   ▷잘 알려진 Port

 

○Socket

 ▷java.net.Socket

 ▷Communication의 양 끝 Point를 의미

 ▷Host, port로 구성됨.

 ▶Client - Socket 연결

  ▷Socket (서버Host, 서버Port) : 연결 요청

  ▷getLocalAddress().getHostAddress() : 자신의 Host Address

  ▷getLocalPosr() : 자신의 Port - 가변적?

 

  ▷getInputStream() : 서버가 전송한 Stream 읽기.

 

 ▶Server 생성 - 하나의 Client만 허용

  ▷ServerSocket(Port) : 해당 Port로 서버 Socket 생성

  ▷serverSocket.accept() : Client와 Connection이 되면 return, Client Socket 얻어냄.

  ▷serverSocket.InetAddress() : Client 정보

 

 

 ▶다중 Client 서버

  ▷Thread 이용

 

 ▶Timeout 설정

  ▷연결 Timeout

  ▷모든 R/W에 대한 Timeout 설정

 

 ▶Web Data 받기

'컴퓨터 언어 > java' 카테고리의 다른 글

Database Programming  (0) 2020.12.10
Stream  (0) 2020.12.01
Thread  (0) 2020.11.24
Process  (0) 2020.11.23
Exception  (0) 2020.11.19

○Stream

 ▷data-processing operstions을 지원하는 Element Sequence

 ▷배열/컬렉션의 요소들을 쉽고 효율적으로 맵핑/필터링 가능 (filter, map, reduce, find, match, sort, ...)

 

 ▶Collection과의 차이점

  ▶Collection

   ▷모든 요소에 접근시에 반복문 (for/for-each)을 이용해서 순회해야 한다.

  ▶Stream

   ▷stream 내의 메소드를 이용해서 데이터들을 조작 가능하다.

 

 ▶생성

  ▶exploit values를 통해 생성

   ▷Stream.of(...)의 Static method를 통해 생성

 

  ▶Arrays를 통해 생성

   ▷Arrays.stream(array)

   ▷Stream.of(array)

 

  ▶Collection을 통해 생성

   ▷Collection.stream

 

 

  ▶파일 -> java.nio.file.Files 의 많은 Static methods

   ▷Files.lines : 줄단위로 Stream을 만듬.

 

  ▶iterate

   ▷매개변수 2개 : 시작, 증감 (limit, takeWhile 등으로 조건)

   ▷매개변수 3개 : 시작, 조건, 증감

  ▶generate

   ▷function reference를 통해 return 값으로 Stream을 만든다.

   ▷Lambda expression을 지원한다.

 

 

 ▶Operation Methods

  ▷대부분의 연산에 대해 Pipelining이 적용된다. (연산의 결과 = Stream, 입력으로 사용 가능)

  ▶Filtering

   ▷조건에 따라 Stream의 일부 element들을 가져온다.

 

   ▶filter

    ▷조건을 만족하는 element들의 stream을 반환

    ▷조건 : boolean을 리턴하는 함수형 인터페이스, 람다식으로 표현 가능

   ▶distinct

    ▷모든 요소들을 Unique하게 한다. (겹치는 element 제거)

 

   ▶takeWhile

    ▷조건을 불만족하는 element 전까지의 element들로 이루어진 Stream을 반환한다.

 

   ▶dropWhile

    ▷처음 조건이 만족한 이후의 element들로 이루어진 Stream을 반환한다.

   ▶limit

    ▷Stream에서 처음 몇개의 element만으로 새로운 Stream을 만든다.

 

 

 

  ▶sorted

   ▷Stream을 정렬함.

   ▷매개변수 없음 -> 정렬 객체에 Comparable 구현 필요

   ▷매개변수 Comparator -> 매개변수에서 Comparator 정의 필요

   ▷역순 -> .reversed()

 

  ▶map

   ▷Stream의 모든 element에 대해 적용되어, return 값으로 element를 덮어씌운다.

 

   ▶forEach

    ▷Stream의 모든 element에 대해 적용되지만, element 값에는 영향을 주지 않는다.

 

  ▶Matching

   ▷모든/일부 element가 조건을 만족하는지 확인한다.

   ▷조건 : boolean을 리턴하는 함수형 인터페이스, 람다식으로 표현 가능

   ▶anyMatch

    ▷하나라도 조건을 만족함.-> true 반환

   ▶allMatch

    ▷모두 조건을 만족함 (true)-> true 반환

   ▶noneMatch

    ▷모두 조건을 만족하지 않음 (false) -> true 반환

 

  ▶Finding

    ▷Stream에 element가 하나라도 있으면, 그 중 하나를 return한다.

    ▷Optional<T>의 형태로 return한다. -> isPresent() : 존재하는가? / get() : 값 접근

 

    ▶findAny

     ▷Stream의 무작위 element를 반환한다.

    ▶findFirst

     ▷Stream의 첫 element를 반환한다.

 

  ▶collect

   ▷stream을 List로 변환

   ▷Stream을 String으로 변환 (구분자, prefix, suffix)

 

  ▶count

   ▷Stream의 element 개수를 샌다.

 

'컴퓨터 언어 > java' 카테고리의 다른 글

Database Programming  (0) 2020.12.10
Network Programming  (0) 2020.12.08
Thread  (0) 2020.11.24
Process  (0) 2020.11.23
Exception  (0) 2020.11.19

○Thread

 ▷프로그래밍을 돕기 위해 동시에 독립적으로 실행되는 단위

 ▷process보다 가볍다. (한 Process는 여러 Thread를 가질 수 있다.

 

 

 ▶Thread 생성

  ▶1. Runnable Interface를 implement

   ▷public void run() 함수를 가지고 있다.

   ▷해당 함수가 종료되면, Thread는 종료된다.

   ▷만든 Runnable을 Thread의 생성자에 넣는다.

   ▷t.start() -> Thread 시작

 

  ▶Thread 상속

   ▷상속받은 class에서 run()을 정의한다.

   ▷해당 클래스의 객체를 만들고, start() -> 시작

 

 

 ▶Sleep - Thread.sleep(int ms)

  ▷Thread의 동작을 일시적으로 멈출 수 있다. (ms단위)

 

 

 ▶Interrupt - thread.interrupt()

  ▷해당 thread에서 interrupt 신호를 전달한다.

  ▷보통 thread를 종료시킬 때 자주 사용한다.

 

  ▶interrupt 동작 정의

   ▶catch (InterruptedException e)

    ▷interrupted하면 catch한다. (try ~ catch문)

 

   ▶thread.interrupted()

    ▷interrupt 당했다면 true, 아니면 false

    ▷if문에 넣어서 주로 체크한다.

 

 

 ▶Join - thread.join(int ms)

  ▷해당 thread가 끝날 때 까지 기다린다 (ms단위)

  ▷인자가 없거나, 0이라면 무한히 기다린다.

  ▷thread.isAlive()를 통해 살아있다면, join을 더 추가할수도 있다.

 

 

 ▶ReeentrantLock

  ▷import java.util.concurrent.locks.*

  ▷lock = new ReentrantLock()

  ▷Race Condition을 방지하기 위해 사용함.

   ▷Thread들은 한 Process에서 위치를 공유하기 때문에, 동시에 같은 변수/메소드를 참조하면 예상치 못한 결과가 일어날 수 있다.

 

  ▶lock(), unlock()

   ▷하나의 Thread가 bankLock.lock() 메서드를 호출하면, 다른 Thread는 lock()에 접근해도 unlock()되기 전까지 대기한다.

   ▷try 전에 lock을, finally에 unlock을 두고 try 내에 Critical section을 놓는다.

 

  ▶Condition Object

   ▷다른 쪽에서 signal을 보낼 때 까지 lock을 반환하고 대기할 수 있다.

   ▷condition = reentrantLock().newCondition()

   ▷condition.await() : signal을 받을 때 까지 대기한다.

   ▷condition.signalAll() : 모든 기다리는 Thread를 깨운다.

   ▷condition.signal() : 해당 condition를 깨운다.

 

  ▶synchronized

   ▷reentrantLock을 간단하게 표현 가능하다

 

 ▶ThreadLocal<T>

  ▷Thread는 위치를 공유하기 때문에, 같은 Thread Class는 변수들을 공유한다.

  ▷ThreadLocal<T> : Local 변수처럼 사용 가능

 

 

 ▶기타 메소드

  ▷Thread.currentThread() : 현재 Thread의 정보.

 

'컴퓨터 언어 > java' 카테고리의 다른 글

Network Programming  (0) 2020.12.08
Stream  (0) 2020.12.01
Process  (0) 2020.11.23
Exception  (0) 2020.11.19
Lambda Expression  (0) 2020.11.16

○Process

 ▷실행중인 프로그램

 

 ▶생성 : Process 클래스로 또 다른 프로그램을 실행 가능하다.

  ▷Process proc = Runtime.getRuntime().exec("프로그램명");

  ▷Process proc = new ProcessBuilder("cmd", "\c", "dir").start();

 

 ▶Input/Output/Error 상호작용

  ▷만들어진 프로세스와 input/output/error steams를 주거나 받을 수 있다.

  ▶InputStream 선언 : InputStream in = proc.getInputStream()

   ▷읽기 : in.read(buffer, off, len) - buffer는 byte[], byte[off]부터 len개, return: 읽은 byte 수

   ▷닫기 : in.close

 

  ▶OutputStream 선언 : OutputStream out = proc.getOutputStream()

   ▷읽기 : out.write(buffer) - buffer는 byte[], byte[off]부터 len개

   ▷닫기 : out.close

'컴퓨터 언어 > java' 카테고리의 다른 글

Stream  (0) 2020.12.01
Thread  (0) 2020.11.24
Exception  (0) 2020.11.19
Lambda Expression  (0) 2020.11.16
Collection  (0) 2020.11.16

+ Recent posts