文章目录 一、google-guava工具包简介 1、概述 2、引包 二、常用工具类 1、LoadingCache缓存 2、RateLimiter限流器 3、EventBus事件总线 (1)基本使用 (2)多消费者 (3)DeadEvent (4)AsyncEventBus异步消费 参考资料 一、google-guava工具包简介 1、概述 Guava项目包含我们在基于Java的项目中所依赖的几个Google核心库:集合、缓存、原语支持、并发库、公共注释、字符串处理、I/O等等。这些工具中的每一个都被谷歌员工在生产服务中每天使用,也被许多其他公司广泛使用。 2、引...

文章目录 一、Disruptor介绍 1、为什么要有Disruptor 2、Disruptor介绍 3、Disruptor的高性能设计 4、RingBuffer数据结构 5、等待策略 6、Disruptor在日志框架中的应用 7、术语 二、Disruptor实战 1、引入依赖 2、Disruptor构造器 3、入门实例 (1)HelloWorld (2)单生产者单消费者模式 (3)单生产者多消费者模式 (4)多生产者多消费者模式 4、场景应用 (1)使用EventProcessor消息处理器 (2)使用WorkerPool消息处理器 5、复杂场景下使用 ...

文章目录 一、引出问题 1、数据准备 二、@Transactional是如何导致锁失效的 1、不加锁 2、使用锁 3、使用锁+@Transactional 4、问题分析 三、解决方案 1、@Transactional单独一个方法 2、使用编程式事务 一、引出问题 很多小伙伴使用Spring事务时,为了省事都喜欢使用@Transactional。但是@Transactional配合锁,会导致一些预期之外的问题! 在此举例说明。 1、数据准备 我们将在该表中,实现level数据递减的并发操作。 Controller中,简单模拟10个线程各自执行10次: 二...

文章目录 一、JIT概述 1、为什么要用JIT即时编译器 2、C1、C2与Graal编译器 3、分层编译 4、热点代码 5、热点探测 (1)方法调用计数器 (2)回边计数器 二、编译优化技术 1、方法内联 (1)什么是方法内联 (2)代码演示 (3)总结 2、锁消除 3、锁粗化 4、标量替换 (1)什么是标量替换 (2)逃逸分析技术 (3)代码演示 (4)原因分析 一、JIT概述 1、为什么要用JIT即时编译器 Java程序在运行的时候,主要就是执行字节码指令,一般这些指令会按照顺序解释执行,这种就是解释执行。 但是那些被频繁调用的代码,比如调用次...

文章目录 系列文章索引 五、规则属性 1、enabled属性 2、dialect属性 3、salience属性 4、no-loop属性 5、activation-group属性 6、agenda-group属性 7、auto-focus属性 8、timer属性 9、date-effective属性 10、date-expires属性 六、Drools高级语法 1、global全局变量 2、query查询 3、function函数 4、LHS加强 (1)复合值限制in/notin (2)条件元素eval (3)条件元素not (4)条件元素exists (5)规则继承 ...

文章目录 系列文章索引 七、Spring整合Drools 1、Spring简单整合Drools 2、Spring整合Drools+web 3、SpringBoot整合Drools 七、Spring整合Drools 1、Spring简单整合Drools 在项目中使用Drools时往往会跟Spring整合来使用。具体整合步骤如下: 第一步:创建maven工程drools_spring并配置pom.xml <?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/P...

文章目录 一、pygetwindow模块简介 二、pygetwindow常用方法 1、常用方法 2、window常用方法 一、pygetwindow模块简介 pygetwindow是一个Python第三方库,用于获取、管理和操作窗口。它提供了一些方法和属性,使得在Python程序中可以轻松地执行各种窗口操作。 通过pygetwindow库,你可以:获取当前系统中所有打开窗口的列表。根据窗口标题、窗口句柄等属性获取特定的窗口对象。激活、最小化、最大化和关闭窗口。获取和设置窗口的位置、大小和几何属性。判断窗口是否最小化或可见。等待窗口准备好,以及等待窗口存在。移动和调整窗口的位...

文章目录 一、了解ZGC 1、ZGC出现背景 2、ZGC介绍 二、ZGC中的内存布局 1、ZGC内存布局 2、NUMA-aware 三、ZGC核心概念与运行流程 1、指针着色技术(ColorPointers) (1)验证 (2)ZGC中的染色指针 2、读屏障 3、运作过程概述 4、ZGC详细流程 (1)一次ZGC流程 (2)根可达算法 (3)ZGC中初始标记和并发标记 (4)ZGC基于指针着色的并发标记算法 (5)ZGC基于指针着色的并发转移算法 (6)ZGC基于指针着色的重定位算法 5、ZGC中GC触发机制(JAVA16) 6、ZGC参数设置 四...

文章目录 写在前面 使用函数索引 1、数据准备 2、索引验证 (1)普通索引 (2)函数索引 总结 写在前面 之前我们知道,如果在查询中加入了函数,索引不生效,所以MySQL8引入了函数索引,MySQL8.0.13开始支持在索引中使用函数(表达式)的值。 函数索引基于虚拟列功能实现,在MySQL中相当于新增了一个列,这个列会根据你的函数来进行计算结果,然后使用函数索引的时候就会用这个计算后的列作为索引。 使用函数索引 1、数据准备 -建表 createtabletest(n1varchar(10),n2varchar(10)); -创建普通索引 createindexi...

  o21g2AkC8e2r   2023年12月10日   40   0   0 数据字段数据mysqlmysql字段

文章目录 一、Hazelcast简介 1、Hazelcast概述 2、Hazelcast之IMDG 3、数据分区 二、Hazelcast配置 1、maven坐标 2、集群搭建 (1)组播自动搭建 3、客户端 4、集群分组 5、其他配置 三、Hazelcast分布式数据结构 1、IMap 2、IQueue:队列 3、MultiMap 4、ISet 5、IList 6、其它 参考资料 一、Hazelcast简介 1、Hazelcast概述 官方文档:https://docs.hazelcast.com/hazelcast/5.3/ Hazelcast是驻内...

文章目录 写在前面 一、配置 1、application.properties 2、webMvc配置 3、查看效果 二、文件上传 写在前面 平常工作中的项目,上传的文件一般都会传到对象存储云服务中。当接手一个小项目,如何自己动手搭建一个文件服务器,实现图片、文件的回显,可以通过http请求获取到呢? 注!本文以Springboot为基础,在其web环境进行搭建的 一、配置 1、application.properties local.file.dir=D:/file/ local.file.path=/data 2、webMvc配置 @Configuration ...

文章目录 一、Caffeine简介 二、缓存加载 1、手动加载 2、自动加载 3、手动异步加载(需要额外的包) 4、自动异步加载 三、缓存清理 1、基于容量 2、基于时间 3、基于引用 四、缓存移出 1、手动移出 2、移出监听器 五、刷新缓存 一、Caffeine简介 官网:https://github.com/ben-manes/caffeine/wiki/Home-zh-CN Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库。 缓存和ConcurrentMap有点相似,但还是有所区别。最根本的区别是ConcurrentMap...

文章目录 一、pywin32简介 1、windowsAPI是什么 2、pywin32模块 3、安装pywin32 二、常用模块:pywintypes 0、使用 1、CreateGuid:生成唯一标识符 三、常用模块:win32api 0、使用 1、AbortSystemShutdown:关机 2、Beep:发出声音 3、ClipCursor:限制鼠标范围 4、CloseHandle:关闭文件句柄 5、CopyFile:复制文件 6、DeleteFile:删除文件 7、ExitWindows:注销当前用户 8、GetComputerName:获取计算机名 9、GetCu...

文章目录 一、概述 1、什么是SpEL 2、SpEL能做什么 二、SpEL表达式使用 0、用到的类 1、文字表达式 2、属性,数组,List,Map,和索引 (1)属性操作 (2)数组和List (3)Map 3、内嵌List 4、内嵌Map 5、构建数组 6、调用类的方法 7、SpEL操作符 (1)标准运算符 (2)instanceof和正则表达式的匹配操作符 (3)操作符的英文等价标识 (4)逻辑运算符 (5)数学运算符 (6)赋值运算符 8、获取类的类型 9、调用类构造器 10、SpEL变量 (1)基本使用 (2)this和root变量 11、调...

文章目录 一、思路分析 二、代码实战 1、搭建Springboot+AOP+Redis环境 2、自定义注解 3、切面类 4、测试一下吧 一、思路分析 在调用后台接口时,由于用户多次点击或者说第三方重试,可能会导致幂等问题。 解决方案无非就是上一次请求没有处理完,第二次请求不会处理,或者直接提示请求频繁,让用户等待。 我们基于SpringAOP(或者拦截器)来实现接口的幂等处理,多次请求时,提示用户不要重复请求,并缓存处理结果,将处理后的结果快速返回。 流程图如下: 二、代码实战 1、搭建Springboot+AOP+Redis环境 略 2、自定义注解 该注解标注在Cont...

  o21g2AkC8e2r   2023年12月07日   17   0   0 Javajavaide缓存缓存redisRediside

文章目录 一、静态工厂方法区别于工厂方法模式 二、静态工厂方法的优点 1、有名字 (1)优势 (2)源码分析:BigInteger (3)源码分析:Executors (4)常用命名名称 2、不需要每次调用时都创建一个新对象 (1)优势 (2)源码分析:Boolean 3、可以返回原返回类型的任何子类型 (1)优势 (2)源码分析:Collections 4、返回对象的类可以根据输入参数的不同而不同 (1)优势 (2)源码分析:EnumSet 5、编写包含该方法的类时,返回的对象的类不需要存在 三、总结 一、静态工厂方法区别于工厂方法模式 本...

文章目录 一、发现问题 二、场景1:在where条件中查询了修改表的数据 三、场景2:在set语句中查询了修改表的数据 一、发现问题 在一次准备处理历史数据sql时,出现这么一个问题:Youcan'tspecifytargettable'表名'forupdateinFROMclause,大致的意思就是:不能在同一张表中先select再update。 在此进行一下复盘沉淀,使用测试sql复现当时的场景(mysql是8版本),准备测试数据: CREATETABLE`student`( `id`intNOTNULL, `name`varchar(255)DEFAULTNULL, `ad...

文章目录 一、窗口函数概述 1、什么是窗口函数 2、窗口函数有哪些 (1)聚合函数(聚合函数不是本文讨论的重点) (2)专用窗口函数 3、基本语法 4、测试数据准备 二、窗口函数使用 1、初识窗口函数:使用聚合函数 2、序号函数:ROW_NUMBER()、RANK()、DENSE_RANK() 3、分布函数:PERCENT_RANK()、CUME_DIST() 4、前后函数 5、头尾函数:FIRST_VALUE()、LAST_VALUE() 6、其他函数:NTH_VALUE()、NTILE() 三、窗口函数的命名 1、语法格式 2、使用示例 四、窗口函数框...

文章目录 一、接口鉴权方案分析 1、接口鉴权方案 2、角色分配权限树 二、编码实战 1、定义权限树与常用方法 2、自定义AOP注解 3、AOP切面类(也可以用拦截器实现) 4、测试一下 一、接口鉴权方案分析 1、接口鉴权方案 目前大部分接口鉴权方案,一般都是采用【用户-角色-权限】模型。 将接口与权限进行编码死绑定,同时角色与权限进行动态绑定,用户与角色也进行动态绑定。 2、角色分配权限树 创建用户之后,用户可以分配多个角色。 创建角色之后,通过查询代码内置的权限树,进行角色与权限绑定,存入数据库中。 二、编码实战 1、定义权限树与常用方法 使用枚举进行权限的定义...

文章目录 一、什么是幂等 二、基于token方案解决接口幂等问题 1、token机制方案介绍 (1)实现思路 (2)问题:先执行业务再删除token (3)问题:先删除token再执行业务 (4)方案缺点 2、基于自定义业务流程实现 (1)获取token接口 (2)订单服务新增feign拦截器 (3)定义生成订单方法 (4)测试 3、基于自定义注解实现 (1)自定义幂等性注解 (2)新增web拦截器 (3)使用自定义注解 一、什么是幂等 接口的幂等性——详细谈谈接口的幂等即解决方案 二、基于token方案解决接口幂等问题 1、token机制方案介绍 (1...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~