TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol) : 인터넷에서 데이터를 전송하기 위해 사용되는 프로토콜 TCP - 신뢰성 있는 데이터 전송을 보장. - 패킷을 연결하고, 데이터 전송의 상태를 확인하며, 재전송을 수행하여 데이터 손실을 방지. - 데이터를 보내기 전에 연결을 설정해야 하며, 연결이 해제되기 전까지 데이터 전송을 지속한다. ex. 많은 웹 사이트, 이메일, 파일 전송 등에서 사용한다. 장점 신뢰성 있는 데이터 전송을 보장하여 데이터 손실이나 중복을 방지할 수 있다. 흐름 제어 및 혼잡 제어 기능을 제공하여 대역폭 효율성을 높인다. 단점 오버헤드가 크기 때문에 속도가 느릴 수 있다. 연결 설정에 시간이 걸리기 때문에 빠른 데..
TCP/IP ( ≒ 인터넷 프로토콜 스위트(Internet Protocol Suite) : 인터넷에서 데이터를 주고받기 위해 사용되는 프로토콜 - TCP (Transmission Control Protocol)와 IP (Internet Protocol)로 구성됨. IP는 패킷을 전송하는 역할을 하며, TCP는 전송 중인 데이터의 신뢰성을 보장하고 전송 속도를 조절하는 역할을 함. TCP/IP의 데이터 전송 과정 데이터를 패킷으로 분할한다. IP 프로토콜을 사용하여 각 패킷의 출발지와 목적지를 설정한다. 각 패킷이 도착할 때까지 전송될 경로를 결정한다. TCP 프로토콜을 사용하여 패킷 전송의 신뢰성을 보장하게 만든다. 전송된 패킷을 재조립하여 전체 데이터를 복원한다. - 인터넷에서 가장 널리 사용되는 프로..

call by Value 핵심 : "값이 넘어간다" 변화를 알고 싶으면 return int a = 5; 가 있고 xyz(int a) {} 메서드가 있다고 하자. main 메서드에서 xyz(a); 를 호출했을 때, ... xyz의 매개변수로 값인 5가 넘어간다. public class Sample { static int xyz(int a) { a = 10; return a; } public static void main(String[] args) { int a = 5; xyz(a); System.out.println(a); // 5가 출력됨!!!!! } } 이 때 바깥에 있는 int a는 변화가 있을까 없을까? 답 : 없다 왜? 값만 넘어갔기 때문에 - 매개변수로 넘어간 a를 가공한다고 해도 마찬가지. -..
예제 1. 객체에 대한 참조값을 요소로 가지는 객체 배열을 생성하는 코드를 구현하시오. 반복문을 사용하여 객체를 생성하시오. class Person01 { // Field private String name; private int age; // Constructor Person01() { } Person01( String name, int age ) { this.name = name; this.age = age; } // Method public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(in..

정답코드 1 /* - 5명이 기부를 1000원씩 함. - 총 성금이 500,000원이 되면 프로그램을 종료함. - 그런데 이제 문제는, 줄 한 번 서면 정보를 정확하게 알 수가 없어서 - 프로그램 종료 시에는 항상 504,000원이 출력될 것. */ class Account { int money = 0; synchronized void sendMoney() { // 돈내기 메서드 money += 1000; } } class Contributor extends Thread { // 얘가 각자 송금을 할 거니까 thread를 받는다. // 또한 Account 실객체를 하나 만들어서 돌려쓸 거니까, Account는 보유하고 있어야. // Account도 main문에서 받아온 거 하나를 넣어줄거란 말이죠. Ac..

프로그램, 프로세스, 쓰레드 프로그램(Program) : 컴퓨터에서 실행 가능한 명령어들의 집합. - 보통 하드디스크나 USB 등의 저장 장치에 파일 형태로 저장되며, 이를 실행하면 컴퓨터의 메모리에 로드되어 실행된다. 프로세스(Process) : 실행 중인 프로그램. 실행 중인 프로그램의 인스턴스(instance)라고 할 수 있음. - 컴퓨터 메모리에서 실행 중인 프로그램의 코드와 데이터를 저장하는 메모리 영역을 할당받으며, 실행 중인 프로그램의 상태를 유지하고 프로그램의 실행 흐름을 제어한다. 쓰레드(Thread) : 프로세스 내에서 실행되는 실행 단위를 의미. - 한 프로세스는 여러 개의 쓰레드를 가질 수 있으며, 각각의 쓰레드는 독립적으로 실행될 수 있다. - 하나의 프로세스 내에서 각 쓰레드는 ..
toString() : 객체를 문자열로 표현하는 메소드. toString() 메소드를 호출하면 객체의 내용을 문자열로 반환한다. - 이 메소드는 모든 Java 객체에 대해 기본적으로 구현되어 있으며, Object 클래스에서 상속받음. 따라서 모든 Java 클래스에서 toString() 메소드를 사용할 수 있다. 기본 동작 - 해당 객체의 클래스 이름, '@' 기호, 그리고 객체의 해시 코드를 문자열로 반환함. 그러나 대부분의 경우, 객체의 실제 내용을 더 유용한 방식으로 표현하기 위해 이 메소드를 재정의(override)한다. 예시 String 클래스에서 toString() 메소드는 해당 문자열 값을 그대로 반환하도록 재정의되어 있다. 이렇게 하면 String 객체를 출력할 때 문자열 값이 출력된다. 다..
public class ExCalendar { public static void main(String[] args) { Calendar c = Calendar.getInstance(); System.out.print(c.get(Calendar.YEAR)+ "년도 "); System.out.print(c.get(Calendar.MONTH)+1 + "월 "); //월을 나타내는 함수는 0부터 시작한다. System.out.print(c.get(Calendar.DATE) + "일 "); System.out.print(c.get(Calendar.HOUR) + "시 "); System.out.print(c.get(Calendar.MINUTE) + "분 "); System.out.print(c.get(Calenda..