同一台电脑上使用两个 github 账号 生成多个 SSH key 12ssh-keygen -t rsa -f ~/.ssh/id\_rsa\_one -C “one@xxx.com”ssh-keygen -t rsa -f ~/.ssh/id\_rsa\_two -C “two@xxx.com” 这样会在 ~/.ssh 目录下生成四个文件: id_rsa.one //账号 one 的私钥 id_rsa.one 2024-10-08 Git #Git
accept 与 epoll 惊群 1、什么叫惊群现象维基百科对惊群的定义: The thundering herd problem occurs when a large number of processes waiting for an event are awoken when that event occurs, but only one process is able to proceed at a time. Aft 2024-09-24 Linux #Linux
40-TCP 多进程共享 socket tornado 源码多进程(process.py)那段,发现他的多进程模型和一般常见的模型有点不一样, 常见的是主进程 bind -> listen -> accept, 将 accept 返回的 socket 用子进程处理, tornado 则是 bind -> listen -> fork, 在 listen 之后 fork,多个子进程共享 listen sock 2024-09-23 network #network
系统调用 accept 简单来说:accept 的主要工作就是从全连接队列中获取一个连接,创建通信 socket,供用户使用。 在完成三次握手后,连接被放到全连接队列(也称 Accept Queue)里面,server 端 TCP 会创建一个 sock 结构来与 client 端的 scoket 进行一对一的数据传递。 但这个 sock 存在于内核中,server 端用户进程还无法使用。进程要想使用这个新的连接, 2024-09-23 Linux #Linux
系统调用 accept 源码分析 注:本文分析基于 3.10.0-693.el7 内核版本,即 CentOS 7.4 1、函数原型12345678int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 参数说明: sockfd:套接字的文件描述符,socket()系统调用返回的文件描述符fd addr:指向存放地址信息的结构体的首地址 2024-09-23 Linux #Linux
系统调用 socket sock_alloc() 源码分析 注:本文分析基于3.10.107内核版本 当我们在进行网络编程时,socket 系统调用是必不可少的一个步骤。socket 系统调用返回的是一个fd,即一个文件描述符。其实它就只是一个 int 类型的数值,我们为什么能像操作文件一样进行读写呢?这就是 VFS 的功劳了,同时协议栈为了适配 VFS 虚拟文件系统实现了 sockfs,最终使得我们可以像操作文件一样操作文件描述符。 而实现 socket 2024-09-23 Linux #Linux
系统调用 socket 源码分析 注:本文分析基于3.10.107内核版本 1、函数原型123456int socket(int domain, int type, int protocol);参数: domain:指定通信协议族。常用的协议族有AF_INET、AF_UNIX等,对于TCP协议,该字段应为AF_INET(ipv4)或AF_INET6(ipv6)。 type:指定socket类型。常用的socket类型有 2024-09-23 Linux #Linux
10-Gunicorn 简介和使用 gunicron 官网:https://docs.gunicorn.org/en/stable/ github 地址:https://github.com/benoitc/gunicorn 1、WSGI1.1、WSGI 协议Web 框架专注于业务逻辑、专注于HTML文档的生成。Web 服务器用于处理和响应 HTTP 请求(HTTP 请求接收、建立连接、返回响应等)。Web 框架和 We 2024-09-20 Python > Gunicorn #Python #Gunicorn
11-Gunicorn 配置 gunicron 官网:https://docs.gunicorn.org/en/stable/ github 地址:https://github.com/benoitc/gunicorn Gunicorn 常用参数1234567891011121314151617181920212223242526272829303132333435363738-c CONFIG, --config 2024-09-20 Python > Gunicorn #Python #Gunicorn
41-Gunicorn 源码解析 gunicron 官网:https://docs.gunicorn.org/en/stable/ github 地址:https://github.com/benoitc/gunicorn 总体结构Gunicorn 使用 pre-fork worker model worker model:意味着这个模型有一个 master 进程,来管理一组 worker进程; fork:意味着 w 2024-09-20 Python > Gunicorn #Python #Gunicorn
Flask 源码解析:启动流程 werkzeug 示例werkzeug 三种启动方式 12345678910111213141516171819202122232425from werkzeug.wrappers import Request, Responsefrom werkzeug.serving import run_simple# 方式一:实例化Response,最后 self.request = encode('He 2024-09-16 Python > Flask #Python #Flask
Flask 源码解析:多进程多线程 app.run() 中可以接受两个参数,分别是 threaded 和 processes,用于开启线程支持和进程支持。先从 app.run() 这个方法看起 12345678910111213141516171819def run(self, host=None, port=None, debug=None, **options): from werkzeug.serving import 2024-09-16 Python > Flask #Python #Flask
Flask 源码解析:整体流程梳理 创建一个 Flask 实例 app 并启动。 1234567891011from flask import Flaskapp = Flask(__name__)@app.route('/index')def index(): return "index"if __name__ == '__main__': app.run() 将 url 和 view_func 通过 app.ad 2024-09-16 Python > Flask #Flask #Pythonrun_simple
Flask 源码解析:请求和响应 Falsk 示例1234567891011from flask import Flaskapp = Flask(__name__)@app.route('/index')def index(): return "index"if __name__ == '__main__': app.run() werkzeug 源码 讲到,执行 app.run() 最后执行的是 run_simpl 2024-09-16 Python > Flask #Python #Flask
Vue 之虚拟 DOM 一、真实DOM和其解析流程本节我们主要介绍真实 DOM 的解析过程,通过介绍其解析过程以及存在的问题,从而引出为什么需要虚拟 DOM。一图胜千言,如下图为 webkit 渲染引擎工作流程图 所有的浏览器渲染引擎工作流程大致分为5步:创建 DOM 树 —> 创建 Style Rules -> 构建 Render 树 —> 布局 Layout -—> 绘制 Painting 2024-07-11 Vue #Vue
00-LangChain 简介 github:https://github.com/langchain-ai/langchain 官网:https://python.langchain.com/v0.2/docs/concepts/ 中文:https://python.langchain.com.cn/docs/modules/model_io/ 什么是 LangChainLangChain: 一个让你的 LLM 变得更 2024-06-30 LangChain #LangChain
31-LangChain 基本使用 github:https://github.com/langchain-ai/langchain 官网:https://python.langchain.com/v0.2/docs/concepts/ 中文:https://python.langchain.com.cn/docs/modules/model_io/ 安装LangChain安装指定版本的 LangChain,这里安装截止目前 2024-06-30 LangChain #LangChain
31-LangChain 示例 github:https://github.com/langchain-ai/langchain 官网:https://python.langchain.com/v0.2/docs/concepts/ 中文:https://python.langchain.com.cn/docs/modules/model_io/ 下面是使用聊天模型的示例: 123456789101112131415 2024-06-30 LangChain #LangChain
JVM 内存结构 JVM 简介JVM(Java Virtual Machine,Java 虚拟机)是 Java 语言的核心,是一个用于解释 Java 字节码的虚拟计算机。它可以在运行 Java 程序时自动管理内存、处理异常等。Java 程序员不需要关心底层硬件和操作系统的细节,只需要编写符合 Java 语法规范的代码,就可以实现跨平台的编程。 当我们编写 Java 程序时,Java 源代码会被编译成为 Java 字 2024-04-19 Java #Java
JVM 内存结构之堆的不同 JDK 版本 jdk1.7 的堆内存模型 Young 年轻区(代) Young 区被划分为三部分,Eden 区和两个大小相同的 Survivor 区。Survivor 区间某一时刻只有其中一个是被使用的,另外一个留做垃圾收集时复制对象用,在 Eden 区间变满的时候, GC就会将存活的对象移到空闲的 Survivor 区间中,根据JVM的策略,在经过几次垃圾收集后,任然存活于 Survivor 的对象将被移动 2024-04-19 Java #Java