본문 바로가기
반응형

Dev DBAN/개발 용어 핥아보기11

개발 용어 핥아보기 - 레디스(Redis) 알고 쓰기 먼저 글에 들어가기 앞서 설명을 하자면 이렇습니다. 개발 일기 - 성장 할 수 있는 계기 설 연휴가 시작하는 28일 저는 강남에 위치한 블록체인 관련 회사와 백엔드 개발자로 기술 인터뷰와 컬쳐핏 미팅을 진행했습니다. 이야기를 하면서 제가 느낀 점과 배운 것들 그리고 더 성장할 mumin-blog.tistory.com 위 포스팅에서 이야기했던 것과 마찬가지로 기술 인터뷰를 진행하면서 나온 이야기 중 제게 부족한 부분을 보완하기 위해 제 스스로 정리해 프로젝트에 적용 시키려 합니다. 나와 같은 주니어 개발자들이 시니어들과 이야기를 하면서 어려움을 겪지 않았으면 하는 바램에 이렇게 글을 적어봅니다. 레디스? 레디스(Redis)는Remote Dictionary Server의 약자로 시스템 메모리를 사용하는 키 .. 2022. 1. 30. 17:26
개발 용어 핥아보기 - 메모리 구조와 가상 메모리 메모리의 구조? 메모리는 총 4가지의 영역을 가지고 low부터 high까지 순차적으로 이루어져 있는데 낮은 순부터 이야기 하자면 코드, 데이터, 힙, 스택 4가지 영역 구조를 가지고 있습니다. 코드 영역은 실행할 프로그램의 코드가 저장되는 영역입니다. 데이터 영역은 프로그램의 전역 변수와 정적 변수가 저장되는 영역이며 프로그램이 시작할 때 할당되고 종료 시 소멸됩니다. 힙 영역은 메모리가 할당되고 해제되는 영역이고 malloc을 하면 힙 영역에 메모리가 쌓입니다. 스택 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다. 함수의 호출과 함께 할당되고 호출 완료 시 소멸됩니다. 가상메모리? 가상 메모리는 멀티 프로세스 환경에서 프로세스마다 충분한 메모리를 할당하기에 물리 메모리의 한계.. 2022. 1. 14. 15:00
개발 용어 핥아보기 - 객체 지향 프로그래밍 객체 지향 프로그래밍? 소프트웨어의 각 요소들을 객체로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법입니다. 객체 : 데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈을 의미함 클래스 : 공통된 속성과 연산을 갖는 객체의 집합을 의미함 인스턴스 : 클래스에 속한 각각의 객체를 의미함 메시지 : 객체들 간의 상호작용에 사용되는 수단. 객체의 동작이나 연산을 일으키는 외부의 요구사항을 의미함 특징? 캡슐화 외부에서의 접근을 제한하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것 데이터와 함수를 하나로 묶는 것(재사용성 용이, 변경 파급효과 적음) 정보은닉 캡슐화의 중요 개념. 캡슐 내의 세부 내용을 외부에 숨기는 것. 자신만의 연산으로 접근 (자바의 접근제어자) private : 자.. 2022. 1. 13. 14:59
개발 용어 핥아보기 - 데드락 데드락이란? 프로세스가 자원을 얻지 못해 다음 작업을 못하는 상태를 일컬은 말입니다. 한정된 자원을 여러 곳에서 사용하려고 할 때 생길 수 있는 문제 발생 조건 발생 조건으로는 한 자원에 대한 여러 프로세스 접근 불가 상태인 상호배제 자원을 가지고 있는 상태에서 다른 프로세스가 사용하고 있는 자원의 반납을 기다리는 점유와 대기 다른 프로세스의 자원을 강제로 가져올 수 없는 비선점 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 오는 환형 대기 해결방법 데드락 발생 조건 중 하나라도 해결하면 데드락이 걸리지 않으므로 데드락 발생 조건 중 하나를 제거하는 예방법 자원 할당 그래프, 은행원 알고리즘을 사용해 데드락을 회피하는 방법 데드락 발생 시 이후에 문제를 해결하는 방법 데드락 상태보다 해.. 2022. 1. 10. 15:50
개발 용어 핥아보기 - 멀티 스레딩과 멀티 프로세싱 멀티 스레딩과 멀티 프로세싱 멀티 스레딩이란? 하나의 프로그램에서 여러 일을 동시에 처리하는 방식을 말한다. 멀티 스레딩을 사용하는 이유? 프로세스를 이용해 동시에 처리하는 일을 스레드로 구현 시 메모리 공간과 시스템 자원 소모가 줄어든다. 스레드 간 통신은 Heap 영역을 이용해 데티어를 주고 받기 때문에 통신방법이 프로세스에 비해 간단하다. 스레드의 컨텍스트 스위칭은 프로세스와 다르게 캐시 메모리를 비울 필요가 없어 더 빠르다. 자원 소모와 응답 시간이 줄고 처리량이 향상 되기 때문에 멀티 스레딩을 사용한다. 멀티 프로세싱과 멀티 스레딩의 차이점? 멀티 프로세싱은 데이터, 힙, 스택 영역 모두를 공유하지 않지만 멀티 스레딩은 데이터, 힙, 스택 영역 중 스택 영역만 공유하지 않는다. 멀티 프로세싱은 .. 2021. 12. 29. 09:52
개발 용어 핥아보기 - 프로세스와 스레드 프로세스와 스레드 프로세스? 컴퓨터에서 실행되고 있는 프로그램 입니다. 운영체제 프로세스, 사용자 프로세스 2가지 존재 프로세스의 특징은? 프로세스는 각각 독립된 영역을 할당받고 기본적으로 최소 1개의 메인 스레드를 가지고 있습니다. 각 프로세스는 별도의 주소 공간에 실행되며 다른 프로세스의 변수나 자료구조에 접근이 불가능합니다. 프로세스 간 통신을 이용해야지만 자원에 접근이 가능합니다. 스레드? CPU 사용의 기본 단위이며 프로세스 내에 실행되는 여러 흐름의 단위를 의미합니다. 스레드는 ID, 프로그램 카운터, 레지스터 세트, 스택으로 구성됩니다. 스레드의 특성? 스레드는 프로세스 내에서 Stack만 따로 할당 받고 나머지 code data heap은 공유합니다. 프로세스 내의 주소 공간이나 자원들을 .. 2021. 12. 28. 17:07
개발 용어 핥아 보기 - TCP와 UDP 간단 정리 TCP와 UDP TCP? 연결형 서비스로 가상 회선 방식을 제공합니다. 3way handshaking으로 연결을 설정하고 4way handshaking으로 해제한다. 흐름, 혼잡 제어가 가능하고 높은 신뢰성을 보장한다. 패킷에 대한 응답 때문에 UDP보다 속도가 느리다 전이중, 점대점 방식으로 구성됨 TCP의 특징은? 서버와 클라 1대1로 연결되고 스트림 전송으로 전송 데이터의 크기가 무제한이다. 손실된 경우 재전송을 하기에 스트리밍 서비스에 불리하다 서버 소켓은 연결만을 담당한다. UDP? 비연결형 서비스로 데이터 그램 방식을 제공한다. 정보를 주고 받을 때 주고 받는 다는 신호 절차가 없다. 헤더의 첵섬 필드를 통해 최소한의 오류만 검출하므로 신뢰성이 낮다 TCP보다 빠르다 UDP의 특징은? UDP에.. 2021. 12. 23. 09:37
개발 용어 핥아 보기 - OSI 7계층? OSI 7 Layer Model OSI 7계층에 대해 정리해보자! 1. Physical Layer (물리 계층) 데이터를 전송매체에 적합한 전기적 신호로 바꾸는 기능을 함 리피터, 허브, 케이블, 이더넷, UTP, STP 케이블 2. DataLink Layer (데이터 링크 계층) 데이터의 오류 문제 해결 데이터 단위는 프레임(Frame) 순서 제어, 오류 제어, 흐름 제어, 프레임 동기화 3. Network Layer (네트워크 계층) 목적지 경로를 찾아주는 라우팅 역할 데이터 전송 단위를 패킷으로 부르며 송신 호스트의 주소와 목적지 호스트 주소가 포함되어 있음 라우터에 패킷이 도착하면 알맞은 라우터로 중개해 최종목적지로 도착시킨다 라우터가 자신이 관리하는 라우팅 테이블을 사용해 중개함 인터넷의 IP .. 2021. 12. 22. 18:42
개발용어 핥아보기 - ORM을 알아보자 ORM (Object Relational Mapping) 현재 개발 완료한 프로젝트(3 Line News)를 조금 더 발전 시키기 위해 공부하는 중 데이터 베이스와 객체 지향 언어(python)간의 호환이 되지 않기에 이걸 변환, 맵핑하는 프로그래밍 기법이다. 객체 지향 프로그래밍(OOP, Object Oriented Programming) 언어 는 클래스라는 개념이 존재하고 RDBMS에는 테이블이라는 개념이 존재한다. EX : OPP => python code [class name:] / RDBMS => sql [CREATE TABLE name ; ] Sql문으로 DB 관리 하는게 너무 귀찮아! 매번 commit,close도 해야되고 매번 구문을 직접 넣어서 써야돼 이걸 해결할 방법이 없을까? 위와 같.. 2021. 11. 1. 17:38
개발 용어 핥아보기 - 네트워크 주소 변환 NAT 개인 VPN 서버를 구축하면서 여러 개발 용어들을 찾아보게 되었는데 생각 정리를 위해서 한 번 적어보려고 합니다. NAT 이란? 네트워크 주소 변환 (Network Address Translation) IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술 내가 이해한 것은 하나의 IP를 가지고 여러 호스트 IP를 만들어 인터넷에 접속하는 방법이라고 생각한다. NAT을 왜 쓰나요? 1. 하나의 공인 IP(인터넷 연결이 가능한 IP)를 가지고 여러 갈래로 쪼개서 여러 대가 동시에 접속이 가능한 확장성 2. 공인 IP가 아닌 192.xxx , 172.xxx 등 사설 IP 대역을 사용하기에 내 공인 IP가 외부로 유출 되지 않는다는 .. 2021. 10. 12. 01:48
반응형

"); wcs_do();