- 博客(156)
- 资源 (5)
- 收藏
- 关注
原创 Spring扩展点(三)Spring常用内置工具类
Spring常用内置工具类Base64UtilsFileCopyUtilsFileSystemUtilsReflectionUtilsResourceUtilsStringUtilsAopUtilsMethodInvokingBean(简洁反射调用,指定类的指定方法,将其声明为Bean即可在 afterPropertiesSet 阶段触发反射方法调用)Base64UtilsFileCopyUtilsFileSystemUtilsReflectionUtilsResourceUtilsString
2024-05-04 22:54:35 284 1
原创 Spring扩展点(二)Spring事务生命周期
Spring对JDBC事务做了封装,使其易于使用。主要分为声明式事务和编程式事务。@TransactionalEventListener 可以在。方法注册自定义的事务周期函数。对应的事务生命周期会调用自定义。监听事务中发出的自定义事件。
2024-05-04 17:08:09 474
原创 DIV + CSS 布局:盒子内容超出宽度时,不换行,以滚动条形式水平滑动
【代码】DIV + CSS 布局:盒子内容超出宽度时,不换行,以滚动条形式水平滑动。
2024-03-24 03:21:27 708
原创 浅浅聊下守护线程与用户线程的区别
根据以上的配置:得到一个核心线程和最大线程数都是1,永不销毁的线程池;那么这个线程会一直保持;:其他普通线程基本都可以归到用户线程下,包括主线程。可以看到:JVM几乎是在主线程运行结束的同时就退出了,而没有等线程池中的任务执行完毕。由于这里的线程是以线程池形式运行,因此线程的生命周期实际上由线程池控制,可以看看。核心线程数为:0,也就是说,实际的工作线程都是线程池启动后再创建的非核心线程。不会执行一次指定任务就结束,而是持续运行,直到用户线程全部退出后自动结束。创建的线程池,内部线程均为用户线程,JVM。
2024-02-01 15:48:22 905
原创 Redis 集群 & Redis 事务 & Redis 流水线 & Redis 发布订阅 & Redis Lua脚本操作
通知型脚本:当sentinel有任何警告级别的事件发生时(比如说redis实例的主观失效和客观失效等等),将会去调用这个脚本,这时这个脚本应该通过邮件,SMS等方式去通知系统管理员关于系统不正常运行的信息。调用该脚本时,将传给脚本两个参数,一个是事件的类型,一个是事件的描述。7.sentinel的notification-script和reconfig-script是用来配置当某一事件发生时所需要执行的脚本,可以通过脚本来通知管理员,例如当系统运行不正常时发邮件通知相关人员。
2023-10-13 15:50:01 1290
原创 解决方案(二)三方数据同步
当接入第三方系统时,可能涉及到同步第三方的数据;如果第三方有主动推送机制还好,可以直接接收推送消息。但是,有的系统并没有主动推送机制;还有即使有推送,可能也有各种异常情况导致的同步失败。此时,就需要我们主动查询。
2023-09-26 23:22:13 392
原创 JDK21新特性 有序集合
Java集合体系中,原来就有有序集合实现,但是没有规范支持有序操作的接口。,用于定义有序集合支持的操作。JDK21 新增了两个接口。
2023-09-26 22:59:32 367
原创 解决方案(一)蓄水池抽样算法(可用于抽样,抽奖等场景)
该算法可用于从数据流中随机抽取指定数量的样本。假设目标样本数量为 n,参与抽样的数量为 i。提供基本实现思路,实际落地适当改造。为个人日常分享,仅作参考。各种解决方案欢迎留言。
2023-09-26 21:48:46 215
原创 JDK21新特性 虚拟线程
现有的并发模型最终任务的执行是落到线程上面的。这个线程的实现为操作系统 线程的包装器,操作系统线程的成本很高,因此我们不能创建太多线程。在JAVA21中,传统线程称之为平台线程,在平台线程之下,派生出虚拟线程,而虚拟线程是非常轻量级的,突出一个用完就丢虚拟线程的调度由平台线程控制,切换虚拟线程上下文;在操作系统层面,还是一个同一个线程里面。因此,虚拟线程不该被池化,而是来个任务就直接放到虚拟线程中运行。
2023-09-23 17:12:52 446
原创 H5 + C3基础(七)(C3动画)
与动画相比,过渡,需要触发,而且效果相对比较单调,动画可以实现更细粒度的控制和更丰富的效果。定义动画:采用如下语法定义一个名为 move_right 的动画0% {100% {0% 也可以写作 from100%也可写作 to。
2023-08-29 00:47:41 151
原创 H5 + C3基础(六)(2D转换transform 位移 & 旋转 & 缩放)
/ 从3维原点到指定3维坐标点(x,y,z)连接的线旋转 180度。如果盒子尺寸一旦变化,margin的值也要跟着改动,如果使用平移 50% 实现,就无需改动。除了给定像素值,还可以指定方位:top,bottom,left,right,center。# 统一设置设置x,y轴方向尺寸为同一个值。所谓2D转换,就是在二维坐标系内进行各种操作,包括平移,转动,缩放等等;
2023-08-28 19:04:53 920 2
原创 H5 + C3基础(五)(seo相关标签 & 顶部快捷栏实践 & Logo seo)
前端开发中主要seo标签 title, description, keywords。体现网页的主题,非常重要,是搜索引擎了解网页的入口。简短介绍网站主要内容:主营业务,资质,优势等。排名的方式,进而提高网站的自然流量。搜索时命中的关键字,多个关键字使用。,是一种利用搜索引擎规则。网站在搜索引擎结果中。
2023-08-28 13:45:12 98
原创 H5 + C3基础(四)(基础样式 & 公共样式 & favicon使用)
favicon 为网站页签图标和地址前的图标,大小 一般为 16×16 或 32 × 32,通常放置在 应用根目录。在多个页面都要使用到的 样式可封装到 common.css 中;如常见 头部 和 底部样式。基础样式多用于 浏览器样式初始化 ,版心设置,浏览器背景色,清除浮动,字体,文字颜色等。
2023-08-25 14:15:36 109
原创 前端常见问题细节汇总 & 简写属性 & JS易忘点
li 元素浮动 导致 box 盒子高度为0 ,进而影响了 footer 盒子,飘到 li 列表里面去了。
2023-08-19 12:11:58 247 1
原创 Linux 基础(九)软件包管理
和Maven一样,YUM默认中央仓库为国外的仓库,下载速度较慢,需要配置国内镜像仓库。rpm -e 软件名(无需完整包名):检查依赖,当前软件被依赖,则无法提示报错。不检查依赖,强制卸载,可能导致依赖它的软件无法正常运行。rpm包管理工具存在缺陷,需手动维护软件之间的依赖关系,而且先下载rpm包。YUM底层还是使用的RPM,只是对其做了一些优化,使其更易于使用。YUM 在安装软件时,会自动下载安装所需依赖软件,然后安装本软件。基于以上原因,基于RPM,更智能化的软件管理工具YUM就诞生了。
2023-08-13 03:54:49 453
原创 Linux 基础(八)常用命令 - ps & kill & pstree & top & netstat & crontab & lsof
crontab 的表达式与 一般cron表达式略有出入没有秒,年。killall 进程名称,停掉某个程序启动的所有进程。kill [opts] pid: 按pid停掉进程。crontab 管理定时任务,按用户进行隔离的。process status 查看进程状态。-i:仅展示,上次刷新到此刻活动过的进程。以下分别是两种方式查看本地进程信息。Linux 系统自带的定时任务服务。系统就会自动运行该任务。,是一个systemd创建的服务。查看所有进程,父进程id。查看所有进程,资源占用。展示当前所有进程信息。
2023-08-13 02:44:03 324
原创 Linux 基础(七)常用命令 - 磁盘分区命令
剩余的空间默认 /dev/sda2 分区 挂载到 / 目录,只是这里没有完全展示分区2的信息,它里面包括了 swap 分区。NTFS:是Windows系统中常用的文件系统类型,Linux可以通过ntfs-3g驱动来挂载和读写NTFS分区。如果需要划分更多的分区,可以使用。ext3:是ext4的前身,也是常见的Linux文件系统类型之一,支持日志记录和回滚功能。ext2:是ext3的前身,是较旧的Linux文件系统类型,不支持日志记录功能。ext4:是Linux上最常用的文件系统类型,支持大容量文件和分区。
2023-08-12 23:08:02 3340
原创 Linux 基础(六)常用命令 - find & locate & which & whereis & gzip & gunzip & tar
但是这个数据库并不是实时更新的,可能最近添加的文件并未收录进去,也可能已经删除的文件没来得及移除;通过本地数据库并非实时搜索文件,定位文件,Linux系统会为每个文件建立路径对应的本地数据库。tar 命令是通过 参数来决定是打包还是解压的操作,常用参数如下。find 目录(不指定目录,则以当前目录查找) 查找参数。,并且默认保留源文件,压缩多个文件默认生成到一个压缩文件。默认是一周更新次,如果要修改这个频率,编辑。源文件,压缩多个文件时分别压缩成。查找执行文件或命令相关的文件,(默认,为压缩文件),
2023-08-12 17:08:14 380
原创 Linux 基础(五)常用命令-文件属性
其中 rwx 分别表示 :读权限,写权限(仅限修改,不能删除;命令:chmod [-R 如果修改的是文件夹,对其内部所有文件执行该操作]分别表示 所属用户权限(u),所属用户组权限(g),其他用户权限(o);该命令有几种方式设置权限属性:增量修改和全量覆盖。Linux中文件权限 可以通过文件属性体现;第一个7代表 所属用户有有所有权限;用户/数组/其他用户/所有用户。后面的rwx,以三个为一组,第三个7表示 其他用户的权限。第二个7表示 所属组的权限。修改文件所有者属性 使用。的修改权限),执行权限。
2023-08-12 02:40:59 622
原创 Linux 基础(四)常用命令-日期 & 用户权限
想要执行sudo 操作,需要root用户事先将 需要使用sudo的用户添加到 sudoers 列表中 /etc/sudoers 参考root用户,增加一行对应用户的配置。创建用户时,如果没有指定用户组,则默认创建同名组;修改用户(修改其他属性参考帮助文档)组信息都在 /etc/group 中。
2023-08-12 01:01:18 348
原创 Linux 基础(三)常用命令-文件目录
tail -n file 展示文件后10行,默认就是10行;-10f 查看文件实时内容,并展示10行。ln 给文或目录创建软链接,类似快捷方式;软链接文件仅仅是个特殊的文件。head -n 10 file 展示文件前10行,默认就是10行。echo 输出内容到控制台;history 执行过的命令历史。
2023-08-11 21:09:26 417
原创 Linux 基础(二)修改hostname & 修改本地域名解析 hosts & network 和 NetworkManager & 创建系统服务 & 关机重启
打开一个文本编辑器,创建一个新的.service文件,例如myservice.service。[Unit]Description=After=[Service]ExecStart=ExecStop=Type=Restart=[Install]
2023-08-11 17:34:16 970
原创 Vim基本使用
在常规模式下,按下 i 或者 o ,进入编辑模式,此时可以进行文本编辑。移动光标到起始位置,按下y,按下$(和正则类似 $表示结尾)移动光标到起始位置,按下y,按下^(和正则类似 ^表示开始)在常规模式下,按下 : 或者 /?此模式下我们可以进行复制,粘贴,删除等操作。删除/剪切一个字符,光标不动删后面的字符。编辑完成,按下 esc 回到常规模式。先按下要删除的总行数 ,再按 dd。先按下总行数 数字,再按yy。按下 r ,然后输入对应的。复制一行中光标后面的内容。先按下数字,再按 p。
2023-08-11 02:12:04 1169
原创 Linux 文件基础(一)文件系统
但是根目录下的 bin 目录只是一个链接文件,它链接到的实际目录是。Linux 系统需要的一些库文件,lib64 位64系统的特殊库文件;虽然Linux有很多不同的发行版,但是其基本目录结构都是类似的,因此只要了解一个发行版基本足矣。设备目录,描述硬件设备,Linux中万物皆文件,硬件设备也以文件形式描述。我们需要做的是,先分区,再创建目录,然后将指定分区挂载到对应的目录。同样也是存放可执行文件的目录,但是sbin里面存放的一般是。,同样它也是一个链接文件,实际目录为。主要存放一些应用程序的配置文件。
2023-08-10 23:53:57 318
原创 虚拟机安装 Ubuntu桌面版,虚拟机可以访问宿主机,宿主机无法访问虚拟机
网络连接使用的是桥接,查看ubuntu的ip是正常的,与宿主机在同一个网段。获取已经设置的规则,可以获取到规则编号,用于后续操作。最后发现ubuntu内没有ssh服务。能ping通但是无法连接。
2023-08-10 17:00:41 620
原创 Shell编程基础(十六)文本三剑客(awk & cut)
前面的 grep 和 sed 在处理文本时都是以行为单位,逐行处理;还有很多其他的命令都是以行为单位进行处理。在实际开发运维中,可能需要拆分整行内容,只关心部分字段。可以使用awk进行拆分。与 grep,sed类似;awk 可以直接从文件获取数据也可以从管道流获取数据。awk的功能非常丰富,它作为一门独立的变成语言。创建 student.txt 文件。各种匹配方式可结合正则实现。
2023-08-10 00:04:46 155
原创 Shell编程基础(十四)文本三剑客(grep)
|, \w(匹配大小写字母和数字,相当于[A-Za-z0-9]),\W (所有非字母数字 = [^A-Za-z0-9]),\b 边界词 \bxxx\b相当于 \)-C : 显示上下多少行 -C10上下都显示10行。-A :显示下面多少行 -A10向下显示10行。-B:显示上面多少行 -B10向上显示10行。-q :不显示匹配结果,但返回值依然有。-v :从结果中过滤掉 -v的后的数据。-R :匹配指定目录下的所有文件。egrep -l :只显示文件名。-o :只显示匹配的关键字。
2023-08-08 18:15:52 181
原创 新一代构建工具 maven-mvnd
因此推出了gradle之类的项目,虽然gradle在构建效率是高于maven,但是在一般的小项目上优势并不明显,而且大部分人长久以来习惯了使用maven,导致gradle的流行度并没有想象的高。maven 作为一代经典的构建工具,流行了很多年,知道现在依然是大部分Java项目的构建工具的首选;但随着项目复杂度提高,代码量及依赖库的增多使得maven在大型项目的构建的速度上被人诟病。现在IDEA上还没有专门的集成插件,可以配置mvnd内置的maven到IDEA,不必单独再下载maven。
2023-08-08 16:29:20 620
原创 基于 eclipse-temurin 镜像部署spring boot 应用
在CI流程中,一般都会集成 打包,构建镜像,分发,启动容器之类的流程;app_dockerfile 内容如下。我们在项目根目录执行脚本即可。这里提供一个示例,进攻参考。run.sh 内容如下。
2023-08-08 04:06:13 1184
原创 Dockerfile 启动应用传递ENV参数问题
但这样一来,像容器外体现的就是shell进程,而不是实际的应用进程,应用进程就变成了一个。这里 使用的是 bash -c “java -jar xxx” ,能够直接获取 ENV server.port=8081 设置的端口。ENTRYPOINT+ shell 命令(java -Dxxx=xxx -jar xx.jar --xxxx.xxx=xxx)CMD + shell 命令(java -Dxxx=xxx -jar xx.jar --xxxx.xxx=xxx)ENTRYPOINT :指定的命令依然有效,
2023-08-08 03:23:31 846
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人