원지의 개발
article thumbnail
728x90

조금 편히 봐도 되는 챕터 - 필요하면 찾아서 복붙

정규 표현식 (Regular Expression)

  • 문자열의 집합을 표현하는데 사용하는 형식 언어
  • Perl 에서 처음 사용
  • 많은 프로그래밍 언어가 정규 표현식 기능을 제공하고 있는데 언어 자체가 제공하기도 하고, 별도의 라이브러리 형태로 제공되기도 함
  • 문자열의 패턴을 검사하기 위해서 사용
    유효성 검사나 자연어 처리에서 많이 사용
  • java에서는 java.util.regex 패키지에 맞는 Match 클래스와 Pattern 클래스 그리고, String 클래스에서 제공
  • Web Programming에서는 java 보다는 javascript에서 많이 사용

메타 문자

메타 문자 기능 설명
수직선 (|) 또는 (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. 불용어 리스트


Network

java.net 패키지 사용

  • 다른 컴퓨터와 통신을 하기 위해서는 다른 컴퓨터의 프로그램이나 자원에 접근하기 위한 주소를 알아야 함
  • 프로그램에 접근할 때는 IP(컴퓨터를 구분하기 위한 주소)포트(프로세스를 구분하기 위한) 번호 또는 Domain을 알아야 함
IP와 포트번호를 알고 도메인으로 치환할 수 있어야 함 = DNS (Domain Name System)을 사용

클라이언트 - 서버

  • 서비스의 종류에 따라 파일 서버, 메일 서버, 어플리케이션 서버 등이 있음
  • 서버가 서비스를 제공하기 위해 서버 프로그램 + 클라이언트가 서비스를 제공받기 위해 클라이언트 프로그램이 있어야 함
  • 네트워크 구성시 전용 서버를 두는 것을 서버 기반 모델, 별도의 전용 서버 없이 각 클라이언트가 서버역할을 동시에 수행하는 것을 P2P(peer-to-peer) 모델이라고 함

IP

  • 컴퓨터를 구분하기 위한 주소
  • IP주소 = 네트워크 주소 + 호스트 주소 (네트워크 주소가 같다는 것은 두 호스트가 같은 네트워크에 포함되어 있음)
  • 자바에서는 InetAddress 클래스 사용
더보기
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();
		}
	}
}

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 클래스 사용

URL 클래스

  • URLConnection: 어플리케이션과 URL간의 통신연결을 나타내는 최상위 클래스로 추상클래스
  • 상속받아서 구현하는 클래스는 HttpURLConnection, JarURLConnection
  • URL의 프로토콜이 http프로토콜이면 openConnection()은 HttpURLConnection을 반환
  • https프로토콜이면 HttpsURLConnection을 반환, 이는 HttpURLConnection을 확장한 클래스

통신 절차

2023.09.14 - [Study/Network] - [네트워크] socket

  • 요청을 처리하는 쪽에서 포트번호를 가지고 소켓을 생성해서 시작
  • 요청을 보내는 쪽에서 요청을 처리하는 쪽을 구별하기 위한 주소를 가지고 접속을 하고 요청을 전송
  • 요청을 처리하는 쪽에서 요청을 보내는 쪽의 데이터(parameter)를 읽어서 처리를 수행한 후 처리 결과를 요청을 보내는 쪽으로 전송
  • 요청을 전송하는 것을 request
  • 요청을 처리해서 결과를 전송하는 것을 response

TCP 형태 - 클라이언트와 서버가 대화를 주고받는 것

더보기

(클라이언트가 서버에게 요청하면 서버가 다시 전송하는 것)

public class TCPServer {

	public static void main(String[] args) {
		//try ~ resources 구문으로 메모리 해제를 하지 않아도 됨
		try(ServerSocket ss = new ServerSocket(9999);) {
			System.out.println("서버 대기 중...");

 

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
profile

원지의 개발

@원지다

250x250