Computer Sience 12

컴퓨터 구조를 알아야 하는 이유

문제 해결의 관점 단순히 프로그래밍 언어 ex) 자바, 파이썬만 알아서는 여러 가지 문제가 생겼을 때 해결할 수 없다. 컴퓨터 구조를 알아야지 해결이 가능 즉 현재는 컴퓨터가 미지의 대상이지만 분석의 대상으로 시각을 바꿔야 한다.   성능, 용량, 비용 관점 개발을 할 때 항상 고려하는 3가지 컴퓨터 구조를 잘 알아야지 해당 3가지에 적합하게 개발 혹은 개발에 대한 인프라를 설계할 수 있다. 예를 들어 웹사이트를 개발하고 해당 사이트가 돌아가는 서버 컴퓨터를 고를 때 무조건 저렴한 컴퓨터? / 무조건 최신 컴퓨터? 이렇게 간단한 문제가 아니다. 개발할 웹사이트가 어느정도의 용량이 필요한지 또한 성능을 내기 위해서는 어떤 사양이 필요한지 내가 가지고 있는 비용에서 어떤 부분을 투자해야지 효율이 나오는지 이..

MSA 개념 정리

Scale-up & Scale-out인프라를 업그레이드 하는 방법 2가지 스케일 업(Scale-up), 스케일 아웃(Scale-out) 스케일 업(Scale-up)기존의 서버를 보다 높은 사양으로 업그레이드하는 것을 의미 하드웨어: 성능, 용량 증강을 목적으로 디스크 추가나 CPU, 메모리를 업그레이드시키는 것을 말한다. 소포트웨어: AWS의 EC2 인스턴스 사양을 micro → (small, medium)등으로 업그레이드 이처럼 하나의 서버의 능력을 증강하기 때문에 수직 스케일링(vertical scaling)이라고도 한다.  스케일 아웃(Scale-out)스케일 아웃(Scale-out)은 장비를 추가해서 확장하는 방식기존 서버만으로 용량이나 성능의 한계에 도달했을 때, 비슷한 사양의 서버를 추가로 연..

비밀번호 암호화

목차암호화 종류단방향 암호화 방법단방향 암호화 문제점 개선 (+ Salt)단방향 암호화 문제점 개선 (+ Key Stretching)양방향 암호화 특징 참고 자료암호화 종류 암호화를 하는 이유는 해당 정보가 중요하기 때문이다. ex) 비밀번호암호화에는 여러가지 방법이 존재 단방향 / 양방향 암호 방식이 있다. 단방향단방향은 암호화를 할 수 있어도 복호화해서 원래의 비밀번호를 알 수 없다.  양방향양방향은 복호화해서 원래의 비밀번호를 알 수 있다. 양방향 암호화는 대칭형 암호화, 비대칭형 암호화가 존재 대칭형 암호화와 비대칭형 암호화는 암호화할 때 사용하는 키와 복호화할 때 사용하는 키의 동일성에 대한 기준으로 구분한다. 단방향 암호화 방법 해시함수같은 입력 값에 같은 출력값이 나오는게 보장,  하지만 출..

[10분 테코톡] Gradle

참고 자료 [10분 테코톡] 루나의 Gradle [10분 테코톡] 메리의 GradleGradle 공식 문서 Gradle User ManualGradle Build Tool is a fast, dependable, and adaptable open-source build automation tool with an elegant and extensible declarative build language. In this User Manual, Gradle Build Tool is abbreviated Gradle.docs.gradle.org Gradle 이란?2012년에 출시된 Groovy를 기반으로 한 오픈소스 빌드 도구로, 거의 모든 타입의 소프트웨어를 빌드할 수 있는 빌드 자동화 시스템  빌드소스 코드를..

스레드 컨텍스트 스위칭 vs 프로세스 컨텍스트 스위칭

목차목표컨텍스트 스위칭(context switching)프로세스를 제어하기 위한 정보 모음 (PCB Process Control Block)프로세스, 스레드 구조스레드 컨텍스트 스위칭프로세스 컨텍스트 스위칭스레드 컨텍스트 스위칭이 더 빠른 이유컨텍스트 스위칭이 미치는 간접적인 영향?유저 관점에서 컨텍스트 스위칭이란?목표컨텍스트 스위칭은 무엇인가왜 스레드 컨텍스트 스위칭이 프로세스 컨텍스트 스위칭 보다 더 빠른지 이해컨텍스트 스위칭(context switching)CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것오늘날 프로세스는 무조건 1개 이상의 스레드를 가진다.CPU 기본 실행 단위 = 스레드그래서 프로세스가 다른 프로세스로 교체된다는 말은 프로세스(스레드)에서 다른 프..

OS level에서 어떻게 여러 프로그램이 동시에 실행될까?

목차목표용어 정리단일 프로세스 시스템멀티 프로그래밍멀티 태스킹스레드멀티 스레딩멀티 스레딩 VS 멀티 프로세싱참고 자료목표어떻게 여러 프로그램이 동시에 실행되는지 원리를 이해 용어 정리프로그램(Program)컴퓨터가 실행할 수 있는 명령어들의 집합프로세스(Process)컴퓨터에서 실행 중인 프로그램각각의 프로세스는 독립된 메모리 공간을 할당 받는다명령어들과 데이터를 가진다.CPU(Central Processing Unit)명령어를 실행하는 연산 장치메인 메모리(Main Memory)프로세스가 CPU에서 실행되기 위해 대기하는 곳IO(Input/Output)파일을 읽고 쓰기네트워크의 어딘가와 데이터를 주고 받는 것입출력 장치와 데이터를 주거나 받는 것단일 프로세스 시스템한 번에 하나의 프로그램만 실행됨→ 원..

JVM Run Time Data Area

목차JVM(Java Virtual Machine) 실행 데이터 영역애플리케이션이 어떻게 실행되는가?Stack 메모리Heap 메모리CPU는 어떻게 스택 메모리에서 데이터를 찾을까?메서드 호출과 this쓰레기 객체(Garabage Object)JVM(Java Virtual Machine) 실행 데이터 영역메서드 영역(Method Area)클래스 메타데이터, 상수, 정적 변수 저장 모든 스레드가 공유 클래스 로더(Class Loader)에 의해서 로드된다. 힙(Heap)모든 객체와 배열이 할당되는 메모리 영역 모든 스레드가 공유스택(Stack)각 스레드 마다 독립적인 스택을 가진다.메서드 호출 시 생성되는 스택 프레임이 여기에 저장 각 스택 프레임은 지역 변수, 매개 변수, 리턴 주소, 이전 스택 프레임의 B..

[PriorityQueue] 우선순위 큐 + Heap

목차 설명 + 시간 복잡도Heap 설명Heap의 삽입 순서Heap (삽입)Insert SimulationHeap FindHeap Erase Simulation 자바 PriortyQueue 계층 구조 이진 검색 트리 기반 vs heap 기반참고자료설명 + 시간 복잡도우선순위 큐 = pop을 할 때 가장 먼저 들어온 원소가 나오는 대신 우선순위가 가장 높은 원소가 나오는 큐원소의 추가가 O(lg N)우선순위가 가장 높은 원소의 확인 O(1)우선순위가 가장 높은 원소의 제거가 O(lg N)그냥 배열로 구현을 하면 세 연산의 시간복잡도가 O(1), O(N), O(N)이 되겠지만Heap 구조를 이용하면 O(lg N), O(1), O(lg N)에 가능하다. Heap이진 트리의 모양을 가지는 자료 구조이진 트리 : ..

TreeSet, TreeMap

TreeSet, TreeMap  -  자바 이진 검색 트리 기반 자료 구조 TreeSetTreeMap이진 검색 트리에 대한 자세한 내용 https://20240228.tistory.com/87 [BinarySearchTree] 이진 검색 트리목차트리 용어 정리이진 트리이진 검색 트리연산(Insert, Delete, Update, Find) 시뮬레이션이진 검색 트리 - 시간 복잡도자가 균형 트리용어 정리정점 : 트리에서의 각 원소루트 : 주어진 트리에서의 120240228.tistory.comTreeSet정렬된 집합 (Set)을 구현한 클래스, 이진 검색 트리 기반중복된 요소 허용 x - SortedSet 인터페이스의 확장요소들이 정렬된 순서로 저장 - SortedSet 인터페이스의 확장내부적으로 레드 -..

NavigableSet 인터페이스

NavigableSet Java 컬렉션 프레임워크에서 제공하는 인터페이스SortedSet 인터페이스의 확장정렬된 집합(Set)에 대한 탐색 및 탐색 기반의 연산 지원TreeSet은 NavigableSet 인터페이스를 구현하여 네비게이션 기능 제공public interface NavigableSet extends SortedSetNavigableSet 계층 구조 NavigableSet 메서드 정리 lower(E e) : 주어진 요소 e 보다 작은 요소 중에서 가장 큰 요소를 반환한다.floor(E e) : 주어진 요소 e 와 같거나 작은 요소 중에서 가장 큰 요소를 반환ceiling(E e) : 주어진 요소 e 와 같거나 큰 요소 중에서 가장 작은 요소를 반환higher(E e) : 주어진 요소 e 보다 ..