IO: 파일 입출력, 네트워크, 화면 출력- 시간이 오래 걸리는 작업(스레드나 비동기로 처리해야 함)
연산: 시간이 짧게 걸리는 작업
1. Multi Thread
- 2개 이상의 스레드가 수행중인 상황, 대부분의 경우
1) Priority(우선 순위): 누가 언제, 자주
2) Thread Group: 여러개의 스레드 관리, semaphore
3) Mutual Exclusion(상호 배제)
- 하나의 스레드가 사용 중인 공유자원은 다른 스레드가 수정할 수 없다
- Lock과 synchronized로 해결
4) 생산자와 소비자 문제
- wait와 notification으로 해결
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 |