목록BACK END/JAVA (23)
괴발개발
import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class EchoServer코드리뷰 { public static void main(String[] args) throws Exception{ //1) 서버와의 연결을 위해서 new serversocket을 통해 socket 생성하고 /그리고 포트는 겹치지 않도록5555로 지정해줍니다. ServerSocket server = new ServerSocket(5555); //2)..
1. Callable callable은 리턴값이 있다. => 그래서 .submit으로 리턴값을 빼내고 타입은 future라서 future로 받아줘야 한다. 그리고 그냥 result는 이상한 값으로 나오고 꼭, .get을 써서 빼내와야 한다. ** .submit() 특징 : 예외 발생해도 안죽이고, 재사용함. Future result = pool.submit(callable); String msg = result.get(); // Q.겟은 뭐지??? System.out.println("실행 결과 : " +msg); [리턴값 까지 빼내기] public class CallMain { public static void main(String[] args) throws Exception { //1. 스레드 풀 생성..
public class Server { //0) 일단 메인 메서드에 throws exception으로 exception에서 예외처리 해줄 수 있도록 던져 줬습니다. public static void main(String[] args) throws Exception{ //1) 서버와의 연결을 위해서 서버 서블릿 타입의 서버소켓을 생성하고 server에 저장합니다. /그리고 포트는 겹치지 않도록7777로 잡았음 ServerSocket server = new ServerSocket(7777); //2) while문을 통해서 요청이 올때마다 받을 수 있도록 해주었고, 요건은 true로 해주어서 계속 실행할 수 있도록 했습니다. while(true) {//2. 요청 대기 //3) 요청 대기중이라는 메세지가 시스템..

1. round robin 방식이 뭔지 요약 : 걍 빠른 순서대로 돌아가게 하는거 1. 순서가 없다. 2. 그냥 빠른 놈 순서대로 + 단점이 뭔지 1. 순차적으로 할 수 가 없다. (데이터를 공유 하니까) 2. 그래서 간섭이 생긴다. 2. 실선 ,점선 차이 점선 = 객체화 하는거 실선 = 객체화 하는데 , 필드에 만들어서 계속 이용 가능하게 하는거 3. 스레드는 메모리를 쉐어하기 때문에 문제가 생기는데 어떤 문제인지 데이터를 공유하기 때문에, 데이터 간섭의 우려가 있다. 4. 스레드 스레드는 프로그램을 작동시키는 원리 5. 싱크로나이즈(Synchronized) 방식 2개 매서드방식 : 메서드도 진입 x 블럭방식 : .메서드는 진입하지만, 특정 영역은 진입 안됨 6. 스레드의 상태 new runnable ..
이유 : round robin 방식을 사용하기 때문. *round robin 특징 1. 걍 빠른 사람 순서대로이다. 2. memory를 공유해서 간섭효과가 생긴다 so, 싱크로나이즈 방식 채택!함 -> synchronized 방식 1)method - 오직 하나의 스레드만 입장 가능하게 한다. public synchronized void setScore(int score) { } 2) block - 메서드 안까지는 들어올 수 있다. but 특정 영역에 대해서는 줄을 세운다. public void setScore(int score) { synchronized (this) { } } 1. new - 객체 생성(Start 호출 전) 2. Runnable - 실행 걸려있는 상태! (실행 전) 3. Terminat..
PartsUploadUtil util = new PartsUploadUtil(req); String fileName = util.getFileName("photo"); InputStream is = util.getStream("photo"); BufferedInputStream bis = new BufferedInputStream(is); FileOutputStream fos = new FileOutputStream("C:/img/"+fileName); BufferedOutputStream bos = new BufferedOutputStream(fos); int size = (int) util.getFileSize("photo");//1) 파일 사이즈 읽어주고 //2) 담아줄 똑같은 크기의 통 준비하고 ..