自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

下半夜的风

享受着风带来的清爽,生活需要有条理的梳理。

  • 博客(141)
  • 资源 (6)
  • 收藏
  • 关注

原创 Flowable 进阶使用

定义流程图,同时指定候选人,多个候选人会通过。

2025-03-08 16:48:44 788

原创 Flowable 基本入门

Flowable是BPMN的一个基于java的软件实现,不过Flowable不仅仅包括BPMN,还有DMN决策表和CMMN Case管理引擎,并且有自己的用户管理、微服务API等一系列功能,是一个服务平台。接下来我们构建一个非常简单的请假流程,Flowable引擎需要流程定义为BPMN 2.0格式,这是一个业界广泛接受的XML标准。在Flowable术语中,我们将其称为一个流程定义(process definition)。一个流程定义可以启动多个流程实例(process instance)。流程定义。

2025-03-07 21:24:42 847

原创 Activiti7 基本使用教程

Activiti由Alfresco软件开发,目前最高版本Activiti 7。是BPMN的一个基于java的软件实现,不过 Activiti 不仅仅包括BPMN,还有DMN决策表和CMMN Case管理引擎,并且有自己的用户管理、微服务API 等一系列功能,是一个服务平台。在Activiti7中。我们启动服务会自动维护Activiti7需要使用到的相关的表结构。在这块我们需要有个大概的了解。Activiti数据库类型示例 JDBC URL备注h2默认配置的数据库mysql。

2025-03-02 14:26:11 750

原创 Jenkins 自动化测试

默认情况下,SVN仓库没有任何权限设置,你需要手动配置权限,每个仓库都有一个conf目录,其中包含三个重要的配置文件:authz、passwd和svnserve.conf。通过搭建开源的 SVN WebUi 服务即可在服务器上快速搭建一个SVN服务端,并且配备相应的管理后台,可大大简化日常的常规操作。这里为了方便是直接使用docker 的方式来快速搭建使用的,前提是服务器上需提前安装好docker 环境。在本地检出仓库后,若新建仓库未新建内容则默认是个空目录只有 .svn 目录的配置信息。

2025-02-06 17:51:11 1100

转载 【转载】Spring EL表达式

Spring EL允许你注册自定义函数,这些函数可以在EL表达式中调用。自定义函数通过实现特定的接口或使用Spring的@Value和来定义。一旦注册了自定义函数,你就可以在EL表达式中像调用内置函数一样调用它们。例如,假设你注册了一个名为concat#{concat('Hello', ' World')} // 调用自定义的concat函数要实现自定义函数,你需要创建一个Java类,实现Spring的接口,或者使用Spring提供的来注册你的函数。

2025-02-05 11:34:44 41

原创 Elasticsearch 解决只能查询10000条数据方案

es官方默认限制索引查询最多只能查询10000条数据,查询第10001条数据开始就会报错,如下示例所示:但是很多时候10000数据不能满足项目的需求,所以我们就要解除这个限制。

2025-01-22 11:45:35 1196

原创 Spring WebFlux 程序测试

根据前面的代码,第一个发出的事件必须是与订阅相关的事件,紧跟其后的事件必须是 foo 和 bar 字符串。最后, StepVerifier#expectCompletion 定义终止信号的存在。在此例中,必须是 Subscriber#onComplete 的调用,或者成功完成给定的 Flux。要执行验证,或者说对创建流进行订阅,就必须调用 .verify() 方法。

2025-01-16 14:38:55 1040

原创 Spring WebFlux 高级实战(3-3)

Spring Data 中的响应式存储库通过适配底层数据库驱动来工作。没有分页且不能进行事务操作。

2025-01-15 18:19:52 731

原创 Java密码学(推荐)

Base64是网络上最常见的用于传输8Bit字节码的可读性编码算法之一,可读性编码算法不是为了保护数据的安全性,而是为了可读性。可读性编码不改变信息内容,只改变信息内容的表现形式。所谓Base64,即是说在编码过程中使用了64种字符:大写A到Z、小写a到z、数字0到9、“+”和“/”;Base58是Bitcoin(比特币)中使用的一种编码方式,主要用于产生Bitcoin的钱包地址相比Base64,Base58。

2024-12-08 13:22:06 1214

原创 A02、分布式锁&事务

某案例是这样的,当玩家购买道具之后,扣除通宝时出现了异常。这种异常在正常情况下发生之后,应该是整个购买操作都需要撤销,然而这次异常的严重性就是在于玩家购买道具成功后,没有扣除通宝。究其原因是由于购买的道具更新的是游戏数据库,而通宝是在用户账户中心数据库,在一次购买道具时,存在同时操作两个数据库的情况,属于一种分布式事务。而我们的工程师在完成玩家获得道具和扣除余额的操作时,没有做到事务的一致性,即在扣除通宝失败时,应该回滚已经购买的游戏道具。

2024-12-07 12:31:14 893

原创 关于数据库数据国际化方案

并点击中间偏右的“+”号,新增国际化语言,此处新增两个语言“zh_CN”,“en_US”。之前第一次做国际化项目,前期数据库是同事设计的,他的想法是,需要多语言的字段,全部用多个字段,如 name 存储中文姓名,english_name存储英文姓名,如果项目始终固定两种语言,这种设计完全没问题,但一旦需要新增语言,所有涉及到国际化的字段,全部要新增一个字段!数据库国际化的应用场景用到的比较少,主要用于对数据库的具体数据进行翻译,在需要有大量数据翻译的场景下使用,举个例子来说,力扣题目的中英文切换。

2024-12-03 17:28:36 982

原创 centos7调用so库无响应

这里我先直接说下解决方法。有效的解决方法是将你的 so 库文件上传至服务器的 lib 目录中,并对上传的 so 文件授权 执行权限。lib 目录根据编译的版本放至对应的 lib 目录。下面是我的文件位置以及属组信息等。这里使用centos7部署一个springboot项目调用so库函数时,无任何响应与输出、也无任何报错信息。参考上图,可以看到没有任何信息输出提示。这些设置完成后,将应用重启调用就好了。

2024-12-02 15:43:46 240

原创 A02、数据库性能调优

如果在一张几千万数据的表中以一个没有索引的列作为查询条件,大部分情况下查询会非常耗时,这种查询毫无疑问是一个慢 SQL 查询。所以对于大数据量的查询,我们需要建立适合的索引来优化查询。虽然我们很多时候建立了索引,但在一些特定的场景下,索引还有可能会失效,所以索引失效也是导致慢查询的主要原因之一。

2024-11-30 19:23:09 1021

原创 A02、Java 设计模式优化

原型模式是通过给出一个原型对象来指明所创建的对象的类型,然后使用自身实现的克隆接口来复制这个原型对象,该模式就是用这种方式来创建出更多同类型的对象。使用这种方式创建新的对象的话,就无需再通过 new 实例化来创建对象了。这是因为 Object 类的 clone 方法是一个本地方法,它可以直接操作内存中的二进制流,所以性能相对 new 实例化来说,更佳。装饰器模式包括了以下几个角色:接口、具体对象、装饰类、具体装饰类。接口定义了具体对象的一些实现方法;

2024-11-30 00:48:46 1204

原创 Spring WebFlux 高级实战(3-2)

Spring 生态系统的核心模块是Spring Core 模块。Spring 5.x 引入对响应式流和响应式库的原生支持,其中,响应式库包含RxJava 1/2 和Project Reactor 3。

2024-11-20 20:18:19 1097 1

原创 Spring WebFlux 高级实战(3-1)

Spring 框架的整个基础设施都是围绕Servlet API 构建的,它们之间紧密耦合。因此在开始深入响应式Web 之前,先回顾一下Web 模块的设计:底层 Servlet 容器负责处理容器内的所有映射Servlet。DispatchServlet 作为一个集成点,用于集成灵活且高度可配置的Spring Web基础设施和繁重且复杂的Servlet API。HandlerMapping将业务逻辑与Servlet API 分离。

2024-11-20 17:04:13 933

原创 Spring WebFlux 核心原理(2-3)

要理解多线程的工作原理以及 Reactor 中实现的各种内部优化,首先必须了解 Reactor 中响应式类型的生命周期。

2024-11-07 09:25:58 1169

原创 Spring WebFlux 核心原理(2-2)

但是,上述定义订阅的方法是不对的。它打破了线性代码流,也容易出错。最困难的部分是需要自己管理背压并正确实现订阅者的所有 TCK 要求。在前面的示例中,打破了有关订阅验证和取消这几个 TCK 要求。建议扩展 Project Reactor 提供的 BaseSubscriber 类。

2024-11-04 15:47:15 1255

原创 A02、JVM性能监测&调优

JVM 自动内存分配管理机制的好处很多,但实则是把双刃剑。这个机制在提升 Java 开发效率的同时,也容易使 Java 开发人员过度依赖于自动化,弱化对内存的管理能力,这样系统就很容易发生 JVM 的堆内存异常,垃圾回收(GC)的方式不合适以及 GC 次数过于频繁等问题,这些都将直接影响到应用服务的性能。

2024-11-03 22:23:36 831

原创 A02、关于多线程调优

乐观锁,顾名思义,就是说在操作共享资源时,它总是抱着乐观的态度进行,它认为自己可以成功地完成操作。但实际上,当多个线程同时操作一个共享资源时,只有一个线程会成功,那么失败的线程呢?它们不会像悲观锁一样在操作系统中挂起,而仅仅是返回,并且系统允许失败的线程重试,也允许自动放弃退出操作。所以,乐观锁相比悲观锁来说,不会带来死锁、饥饿等活性故障问题,线程间的相互影响也远远比悲观锁要小。更为重要的是,乐观锁没有因竞争造成的系统开销,所以在性能上也是更胜一筹。在单个处理器的时期,操作系统就能处理多线程并发任务。

2024-11-01 00:41:56 770

原创 Spring WebFlux 核心原理(2-1)

RSocket是一个应用通信协议,用在多路复用全双工通信中。可以在TCP、WebSocket或其他字节流传输中使用。发送一个消息,接收一个消息发送一个消息,接收返回的消息流Channel :双向发送消息流发送单向消息建立初始连接之后,就没有客户端服务端的概念了,因为双方地位对等,都可以初始化交互。因此,RSocket中只有请求者和响应者,而没有客户端和服务端的概念,交互称为“请求流”或简单地称为“请求们”。

2024-10-10 17:28:47 1155 1

原创 Spring WebFlux 响应式概述(1)

响应式编程是使用异步、事件驱动构建非阻塞式应用的,此类应用仅需要少量的线程用于横向扩展。该定义的关键一点是:借助背压技术,防止生产者压垮消费者。如服务A需要从服务B获取数据。对于响应式编程,服务A向服务B发起请求,并立即返回(非阻塞、异步)。之后,请求的数据以数据流的方式返回给服务A,服务B对每个数据项发布onNext事件。当所有的数据都发布了onNext事件,就发布onComplete事件结束。如果发生异常,就服务B就发布onError事件,之后不再发布onNext事件。

2024-10-08 17:32:56 1090

原创 响应式流规范

​ 在接收到一个元素之后,用信号通知对一个元素的需求的订户有效地实现了停止和等待协议,其中需求信号等同于确认。值得注意的是,允许订阅者在任何时间点发出需求信号,从而避免发布者和订阅者之间不必要的延迟(即保持其输入缓冲区充满,而不必等待完整的往返)。​ 一个基本的设计原则是,所有的缓冲区大小是有界的,这些界限必须是已知的,并由用户控制。​ 本说明书的目的是允许创建许多符合的实现,这些实现凭借遵守规则将能够平滑地互操作,从而在流应用的整个处理图上保留上述益处和特性。,直到向发布者发出更多的需求信号。

2024-09-23 20:34:24 761

原创 SpringSecurity剖析

过滤器是一种典型的AOP思想,下面简单了解下这些过滤器链,后续再源码剖析中在涉及到过滤器链在仔细说明。根据请求封装获取WebAsyncManager,从WebAsyncManager获取/注册的安全上下文可调用处理拦截器SecurityContextPersistenceFilter主要是使用SecurityContextRepository在session中保存或更新一个SecurityContext,并将SecurityContext给以后的过滤器使用,来为后续fifilter建立所需的上下文。

2024-09-11 11:07:14 972

原创 SpringBoot回顾

spring Boot免除了项目中大部分的手动配置,对于一些特定情况,我们可以通过修改全局配置文件以适应具体生产环境,可以说,几乎所有的配置都可以写在application.peroperties文件中,SpringBoot会自动加载全局配置文件从而免除我们手动加载的烦恼。但是,如果我们自定义配置文件,SpringBoot是无法识别这些配置文件的,此时就需要我们手动加载。

2024-09-04 21:28:52 697 1

原创 了解Spring Data JPA

Spring Data JPA 是 Spring 基于JPA 规范的基础上封装的⼀套 JPA 应⽤框架,可使开发者⽤极简的代码即可实现对数据库的访问和操作。它提供了包括增删改查等在内的常⽤功能!学习并使⽤Spring Data JPA 可以极⼤提⾼开发效率。

2024-09-03 16:00:22 628

原创 关于SpringMVC的理解

Restful 是⼀种 web 软件架构⻛格,它不是标准也不是协议,它倡导的是⼀个资源定位及资源操作的⻛格。REST(英⽂:Representational State Transfer,简称 REST)描述了⼀个架构样式的⽹络系统, ⽐如web 应⽤程序。它⾸次出现在 2000 年 Roy Fielding 的博⼠论⽂中,他是 HTTP 规范的主要编写者之⼀。

2024-09-03 14:34:00 1389

原创 关于Spring框架

IoC Inversion of Control (控制反转/反转控制),需要注意它是⼀个技术思想,不是⼀个技术实现。Java开发领域对象的创建,管理的问题。⽐如类A依赖于类B,往往会在类A中new⼀个B的对象我们不⽤⾃⼰去new对象了,⽽是由IoC容器(Spring框架)去帮助我们实例化对象并且管理它,我们需要使⽤哪个对象,去问IoC容器要即可指的是对象创建(实例化、管理)的权利控制权交给外部环境了(spring框架、IoC容器)

2024-09-02 15:47:10 1336

原创 A02、Java编程性能调优(02)

I/O 是机器获取和交换信息的主要渠道,而流是完成 I/O 操作的主要方式。在计算机中,流是一种信息的转换。流是有序的,因此相对于某一机器或者应用程序而言,我们通常把机器或者应用程序接收外界的信息称为输入流(InputStream),从机器或者应用程序向外输出的信息称为输出流(OutputStream),合称为输入 / 输出流(I/O Streams)。机器间或程序间在进行信息交换或者数据交换时,总是先将对象或数据转换为某种形式的流,再通过流的传输,到达指定机器或程序后,再将流转换为对象数据。

2024-09-01 14:06:13 1073

原创 【Mybatis】Mybatis-Plus 高级

MyBatis 允许你在已映射语句执⾏过程中的某⼀点进⾏拦截调⽤。我们看到了可以拦截Executor接⼝的部分⽅法,⽐如update,query,commit,rollback等⽅法,还有其他接⼝的⼀些⽅法等。

2024-08-28 15:16:37 735

原创 【Mybatis】关于Mybatis-Plus

在AbstractSqlInjector中,主要是由inspectInject()⽅法进⾏注⼊的,如下:在实现⽅法中, methodList.forEach(m -> m.inject(builderAssistant, mapperClass,modelClass, tableInfo));可以看到,数据已经写⼊到了数据库,但是,id的值不正确,我们期望的是数据库⾃增⻓,实际是MP⽣成了id的值写⼊到了数据库。在MP查询中,默认查询所有的字段,如果有需要也可以通过select⽅法进⾏指定字段。

2024-08-27 11:51:27 737

原创 A02、编程性能调优(01)

我们在完成性能测试之后,需要输出一份性能测试报告,帮我们分析系统性能测试的情况。其中测试结果需要包含测试接口的平均、最大和最小吞吐量,响应时间,服务器的 CPU、内存、I/O、网络 IO 使用率,JVM 的 GC 频率等。通过观察这些调优标准,可以发现性能瓶颈,我们再通过自下而上的方式分析查找问题。首先从操作系统层面,查看系统的 CPU、内存、I/O、网络的使用率是否存在异常,再通过命令查找异常日志,最后通过分析日志,找到导致瓶颈的原因;

2024-08-12 23:33:14 808

原创 【Mybatis】源码分析-深入源码

问题在开发过程中很多时候我们并不需要总是在加载⽤户信息时就⼀定要加载他的订单信息。此时就是我们所说的延迟加载。在⼀对多中,当我们有⼀个⽤户,它有个100个订单。在查询⽤户的时候,要不要把关联的订单查出来?在查询订单的时候,要不要把关联的⽤户查出来?在查询⽤户时,⽤户下的订单应该是,什么时候⽤,什么时候查询。在查询订单时,订单所属的⽤户信息应该是随着订单⼀起查询出来。就是在需要⽤到数据时才进⾏加载,不需要⽤到数据时就不加载数据。延迟加载也称懒加载。

2024-07-31 16:08:46 3033 1

原创 常用命令汇总

【代码】常用命令汇总。

2024-07-31 10:26:23 133

原创 【Mybatis】源码分析-高级应用

⼀般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者⾃⾏拓展。这样的好处是显⽽易⻅的,⼀是增加了框架的灵活性。⼆是开发者可以结合实际需求,对框架进⾏拓展,使其能够更好的⼯作。以MyBatis为例,我们可基于MyBatis插件机制实现分⻚、分表,监控等功能。由于插件和业务⽆关,业务也⽆法感知插件的存在。因此可以⽆感植⼊插件,在⽆形中增强功能。Mybatis作为⼀个应⽤⼴泛的优秀的ORM开源框架,这个框架具有强⼤的灵活性,在四⼤组件处提供了简单易⽤的插件扩展机制。

2024-06-06 11:19:30 396

原创 【Mybatis】源码分析-自定义框架

sqlMapConfig.xml : 存放数据源信息引⼊mapper.xmlMapper.xml : sql语句的配置⽂件信息首先创建一个Maven工程,使用JDK8.引用的依赖如下文件所示。</project>接着创建 sqlMapConfig.xml 文件,保存关于数据库的相关链接信息以及Mapper映射文件的路径信息。--数据库连接信息-->--引入sql配置信息 -->return id;

2024-06-03 10:06:48 1079

原创 ES实例演示二

【代码】ES实例演示二。

2024-05-23 17:48:38 242

原创 ES实例演示一

设置 index 为 falsePUT users},},"query": {"match": {#设定Null_valuePUT users},},"query": {"match": {#设置 Copy toPUT users},"query": {"match": {#数组类型"query": {#使用char filter进行替换],//char filter 替换表情符号],"]// whitespace与stop。

2024-05-21 16:01:04 499

原创 【正则表达式】3、常见问题

数字的匹配比较简单,通过我们学习的字符组,量词等就可以轻松解决。

2024-05-17 15:10:43 1432

转载 使用Nginx对后端服务做主备

而我们在 Linux 平台上通过 Nginx + PHP 实现动静分离,而实际生产中往往一台 nginx 需要 “对应” 多个动态处理的服务(即 tomcat),所以如何将前端接收到的动态请求转交给后端多个 tomcat 处理,是我们此处研究的内容。nginx 使用 upstream 模块将后端服务配置成主、备模式,只要主的不挂,流量一直流向主;访问的还是 tomcat02,没有切换到 tomcat01,等待一会,再刷新,可以切换到 tomcat01。

2024-05-17 09:04:17 881

字节码解析示例与说明解析

字节码解析示例与说明解析

2024-04-17

字节码解析示例与说明解析

字节码解析示例与说明解析

2024-04-17

JVM常量类型结构说明

JVM常量类型结构说明

2024-04-17

调优初始jmeter脚本

调优初始jmeter脚本

2024-04-15

案例一-堆溢出演示代码

案例一-堆溢出演示代码

2024-04-10

MapToDtoConvert.7z

简单封装的一个关于map类型数据转pojo实体类的工具方法,map数据转换,支持实体类中的String、int、Integer、double、Double、float、Float、long、Long以及Date(java.util.Date)类型

2021-07-06

2020java最新基础面经

这份doc面经文档是我最近整理的,里面内容都是比较新的。所有问题都有答案,知识点基本都涉及了。虽说是基础面经,但是里面整理的比较细,有java基本知识、JVM相关知识点、spring相关内容等。

2020-12-04

jacob api文档及使用方法

这里呢是三份文档,里面有jacob的一些具体使用方法包括代码案例也有,三份文档有些重复的不过都是比较全的

2019-09-20

mybatis分页插件与druid连接池

包含了阿里巴巴开的druid1.026版本连接池架包以及mybatis分页插件pagehelper-4.2.1版本的架包

2018-06-20

hibernate框架所需架包

里面拥有的是使用hibernate框架需要用到的几个架包,主要目的是方便使用。

2018-06-20

spring+springmvc+mybatis等架包

该资源包含了我们SSM框架所需的所有架包,包括日志的架包。

2018-06-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除