- 博客(744)
- 收藏
- 关注
原创 第4章Web表单 session
与其他多数扩展不同,Flask-WTF无须在应用层初始化,但是它要求应用配置一个密钥。-- CSRF 隐藏字段 --> < input type = " hidden " name = " csrf_token " value = " 随机生成的加密字符串 " > <!-- 标签 --> < label for = " name " > What is your name?
2026-02-16 20:55:44
452
原创 第3章模板
Jinja2模板就是一个包含响应文本的文件初始化 Flask-Bootstrap 之后,就可以在应用中使用一个包含所有 Bootstrap 文件和一般结构的基模板。怎么用 Flask-Bootstrap 给的基模板?利用 Jinja2 的模板继承机制来扩展这个基模板区块名说明位置 / 用法举例doc整个 HTML 文档最外层可以覆盖整张网页<html>标签的属性比如lang="en"或html<html>标签中的内容<head>和<body>的全部基模板内部用,不常直接改head。
2026-02-12 23:48:46
599
原创 celery入门教程 概念
不想阻塞用户请求的操作(发送邮件、导出报表、推送通知)都可以用 Celery任务可以分不同队列,例如:high_priority → 邮件low_priority → 日志分析Worker 可以订阅一个或多个队列,自动按队列顺序去取任务name。
2026-01-29 00:32:09
959
原创 ER图 教程
实体关系图也被称为 ERD、ER 图、实体联系模型、实体联系模式图或 ER 模型,是一种用于数据库设计的结构图。ER图是一种描述实体(Entity)及其之间关系(Relationship)的图形表示方法。它由美籍华裔计算机科学家陈品山在1976年提出,用于帮助设计和构建数据库模型。ER图通过实体(Entity)、属性(Attribute)和关系(Relationship)三个基本元素,直观地展示了数据库的结构我们先来看一下ER图是什么样子的。
2026-01-27 00:42:37
793
原创 Redis入门教程
Redis = 一台“专门存临时数据的服务器程序” 不是代码 不是库 不是 Python 自带的东西 而是: 一个在服务器上运行的软件。Redis = 一个一直运行的服务 用内存存数据 非常快 常用于缓存 / 临时数据。
2026-01-25 15:43:50
653
原创 flask 入门 token, headers,cookied讲解
127.0.0.1 和 localhost 只能在“本机”访问;使用 0.0.0.0 监听后,别的电脑是通过“你这台机器的真实 IP”访问的,而不是通过 0.0.0.0“客户端上传的文件列表”,每个文件都是一个对象,可以直接读取内容或者保存到服务器”。字节流 就是 返回字节(bytes 类型),而不是普通字符串(str)
2026-01-22 00:14:28
618
原创 任何“正在被遍历的容器”,都不应该在遍历过程中被结构性修改
简单理解就是每次取lst[i],i索引每次+1,但lst长度动态变化,lst始终是最新的列表对象。, lst每次都是最新的,对lst的修改,下次循环会生效,lst 始终是最新的列表对象。如果迭代器内部指针 >= 当前列表长度 → StopIteration → 循环结束。d.items() 返回的是字典中元素的实时视图(view),d变了也会变。访问的是最新的 lst,所以你看到的 lst 总是最新状态。迭代器返回元素时,是根据 当前指针位置 取元素。→ 所以看到的是最新列表内容。
2026-01-20 23:46:04
277
原创 vue3 demo教程(Vue Devtools)
-- 用户操作 --><button @click="loadMessage">点我加载一句话</button>/*绑定到页面{{ message }} 就是把储藏室里的 message 放到网页上显示。当你更新 message,网页上显示的内容会自动跟着变化*/-- 页面展示 -->
2026-01-11 21:20:01
962
原创 rust安装
RUSTUP_HOME 和 CARGO_HOME👉 只是用来告诉 Rust:“你的东西存到哪”需要在用户环境变量新增键值对【配置完,需要重新打开终端】,如。
2026-01-09 01:19:12
616
原创 yaml 入门教程
:基本“原样”,不解析 \n、\t 这些转义序列(它们就当普通字符)。例:‘内容\n字符串’ 里面的 \n 就是两个字符:反斜杠和 n。”:会解析转义序列。特殊字符会输出为其本身想表达的含义。例:“内容\n字符串” 里的 \n 会变成真正的换行。看到 - → 这是“列表”的一个元素。看到 : → 这是“字典”的一项。
2026-01-02 00:09:16
310
原创 html入门教程
超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。该语言编写的HTML 文件运行在浏览器上,由浏览器来解析。
2025-12-28 00:36:02
197
原创 Python heapq (堆/优先队列)
堆是一棵完全二叉树,树中每个结点的值都不小于(或不大于)其左右孩子的值。如果父亲结点是大于等于左右孩子就是大顶堆,小于等于左右孩子就是小顶堆。所以大家经常说的大顶堆(堆头是最大元素),小顶堆(堆头是最小元素)注意时heap不是heapq,heap是你自己起的名字,是你自己起的列表。
2025-12-21 17:10:43
391
原创 面向对象高级编程
IntEnum/StrEnum 让你“既是枚举,又像 int/str 一样用”。本体永远是枚举对象,值永远在 .value 里,只是 IntEnum/StrEnum 让这个对象“长得特别像原始值”
2025-12-14 00:50:44
801
原创 git,vscode,pycharm
Git 仓库” = 有 .git 的那棵目录树;.git 所在的那一层目录,就是这个仓库的根目录。1、变更列表视图时,暂存和没暂存的都在changes里,此时点击提交,pycharm会把没暂存的先暂存在提交2、暂存区域视图,点提交只会提交已经暂存 的在哪个分支下运行创建分支的命令,就是基于哪个分支拉一个分支出来。
2025-12-13 21:09:13
968
原创 screen教程
同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。会话共享:Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。多窗口:在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。你可以在这个房间里跑程序,你人走了(ssh 断了 / Xshell 关了 / 电脑关机),房间还在,程序继续跑。注意:uname -a 看的是“内核”,不是发行版。
2025-12-09 00:51:33
828
原创 logging 模块,stdin,stdout,stderr
函数回家找“自己文件里的全局变量”,不会跨文件去你调用它的地方要东西。APP_LOGGER_NAME = "ai_build" # 你项目的总 logger 名字,随便起一个"""配置业务日志记录器,只打印自己项目相关的日志。"""logger.propagate = False # 关键:不要往 root 传了# 避免重复添加处理器return# 控制台处理器# 文件处理器(如果指定了文件)log_file,"""业务代码里用这个拿 logger,
2025-12-03 23:50:50
884
原创 go安装下载 vscode go语言开发环境的搭建
命令行能运行的go的命令,是因为设置了path环境变量,实际就是调用了go.exe。可以根据需要更改位置。可以点开环境变量查看,双击框起来的可以看到已经有了。go run命令可以直接运行hello.go,类似于执行一个脚本文件的形式。这个命令可以终端运行,也可以命令行窗口运行,进到相应目录即可。第一个项目,比如src/go_code/project01。在 GOPATH 目录下新建src/go_code目录。在菜单的搜索框中,输入cmd,然后按 Enter键。以后所有的go项目都在这个路径下。
2025-11-08 14:49:58
743
原创 获取对象信息,dir,__len__,repr,__enter__,__exit__,__getattr__,setattr,hasattr
return f"属性class MyObj : def __init__(self) : self . x = 10 def __getattr__(self , name) : return f"属性 {name } 自动生成" def __getattribute__(self , name) : print(f"访问属性 {访问属性 b属性b自动生成"""自动生成"print(f"访问属性。
2025-10-19 19:21:46
653
原创 生成器generator,迭代器Iterator
可迭代对象(Iterable)定义:任何可以直接用于 for 循环的对象,都叫 Iterable。“任何实现了 的对象都是可迭代对象(Iterable)”,也能直接用于 for 循环。注意: 必须返回一个迭代器对象(也即这个对象实现了实现了for 循环只要求对象是可迭代的(Iterable),也就是 实现了 方法。但是,必须返回一个迭代器对象(既然是迭代器对象那就实现了)``pythonclass Counter:def init(self, n):self.n = nself.cur
2025-10-19 00:36:44
813
原创 python命名约定 _私有变量 __保护变量 公共变量
单下划线 _ 前缀的变量默认不会被 import * 导入,是 Python 的约定俗成(提示外部用户这是内部实现)类中定义 __func → Python 会在内部改名为 _ClassName__func。类中定义 __var → Python 会在内部改名为 _ClassName__var。它靠 命名约定(naming convention) 来区分。外部访问时必须用 _ClassName__func 才能访问。外部访问时必须用 _ClassName__var 才能访问。
2025-10-16 22:34:28
411
原创 python map reduce filter 函数返回值为函数 匿名函数 装饰器 偏函数
第5次调用,it = filter(_not_divisible(5),filter(_not_divisible(7),filter(_not_divisible(3), _odd_iter())))第四次调用,it = filter(_not_divisible(5),filter(_not_divisible(3), _odd_iter()))第三次调用,it = filter(_not_divisible(3), _odd_iter())调用next(it),返回5,运行到yield 5语句停下。
2025-10-13 22:52:38
1828
1
原创 进度条 track urllib.request,urlopen,rich.process,tqdm
在 rich.progress 里,每个任务都有一个 当前完成量(completed)和 总量(total)description 是显示在前面的文字(支持颜色标签 [red]、[green] 等)Progress() 创建一个进度条管理器,管理所有任务。接受一个可迭代对象(比如 range(20))。2)手动创建任务并更新(适合非迭代驱动的工作)4)嵌套进度条(外层任务 + 内层任务)“把任何可迭代对象包起来就有进度条”自动在控制台显示一个进度条。每迭代一次,进度条前进一格。3)下载(按字节显示进度)
2025-10-04 00:16:07
622
原创 哈希和加密
加密和解密使用同一个密钥使用一对密钥:公钥(public key)+ 私钥(private key)公钥加密,私钥解密(典型场景)或者 私钥签名,公钥验证(数字签名场景)Fernet.generate_key() 会生成一个随机的密钥(Base64 编码的字节串)。Fernet(key) 用这个密钥创建一个加密器对象 f。这个密钥非常重要,加密和解密都要用它(对称加密的特点)。f.encrypt() 使用密钥对 srcBytes 进行加密。返回的是加密后的 字节串,里面包含:加密后的数据时间戳(
2025-10-02 22:51:40
385
原创 socket编程 netstat 大小端 rpc(grpc) 协程 io yield
接受来自客户端的消息。缓冲区指:操作系统维护的 TCP 接收缓冲区yield把值导出给外部,不会赋值给左侧,调用send给上一次的yield的表达式赋值,即给上一次yield的左侧赋值,如果不调用send直接next,上一次yield左边会是空值,相当于发送空值send(none)
2025-09-27 21:02:48
888
3
原创 python 多线程 多进程
一个 Python 程序的整个进程,只有在 所有非守护线程(non-daemon thread)都结束后,才会真正退出。所以即使主线程已经执行完了 print(‘主线程结束’),进程仍然会等子线程执行完(即 print(‘子线程 结束’) 打印出来)之后才退出【参加daemon线程章节】。10个线程,一开始取的初始值大概率就是0,所以即使线程2赋值为1了,但是线程3取到的不是1,而是0,再写会是1.即我们写的代码去运行的时候,实在python解释器的主线程中去运行的。让它执行python解释器本身的代码。
2025-09-20 17:32:59
445
原创 python装饰器
这个sayLocal 函数调用的返回值 就是 这个内部函数 wrapper。此时在执行getXXXTime就是装饰后的了。就已经执行了装饰后的代码。wrapper() 里面的 func(),就会调用之前传进来的参数。注意python执行完 语法糖,就相当于,自己写了一条语句,不理解可以debug上述代码,看看最后一行跳转到了哪里。函数自身有函数调用的时候肯定要传参数。
2025-09-07 16:17:55
215
原创 uv教程 虚拟环境
永久生效就设置到环境变量里,或者使用每个命令的时候加-- cache-dir。具体见uv文档的命令的章节如果使用uv sync被拦截,则需要先下载对应的python版本。uv会根据i项目里的python版本,自动查找合适的python版本,去哪找的会显示2.1 下载对应的python版本首先输入 winget search python (Windows 包管理器 (winget)搜索和 Python 相关的软件包)查找可以得到的python版本。
2025-09-06 21:38:48
2585
原创 python 虚拟环境 Anaconda Miniconda
Anaconda Distribution 和 Miniconda 安装程序都包含 conda 包和环境管理器,但您计划如何使用该软件将决定您要选择哪个安装程序。conda 是 Anaconda 发行版中的包管理器,用于安装、更新、卸载软件包,以及创建和管理不同的 Python 环境。不需要主动去下python=3.10 conda就给下了。Anaconda prompt来。使用 Miniconda。
2025-07-13 23:32:54
912
原创 python excel处理
xlrd只能读取内容。可以看出,数字以小数的形式返回了。常规和数字格式下,保留小数点后一位。设置完格式之后,双击单元格才能生效。如果单元格内没有内容,设置完格式就生效了,此时往单元格内写内容就是设置的格式了。sheet.row_values(rowx=0) 还可以指定开始列和结束列的位置。sheet.col_values(colx=0) 可以指定开始行结束行的位置。
2025-07-12 23:46:50
570
原创 c++ 头文件
声明全局变量虽然合法并常见,但确实存在一些“坏味道”,在现代 C++ 开发中不推荐广泛使用它。当然一般也不会把变量定义放到头问件,那为什么还需要防止重复包含?之后不再初始化,而是保留之前的值。为什么要防止头问件重复包含?头文件的主要作用与说明。进入函数时执行初始化。
2025-06-08 21:56:20
854
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅