2020-01-12 13:20
⁄ 工业·编程
⁄ 共 3024字
一、CouchDB项目
http://incubator.apache.org/couchdb/
CouchDB是一个"面向文档"的数据库,采用 ErLang 语言开发,文档的格式是一个JSON字符串(也可包含二进制附件)。 底层结构是由一个"存储"(storeage) ,以及多个"视图索引"(view indexs)。 "储存"用来储存文件, "视图索引"用于查询处理。
CouchDB落实到最底层的数据结构就是两类B+Tree 。
CouchDB 能够适应非常广泛的...
Erlang, 开源阅读全文
2020-01-11 13:14
⁄ 工业·编程
⁄ 共 1563字
1、Erlang介绍
Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang是运行于虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多...
Erlang阅读全文
2020-01-10 06:46
⁄ 工业·编程
⁄ 共 2116字
和SGI版的STL一样,leveldb内存分配也采用了memory pool的整理方式,减少内存不断分配释放过程中造成的空间零碎化和浪费。leveldb的内存池实现可参见arena.h和arena.cc,有关内存池的测试代码有arena_test.cc。arena内存池是leveldb的关键组件,是很多其他功能模块(class)的成员,在cache、memtable、table组件中均有使用。
先看arena的成员变量:
private:
// Allocation state
//当前内存池的池顶
cha...
Arena, leveldb, 内存池阅读全文
2020-01-09 06:42
⁄ 工业·编程
⁄ 共 3254字
一. 什么是内存池?
内存池(Memory Pool)是一种内存分配方式,又被称为固定大小区块规划(fixed-size-blocks allocation)。
通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。
内存池是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内...
Arena, 内存池阅读全文
2020-01-08 08:22
⁄ 工业·编程
⁄ 共 5407字
任何一个C程序要想要得到实现,都离不开背后的一套庞大的代码来进行支持(至少包括入口函数,以及其所依赖的函数所构成的函数集合等),这样一套背后代码被称为运行库,C语言的运行库叫做CRT(Runtime Library)。
C语言的运行库某种程度上就是C语言的程序和不同操作系统平台之间的抽象层。它将不同的操作系统API抽象成相同的库函数(银弹理论的又一次胜利)。比如可以在不同OS上使用fread来读取文件,而事实上,fread在不同的...
glibc, MSVC, 区别阅读全文
2020-01-07 09:25
⁄ 工业·编程
⁄ 共 8813字
RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议,做流媒体传输方面的应用离不开RTP协议的实现及使用,为了更加快速地在项目中应用RTP协议实现流媒体的传输,我们一般会选择使用一些RTP库,例如使用c++语言编写的JRTPLIB库,网上关于RTP协议以及JRTPLIB库的介绍已经很多了,在此我也不再赘述,本文主要介绍实现了RTP协议的另一种开源库——ORTP库,这个库是纯使用c语言编写。在此对该库进行一...
Ortp阅读全文
2020-01-06 09:10
⁄ 工业·编程
⁄ 共 951字
RTSP发起/终结流媒体之后,再通过RTP协议传输流媒体数据 ,RTCP对RTP进行控制,同步。既然叫协议就要满足各自的标准,比如各自协议里面的头、参数、步骤(比如RTP步骤包含tcp/udp协议),每一层都有自己的封装,然后发送出去,接收方按照各自协议解析出来。
RTSP:实时流协议
· RTSP的请求主要有DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN,OPTIONS等,顾名思义可以知道起对话和控制作用
· RTSP的对话过程中SETUP可以确定RTP/RTCP使用...
Ortp, RTCP, RTP, rtsp, 区别阅读全文
2020-01-05 08:36
⁄ 工业·编程
⁄ 共 1379字
1、ORTP库概览
(1)库本身没有main,提供一堆功能函数,都在src目录下
(2)库的使用给了案例,有main,在src/tests目录下
(3)相关数据结构和头文件在include/ortp目录下
(4)ortp实现了rtp和rtcp协议,前者负责传输,后者负责控制和同步协调
2、ORTP库的使用案例
(1)src/tests/rtpsend.c
(2)ortp_init及av_profile_init
(3)ortp_scheduler_init和ORTP调度器:一个任务中完成多个会话的发送和接收,类似于select
(4)rtp_session_new...
Ortp, 开源阅读全文
2020-01-04 17:37
⁄ 工业·编程
⁄ 共 555字
PROJECT(usocket)
cmake_minimum_required(VERSION 2.6)
set(CMAKE_CXX_COMPILER "g++")
SET(LIB_SRC
./src/socket.c
./src/eventing/libuv.c
./src/eventing/epoll_kqueue.c
./src/eventing/gcd.c
./src/crypto/wolfssl.c
./src/crypto/openssl.c
&...
uSockets, uWebSockets阅读全文
2020-01-03 17:35
⁄ 工业·编程
⁄ 共 2936字
void *us_loop_ext(struct us_loop_t *loop) {
return loop + 1;
}
void *us_socket_ext(int ssl, struct us_socket_t *s) {
#ifndef LIBUS_NO_SSL
if (ssl) {
return us_internal_ssl_socket_ext((struct us_internal_ssl_socket_t *) s);
}
#endif
return s + 1;
}
void *us_i...
uSockets, uWebSockets, 网络编程阅读全文