- 博客(46)
- 资源 (14)
- 问答 (1)
- 收藏
- 关注
原创 redis源码解析-压缩链表-ziplist(6.2.3版本)
redis使用特殊的数据结构,使得ziplist能够同时存储int和string, 具体的元素结构如下:/* Each entry in the ziplist is either a string or an integer. */typedef struct { /* When string is used, it is provided with the length (slen). */ unsigned char *sval; //如果是字符串,此处不为NU...
2022-04-24 11:17:30
868
原创 redis源码解析-整数集-intset(6.2.3版本)
整数集,为redis中的一种结构体,你可以把它理解成stl中的std::<set>,当然redis专门定制化这种结构是为了优化内存效率和查找效率。#define INTSET_ENC_INT16 (sizeof(int16_t)) //16位编码#define INTSET_ENC_INT32 (sizeof(int32_t)) //32位编码#define INTSET_ENC_INT64 (sizeof(int64_t)) //64位编码#ifndef __INTSET_H
2022-04-22 14:41:58
153
原创 redis源码解析-基数统计算法-hyperloglog(6.2.3版本)
1,hyperloglog原理 hyperloglog是一种基数统计算法,具体原理请大家自行百度,里面涉及到具体的数学知识,我不在这里描述,也讲不清楚。 hyperloglog原理具体大家可以参考https://zhuanlan.zhihu.com/p/58519480https://blog.csdn.net/firenet1/article/details/77247649https://blog.csdn.net/zanpengfei/article/details/...
2021-08-16 19:19:26
164
原创 redis源码解析-跳表-skiplist(6.2.3版本)
跳表,是redis中的一中链表数据结构,能够提高链表的查询效率。使用跳表,可以避免遍历一些不必要的节点,从而提高了查询,删除,插入的效率。1,跳表结构体typedef struct zskiplistNode { sds ele;//节点元素,字符串 double score;//元素分数,在跳表中按照该分数排放 struct zskiplistNode *backward;//上一个节点 struct zskiplistLevel { struct
2021-08-07 13:29:26
193
原创 redis源码解析 动态字符串- sds (6.2.3版本)
redis封装了C语言的字符串形成动态字符串(SDS)机制,SDS与纯C字符串对比为:C字符串 SDS 获取长度O(n) 获取长度O(1) API不安全,可能造成缓冲区溢出 API安全,不会造成缓冲区溢出 不能操作二进制字符串,容易被截断 能操作二进制字符串 不能扩容,只能深拷贝另外一个缓存区域扩容 能动态扩容,而不用深拷贝字符串 修改字符串效率低 修改字符串效率高 1,sds数据结构...
2021-08-05 15:39:29
143
原创 redis源码解析 hash字典- dict (6.2.3版本)
hash字典,kv存储,用于快速查询,redis中的源码为 dict.h和dict.c, redis hash字典采用渐进式hash实现,具体渐进式hash,请搜索相关博文阅读。redishash字典的结构体声明typedef struct dictEntry {//字典实体节点 void *key; //字典实体节点key union { void *val; uint64_t u64; int64_t s64; .
2021-08-04 15:58:15
259
原创 redis 源码解析 双向链表-adlist(6.2.3版本)
adlist,双向链表,相对比较简单的结构体。 节点指针定义为void* value 就是为了能够通用,有用户定义自己的结构体模型,该指针只用指向malloc的指针地址即可;双向链表结构体中的指针函数,也只是为了方便用户自定义进行释放,比较,复制。在实际使用中,可以根据需要扩展双向链表的查询。//双向链表结构体typedef struct listNode {//list节点 struct listNode *prev;//前一个节点 struct listN...
2021-08-02 21:20:22
132
原创 XCounter (源码统计工具 /代码统计工具)
XCounter (源码统计工具/代码统计工具)支持统计语言: c语言、c++语言、c#语言、java语言和python语言 (后期版本将会加入其它相关语言)目录XCounter (源码统计工具/代码统计工具)下载路径:运行界面统计结果界面导出报告目前网上纯粹的代码统计工具相对比较少,有一款国外的软件sourcecounter,支持导出报告,但是该款软件比较老旧,没...
2019-09-10 23:38:34
990
原创 python集成mysql第三方插件mysql-connector
python下载地址:https://www.python.org/downloads/ mysql-connector下载地址:https://pypi.org/project/mysql-connector-python/#history 1,安装python 2,集成mysql-connector: pyth...
2018-11-07 15:03:53
1036
转载 大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合
一直以来都想接触Storm实时计算这块的东西,最近在群里看到上海一哥们罗宝写的Flume+Kafka+Storm的实时日志流系统的搭建文档,自己也跟着整了一遍,之前罗宝的文章中有一些要注意点没提到的,以后一些写错的点,在这边我会做修正;内容应该说绝大部分引用罗宝的文章的,这里要谢谢罗宝兄弟,还有写这篇文章@晨色星空J2EE也给了我很大帮助,这里也谢谢@晨色星空J2EE之前在弄这
2017-12-13 19:49:26
1069
转载 构建负载均衡服务器之二 LVS详解及应用
转载于:http://blog.51cto.com/linuxnote/1654750 在上一篇中介绍了负载均衡及集群的原理,本篇主要介绍下下实现负载均衡的软件之LVS的原理及应用。一、LVS的介绍1、 LVS的定义一般来说,LVS采用三层结构:负载调度器、服务器池、共享存储。工作在TCP/IP协议的四层,其转发是依赖于四层协议的特征进行转发的,由于其转发要依赖于协议的
2017-12-01 10:33:43
500
转载 构建负载均衡服务器之一 负载均衡与集群详解
转载于http://blog.51cto.com/linuxnote/1654565一、什么是负载均衡 首先我们先介绍一下什么是负载均衡: 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。这是来自维基百科的
2017-12-01 10:31:09
1151
转载 15款顶级的开源人工智能工具推荐
转自:http://os.51cto.com/art/201609/517610.htm人工智能是技术研究领域最炙手可热的领域之一。IBM、谷歌、微软、Facebook和亚马逊等公司正投入巨资进行研发,并纷纷收购在机器学习、神经网络、神经语言和图像处理等领域取得进展的初创公司。考虑到人工智能如此受关注,斯坦福大学的专家最近撰写的一份智能研究报告得出结论:“现在到2030年人工智能可能会出现
2017-01-17 10:48:14
5713
转载 临界区,互斥量,信号量,事件的区别
转载于 http://blog.csdn.net/bao_qibiao/article/details/4516196最早的一篇原文:http://hi.baidu.com/cnrjm/blog/item/5d217e54ff863550564e00b9.html 四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段
2016-10-11 10:12:07
441
原创 APE格式及编解码说明
APE结构组成APE_DESCRIPTOR描述信息APE_HEADER头Table表(Wav头)标识头Frame*帧 1,APE_DESCRIPTOR:APE结构的描述数据块。它描述了APE的长度,偏移量等信息内
2016-09-13 08:47:42
5454
转载 c++实现反射机制(两篇)
转载于: http://eric-gcm.iteye.com/blog/1616110 第一篇C++ 编程语言是一款功能强大的计算机应用语言。其能够支持很多程序设计风格。我们今天将会在这里为大家详细介绍一下有关C++反射机制的具体实现步骤,大家可以从中获得一些有帮助的内容。在Java编程中,我们经常要用到反射,
2016-08-31 09:30:56
3207
原创 循环buffer的一种实现
头文件: class CCircleBuffer {public: // construction / destruction CCircleBuffer(); virtual ~CCircleBuffer(); // create the buffer void CreateBuffer(int nBytes, int nMaxDirect
2016-08-30 19:47:42
679
原创 宽字符wchar、窄字符char、无符号字符(unsigned char)之间的转换
头文件: typedef char str_ansi; typedef unsigned char str_utf8; typedef wchar_t str_utf16;c
2016-08-30 19:23:18
2284
2
原创 c++ 一种智能指针的实现
智能指针源码实现: #include #include using namespace std;#define SAFE_DELETE(p) if (p) { delete p; p = NULL; }class KRefCount{public: KRefCount():m_nCount(0){}public: unsigned AddRef(){ return
2016-08-30 19:13:08
834
原创 webrtc视频引擎之video_render(视频渲染)介绍
此部分为webrtc视频渲染显示,代码结构如下: 其实此部分代码与《webrtc视频引擎之vedio_capture_module介绍》的代码结构一样 1,图中能够直接看到的.h和.cc文件也是一个适配作用,用于根据系统平台适配采用某部分进行视频渲染; 2, android文件夹用于在android平台渲染显示视频图像; 3, IOS文件夹用于在IOS平
2016-08-21 14:50:17
6021
原创 webrtc视频引擎之 vedio_capture_module介绍
此部分为webrtc采集视频图像之用,源码结构如下: 如上代码结构: 1,能直接看到的代码,是视频采集适配源码,用于不同平台的适配; 2,文件夹android为采集android设备的视频信息; 3,文件夹 ios为采集ios设备的视频信息; 4,文件夹linux为采集linux设备的视频信息;
2016-08-21 14:22:46
1797
原创 webrtc的客户端及服务程序
服务器运行程序: http://download.csdn.net/detail/qazwsxwtc/9390341 PC windows 客户端程序下载地址: http://download.csdn.net/detail/qazwsxwtc/9393906因为目前仅仅只实现了windows平台上的客户端和服务程序,后期会把linux服务期程序以及android
2016-01-13 22:06:13
2853
6
原创 官网 下载webrtc需求软件准备
Prerequisite softwareDepot ToolsYou need to have the depot tools installed: See http://dev.chromium.org/developers/how-tos/install-depot-toolsGit: On Windows it will install
2015-12-16 16:18:36
1007
转载 官网 webrtc_IOS 源码下载和编译
iOSDevelopment environmentAn OS X machine is required for iOS development. While it's possible to develop purely from the command line and text editors, it's easiest to use XCode
2015-12-16 16:17:28
2924
原创 官网 webrtc_android 源码下载和编译
Getting the codeAndroid development is only supported on Linux.InstallPrerequisite softwareSet the path to your Java OpenJDK 7 dir if you're not using the Ubuntu default:export J
2015-12-16 16:16:24
3434
原创 windows WebRTC下载编译
1, 下载TortoiseSVN工具 http://sourceforge.net/projects/tortoisesvn/2,下载msysgit 选择一个版本安装 http://code.google.com/p/msysgit/downloads/list把msysgit的bin目录手动添加到系统环境变量PATH中3,下载Tortoisegithttp://
2015-12-16 16:12:03
4453
转载 libev安装
转载于http://www.cnblogs.com/wunaozai/p/3950249.htmlSocket网络编程不知不觉已经学了快两个月了。现在是时候找个网络库学学了。搜索了很多关于如何学网络编程的博客和问答。大致都是推荐学一个网络库,至于C++网络库有那么几个,各有各的好处。这里就选这个代码量少了,方便入门,等有一定的基础后,再看看“学之者生,用之着死”的ace或者有可
2015-12-15 14:31:56
4093
转载 boost生成库的命名规则
转载于http://www.cppblog.com/Robertxiao/archive/2013/01/06/197022.html 生成文件命名规则:boost中有许多库,有的库需要编译、而有的库不需要编译,只需包含头文件就可以使用。编译生成的文件名字普遍较长,同一个库根据编译链接选项不同,又可以生成多个不同名字的文件。生成的文件名字是很长,可是这样带的信息才多,也就
2015-11-25 16:32:12
1446
原创 boost VS 编译
1,下载boost源码 直接到官网就可以下载(http://www.boost.org/) 写博客的时候最新版本为1.59 http://www.boost.org/users/history/version_1_59_0.html 2,找个容量足够大的盘,最好剩余容量超过10G,解压缩下载下来的boost源码。 3,通过VS
2015-11-25 16:25:05
1134
原创 webrtc音频引擎总结
该篇文章将基于voice_engine模块对webrt音频做个总结,但是不包括网络传输部分的细节介绍。关于webrtc的网络模块,将会在接下来的时间以单独的网络模块介绍与大家分享。 voice_engine 引擎模块的代码结构include文件夹下的所有.h文件,都是在调用webrtc音频引擎的时候必须包含的头文件。其中现在的版本没有voe_file.h头文件,我的这个版本
2015-10-16 10:06:54
3774
原创 webrtc音频引擎之压缩格式介绍
webrtc的音频压缩格式主要包含 G711、G722、ILBC、ISAC、opus。 关于这几个格式的介绍,每个百度都有一大箩筐,每个压缩格式的具体将不会详细介绍。 前两个G系列的压缩格式都是时代的产物,促进了音频技术的发展。 后面的三个有损压缩格式都是互联网时代voip的产物,我在使用的时候没感觉到他们之间的具体能带来什么差别,可能是没有具体的比较吧,也不知道这三个谁优于谁
2015-10-16 09:25:01
4788
原创 webrtc音频引擎之common_audio介绍
common_audio模块,该模块主要涉及一些音频处理的通用业务,也包括vad静音检测,。 common_audio的结构如下图: 1, resampler, 从因为就可以看出来,顾名思义就是重采样,也就是对采集的音频数据就行采样率转换; 采用率的转换,如8k/s转换为16k/s,简单的实现方法是把每个采样点复制一份就成了16k/s的采样率;从16k/s转换
2015-10-16 09:03:13
2145
原创 webrtc音频引擎之CNG模块介绍
CNG即comfort noise generator,舒适噪音生成。 该模块主要完成舒适噪音的生成,模块结构为: 代码文件非常少,总共的代码也不多,有兴趣的可以去研究舒适噪音的生成原理。 大家也可以把这个模块剥离出来供自己使用。
2015-10-15 17:57:37
3985
1
原创 webrtc音频引擎之audio_processing介绍
audio_processing模块为语音处理的精华,包含音频的回音处理、降噪处理、自动增益处理等音频的核心处理业务算法,(静音检测在另外一个模块,不知道新版与这基本算法放到了同一个模块木有) , 模块结构为: 1,aec和aecm,也就是回音消除,其中aecm主要针对移动设备。 这两个模块的结构不具体介绍,里面的算法我自己也没有弄明白。 网上有很多吹嘘什么aec怎么怎么牛逼
2015-10-15 17:49:21
6179
原创 webrtc音频引擎模块之 audio_device介绍
audio_device模块的目录结构如下: 1,include 文件夹是该工程的库包含导出文件; 2,android、ios、linux、mac、win文件夹分别对应于相应设备已经操作系统,该部分主要完成音频的录音和播放处理,部分设备也会进行混音处理; 下面以windows系统为例做主要的介绍: 2.1, audio_device_cor
2015-10-15 17:19:02
5140
转载 查表法实现PCM与Alaw、μlaw之间的格式转换 2011
转载于:http://blog.chinaunix.net/uid-10995602-id-2918727.html参考地址一:http://yushui213.blogcn.com/diary,11280299.shtml参考地址二:http://hazelware.luggle.com/tutorials/mulawcompression.htmlstatic by
2015-09-28 14:24:41
3025
转载 音频编码技术比较
按波形编码、参数编码和混合编码三类编码技术分类,从编码速率(码率)、语音质量和应用领域方面比较一些典型的编码方法,具体参见下表。表 1 典型音频编码技术比较编码技术算法编码标准码率(kbit/s)质量应用领域波形编码PCMG.711644.
2015-09-28 14:14:16
1746
转载 g711u与g729比较编码格式
转载于 http://www.xzfree.com/article/20110622141209.html•g711a—编解码格式为G.711 alaw•g711u—编解码格式为G.711 ulaw (the default)•g729—编解码格式为G.729•g729a—编解码格式为G.729a 上面的就是voip使用的编码解码格式的,我们
2015-09-28 14:00:05
3861
转载 拖拽的实现(com 基于windos sdk)
转载于http://www.cnblogs.com/chunyou128/archive/2012/02/20/2360607.html1.参考内容:英文资料中文翻译2.拖动涉及:源、目标、数据对象2.1 鼠标左键按下并且移动,触发拖动。 构建源和数据对象。调用拖放函数DoDragDrop。case WM_MOUSEMOVE: //
2015-03-15 19:22:26
1886
XCounter.rar
2019-09-10
libev开源库源码
2016-10-08
webrtc视频客户端 ( 基于duilib)
2016-01-07
软件工程 需求分析,概要设计,详细设计等13张模板
2012-03-27
duilib 怎么实现两个位置的控件位置切换
2014-11-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人