[작업내용]

...더보기

파일을 읽어서 DB에 넣을 때 특정 컬럼의 값이 Not Null 일 때 다른 컬럼의 값에 특정 문자열을 추가 하는 작업

ex) A 컬럼의 값이 존재 -> B 컬럼에 "이득" 문자열 추가 삽입

[문제]

...더보기

Not Null 값으로 보이는 컬럼 값을 DB가 값이 있는 것으로 판단하여 특정 문자열을 추가하는  현상

 

[원인 파악]

...더보기

해당 파일에서  특정 컬럼에 들어가는 내용을 모두 읽어 String의 값에 length를 확인

 * 문제의 값의 length는 1로 출력됨

 * 눈으로 판단하기에는 \t으로 보이는 값이 출력되고 있음

 * trim()으로 처리 하려고 했으나 trim() 또는 replaceAll(" ", "")로 처리가 안됨

 

문자열이 특수한 값인지 파악하기 위하여 str.chatAt(0)의 값을 형변환 한 뒤 출력

 * 출력된 값은 12288

 * 12288이란 값은 cjk 문자셋에서 나타나는 IDEOGRAPHIC SPACE라 불리는 유니코드 \u3000 또는 HTML 표현으로는   이라는 문자로 폰트 지원이 없으면 눈에 보이지 않는 코드로 존재

 

[해결 방법]

...더보기

현 상황에서 해결한 방법은 몇 가지 가정을 기반으로 작업하였다.

 * 현 상황에서는 특수 문자가 컬럼 내에 하나만 존재한다.

 * 문자열 사이에는 존재하지 않는다.

 

* 이 작업을 했을 경우 예상되는 이슈

 - 특정 파일의 값을 개발자가 임의로 수정하는 경우이기 때문에 모든 값을 알지 못하면 의도하지 않은 값이 수정될 수 있다.

 

String whatTheString = " ";
System.out.println("[LOG] [SpecialWord:" + whatTheString.length() + "]");

/* trim() 처리 시도 */
System.out.println("[LOG] [Trim(): " + whatTheString.trim() + "]["+ whatTheString.trim().length() + "]");

/* 문자열 확인 (12288의 값이 출력) */
int whatInt = whatTheString.charAt(0);
System.out.println("[LOG] [charAt(0):" +  whatInt + "]");

/* 모든 문자열의 공백을 제거 */
String replaceAllStr = whatTheString.replaceAll("\\p{Z}", "");
System.out.println("[LOG] [replaceAll:" + replaceAllStr + "]");

/* 문자열 처음과 끝에 내용만 없애기 */
String replaceStr = whatTheString.replaceAll("(^\\p{Z}+|\\p{Z}+$)", "");
System.out.println("[LOG] [replaceAll(regExp):" + replaceStr + "][" + replaceStr.length() + "]");

 

2017년 8월 ~ 10월 동안의 스터디 내용을 기록한 글 입니다.


Chapter 16 네트워킹(Networking).docx


자바의 정석

Chapter 16 네트워킹(Networking)



I.    네트워킹(Networking)

1.    클라이언트/서버(client/server)

2.    IP주소(IP address)

3.    InetAddress

4.    URL(Uniform Resource Location)

5.    URLConnection

II.   소켓 프로그래밍

1.    TCP UDP

2.    TCP소켓 프로그래밍

3.    UDP소켓 프로그래밍

2017년 8월 ~ 10월 동안의 스터디 내용을 기록한 글 입니다.


Chapter 15 입출력(IO).docx



자바의 정석

Chapter 15 입출력(IO)


I.    자바에서의 입출력

1.    입출력이란?

2.    스트림(stream)

3.    바이트기반 스트림  InputStream, OutputStream

4.    보조 스트림

5.    문자기반 스트림  Reader, Writer

II.   바이트기반 스트림

1.    InputStream, OutputStream

2.    ByteArrayInputStream ByteArrayOutputStream

3.    FileInputStream FileOutputStream

III. 바이트기반의 보조스트림

1.    FilterInputStream FilterOutputStream

2.    BufferedInputStream BufferedOutputStream

3.    DataInputStream DataOutputStream

4.    SequenceInputStream

5.    PrintStream

IV.  문자기반 스트림

1.    Reader Writer

2.    FileReader FileWriter

3.    PipedReader PipedWriter

4.    StringReader StringWriter

V.   문자기반의 보조스트림

1.    BufferedReade BufferedWriter

2.    InputStreamReader OutputStreamWriter

VI.  표준입출력과 File

1.    표준입출력  System.in, System.out, System.err

2.    표준입출력의 대상변경  setOut(), setErr(), setIn()

3.    RandomAccessFile

4.    File

VII.직렬화(Serialization)

1.    직렬화란?

2.    ObjectInputStream, ObjectOutputStream

3.    직렬화가 가능한 클래스 만들기  Serializable, transient

4.    직렬화가능한 클래스의 버전관리

   34

2017년 8월 ~ 10월 동안의 스터디 내용을 기록한 글 입니다.


Chapter 13 스레드.docx


자바의 정석

Chapter 13 스레드


I.    쓰레드(Thread)

1.    프로세스와 쓰레드

1)    멀티태스킹과 멀티쓰레딩

2)    멀티쓰레딩의 장단점

2.    쓰레드의 구현과 실행

1)    쓰레드를 구현하는 방법

2)    쓰레드의 실행  start()

3.    start() run()

1)    main쓰레드

4.    싱글쓰레드와 멀티쓰레드

5.    쓰레드의 우선순위

6.    쓰레드 그룹(Thread group)

7.    데몬 쓰레드(daemon thread)

8.    쓰레드의 실행제어

1)    sleep(long millis)  일정시간동안 쓰레드를 멈추게 한다.

2)    interrupt() interrupted()  쓰레드의 작업을 취소한다.

3)    suspend()  쓰레드를 멈추게 함, resume()  실행상태로 만들기, stop()

4)    yield()  다른 쓰레드에게 양보한다.

5)    Join()  다른 쓰레드의 작업을 기다린다.

9.    쓰레드의 동기화

1)    synchronized를 이용한 동기화

2)    wait() notify()

3)    Lock Condition을 이용한 동기화

4)    Volatile

5)    fork & join 프레임워크

... 22

2017년 8월 ~ 10월 동안의 스터디 내용을 기록한 글 입니다.


Chapter 12 제네릭, 열거형, 어노테이션.docx



자바의 정석

Chapter 12 제네릭(Generic)


I.    제네릭

1.    제네릭스(Generics)?

2.    제네릭 클래스의 선언

1)    제네릭스의 용어

2)    제네릭스의 제한

3.    제네릭 클래스의 객체 생성과 사용

4.    제한된 제네릭 클래스

5.    와일드 카드

6.    제네릭 메서드 **

7.    제네릭 타입의 형변환

8.    제네릭 타입의 제거

II.   열거형(enums)

1.    열거형이란?

2.    열거형의 정의와 사용

1)    모든 열거형의 조상  java.lang.Enum

3.    열거형에 멤버 추가하기

4.    열거형에 추상 메서드 추가하기

5.    열거형의 이해

III. 어노테이션(annotation)

1.    어노테이션이란?

2.    표준 어노테이션

1)    @Override

2)    @Deprecated

3)    @FunctionalInterface

4)    @SuppressWarnings

5)    @SafeVarargs

3.    메타 어노테이션

1)    @Target

2)    @Retention

3)    @Documented

4)    @Inherited

5)    @Repeatable

6)    @Native

4.    어노테이션 타입 정의하기

1)    어노테이션의 요소

2)    Java.lang.annotation.Annotation

3)    마커 어노테이션 Marker Annotation

4)    어노테이션 요소의 규칙

   15

2017년 8월 ~ 10월 동안의 스터디 내용을 기록한 글 입니다.


Chapter 11 컬렉션프레임워크.docx



자바의 정석

Chapter 11 컬렉션 프레임워크


I.    컬렉션 프레임워크(Collection Framework)

1.    컬렉션 프레임워크의 핵심 인터페이스

1)    Collection 인터페이스

2)    List 인터페이스

3)    Set 인터페이스

4)    Map 인터페이스

5)    Map.Entry 인터페이스

2.    ArrayList

3.    LinkedList

1)    LinkedList의 특징

2)    LinkedList의 장단점

4.    Stack Queue

1)    Stack직접 구현하기

2)    스택과 큐의 활용

3)    PriorityQueue

4)    Deque(Double-Ended Queue)

5.    Iterator, ListIterator, Enumeration

1)    Iterator

2)    ListIterator Enumeration

6.    Arrays

1)    배열의 복사 copyOf(), copyOfRange()

2)    배열 채우기 fill(), setAll()

3)    배열의 정렬과 검색 sort(), binarySearch()

4)    문자열의 비교와 출력 equals(), toString(), deepEquals(), deepToString()

5)    배열을 List로 변환 asList(Object a)

6)    parallelXXX(), spliterator(), stream()

7.    Comparator Comparable

8.    HashSet

9.    TreeSet

10.  HashMap Hashtable

1)    해싱과 해시함수

11.  TreeMap

12.  Properties

13.  Collections

1)    컬렉션의 동기화

2)    변경불가 컬렉션 만들기

3)    싱글톤 컬렉션 만들기

4)    한 종류의 객체만 저장하는 컬렉션 만들기

14.   컬렉션 클래스 정리 & 요약

  22

2017년 8월 ~ 10월 동안의 스터디 내용을 기록한 글 입니다.


Chapter 10 날짜와 시간 & 형식화.docx


자바의 정석

Chapter 10 날짜와 시간 & 형식화


I.    날짜와 시간 & 형식화

1.    Calendar Date

1)    Calendar GregorianCalendar

2)    Date Calendar간의 변환

2.    형식화 클래스

1)    DecimalFormat

2)    SimpleDateFormat

3)    ChoiceFormat

4)    MessageFormat

3.    java.time 패키지

1)    java.time패키지의 핵심 클래스

2)    LocalDate LocalTime

3)    Instant

4)    LocalDateTime ZonedDateTime

5)    TemmporalAdjusters

6)    Period Duration

7)    파싱과 포맷

  16

2017년 8월 ~ 10월 동안의 스터디 내용을 기록한 글 입니다.


Chapter 09 java.lang패키지와 유용한 클래스.docx



자바의 정석

Chapter 09 java.lang패키지와 유용한 클래스


I.    Java.lang패키지와 유용한 클래스

1.    Object 클래스

1)    Equals()

2)    HashCode()

3)    toString()

4)    clone()

5)    공변 반환타입

6)    얕은 복사와 깊은 복사

7)    getClass()

8)    class객체를 얻는 방법

2.    String 클래스

1)    변경 불가능한 클래스

2)    문자열의 비교

3)    문지열 리터럴

4)    빈 문자열

5)    String클래스의 생성자와 메서드

6)    Join() StringJoiner

7)    유니코드의 보충문자

8)    문자 인코딩 변환

9)    String.format()

10)  기본형 값을 String으로 변환

11)  String을 기본형 값으로 변환

3.    StringBuffer클래스와 StringBuilder클래스

1)    StringBuffer의 생성자

2)    StringBuffer의 변경

3)    StringBuffer의 비교

4)    StringBuffer클래스의 생성자와 메서드

5)    StringBuilder ?

4.    Math 클래스

1)    올림, 버림, 반올림

2)    예외를 발생시키는 메서드

3)    삼각함수와 지수, 로그

4)    StrictMath 클래스

5)    Math클래스의 메서드

5.    래퍼(wrapper) 클래스

1)    Number클래스

2)    문자열을 숫자로 변환하기

3)    오토박싱 & 언박싱(autoboxing & unboxing)

6.    유용한 클래스

1)    Java.util.Objects 클래스

2)    Java.util.Random 클래스

3)    정규식(Regular Expression) java.uril.regex패키지

4)    Java.util.Scanner 클래스

5)    Java.util.StringTokenizer 클래스

6)    Java.math.BigInteger 클래스

7)    Java.math.BigDecimal 클래스


   13

+ Recent posts