- 博客(273)
- 资源 (65)
- 收藏
- 关注
原创 Mssql安装使用
我之前用过sql server,后来使用频率较少,最近有开始接触了,顺便整理下笔记,为后续准备~mssql 也是遵循sql92标准的,所以语法基本与mysql 等都是一致的,部分函数,关键字用法不一致,还有一些数据类型, 函数等;
2023-09-25 10:10:53
30
原创 mybatis/mp批量插入非自增主键数据
mybatis/mp 在实际开发中是常用的优秀持久层框架,但是在非自增主键的时候,单条数据插入式可以的,当批量插入的时候,如何做到填充主键呢?对于此次的问题,是因为之前一直用的是自增主键,今天改为非自增主键,导致该问题;
2023-09-21 14:30:46
149
原创 一句话设计模式12:适配器模式
适配器模式一般使用场景是: 将一个类(接口)转换成客户希望的另外一个类(接口)。其中适配器充当一个假的原类的作用;表面上,我依然调用的Target方法但是Adapter继承了Target,并重写了它的方法表面上调用Target实际上调用的是Adapter,而Adapter实际上调用的是目标NewTarget中的sout方法。
2023-09-21 06:00:00
47
原创 手写一个springboot starter,并使用starter
你一定用过很多starter , 例如 spring-boot-starter,spring-boot-starter-test等等,那么如何实现一个自定义的starter,以及自定义starter的意义和作用;创建一个项目作为starter本体,这里做一些事情,例如: 拦截所有路径,然后打印一下创建另外一个项目,引入之前创建的starter,然后使用,看是否能够拦截路径,并打印starter本体打包后,需要发布到maven仓库中,然后另外一个项目通过maven引入。
2023-09-18 18:12:08
42
原创 基于ReadWriteLock的全局安全缓存实现
本地线程副本ThreadLocal内存Memchache可持久化的redis上述缓存都有用过,使用的场景各不相同在spring项目中,其实用spring cache 可以解决大部分问题,当有多租户的情况,或者缓存各自的用户信息的时候,可以采用本地线程变量副本处理,当然如果用上述工具类,也会使项目中的缓存使用更佳灵活;
2023-09-13 14:22:17
32
原创 NoUniqueBeanDefinitionException: expected single matching bean but found 2
看到这个错误,大致也能猜出错误的原因,就是spring中注入的bean重复了,本来应该是单利的bean,但是现在却找到了两个,那么导致这个问题的原因是什么?如何解决呢?那么为什么他会自定义了一个包扫描,且开启了呢?其实不怪他:因为这个项目要引入很多自定的jar包,jar包中就是有与目前同名的bean要注入,但是包路径不同,为了都可以注入成功,所以最终也只能采用此办法,相当于全局都开启了这个 配置;
2023-09-08 17:38:14
85
原创 超时取消子线程任务
主线程需要执行一些任务,不能影响主任务执行,这些任务有超时时间,当超过处理时间后,应该不予处理;如果未超时,应该获取到这些任务的执行结果;利用Executors框架创建子线程执行任务;利用Executors框架创建延时子线程监事执行任务的线程,通过超时时间判断 执行任务 子线程是否处理完成,处理完成获取结果,未处理完成,取消执行任务的子线程;
2023-09-05 07:00:00
1456
原创 抽象类实现接口的意义
抽象类和接口其实都是抽象的一种,那么他俩有何异同呢?抽象类实现接口的意义何在?抽象类实现接口的意义在于提供了一种灵活且层次分明的代码结构,有助于实现模块化和可维护性。具体来说,抽象类可以作为继承层次结构中的基础类,提供一些公共方法和属性,子类可以继承和扩展。而接口则定义了一组相关的方法规范,约束了实现这些方法的类或抽象类的行为。这有助于确保代码的模块化,提高代码的可重用性和可维护性。抽象类相当于在原有抽象的基础上,再次抽象,提取了一些公共方法;
2023-09-03 09:30:00
725
原创 Redis持久化:RDB与AOF详解
RDB也被叫做Redis数据快照,简单来说就是把内存中所有的数据都记录在磁盘中,当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前的运行目录(RDB可以理解周期定时任务,任务内容就是全量备份数据每次触发RDB的时候,就会重新生成一个新的RDB文件,覆盖旧的RDB文件文件,这样就可以确保备份得到最新的数据。AOF的全称叫做Append Only File(追加文件)Redis处理的每一个命令都会记录在AOF文件中,可以看做是命令日志文件(
2023-08-29 08:00:00
97
原创 java 排班计划
根据排班次数对班组数量取余,得到应该执行任务的班组根据时间获取当前年 以及当年的每月天数每月天的序号数,对应班组则给出了排班结果然后三班倒就是正常往下捋班组就可以了两班倒的话,我这了采用的是翻转班组,这样就能实现: 月末那天晚班班组将继续下月第一天的白班 干24休息12。
2023-08-24 09:14:44
129
1
原创 spring事件监听event(默认的mq)
项目中的业务难免是相互关联的,但是代码中我们应该尽量做到低耦合,常见的做法就是引入mq来作为松耦合的一种手段;其实最常见的解耦和就是接口了,MVC直接通过接口(约定好的一种规则)相互调用,都是解耦的一种体现;还有就是springbean aop等 也就是IOC 都是解耦和的场景;通常mq是我们的选择,但是当仅仅是为了解耦的简单业务场景,其实完全没必要引入mq,而spring中的event则就可以实现解耦~
2023-08-21 07:00:00
251
原创 java热插拔组件 SPI机制
在项目中,如果想要增加项目的灵活性,健壮性, 高逼格,那么你要对于java中的一些机制有了解;java中的spi机制spring中的spring.factories 等通过两种方式都可以实现spi机制的调用,这里展示简单调用,当项目中有多个实现类的时候,就可以灵活多变的实现热插拔效果了~
2023-08-14 07:00:00
315
原创 springboot全局统一返回处理
项目中一般都会有规定好的接口返回格式,无论成功与失败,一般格式都是不变的,这样是为了方便前后端统一处理,今天就来说下前后端统一处理的较为优雅的方式;如果项目中按照这种方式 @RestControllerAdvice + ResponseBodyAdvice接口,就能实现大部分的统一返回出参功能了,无论是正常请求还是异常请求,无论是简单类型还是集合返回,相当于都有了统一的封装处理;快试试,用到项目中吧~
2023-08-07 08:00:00
280
原创 超强国产软件:替代postman
apipost 为国产软件,作为国人应该支持!功能完爆postman,用气apipost!全程中文,无需猜测,使用习惯,完美适配国人习惯!
2023-07-31 08:00:00
265
原创 系统集成项目管理工程师-10大管理输入输出及工具
项目章程的内容:项目的主要风险(疯),主要目标(木),初步预算(鱼),概要设计(要),总体里程碑进度(进),概括性描述(庙),批准项目的理由(里),项目发起人的姓名职务(发),项目审批要求(神),委派的项目经理(经)制定项目章程的输入包括: (1) 项目工作说明书: (2)商业论证: (3)协议: (3)组织过程资产: (5)事业环境因素。新七种质量工具:亲和图、过程决策程序图、关联图、树形图、优先矩阵、活动网络图、矩阵图。①、按照产生原因分类:自然风险、社会风险、政治风险、经济风险、技术风险。
2023-07-29 09:33:39
251
原创 系统集成中级计算汇总
EV 挣值 (实际完成的工作量)AC 实际发生的花费PV 计划花费(预算)CV 成本SV 进度都是通过EV 减去另一个值CV = EV-ACSV = EV-PV成本 chengben C 开头 所以CV 是成本CV 中有个C 所以用到的是 AC ,另外一个则是剩余的PVCV SV 计算结果都是大于0是好的方向, 小于0是不好的方向所以 CV >0 则成本节约 CV< 0 则成本超支SV > 0 进度超前 SV < 0 进度滞后。
2023-07-28 14:08:24
169
原创 系统集成中级口诀汇总(有点过期了,对付看)
储(出)备分析、三(山)点估算、自(下)而上估算、(专)家判断、(卖)方投标分析、项(香)目管理软件、群(裙)体决策技术、质(子)量成本、类(累)比估算、参(惨)数估算。(关)键路线法、(关)键链法、资(织)源优化技术、进度(网)络分析、提(前)量和滞(后)量、建(捡)模技术、进度计划编制工(公)具、进度压(鸭)缩。资(织)源优化技术、绩(机)效审查、项目管(关)理软件、提(前)量和滞(后)量、建(捡)模技术、进度计划编织工(公)具、进度压(鸭)缩。(把自己嫁了是干姐姐的需求)
2023-07-28 11:04:31
147
原创 mysql创建用户授权
在mysql的使用中,避免不了要给他人使用我们自己的数据库,此时为了使用安全,我们不想让对方看到过多的数据库,或者减少它对于我们数据库可能造成的破坏,赋予他部分权限,以确保我们数据库的安全性,如何做呢?grant 是授权的意思:说明: privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALLdatabasename:数据库名 tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
2023-07-24 09:27:06
141
原创 Navicat15管理工具安装注册
作为优秀的mysql管理工具之一,今天给大家带来丝滑的使用体验(直接注册)Navicat是一套综合的数据库管理工具,可以管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和 MongoDB 等不同类型的数据库官网下载都是有14天的试用期的,特别是全功能的Premium。如果经济实力允许的话,还是希望大家去官网下载,支持正版。对于学生党,可以先尝个鲜。好的,废话不多说了,直接上教程。
2023-07-21 15:52:21
55
原创 mongo查询 分页/排序
很多用法和mysql 还是很像的,上手不难;mongo的简单条件查询,分页,排序今天就分享这些吧~文中使用的工具:工具激活。
2023-07-18 08:00:00
343
原创 windows上的mysql服务突然消失: 10061 Unkonwn error
至此mysql服务已经恢复了;并且之前设置的mysql 用户名密码也是不变的,而且之前的数据也都ok的。
2023-07-13 06:00:00
84
原创 Mongo可视化工具studio 3t无限试用
mongodb可以说是比较流行的nosql数据库了,它灵活多变的存储,为项目中后续可能的变更提供了极大的便利性,工欲善其事必先利其器,今天推荐一款mongo的可视化工具: studio 3t放入到自启文件夹中,每次开机都可以实现试用时间的重置;框出来的基本上就是免费版本中没有的了,其实免费版本还是挺好用的,也够用了;
2023-07-10 07:30:00
1384
5
原创 java中对象字段转换
在java中,有时候会涉及到一些对象的转换,为什么转换呢?由于接受参数和用的时候对应不上由于经历过一些修改,为了兼容可以利用 @JsonProperty 改变转成json 时候的属性值(key值)可以用例 @JsonAlias 增加转为对象时候接受的属性值(key值),并且原有的属性值也可以用还可以用例 @JsonProperty 和 @JsonAlias 同时使用,同时增加接收参数和转出参数的值。
2023-07-07 14:33:59
302
原创 debug调试高级用法
在开发调试中,如果你不会debug调试,一般情况下,就只能控制台打印,然后一遍一遍重启了,所有debug是必不可少的技能,尤其当遇到问题的时候,可以清晰的看到代码每一步的执行过程,不仅如此,我们还能对于正在执行的代码值,做修改,以及给debug添加条件等等;提示:以下是本篇文章正文内容,下面案例可供参考这里简单的通过一个类的来讲述,断点的各种操作,然后如果是一个项目的话,操作与此基本一致,这里不在赘述,希望刚入门以及对于断点的高阶操作不熟悉的小伙伴可以学习后,在项目调试中如鱼得水~~,所有bug一目了然!
2023-07-01 16:01:20
304
2
原创 老鸟是这样实现springboot日志打印的~
项目中有时候为了与前端,与后端(微服务/远程调用http) 等撕逼,我们不得不做好应对措施,最终的就是打印清晰我们的入参出参日志,这为以后撕逼,查找问题,快速定位bug,都会非常有利;/*** 打印日志 出参入参*/@Component虽不复杂,但是在实际项目中应用的话,还是很称心如意的~,而且在此基础上,还能根据自己的需要扩展就好了;
2023-06-25 11:20:34
356
原创 springboot集成quartz
引用上一篇博客的说法springboot整合xxl-job,集群模式下,定时任务会造成很严重的事故,其次普通的任务也无法做到像xxl-job与Quartz 一样,及时启停,修改等;上一篇介绍了xxl-job,这篇搞一下Quartz,老牌分布式定时任务了;基本实现了任务的动态添加有参数的具体任务调用,修改QuartzJob中的方法获取,参数获取等,但是依旧采用代理实现任务并发执行未处理,后续完善项目地址。
2023-06-14 17:54:03
1915
原创 springboot整合xxl-job
单机模式中的定时任务很简单,一般使用@EnableScheduling 就可以了,但是在集群中,这个简单的定时任务就不行了,会有问题;例如我要在半夜12点执行一个任务,发送一条短信给一个用户,但是当为集群的时候,这种简单的任务,在多个节点上,都会执行,那么就会造成任务的重复执行,每个用户都接受到了多条相同的短信,这种错误还好,但是当涉及到计算等问题的时候,这种错误就是致命的,而且当没有集群经验的时候,这种问题在单机情况下还是正常,集群就会出现大问题!!!
2023-06-13 15:27:28
2501
4
原创 k8s集群部署
k8s 自动化部署尝鲜,作为一个后端开发,还是多少要掌握一些运维知识的,但是不用掌握这么多~~kubernetes,是一个全新的基于容器技术的分布式架构领先方案,本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:● 自我修复:一旦某一个容器崩溃,能够迅速启动新的容器● 弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整● 服务发现:服务可以通过自动发现的形式找到它所依赖的服务。
2023-06-09 10:14:02
1006
原创 Semaphore线程信号量
Semaphore 也是juc中的一个关键类,他与之前的lock 类似,也有公平和非公平两种,它与他们应用含义,引用场景有很大的不同;与阻塞队列类似,但是也不一样;听我细细道来~Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。它用来控制访问资源的最大线程数量;例如上厕所,只有十个坑位,所以最多只能允许十个人同时使用;
2023-06-01 08:00:00
604
10
原创 多线程屏障CyclicBarrier
多线程中的CyclicBarrier,同样也是juc包下的一个工具类;CyclicBarrier可以用于多线程计算数据,最后合并计算结果的场景;多线程处理有序集合。
2023-05-30 08:00:00
872
原创 fork/join框架
使用Fork/Join框架首先要考虑到的是如何分割任务,分割之后,根据join 再进行任务结果的合并,也就是类似二分法的,分而治之的理念;fork join 框架的思想就是通过分而治之的理念,去处理大量数据;核心是利用递归处理,底层也是通过多线程实现;
2023-05-26 08:00:00
475
原创 多线程处理有序集合
通过多线程,处理数据是一个快速提高处理的手段,那么当用多线程处理的时候,如果遇到有序集合怎么办?例如: 我想爬取一本小说,那么爬取完成后,需要的是 一个有序的章节小说,而非混乱的 章节,如何做呢?Executors 线程池虽好用,但是不建议直接使用,可以通过全局线程池配置,然后每次使用一个配置,否则各处单独使用线程池,很乱,其次当有问题后,也不好排查;用完 Executors 记住一定要 service.shutdown();或者类似方法, 否则线程池一直存在,不结束;
2023-05-23 10:17:15
337
原创 springboot国际化多语言配置
如此做之后,就可以实现,多语言了,不过要做的事情还很多,相当于你所有页面要展示的词汇,都需要放到这里三个配置文件中搞一遍,才可以。
2023-05-23 07:00:00
452
原创 RentrantReadWriteLock的锁降级
1 当执行这段代码的时候,只有一个线程能够获取到写锁,其他线程会被阻塞在读锁和写锁的lock()方法上,如果不获取读锁,那么其他线程可能会立马获取到读锁,并修改update,会造成当前线程无法感知到变化,因为判断已经结束;2 锁降级中读锁的获取是必要的,因为,当我获取到读锁之后,其他线程的写锁是无法获取成功的(保证可见性),其他读锁是可以获取成功的,所以这里读锁的获取,主要是为了防止其他写锁获取成功;在获取到写锁后,操作update ,在释放写锁之前,获取到一个读锁,然后再释放写锁;(这里是重点,为何?
2023-05-19 11:40:33
379
原创 多任务AB并行与C串行
多任务执行的时候,有时候有这样的场景,就是有三个事件 ABC,AB执行顺序无所谓,但是C一定要在AB执行之后,再执行;例如: 计算 1+ 2 =3;现获取1 和 2 的顺序无所谓,可以并行但是计算等于3的时候,一定要在 1 2 之后;其实这里实现的方案大同小异,但是比较推荐后两种;思路都是通过线程之间通信,完成并行之后的串行;
2023-05-18 07:45:00
350
原创 CPU如何保证原子操作?
原子(atomic)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为“不可被中断的一个或一系列操作”。在多处理器上实现原子操作就变得有点复杂。
2023-05-16 14:24:33
129
原创 Java内存模型
JMM即: java内存模型1 只要不改变程序的执行结果(单线程程序和正确同步了的多线程程序),编译器和处理器怎么优化都行。2 如果一个操作happens-before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。3 两个操作之间存在happens-before关系,并不意味着Java平台的具体实现必须要按照happens-before关系指定的顺序来执行。
2023-05-15 20:41:54
355
原创 内存对齐为何会提高性能?
著名的Java并发编发锁编程大师Doug lea在JDK 7的并发包里新增一个队列集合LinkedTransferQueue,它在使用volatile变量时,用一种追加字节的方式来优化队列出队和入队的性能;意思是,通过追加字符串,然后提升性能;这种方式看起来很神奇,但如果深入理解处理器架构就能理解其中的奥秘。来自: java并发编程的艺术~
2023-05-15 09:21:30
669
原创 junit如何在多模块项目中使用
相信后端的小伙伴对于junit测试应该不陌生,当我们写好了一些功能之后,由于不太放心是否会出现问题,我们会选择自测;第一种 通过类似postman之类的,直接走接口测试第二种 由于构造数据种种原因,导致不好走接口测试,所以走代码测试,即junit测试在springboot项目中,单模块项目很好做,只要生成测试类即可,那么在springboot多模块项目中如何做junit测试呢?会有什么问题?单元测试的目的是在集成测试和功能测试之前对软件中的可测试单元进行逐一检查和验证。
2023-05-11 10:59:52
787
1
原创 事务传播行为 @Transactional
事务传播行为: 指的是在项目中开启多个事务后,他们之间的影响关系;虽然事务的传播枚举还有很多,但是其实,只要掌握这两个就够了,其他的了解即可;如果当前存在事务,就在当前事务内执行;否则,就执行与 PROPAGATION_REQUIRED 类似的操作。如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。以非事务方式运行,如果当前存在事务,则把当前事务挂起。以非事务方式运行,如果当前存在事务,则抛出异常。
2023-05-09 07:45:00
441
lib-management-system=springboot+html图书管理
2022-05-03
SuperManagementSwingTxt-swing+txt商品管理
2022-05-03
文章预览态和最终展示形态不一致
2023-07-20
关于#mysql#的问题:mysql事务(语言-java)
2023-02-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人