| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 자바 멀티스레딩
- 시스템 환경 변수 편집
- JAVA객체지향
- Java데이터 타입
- 형 변환
- for문
- 인텔리제이 한글 깨짐 해결법
- 컴파일
- 집합관계
- this예약어
- Java
- multi-threading
- 연관관계
- 인텔리제이 기초 설정
- function
- Thread
- JAVA기초
- 메서드 오버로딩
- While
- 반복문
- java변수
- IntelliJ IDEA
- 접근제어지시자
- 포함관계
- 생성자
- 상수
- OPP개념
- continue문
- break문
- 메서드
- Today
- Total
목록Java (85)
최원종의 개발 블로그
Map 인터페이스는 List, Set 과 완전 다른 구조List : [철수, 영희, 민준]Set : {철수, 영희, 민준} Map은 키 (Key )와 값 (Value) 을 쌍으로 저장Map : {철수 → 90점, 영희 → 85점, 민준 → 92점} ↑ 키 ↑ 값 // 예시사전 : "apple" → "사과" "banana" → "바나나" "cherry" → "체리"Map 도 같은 구조 : 키(단어) → 값(뜻)구조Collection (인터페이스) | ├── List (인터페이스) │ ├── ArrayList │ ├── LinkedList │ ├── Vector │ └── ... │ ├──..
List 와 Set 의 결정적 차이List 는 같은 값을 여러 번 저장할 수 있다.Set 은 같은 값을 저장할 수 없다List : [철수, 영희, 철수, 민준] → 철수가 두 번 들어가도 됨Set : [철수, 영희, 민준] → 철수를 두 번 넣으면 한 번만 저장됨 Collection (인터페이스) | ├── List (인터페이스) │ ├── ArrayList │ ├── LinkedList │ ├── Vector │ └── ... │ ├── Set (인터페이스) │ ├── HashSet │ ├── LinkedHashSet │ ├── TreeSet │ └── ... Set 의 세 가지 ..
ArrayList 와 Vector 는 List 인터페이스를 구현한 클래스 계층 구조Collection | └── List (인터페이스) ├── ArrayList ← 컬렉션-1 에서 배움 ├── LinkedList └── Vector ← 컬렉션-2 에서 배움 // List 인터페이스가 "이런 메서드를 반드시 가져야 한다" 는 //규칙을 정해두면 ArrayList, Vector 가 그 규칙을 따라 구현 // 그래서 두 클래스의 사용법이 거의 동일했던 것List 의 세 가지 특징 //리스트의 3가지 특징1. 순서 유지 : 넣은 순서대로 저장됩니다 (인덱스 0, 1, 2 ...)2. 중복 허용..
ArrayList vs Vector ArrayList Vector 사용법동일동일멀티스레드 안전안전하지 않음안전함속도빠름동기화로 약간 느림사용 상황단일 스레드멀티스레드 (소켓 서버 등) 단일 스레드 일반 프로그램 → ArrayList멀티스레드 소켓 서버 등 → Vector -실습 코드package server;import java.util.Vector;public class ChatRoomSimulator { //공유 자원 private static Vector userList = new Vector(); public static void main(String[] args) throws InterruptedException { //ArrayList 와 상용법 동일 ..
ArrayList를 쓰는 이유 기존 배열 사용// 배열로 채팅 접속자 관리String[] users = new String[100]; // 최대 100명? 101명 오면?int count = 0;// 접속users[count] = "철수";count++;// "철수" 퇴장 - 복잡!for (int i = 0; i 배열의 문제점1. 크기 고정 : 처음에 100으로 잡으면 101번째는 못 들어옴2. 삭제 복잡 : 중간 삭제 후 뒤 요소를 직접 밀어야 함3. count 관리 : 실제 개수를 변수로 따로 관리해야 함 ArrayList 는 이 세 가지 불편함을 모두 해결한 클래스import java.util.ArrayList;ArrayList users = new ArrayList(); // 크기 미..
컬렉션 프레임워크란? Java의 컬렉션 프레임워크는 자료구조의 개념을 Java 언어 차원에서 구현한 것.자료구조(Data Structure)는 컬렉션 프레임워크 보다 더 넓은 개념.알고리즘 및 컴퓨터과학 전반에서 데이터를 조직하고 저장하는 방식을 가리키는 말로, 언어에 종속되지 않는다.배열, 연결 리스트, 트리, 해시 테이블 등이 모두 자료구조에 해당함.
채팅에서 파일 전송 하기//지금까지 한 것소켓-2~6 : [프로그램] ──문자열──► [프로그램]//진행할 내용소켓-7 : [프로그램] ──파일──► [프로그램] 파일 전송 순서1. 파일 이름 (서버가 어떤 이름으로 저장할지 알아야 함)2. 파일 내용 (실제 데이터)로컬 파일 복사 방법// 로컬 파일 복사FileInputStream fis = new FileInputStream("원본.zip");FileOutputStream fos = new FileOutputStream("복사본.zip");byte[] buffer = new byte[4096];int bytesRead;while ((bytesRead = fis.read(buffer)) != -1) { fos.write(buffer, 0,..
1:1에서 1:N으로1:1 채팅 (소켓-5): 클라이언트 A ────────── 서버1:N 채팅 (소켓-6): 클라이언트 A ──┐ 클라이언트 B ──┼── 서버 → 모든 클라이언트에게 전달 클라이언트 C ──┘ 채팅방처럼 한 명이 말하면 모두에게 전해지는 방식을 브로드캐스트(Broadcast)라고 함. 1:1과 1:N의 핵심 차이1:1 서버는 클라이언트 하나를 처리하고 끝남1:N 서버는 클라이언트가 접속할 때마다 새 스레드를 만들어서 처리1:1 서버: accept() → Socket → 통신 → 종료1:N 서버: while(true) { accept() → 새 클라이언트 접속 new ClientHandler(soc..
양방향 관계 소켓 - 4 의 양방향 통신은 메시지를 한 번만 주고 끝남.While문의 문제점while (true) { String msg = reader.readLine(); // 상대방 메시지 읽기 → 여기서 멈춤 writer.println("내 답장"); // 내 메시지 보내기}//문제점읽는 동안에는 쓸 수 없고쓰는 동안에는 읽을 수 없다.상대방이 말해야만 내가 말할 수 있는 구조→ 진짜 채팅처럼 동시에 주고받는 것이 불가능//해결책해결책은 읽기와 쓰기를 별도 스레드로 분리하는 것-서버 측 코드package server.ch03;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamR..
-서버 코드package server.ch02;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class ServerFile { public static void main(String[] args) { try (ServerSocket serverSocket = new ServerSocket(5001)) { Socket clientSocket = serverSocket.accept(); ..