Many 1. /* 이게 보다 현실적 서버 하나가 데이터 하나만 바라보고 있는 상황은 거의 낭비에 가깝고 정말 많은 사용자들을 처리할 수 있는게 일반적. */ /* 얘는 간단히 말하면 출력만 하는 애. 읽어오는 애로부터 데이터를 한 줄씩 읽어 와서 콘솔에 찍기만 한다. */ public class ReceiveDataThread implements Runnable { //Runnable에서는 run()에서 무엇을 할 지를 명시하니까 Socket client; //Socket 변수 client 선언 BufferedReader ois; // BufferReader 변수 ois 선언 String receiveData; // 문자열 변수 receiveData 선언 /* 원래 여기는 try-with-resourc..
OneToOne 1. // 알고보면 버퍼리더가 입력도 받을 수 있다. public class SendThread extends Thread{ private Socket m_Socket; // 변수 m_Socket 선언 public void run() { // Thread에 있는 run 메소드를 오버라이딩 super.run(); // 부모 run 메소드 호출 try { // 얘는 키보드 입력하려고 만든 애 BufferedReader tmpbuf = new BufferedReader(new InputStreamReader(System.in)); // BufferReader 이용해 입력 객체 생성 PrintWriter sendWriter = new PrintWriter(m_Socket.getOutputStre..
- 자바 GUI는 요즘 워낙 안 쓰기 때문에 중요도가 너무 많이 떨어진다. - 화면에 보이는 것들은 다 객체로 이루어져있고, 필요하면 다 add를 써서 붙인다. ex. Container, GridLayout, JButton 등. - 콘솔 액션은 사실상 Enter 하나인데, - GUI는 액션이 정말 많다. ex. 마우스가 움직이거나, 클릭하거나, 입력하는 행위를 하거나.... => 그래서 ActionListener를 만들어서 액션을 수행할 때, 액션리스너는 그 액션을 듣고 있다가 뭔가를 하겠다. - Container는 '도화지'라고 이해하면 편하다. * 중요한 것은 콘솔 입출력과 크게 다르지 않으나, 액션이 다양하다의 느낌만 가져가는 것. GUI에서는 Action라는 개념을 도입해서, 그 액션을 계속 리스..
TCP / UDP 1. // 스캐너에서 진짜로 입력한 걸 보내는 것. // 잊지 말아야 할 것 // Receieve 먼저 켜고 Send를 켜야한다. public class SendUDP { public static void main(String[] args) throws IOException { DatagramSocket ds = new DatagramSocket(); InetAddress ia = InetAddress.getByName("192.168.20.34"); int port = 8888; //리시브 안 켜고서 send부터 켜면 안 된다. Scanner sc = new Scanner(System.in); // 사용자에게 입력 받음 System.out.print("입력 : "); // 이걸 Rec..
일반적으로 우리가 DB 연결할 때는 서버랑 데이터베이스 사이의 통신을 의미 public class Main { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { br.readLine(); } catch (IOException e){ e.printStackTrace(); } } } 이렇게 try-with-resources로 처리하면 굳이 close() 할 때 try-catch로 묶지 않아도 된다. (아니, 아예 close() 자체가 필요가 없다.) HashMap에서 values() 메서드(내장메서드)는 그 맵이 가지고 있는 모든 value들..

1. - 이건 아직 if문도 필요가 없음. 2. id&&pw일지 if id if pw일지를 생각. 3. 이런 idea public class Main { public static void main(String[] args) { // 3 -> 봄 // 4 -> 봄 // 5 -> 봄 // 만약에 // 0 -> 4 // 1-> 6 // 2 -> 1인 문제가 주어진다면. //=> 배열로 접근하자. int input; Scanner scanner = new Scanner(System.in); int[] numbers = {4, 6, 1}; input = scanner.nextInt(); System.out.println(numbers[input]); } } String으로 바꿔도 마찬가지 public class ..

1. 메서드 기준 계산기를 만든다고 가정하면 얘는 숫자를 자기가 항상 정해놓는다면 계산기로서의 존재가치 자체가 없는 거지. 그럼 숫자는 외부에서 입력받아 가져오는 게 더 적합하겠지 등... 29:34 2. - 모두 다른 위치에 있게 하려면 => 횟수차감(i--) - 위, 아래, 왼쪽, 오른쪽 이동할 때 => 이걸 아예 배열로 바꿀 수도 있을 듯 int[ ] wantrow = {-1, 0, 1, 0}; int[ ] wantcol = {0, 1, 0, -1); cf. 오른쪽 위 같은 것도 한방에 표현 가능 row -1 col 1 새로운 위치 int newRow = row + wantrow; int newCol = col + wantcol; - index이동하면서 범위가 터지는지는 확인해줘야 함. 3. - 함..

1. - 올림픽게임과 살짝 비교해서 보면 좋을 듯 - 올림픽은 국적을 필드에 놓는 것을 고려할 수 있다고 보면, 선수의 국적이 달라질 때, 선수의 행동이 달라지거나 가질 수 있는 값이 달라지진 않는다. - 그런데 포켓몬은? 피카츄와 파이리가 종족이 달라지면 서로 다르다(공격력 능력치, 회복력 등...) => 이럴 때는 다른 클래스로 만드는 게 효율적일 듯 - 만약 피카츄, 파이리 꼬북이가 그냥 별칭에 불과하다면, nickname이라는 필드 변수로만 선언해놔도 무방하겠지. 2. - 이 문제는 사실 두 개의 차이를 아느냐 묻는 문제 Person person; Person person = new Person(); - 위는 사람을 가리킬 수 있는 화살표가 만들어진 것이고(연결 x) - 아래는 new를 한 시점에..