作者归档:salmonl

关于salmonl

成长,长成自己的样子。微博@动机在北京,欢迎来玩~

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其实就是一个HTTP代理,这里代理屹立在客户端和服务端之间,指定的请求先通过Charles, 然后在到达服务器。
继续阅读

密码保护:好运气

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

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

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

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

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

避难在人生海海

一、走进避难所

一晃好多年,没有看过一本完整的非功能性小说,飞驰的生命根本就慢不下来。突如其来的武汉肺炎,给这个高速运转的国家机器暂时断了电,个人也得以踩住刹车,让时光慢下来。是在劫难逃,又何尝不是祸福与共。

外部环境慢下来很不容易,但是一旦慢下来,就是确定持久的。个人内心静下来很容易,安静的世界一丁点响动又会打破这种静,躁起来也就容易。我记得毛姆说阅读是一座随身携带的避难所,找到这样的避难所未必容易。

第一次知道麦家是在高晓松的节目上,第一次遇到《人生海海》是在西西弗书店。两个原因对这本书有亲近感,一个原因当时放弃了。麦家这两个字和书腰上的这句话:”人生海海,潮落之后是潮起,你说那是消磨、笑柄、罪过,但那就是我的英雄主义“都格外喜欢。55的价格,让人感叹,书啥时候都贵到这个地步了。现在想想大概还是因为花了钱,后续也没有额外的时间追加投入,便觉得不值得。这次刚好有了时间,也有钱,就买了来,躲在里面。
继续阅读

Linux内存管理笔记

第一部分 为什么要进行内存管理

Linux操作系统支持多进程,每个进程都需要占用一定内存,而内存是有限的,所以需要内存管理,把有限的内存及时有效的分配给多个进程。

第二部分 内存管理的方法

一、内存管理方法汇总
内存管理的方法很多,经过了很多次的演变。有单一连续分区、固定分区、动态分区、页式存储管理、段式存储管理、段页式存储管理。这些方法的差异可参考《内存管理:分页,分段,段页结合》。每种方法的简单介绍可参考《面试题总结之windows/linux内存管理》《操作系统知识回顾(5)-内存管理
继续阅读