golang中的error处理 发表于 2019-05-02 | 分类于 golang error接口error类型本身就是一个预定义好的接口, 可以自定义error结构体,只需要实现error接口。 123type error interface { Error() string} errors包 12345678910111213141516// Pack ... 阅读全文 »
systemtap分析nginx一次http请求函数调用过程 发表于 2018-01-01 | 分类于 nginx systemtap 工作原理systemtap 的核心思想是定义一个事件(event),以及给出处理该事件的句柄(Handler)。当一个特定的事件发生时,内核运行该处理句柄,就像快速调用一个子函数一样,处理完之后恢复到内核原始状态。这里有两个概念: 事件(Event):systemtap 定义了 ... 阅读全文 »
mysql索引总结 发表于 2017-11-02 | 分类于 mysql 索引 InnoDB为啥用B+树做索引结构 Hash索引Hash只能做精确的等值查询,不能做部分匹配,不能做范围查询,不能排序 有序数组数组对于增删操作需要移动后面的数据 平衡二叉查找树数据量大时,树的高度相对会大,中序遍历可以得到一个有序序列,但是不足以按照区间快速查找数据 B树不能支持范围查询,排序 B ... 阅读全文 »
python垃圾回收 发表于 2017-10-27 | 分类于 python python的垃圾回收机制主要是引用计算,同时辅助使用标记-清除解决循环应用,分代回收可以减少垃圾回收扫描的频率。 引用计数 python默认的垃圾回收机制就是”引用计数”,每个对象维护一个引用计数,当新的引用指向该对象时,引用计数加1,当一个引用被销毁时减1,一旦引用计数为 ... 阅读全文 »
mysql数据类型选择 发表于 2017-10-23 | 分类于 mysql mysql数据类型很多,选择合适的数据类型对于提高性能大有裨益。概况来说,尽可能选择小而简单的合适的数据类型。 小而简单可以减小存储空间的消耗,IO的消耗,更利于缓存到内存,同时计算复杂度也会低。 尽量避免使用NULL有NULL的列值会使索引、索引统计和值比较更加复杂;NULL列会使用更多的存储空 ... 阅读全文 »
Python性能优化之PyPy 发表于 2017-07-27 | 分类于 Python Python等动态语言是通过将程序编译成字节码,用虚拟机执行字节码来运行程序的,并不是直接执行的本地机器码,所以解释型动态语言一般会比编译型静态语言执行速度慢。python等动态类型语言之所以慢,就是因为每一个简单的操作都需要大量的指令才能完成。JIT(即时编译,一种混合了解释器和编译器好处的技术) ... 阅读全文 »
Python性能优化之火焰图 发表于 2017-07-26 | 分类于 Python 性能优化首先要知道程序的性能瓶颈在哪里,python已经提供了profile工具可以看出哪些函数耗时较长。本文介绍的火焰图会以图的形式给出程序更直观的函数调用及开销,这里将介绍的是Uber开源的python火焰图工具pyflame。 首先给出一个直观的火焰图可以很形象的看出函数调用耗时情况,横向越宽 ... 阅读全文 »
获取Let's Encrypt永久免费证书 发表于 2017-07-20 | 分类于 web 本文介绍如何使用Let’s Encrypt获取免费证书,以支持https服务。 步骤如下:1. 拉取git上的工具123# git clonehttps://github.com/letsencrypt/letsencrypt# cd letsencrypt# chmod +x letsencryp ... 阅读全文 »
lua-resty-mysql事务封装 发表于 2016-10-22 | 分类于 OpenResty lua-resty-mysql没有提供事务封装,下面提供一个事务的封装例子的主要代码部分。事务是基于session,主要将事务相关语句在同一个session上执行。12345678910111213141516171819202122232425262728293031323334353637383 ... 阅读全文 »
OpenResty之AccessLog记录response 发表于 2016-10-14 | 分类于 OpenResty Nginx的access log是在请求处理完成才写入日志文件的,下面将使用OpenResty将response加入到access log里面。123456789101112131415161718192021222324http { log_format log_req_resp ... 阅读全文 »