2019
January
- January 1, 2019 »
【音视频编程】在浏览器中播放pcm音频的案例
前言 如何播放 如何让浏览器识别 pcm javascript 如何处理文件流 Reference前言最近在整理音视频编程的知识,回忆起半年多,有一次需求是在后台播放某来源的 pcm 文件,当时处理方法...
2018
December
- December 24, 2018 »
【音视频编程】将ffmpeg封装golang/cgo库
前言 认识cgo的封装技巧 开始编程 测试代码 动态链接或者静态链接 打包动态链接库 静态链接编译 Reference前言继上一篇 ffmpeg音视频C编程入门, 使用高性能的C语言进行音视频的处...
- December 20, 2018 »
【音视频编程】ffmpeg的C语言编程
前言 解码过程总览 写在最前面的日志处理 第一步,查看音视频格式信息 【编程实操】读取音视频流的格式信息 第二步,解码 ...
November
September
- September 5, 2018 »
【学习记录】深度学习基本概念
前言 一个简单的例子理解机器学习的过程 学习算法的几个基本概念 回归问题与分类问题 有监督学习与无监督学习 一种重要的模型——神经网络 线性方程组 非线...
August
- August 19, 2018 »
golang工程实践——Makefile的技巧之标记编译信息
前言 技巧列表 给二进制包标记时间戳与源码版本号 原理解释 前言Golang 的程序编译安装,如果善加使用 Makefile 文件,可以使开发过程更规范与...
- August 19, 2018 »
架构思考-代理服务与负载均衡算法
前言前言就是同一个服务要部署多个节点,然后一个请求任务过来,那么这个请求分发给哪个服务呢工程的优化演进1、最简单的循环调用2、按人工标记的权重轮询3、用 指数加权移动平均 来预测服务延迟曲线,把请求分发给延迟最小的服务节点EWMA exponen...
- August 9, 2018 »
【我做翻译】一个好的 Go 语言 Makefile 是怎样的
我做翻译 前言 1、一步一步开始 环境变量 开发模式 编译 开启/停止服务 观察变化 安装依赖 ...
July
- July 18, 2018 »
【我做翻译】Go 语言的 append 不总是线程安全的
我做翻译 示例问题 解释为什么测试失败 这个 bug 的认知根源 认知这个 bug 解决方法我做翻译这是我参与社区翻译小组的一篇译文示例问题我经常看到一些 bug 是由于没有在线程安全下在 slice 上进行 append 而引起的。下...
June
May
- May 10, 2018 »
【我做翻译】Go 实验报告:函数式编程之泛型
我做翻译 前言 一个例子 一个现实点的例子 为什么这家伙反对代码生成 下一步 WrapSlice WrapMap 结论我做翻译这是我参与社区翻译小组的一篇译文前言在 2017 年的年中,我在 GopherCon 上发表了《Go 的...
April
- April 23, 2018 »
【我做翻译】Go 语言中 append 导致内存不足
我做翻译 前言 内存不足我做翻译这是我参与社区翻译小组的一篇译文前言这是一篇简短的笔记,关于你或许会遇上的 Go 语言的内存不足的问题。如你所知,Go 语言的 slice 很强大且使用简单。通过 Go 语言的内置函数,它可以解决我们许多问题。...
March
- March 25, 2018 »
【我做翻译】剖析与优化 Go 的 web 应用
我做翻译 前言 开启分析器(profiler) 案例: Left-pad 微服务 性能分析 CPU 分析(CPU profile) 函数堆栈分析(Heap profile) 逃...
- March 25, 2018 »
【我做翻译】你的 pprof 暴露了
我做翻译 前言 引言 开启 Pprof 服务 风险 预防 结论我做翻译这是我参与社区翻译小组的一篇译文前言IPv4 扫描暴露出的 net/http/pprof 端点(endpoint)Go语言的 net/http/pprof 包是令人...
February
- February 24, 2018 »
记录在Linux下理解Java项目的过程
前言 写第一个项目 开发环境 设计模式 抽象工厂为例 Java的工厂模式与xml映射配置 命令行下执行Java程序 ...
2017
December
- December 12, 2017 »
对mongodb的认识——设计思想
前言 把更多的工作分担到客户端执行 objectId 是在客户端生成的 离弦之箭,不重要的数据无需确认返回状态码 集群,性能与数据一致性的衡量 分片,自动选举主节点 同步数据...
November
- November 30, 2017 »
java开发-备忘录
前言 关于注解Annotation 注解的介绍 一些注解的笔记 常用的 不常用的 特别的技巧 阅读xml ...
- November 15, 2017 »
阅读tinyhttp源码
前言 常用的函数 转换ip地址 名词 函数列表 前言tinyhttp是500行的实现http服务器的c语言代码,阅读一下挺简单的,感觉都...
August
- August 23, 2017 »
nodejs学习笔记——node与libuv
前言 事件类型 源码分析 学习资源 从Linux角度去看 看看libuv是怎么工作的 如何加入文件事件 多线程处理文件事件 ...
- August 23, 2017 »
nodejs学习笔记——javascript和C++的编程
前言 v8与C++的编程 node下的C++模块开发 规范写法 前言脚本语言与静态编译语言的结合,优点就不提了哈v8与C++的编程参考如下文章 使用 Google V8 引擎开发可定制的应用程序node下的C++...
- August 22, 2017 »
nodejs学习笔记——关于V8
概念 重要知识点 js引擎的工作流程 对象、作用域与垃圾回收 对象 对象的操作符重载 作用域 上下文Context ...
- August 20, 2017 »
浅谈javascirpt引擎——js代码如何执行
前言笔者被javascript的作用域搞得有点懵逼,干脆研究下js引擎,看代码是如何工作的 本文先列出一些知识点,比如编译,虚拟机的知识,不仅仅适于javascript笔者的问题笔者一开始就是出于对javascript的作用域感到疑惑而去研究引擎的...
- August 20, 2017 »
脑洞,从键值对数据库联想到javascirpt的作用域
前言 对象 前言 这篇东西只是我对对象模型的不上的台面的猜想和思考 最近笔者阅读redis源代码,从redis简单实现的对象机制,忽然想到javascirpt的语言特性,javascirpt的对象是如何实现的呢?一...
- August 7, 2017 »
redis源码学习笔记-工具类代码的技巧
Redis的工具函数 前言 源码分析 正则表达式匹配 Redis的工具函数前言 Redis是一个优秀的C语言项目,其中一些方法实现的思路很值得参...
- August 5, 2017 »
对计算机名词的中文名称的误解
前言 大小端 笔者经历 正确的记忆方法 判断当前计算机环境是大端还是小端 套接字 C语言的套接字例子,匿名管道 前言在编程生涯中,遇到计算机名词的中文名称,遇到一些...
- August 3, 2017 »
redis源码学习笔记-内存分配
zmalloc内存分配实现 概念 源码分析 变量声明 函数封装 参考文献 zmalloc内存分配实现概念Redis对C...
- August 3, 2017 »
redis源码学习笔记-事件与网络通信
事件与网络通信 概念 文件事件 事件的API 事件循环的数据结构 以Linux的epoll为例子 ...
July
- July 28, 2017 »
redis源码学习笔记-server的概念
server概念 源码分析 数据结构 服务端 过期字典与键有效期 与键过期相关功能 RDB,AOF等持...
- July 22, 2017 »
redis源码学习笔记-对象
概念 源码分析 数据结构 内存回收 对象共享 参考文献概念 Redis用到的主要数据结构有:简单动态字符串SDS,双端链表,字典,压缩列表,整数集合等,Redis不是直接使用这些基础的数据结...
- July 17, 2017 »
浏览器渲染优化(1)——单个请求一直到将像素填充到屏幕上的简单流程
前言 概括渲染的流程 详细流程 prase HTML recalculate style, layout raster 光栅化 raster for page ...
- July 17, 2017 »
如何理解网络中的各种协议
前言 UDP与TCP协议 由此衍生的协议族前言对协议的理解UDP与TCP协议 UDP, 有状态的不可靠的连接, 用户数据报协议 把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。 由于UDP在...
- July 16, 2017 »
技术与业务的一些思考
前言 以业务为主导的思想 以技术为主的思想 总结前言最近与朋友聊到编程的话题,对于以业务为主导还是以技术为主导的思想产生辩论以业务为主导的思想 技术是以服务于业务为优先 从业务出发,将业务的抽象化,细分各种小模块 业务细化是项目工程化...
- July 12, 2017 »
redis源码学习笔记-6种数据结构
redis的动态字符串 动态字符串的数据结构 改善c语言字符串的问题 链表 redis实现的链表的数据结构 ...
- July 11, 2017 »
浏览器页面性能测试工具
前言 浏览器的页面的渲染过程 lighthouse的工作原理与验证 附录 相关资料 前言最近认识到浏览器性能测试工具,Lighthouse与webpagetest Lighthouse, 是一个开源的自动化工具...
- July 2, 2017 »
nginx源码学习笔记-http请求与处理
配置文件解析 配置项解析过程 work进程监听socket worker进程获取socket的客户端连接 http请求处理的过程 请求数据的格式 处理请求...
June
- June 30, 2017 »
认识浏览器的Service Worker
前言 认识chrome的Service Worker Service Worker可以做什么 实例demo 注册Service sw.js文件代码示例 Service Worker使用场景 p...
- June 27, 2017 »
nginx源码学习笔记-epoll模型
Nginx的epoll模型 前言 IO多路复用模型 IO多路复用模型的接口 epoll模型 参考例子 ...
- June 20, 2017 »
nginx源码学习笔记-模块
前言 模块的大致类别 模块的数据结构 模块的结构体 模块的配置项的数据结构 handler 模块 参考文献前言Nginx的模块非常多,可以认为所有代码都是以模块的形式组织的,另外,Nginx的模块不...
- June 14, 2017 »
nginx源码学习笔记-多进程通信模型
前言 父子进程通信 经典的匿名管道 兄弟进程之间通信 进程间传送文件描述符 每个进程都有互不相关的文件项表 使用sendmsg/recvmsg发送fd ...
- June 10, 2017 »
nginx源码学习笔记-查看进程的堆栈信息-strace
前言 查看进程的堆栈信息 strace工具,实时查看程序的系统调用的 使用gdb查看进程的堆栈信息 参考文献 前言本篇学习笔记,实质是笔者对深入剖析Nginx的读后感与调试源码的实践记录查看进程的...
- June 6, 2017 »
nginx源码学习笔记-日志追踪
前言 编译时,加上日志代码 修改配置文件nginx.conf 针对特定链接打日志 参考文献前言本篇学习笔记,实质是笔者对深入剖析Nginx的读后感与调试源码的实践记录编译时,加上日志代码 修改...
- June 2, 2017 »
nginx源码学习笔记-gdb的使用
前言 利用gdb调试 修改编译配置 gdb跟踪进程 gdb的watch命令使用 nginx对gdb的支持 参考文献前言本篇学习笔记,实质是笔者对深入剖析Nginx的读后感与调试源码的...
May
- May 28, 2017 »
nginx源码学习笔记-shell脚本安装配置
获取shell脚本的命令 使用option简单获取 获取=号后面的值 指定参数值 感言 获取shell脚本的命令使用option简单获取for optiondo echo optio...
- May 20, 2017 »
简述什么是线程
函数是多个输入一个输出的代码段,转成状态机,线程调度就是按一定的优先级交替调度不同的函数(线程),有唤醒(状态恢复)-执行-挂起(保存堆栈状态)
- May 20, 2017 »
学习apue-第四章习题
第四章习题 1.如果参数pathname为符号链接,state与lstat的区别是什么? 2.如果文件模式创建屏蔽字为777(八进制),结果会怎样?用shell的umask命令验证该结果。 3.关闭一个你所拥...
- May 12, 2017 »
学习apue-第三章习题
当读写磁盘文件时,本章中描述的函数确实是不带缓冲机制的吗? 编写一个与3.12节中dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理 假设一个进程执行下面3个函数调用: 在Bourne shell, Bourne-ag...
- May 8, 2017 »
学习apue-第一章习题
目录.和目录..的不同 一个程序启动两次,进程id变化了 在1.7节中,perror的参数是用ISO C的属性const定义的,而strerror的整型参数没有用此属性定义,为什么 若日历时间存放在代符号的32位整型数中,那么到哪一年它将溢...
- May 5, 2017 »
unix系统的文件系统的原理
前言前言文件系统,从设计之初,设计的思路,到后来发展。另外,讲一下docker的文件系统,git的文件系统
April
March
- March 21, 2017 »
Git+webhook+rsync项目自动部署的简单脚本
例子参考 前言 svn的简单做法 使用gitlab为版本控制,设置webhook 设置gitlab的事件通知的接口地址 使用node.js作为接口webserver 运维脚本(拉代码/构建/测试/部署) ...
2016
December
- December 1, 2016 »
当你敲下浏览器url会发生什么
前言 dns解析 dns的一些事儿 tcp三次握手与四次挥手 参考资料 传输数据, http1.1与http2在传输上的区别 浏览器识别请求类型 ...
November
- November 20, 2016 »
关于Linux的/etc的的文件
前言 /etc/passwd example /etc/group /etc/shadow 密码的格式 ...
- November 2, 2016 »
关于Linux的进程的常识
打开终端,开启进程之旅 对前台进程组发送信号 shell下手动切换后台和前台 守护进程、孤儿进程、僵尸进程 init进程 孤儿进程 守护进程 在shell中执行守护进程...
October
- October 20, 2016 »
浮点数运算问题和各种编程语言的解决方案
前言 常见的语言作浮点运算 解决方法 c语言 浮点预算精度问题的探究 简单理解十进制与二进制的小数 科学计数法表达 定点...
- October 15, 2016 »
备忘录-gcc与gdb的使用方法与技巧
前言 关于gcc 如何看man gcc 关于gdb 参考文献前言gcc和gdb的使用方法与技巧,总结下当备忘录,以免想起使用再查找资料的麻烦。关于gcc如何看man gcc在Linux环境下编程,使用c语言的感...
- October 11, 2016 »
从最小的c程序复习编译原理
前言 程序内容 原理 编译参数说明 代码段(Sections) 附录 elf格式执行文件结构 前言这是一篇读后感,从《程序员的自我修养》一书,复习了c语言的底层原理,下面以...