mjeongriver
article thumbnail
Published 2022. 10. 31. 09:42
day25-java TIL/Java

IO: 파일 입출력, 네트워크, 화면 출력- 시간이 오래 걸리는 작업(스레드나 비동기로 처리해야 함)

연산: 시간이 짧게 걸리는 작업

 

1. Multi Thread

- 2개 이상의 스레드가 수행중인 상황, 대부분의 경우

1) Priority(우선 순위): 누가 언제, 자주

2) Thread Group: 여러개의 스레드 관리, semaphore

3) Mutual Exclusion(상호 배제)

- 하나의 스레드가 사용 중인 공유자원은 다른 스레드가 수정할 수 없다

- Locksynchronized로 해결

4) 생산자와 소비자 문제

- waitnotification으로 해결

5) Dead Lock

- 결코 발생할 수 없는 사건을 무한정 기다리는 것

 

2. 정규 표현식(Regular Expression)

1) 개요

- 문자열의 집합을 표현하는데 사용하는 형식 언어

- perl에서 처음 사용

 - 많은 프로그래밍 언어가 정규 표현식 기능을 제공하고 있으며 언어 자체가 제공하기도 하고 별도의 라이브러리 형태로 제공되기도 합니다.

- 문자열의 패턴을 검사하기 위해서 사용합니다. 유효성 검사나 자연어 처리에서 많이 사용

- 유효성 검사는 프로그래밍에서 많이 중요하고 반드시 수행해야 합니다.

- java에서는 java.util.regex 패키지에 있는 Match 클래스와 Pattern 클래스 그리고 String 클래스에서 제공합니다.

- Web Programming 에서는 java 보다는 javascript에서 많이 사용합니다.

 

3. Network - java.net

- 다른 컴퓨터와 통신을 하기 위해서는 다른 컴퓨터의 프로그램이나 자원에 접근하기 위한 주소를 알아야 합니다.

- 프로그램에 접근할 때는 IP(컴퓨터를 구분하기 위한 주소)와 포트(프로세스를 구분하기 위한) 번호 또는 Domain을 알아야 합니다.

1) 통신 절차

- 요청을 처리하는 쪽에서 포트번호를 가지고 소켓을 생성해서 시작

- 요청을 보내는 쪽에서 요청을 처리하는 쪽의 구별하기 위한 주소를 가지고 접속을 하고 요청을 전송

- 요청을 처리하는 쪽에서 요청을 보내는 쪽의 데이터(parameter)를 읽어서 처리를 수행한 후 처리 결과를 요청을 보내는 쪽으로 전송합니다.

- 요청을 보내는 것을 request라고 하고 요청을 처리해서 결과를 전송하는 것을 response 라고 합니다.

2) TCP 형태로 클라이언트와 서버가 대화를 주고받는 것(클라이언트가 서버에게 전송하면 서버가 다시 응답하는 것)

- TCP 서버 생성

- TCP client 작성: 자기 컴퓨터에 전송할 때는 127.0.0.1이나 localhost 라고 하면 됩니다. 외부의 컴퓨터에서 내 컴퓨터로 데이터가 전송이 가능하도록 할 때는 방화벽을 해제해 주어야 합니다.

- 마지막 사진은 챗봇 활용

** 알아야 할 것

1) 우리 회사에 필요한 기술이 있는가

2) 요즘 트렌드에 맞게 개발을 했는가

3) https, oauth2, 클라우드에 배포(Git 필수)

4)  Open API(Appliction Prrogrammin Interface, software Development kit

- 누구나 사용할 수 있도록 API(Ex. Data)를 공개(구글, 페이스북, 카카오, 네이버)

5) REST API Server(List Full)

cs-서버, 데이터, 쿼리, 결과

Ui-Client

로그인 하면 OAuth2 인증

6) 소켓 프로그래밍

웹 서버 →(요청), ←(응답) 웹 클라이트(클라이언트랑 서버 쪼개야 함)

웹은 응답이 끝나면 연결이 해제 됨으로 이전 상태를 알 수 없다.

웹 소켓: 웹과 소켓의 결합, 대화식으로 실행하고 빠른 응답

 

'TIL > Java' 카테고리의 다른 글

Optional 과 null  (0) 2023.06.22
StringBuffer, StringBuilder가 string보다 성능이 좋은 이유와 원리  (0) 2023.05.15
day24-java  (0) 2022.10.28
day23-java  (0) 2022.10.27
day22-java  (0) 2022.10.26
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그