00-导航(第一次来点这里) 博客中的文章主要为日常所用或所学的知识,内容较多,主要包括以下系列,可以直接点击查看。如果想查看其它文章,可以使用右上角的搜索功能进行搜索。 开发语言 021-Python 021-Java 021-Vue 021-Shell 数据库 041-MySQL 041-Redis 041-ElasticSearch 041-PostgreSQL 041-MongoDB 云原生 042-D 2024-01-01
Flask 源码解析:启动流程 werkzeug 示例werkzeug 三种启动方式 12345678910111213141516171819202122232425from werkzeug.wrappers import Request, Responsefrom werkzeug.serving import run_simple# 方式一:实例化Response,最后 self.request = encode('He 2024-09-25 Python > Flask #Flask #Pythonrun_simple
Flask 源码解析:多进程多线程 app.run() 中可以接受两个参数,分别是 threaded 和 processes,用于开启线程支持和进程支持。先从 app.run() 这个方法看起 12345678910111213141516171819def run(self, host=None, port=None, debug=None, **options): from werkzeug.serving import 2024-09-25 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-25 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-25 Python > Flask #Python #Flask
02-Flask session Flask 中文文档: https://dormousehole.readthedocs.io/en/latest/ http://www.pythondoc.com/flask/config.html https://flask-cn.readthedocs.io/en/latest/ Flask 英文文档(官方):https://flask.palletsprojects.com/en 2024-09-25 Python > Flask #Python #Flask
系统调用 accept 在完成三次握手后,该连接被放到全连接队列(也称 Accept Queue)里面,server 端 TCP 会创建一个 sock 结构来与 client 端的 scoket 进行一对一的数据传递。 但这个 sock 存在于内核中,server 端用户进程还无法使用。进程要想使用这个新的连接,必须调用 accept 系统调用生成一个与sock 关联的 socket,然后进程通过对这个 socket 进 2024-09-23 Linux #Linux
系统调用 fsync、fwrite、fflush、mmap、write barriers 1、各系统调用介绍大部分内容来自百度百科。 1.1、fsync调用 fsync 可以保证文件的修改时间也被更新。fsync 系统调用可以使您精确的强制每次写入都被更新到磁盘中。您也可以使用同步(synchronous)I/O 操作打开一个文件,这将引起所有写数据都立刻被提交到磁盘中。通过在 open 中指定 O_SYNC 标志启用同步I/O。 1.2、fwritefwrite( 2024-09-23 Linux #Linux
系统调用 socket 注:本文分析基于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
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
JVM 参数设置 1、idea设置JVM参数1.1、idea设置全局的JVM参数一共三步 第一步:一次点击【菜单栏 Help】 -> 【Edit Customer VM Options】 第二步:把想要设置的参数直接写在里面,设置完成后记得重启idea。如下图: 第三步:重启后,查看结果,在idea的最右下角会显示内存的使用情况,如果没有显示可以设置显示,如下图,在【setting】中勾选红色框那个选项,点 2024-04-19 Java #Java
JVM 启动参数大全 官方网站 https://docs.oracle.com/javacomponents/jrockit-hotspot/migration-guide/cloptions.htm#JRHMG127 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BGBCIEFC 介绍java启动参数共分为三类; 标 2024-04-19 Java #Java
JVM 垃圾回收之常见垃圾回收算法 0、背景我们知道,Java 为了让程序员更专注于代码的实现,而不用过多的考虑内存释放的问题,采用了自动的 垃圾回收机制,也就是我们熟悉的 GC。 有了垃圾回收机制后,程序员只需要关心内存的申请即可,内存的释放由系统自动识别完成。换句话说,自动的垃圾回收的算法就会变得非常重要了,如果因为算法的不合理,导致内存资源一直没有释放,同样也可能会导致内存溢出的。 除了 Java、C#、Python 等语言也 2024-04-19 Java #Java
JVM 线程状态 线程栈状态在 Java 中线程的状态一共被分成6种: 初始态(NEW) 创建一个Thread对象,但还未调用start()启动线程时,线程处于初始态。这个状态我们使用jstack进行线程栈dump的时候基本看不到,因为是线程刚创建时候的状态。 运行态(RUNNABLE),在Java中,运行态包括 就绪态 和 运行态。 就绪态 该状态下的线程已经获得执行所需的所有资源,只要CPU分配执行权 2024-04-19 Java #Java