Flask如何接收数据
简介
本篇文章将介绍使用 Python Flask 库搭建的后端程序,如何与前端程序进行数据通信。一方面介绍如何使用 Python requests 库发送 post 请求,另一方面介绍如何使用 JavaScript fetch 方法发送 post 请求。此外,详细地展示在 Flask 中如何接受数据,数据格式的转换与解码等。
requests.post
requests.post | requests docs
使用 requests 库的 post 方法进行数据传输时有非常多的可选参数,它的函数声明如下:
123456789101112131415161718(function) def post( url: str | bytes, data: _Data | None = None, json: Any | None = None, *, params: _Params | None = ..., headers: _HeadersMapping | None = ..., cookies: CookieJar | _TextMappi ...
cv2如何处理RGB和BGR
RGB vs BGR
使用 np.array 创建一张 255×255 的 RGB 值为 [255, 0, 0] 的红色图像,类型为 np.ndarray。使用 cv2.imwrite 方法保存这张图片为 red.png,在本地 red.png 显示为蓝色,它的 RGB 值为 [0, 0, 255]。再使用 cv2.imread 方法读取这张图片,得到的新图像的 RGB 值为 [255, 0, 0]。
1234567891011121314import cv2import numpy as npcolor = np.array([255, 0, 0]) # R:255, G:0, B:0 -> Redimage = np.ones(shape=[255, 255, 1], dtype=np.uint8) * color.reshape([1, 1, -1])print(f"image.shape: {image.shape}")# image.shape: (255, 255, 3)cv2.imwrite(filename="re ...
AdblockPlus 过滤规则
过滤规则
Learn how to write filters (English only) | AdblockPlus
在 AdblockPlus>Advanced 中编写自定义的过滤规则,可以屏蔽掉网页中的广告、页面块等一些 HTML 标签块。
例如这个示例中的前 3 条规则
123bilibili.com##.right-bottom-bannerbilibili.com##.ad-floor-expbilibili.com##.ad-report
这 3 条规则是基于 CSS 选择器(具体是 class 选择器)选择 HTML 标签进行屏蔽的。它们表示的意思是屏蔽掉 bilibili.com 下的所有 class 属性中包含 right-bottom-banner,ad-floor-exp 或 ad-report 的标签。
在 Google 浏览器中,可以通过右键 > inspect (F12)来检查页面中的 HTML 块用于查询需要屏蔽的标签的 class 属性值。
关于反向传播的实现
AutoGrad
forward
考虑一个简单的情形——复合函数的反向传播。例如考虑 f(⋅)=(⋅)2f(\cdot) = (\cdot)^2f(⋅)=(⋅)2 和 g(⋅)=e(⋅)g(\cdot) = e^{(\cdot)}g(⋅)=e(⋅) 的复合函数
y=f(g(f(x)))=(ex2)2y = f(g(f(x))) = (e^{x^2})^2
y=f(g(f(x)))=(ex2)2
如何通过反向传播计算 ∂y/∂x\partial{y} / \partial{x}∂y/∂x。
首先我们考虑正向 forward 的过程,对于一个输入 x 经过复合函数后得到输出 y:
x→1(⋅)2x2=a→2e(⋅)ea=b→3(⋅)2b2=yx \xrightarrow[1]{(\cdot)^2} x^2 = a \xrightarrow[2]{e^{(\cdot)}} e^{a} = b \xrightarrow[3]{(\cdot)^2} b^2 = y
x(⋅)21x2=ae(⋅)2ea=b(⋅)23b2=y
在复合函数 forward 的过程中会产生很多临时的“中间结果”,我 ...
ios快捷指令实现自动钉钉打卡
注: 仅用于技术分享,切勿滥用
我的实现方案是将 iPad 放在需要打卡的位置实现定位,例如工位/实验室,并通过 “快捷指令” 创建自动打卡脚本实现自动化,具体操作如下:
首先需要关闭iPad的锁屏,这样就避免了运行快捷指令时的手动解锁屏幕
然后需要将 iPad 的 “自动锁定” 时间设置为 10 分钟,这是为了在随机等待时间 (2~6分钟) 中,防止 iPad 自动锁屏而中断快捷指令脚本
此外需要在钉钉 App 中打开 “极速打卡” 功能,这样就能在打开 App 时自动进行打卡,而不需要手动操作
最关键的部分,需要创建一个 “快捷指令” 的脚本用于钉钉打卡,可以参考一下我的实现。我在其中加入了随机等待时间的功能,注意其中等待时间的单位是秒,表示随机等待 120s~360s 再运行 “打开钉钉”,这样避免了每天都在同一时间打卡
注意:其中的 “等待” 指令中的 “#随机数” 需要长按才能设置
需要特别注意的是 “快捷指令/钉钉/考勤打卡” 这个指令只是打开钉钉考勤打卡的界面,而!!!不触发打卡!!!,请不要用这个指令来进行打卡,它需要额外 ...
最大公约数的性质及应用
最大公约数的定义
最大公因数 | wikipedia
最大公约数 (gcd, greatest common divisor) 或者最大公因数 (hcf, highest common factor) 指能够整除多个非零整数的最大正整数.
整数序列 a1,a2,⋯ ,ana_1, a_2, \cdots, a_na1,a2,⋯,an 的最大公约数记为 gcd(a1,a2,⋯ ,an)\gcd(a_1, a_2, \cdots, a_n)gcd(a1,a2,⋯,an), 在不引起歧义的情况下也可以记作 (a1,a2,⋯ ,an)(a_1, a_2, \cdots, a_n)(a1,a2,⋯,an).
最大公约数的性质
任意 a 和 b 的公因数都是 gcd(a, b) 的约数
证明: 设 d = gcd(a, b), 根据贝祖定理 (线性数论定理), 存在整数 x 和 y 使得 xa + yb = d.
对于 a 和 b 的任意公约数 c 满足 c|a 并且 c|b, 由整除的线性性可以得到 c | (xa + yb) 即 c | gcd(a, b)
gcd ...
内存对齐
参考
C/C++内存对齐详解 | zhihu
【到底为什么要内存对齐?】| bilibili
为什么要进行内存对齐
尽管内存是以字节为单位进行划分的, 但是大部分处理器并不是按字节块来存取内存的. 它一般会以 2字节, 4字节, 8字节, 16字节甚至32字节为单位来存取内存, 我们将上述这些存取单位称为内存存取粒度.
内存存取粒度的大小取决于存储字长和寻址方式. 存储字长即存储体中一个存储单元所包含的存储元数量, 寻址方式通常包括: 1.按字节寻址, 2.按字寻址, 3.按半字寻址, 4.按双字寻址. (一个 word 的大小取决于存储字长)
现在考虑4字节存取粒度的处理器取int类型变量(32位系统), 该处理器只能从地址为4的倍数的内存开始读取数据.
假如没有内存对齐机制, 数据可以任意存放, 现在一个int变量存放在从地址1开始的连续4个字节地址中, 该处理器去取数据时, 要先从0地址开始读取第一个4字节块, 剔除不想要的字节(0地址), 然后从地址4开始读取下一个4字节块, 同样剔除不要的数据(5,6,7地址), 最后留下的两块数据合并放入寄存器. 相比于将int变量存放 ...
内网服务器通过代理连接外网
参考
内网服务器如何设置代理访问外网
描述
公司的服务器通常只能连接公司内网, 不能访问互联网, 这对配置 conda/docker 环境来说比较不方便. 如果有一台可以访问公司外网的服务器, 可以在外网服务器上配置 squid 代理服务, 再让内网服务器通过外网服务器的代理端口连接外网.
配置外网服务器
安装 squid 软件
12# 安装 squid (这里采用 yum 安装)$ yum install -y squid
修改 squid 配置文件
123456# CD 到配置文件目录下$ cd /etc/squid/# 备份原始配置文件$ cp squid.conf squid.conf_bak# 修改配置文件$ vim squid.conf
12345# 将 http_access deny all 注释修改为 http_access allow all# http_access deny allhttp_access allow all# 修改端口为代理的端口http_port 10022
启动 squid 服务
12345678# 检查语法$ squid -k parse ...
RISCV汇编指令
参考
技术规范 Specifications
Volume 1, Unprivileged Specification version 20240411 (非特权指令规范)
The RISC-V Instruction Set Manual Volume I Unprivileged Architecture Version 20240411
Volume 2, Privileged Specification version 20240411 (特权指令规范)
The RISC-V Instruction Set Manual: Volume II Privileged Architecture Version 20240411
旧版规范 (20191213, 汪辰老师所用版本)
RISC-V Technical Specifications Archive
参考手册
The RISC-V Reader: An Open Architecture Atlas Authored by David Patterson, Andrew Waterman Edition: 1st
一个可 ...
Vim使用笔记
练习
Interactive Vim tutorial
Vim的工作模式
%%{
init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffff',
'primaryTextColor': '#000f',
'primaryBorderColor': '#000f',
'lineColor': '#000f',
'secondaryColor': '#0000',
'tertiaryColor': '#0000'
}
}
}%%
graph TB
command["命令模式Command"]
insert["插入模式Insert"]
replace(["取代模式Replace"])
visual(["可视模式Visual"])
lastline["底线命令模式Last Line"]
command--"i,a,o"--> insert
insert --"Esc"--> command
comman ...