본문 바로가기

[3일차]쓰레드 쓰레드 Thread Process 메로리나 cpu와 관련한 자원들을 쫙 모아놓은 애가 process 그 중에서 코드를 한줄 한줄 실행하고 있는애가 쓰레드 이다. 쓰레드 이다. 그런데 하나를 작업하다 노는 경우가 생겨서 나온 개념이 멀티 프로세스이다. 그러다 보니까 하나의 프로그램 안에서도 그런 일이 일어나면 안되는거다. 그래서 Thread라는 개념이 만들어 진거다. Process간에는 서로 다른 자원을 접근하지 못하게 하고 있다. 그런데 Thread 는 ? 자원을 서로 공유한다. 결국 Process는 회사고 Thread는 일하는 사람이다. 뭐하는 회사야 하지만 일하는 주체는 사람. 같이 일하는 사람끼리 프린트 공유해서 쓰는 것처럼. 쓰레드도 자원을 공유한다. 이와 같은 개념이다. /////////////////.. 더보기
[3일차] 문자세트와 문자 인코딩 그리고 직렬화... 테이블 이름. euc - kr unix시스템에서 정의한 문자셋 리눅스서버로 많이 사용하기 때문에 이거 쓰는 경우가 많다. ksc-5601코리아 스탠다드 char-set 테이블 이름. iso -2022-kr 인터내셔널 스탠다드 한글 char-set 표준 cp949코드페이지 949 char-set 윈도우에서 쓰는 문자셋 utf-8 unicode전세계의 문자를 표현 그래서 글자가 커져서 숫자를 바로 쓰면 바이트단위로 쓰기 때문에 문제가 생김 , 그래서 1byte단위로 받아서 하는 인코딩하는게 utf-8 ,2byte단위로 받아서 쓰는게ㅔ utf-16 자바는 unicode에 utf-16을 쓴다. 한글일본어중국어다 됨 다 ~ '가' -> charset (unicode)-> code-> encoding(utf-8) .. 더보기
[3일차] IO Input/Output 프로그램에 들어가는 것을 인풋 나오는것을 아웃풋 프로세스란 컴퓨터를 돌릴때 메모리 영향 핸들 영향 돌아가고있을때, 그 순간에, 시간을 멈췄을 때, 내가 실행한 프로그램 뭐지 ../// 하고 뽑았을때 프로그램을 실행했을 때, 잡아먹는 메모리 이런 자원들을 관리하는 것을 프로세스라 한다. 그 중에서 코드를 실행하는 애를 쓰레드라 한다. 파일로 부터 byte array로 읽어오면 InputStream파일로 나가면 OutputStream; 자바는 IO에 접근하기위해서 IO장치가 무엇이 됬는지는 신경쓰지 않는다. InputStream과 Output Stream을 가지고 데이터를 주고 받는다, Byte단위로 가져오면 느리기 때문에 write 함수인 BufferInputStream 이나 Buf.. 더보기
[3일차] list 실습 package org.taca.hellojava; import java.util.HashMap;import java.util.List;import java.util.Map; public class PersonManager { Map items = new HashMap();public void put(String address, Person p){List list = items.get(address);if(list ==null){list = new ArrayList();items.put(address, list);}list.add(p);}} 이런형식으로 많이 쓴다. map 안에 String 과 List로 이루어져있는 곳에 List안에 접근할 경우 ... 더보기
[3일차] List Array,Collection Array String [] stringArray 와 같이 정의 연속한 메모리 공간. 각각 하나하나에 들어가는 동일한 연속된 공간 이런것들은 어레이라 한다. . . . . 메모리가 연속해서 존재한다. 자바에서 array 는 변수의 array Person[] p = new person[10] person 변수 10개를 연속해서 만들겠다는 의미. 그래서 객체가 아니라 변수다. 변수를 만든거지 객체를 할당한것이아니다. array를 만드는방법은 여러가지가 있다. public void m(String... s){// 이 파라미터는 가변처리를 할 수 있다. } hash 일단 저장공간을 크게 만들어서 hash(object)함수를 실행시켜서 만들어지는 숫자(메모리 주소)를 가지고 데이터를 넣어놓는다. object를 가.. 더보기
[3일차] 제네릭 왜 제네릭을 쓸까 ??컴파일 단계에서 에러를 띄우기 위해서 클래스나 메소드 안에서 특정한 타입을 정해서 쓸 수 있다 . ? T data; // 이 경우 data에 String이 보장되기 때문에 data.substring(); 접근이 가능하다. String 도 상속받고, 인터페이스도 상속받고 싶을때, 이렇게 처리할 수 있다. 이렇게 하면 된다. 메소드에 쓰고 싶을 때는 public void putData(T data){ }이렇게 쓸 수 있다. 임의에 제네릭 타입을 넣는 경우데이터를 추가할 순 없다. public printLog(MyClass p){} 타입과 관계없는 것을 불러올 때 사용한다. 이게 끝이지만 많이 쓴다. 예를 들면 파싱한 경우, 처리하고 결과를 넘겨주는 함수는 제네릭으로 만든 다. 절차는 동.. 더보기
[3일차] 어노테이션 실습 drawable 인터페이스를 implements한 class에 anndotation을 기입하여 friend와 enemy를 구분하게 만든다. 어떻게 ? 일단 어노테이션을 만든다. 내가 원하는 drawale에서 정의한다. 그리고 걔가 있는지 확인하는거다. 적과 친구가 같은거냐 아니냐에따라 충돌했냐 안했냐를 비교한다. isCollapse(Drawabled d1, d2){ } 더보기
[3일차] 어노테이션 메타데이터. 임의로 어노테이션을 만들 수 있다. 두가지를 정해야한다. retention 과 target retention은 이 정보를 어디까지 가지고 갈것인가. 1. source 타입, 2. class 타입3. runtime 타입 메모리 로딩할때, 같이 로딩해서 실시간으로 가지고 있는다. ex:) 메모리 로딩할때까지 가져갈 수도있고, 프로그램 실행중에도 계속 가지고 있을 수있다. @target({엘리먼트 타입.type,ElementType.METHOD})@Rentention 근데 거의 오픈소스를 많이 씀. 라이브러리에서 그런게 많음. 이러한 어노테이션 정보를 읽을 수 있는 기술을 Reflect라고 한다. - 동적으로 이름을 이용해서 java class를 다루는 방법. - java class 의 이름을 이.. 더보기
[3일차] 예외 처리 실습. 잘못된 부분에서 예외처리나 throw를 하게되면, 해당하는 부분에서 툴들이 자동으로 다음 부분을 잡아준다. package org.taca.hellojava.excetpion; public class BadPointException extends IllegalArgumentException { public BadPointException(){super();}public BadPointException(String message){super(message);}public BadPointException(String message, int x, int y){super(message+" : "+x+" , "+y);}} //////////////// package org.taca.hellojava.excetpio.. 더보기
[3일차]예외처리 에러처리 try catch문 에러를 처리하는 구문 throw Excetion 예외를 상위로 위임해서 처리. 예외처리는 상위로 위임하되 반드시 처리는 해야한다. 이것은 자신이 해당 상황에서 처리하지 못할때 상위로 위임하여, 처리하게 만드는것 제일 불친절한 것은 사용자에게 에러 메세지를 띄우는것. 예외를 디테일 하게 잡기위해서 try{} catchcatchcatch 이런식으로 분기하여 잡을 수 있다. 이때 catch 하는 상황에서는 가장 밑에있는 subclass를 맨 위로 올려야 한다. finally를 사용하면 예외가 발생해도 일단 실행하는 코드를 쓸수있음. RuntimExcetion Vm에서 어플리케이션 수행중 발생하는 예외 상황 ex Runtime Excetion을 상속받아 만들어진 애들. - Secur.. 더보기