본문 바로가기

개발 상식

(13)
RTMP와 WebRTC란? 요즘 회사에서 사용하고 있는 도메인이다.실시간 라이브 방송을 위한 두 개념적 차이에 대해서 알아보자.RTMPReal Time Message ProtocolTCP 기반으로 전송을 보장해주며 주어진 순서대로 데이터를 전송할 수 있다.확장성 기반으로는 RTMP는 수천 , 수백만명 이상의 청중에게 라이브 스트리밍을 제공하게 확장할 수 있다.WebRTCWeb RealTime Communication신흥기술로 서버와 같은 중간자를 거치지 않고 브라우저 간을 P2P로 연결하는 기술 -> 중개서버를 거치지 않기 때문에 빠른 속도가 보장프로토콜 그 이상UDP 기반으로 0.1초 미만으로 실시간에 가까운 레이턴시 제공양방향 회의에 적합대중적으로 천명 한도로 더 적은 청중에게 라이브 스트리밍을 제공하는데 사용한다.서로의 연결..
데이터베이스 정규화 정규화(Normalization)관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지각 릴레이션에 중복된 종속성을 여러개의 릴레이션에 분할어떠한 릴레이션이라도  데이터베이스 내에서 표현 가능하게 함데이터 삽입 시 릴레이션을 재구성할 필요성 감소효과적인 검색 알고리즘 생성 가능제 1 정규화 (1NF)테이블 칼럼이 원자값 갖게 분리하는 것이다.제 2 정규화 (2NF)제 1정규화를 진행한 테이블에 대하여 완전 함수 종속하도록 테이블을 분해하는 것이다.완전 함수 종속이라는 것은 기본키의 부분 집합이 결정자가 되어..
지능형 지속 위협(APT, Advanced Persistent Threat) 지능형 지속 위협 (APT, Advanced Persistent Threat) 다른 해킹 방식과 달리 공격자가 특정한 대상을 목표로 다양한 해킹 기술을 이용해 은밀하고 지속적으로 공격하는 행위 기업이나 기관의 중요 시스템에 대한 보안은 단단해서 처음부터 침투가 어렵기 때문에 회사 개인 PC를 먼저 장악한 후, 합법적인 권한을 획득하여 내부로 들어가는 방법을 주로 사용한다. APT의 공격 단계 1. 먼저 목표를 정하고 목표에 대한 사전 조사를 실시한다. 2. 조사를 바탕으로 개인 PC에 악성코드를 감염시킨다. 3. 내부 인프라로 서서히 침투하여 몰래 드나들 수 있는 백 도어 및 툴을 설치한다. 4. 내부인프라 접속 권한을 상승시키기고 정보를 탈취하기 시작한다. 5. 후에 내부인프라를 장악하고 더 많은 유출..
보일러플레이트 코드란?(Boilerplate code) 보일러플레이트란? 최소한의 변경으로 여러곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드 흔히 말하는 찍어내는 코드를 말한다. (꼭 필요하고 간단한 기능이며 반복적인 기능) ex) java -> kotlin get/set이 코틀린에서 boilerplate 코드가 많이 줄어들었다. 보일러 플레이트 코드 제거하기 1. 어노테이션 프로세서 사용 2. Android Studio Plugin 사용 (Parcelable 구현, LiveTemplate, Loombok) 3. Kotlin 사용 (equals(), hashCode(), toString(), copy() 자동 생성) 4. 라이브러리 사용 (Dagger, Glide, Retrofit, Databindings) charlezz.medium.com/%EB..
가비지 컬렉션 원리 http://itmining.tistory.com/24 [JAVA] Garbage Collection의 기초 이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 이전에 안드로이드 메모리 관리 관련하여 Strong, Soft, Weak Reference에 대해 알아보면서 GC에 대해 살짝 언급한 적이 있습니다. Java의 가비지 컬 itmining.tistory.com 위 링크가 가비지 컬렉션에 대한 정리가 잘 되어 있는 것같아서 가져왔습니다. 프로그래밍 언어 C에서는 메모리의 할당, 반환을 수동으로 합니다. 그러나 자바에서는 GC에 의해서 자동으로 수행되는데 그 과정에 대해서 설명하겠습니다. 1단계 : Making 프로세스는 마킹을 호출해서 참조되는 객체와 참조되지 않는 객체로 스캔합니다. 모..
연결리스트(linked list) 연결리스트는 차례로 연결된 노드를 표현해주는 자료구조이다. 단방향 연결리스트에서 각 노드는 다음 노드를 가리킨다. java로 구현한 간단한 linked List class Node { Node next = null; int data; public Node(int d) { data = d; } void appendToTail(int d) { Node end = new Node(d); Node n = this; while (n.next != null) { n = n.next; } n.next = end; } } c로 구현한 연결리스트 typdef struct Node { int data; struct Node* next; // 다음 노드의 주소를 저장할 포인터 }Node;
아스키코드와 유니코드 아스키(ASCII) American Standard Code for Information Interchage 아스키코드는 7비트, 128개의 고유한 값만 사용한다. 통신 에러 검출을 위해 사용하기 때문이다. 유니코드 아스키코드에 모든 언어를 담을 수 없어서 용량을 확장한 유니코드가 등장한다. 처음에는 65536개, 2byte (2의 16승) 으로 표현했다.
힙이란? / What is the Heap Data Structure - 완전 이진 트리의 일종 - 공간적인 구조를 단순히 배열의 인덱스를 적절히 부여함으로써 구현한다. - 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다. - 삽입, 삭제 속도 O(long n) - 생산 속도 O(n) - 힙은 일종의 반정렬 상태 (느슨한 정렬 상태) 를 유지한다. - 힙 트리에서는 중복된 값을 허용한다. 힙(heap)의 종류 1. 최대 힙 (max heap) 루트 노드는 가장 큰 노드이다. 부모 노드 >= 자식 노드 2. 최소 힙(min heap) 루트노드는 가장 작은 노드이다. 부모노드