TCP/IP 프로토콜은 이기종 시스템간의 통신을 위한 표준 프로토콜로 프로토콜의 집합이다.

TCP 와 UDP 모두 OSI 7계층의 전송계층에 해당하는 프로토콜이다.

TCP 와 UDP 는 전송방식이 다르며, 각 방식에 따른 장단점이 있다.


 항목

 TCP

 UDP

 연결방식

 연결기반(Connection - oriented)

 - 연결 후 통신(전화기)

 - 1:1 통신방식

 비연결기반(Connectionless - oriented)

 - 연결없이 통신(소포)

 - 1:1, 1:N, N:N 통신방식

 특징

 - 데이타 전송순서 보장

 - 데이타 수신여부 확인

 - 패킷을 관리할 필요가 없음

 - UDP 보다 전송속도가 느림

 - 데이타 전송순서 바뀜

 - 데이타 수신여부 확인불가

 - 패킷을 관리해주어야 한다

 - TCP 보다 전송속도가 빠름

 관련 클래스

 - Socket

 - ServerSocket

 - DatagramSocket

 - DatagramPacket

 - MulticastSocket

※ TCP 소켓통신시 포트의 번호는 0 ~ 65535 범위에 속하는 값인데 보통 1023번 이하의 포트는 TELNET/FTP 와 같은 기존의

다른 통신 프로그램들에 의해서 사용되는 경우가 많기 때문에 1023번 이상의 번호를 사용하는 것이 좋다.

- 오픈한 클래스 상위에 현재 소스 경로표시

  단축키 : ALT + SHIFT + B

  메뉴경로 : Navigate -> Show In BreadCrumb




Selector 

Comment 

 .animated

 선택상태가 실행되는 시점에서 진행 중인 애니메이션의 모든 엘리먼트를 선택

 :button

 버튼 엘리먼트를 선택

 :checkbox

 체크박스를 선택

 :checked

 체크박스 & 라디오 버튼 체크 또는 선택된 것들만 선택

 :contains(text)

 지정된 텍스트를 포함하는 모든 엘리먼트를 선택

 :disabled

 비활성화 상태인 엘리먼트를 선택

 :enabled

 활성화 상태인 엘리먼트를 선택

 :file

 파일타입 엘리먼트를 선택

 :has(selector)

 셀렉터와 일치한 최소 한개 이상의 엘리먼트를 포함하는 엘리먼트만 선택

 :header

 H1, H2, H3 등과 같은 헤더 모든 요소를 선택

 :hidden

 숨겨든 모든 요소를 선택

 :image

 이미지 타입의 엘리먼트를 선택

 :input

 패스워드 엘리먼트를 선택

 :not(selector)

 지정한 selector 와 일치하지 않은 엘리먼트를 선택

 :parent

 자식 엘리먼트를 가지는 엘리먼트를 선택

 :password

 패스워드 엘리먼트를 선택

 :radio

 라디오 버튼을 선택

 :reset

 리셋 버튼을 선택

 :selected

 선택된 모든 엘리먼트를 선택

 :submit

 전송 버튼을 선택

 :text

 텍스트 타입 엘리먼트를 선택

 :visible

 보이는 엘리먼트를 선택


ex)

$(document).ready(function() {

// id="el" 엘리먼트의 자식 li 태그 중 p 태그를 포함하는 엘리먼트를 찾아서 색깔변경

var el = $('#el > li:has(p)');

el.css('color', 'red');

});


<ul id="el">

<li>1</li>

<li>2</li>

<li>3</li>

<li<p>4</p></li>

<li>5</li>

<li>6</li>

<li>7</li>

<li>8</li>

<li>9</li>

</ul>


Selecter 

Comment 

 :first

 첫 번째 일치하는 엘리먼트를 선택 

 :last

 마지막으로 일치하는 엘리먼트를 선택

 :first-child

 각 리스트의 첫 번째 리스트 아이템을 반환

 :fast-child

 각 리스트의 마지막 리스트 아이템을 반환

 :only-child

 부모의 형제가 없는 자식인 엘리먼트를 선택

 :nth-child(n)

 부모의 n번째 자식인 모든 엘리먼트를 선택

 :even

 짝수 번째 엘리먼트를 선택

 :odd

 홀수 번째 엘리먼트를 선택

 :eq(n)

 일치하는 n번 'index'의 엘리먼트를 선택

 :gt(n)

 n번 'index'를 포함하지 않고 이후의 엘리먼트와 일치하는 엘리먼트를 선택(큰)

 :lt(n)

 n번 'index'를 포함하지 않고 이전의 엘리먼트와 일치하는 엘리먼트를 선택(작은)


ex)

$(document).read(function() {

// id="el" 하위 li 태그 중 첫 번째 엘리먼트 선택

var el = $('#el > li:first');

el.css('color', 'red');

});


<div>

2-1-1

<ul id="el">

<li>2-1-1-1</li>

<li>2-1-1-2</li>

<li>2-1-1-3</li>

<li>2-1-1-4</li>

<li>2-1-1-5</li>

</ul>

</div>

'공부 > JQuery' 카테고리의 다른 글

JQuery_[ input type="text" 입력시 3자리 콤마 자동찍기 ]  (0) 2015.03.17
JQuery_[상태 필터 선택자]  (0) 2015.01.29
JQuery_[ $.param() / serialize() ]  (0) 2014.08.26
JQuery_[ Scroll 이벤트 ]  (0) 2014.08.25
JQuery_[ $.extend() ]  (0) 2014.08.25

- JAVA 에서 폴더 생성시 권한 및 소유주 설정

String Folder = "/root/file";

String chmod = "chmod -R 755 " + Folder;

Runtime runtime = Runtime.getRuntime();

Process process = runtime.exec(chmod);

process.waitFor();


- chown 방법도 동일하다.


- 특정포트 사용확인(PID조회)

$ netstat -lntp | grep [port]

$ netstat- nap | grep [port]


- PID 는 모르는데 특정포트를 사용중인 프로세스 죽이기(root 로 해야함)

$ fuser -k -n tcp [port]




'공부 > UNIX & LINUX' 카테고리의 다른 글

LINUX_[ Too may open files ]  (0) 2014.11.10
LINUX_[ 수동 시간설정(DATE) ]  (0) 2014.11.03
LINUX_[ Vi(m) 단축키 ]  (0) 2013.03.15
UNIX_[find 명령어 사용법]  (0) 2012.09.19

DB SID, Service Name 차이별로 URL 입력할때 조금 차이가 있음.


- SID

   jdbc:oracle:thin:@dbIp:dbPort:dbSid


- SERVICE NAME

   jdbc:oracle:thin:@//dbIp:dbPort/dbServiceName


연계서비스 개발중에..

Client 쪽에서 XML 타입의 문자열을 보내주면 Map 으로 변환해서(XMLEncoder 이용)

내가 Map 안에 쿼리문과 파라미터를 받아서 Query 실행 후에 데이터를 다시 XML 타입으로 변환해서(XMLDecoder)

 보내줘야하는 거 만드는 중인데..


Map 까서 일일이 Client 와 Key 값 정의해서 Value 빼와서 세팅하기가 번거러운거 같아서 구글링!

Iterator() 로 이게 가능하다는걸 암! 잊어버릴까봐 남긴다.


일단 Client 에서 보내주는 Map 의 양식은 다음과 같다.

Key : "sql", Value(String) : "SELECT * FROM WHERE PARAM1 = ?, PARAM2 = ? PARAM3 = ?"

Key : "params" Value(Map) :

Key : PARAM1, Value: 값

Key : PARAM2, Value: 값

Key : PARAM3, Value: 값


* 우선 PrepareStatement 를 쓸것이고, Params 의 갯수는 모른다. 항상 같은 쿼리문이 들어오는 것이 아니라,(총 연계 3부분)

   연계마다 따로 서비스를 개발하면 일일이 Key 값을 넣어서 코딩하면 되겟지만.. 싫다.


여기서 부터 구현

// Class.forName, DriverManager.getConnection 은 생략한다.

// Client 에서 Map 이 "paramMap" 으로 온다고 가정

// 두개의 키값, "sql", "params" 는 변함이 없다.


String sql = String.valueof(paramMap.get("sql"));

HashMap<String, Object> sqlMap = (HashMap<String, Object>) paramMap.get("params");


Set<String> key = sqlMap.keySet();

int paramIndex = 1;


for( Iterator<String> iterator = key.iterator(); iterator.hasNext(); ) {

String paramsKey = String.valueOf(iterator.next());

String paramsVal = String.valueOf(sqlMap.get(paramsKey));

// sql Query 에 값 넣기

stmt.setString(paramIndex, paramsVal);

paramIndex++;

}


요렇게 하면, 자동으로 index 증가하면서 params 입력

주의점 : sql Query 입력해야 할 ? 의 순서와 갯수가, params 에 담겨있는 순서&갯수 가 같아야한다.

이건 구지 얘기안해도 알아야 될 것;;


이렇게 데이타 조회해서 Map 으로만든 다음 다시 -> XMLDecoder 로 변환해서 소켓으로 리턴하면 끝!


'공부 > JAVA' 카테고리의 다른 글

JAVA_[Thread start() & run()]  (0) 2015.02.06
JAVA_[ 리눅스 권한변경 ]  (0) 2014.12.26
JAVA_[ EJB란? ]  (0) 2014.11.05
JAVA_[ Dynamic Web Project 에서 Tomcat(Catalina) Home 경로 얻기 ]  (1) 2014.11.04
JAVA_[ transient ]  (0) 2014.10.31

- 에러내용

제목과 동일 : IOException while loading persisted sessions: java.io.EOFException 


- 원인

톰캣 시작시 톰캣 work 디렉토리의 Session.ser 파일을 복원하는 과정에서 에러발생


- 해결방법

Tomcat > work > 하위의 *.ser 파일을 삭제하고 다시 톰캣 재기동


- 경로 

일반적으로 CATALINA_HOME > work > Catalina > localhost > examples

                                                                                    > host-manager

                                                                                    > docs


세 디렉토리 밑에 있다. 찾아서 지우면 된다. 혹시나 모를때는 찾아서 지운다.

해당 파일 찾기 명령어

find -name '*.ser' 이걸로 찾아서 경로 확인하고 가서 지우면 끝'- '

'공부 > ETC' 카테고리의 다른 글

ETC_[ TCP 와 UDP ]  (0) 2015.02.05
ETC_[ SID, ServiceName 입력차이 ]  (0) 2014.12.15
ETC_[ Tomcat 다중 인스턴스 띄우기 ]  (0) 2014.11.06
ETC_[ Win7 Telnet 설정 ]  (0) 2014.11.04
ETC_[Apache Error Code]  (0) 2013.08.24


※ 책은 Spring 3.0 인데 위의 이미지랑 조금 다름... 몇개 빠져있음, 아마 위에껀 상위버전인듯 3.1 인가'- ';;


- Core, Beans

  스프링의 핵심 모듈. Bean 컨테이너 관련기능을 제공


- Context

   국제화(il8N)나 Java EE 가 제공하는 몇몇 기능(JNDI, EJB, JMX등)을 지원


- AOP

  관점지향 프로그래밍 기능을 제공


- ORM

  Object Relational Mapping 기능을 제공, 


- JDBC

   JDBC 추상화 기능을 제공. JDBC에 의한 데이터베이스 엑서스를 지워나혐, 트랜잭션관리의 기반


- Web

   예를 들어 파일 업로드 같은 웹어플리케이션 이용에 편리한 기능을 제공


- Web Servlet

   웹어플레케이션에 MVC 프레임워크 기능을 제공



- 적는글

   오랜만에 스프링 3.0 서적보면서, 해볼려다가 하는김에 최신버전으로 하고 싶어서 기존과 같은 라이브러리를 찾아봤지만,

   찾지 못했다.

   이유는 스프링의 모듈이 다양해지면서, 더 이상 버전별 라이브러리를 묶어서 따로 배포하지 않는다.

   라이브러리 배포버전 젤 최신은 3.1.4 버전이고, 그 이후의 버전을 사용 할 경우에는,

   Maven 이나, gradle 로 다운받아서 내가 필요한것만 컴파일해서 사용해야한다.

   그래서 3.1.4 버전으로 다시 공부 중'- ' 근데.. 스프링 너무한다. 배째라는 식인데..

   3.1.4 버전까지 스프링 라이브러리 배포판 받는 경로는 여기!!! 남긴다.

   http://docs.spring.io/downloads/nightly/release-download.php?project=SPR

   

+ Recent posts