본문 바로가기

분류 전체보기146

프로토콜과 캡슐화 CH-01-02. 프로토콜과 캡슐화 패킷(packet) : 일상적으로 인터넷에서 주고받는 정보의 단위 송신지에서 파일을 보낼 때, 패킷단위로 쪼개어서 송신하고 수신 할 때는 목적지에서 패킷을 합쳐서 파일로 변환하여 수신한다. 패킷 교환 네트워크 : 주고받는 정보를 패킷 단위로 주고 받는 네트워크 패킷이란 패킷 교환 네트워크에서 주고받는 데이터 단위 패킷 교환 네트워크에서 중간 노드인 패킷 스위치가 패킷 손상 방지 및 라우터 역할을 한다. 패킷 교환 네트워크는 송신지에서 목적지까지 하나의 회선이 아니라 다른 회선도 사용하여 쪼갠 패킷을 전송한다. A→C로 가는 중에 B→ D 가는 정보를 같이 보낼 수 있다. 패킷으로 쪼개서 전송을 하기 때문에 요즘 일상적으로 사용하는 네트워크는 패킷 교환 네트워크 회선 교.. 2024. 1. 29.
네트워크 거시적으로 보기 CH-01-01. 네트워크 거시적으로 보기 컴퓨터 네트워크 : 여러 장치들이 서로 정보를 주고받을 수 있는 통신망 인터넷 : 아주 넓은 범위의 네트워크 끼리 연결 짓는 기술 , 네트워크끼리 연결한 네트워크 컴퓨터 네트워크 구성 요소 : 노드, 메세지, 간선(통신 링크), 노드와 간선으로 이루어진 그래프이다. 노드 : 종단 시스템, 호스트, 메세지를 최초로 송신, 생성하는 대상 최종적으로 수신하는 대상, 네트워크를 통해서 전달받은 어떠한 정보를 최종적으로 받아들이는 노드 = 호스트 호스트 : 메세지를 최초로 송신, 생성하는 대상, 최종적으로 수신하는 대상 주소를 통해 위치 특정 : 네트워크 이용하는 모든 곳에는 주소가 있다. 어떤 메세지를 전달할지, 전달안 할지 결정하려면 주소가 필요하다. 유니캐스트 : .. 2024. 1. 29.
자료구조, 알고리즘 CS 자료구조 자료 구조, 알고리즘 자료구조 : 데이터를 원하는 규칙 또는 목적에 맞게 저장하기 위한 구조 알고리즘 : 자료구조에 쌓인 데이터를 활용해 어떠한 문제를 해결하기 위한 여러 동작들의 모임입니다. 시간 복잡도 : 문제를 해결하는 데 걸리는 시간과 입력의 함수 관계 → 알고리즘의 로직이 얼마나 오랜 시간이 걸리는지를 나타냄(빅오 표기법) : 입력 범위 n을 기준으로 로직이 몇 번 반복되는지 나타냄 공간 복잡도 : 프로그램을 실행시켰을 때 필요로 하는 자원 공간의 양 선형 자료구조 선형 자료구조 : 요소가 일렬로 나열되어 있는 자료 구조 연결 리스트 : 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성인 자료 구조 prev 포인터와 next 포인터로 앞과 뒤의 노드를 연결 시킨 것 삽입, 삭제 :.. 2024. 1. 29.
API 활용 API 활용 JSON, XML Data Format 구조화된 데이터를 표현하고 전송하기 위한 데이터 형식 JSON 경량의 데이터 교환 형식으로 텍스트 기반의 구조화된 데이터를 표현 가독성이 좋고 다양한 프로그래밍 언어와 호환된다. 객체 JSON 객체는 중괄호로 묶인 키-값 쌍의 집합 키는 문자열, 값은 JSON 데이터 타입 중 하나 문자열, 숫자, 불리언, 객체, 배열, 널 배열 JSON 배열은 대괄호로 묶인 값들의 순서있는 리스트 XML eXtensible Markup Language 데이터를 저장하고 전송하기 위한 마크업 언어 XML 데이터는 트리 구조로 이루어져 있고, 요소, 속성, 텍스트, 주석 등으로 구성된다. 차이점 JSON은 간결한 구조로 인해 가독성이 높고 데이터 크기가 작다. XML은 태.. 2024. 1. 29.
Collection Framework API Collection Framework API 람다와 스트림 API 함수형 인터페이스 단 하나의 추상메서드를 가진 인터페이스 자바 8부터 함수형 인터페이스를 사용하면 람다 표현식을 활용 할 수 있다. 인터페이스의 구현체를 람다 표현식으로 구현 @FunctionalInterface 어노테이션을 사용하여 표시 어노테이션은 선택 사항이지만 컴파일러에게 해당 인터페이스가 함수형 인터페이스 임을 알려주는 역할을 합니다. 사용하는 이유 람다 표현식 지원 메서드 참조 Stream API와의 통합 병렬 프로그래밍 코드 재사용 인터페이스는 new를 사용하여 객체 생성을 할 수 없기 때문에 익명 클래스를 사용하여 구현체 구현 package fc.java.model2; @FunctionalInterface // 함수형 인터페.. 2024. 1. 29.
제네릭(Generic) 제네릭(Generic) 제네릭을 사용해야하는 이유 Generic 데이터 타입을 일반화 하는 방법 컬렉션 , 메서드, 클래스 등에서 사용하는 데이터 타입을 런타임 시에 결정 할 수 있다. 코드의 재사용성, 유연성이 높아진다. 제네릭 타입을 선언할 때 어떤 데이터 타입이 들어올지 결정하지 않으므로, 다양한 데이터 타입에 대해 일반적으로 적용할 수 있는 메서드나 클래스를 작성할 수 있기 때문입니다. public class ObjectArr { // 는 가변 타입 나중에 재정의로 타입 결정 private T[] array; private int size; public ObjectArr(int size){ array = (T[])new Object[size]; // 어떤 타입이 올지 모르기 때문에 일단 T[] 타.. 2024. 1. 29.
Collection API Collection API Wrapper 클래스 기본 데이터 타입을 객체로 다룰 수 있도록 만들어진 클래스 wrapper 클래스를 사용하면 자동으로 boxing과 unboxing이 이루어진다. boxing 기본 데이터 타입을 해당하는 wrapper 클래스 객체로 변환하는 것 unboxing wrapper 클래스 객체를 해당하는 기본 데이터 타입으로 변환하는 것 Auto-boxing 기본 데이터 타입의 값을 해당하는 wrapper 클래스 객체로 자동 변환 하는 것 Auto-unboxing wrapper 클래스 객체를 해당하는 기본 데이터 타입으로 자동 변환 하는 것 public class WrapperTest { public static void main(String[] args) { // 정수형 변수에 .. 2024. 1. 29.
인터페이스 기반의 프로그래밍 인터페이스 기반의 프로그래밍 인터페이스 기반의 프로그래밍이란? 인터페이스 클래스를 노출시키고 자식 클래스의 내부 코드를 숨긴다. 자식 클래스에서 재정의를 통해 C에서 노출 되어 있는 기능을 구현하고, 상속관계로 구현 느슨한 연결 두 객체가 느슨하게 연결되어 있다는 것은 그 둘이 상호작용을 하긴 하지만 서로에 대해서 서로 잘 모른 다는 것을 의미 User입장에서 자식 클래스의 내부 동작 방식을 모르기 때문에 느슨한 연결 관계 User는 인터페이스 부모 클래스를 통해 자식 클래스를 동작 시킬 수 있다. 자식 클래스의 동작 방식을 몰라도 사용 가능하다. // CC를 이용하여 BB를 동작시키는 프로그래밍(인터페이스 기반의 프로그래밍) public class InterfaceAPI { public static v.. 2024. 1. 29.