분류 전체보기
Thread 동기화 문제
Thread 동기화 문제스레드는 중앙의 리소스풀로 부터 빌린다. 스레드는 메모리, 파일 핸들, 소켓 등의 리소스를 공유하여 프로그램을 좀 더효율적으로 만단ㄷ. 두 스레드가 동시에 같은 리소스를 사용하지만 않는다면 멀티 스레드 프로그램이 각 프로스스가별도의 리소스를 유지하는 멀티 프로세스 프로그램보다 훨씬 효율적이다.그러나 언제 어느 문장이 실행될지 몰라 결과의 순서를 예측할 수 없고, 자원을 공유하고 있을 경우 데드락 현상이 발생할 수 있다.스레드에 동일자원 접근에 대해 배타적인 접근을 할당해 줄 방법은 Synchronized를 명시해주는 방법이다.예제)Run(){System.out.println(result);} Thread.start() 진행 시 System.out.println 자원을 서로 공유하기..
JAVA Thread Futher, Callable, Executor
Futher, Callable, Executor스레드가 필요할 때 스레드를 생성하여 제공하는 ExecutorServiceCallabe 객체를 생성하여 Executor에 추가하여 객체를 순차적으로 실행한 후 Future 클래스로 결과를 반환 받는다.Callable 객체는 인터페이스이고 어떤 항목이든 담을 수 있는 call() 메소드 하나만 포함한다.EX) Callable 객체Class findmaxTask implements Callable{ FindMaxTas(int[] data, int start, int end){Super(data,start,end);} Public Integer getMax(){생략}} MultiThreadedMaxFinder 객체 Public class MultithreadedM..
Thread 폴링 방식
폴링 방식계속 돌면서 쓰레드가 종료될 때까지 while문으로 대기하다가 출력되면 종료콜링 방식쓰레드 안에서 종료되면 호출 하는 방식호출할 클래스의 레퍼런스를 알기위해서 대게 생성자로 해당 클래스에 대한 정보를 넘긴다.콜백이 폴링보다 좋은 이유는 CPU 시간을 낭비하지 않는다.콜백에 대표적인 예는 UI 컴포넌트에 이벤트를 달고 리스너를 지정해 주는 것이다. 그러면 해당 객체는 본인을 호출할경우 해당 메소드를 호출하는 콜백을 진행한다. 이는 옵저버 패턴이라고 한다. 스레드의 run() 메소드의 실행이 거의 끝나갈때, 마지막으로 해야 할 작업은 결과값과 함께 메인 프로그램에서 미리 정해 놓은 메소드를 호출하는 것이다. 메인 프로그램이 각각의 스레드에 대해서 결과를 물어 보는 것이 아니라, 각각의 스레드가 메인..
스트림(Stream)_입출력 스트림
스트림(stream)- 네트워크 프로그램의 가장 큰 비중은 입출력(I/O) 출력스트림1. java.io.OutputStream제공메소드public abstract void write(int b) throws IOExceptionpublic void write(byte[] data) throws IOExceptionpublic void write(byte[] data, int offset, int length) throws IOExceptionpublic void flush() throws IOException // 버퍼가 아직 가득 차지 않은 상황에서 강제로 버퍼의 내용을 전송public void close() throws IOException //스트림 사용이 끝나면 해당스트림을 닫는다. - Outpu..
STS의 github 연동
1. http://wedul.tistory.com/6 에서 해당 작업을 선진행한다. 2. cmd창 또는 terminal창을 키고 저장할 저장소를 먼저 clone한다.git clone "저장소의 ssh주소" 저장소가 없을 경우에는 github에서 저장소를 먼저 생성한다. 3. STS에서 현재 프로젝트에 우측 클릭한 후 "Team" -> "Share Project.."를 선택한다. 저장소를 복제한 위치를 repository경로에 추가하고 추가하고 싶은 프로젝트를 선택하고 확인을 누른다. 4. window -> show view -> git을 선택한 후 보여지는 git 저장소에서 commit을 눌러서 저장소에 올린다. 5. github에 프로젝트가 추가된것을 확인할 수 있다.
git사용을 위한 ssh-keygen 설정
git사용을 위한 ssh-keygen 설정 1. git을 먼저 설치한다. 2. window의 경우 git bash를 실행시키고, mac인 경우 terminal을 실행 시킨다. 3. ssh-keygen -t rsa -C "git계정"을 입력하고 계속 엔터를 입력한다. 4. 사용자 위치에 생성된 public key를 복사해서 git 관리 홈페이지에 ssh 부분에 입력한다.
Mybatis의 #{} 문법 사용방법
Mapper에서 #{num}에 들어가는 값은 getNum(), setNum()을 의미한다. 만약 하나의 mapper에서 두 개이상의 #{userid}, #{userpw} 와 같이 사용된다면 그것은 map의 형태로 들어오는 데이터의 key값이 안에 들어가 있는 문자열이다. 예를 들어 mapper에 insert into tbl_member (userid, userpw, username, email) values (#{userid}, #{userpw}, #{username}, #{email}) 다음과 같이 되어 있을 경우 DAOImpl 클래스에서 Public
Spring의 UTF-8 처리 필터 등록
web.xml에 다음과 같이 등록하여 주면 모든 URL에 들어오는 텍스트에 인코딩은 utf-8로 설정된다. encoding org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encoding /*
스프링 프레임워크의 기본적인 구성
1. VO 객체 -> 데이터를 담을 객체를 생성 public class BoardVO { private Integer bno; private String title; private String content; private String writer; private Date regdate; private int viewcnt; public Integer getBno() { return bno; } public void setBno(Integer bno) { this.bno = bno; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getCont..
Mybatis 관련 정리
iBaties Mybatis이전 버전인 iBaties는 개발자가 모든 SQL을 XML로 작성하고, SQL 문을 사용하는 DAO 클래스를 설계하는 SQL문을 사용하는 DAO 클래스를 설계해서 SQL 문을 호출하는 방식의 코드 Mybatis Mybatis는 ibaties에서 애노테이션을 지원하고 인터페이스와 애노테이션을 통해서 SQL 문을 설정하고처리할 수 있는 형태로 발전 Mybaties 특징 XML만을 이용해서 SQL문을 설정, DAO에서는 XML을 찾아서 실행하는 코드를 작성하는 방식 (대표적으로 사용) -> SQL 문은 별도의 XML로 작성되기 때문에 SQL문의 수정이나 유지보수에 적합 -> 개발 시 코드의 양이 많아지고, 복잡성이 증가 애노테이션과 인터페이스만을 이용해서 SQL문을 설정 -> 별도의..