# 20200925
5-3.(1) FileEncoding
p.54 1. 한글인코딩 InputStreame객체는 파일의 인코딩 방시글 지정 가능 형식) new InputStreamReader(바이트기반 스트림 객체, 인코딩 방식); 2. 인코딩 방식 한글 인코딩 방식은 크게 UTF-8 & EUC-KR 두가지 원래 한글 윈도우는 CP949방식 사용 윈도우 개발한 마이크로소프트에서 EUC-KR로 확장하였기 때문에 MS949로 부름 CP949는 EUC-KR의 확장이며, 하위호환성 ANSI는 영어를 표기하기 위해 만든 코드 규격으로 자체에 한글이 없다가 나중에 EUC-KR(유닉스 계열), CP949(윈도우)이라는 식으로 한글이 포함됨. MS949 윈도우의 기본 한글 인코딩 방식(ANSI 계열) UTF-8 유니코드 UTF-8 인코딩 방식 영문자 및 숫자 : 1byte, 한글 : 3byte => 가변적 US-ASCII
5-1.(4) 바이트 기반 스트림
1. 스트림(Stream) 일차원적인 데이터의 흐름을 의미 데이터를 목적지로 입출력 하기 위한 방법 자바의 스트림객체를 이용하여 스트림 형식으로 데이터를 읽고쓰기 가능 스트림 형식으로 데이터를 읽기 위해 입력스트림(InputStream) 사용 스트림 형식으로 데이터를 쓰기 위해 출력스트림(OutputStream) 사용 2. 바이트기반스트림 (1) 바이트 기반 스트림 바이트 기반 스트림은 1byte를 입출력 할 수 있는 스트림 일반적으로 바이트로 구성된 파일(동영상, 이미지, 음악)을 처리하기에 적합한 스트림 InputStream은 입력용, OutputStream은 출력용 'InputStream'이나 'OutputStream'이라는 단어가 붙으면 바이트 스트림 (2) 바이트 기반 스트림 종류 InputStream Buffered~ 라인단
5-1.(3) java io File DIR 정보출력
T02_FileTest => 중간에 20200925 줄부터 보면댐 1.출력할 디렉토리 정보를 갖는 File 객체 생성 2. 지정된 디렉토리(폴더)에 포함된 파일과 디렉토리 목록 보여주는 메서드 displayfilelist() displayfilelist static 메서드 1) 디렉토리안의 모든 파일 목록을 가져올 때 File[] files = dir.listFiles(); 2) 하위 디렉토리 정보를 저장한 ArrayList 생성 (File배열의 인덱스 저장) List subDirList = new ArrayList(); 3) 날짜를 출력하기 위한 형식 설정 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a hh:mm"); 4) 정보 출력 메서드 종류 파일 사이즈 : .length() 읽기

4-4.(5) Thread Wait Notify
wait() , notify() 동기화 영역에서 사용해야 의미가 있음 wait()메서드 : 동기화 영역에서 락을 풀고 Wait-Set영역(공유객체별 존재)으로 이동 notify() 또는 notifyAll() 메서드 : Wait-Set영역에 있는 쓰레드를 깨워서 run() : notify()는 하나, notifyAll()은 전부를 깨운다 Object 클래스에서 제공하는 메서드 T19_WaitNotifyTest 1. 공통으로 사용할 객체 : 메서드 2개 : 해당 쓰레드가 들어와서 메서드 실행 -> notify()호출 -> 깨움 -> wait() -> Wait-Set 대기실 2. WorkObject의 methodA()메서드만 호출하는 쓰레드 : ThreadA를 10번 호출 3. WorkObject의 methodB()메서드만 호출하는 쓰레드 Console: 
4-4.(4) Thread 동기화 Collection
Collection 활용한 Thread 동기화 Vector,Hashtable등 예전부터 존재하던 Collection 클래스들은 내부에 동기화처리가 되어 있다. 그런데, 최근 새로 구성된 Collection들은 동기화 처리가 되어있지 않다. 그래서 Collection들을 사용하려면 동기화 처리를 한 후에 사용 T18_SyncCollectionTest 1. 동기화를 처리하지 않을 경우 Cosole : lis1의 개수가 50000으로 딱 맞게 출력되지 않는다. 2. 동기화 하는 경우 새로 구성된 Collection이므로 synchronizedList로 동기화 처리 Collections.synchronizedList(new ArrayList()); Console:  Thread 동기화 Lock
Thread 동기화 : 여러개의 Thread가 공유하여 작업 진행 -> : 문제가 발생할 여지가 있음 -> 임계 영역 : 이 영역을 동기화 처리 문제발생 방지 : 과도한 동기화는 프로그램 성능 저하 -> 필요한 영역만 선별적으로 사용 Lock을 이용한 동기화 처리 T17_LockAccountTest 1. lock 객체 생성 되도록이면 private final로 만든다 : 이유) 외부에서 접근하지 못하도록 상수로 만듦 : ReentranLock 2. lock() -> unlock() Lock 객체의 lock()메서드가 동기화 시작이고, unlock()메서드가 동기화 끝 lock()메서드로 동기화를 설정한 곳에서는 반드시 unlock()메서드로 해제 3. lock을 통해서 동기화 가능 lock.lock(); try~catch 블럭을 사용할 경우 :
JavaScript 4. JS 이벤트
1. HTML 이벤트 마우스 관련 onload : 객체가 로드 되었을 때 발생 `` onclick: 마우스로 요소를 클릭했을 경우 `` ondbclick onmouseover onmousemove onmouseout 키 관련 onkeydown onkeypress onkeyup onfocus (많이 씀) `` onblur (많이 씀) `` onchange (많이 씀) `` 2. HTML요소에 이벤트 할당하는 방법 1) HTML 태그에서 이벤트 할당 2) 스크립트에서 요소에 이벤트 할당 `` `` .o
5-1.(2) java io File (createNewFile())
createNewFile() .getAbsolutePath() : 절대적 경로가 존재하지 않으면 createNewFile() 사용해서 새로 파일을 만들 수 있음