Studying/Java에 해당하는 글 36

  1. [보충] 중복 없는 난수 발생시키기 2022.08.17

    public static String getRand() { String result = ""; int[] rand = new int[(int)(Math.random() * 4) + 5]; //5~8 int num = 0; boolean bCheck = false; for (int i = 0; i < rand.length; i++) { bCheck = true; while (bCheck) { num = (int)(Math.random() * 14) + 1; //1~14 bCheck = false; for (int j = 0; j < i; j++) { if (rand[j] == num) { //중복되는 상황 bCheck = true; break; } } } rand[i] = num; } //정렬 for (i..


  2. 미니 네트워크 프로젝트 (2) : 기능 구현하기 2022.06.24

    Function과 in, out Function 클래스를 만들어서 이 프로그램의 내부 프로토콜을 만들어 준다. 클라이언트가 어떤 요청을 보낼 때, 이 클래스에 정의된 프로토콜에 의해 응답을 할 것이다~ 라는 약속! Function.java package doodoo.common; public class Function { public static final int LOGIN=100; //로그인"된" 사람 public static final int MYLOG=110; //로그인"하는" 사람 처리 public static final int CHAT=200;//채팅 public static final int END=900;//남아 있는 사람 처리 public static final int MYEND=910;/..


  3. 미니 네트워크 프로젝트 (1) : 화면 구성하기 2022.06.23

    Swing 윈도우를 이용하여 간단한 프로젝트를 진행했다. 위 이미지처럼 왼쪽에는 메뉴 바, 중앙(빨간 영역)에는 주요 콘텐츠를 띄우고, 우측(초록색 영역)에는 채팅 화면을 띄우려 한다. 이 때, 주요 콘텐츠의 내용을 다양하게 구성하기 위해 화면 레이아웃을 여러 개 짜고, 왼쪽의 메뉴 바 버튼을 클릭할 때마다 각 화면을 띄워주도록 하려 한다. ControllerPanel 이라는 클래스를 만들어 JPanel을 상속받는다. CardLayout 클래스는 카드 형태로 레이아웃을 모아놓고 원하는 것을 꺼내 사용할 수 있도록 도와준다. import java.awt.*; import javax.swing.*; public class ControllerPanel extends JPanel{ public CardLayou..


  4. java.net package + 채팅 기능 만들기 2022.06.16

    네트워킹은 두 대 이상의 컴퓨터들을 서로 연결하여 네트워크를 구성하는 것을 의미한다. 이러한 개념은 서로 다른 컴퓨터 간에 데이터를 손쉽게 주고받을 수 있게 하기 위해 시작되었다! 자바의 java.net 패키지를 사용하면 네트워크 어플리케이션의 데이터 통신 부분을 작성할 수 있다. 클라이언트(client) / 서버(server) 클라이언트와 서버라는 단어는 컴퓨터 간의 관계를 "역할"로 구분한다. 서버(server)는 서비스를 제공하는 컴퓨터이고, 클라이언트(client)는 그 서비스를 사용하는 컴퓨터를 의미한다. 서비스는 서버가 클라이언트로부터 요청받은 작업을 처리해서, 그 결과를 제공하는 것을 의미한다. 이 때 서비스는 종류에 따라 파일서버, 메일서버, 어플리케이션 서버 등이 있다. 그리고 서버와 서..


  5. 입출력(I/O) : 직렬화(Serialization) 2022.06.15

    객체를 데이터 스트림으로 만드는 것을 직렬화(serialization)라고 한다. 왜 데이터 스트림으로 만드는가? → 객체에 저장된 데이터를 스트림에 쓰기(write) 위해 연속적인(serial) 데이터로 변환하는 것이다. 반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것은 역직렬화라고 한다.(deserialization) 객체는 클래스에 정의된 인스턴스변수의 집합이다. 다시말해 클래스변수나 메서드는 포함되지 않고 인스턴스 변수들로만 구성되어 있다. 인스턴스 변수는 인스턴스마다 다른 값을 가질 수 있어야 하고, 별도의 메모리 공간이 필요하다. 하지만 메서드는 변하지 않아 인스턴스마다 같은 내용의 코드(=메서드)를 포함시킬 필요가 없다. 즉, 객체를 저장한다는 것은 객체의 모든 인스턴스 변수의 값을 ..


  6. 입출력(I/O) : Stream, File 2022.06.14

    입출력은 컴퓨터 내/외부의 장치와 프로그램 간의 데이터 교환하는 것이다. 외부에서 데이터를 읽어와서 번역까지 해서 적절히 사용할 수 있도록 하는 것까지 포함한다. (ex) 키보드로부터 데이터를 입력받음, println()을 통해 화면에 출력함 한쪽에서 다른 한쪽으로 데이터를 전달하기 위해서는, 두 대상을 연결하고 데이터를 전송할 수 있는 통로가 필요하다. → 스트림(stream) 스트림은 단방향통신만 가능하여 하나의 스트림으로 입/출력을 동시에 처리할 수는 없다. 스트림의 종류 1. InputStream / OutputStream (바이트 기반 스트림) 입력스트림 출력스트림 입출력 대상 FileInputStream FileOutputStream 파일 ByteArrayInputStream ByteArray..


  7. Generics, Annotation 2022.06.13

    @클래스 public class ClassName{ @멤버변수 private A a; @메서드 public void display() {} @매개변수 public void aaa(매개변수) @생성자 public ClassName() {} } 지네릭스(Generics) 다양한 타입의 객체를 다루는 메서드 또는 컬렉션 클래스에서 컴파일 시 타입 체크를 하는 기능이다. 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄인다. 이를 통해 의도하지 않은 타입의 객체가 저장되는 것을 막아 주고, 소스가 간결해지도록 돕는다. 형변환이 잘못되었을 때 발생하는 오류 또한 줄일 수 있다. (ex) String으로 int를 받아 출력하는 경우 등↓ package day29_2; import java.util.*; publi..


  8. Collection(2) : Set, Map, Iterator, Stack&Queue 2022.06.13

    Collection FrameWork 컬렉션 프레임워크는 데이터 군을 저장하는 클래스들을 표준화한 설계다. 컬렉션 : 다수의 데이터(=데이터 그룹) / 프레임워크 : 표준화된 프로그래밍 방식 다수의 데이터를 다루는 데 필요한 다양하고 편리한 클래스를 제공한다. List 순서가 있고, 데이터 중복을 허용한다. (ex)데이터베이스 Set 순서가 없고, 데이터 중복을 허용하지 않는다. Map 순서가 없고, 데이터(value) 중복을 허용하나 key는 중복을 허용하지 않는다. Set 인터페이스 순서가 없기 때문에 같은 데이터를 저장할 경우 정확도가 떨어지므로 데이터 중복을 허용하지 않는다. List의 중복 데이터를 제거하기 위해 사용된다. 구현된 클래스 1) TreeSet : Red-Black tree라는 자료..


  9. Collection(1) : List 2022.06.10

    Collection FrameWork 컬렉션 프레임워크는 데이터 군을 저장하는 클래스들을 표준화한 설계다. 컬렉션 : 다수의 데이터(=데이터 그룹) / 프레임워크 : 표준화된 프로그래밍 방식 다수의 데이터를 다루는 데 필요한 다양하고 편리한 클래스를 제공한다. List 순서가 있고, 데이터 중복을 허용한다. (ex)데이터베이스 Set 순서가 없고, 데이터 중복을 허용하지 않는다. Map 순서가 없고, 데이터(값) 중복을 허용하나 key는 중복을 허용하지 않는다. List 인터페이스 순서가 있어 자동으로 인덱스번호가 부여되고, 데이터 중복이 가능하다. 앞부분의 데이터가 제거되면 순차적으로 데이터가 없는 위치가 없도록 조정된다. 다만 처리속도가 느리다. 구현된 클래스 1) ArrayList*** : 비동기 ..


  10. java.util package, java.text.Format 2022.06.09

    java.util 패키지는 유용한 클래스를 많이 제공한다. 자주 쓰이는 것만 우선 정리. 1. Random 클래스 난수를 얻게 해주는 클래스이다. 반환타입을 지정할 수 있으므로 Math.random()과 달리 정수가 필요할 때 형변환을 할 필요가 없다. public class RandomEx { public static void main(String[] args) { Random r = new Random(); int a = r.nextInt(100) + 1; // int범위 => 0~99발생 => 100은 제외 System.out.println(a); } } 2. regex 패키지 정규식(REGEX, REGular EXpression)? 텍스트 데이터 중 원하는 조건(패턴)과 일치하는 문자열을 찾기 위..