在使用 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 类型,Operation ...
深度学习
未读LVIS 数据集存在一个不足之处:该数据集呈现出长尾分布特性,导致普遍物种类别缺失,这可能会对训练出的模型精度与泛化能力造成影响.
针对这一问题,Reviving Iterative Training with Mask Guidance for Interactive Segmentation 对 LVIS 标签进行补充,加入 COCO 数据集中的掩码信息.最终得到了包含 104k 张图片 和 1.6M instance-level masks 的 COCO+LVIS 数据集.
数据集链接:SamsungLabs/ritm_interactive_segmentation: Reviving Iterative Training with Mask Guidance for Interactive Segmentation (github.com)
数据集组合
首先将下载的 cocolvis_annotation.tar.gz 解压会得到两个文件夹 train 和 val
将从 LVIS 官网下载的 train2017.zip 和 val2017.zip 解压并重命名为 images ...
本文译自: 89 things I know about Git commits · Jamie Tanna | Software Engineer (jvt.me)
1.Git 有不同的用途——协作工具、备份工具、文档工具
2.Git 的 commit messages 堪称出色
3.我从没遇到过谁像我一样喜欢阅读 commit messages
4.通过提交记录查找变更原因比通过 issue/bug tracker 更容易
5.标注为 ‘Various fixes. DEV-123’ 的 commit, 要比只写 ‘Various fixes’ 的更好
6.如果 issue 本身没有任何有用信息,那么提交说明“Various fixes. DEV-123”是更糟糕的
7.Rebase-merging 是我的偏好. 然后是 squash-merge, 再然后是 merge
Rebase-merging 指先 rebase 再 merge, 将当前分支的所有提交 “移植” 到目标分支的最新提交, 会生成一个线性的提交历史, 例如原来的分支可能是这样的
123main: A---B ...
blog
未读本文介绍一种基本通用的方法,为博客添加一个酷炫的 AI 摘要功能.
感谢 @enjoy 大佬开源的后端代码和 @qxchuckle 大佬开源的前端代码,本文在两位大佬的代码基础上修改完成.
AI 摘要后端搭建
使用 Cloudflare Workers 搭建 AI 摘要的后端,进入 cloudflare 的 Workers 和 Pages,创建 worker,输入下面的代码,然后保存并部署
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112function addHeaders(response) { response.headers.set('Access-Control-Allow ...
目前仍可用的镜像(随时可能失效)
12345678910111213sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://huecker.io", "https://dockerhub.timeweb.cloud", "https://noohub.ru" ]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker
使用 Nginx
需要有一台国外服务器, 按下面添加 Nginx 配置即可:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152server { listen 44 ...
最近忙着写论文,苦于图表一旦有所增加或删除就要全部重新编号,就研究了下 Word 怎么对图表进行自动编号。
设置章节编号
一般来说,图表编号是以章节为分割,例如「图 1-1」代表第二章第一张图,所以为了设置每一章节的编号与章节相关联,我们先要设置章节编号。
选中我们的章节标题,将鼠标移动到 样式>标题1,在下拉菜单中选择「更新 标题 1 以匹配所选内容」,将其设置为标题1
然后点击列表,在下拉菜单中点击「定义新的多级列表」
在弹出的窗口中点击「更多」
然后设置「将级别链接到样式」为标题1,并设置好我们需要的编号样式
设置图表编号
插入一张图片,选中图片,在引用里面选择「插入题注」
标签设置为「图表」,位置选择「所选项目下方」,点击编号,勾选「包含章节号」,章节起始样式选择「标题 1 」,分隔符根据自己需要设置。
点击确认之后,可以发现在我们的图片下方已经插入了一条编号,我们还可以修改图片标注和格式。
但是如果我们设置的章节编号样式是汉字「一、二、三……」,就会出现编号是「一.1」,而不是我们想要的「1.1」。
将「一.1」转换为「1.1」
本质上,插入题注插入的其实 ...
Nextra 是 Next.js 上的一个框架,可构建以内容为重点的网站。它拥有 Next.js 的所有强大功能,还能轻松创建基于 Markdown 的内容。Nextra Docs Theme 是一款包含几乎所有现代文档网站所需内容的主题,包括顶部导航栏、搜索栏、页面侧边栏、TOC 侧边栏和其他内置组件等,使用 Nextra + vercel 可以轻松搭建起一个文档站。
部署
fork Nextra 的仓库 shuding/nextra-docs-template: Nextra docs template (github.com)
fork 完成后,打开 vercel,切换到 Overview 页面,点击 Add New...,选择 Project。
在 Import Git Repository 中选择我们刚刚 fork 的仓库,点击 Import
接下来点击 Deploy 按钮等待部署完成即可。
部署完成后点击 Continue to Dashboard,可以看到 vercel 为我们提供的域名。
打开这个域名,即可访问我们搭建的文档站点了。
由于 vercel 检测 ...
Umami 是一款开源网站统计工具,可以通过插入一行前端代码来实现网站访问量统计。
本文介绍如何使用 vercel 部署 Umami。
Fork Umami 官方仓库
Umami 的官方仓库地址:umami-software/umami: Umami is a simple, fast, privacy-focused alternative to Google Analytics. (github.com)
点击 Fork,将该仓库 Fork 到自己的 github 账号中。
创建数据库
Umami 需要数据库,支持 postgresql、mysql 等数据库,这里我们使用 vercel 提供的 postgresql 数据库服务。
登录vercel,切换到 Storage 界面。点击 Create Database。
选择 Postgres
出现以下界面则说明创建成功,复制 postgres url
部署项目
切换到 Overview 页面,点击 Add New...,选择 Project。
在 Import Git Repository 中选择我们刚刚 fork 的仓库 ...
Kaggle 每周有 30 个小时的免费 GPU 资源,可以使用 Kaggle 来部署 stable-diffusion 免费享受 AI 绘画服务。
部署代码
注册 Kaggle 后,打开这个链接:stable-diffusion-webui (kaggle.com)
点击左上角 Cpoy & Edit 按钮
在打开的页面侧边栏 Session options 中按照下图所示设置
配置内网穿透
由于 Kaggle 没有提供外网访问的端口,所以需要配置内外穿透工具,这里使用 ngrok。
通过这个链接获取 authtoken Your Authtoken - ngrok
然后将 authtoken 填入到下图所示位置
添加模型
如果需要添加模型,可以将模型的下载链接填入到下图所示位置
即可在启动后自动下载模型.
部分模型可能无法下载,可以手动上传到 kaggle 的数据集,然后在下图位置设置数据集路径
启动
点击工具栏 Run -> Run all
等待下载相关依赖和模型文件,这个过程可能需要十几分钟,然后浏览器打开下图所示的链接即可
为了保证数据不丢失,需要定时备份数据,但是如果仅仅是将数据库备份到服务器本地,万一服务器数据损坏,依然无法恢复数据库,本文介绍一种将数据库备份到阿里云盘的方法,保障数据不会丢失。
配置阿里云盘
安装阿里云盘客户端
使用下面的一键安装脚本,安装阿里云盘客户端
Debian / Ubuntu
1sudo curl -fsSL http://file.tickstep.com/apt/pgp | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/tickstep-packages-archive-keyring.gpg > /dev/null && echo "deb [signed-by=/etc/apt/trusted.gpg.d/tickstep-packages-archive-keyring.gpg arch=amd64,arm64] http://file.tickstep.com/apt aliyunpan main" | sudo tee /etc/apt/sources.list.d/tickstep-al ...