Day 23

·2023년 7월 7일
0

Global_2023_2

목록 보기
22/56
post-thumbnail

1.일대일 채팅을 짜시오.(쓰레드 + Socket + IOStream)

package edu.global.chat;

import java.net.ServerSocket;
import java.net.Socket;

import edu.global.chat.way.C;
import edu.global.chat.way.D;


public class A {
	public static void main(String[] args) {
		ServerSocket serverSocket = null;
		
		Socket socket = null;
		
		try {
			serverSocket = new ServerSocket(8888);
			System.out.println("서버가 준비됨");
			
			socket = serverSocket.accept();
			C c = new C(socket);
			D d = new D(socket);
			
			c.start();
			d.start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
package edu.global.chat;

import java.net.Socket;

import edu.global.chat.way.C;
import edu.global.chat.way.D;

public class B {

	public static void main(String[] args) {
		String serverIP = "127.0.0.1";
		
		Socket socket = null;
		
		try {
			socket = new Socket(serverIP,8888);
			System.out.println("서버에 연결됨");
			C c = new C(socket);
			D d = new D(socket);
			
			c.start();
			d.start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
package edu.global.chat.way;

import java.io.DataOutputStream;
import java.net.Socket;
import java.util.Scanner;

public class C extends Thread {
	private Socket socket;
	private DataOutputStream out;
	private String name;
	
	public C(Socket socket) {
		this.socket=socket;
		try {
			out = new DataOutputStream(socket.getOutputStream());
			name = "[" + socket.getInetAddress()+":"+socket.getPort()+"]";
		} catch (Exception e) {
		}
	}
	public void run() {
		Scanner sc = new Scanner(System.in);
		while(out != null) {
			try {
				out.writeUTF(name + sc.nextLine());
			} catch (Exception e) {
				// TODO: handle exception
			}
		}
	}

}
package edu.global.chat.way;

import java.io.DataInputStream;
import java.net.Socket;

public class D extends Thread{
	private Socket socket;
	private DataInputStream in;
	
	public D(Socket socket) {
		this.socket=socket;
		try {
			in = new DataInputStream(socket.getInputStream());

		} catch (Exception e) {
		}
	}
public void run() {
	while(in != null) {
		try {
			System.out.println(in.readUTF());
		} catch (Exception e) {
		}
	}
}
}

2.DB란?

  • 데이터베이스의 약자
    데이터 : 저장할 가치가 있는 자료
    를 모은것

3.DBMS 란?

  • DBMS는 Database Management System의 약자.
    데이터베이스를 관리하는 시스템

4.DBMS 종류는?

  • 계층형, 객체지향형 등이 있으나 RDBMS(관계형)이 제일 많이 쓰인다.

1.아래의 쿼리를 완성하시오.

-부서 번호(DEPTNO)가 20인 사원에 관한 정보만 출력

  • select * from emp where deptno = 20;

-1982년 1월 1일 이후에 입사한 사원을 출력하는 쿼리문

  • select * from emp where hiredate >= '82/01/01';

-desc 명령어에 대하여 설명하시오.

컬럼의 내용물과 어떤 유형인지 확인한다

  • SQL에서 테이블의 구조를 확인하는 명령어

    	SELECT * FROM EMP;

    같은것

-커미션(COMM)이 300 혹은 500 혹은 1400이 아닌 사원

  • select * from emp where comm not in (300,500,1400);

-커미션(COMM)이 300 혹은 500 혹은 1400인 사원 검색

  • select * from emp where comm in (300,500,1400);

-급여가 2000 미만이거나 3000 초과인 사원을 검색하는 쿼리문

  • select * from emp where sal not between 2000 and 3000;

-급여가 2000~3000 사이의 사원을 검색하는 쿼리문

  • select * from emp where sal between 2000 and 3000;

sql 때리는게 웹 프로그래밍의 절반 이상이다💾


Point

  • 채팅 클라이언트에서 서버의 아이피를 입력
  • 와이파이 공유기가 다르면 다른 아이피가 잡힌다
    • 공유기가 192.를 뿌려주기 때문

데이터베이스

  • 오라클 SQL

    • 버전 확인 sqlplus

    • 스콧 계정 생성@C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql 입력

    • 비밀번호 : tiger

    • DBMS에 저장

    • DB

      • 동시성(우선순위) 문제
      • 보안 문제
      • 권한 문제
        • 를 모두 해결한 RDBMS(관계형 데이터 베이스)의
          방식은 1980년부터 크게 바뀐게 없다
        • CRUD(create read update delete)
        • RDBMS의 관계형은 엑셀 같은 형태로 작동
        • 어딜 취직해도 신입은 데이터부터
        • 가장 많이 쓰는 프로그램은 토드?
        • 문자는 문자형, 숫자는 숫자형과 날짜형

0개의 댓글