처음보는 transient .. 

변수에 선언되어 있어서.. 찾아보았다.

transient 를 알려면.. 우선 Serializable(객체 직렬화)를 알아야한다.

JAVA 탭에 객체직렬화는 설명이 있으니, 나중에 다시 한번 읽어보는걸로 '- '


쉽게 말하면 transient 는 직렬화 대상에서 제외시키는 선언자이다.

ex)

public class TransientTest implements Serializable {

private static final log serialVersionUID = 4220461820168818967L;

String name;

Transient int age;    // age 변수는 직렬화 제외시킨다.

}


 - 객체직렬화에서 제외시킬때 쓰는 선언자인건 이제 알았는데'- ' 

    정확히 언제 객체직렬화를 쓰는지를 모르겟다. 직렬화를 다시 봐야겠다.

    쓸일이 별로 없으니 자주 까져먹어;;


Spring 3.0 으로 개발중에 로컬 테스트 DB는 Oracle10g JDBC 드라이버는 ojdbc14-10.2 버젼

로컬에서 테스트완료하고, 테스트 DB Oracle11g 에 반영을 하니까, 서버 기동중에 자꾸

'Could not get a DatabaseId Form dataSource' 라고 ERROR 나오고 기동안됨.

딱 보면 dataSource 이름을 못가져온대서 이름도 바꿔보고...

구글링해서 나오는거 이것 저것 다해봐도 똑같음.. 하다하다 안되서, 옆에 다른 시스템 개발중이신 분한테 여쭈어 보니

자기는 ojdbc14-11.2 버젼 쓰고있는데, 잘 된다고, odjbc14 바꿔서 해보라고 하니.. 바로 됨'- '


내가 멍청한건지... 암튼 경력(?)은 무시 못함. 또 하나 배움'- ' 수고요



회사솔루션은 ibatis 를 사용한다.

그래서 insert 성공&여부를 알고자 할때 update 로 해서 return int 값을 받으면,

성공 1, 실패 0 을 받았었는데... 이번에 프로젝트 나온 곳은 myBatis 를 사용하는데.. 똑같겠지하고, 

했는데... return int 값에 이상한 값이 찍힌다.. 

바로..  -2147482646 

순간 멍쪄서.. 이유를 찾아보니, 

myBatis 매퍼설정 파일(XML) 에 defaultExecutorType 라는 항목이 있는데, 이 값을 'SIMPLE' 로 바꿔야한다.

그럼.. defaultExecutorType 는 무엇인가보자.


- defaultExecutorType (디폴트실행자)

: SIMPLE 실행자는 특별히 하는 것이 없다.

: REUSE 실행자는 PreparedStatement를 재사용한다.

: BATHCH 실행자는 구문을 재사용하고 수정을 배치처리한다.

: 암튼 해당항목의 값의 종류는 위와 같이 3개가 있고, SIMPLE를 설정해야 

  내가 원한 IBATIS 와 같은 결과를 얻을 수 있다.




일반적으로 Client 에서 소켓연결할때

ex)

Socket clientSocket = new Socket(IP, PORT);


TimeOut 설정을 하려면, SocketAddress 랑, InetSocketAddress 를 이용해야한다.

* IP, PORT, TIMEOUT 세 변수는 상수라 가정함(IP - string, PORT,TIMEOUT - int)

ex)

Socket clientSocket = new Socket();

SocketAddress socketAddress = new InetSocketAddress(IP, PORT);

clientSocket.connect(socketAddress, TIMEOUT);


이렇게 해야한다.

가끔,

ex)

Socket clientSocket = new Socket(IP, PORT);

clientSocket.setSoTimeOut(5000);

이렇게, 설명이 나온곳이 있는데... 아무의미없음, 사용하면 안되요.


업데이트분 2014-10-30)

clientSocket.connect(socketAddress, TIMEOUT) 이 부분은 소켓 Connect 연결할 때 TimeOut 설정이고,

밑에, clientSocket.setSoTimeOut(TIMEOUT) 이 부분은 소켓연결 후에 응답이 없을때의 TimeOut 설정이다.

(아마도, clientSocket 에서 붙은 serverSocket 에서 응답이 없을시 끈을 TimeOut 이겟지'- ')



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

JAVA_[ Dynamic Web Project 에서 Tomcat(Catalina) Home 경로 얻기 ]  (1) 2014.11.04
JAVA_[ transient ]  (0) 2014.10.31
JAVA_[ Socket 통신(포트포워딩) ]  (0) 2014.10.20
JAVA_[ SimpleDateFormat ]  (0) 2014.08.28
JAVA_[ Calendar ]  (1) 2014.08.28

- 소켓통신 포트포워딩

   포트별로 소켓통신 분기처리하기위해서 중간에 소켓서버를 두고, 포트로 구분해서 해당시스템에 쏘는방식..

   구글링해서 한거라... 개념적인건 자세히 몰라도 소스보면.. 이해는 될거얌'- '

   분기처리라고해도, 특정포트의 서버가 떠있어야 하므로, 유동적으로 포트지정은 할 수 없다. 띄울때 부터 포트는 

   지정해야 하니까.. 아무튼.. 잘되서 다행이다.

   서버에 올릴때는 .properties 파일만들어서 IP, PORT 부분은 읽어오게해서 올리기...

   이제 포트포워딩하고 로그(이력) DB 입력하는거만 하면 되겠다.

   자바의 정석으로 공부하다보면 Socket 통신까지 못 보고 항상 책을 덮었었는데... 공부 좀 해야겠다.

   소스는 클래스파일이 4개라 파일로 올림, 

   파일안에 Server, Client 모두 있음. 테스트하고 싶으면, 양쪽에 입력하고 받고(outPutStream & inPutStrem)

   system.out.print() 로 찍어보면 됨

   나중에 또 쓸일이 있을 거 같아서.. 그럼 수고'- '

  출처 : http://www.nakov.com/books/inetjava/source-code-html/Chapter-1-Sockets/1.4-TCP-Sockets/TCPForwardServer.java.html


SocketForward.zip

(압축풀어서 JAVA 파일 실행)

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

JAVA_[ transient ]  (0) 2014.10.31
JAVA_[ Socket 통신 Client 에서 Connect TimeOut 설정 ]  (3) 2014.10.27
JAVA_[ SimpleDateFormat ]  (0) 2014.08.28
JAVA_[ Calendar ]  (1) 2014.08.28
JAVA_[ String 클래스 생성자와 메서드 ]  (0) 2014.08.27

- Array.map() : 기존의 배열에 특정 규칙을 적용하여 새로운 배열을 만든다.

EX)
    <script>
        // 배열선언
        var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

  // 배열요소(elements)에 제곱하여 새로운 배열을 만든다.

        var outPut5 = array.map(function (elements) {
            return elements * elements;
        });

        alert(outPut5);
    </script>

 

 

- Array.every() : 배열의 요소가, 특정조건을 모두 만족하는지 확인

- Array.some() : 배열의 요소가, 특정조건을 적어도 하나 막족하는지 확인

- return 값은 Boolean( True & False)

   매개변수(배열의 요소, 배열의 인덱스, 배열객체)

 

- EX)


    <script>
        // 배열선언
        var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

        // 함수선언(배열의 값이 5 보다 작은 것만 등록)
        var lessThanFive = function (element, index, array) {
            return element < 5;
        };

        // 함수선언(배열의 값이 20보다 작은 것만 등록)
        var lessThanTwenty = function (element, index, array) {
            return element < 20;
        };

        var outPut1 = array.every(lessThanFive);    // array 배열의 요소가 모두 5보다 작은지,
        var outPut2 = array.every(lessThanTwenty);  // array 배열의 요소가 모두 20보다 작은지,
        var outPut3 = array.some(lessThanFive);     // array 배열의 요소가 하나라도 5보다 작은지,
        var outPut4 = array.some(lessThanTwenty);   // array 배열의 요소가 하나라도 20보다 작은지

        alert(outPut1);
        alert(outPut2);
        alert(outPut3);
        alert(outPut4);

        alert(outPut5);
    </script>

- Array.filter() : 특정조건을 만족하는 요소를 추출하여 새로운 배열을 만든다.

   매개변수(배열의 요소, 배열의 인덱스, 배열객체)


    <script>
        // 변수선언
        var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

        // 메서드
        var sum = 0;
        var outPut = '';        
        array = array.filter(function (element, index, array) {
            return element <= 5;
        });

        alert(array);
    </script>

- 배열요소가 5보다 작거나, 같은 것만 골라 새로운 배열을 만든다.

- 결과 : 1, 2, 3, 4, 5

 

 

 

 

- JQuery 의 each() 와 비슷하다.

    <script>
        // 변수선언
        var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

        // 메서드
        var sum = 0;
        var outPut = '';

        array.forEach(function (element, index, array) {
            sum += element;
            outPut += index + ' : ' + element + ' -> ' + sum + '\n';
        });
    </script>

 

- 음... array 배열을 for in 으로 반복해서 하는거랑 같은 거의 같다.

  단지, 매개변수(배열의 요소, 배열의 인덱스, 배열객체) 를 갖는다는 점(?)

- SimpleDateFormat 출력형식 패턴


- 예제



+ Recent posts