적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

컴퓨터시스템 20

Runtime vs. Compile time 런타임과 컴파일타임

Compile Time 컴파일타임이란? : 개발 언어(high-level programming language)로 작성된 소스코드가, compile 과정을 통해 컴퓨터가 이해할 수 있는 기계어(low-level code / machine code)로 변환되는 과정을 말한다. 컴파일 타임 동안 컴파일러는 코드의 syntax, semantic, type 을 체크한다. Compile time Error 컴파일타임 에러란? : 소스코드가 컴파일 되는 과정 중에 발생하는 에러를 의미한다. 대표적으로 Syntax error, 파일 참조 오류 등과 같은 문제들로 인해 컴파일이 방해되어 발생하는 오류들이 있다. 컴파일 에러 발생 시, 현재 문제가 되는 소스코드를 알려준다. Run-Time 런타임이란? : 컴파일 과정을..

컴퓨터시스템 2023.02.06

Design Pattern 디자인 패턴이란?

디자인 패턴이란? 디자인 패턴은 소프트웨어를 개발할 때 발생하는 다양한 문제에 대한 재사용 가능한 템플릿 해결방법 디자인 패턴의 종류 1. Creational Design Pattern 2. Structural Design Pattern 3. Behavioral Design Pattern ( + architectural patterns ) Creational Design Pattern provides the object or classes creation mechanism that enhance the flexibilities and reusability of the existing code. They reduce the dependency and controlling how the use interac..

컴퓨터시스템 2022.12.20

네이밍 컨벤션 - camelCase, PascalCase, snake_case, kebab-case

Naming Conventions 대부분의 프로그래밍 언어에서는 각 단어를 완전히 별개로 해석하기 때문에, 여러 단어가 합쳐진 한 변수 내에 공백 문자가 있을 경우 단어마다 별개의 단일 단위로 처리가 된다. 따라서 두 단어 이상으로 변수명이나 클래스 명을 작성할 때는 공백을 제거하고, 단어를 단일 문자열로 결합하는 명명 규칙을 정해서 만든다. 프로그래밍 언어에서 자주 사용되는 명명 규칙들은 다음과 같다. 표기법 종류 camelCase PascalCase snake_case kebab-case camelCase (lower camel case) 첫 문자는 소문자로 시작하고, 띄어쓰기 대신 대문자로 단어를 구분한다. ex) phoneNumber, createdAt Swift에서 변수 및 상수 표기법 Pasc..

컴퓨터시스템 2022.09.14

동기화를 위한 방법들 Spinlock / Mutex / Semaphore

참고 : youtube - 쉬운코드 를 참고하여 정리한 것임 동기화 매커니즘 세 가지 - 스핀락 Spinlock - 뮤텍스 Mutex - 세마포 Semaphore race condition 경쟁 조건 : 여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때, 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황 synchronization 동기화 : 여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것 critical section 임계 영역 : 공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행(mutual exclusion) 가능한 영역 Spinlock mutual exclusion 을 위해 lock 을 가질 수 있을 때까지 반복해서 시도하는 방법 ..

컴퓨터시스템 2022.09.05

thread란? + 멀티쓰레드의 장단점

Process & Thread 프로세스 : 실행 중인 프로그램. 자원(resources. 메모리, CPU ...) + 쓰레드로 구성 쓰레드 : 프로세스 내에서 실제 작업을 수행. 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다. 프로세스 : 쓰레드 = 공장 : 일꾼 싱글 쓰레드 프로세스 = 자원 + 쓰레드 멀티 쓰레드 프로세스 = 자원 + 쓰레드 + 쓰레드 + ... + 쓰레드 여러 작업을 나눠 동시에 수행 가능. 보다 효율적으로 처리할 수 있다. 대부분의 프로그램은 멀티쓰레드로 작성되어 있다. 멀티쓰레드의 장단점 장점 - 시스템 자원을 보다 효율적으로 사용할 수 있따. - 사용자에 대한 응답성(responseness)이 향상된다. - 작업이 분리되어 코드가 간결해진다. 단점 프로그래밍할 때 고려해야..

컴퓨터시스템 2022.05.13

네트워크 기초

네트워크란? 노드들이 데이터를 공유할 수 있게 하는 디지털 전기통신망의 하나. 즉, 분산되어 있는 컴퓨터를 통신망으로 연결한 것. 서로 연결되어 있는 하나의 통신망 네트워크에서 여러 장치들은 노드 간 연결을 사용하여 서로에게 데이터를 교환한다. *노드 : 네트워크에 속한 컴퓨터 또는 통신 장비를 뜻하는 말 전 세계의 네트워크가 유기적으로 연결되어 동작하는 통합 네트워크가 바로 인터넷. (인터넷은 네트워크 망의 한 종류. 세상에서 가장 큰 네트워크 통신망) www (world wide web) 일반적으로 웹이라고 하며, 인터넷상에서 쉽게 정보를 찾을 수 있도록 고안된 세계적인 인터넷망으로, HTTP 프로토콜을 사용하기 위한 인터페이스 는 인터넷을 통해 웹과 관련된 데이터를 공유하는 것. 웹서비스 (http..

컴퓨터시스템 2022.01.06

[네트워크] 네트워크 패킷 분석 및 Wireshark 설치 (mac)

Wireshark 설치 및 http 네트워크 패킷 분석 방법 네트워크 패킷(packet) 이란? 네트워크를 통해 전송하기 쉽도록 자른 데이터의 전송단위. 패킷은 제어 정보와 사용자 데이터(페이로드)로 이루어진다. ex) IP 패킷은 헤더와 페이로드로 이루어진다. 페이로드 : 전송되는 실제 데이터. 전송의 근본적인 목적(필요한 정보)이 되는 데이터의 일부분. 함께 전송되는 헤더와 메타데이터 같은 데이터는 제외한 것. 프로토콜 오버헤드 : 네트워크를 통해 대상으로 라우팅되는 데이터와 함께 전송되어야 하는 정보. 올바른 대상에 도달하기 위해 전송중인 데이터에 추가로 보내지는 정보라고 볼 수 있다. 보통 패킷의 시작 부분, 헤더에 저장되어 Header라고도 함. 목적 : 정보 전송의 신뢰성 확보 및 시스템의 안..

컴퓨터시스템 2022.01.06
728x90
반응형