随笔分类 - 开发基础
开发相关的理论知识
TCP connect的错误返回值
摘要:如果是TCP套接字,调用connect函数将激发TCP三次握手过程,而且仅在连接建立成功或出错时返回,其中错误返回可能有下面几种情况: (1)若TCP客户没有收到SYN分节的响应,则返回ETIMEDOUT 75s(2)若对客户端的SYN的响应是RST(表示复位),会返回ECONNREFUSED(3)
阅读全文
重构 改善既有代码的设计
摘要:最近接手一个项目,源代码的架构和许多设计都有坏的味道。 想要重构,但是自己并没有足够的底气. 一、重构的纠结: (1)现有代码可用,你重构后是否会比现在更有效率; (2)项目进度比较紧,你是否要抽出时间做这种没有KPI的工作; (3)你重构后,别人需要重新阅读你的源代码,给同事带来了重新学习代码的工
阅读全文
Linux下使用automake、autoconf生成configure文件
摘要:一、生成configure过程中各文件之间的关系图 二、详细介绍 autoscan: 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。 aclocal:根据已经安装的宏,用户定义宏和acinclude.m
阅读全文
FFmpeg中HLS文件解析源码
摘要:不少人都在找FFmpeg中是否有hls(m3u8)解析的源码,其实是有的。就是ffmpeg/libavformat/hlsproto.c,它依赖的文件也在那个目录中。 如果要是单纯想解析HLS的话,建议参考https://github.com/winlinvip/srs-bench,这是一个http
阅读全文
UDP的坏处
摘要:众所周知,UDP是一个面向无连接的协议。通信时不可靠的。这就会出现一些问题 (1)数据报丢失 因为是无连接,的所以可以用recvfrom和sendto来接收和发送消息,如果socket是阻塞的,那么当由于网络原因丢包了,那么发送和接收双方都面临无限期的阻塞。当然这个可以为客户端设置超时时间来解决。
阅读全文
进程控制块(Process Control Block, PCB)
摘要:是为了管理进程设置的一个数据结构。是系统感知进程存在的唯一标志。通常包含如以下的信息:(1)进程标识符(唯一)(2)进程当前状态,通常同一状态的进程会被放到同一个队列;(3)进程的程序和数据地址(4)进程资源清单。列出所拥有的除CPU以外的资源记录。(5)进程优先级。反应进程的紧迫程度(6)CPU现
阅读全文
分布式中一些关键概念的解释
摘要:分布式要弄清楚的几大问题:(1)数据分布:哈希分布还是顺序分布简单地说,相当于比较哈希函数和B+树树的优劣。哈希分布,首先找一个散列性比较好的哈希函数(非常难),并且不支持顺序扫描,但是随机存取的速度都很快。顺序分布,一般的都会采用B+树的方式存储。支持顺序扫描,很容易让数据分布均匀,但相应的随机存
阅读全文
线程池的设计实现
摘要:线程池: 就是new一堆线程,当有任务到来时,抓一个线程去执行,执行完之后再丢回线程池。 省去了新建和注销线程的开销。 一、线程池工作分为以下几步: (1)创建线程固定数目的线程(如:20个),并让线程挂起等待任务(2)给某个线程设置任务(3)激活该线程,让其执行任务(4)线程执行任务完毕后,回收该
阅读全文
[原创] 同步、异步、阻塞、非阻塞详解
摘要:为了阐释方便,需要先引入一个概念: 比进程小的可以是线程,比线程还小的是什么呢?--协程; 协程:在线程中一个不带返回值的函数调用叫做协程。(我们暂且这样定义) 比如一个线程执行了以下流程: 做饭-吃饭那么做饭的过程就叫协程,吃饭的过程也叫协程。 →同步、异步在阐述场景的时候总是容易和阻塞与非阻塞混
阅读全文
常用场景对文件状态的影响
摘要:在项目过程中要删除一些过期文件,但是到期了,有些文件居然没有被删除。后来发现,原来在转移文件的时候使用的mv命令会影响文件的Change Time,造成文件没有被认定为超时。为了避免类似问题发生,做了个简单的实验,结果如下:值得注意的是从结果看中可以看出当文件被下载时,Access Time也会改变
阅读全文
echo使用说明,参数详解
摘要:简介 echo [OPTION]... [STRING]... 描述 -n 末尾不加换行 -e 开启输出字串中对反斜杠的转译 -E 禁用反斜杠转译 只有开启-e参数的时候,下面的命令才能起作用: \0NNN 输出NNN(一个八进制数)在ASCII码表中对应的字符, 如:a->97(十进制)->141
阅读全文
127.0.0.1、0.0.0.0和本机IP地址的区别和使用
摘要:一、表面上的区别如下: 首先假设本机有多个网卡:eth0 :192.168.0.1 eth1:192.168.1.1 lo: 127.0.0.1 0.0.0.0 不能ping通,代表本机所有的IP地址; 监听127.0.0.1,创建Socket,那么用本机地址建立tcp连接不成功,反过来也是如此;也
阅读全文
编译过程(从编译到链接)
摘要:当我们写完代码编译的时候,计算机都进行了哪些步骤呢?这些步骤又都有些什么作用呢? 一、执行一个程序的过程 当我们编写一个程序并编译执行,如下(hello.c) 那么在其中执行了如图的过程: 其中的主要过程包括: 预处理(Propressing):处理"#define、#include、#if……"等
阅读全文
md5的C++实现
摘要:一、原理 前一阵子,想知道md5的原理查了一下资料,说得基本都一样,最后让我看懂的是这两个链接: http://blog.csdn.net/qf_study/article/details/2630903 http://baike.baidu.com/link?url=MBQj5ddK13WUItb
阅读全文
Linux设置环境变量(解决许多命令找不到)
摘要:不知道服务器被谁给改坏了,许多命令都不能使用找不到,但是可以在/usr/bin/,/usr/local/bin等里面找到源程序,当时首先想到的就是环境变量,因为Windows在设置了环境变量之后就可以直接在命令提示符中使用该命令;所以Linux应该也一样;百度一下,找到解决方案:首先输出环境变量$P
阅读全文
用C++和shell获取本机CPU、网卡IO、内存、磁盘等的基本信息
摘要:用C++和shell获取本机CPU、网卡、内存、磁盘等的基本信息; 由于对C++相关的函数没多少了解,但是觉得用shell反而相对简单一些: 一、shell脚本,用来辅助C++获取主机的资源使用信息 (1) cpurate.sh 获取cpu的使用率 (2)memrate.sh 获取内存的使用率 (3
阅读全文
DEDECMS中直接通过数据库插入文章
摘要:突然想用爬虫爬来的数据对接DEDECMS,所以研究了一下怎么直接在DEDECMS中直接插入一片文章 (但其实我并没有这样用。因为我直接用前台做的网页,用ajax请求的json数据,其他的都简单,就是没办法人工审核内容) 尝试了半天,其实只要操作下面三个表格即可。其中各个字段的意思,各位自己查吧。 I
阅读全文
那些我尝试过了网页播放器
摘要:html5 pc端不支持hls,手机端可以 有倍速接口 有标准的接口swseplayer 支持hls协议 无倍速接口 有标准的接口文档jwplayer7.1.4 支持HLS协议,国外较好的flash 无倍速接口 有标准的接口文档,版本不稳定,接口详细。测验5.8-7.1各种地址下载的7个版本, 无可
阅读全文
Google proto buffer的安装/使用
摘要:protobuf安装/使用原本是要在官网上下载的:http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz可惜已被墙,幸好有好心人提供了以下地址:http://pan.baidu.com/s/1pJlZubT 为了说明安装过程中文件的作用,
阅读全文
浙公网安备 33010602011771号