IP(Internet protocol)

    - ipv4: 8bit 4개 옥텟으로 구성 

        xxx.xxx.xxx.xxx (각 xxx 범위 0~2^8-1)

        네트워크 상에서 컴퓨터를 식별하는 번호로, 네트워크 어댑터(LAN 카드)마다 할당

        확인 명령어 C:\>ipconfig /all

 +) ipv6: 16bit 8개 octet으로 구성 (각 xxx 범위 0~2^16-1)

* Domain

   : 숫자로 이루어진 인터넷상의 컴퓨터 주소(IP)를 DNS서버를 통해 변환(매핑)해 알기 쉬운 영문으로 표현한 것

* Port Number

   : 같은 컴퓨터 내에서 서버 프로그램을 식별하는 번호

   클라이언트는 서버 연결 요청 시 IP와 Port를 같이 제공

   0~65535 범위

   : 자주 쓰는 포트 번호 (기억해두는게 많이.. 좋을걸)

      ftp : 21

      ssh : 22 -> putty

      telnet : 23

      http(웹서비스) : 80 

      smtp(메일 송신): 25

      pop3(메일 수신) : 110



ServerSocket, Socket

1. 클라이언트의 Socket (ip, port)에서 ServerSocket(port)의 accept()로 연결요청

2. accept()이 연결 수락하면 port Number로 식별한 서버의 Socket으로 넘어감

클라이언트 서버
socket = new Socket("0.0.0.0", 1234); server = new ServerSocket(1234);
socket = server.accept();

3. 입출력스트림 이용해 클라이언트와 서버 Socket 사이에 통신 

클라이언트 서버
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
System.out.println("Server Message : " + dis.readUTF());
System.out.println("Client input message : ");
String msg = "Hello, Server";
dos.writeUTF( msg );
System.out.println("Client Message : " + dis.readUTF());
System.out.println("Server input message : ");
String msg = "Hello, Client";
dos.writeUTF( msg );

4. 스트림 소켓 객체 해제하고 자원 반납

dos.close();
dis.close();
socket.close();



멀티채팅
Server 1개 + Client n개 connected
1. BroadCasting 기능 (방송 기능) : 자기자신을 포함해 접속해있는 모든 유저에게 메시지를 전달
(A가 hi를 전달-> Server에서 메시지를 받아 현재 접속해있는 A,B,C에게 hi를 전달-> A,B,C에게 hi 출력 )
2. Thread 동기화 기능
(A가 hi를 전송하고 B가 hello를 전송했을 때, A 메시지가 먼저 A,B,C 화면에 출력된 뒤 B 메시지가 출력되도록 제어 -> Thread 동기화로 A 처리 전부 끝난 뒤 B 처리 (대기상태)



***오라클 연동(DB 연동)***
java.sql.*

1. 파일 시스템의 문제점
   - 데이터 종속
   - 데이터 중복
     > 일관성(동일성 유지 위해 데이터 중복을 피함)
     > 보안성(동일한 수준에서 보안이 유지됨)
     > 경제성(저장되는 공간에 대한 비용 절감)
     > 무결성(데이터가 정확성 유지)
     ---> 파일시스템은 데이터 관리하기 힘들기 때문에, 효율적으로 관리하기 위해 데이터베이스 관리시스템(DBMS)을 만들어 관리함

2. 데이터베이스 관리 시스템 (DBMS)
: 방대한 양의 데이터를 편리하게 저장하고 효율적으로 관리, 검색할 수 있는 환경을 제공하는 System SW
: 데이터를 공유해 정보의 체계적 활용을 가능하게 함

* 일반적인 형태: 관계형 데이터베이스 관리시스템(Relational DBMS)
ex. Oracle, MySQL, SQL Server(msSQL) etc.
: 관계형 데이터베이스 정보를 표(table) 형태로 저장 -> ROW(행), COLUMN(열)로 구성
   - 장점
     > 작성, 이용이 쉽고 확장이 용이함
     > 처음 DB를 만든 후 관련 응용프로그램을 변경하지 않아도 세로운 데이터 항목을 DB에 추가할 수 있음

데이터 딕셔너리(Date Dictionary: DD)
: RDB에서 객체를 정의하면 그 객체가 가진 메타데이터(metadata)의 정보가 저장되는 곳
     --> 사용자에 의해 추가, 삭제, 수정 불가능, 오라클 시스템으로만 가능!


오라클 설치하고 SCOTT 계정으로 사용을 할건데, 테이블이 없기 때문에 테이블을 복원해줘야함
오라클 서버 구동
내 PC-관리-서비스 및 응용 프로그램-서비스

두 가지 실행 중 상태여야 클라이언트가 접근 가능함
오라클 사용할 땐 자동, 나중에 사용하지 않게 되면 수동으로 변경하기(켜두면 컴 느려지니까)

환경변수 path 따로 등록하지 않아도 설치할때 알아서 잡아줌

sys, system / **** (내가 설정한 비번)
--> 디폴트로 이 계정 사용하게 됨

c:\> sqlplus  system/0501 // system계정 접속
/////sqlplus 위치: oraclexe.app.oracle.product.11.2.0.server
SQL> show user //유저 정보 알려줌

scott 계정 활성화하기~
SQL> @e:\scott.sql
// scott 계정의 테이블을 먼저 생성해줌
scott.sql을 저장해서 SQL에서 실행(.sql은 테이블 만들어주는 것이고.. 난 e드라이브에 저장함
SQL> alter user scott identified by tiger;
// scott 계정의 비번을 tiger로 설정하라는 명령
SQL> conn scott/tiger
//connect로 써도 됨 --- scott 계정으로 전환
+)sys 계정은 저렇게 하면 안되고
conn sys/0501 as sysdba //sysdba로 sys계정에 접속해라--> 무조건 as sysdba 붙여줘야함!
※ 에러날 경우 연결 끊기므로 다시 계정 접속 해야함

SQL> select * from tab;
//scott 계정 테이블 목록을 보여줘라

SQL> quit; (종료) //quit; exit; 둘 다 종료 명령
c:\> sqlplus  scott/tiger //한번 설정해뒀으니 sqlplus scott/tiger로 바로 접속 가능함!


* SQL(Structured Query Language)
: 사용자의 RDB를 연결시켜주는 표준 검색 언어


1. DDL(Date Definition Language)데이터 정의어: 객체 생성 및 변경
- 명령어 
테이블 생성
  SQL> create table 테이블명 (컬럼명  데이터타입, 
              컬럼명  데이터타입, ......);
  SQL> create table member01(
id  varchar2(20),  //byte 제한 설정 
name  varchar2(20), 
address varchar2(50), 
phone  varchar2(20));
데이터타입 -----> 문자: varchar2 // 숫자: number // 날짜: date, timestamp

테이블 목록 출력★
   SQL> select  *  from  tab;

테이블 구조 출력★
  SQL> desc[ribe]  member01;

테이블 명 변경
  SQL> alter  table  구테이블명  rename  to  신테이블명;
  SQL> alter  table  member01  rename  to  member02;
   ※ SQL> rename  구테이블명  to  신테이블명; 
  으로도 테이블명 변경 가능함.
     SQL> rename  member01   to  member02;

테이블에 새로운 컬럼 추가 ( add 연산자 )
  SQL> alter  table  member01 add (password  varchar2(30));

테이블의 컬럼 수정 ( modify 연산자 )
  SQL> alter table member01 modify (password  varchar2(50)  not  null);
  +) 컬럼이 이미 데이터를 가지고 있을 경우 다른 데이터형으로 변경 불가능
  +) 컬럼명은 modify 안됨

테이블의 컬럼 삭제 ( drop 연산자 )
  SQL> alter  table  member01  drop  column  column_name;
  SQL> alter  table  member01  drop  column  password;
  cf. alter  table  member01  drop(password);

제약조건의 삭제
  SQL> alter  table  member01  drop  primary  key;

테이블 삭제 
  SQL> drop  table  member01;

cf. 오라클 10g부터는 테이블을 삭제하면   BIN    $4emTP3hqGbvgMGQ9jRYEcw==$0 와 같은 임시테이블로 교체된다. 
   ----> 이 임시 테이블을 완전 삭제하는 방법은 ?
           SQL> purge recyclebin; 

처음부터 테이블을 완전하게 삭제하는 방법은 ?
SQL> drop  table  member01  purge;   /////// 요거 기억해둬야함! 주의!

참조: http://www.oracle.com/technology/pub/articles/10gdba/week5_10gdba.html


2. DML(Date Manipulation Language)데이터 조작어: 데이터 변경 시 사용
- 명령어
insert (데이터 입력)
  형식:  insert into 테이블명(컬럼1, 컬럼2,..) values(데이터1, 데이터2,...);
                  //컬럼 개많이 있고 그중 일부 컬럼 값을 입력해야 할때, 컬럼 형/개수=데이터 형/개수 여야함
           insert into 테이블명 values(데이터1, 데이터2,...);
                  //모든 컬럼 값을 입력할 때 (컬럼 이름 생략 가능!)
-- 둘 다 많이 쓰이니까 그때그때 필요한걸 사용할수 있게 확실히 숙지해두자

     ex) insert into dept01(deptno, dname, loc) values(10,'ACCOUNTING', 'NEW_YORK'); 
           insert into dept01(dname, loc, deptno) values('RESEARCH', 'DALLAS', 20); 
           insert into dept01 values(30, 'SALES', 'CHICAGO');
           insert into dept01 values(40, 'OPERATIONS','BOSTON');
컬럼명은 문자를 그냥 써도 되는데 데이터는 형식에 맞게 따옴표를 사용해야 함

예) 
DDL에서 Member01라는 테이블 생성해서 id, name, address, phone 목록 만들어뒀으면 거기에 DML로 value('scott','jay','navcer',0000) 값을 넣어주는 거지
여기서 일부(또는 전체) 컬럼에만 입력하고 싶으면 테이블의 컬럼을 따로 기입해주는거고, 전체 입력할거면 생략하고 값만 넣어도 되는거야

 


> update (데이터 수정)
   형식: update 테이블명 set 컬럼1=수정할값1,
            컬럼2=수정할값2,...
           where 조건절; (java처럼 > < >=.. 이걸로 범위 정해서 그만큼만 수정할 수 있게 제어

예) 처음 집어넣은 0100000000 값을 수정하고 싶을 때
update member01 set phone='010-0000-0000' 
이대로만 쓰면 내가 입력한 모든 객체의 phone 값이 바뀌기 때문에
where id='test';
이걸로 id가 test인 곳의 phone으로 제한을 거는 것!



delete (데이터 삭제)
   형식:  delete from 테이블명 where 조건절;
--> update처럼 where로 조건을 만족하는 데이터만 삭제할 수 있게 제어

예) 두번째로 입력한 테이블을 삭제하고 싶을 때
delete from member01 where id='ttest';
id가 ttest인 테이블을 삭제하는 것



※DQL(Date Query Language)질의어의 명령어 Select(데이터 검색 시 사용)도 같이 기억!
얘는 select * from member01 처럼.. 검색할 때 쓰기도 하고
select *[column1, column,...,column N] from 테이블명
where 조건절 //표시한 컬럼 중 조건에 맞는걸 찾고싶을때




+ Recent posts