[객체지향프로그래밍] #9 람다식
·
CS/객체지향프로그래밍
• 수학의 람다식 x, y의 값을 계산하는 수학 함수 f를 람다식으로 변환해보자.f(x, y) = x + y // x, y의 합을 구하는 수학의 함수 함수의 이름을 제거하고 간소하게 표현된다.(x, y) -> x + y 수학에서 람다식은 이름 없는 함수를 뜻한다.아래와 같이 괄호와 함께 x와 y에 대입될 값을 지정하면 계산이 이루어진다.((x, y) -> x + y)(2, 3)= 2 + 3= 5 • 자바의 람다식 자바에서는 함수를 메소드라고 부른다. • 람다식 구조 매개변수 리스트함수에 전달되는 매개변수를 나열한다생략 시, 컴파일러가 추론하여 알아서 처리한다.매개변수가 1개인 경우, 괄호를 생략할 수 있다. 애로우 토큰 ( -> )매개변수 리스트와 함수 코드를 분리시키는 역할이다.매개변수들을 전달하여 함..
[객체지향프로그래밍] #8 Nested Classes
·
CS/객체지향프로그래밍
• Nested Classes 다른 클래스 내에 정의된 클래스이다.외부 클래스의 멤버로 간주하며 멤버 변수 및 메서드에 접근할 수 있다.코드의 구조를 조직화하고 캡슐화하는데 유용하다. • Nested 클래스 4가지 1. Static Nested 클래스 (정적 중첩 클래스)외부 클래스의 정적 멤버로 선언되는 클래스이다외부 클래스의 인스턴스에 종속되지 않고 정적 멤버에만 접근한다. 2. Inner 클래스 (인스턴스 중첩 클래스)외부 클래스의 멤버 변수로 선언되는 클래스이다.외부 클래스의 인스턴스에 종속되며 모든 멤버에 접근할 수 있다.외부 클래스의 인스턴스를 통해 생성된다.class OuterClass { // 외부 클래스 class InnerClass { // 인스턴스 중첩 클래스 int..
[객체지향프로그래밍] #7 제네릭과 컬렉션
·
CS/객체지향프로그래밍
> Vector는 배열을 가변 크기로 다룰 수 있게 하고, 객체의 삽입, 삭제, 이동이 쉽도록 구성한 컬렉션 클래스이다.벡터에 삽입되는 요소의 개수에 따라 자동으로 크기를 조절한다.요소의 삽입과 삭제에 따라 자동으로 요소들의 자리를 이동한다. • 벡터 생성벡터를 생성할때 Vector의 E에 요소로 사용할 타입을 지정해야 한다.(int, char, double 등 기본 타입은 Wrapper 객체로 만들어야 저장해야 한다.)Vector v = new Vector(); • 주요 메소드 > HashMap은 key와 value의 쌍으로 구성되는 요소를 다루는 컬렉션이다.K는 키로 사용할 요소의 타입, V는 값으로 사용할 요소의 타입을 지정한다.HashMap h = new HashMap • 주요 메소드
[자료구조] #21 Graph(1)
·
CS/자료구조
• 그래프 임의의 두 개체의 연결 관계를 표현하는 자료구조이다.추천 시스템, 검색 시스템, 지식 표현 및 추출에 사용될 수 있다. • 그래프의 정의 그래프는 정점 집합과 간선 집합의 쌍으로 정의한다 G = (V, E) V(정점) : 하나의 노드는 고유한 key로 식별된다.E(간선) : E = {(u, v) | u, v ∈ V} • 그래프의 종류 방향 그래프 간선에 방향이 있어서 한쪽 방향으로만 갈 수 있다.(u → v)로 표현한다.(u → v) ≠ (v → u) 무방향 그래프 간선을 통해 양방향으로 갈 수 있다.(u, v) 또는 (u ↔ v)로 표현한다.(u, v) = (v, u) 가중치 그래프 간선에 비용(cost) 또는 가중치(weight)가 할당된 그래프이다. • 그래프 용어 인접 정점하나의 정점에..
[컴퓨터구조] #12 Memory(3)
·
CS/컴퓨터구조
Physical Addressing간단한 시스템에서 사용ex) 자동차, 엘리베이터, 디지털 카메라 등 Virtual Addressing최신 서버, 노트북, 스마트폰에서 사용 • Virtual Memory 메인 메모리를 스토리지의 캐시로 사용한다. 프로그램들은 메인 메모리를 공유한다.각 프로그램은 자주 사용하는 코드와 데이터를 저장하는 개별 가상 주소 공간을 가진다.메모리 참조 시 가상 주소를 사용한다.가상 주소 공간은 다른 프로세스로부터 보호된다. 가상 메모리의 block은 page라고 한다.주소 변환 실패는 Page fault라고 한다. • Virtual Address 프로그램은 메모리의 어느 위치에든 배치될 수 있다.여러 개의 프로그램이 동시에 수행될 수 있다. Address Translatinon은..
[컴퓨터구조] #11 Memory(2)
·
CS/컴퓨터구조
• Direct Mapped Problem Conflict Miss가 계속 반복해서 일어날 가능성이 있다. Block Size가 모두 4byte인 Extreme Case를 가정해보자.Cache에 하나의 Entry만 있기 때문에 Conflict Miss가 끊임없이 발생하게 된다. 위와 같은 상황을 Trashing이라고 한다.(Cache에 Data를 Loading하기 전에 반드시 원래 있던 Data를 쫓아내야 하는 상황) • Fully Associative Cache 각 Entry에 모든 주소로부터 온 Data가 저장될 수 있도록 한다. 장점 : Conflict Miss가 발생하지 않고 Cache가 꽉 차서 발생하는 Miss인 Capacity Miss만 발생한다.단점 : 모든 Entry의 Cache Tag를..
[컴퓨터구조] #10 Memory(1)
·
CS/컴퓨터구조
서로 다른 종류의 저장 장치는 다른 access time을 가진다. Random access 데이터가 어디있든지 간에 동일한 access time을 가진다.ex) DRAM, SRAM, Flash Memory Non-random access데이터의 위치에 따라 access time이 달라진다.현재는 거의 사용되지 않는다. • Dynamic Random Access Memory (DRAM) Data가 주기적으로 refresh 되어야 해서 Dynamic이다. Capacitor에 전하가 충전되는 것으로 data가 저장된다. 1 트랜지스터가 전하량을 확인하는데 사용된다.(충전되면 1, 빠지면 0) 데이터를 읽고 다시 써줘야 한다.구멍 뚫린 양동이라고 생각하면 이해하기 쉽다. • Static Random Acces..
[자료구조] #20 Disjoint Set
·
CS/자료구조
• Disjoint set (서로소 집합) 두 집합의 교집합이 empty하면 disjoint하다고 한다.입력을 여러 개의 상호 배타적인 그룹으로 나누어 관리할 때 사용한다. • 주요 연산 make-set(u) : 원소 u가 주어졌을때 u만을 담는 새로운 집합을 생성한다.find-set(u) : 입력 원소 u를 담고 있는 집합을 반환한다.union(u, v) : u를 가지고 있는 집합과 v를 가지고 있는 집합을 합친다. Disjoint set에서는 교집합 연산을 고려할 필요가 없다. • Disjoint Set의 표현 Disjoint set은 non-binary tree로 표현한다. 부모 노드를 가리키는 parent pointer tree를 사용한다.(각 자식 노드는 부모를 가리키고, 루트 노드는 자기 자신..
[컴퓨터구조] #9 Pipeline
·
CS/컴퓨터구조
• Piplelined Processing 중복 실행 방법에서 새로운 작업은 현재 작업 Set 중 첫번째 작업이 끝나면 시작될 수 있다.아래의 그림을 비교해보면 이해가 쉽다. pipeline에서도 sigle-cycle에서 공부했던 5가지 단계가 동일하게 적용된다.(IF/ID/EX/MEM/WB) • Pipelined Performance 파이프라인을 통해 성능향상이 많이 이루어진 것을 확인해볼 수 있다. 그러나 만약 balanced 되어있지 않으면, 성능향상은 작아진다.또한 각 명령어 당 수행시간은 감소하지 않는다. RISC-V ISA는 파이프라이닝에 적합한데, 이는 32-bit 고정 길이 명령어를 가지고 있고, 제한된 명령어 포맷과 load/store 주소지정방식을 가지고 있기 때문이다. • Piplin..
[객체지향프로그래밍] #6 모듈과 패키지
·
CS/객체지향프로그래밍
프로그램을 작성하다 보면 두 객체가 같은지 비교해야 하는 상황이 있다. • == 연산자== 연산자는 두 레퍼런스가 동일한 객체를 가리키는지 비교한다.Point a = new Point(2,3);Point b = new Point(2,3);Point c = a;if(a == b) // false System.out.println("a==b"):if(a == c) // true System.out.println("a==c"): 실행결과 : a==c 위의 코드가 실행되면 2개의 Point 객체가 생성되고, 레퍼런스 a와 b는 이들을 각각 가리킨다. • boolean equals(Object obj)equals는 인자로 건네진 객체 obj와 자기 자신을 비교하여 두 객체의 내용이 같은지를 비교하는 메..