总结
文章平均质量分 77
未央千城
这个作者很懒,什么都没留下…
展开
-
工作中的一些小总结
2010-10-20 一语点醒梦中人 前几天在调试基于UDP协议传输数据的代码,卡了两天,死活不通。原意是使用UDP协议读取到特定的字节后改变缓冲区大小,再使用它去读取后边的数据,但是再读取数据时,读到的数据是这个特定的字节加后边的信息,不知道为什么会重复读取到这个特定的字节。后来一个同事问另一个同事,他说:使用UDP协议传输数据,每次的数据都是新的,这次传输的数据没读完,UDP包就原创 2013-01-24 14:55:57 · 393 阅读 · 0 评论 -
nginx-rtmp-module的缺陷分析(二)
nginx-rtmp-module使用指令push和pull来relay媒体流数据,以便分布式部署服务。当nginx-rtmp-module作为边缘服务器(一般不会向边缘服务器推流)时,使用pull从源服务器获取媒体流数据,俗称“回源”。先看原理图:注意:上图是单进程模式的pull回源图。可以看出,多个连接请求同一个媒体流(RTMP的URL格式为:rtmp://host[:port]/...原创 2019-04-24 16:18:52 · 3503 阅读 · 2 评论 -
SPS/PPS/IDR
H.264码流第一个 NALU 是 SPS(序列参数集Sequence Parameter Set)对应H264标准文档 7.3.2.1 序列参数集的语法进行解析H.264码流第二个 NALU 是 PPS(图像参数集Picture Parameter Set)对应H264标准文档 7.3.2.2 序列参数集的语法进行解析H.264码流第三个转载 2017-05-15 22:54:03 · 1007 阅读 · 0 评论 -
加载动态链接库的相关接口dlopen,dlsym和dlclose等
nginx从1.9.11开始,支持运行时动态加载模块了,浏览了下代码实现,在类unix系统上是用dlopen,dlsym和dlclose实现的。下面看看这几个函数的功能。 dlopen功能:打开一个动态链接库。包含头文件:#include 函数定义:void * dlopen(const char * pathname, int mode); 函数描述:原创 2017-03-14 16:55:36 · 952 阅读 · 0 评论 -
用Redis的set指令实现锁
本文参考了http://huoding.com/2015/09/14/463。 我们知道,现在的Redis实现加锁的方法比较简单,直接调用Redis的set指令:$redis->set($key, $random, array('nx', 'ex' => $expire)); 就可以实现。其中$random是个随机值,nx表示如果Redis中不存在$key时,就原创 2016-06-25 11:01:25 · 9751 阅读 · 1 评论 -
提高程序运行效率的10个简单方法
转载自:http://chuansong.me/n/1013527,有修改。 对于每一个程序员来说,程序的运行效率都是一个值得重视,并为之付出努力的问题。但是程序性能的优化也是一门复杂的学问,需要很多的知识,然而并不是每个程序员都具备这样的知识,而且论述如何优化程序提高程序运行效率的书籍也很少。但是这并不等于我们可以忽略程序的运行效率,下面就介绍一下本人积累的一些简单实用的提高程序运转载 2016-01-28 19:13:40 · 1967 阅读 · 0 评论 -
在一亿个数中查找最大的k个数(k << 1,000,000,000)
在一亿个整数中查找最大(小)的k个数(k 之前跟一同事说起互联网公司的面试题,他说一般思路是先排序,然后再处理数据肯定没错。是不是这样的呢?对于这个问题,我们想想如下的几个方法: 1.使用大多数情况下最快的排序方法—快速排序来解决可以吗?思路是将一亿个整数放到一个数组中,然后使用快速排序方法把最大的k个数放到数组的前k个空间里。但是,这个问题没有说(1)要排好原创 2015-12-23 22:24:14 · 3092 阅读 · 0 评论 -
C语言中的柔性数组
前段时间在阅读nginx的源代码时,碰到一个之前从未碰到的问题,nginx定义的hash表中的元素的结构体:typedef struct { void *value; u_short len; u_char name[1];} ngx_hash_elt_t; 暂且不论各个成员的含义原创 2015-12-18 11:52:31 · 476 阅读 · 0 评论 -
程序的一些小优化
跳槽后才真正接触了C++,之前囫囵吞枣看了些C++的书,但是发现真正在项目使用时,很多地方都有改进的地方。1.vector的resize: 场景是这样的,客户端向服务器发起查询符合某个条件的数据库记录的请求,服务器查询完后将记录返回给移动端。服务器查询到数据记录后,将记录放入vector中,最开始的做法是向一个vector对象不断push记录,由于测试的时候查询的记录数都原创 2015-12-15 17:43:58 · 431 阅读 · 0 评论 -
红黑树的C++实现(2)
因为红黑树首先是二叉所搜树,所以有了二叉搜索树的实现,我们就可以重用部分二叉搜索树的类的接口了,rbt.h:#ifndef __RBT_H__#define __RBT_H__#include "bst.h"template class CRedBlackTree : public CBinarySortTree{ public: CRedBlackTree(); ~原创 2015-11-27 15:27:47 · 506 阅读 · 0 评论 -
红黑树的C++实现(1)
三年前磕磕盼盼用C语言写过红黑树,这段时间用C++重写了红黑树,修复了之前代码中的一些错误。记得以前的博客里面就写过使用C++写红黑树更容易些,因为可以重用二叉搜索树的C++代码。照例,首先实现二叉搜索树,然后再实现红黑树。 首先,定义二叉树结点的类,btnode.h:#ifndef __BTNODE_H__#define __BTNODE_H__#include #i原创 2015-11-27 15:11:26 · 527 阅读 · 0 评论 -
open /dev/kvm: Permission denied的解决办法
一直使用Debian的虚拟机功能用的好好的,今天上午提示有软件更新,是libvirt相关的,知道是关于虚拟化的软件,习惯性地就更新了。下午有点东西需要写文档,由于LaTeX之类的编辑软件一直没时间学习,所以还是求助于Word,于是开virt-manager,点开虚拟的XP,结果出现: ...open /dev/kvm: Permission denied... 昨晚没是用vir原创 2013-03-16 17:58:06 · 14152 阅读 · 0 评论 -
在nginx-http-flv-module中支持H.265(HEVC)
众所周知,FLV规范不支持H.265,并且近年来各大浏览器都逐渐不支持Flash,Adobe也宣布到2020年底不再支持Flash。作为FLV相关技术的所有者,Adobe估计也没动力更新规范来支持H.265;外加H.265标准的一些专利所有者的授权方案被指抢钱,更加打击了很多软件厂商的积极性。从H.265标准出来没多久,就有人请求Adobe在FLV规范中加入对H.265的支持:https:...原创 2019-09-23 21:58:06 · 8786 阅读 · 6 评论