不建议直接使用Spring的@Async
不建议直接使用Spring的@Async@Async 中关于线程池的使用部分在 AsyncExecutionInterceptor 中,在这个类中有一个 getDefaultExecutor 方法,当我们没有做过自定义线程池的时候,就会用 SimpleAsyncTaskExecutor 这个线程池。
@Overrideprotected Executor getDefaultExecutor(BeanFactory beanFactory) { Executor defaultExecutor = super.getDefaultExecutor(beanFactory); return (defaultExecutor != null ? defaultExecutor : new SimpleAsyncTaskExecutor());}
SimpleAsyncTaskExecutor 这玩意坑很大,其实他并不是真的线程池,它是不会重用线程的,每次调用都会创建一个新的线程,也没有最大线程数设置。并发大的时候会产生严重的性能问题。
他的doExecut ...
Docker常用命令
Docker常用命令docker run:启动一个新的容器docker ps:列出正在运行的容器docker ps -a:列出所有容器docker stop: 停止正在运行的容器docker start: 启动已停止的容器docker rm:删除容器docker images: 列出本地镜像docker pull:从镜像仓库拉取或更新指定的镜像docker build: 使用 Dockerfile 构建镜像docker logs:查看日志docker logs -f <container-id or container-name>:实时跟踪日志输出docker logs --tail 50 <container-id or container-name>:查看最新的50行日志docker logs --since 30m <container-id or container-name>:查看最近30分钟的日志
Lombok应该谨慎使用
Lombok应该谨慎使用Lombok 是一款非常实用 Java 工具,可用来帮助开发人员消除 Java 的冗长代码,尤其是对于简单的 Java 对象(POJO)。
它通过注释实现这一目的。
团队强X
因为 Lombok 的使用要求开发者一定要在 IDE 中安装对应的插件。
如果未安装插件的话,使用 IDE 打开一个基于 Lombok 的项目的话会提示找不到方法等错误。导致项目编译失败。
也就是说,如果项目组中有一个人使用了 Lombok,那么其他人就必须也要安装 IDE 插件。否则就没办法协同开发。
更重要的是,如果我们定义的一个 jar 包中使用了 Lombok,那么就要求所有依赖这个 jar 包的所有应用都必须安装插件,这种侵入性是很高的。
代码可读性,可调试性低
在代码中使用了 Lombok,确实可以帮忙减少很多代码,因为 Lombok 会帮忙自动生成很多代码。但是这些代码是要在编译阶段才会生成的,所以在开发的过程
中,其实很多代码其实是缺失的。
在代码中大量使用 Lombok,就导致代码的可读性会低很多,而且也会给代码调试带来一定的问题。
比如,我们想要知道某个类中的某个属性的 ...
Linux下rm正在写入的文件会发生什么
Linux下rm正在写入的文件会发生什么在 Linux 中,文件的存储由两部分组成:
文件名(Directory Entry):用户看到的文件路径(如 /data/file.txt)。
文件数据(Inode 和数据块):实际存储文件内容的磁盘空间。
rm 命令的作用是删除文件名与 inode 的链接(目录中看不到这个文件了)。
如果该文件被其他进程正在写入,则 inode 和数据块不会立即释放,进程还可以继续写入(数据仍可写入),等所有进程关闭文件后再回收资源(回收文件的磁盘空间)。
之所以这样,是因为其实在 linux 中,文件数据和文件名是分开的
文件名是目录中的一个“链接(link)”,指向 inode。
文件内容存在 inode 管理的 block 中。
rm 命令只是调用 unlink(),移除了一个目录项。
facefusion
facefusion换脸在github找到一个换脸项目,想要本地部署玩一下
地址是这个:https://github.com/facefusion/facefusion.git
也可以进入官网:Installation | FaceFusion安装
1.安装环境git
可以在cmd输入nvidia-smi查看显卡支持的cuda版本,需要12.4+,不满足的话可以升以下显卡驱动
安装conda
2.部署先git拉一下项目
然后在项目文件夹内,创建虚拟环境,会比较慢这一步
conda create --name facefusion python=3.12 -y
创建完成后,激活环境
conda activate facefusion -y
可能会报错CondaError: Run 'conda init' before 'conda activate',那就先init,然后重新打开shell执行active
之后,安装三方库
conda install conda-forge::cuda-runtime=12.4.1 conda-forge::cudn ...
coda安装
coda安装coda官网:https://docs.anaconda.com/miniconda/install/
安装个minicoda,其余组件需要的话另外安装
安装时候有个选项是否添加环境变量,这里选择不添加
还有一项是是否将coda安装的python定位默认版本好像,这一项选中
安装完后配置环境变量
E:\ANACONDAE:\ANACONDA\ScriptsE:\ANACONDA\Library\mingw-w64\binE:\ANACONDA\Library\bin
配置完后查看版本确定是否安装配置成功
conda --versionconda infopython
偶剋!
偶剋!小程序是干完了,感觉uniapp也就那样
可能是功能太简单了,不过暂时不想深入小程序了
接下来想玩玩ai吧
小程序开发学习笔记
小程序开发笔记今天开始接触了小程序开发,直接上手做有点费劲,找个项目学着先做一遍吧….
**笔记中的项目内容部分来自b站up主咸虾米_分享的vue3+uniapp学习内容 **
记录下一些基础内容,不熟练容易忘
pages目录下放小程序页面内容
static静态文件
pages.json配置页面路由、导航栏、tabBar等页面类信息
在pages.json中,pages是页面路由及窗口表现,globalStyle是默认(全局)窗口表现,tabBar是下面的tab栏,至少要两个才会展示
manifest.json配置appid、应用名、logo、版本等打包信息
在manifest.json里面配置了appid后,微信开发工具的预览模式才能使用
swiper轮播图的使用,自动轮播,无缝衔接,点击查看预览
<template> <swiper class="banner" indicator-dots :autoplay="false" circular> <swiper-item v-for="item ...
近期生活
近期生活记录 记录一下最近的生活吧,差不多两个月左右的时间没静下心来学习和做点东西,主要原因是这段时间爽玩了一段时间,apex上钻石、干完了黑猴子、lol手游干上大师,ow也干到了钻石,这几天炉石又回归了,不过进不去游戏实在是倒胃口,游戏玩多了而且达成某个目标以后就会空虚和懊悔哈哈,最近看到同事分享的一些前端开发的内容,代码看得懂啥意思,但是不明白在干什么,对于设计和架构这部分还是基本不了解啊,趁着这个假期收拾一下重新开工吧!
整理了一下想做的东西,太多,太杂,而且没法下手,又想做微信小程序和公众号开发积累经验,但是没啥题材,而且要学新的开发语言,像ts,node这些,但是又想多学一些后端的知识,像java进阶并发、线程的使用和理解,这几天还看到了app开发,也感觉蛮有意思,但是自己想做又不知道咋开始,烦啊。
准备假期直接开干个小程序吧,先做了再说。
Twikoo配置反垃圾评论
Twikoo配置反垃圾评论简介Akismet (Automattic Kismet) 是应用广泛的一个垃圾留言过滤系统,其作者是大名鼎鼎的 WordPress 创始人 Matt Mullenweg,Akismet 也是 WordPress 默认安装的插件,其使用非常广泛,设计目标便是帮助博客网站来过滤垃圾留言。
1.注册Akismet还是通过魔法直接github登陆了,选择 Akismet Personal 订阅,就获取到了Your Akismet API key
2.配置到Twikoo中到 Twikoo 管理面板“反垃圾”模块中配置,直接粘进去就可以
