每周为您推荐最新、最有趣的项目、工具、网站和资源,在快节奏的生活中发现实用的宝藏资源!
项目
Gemini Search -
一个基于 Gemini 的 AI 搜索引擎
一个由 Google 的 Gemini 2.0 Flash 模型支持的 Perplexity
风格搜索引擎,通过 Google 搜索进行基础支持。获取由 AI
驱动的答案,包含实时网络来源和引用。
chclt/oh-my-wechat:
微信备份与年度数据报告
这是一个为微信设计的备份阅读器,总体上还原了微信,但又有一些新的设计,并提供了微信年度数据报告功能。
PDFMathTranslate
一款开源的 PDF 文档翻译及双语对照工具
📊 保留公式、图表、目录和注释
🌐 支持多种语言和诸多翻译服务
🤖 提供命令行工具图形交互界面以及容器化部署
Slidev
一款基于 Markdown 的演示工具,可使用 Vue
组件创建交互式幻灯片,具有实时编码、LaTeX
支持和各种格式导出选项等功能。
工具
Notion 推出的头像生成工具
Noti ...
最近发现在使用下列命令启用单机多卡训练模型时,nohup.pid
文件只会记录下主进程的 pid。
1python -m torch.distributed.launch xxx.py > nohup.log 2>&1& echo $! > nohup.pid
当 kill 掉主进程时,仍然会有如下图所示的子进程残留
使用下列命令可以查看当前占用内存最多的 10 个进程并得到上图的结果
1ps -aux | sort -k4nr | head -10
下面是对命令的逐步解析:
ps -aux:
ps:显示当前系统中运行的进程信息。
-aux:
a:显示所有用户的进程。
u:以用户友好的格式显示(包括用户名、CPU、内存使用率等)。
x:显示不依赖于终端的进程(如后台进程)。
|:
管道符,将前一个命令的输出传递给下一个命令作为输入。
sort -k4nr:
sort:对输入内容进行排序。
-k4:按第 4 列进行排序(ps -aux 的第 4
列通常是 内存 使用率 %ME ...
方法一
1pip freeze > requirements.txt
这种方式会将当前虚拟环境中的所有依赖加入到 requirements.txt 文件
中
可能会存在一些我们项目中没有使用的依赖
不推荐使用
方法二(推荐)
推荐使用 pipreqs
可以指定我们需要生成 requirements.txt
的项目,只添加项目使用的依赖
12345# 安装pip install pipreqs# 使用pipreqs /home/project/location
如果出现报错
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xae in position 406: illegal multibyte sequence
则需要指定项目编码为 utf-8
1pipreqs /home/project/location --encoding=utf8--force
如果直接将 OSS 的代码写到业务逻辑中,当我们需要切换不同的 OSS
时,就要直接修改业务代码,极为不便。
此时可以使用适配器模式,为不同的 OSS
创建不同的适配器,切换时只要通过配置文件启用不同的适配器即可。
创建 OSS 接口
首先创建一个 OSS
的接口,声明一些在业务中会调用的方法,例如上传文件
123456@Componentpublic interface OSSAdapter { String upload(MultipartFile file); // 业务中会调用的方法......}
这个接口会被不同的 OSS 适配器实现
在实际业务逻辑中,直接通过 OSSAdapter
调用相关方法即可,更换 OSS 也不用修改实际业务代码。
OSS 适配器
假设现在有阿里云的 OSS 和 MinIO 的 OSS,分别创建他们的适配器并实现
OSSAdapter 接口。
在适配器中,调用对应的 SDK 实现 OSSAdapter
接口中的方法。
123456public class AliOSSAdapter implem ...
DDL
数据库定义语言,用来定义数据库对象(数据库,表,字段)
数据库操作
查询
查询所有数据库
1show databases
查询当前数据库
1select database();
创建
1create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
删除
1drop database [if exists] 数据库名;
使用
1use 数据库名;
表操作
查询
查询当前数据库所有表
1show tables;
查询表结构
1desc 表名;
查询指定表的建表语句
1show create table 表名;
创建
1234567CREATE TABLE 表名( 字段1 字段1类型[COMMENT 字段1注释], 字段2 字段2类型[COMMENT 字段2注释], 字段3 字段3类型[COMMENT 字段3注释], ......., 字段n 字段n类型[COMMENT 字段n注释 ])[C ...
MISC
未读在实验室服务器上,我们往往需要使用代理,但是又不能安装代理软件,这个时候我们可以使用本机代理来实现服务器代理,从而曲线救国
首先,打开本地代理软件的全局模式(以 Mihomo Party 为例)
然后查看本机代理的端口(一般 clash 内核的代理软件都是走的
7890 端口),使用管理员权限打开本地终端设置代理
cmd
12set http_proxy=http://127.0.0.1:7890set https_proxy=http://127.0.0.1:7890
powershell
1$env:HTTP_PROXY="http://127.0.0.1:7890"; $env:HTTPS_PROXY="http://127.0.0.1:7890"
使用下列命令连接服务器
1ssh -R 2333:127.0.0.1:7890 username@ip
这样远程服务器上访问 localhost:2333 的流量会通过 SSH
隧道被转发到你本地的 127.0.0.1:7890 端口
然后在服务器端,我们设置
12export ...
Redis是一个基于内存的key-value结构数据库,是互联网技术领域使用最为广泛的存储中间件
Linux 安装 Redis
以 Ubuntu/Debian 为例,更多系统可以查看 Redis
官方文档
123456sudo apt-get install lsb-release curl gpgcurl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpgsudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpgecho "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.listsudo apt ...
深度学习
未读
论文:https://arxiv.org/pdf/2405.06228
代码:https://github.com/nizhenliang/CGRSeg/blob/main/models/decode_heads/rcm.py
Rectangular Self-Calibration Module (RCM)
可以捕捉轴向全局上下文,旨在使模型聚焦前景。
其由矩形自校准注意力 和 MLP 组成,主要结构如下:
矩形自校准注意力
矩形自校准注意力可表述如下:
其中 代表卷积操作, 是卷积核的大小, 表示批量归一化和 ReLU
激活函数, 表示 Sigmoid
函数
然后将注意力特征与输入特征进行融合,通过一个卷积层提取输入特征的局部细节,然后与得到的注意力权重相乘
完整代码实现如下:
12345678910111213141516171819202122232425262728293031class RCA(nn.Module): def __init__(self, inp, kernel_size=1, ratio=1, band ...
论文: https://arxiv.org/abs/2109.00699v1
代码: https://github.com/IVIPLab/FBSNet
FBSNet 的网络结构可分为三部分:
initial block
dual-branch backbone
feature aggregation module
Initial Block
Initial Block 包括三个 的卷积层,并在每一个卷积层之后添加了 Batch
Normalization 和 PReLU 激活函数,在三层卷积层结束之后,又进行了一次 BN
和 PReLU
12345678910111213141516171819202122232425262728293031323334353637383940414243class Conv(nn.Module): def __init__(self, nIn, nOut, kSize, stride, padding, dilation=(1, 1), groups=1, bn_acti=False, bias=Fa ...
在使用 SpringBoot 框架开发项目时,经常会遇到
「创建时间」「修改时间」等公共字段,这些字段每次都需要我们手动去设置,十分麻烦。
本文使用 SpringBoot 中的切面功能来实现这些公共字段的自动填充
定义注解
首先我们定义一个注解用于标记哪些方法需要实现自动填充
123456789101112/** * 标识需要自动填充公共字段的方法 */@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface AutoFill { /** * 数据库操作类型 * @return */ OperationType value();}
@Target(ElementType.METHOD) 标记该注解用于方法上面
@Retention(RetentionPolicy.RUNTIME)
指定注解在运行阶段可用
OperationType value(); 函数指定注解需要指定一个参数
value,值为 OperationType
...