自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 用RUST写流媒体服务器实战——rtmp chunk 深入解析

用RUST写流媒体服务器实战——rtmp chunk 深入解析最近几个月断更了,把精力放在了新的开源项目上,一个用rust写的流媒体服务xiu。实现过程中踩了不少坑,今天说下rtmp中的chunk。RTMP协议确实复杂,在做这个项目之前,看过很多帖子,看过官方文档,但总是感觉不能彻底的理解清楚,在实现过一遍此协议之后,感觉清楚了不少。目前做的测试还不够多,倒是发现了一些问题。chunk这个东西看了很久可能很多人还是不明白,说明一下,RTMP 协议除了3次握手数据,其它的,包括信令和媒体数据(音视频相

2021-04-13 07:47:24 1537

原创 一个支持高网络吞吐量、基于机器性能评分的TCP负载均衡器gobalan

一个支持高网络吞吐量、基于机器性能评分的TCP负载均衡器gobalan作者最近用golang实现了一个TCP负载均衡器,灵感来自grpc。几个主要的特性就是:支持高网络吞吐量实现了基于机器性能评分来分配worker节点的负载均衡算法尽量做到薄客户端,降低客户端复杂性项目开源地址背景以下几种负载均衡方案介绍来自grpc服务发现&负载均衡根据负载均衡实现所在的位置不同,通常...

2020-02-10 21:47:41 1527

原创 实现一个简易的Unity网络同步引擎Netgo

实现一个简易的Unity网络同步引擎Netgo目前GOLANG有大行其道的趋势,尤其是在网络编程方面。因为和c/c++比较起来,虽然GC占用了一部分机器性能,但是出错概率小了,开发效率大大提升,而且应用其原生支持的协程很容易就能开发出高并发的服务端程序。笔者接触VR行业两年有余,接触了一些商业unity网络引擎,总觉的用的东西都落伍了,于是自己写了一个简单的引擎。目前实现了的基本功能:支持房...

2019-12-27 21:18:48 407

原创 蝴蝶计数器——一个简单易用的网页计数器

蝴蝶计数器——一个简单易用的网页计数器最近自己实现了一个网页计数器。后端采用beego+mysql,功能完成后就快速上线了,上线之后发现了不少问题,一一修复了这些bug,到目前为止,比较稳定了,用户量当然也不大。上线两周时间,有效用户为19个(统计到网页计数的用户),这离不开博友大牛们的支持,僵尸用户40个(网页统计数和访问者数量都为0)。到目前位置统计所有用户的总page view为...

2019-11-16 19:01:00 378

翻译 [译]使用golang每分钟处理百万请求

[译]使用golang每分钟处理百万请求在Malwarebytes,我们正在经历惊人的增长,自从我在1年前加入硅谷的这家公司以来,我的主要职责是为多个系统做架构和开发,为这家安全公司的快速发展以及百万日活产品所必需的基础设施提供支持。我曾在一些不同的公司从事反病毒和反恶意软件行业超过12年,我知道这些系统最终会因为我们每天处理的大量数据而变得十分复杂。有趣的是,在过去9年左右的时间里,我所...

2019-08-09 18:32:00 357

原创 开源一个golang小程序商城后台系统(moshopserver)

开源一个golang小程序商城后台系统(moshopserver) 开源一个golang小程序商城后台(moshopserver)golang和c/c++比起来是一门新的语言,一直想学,网上搜集了一些资料,有些人说很容易上手,确实是这样,和C/C++比起来,少了很多乱七八糟的语法。学一门新的语言,最好的方法就是动手写一些东西,最近小程序也比较火,...

2019-06-09 22:50:00 5570 4

原创 在实战中使用nginx-rtmp遇到的TCP连接问题分析

在实战中使用nginx-rtmp遇到的TCP连接问题分析 在实战中使用nginx-rtmp遇到的TCP连接问题分析背景前段时间公司做了一次体育赛事的现场直播,网络由某通信公司负责搭建,主要测试5G CPE上行网络的带宽和稳定性,为了做到万无一失,他们同时搭建了一条用作备份的400M光纤线路。通过配置交换机来做到主备切换,要达到以下的效果:无...

2019-05-20 19:31:00 1181

原创 现代C++之理解decltype

现代C++之理解decltype 现代C++之理解decltypedecltype用于生成变量名或者表达式的类型,其生成的结果有的是显而易见的,可以预测的,容易理解,有些则不容易理解。大多数情况下,与使用模板和auto时进行的类型推断相比,decltype作用于变量名或者表达式只是重复了一次变量名或者表达式的确切类型:const int i ...

2019-04-06 10:28:00 301

原创 现代C++之理解auto类型推断

现代C++之理解auto类型推断 理解auto类型推断上一篇帖子中讲述了模板类型推断,我们知道auto的实现原理是基于模板类型推断的,回顾一下模板类型推断:template <typename T>void f(ParamType param);使用下面的函数调用:f(expr);我们看到模板类型推断过程涉及到了模板temp...

2019-03-30 17:58:00 501

原创 现代C++之理解模板类型推断(template type deduction)

现代C++之理解模板类型推断(template type deduction)理解模板类型推断(template type deduction)我们往往不能理解一个复杂的系统是如何运作的,但是却知道这个系统能够做什么。C++的模板类型推断便是如此,把参数传递到模板函数往往能让程序员得到满意的结果,但是却不能够比较清晰的描述其中的推断过程。模板类型推断是现代C++中被广泛使用的关键字auto...

2019-03-20 18:36:00 715

原创 WebRTC服务器——Licode 环境搭建

#WebRTC服务器——Licode 环境搭建##系统配置阿里云服务器Ubuntu 14.04.5 LTSDocker 环境搭建在一台空的机器上搭建docker环境,先要安装docker,执行下面的命令即可:apt-get updateapt-get install docker.io执行下面的shell脚本:#!/bin/shMIN_PORT=30000;MAX_POR...

2019-01-05 22:37:55 3479 6

原创 移植ijkplayer播放器到windows平台(附源码)

#将ijkplayer移植到windows平台(附源码)ijkplayer windows版本的移植工作终于有了一些进展,起初自己做这个项目是因为公司有可能会用到,于是用业余时间慢慢熟悉相关知识和ijkplayer的代码。现在应该是用不到了,到这里做一个总结吧,最终能够达到的效果是是能够在windows上用OpenGL ES渲染视频和用OpenAL播放声音,但是还有音画不同步的问题,以后有时间的...

2018-12-13 07:23:33 646 1

原创 SDL2源码分析之OpenGL ES在windows上的渲染过程

SDL2源码分析之OpenGL ES在windows上的渲染过程ffmpeg + SDL2实现的简易播放器ffmpeg和SDL非常强大,通过使用ffmpeg和SDL可以用100多行代码就实现一个简易的播放器(来自网上的源码,找不到出处了):#include &amp;amp;lt;stdio.h&amp;amp;gt;#define __STDC_CONSTANT_MACROS#define SDL_MAIN_HA...

2018-10-28 21:54:50 2480 1

原创 一步步实现windows版ijkplayer系列文章之五——使用automake生成makefile

一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇一步步实现windows版ijkplayer...

2018-10-21 13:49:00 491

原创 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg

一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇一步步实现windows版ijkplayer...

2018-10-15 21:22:00 709

原创 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇...

一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇一步步实现windows版ijkplayer...

2018-09-24 07:15:00 772

原创 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇...

一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇一步步实现windows版ijkplayer...

2018-09-20 16:27:00 927

原创 一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay...

一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇一步步实现windows版ijkplayer...

2018-09-01 12:52:00 559

原创 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&开源项目介绍

揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&amp;开源项目介绍WebRTC生态系统是非常庞大的。当我第一次尝试理解WebRTC时,网络资源之多让人难以置信。本文针对webRTC媒体服务器和相关的开源项目(如kurento,janus,jitsi.org等)做一些介绍。并且将尝试降低理解WebRTC的业务价值所需要的技术门槛。何为WebRTC服务器?自从WebR...

2018-07-04 07:29:00 687 1

原创 打造一个上传图片到图床利器的插件(Mac版 开源)

&#13; 写markdown博客如何将截图快速上传到图床——记一个工具插件的实现(windows版 开源)(2017-05-31 20:23)打造一个上传图片到图床利器的插件鉴于写博客截图手动上传到图床的步骤过于繁琐,很久之前写了一个windows版的截图软件插件,用于把图片快速上传到图床重新打包用户量过亿的开源截图软件——加入图片自动上传到图床的功能现在换系统了,...

2018-06-24 19:44:00 469

原创 在Docker中运行EOS(MAC版)

&#13; 在Docker中运行EOS(MAC版)在Docker中也可以简单快速的构建EOS.IO.笔者在Mac平台下参考官方文档躺了一次河。记录如下:安装依赖Docker 版本 17.05或者更高testdeMBP:Docker test$ docker -vDocker version 18.04.0-ce, build 3d479c0docker-comp...

2018-06-20 19:45:00 221

原创 使用FFMPEG在windows平台下推rtmp流

使用FFMPEG在windows平台下推rtmp流工作中习惯在Linux下面使用FFmpeg模拟推rtmp流,无奈家中的电脑都是windows系统,需要利用家中的带宽来测试流媒体服务器的性能。所以研究了一下如何在windows系统中快速推流。首先下载安装ffmpeg下载windows下的FFMPEG压缩包,解压到当前目录,见下图(如何快速截图并上传到图传?)我们使用的是ffmp...

2018-04-30 13:47:00 302

原创 从失败的Release中吸取教训

&#13; 一次失败的Release去年8月份加入一家创业公司,和原同事做VR相关的产品开发,到18年正月初七,总共release过两次,真正经理了一次从0到1的过程。第一次release产品初步成型,大概在10月份,在公司内部做了一次宣发,我们做的是ToC的产品,但这次release没有真正意义上的C端客户,倒是可以拿着这个雏形产品到处去找内容提供商;另外可以拿到市场上...

2018-04-15 21:00:00 217 3

原创 为SRS流媒体服务器添加HLS加密功能(附源码)

为SRS流媒体服务器添加HLS加密功能(附源码)之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的叫做SRS的流媒体服务器,比较活跃,而且据说这个流媒体服务器的性能和功能都强大不少,但遗憾的是没有HLS加密功能。问原作者为什么没有添加这个功能没有回复,所以还是自己动手,丰衣足食吧,花了几个晚上的时间...

2018-04-03 22:10:00 566

原创 深入解析条件变量(condition variables)

&#13; 深入解析条件变量什么是条件变量(condition variables)引用APUE中的一句话:Condition variables are another synchronization mechanism available to threads.These synchronization objects provide a place for t...

2018-03-18 17:29:00 932

原创 重新打包用户量过亿的开源截图软件——加入图片自动上传到图床的功能

&#13; 有点标题党的感觉,但是我今天说的这个软件确实很多人都用,叫做Greenshot。咨询了它的作者,用户量竟然过亿。先展示一下成果为了更方便的使用七牛云的图床服务,去年实现了一个开源截图工具的插件,专门用来上传图片到七牛图床。操作过程如下:第一步:打开截图工具进行截图,然后选择“upload to qiniu”传送到七牛图床服务器中。第二步:接完图后连...

2018-02-09 07:04:00 279 9

原创 Unix权限这点事

&#13; Unix/Linux的权限管理还是比较复杂的,别人说看高级环境编程得看2,3遍。我想这应该是在Linux有了一定基础上。我看的过程中觉得需要反复推敲,有些地方得翻来覆去看上5,6遍甚至更多,下面是自己的一些对Unix权限的理解,尽量翻译成了大白话。如果有不对的地方,欢迎讨论。用户和组现实生活中的例子关于用户和组,对比现实生活中的例子。Linux系统好比一个大...

2017-12-27 08:22:00 103

原创 Linux中main是如何执行的

&#13; Linux中main是如何执行的这是一个看似简单的问题,但是要从Linux底层一点点研究问题比较多。找到了一遍研究这个问题的文章,但可能比较老了,还是在x86机器上进行的测试。原文链接开始问题很简单:linux是怎么执行我的main()函数的?在这片文档中,我将使用下面的一个简单c程序来阐述它是如何工作的。这个c程序的文件叫做"simple.c"mai...

2017-11-02 22:19:00 254

原创 记录一款Unity VR视频播放器插件的开发

效果图先上一个效果图:背景公司最近在做VR直播平台,VR开发我们用到了Unity,而在Unity中播放视频就需要一款视频插件,我们调研了几个视频插件,记录两个,如下:Unity视频插件调研网上搜了搜,最流行的有以下两款Unity插件:AVPro 这个在Unity商店售价150$,最新release版本为1.6.15,功能包括:Powerful cross-platform...

2017-10-23 23:39:00 679 2

原创 如何在不同的语言/平台中获取Android ID

&#13; 如何在不同的语言/平台中获取Android ID最近开发工作中需要使用到AndroidID,在Unity和native code中也需要使用,java获取很方便,Unity中也不难,最难的是在native code中获取。获取android ID需要有一个上下文实例,也就是Context实例,看下面的java获取方式:在java中获取Android原生代码...

2017-10-22 15:59:00 272 1

原创 如何把git仓库(包含所有提交历史)迁移到gitlab

&#13; 在gitlab上new 一个project跳转到本地的git 目录中,运行命令git remote add gitlab gitlab_new_project_address-最后运行如下命令,将本地git仓库push到server:git push gitlab master&#13;&#13;&#13;&#13;&#13;&#13;&...

2017-09-07 10:38:00 664

原创 APUE-文件和目录(八)文件时间

&#13; 文件的时间与文件相关的三个时间值:访问时间:最后一次访问文件的时间。例如,cat命令会修改这个时间。修改时间:文件内容最后一次被修改的时间。状态更改时间:文件的i节点最后一次被修改的时间。例如,更改文件的访问权限、更改用户ID、更改链接数都会修改i节点。注意:系统并不维护对一个i节点的最后一次访问时间,所以access和stat函数并不更改这3个时...

2017-06-21 21:46:00 132

原创 记录一次线上组件崩溃的解决过程

&#13; 马上就要离职了,想想工作中有些东西还是需要沉淀下来的,不仅仅要沉淀到心里,因为年纪大了^_^,很容易忘记,不是有句话么,好记性不如烂笔头。分析这个bug之前先说点别的。解决bug的大致思路我觉的解bug和医生看病是一样的,中医看病讲究望闻问切。软件出了毛病也按这个套路来,但是不需要闻。望。观察表面现象,server端出了问题还是client端?现象是什...

2017-06-20 14:27:00 168 3

原创 谈一下我们是怎么做数据库单元测试(Database Unit Test)的

&#13; 作者水平有限,如有错误或纰漏,请指出,谢谢。背景介绍最近在团队在做release之前的regression,把各个feature分支merge回master之后发现DB的单元测试出现了20多个失败的test cases。之前没怎么做过DB的单元测试,正好借这个机会熟悉一下写DB单元测试的流程。这篇博文中首先介绍一下在我们的特定项目场景中是如何搭建DB 单元测...

2017-06-14 20:18:00 817 22

原创 APUE-文件和目录(七)符号链接

&#13; 符号链接符号链接的用途符号链接是对一个文件的间接指针,它与前面介绍的硬连接不同,硬连接指向文件的i节点。引入符号链接是为了避开硬连接的一些限制:硬链接通常要求链接和文件位于同一文件系统中。只有超级用户才能创建指向目录的硬链接(在底层文件系统支持的情况下)。而对于符号链接:对符号链接以及它指向何种对象并无任何文件系统限制;任何用户都可以创建指向目...

2017-06-13 22:52:00 200

原创 APUE-文件和目录(六)函数ftw和nftw

&#13; 名字ftw,nftw - 文件树遍历概要#include &lt;ftw.h&gt;int nftw(const char *dirpath, int (*fn) (const char *fpath, const struct stat *sb,int typeflag, struct FTW *ftwbuf), int ...

2017-06-12 22:19:00 495

原创 APUE-文件和目录(五)函数rename和renameat

&#13; rename和renameat#include &lt;stdio.h&gt;int rename(const char *oldname,const char*newname);int renameat(int oldfd,const char *oldname,int newfd, const char *newname); 成功返回0;失败返回-1...

2017-06-12 07:55:00 195

原创 APUE-文件和目录(四)文件系统

&#13; 一个命令 mkfs讲文件系统前先介绍一个用于创建文件系统的命令:mkfsmkfs [options] [-t type fs-options] device [size]描述mkfs用来在设备上创建一个Linux文件系统,这个设备通常情况下是一个硬盘分区。上面的device参数要么是设备名(例如:/dev/hda1,/dev/sdb2),或者为包含文件系...

2017-06-11 14:20:00 141

原创 APUE-文件和目录(三)函数chown 和lchown

&#13; 下面的几个chown函数可用于更改文件的用户ID和组ID。如果两个参数owner或group中的任意一个是-1,则对应的ID不变。#include&lt;unistd.h&gt;int chown(const char *pathname,uid_t owner,gid_t group);int fchown(int fd,uid_t owner,gid_t...

2017-06-08 21:03:00 241

原创 APUE-文件和目录(二)函数access,mask,chmod和粘着位

&#13; 4.7 函数access和faccessat当一个进程使用了设置用户ID和设置组ID作为另一个用户(或者组)运行时,这时候有效用户(组)ID和实际用户(组)ID不一样,但进程仍然希望测试实际用户(组)ID的访问能力。这时候就可以使用access和faccessat。测试步骤同4.5节一样,但将有效改为实际。#include &lt;unistd.h&gt;...

2017-06-06 07:54:00 160

SOAP很好的学习资料

SOAP很好的学习资料,深入浅出讲述soap

2009-04-12

一个很好的象棋java源代码

用java编写的象棋源代码,很好的研究资料,把中国象棋发扬广大

2009-03-10

搜索引擎聚类提纯系统(课件)

在线聚类 按内容聚类 大大减轻了用户选择所需文档的负担,加快了信息选择的速度。 提纯 在聚类过程中将内容过于重复的页面合并,因此用户看到不同的文档将能够获取不同的信息。

2008-11-20

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除