Archive: 2021

다양한 형태의 스트림 만들기

숫자형 스트림reduce 메서드로 스트림 요소의 합을 구하는 사례를 보자 123int calories = menu.stream() .map(Dish::getCalories) .reduce(0, Integer::sum); 이런 경우, reduce에 박싱비용이 포함되어 있다. 합계를 계산하기

스트림 더 알아보기

a. 필터링스트림 요소를 선택하는 방법을 필터링이라고 한다.프레디케이트 필터링과 고유 요소만 필터링하는 방법에 대해 알아보자! 프레디케이트로 필터링하기프레디케이트를 인수로 받아 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환하는 방식을 말한다.대표적으로 filter method가 있다. 예시로 보자! 123List<Dish> veget

스트림에 대해 간략하게 알아보자

a. 스트림이 뭘까?스트림은 자바 8 API에 새로 추가된 기능이다. 스트림을 이용하면 선언형(데이터를 처리하는 임시 구현 코드 대신 질의로 표현이 가능)으로 컬렉션 데이터를 처리할 수 있다. 쉽게 말하면, 스트림은 데이터 컬렉션 반복을 멋지게 처리하는 기능이라고 생각하자. 또한 스트림을 사용하면 멀티스레드 코드를 쓰지 않고도 투명하게 데이터를 병럴로 처리

람다표현식

a. 람다란 무엇인가?람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이다! 익명 : 람다 표현식에는 이름이 없다. 함수 : 람다는 메서드와 달리 특정 클래스에 종속되지 않으므로 함수라 부른다. 전달 : 메서드 인수로 전달하거나 변수로 저장할 수 있다. 간결성 : 익명 클래스보다 간결하다. 커스텀 Comparator 객체 구현 예시로 람다

동적 파라미터화 코드 전달하기

‘녹색 사과를 모두 찾고 싶어요… 아니다! 150그람 이상인 사과를 모두 찾고 싶어요…. 생각해보니 150그람 이상이면서 녹색인 사과를 모두 찾아야 될 것 같네요..’ 이렇게 시시각각 변화는 사용자의 요구 사항을 최소 비용으로 대응하기 위해서는 어떻게 해야할까? a. 동적 파라미터화란…동적 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을

4. 운영체제 구조 - 시스템콜, 커널 모드

응용 프로그램, 운영체제, 컴퓨터 하드웨어 관계 운영체제는 프로그램이 요청하는 메모리를 허가, 분배 운영체제는 프로그램이 요청하는 CPU시간 제공 운영체제는 프로그램이 요청하는 IO device 사용을 허가 제어 사용자 - 응용 프로그램 - 운영체제 - 하드웨어 이런 식으로 연결된다고 보자! 운영체제는 사용자 인터페이스를 제공한다. 쉘(Shell) 사

3. 시대별로 이해하는 운영체제 핵심 개념

1950년대ENIAC: 첫번째 컴퓨터.응용 프로그램 돌리기도 바빠 운영체제가 없었음. 응용 컴퓨터가 리소스를 관리. 1960년대 초반 프로그램 종류도 많아지고, 사용자도 늘기 시작. 배치 처리 시스템의 출현(batch processing system) 여러 응용 프로그램을 등록시켜놓으면, 순차적으로 실행시키는 시스템 두 프로그램의 순서를 일직선으로 실행.

2. 운영체제와 응용 프로그램의 관계

응용 프로그램?응용 프로그램은 우리가 흔히 사용하는 엑셀이나 크롬같은 소프트웨어를 말한다.(그렇다고 모든 소프트웨어가 응용 프로그램인건 아니다. 우리가 공부하고 있는 운영체제도 소프트웨어 중 하나다.)즉 응용 프로그램은 소프트웨어 중 운영체제를 제외한 모든 소프트웨어를 의미한다. 운영체제와 응용 프로그램 간의 관계 운영체제는 응용 프로그램을 관리한다.응용프

1. 운영체제의 역할은 무엇일까?

운영체제 역할1: 시스템 자원(System Resource) 관리자 operating system 혹은 os라고 부름 시스템 자원 = 컴퓨터 하드웨어cpu(중앙처리장치), 메모리(dram, ram)IO devices (monitor, mouse, keyboard, network…)저장매체: SSD, HDD 컴퓨터의 하드웨어는 혼자서 뭘 혼자 하

7. 힙

힙힙을 알기 위해서는 트리에 대한 기본적인 지식이 필요하다. 힙의 특성어떤 특정 값을 찾아내는 기능은 지원하지 않지만,값을 삽입하고, 최대값(최소값)을 찾거나 삭제하는데 큰 강점을 가진 자료구조.만약 최소값을 찾거나 삭제하고 싶으면 힙성질을 반대로 설정하면 된다. 간단한 용어 설명 트리 표현법 표현법 1:level 0 부터 해당 노드 자리에 노드가 있

6. 이진트리

이진트리? 자식노드가 최대 2개 뿐인 트리를 이진트리라 한다!! 1234567891011121314class Node: def __init__(self, key, parent=None, left=None, right=None): self.key = key self.parent = parent self.left =

5. 스택과큐

a. 스택 Stack차례대로 삽입하고 최근에 저장된 값을 삭제(FILO) push스택에 값 추가pop가장 나중에 push된 값을 스택에서 제거하고 반환top가장 나중에 push된 값을 제거하지 않고 반환__len__스택의 저장된 요소 갯수를 반환isEmpty스택에 요소가 존재하는지 참거짓 1234567891011121314151617181920212223

4. 해쉬테이블

a. 해시테이블해시 테이블은 일종의 정보를 저장하는 서랍장. a는 2층에 b는 3층에 c는 1층에 넣어두는 방식…b를 보고 싶으면 어떤 서랍에 넣었는지 알아내서, 3층 서랍에 있는 내용 중에 b와 일치하는 것을 찾는 것. 해시테이블은 삽입, 삭제, 검색 연산을 빨리 처리할 수 있다. 만약 순서대로 정보를 서랍장에 넣었을 경우, 어떤 정보를 찾으려 할 때 일

3. 양방향리스트

a. 왜 양방향 연결 리스트가 필요한가?한방향 연결 리스트는 다음 노드를 연결하는 링크만 존재, 이전 노드를 알려면 head부터 다시 탐색을 해야된다… 이런 불필요한 연산을 줄이고자 이전 노드를 연결하는 링크가 있는 양방향 연결 리스트를 구현하고자 한다. 양방향 연결 리스트의 주요 개념은 다음과 같다. 이전 노드로의 링크(prev)를 포함해 이전 노드로 이

2. 배열과리스트

a. 배열(array)데이터를 연속적인 메모리 공간에 저장 주소를 통해 매우 빠르게 접근 배열의 시작 주소,  저장된 값의 종류, 인덱스 세가지 정보로 원하는 값의 주소를 계산 가능. 읽기와 쓰기 연산에 O(1)시간이 걸림 고정된 길이를 가지며, 읽기와 쓰기만 지원하는 경우가 많다. b. 리스트 (파이썬)c의 배열에는 실제 데이터가 저장된 형식이지만, py

7.피보나치

피보나치 수 피보나치 수열이란 F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2)로 정의되는 수열! 구현 방법 피보나치수 정의를 그대로 재귀함수로 구현 간단하지만..O(g^n) 지수 시간이 걸림..(g는 황금비율 1.1618…) 이차원 배열을 재귀적으로 곱하기 (1 1)(F(n-1)) (1 0