wenqiang li

Results 130 issues of wenqiang li

### 概述 main函数中,根据master_process的配置,如果开启则为master worker模式,则会调用ngx_master_process_cycle函数启动worker进程。在调用该函数启动worker进程前,会调用ngx_init_signals函数注册信号回调。 + ngx_master_process_cycle函数: 在该函数中,调用了ngx_start_worker_processes启动worker进程。 ```c // 启动worker进程 ngx_start_worker_processes(cycle, ccf->worker_processes, NGX_PROCESS_RESPAWN); // 启动cache进程 ngx_start_cache_manager_processes(cycle, 0); ``` + ngx_start_worker_processes函数: 在该函数中ngx_spawn_process是封装了fork函数和创建父子进程通信的channel,用来启动worker进程的。ngx_worker_process_cycle是函数指针,worker实际的运行函数。 ```c static void ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n, ngx_int_t type)...

nginx

I hereby granted the copyright of the changes in this pull request to the authors of this lua-nginx-module project. Dynamically downgrade to HTTP to upstream based on SNI. ```nginx server...

conflict
needs-test-cases

I hereby granted the copyright of the changes in this pull request to the authors of this lua-resty-core project. ref: https://github.com/openresty/lua-nginx-module/pull/1687

### 环境准备 使用pyenv管理python版本,切换到3.8.5。 安装线性回归测试所需要的包: ``` pip install numpy pip install matplotlib pip install scikit-learn pip install pandas pip install scipy pip install graphviz ``` ### 训练测试模型 ```py import numpy as...

### pyenv **pyenv** 是一个流行的工具,用于在同一系统中管理多个 Python 版本。使用 pyenv,你可以轻松地切换全局 Python 版本,或者为特定项目设置本地 Python 版本。以下是使用 pyenv 管理 Python 版本的基本步骤: 安装 pyenv: 在 Mac 上,你可以通过 Homebrew 来安装 pyenv: ```zsh brew update brew install pyenv ```...

@State 是swiftUI的一个属性装饰器,可以将被修饰的属性改为有状态的,当其发生改变时,与其绑定的组件会自动更新。 @Binding 同样是个属性装饰器,修饰子组件的属性,绑定父State的属性。 ```swift import SwiftUI struct ContentView: View { var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.cyan) Text("Hello, world!") } .padding() } } struct RowContent:...

## 概述 写好的一篇提交了,等提交完发现丢了。。。 丢了。。。只能简单回忆记录一下了。 了解属性包装器前先要了解存储属性和计算属性,属性包装器实际上就是对有关系的存储属性和计算属性进行包装。 当需要在存储属性赋值时做一些逻辑,常规的做法是把该存储属性定义为private的,用计算属性封装一层。 例如:需要把属性值限制在小于12,下面是个例子 ```swift struct Test { private var _x:Int = 0 var x:Int { get {self._x} set {self._x = min(12, newValue)} } private var _y:Int...

openresty、redis都有对lua的支持,通过lua脚本扩展c程序的功能。尤其是openresty,在nginx的基础上添加了lua的支持,使得nginx的开发变的简单多了。 用openresty开发了个项目,在lua虚拟机可以取到nginx的一些变量,也可以修改一些变量。然后nginx再在不同的阶段调用这些lua代码实现功能的扩展。 虽然还没看过openresty的代码,猜测是在nginx启一个lua 的虚拟机,潜入一些nginx的变量和函数。这样lua虚拟机就可以获得nginx的一些变量。然后在nginx的不同阶段执行这些lua代码。 大概的例子如下,c代码相当nginx的代码,test.lua代码相当于开发的lua脚本。 ``` c // gcc -o tcall tcalllua.c -I /usr/local/include -L /usr/local/lib -llua #include #include #include #include #include int add(lua_State* L) { int x = luaL_checknumber(L,1);...

### 概述 http3并没有改变http1的语义: >> 1. 请求只能由客户端发起,而服务器针对每个请求返回一个相应。 >> 2. 请求与响应都由Header、Body(可选)组成,其中请求必须包含有URL和方法,而响应必须含有相应码。 >> 3. Header中各Name对应的含义保持不变。 只是改变了编码格式和传输: >> 1. 采用二进、静态表、动态表、Huffman算法 对 Http Header编码,不只提供了高压缩率,还加快了发送端编码、接收端解码的速度。 >> 2. 基于UDP在应用层实现无序连接,并在此基础上通过有序的QUIC Stream提供了多路复用,连接迁移。 ![image](https://github.com/vislee/leevis.com/assets/6851261/d1d3697a-2210-4464-93c3-5ddf935eec8f) (图片来自:[https://blog.cloudflare.com/http3-the-past-present-and-future/)](https://blog.cloudflare.com/http3-the-past-present-and-future/%EF%BC%89) >> ![image](https://github.com/vislee/leevis.com/assets/6851261/8ae43d1a-cdaf-4cce-88f7-e81f7ed45afd) 在UDP报文头部与HTTP消息之间,共有3层头部 ![image](https://github.com/vislee/leevis.com/assets/6851261/2fb9b1ee-b3b5-4d5c-adda-a36ad06bfacf) 这3层Header实现的功能各不相同:...

### 概述 quic 协议是一个基于UDP实现的应用层通用的传输协议,有点类似于Tcp,有流控、保证数据的完整性。但是又规避了tcp的一些列缺陷,例如队头阻塞、慢启动、3次握手等。 ### 代码跟踪 先从一个[例子](https://github.com/quic-go/quic-go/blob/master/example/echo/echo.go)看起: ```go func echoServer() error { listener, err := quic.ListenAddr(addr, generateTLSConfig(), nil) if err != nil { return err } conn, err := listener.Accept(context.Background())...