728x90

조금 편히 봐도 되는 챕터 - 필요하면 찾아서 복붙
1. 정규 표현식 (Regular Expression)
- 문자열의 집합을 표현하는데 사용하는 형식 언어
- Perl 에서 처음 사용
- 많은 프로그래밍 언어가 정규 표현식 기능을 제공하고 있는데 언어 자체가 제공하기도 하고, 별도의 라이브러리 형태로 제공되기도 함
- 문자열의 패턴을 검사하기 위해서 사용
유효성 검사나 자연어 처리에서 많이 사용 - java에서는 java.util.regex 패키지에 맞는 Match 클래스와 Pattern 클래스 그리고, String 클래스에서 제공
- Web Programming에서는 java 보다는 javascript에서 많이 사용
1.1. 메타 문자
메타 문자 | 기능 | 설명 |
수직선 (|) | 또는 (or) | 항목들 중 하나를 선택하기 위해 구분 |
괄호 (()) | 그룹 묶기 | 연산자의 범위와 우선순위를 지정 |
물음표 (?) | 0회 또는 1회 | 0번 또는 1번까지의 발생을 의미 |
별표 (*) | 0회 이상 | 0번 이상 발생을 의미 |
덧셈기호 (+) | 1회 이상 | 1번 이상의 발생을 의미 |
{n} | n회 (이상) | 정확히 n번 (이상) 만큼 일치시킴 |
{m, } | m회 이상 | m번 이상 만큼 일치시킴 |
{m, n} | m회 이상 n회 (이상) | 적어도 m번 만큼 일치시킴 그러나 n번을 초과하여 일치키시지는 않음 |
{m, n}; | m회 이상 n회 이하 |
메타문자 | 기능 | 설명 |
. | 문자 | 문자 한 개와 일치시킴 |
[ ] | 문자들 | 여러 문자들 중 하나의 문자와 일치시킴 |
[^ ] | 부정 | 해당 문자들을 포함하지 않는 문자들을 찾음 |
^ | 처음 | 처음 시작하는 부분을 의미 |
$ | 끝 | 끝나는 부분을 의미 |
( ) | 하위 식 | 하위 식을 정의 |
₩w | "_"와 영숫자 | "_"를 포함한 영문자와 숫자를 일치시킴 |
₩W | 반대 | "_"와 영문자 그리고 숫자를 제외한 다른 문자열들을 일치 시킴 |
₩s | 공백 | 공백 문자와 일치시킴 |
₩S | 공백 제외 | 공백을 제외한 어떤 것이든 일치시킴 |
₩d | 숫자 | 숫자와 일치시킴 |
₩D | 숫자 제외 | 숫자가 아닌 항목을 일치시킴 |
1.2.
2. 입력받을 때는 반드시 유효성 검사 해야함
1. 패턴
2. 불용어 리스트
3. Network
java.net 패키지 사용
- 다른 컴퓨터와 통신을 하기 위해서는 다른 컴퓨터의 프로그램이나 자원에 접근하기 위한 주소를 알아야 함
- 프로그램에 접근할 때는 IP(컴퓨터를 구분하기 위한 주소)와 포트(프로세스를 구분하기 위한) 번호 또는 Domain을 알아야 함
IP와 포트번호를 알고 도메인으로 치환할 수 있어야 함 = DNS (Domain Name System)을 사용
3.1. 클라이언트 - 서버
- 서비스의 종류에 따라 파일 서버, 메일 서버, 어플리케이션 서버 등이 있음
- 서버가 서비스를 제공하기 위해 서버 프로그램 + 클라이언트가 서비스를 제공받기 위해 클라이언트 프로그램이 있어야 함
- 네트워크 구성시 전용 서버를 두는 것을 서버 기반 모델, 별도의 전용 서버 없이 각 클라이언트가 서버역할을 동시에 수행하는 것을 P2P(peer-to-peer) 모델이라고 함
3.2. IP
- 컴퓨터를 구분하기 위한 주소
- IP주소 = 네트워크 주소 + 호스트 주소 (네트워크 주소가 같다는 것은 두 호스트가 같은 네트워크에 포함되어 있음)
- 자바에서는 InetAddress 클래스 사용
더보기
<java />
package chapter16;
import java.net.*;
import java.util.Arrays;
public class InetAddressEx {
public static void main(String[] args) {
InetAddress ip = null; // InetAddress 클래스 사용
InetAddress[] ipArr = null;
//도메인으로 IP주소를 얻어 다양한 형태로 출력
try {
ip = InetAddress.getByName("www.naver.com"); // 도메인명을 통해 IP주소 얻음
System.out.println("getHostName(): " + ip.getHostName()); // www.naver.com
System.err.println("getHostAddress(): " + ip.getHostAddress()); // 223.130.192.247
System.out.println("toString(): " + ip.toString()); // www.naver.com/223.130.192.247
byte[] ipAddr = ip.getAddress(); // ip주소를 byte 배열로 반환
System.out.println("getAddress() : " + Arrays.toString(ipAddr)); // [-33, -126, -64, -8]
String result = "";
for (int i = 0; i < ipAddr.length; i++) {
result += (ipAddr[i] < 0 ? ipAddr[i] + 256 : ipAddr[i]) + ".";
}
System.out.println("getAddress()+256: " + result);
System.out.println(); //223.130.192.248.
} catch (UnknownHostException e) {
e.printStackTrace();
}
//호스트명과 IP주소 얻기
try {
ip = InetAddress.getLocalHost();
System.out.println("getLocalHost(): " + ip.getHostName()); //getLocalHost(): mycom
System.out.println("getHostAddress(): " + ip.getHostAddress());
System.out.println();
} catch (UnknownHostException e) {
e.printStackTrace();
}
//모든 IP주소 얻기
try {
ipArr = InetAddress.getAllByName("www.naver.com");
for(int i = 0; i < ipArr.length; i++) {
System.out.println("ipArr["+i+"] : " + ipArr[i]); //ipArr[0] : www.naver.com/223.130.192.247
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
3.3. URL
- 리소스에 접근하기 위한 주소를 표현하기 위한 것
- 프로토콜에 따라 통신에 사용하는 포트가 다름
- HTTP - 80
- HTTPS - 443
프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조 (생략 가능)
통신규약://서버이름:포트번호/저장된 서버상의 위치/접근하려는 자원의 이름?이후의 부분#이후의 부분
http://www.codechobo.com:80/sample/hello.html?referer=codechobo#index1
URI (Uniform Resource Identifier): 웹상의 모든 리소스를 식별하는 문자열 (가장 상위 개념)
URL (Uniform Resource Locator): 리소스가 위치한 주소를 나타내는 문자열 (HTTP, HTTPS 등 리소스에 접근하는 방법도 함께 포장)
▷ https://www.example.com/index.html"은 HTTPS 프로토콜을 사용하여 example.com 서버의 index.html 페이지에 대한 URL
URN (Uniform Resource Name): 리소스를 식별하기 위한 이름 (위치나 접근 방법과는 무관), 널리 사용X
- 자바에서는 URL 클래스 사용



- URLConnection: 어플리케이션과 URL간의 통신연결을 나타내는 최상위 클래스로 추상클래스
- 상속받아서 구현하는 클래스는 HttpURLConnection, JarURLConnection
- URL의 프로토콜이 http프로토콜이면 openConnection()은 HttpURLConnection을 반환
- https프로토콜이면 HttpsURLConnection을 반환, 이는 HttpURLConnection을 확장한 클래스
3.4. 통신 절차
2023.09.14 - [Study/Network] - [네트워크] socket
- 요청을 처리하는 쪽에서 포트번호를 가지고 소켓을 생성해서 시작
- 요청을 보내는 쪽에서 요청을 처리하는 쪽을 구별하기 위한 주소를 가지고 접속을 하고 요청을 전송
- 요청을 처리하는 쪽에서 요청을 보내는 쪽의 데이터(parameter)를 읽어서 처리를 수행한 후 처리 결과를 요청을 보내는 쪽으로 전송
- 요청을 전송하는 것을 request
- 요청을 처리해서 결과를 전송하는 것을 response
3.5. TCP 형태 - 클라이언트와 서버가 대화를 주고받는 것
더보기
(클라이언트가 서버에게 요청하면 서버가 다시 전송하는 것)
<java />
public class TCPServer {
public static void main(String[] args) {
//try ~ resources 구문으로 메모리 해제를 하지 않아도 됨
try(ServerSocket ss = new ServerSocket(9999);) {
System.out.println("서버 대기 중...");
<java />
blic class TCPClient {
public static void main(String[] args) {
//자기 컴퓨터에 전송하실 분은 127.0.0.1 입니다.
try(Scanner sc = new Scanner(System.in);) {
while(true) {
Socket socket = new Socket(
InetAddress.getByName("172.30.1.28"), 9999);
System.out.pri
- TCP 서버 생성
- TCPClinet 작성, 자기 컴퓨터에 전송할 때는 127.0.0.1 이나 localhost 라고 하면 됩니다.
- 외부의 컴퓨터에서 내 컴퓨터로 데이터가 전송이 가능하도록 할 때는 방화벽을 해제해 주어야 합니다.
오늘 하루
더보기
기억에 남는 부분
-
-
어려운 부분
-
-
문제 해결 부분
-
-
728x90
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] Enum(열거형) (0) | 2023.06.08 |
---|---|
진법 변환 / StringBuilder & StringBuffer / Arrays.stream (0) | 2023.05.07 |
[Java] Process - Thread, synchronized, deadLock, semaphore (0) | 2022.10.31 |
[Java] Comparable VS Comparator (0) | 2022.10.29 |
[Java] Nested Class, Lambda, Stream API, Optional (0) | 2022.10.28 |