月度归档:2020年03月

Redis和Memcached区别

Part1 特点
一、Memcached
0、多线程
1、不支持持久化
2、只支持string类型
2、过期策略是惰性删除

二、Redis
0、单线程
1、支持持久化
2、类型丰厚,都是精心设计的高效数据结构
3、过期策略是惰性删除和定期删除。
4、支持集群
继续阅读

nginx_lua为什么比PHP性能高

之前做过测试用nginx_lua实现简易的API是PHP的8倍,线上复杂逻辑API是PHP的4倍。

最近在回顾之前实践经验的时候,有一个问题一直想来想去,之前并没有深入思考过,为什么nginx_lua的性能比PHP高这么多?

以下是最近思考的以下原因:
0、nginx_lua是把lua作为nginx的一个模块,是异步非阻塞的方式
1、lua运行时占用内存特别少。
2、Openresty是让Web服务直接跑在Nginx服务内部,充分利用Nginx非阻塞I/O模型。
继续阅读

Charles抓包小结

使用Charles抓包,认为只是一个工具,没有深究过,用一点探索一点,换个手机配置一遍发现竟然很多原则性的东西都不太清楚。

本来打算整一篇完整的配置过程,后来发现了很多整理极其优秀的文章。故而,这里就总结一些抓包原理和配置原理,具体操作细节可参考文末的文章。

说明:Charles是付费软件,可以试用30天,在官网https://www.charlesproxy.com下载,可以找破解的charles.jar包替换, 在线生成jar包工具https://www.zzzmode.com/mytools/charles/

覆盖安装的charles.jar即可

mv ~/Desktop/charles.jar /Applications/Charles.app/Contents/Java

注:官网下载Charles,有时候比较慢,可以在百度网盘下载。【链接地址 密码:wn7a】

一、抓包原理小结
抓包全称”抓取数据包”,而数据包是在网络中传输格式化数据(以一定的格式封装、分组、打包)的单位。

抓包软件Charles其实就是一个HTTP代理,这里代理屹立在客户端和服务端之间,指定的请求先通过Charles, 然后在到达服务器。
继续阅读

密码保护:好运气

这是一篇受密码保护的文章,您需要提供访问密码:

进程和线程三(Linux进程间通信)

一、前言
在讨论进程间通信的时候,我们有一个前置条件,就是先要弄明白进程的概念,进程地址空间的概念,进程的数据结构。务必务必要弄清楚后在继续,读者可查阅本站相关的内容,或其他资料。

二、为什么要进行进程间通信
0、什么是进程间通信
进程间通信即通常所说的IPC(Inter Process Communication), 用户态的进程之间如何进行同步和交换数据的机制。进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区, 进程B再从内核缓冲区把数据读走, 内核提供的这种机制称为进程间通信。

1、为什么要进行进程间通信
每个进程各自有不同的进程地址空间, 任何一个进程的全局变量在另一个进程中都看不到。
继续阅读