
后端
文章平均质量分 84
后端
刻苦的樊同学
希望和博客的大牛们一起进步,欢迎批评指正!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Flowable基础篇
FlowableUI是官方提供的,针对国内复杂的流程业务需求有时并不能很好的满足企业的工作流的需求。这时我们就可以基于bpmn.js来自定义流程设计器,官网地址:https://bpmn.io/toolkit/bpmn-js/walkthrough/开源的学习资料:https://github.com/LinDaiDai/bpmn-chinese-document/tree/master/LinDaiDai有了相关的用户信息。我们就可以来创建流程图了。这块我们需要通过建模应用程序来实现。原创 2025-08-13 16:18:15 · 347 阅读 · 0 评论 -
使用PDFBox封装一个简单易用的工具类快速生成pdf文件-非原创
以起始位置至终点一条线,线宽以垂直于起始至终止连线方向发散,例如线宽20,起始位置(0,10),终止位置(500,10)则线实际所占位置为(0,0),(0,20),(500,0),(500,20)所围成的长方形区域。第一个参数 a={3,5} 3表明虚线宽度为3,5表明虚线间隔为5。当a={3}时表明虚线宽度为3,间隔为3。文档左下角为坐标原点,x轴向右从0增加,y轴向上增加。字的位置以左下角为原点向右上方发散。图位置以左下角为原点向右上方发散。2.otf类型字体加载。第二个参数0表明虚线。原创 2025-08-13 16:14:54 · 552 阅读 · 0 评论 -
手摸手带你学ClickHouse
官网:https://clickhouse.tech/,ClickHouse是面向 OLAP 的分布式列式DBMS。优点:1、灵活的MPP架构,支持线性扩展,简单方便,高可靠性2、多服务器分布式处理数据,完备的DBMS系统3、底层数据列式存储,优化索引数据4、快:比Vertica快5倍,比Hive快279倍,比MySQL快800倍,其可处理的数据级别已达到10亿级别5、功能多:支持数据统计分析各种场景,支持类SQL查询,异地复制部署。原创 2025-08-13 16:13:44 · 838 阅读 · 0 评论 -
Netty 对 Java NIO 空轮询问题的处理
摘要: Java NIO在Linux平台使用epoll机制时存在空轮询问题,表现为Selector.select()在没有可处理IO事件时不断被唤醒,导致CPU占用100%。该问题源于底层epoll在socket异常终止(RST)时返回POLLHUP/POLLERR事件,但JDK未在SelectionKey中定义异常事件类型,导致上层无法处理。解决方案包括:JDK层面新增异常事件或扩大事件映射;应用层通过重建Selector(如Netty采用计数器统计空轮询次数,超过阈值512次时重建Selector)来规原创 2025-08-13 16:13:05 · 732 阅读 · 0 评论 -
异步执行获取不到登录态的问题排查(RequestContextHolder.getRequestAttributes()子线程获取问题)
由于是SSO统一认证,因此远程调用必须有登录状态,而我们的登录会话保存在当前请求(也就是主线程)的HttpServletRequest中,通过RequestContextHolder.getRequestAttributes().getRequest()来获取,而通过查看源码,发现RequestAttributes对象是存在ThreadLocal线程本地变量的,那问题可想而知了,问题根本原因就是,创建的子线程无法获取到会话信息,因为会话信息存在在主线程的本地变量里。实际获取到的是空的,然后查看了源码。原创 2025-08-13 16:08:33 · 552 阅读 · 0 评论 -
springboot使用redis&lua脚本实现分布式限流starter
由于后续要使用lua脚本来做权限控制,所以必须自定义一个redisTemplate,此处如果不自定义redisTemplate,则执行lua脚本时会报错。原创 2025-08-12 14:35:07 · 417 阅读 · 0 评论 -
WebService简单教学[特殊字符][特殊字符]SpringBoot整合CXF的快速入门[特殊字符][特殊字符]CXF发布Rest服务
一,WebService的基本概念二, ApacheCXF 框架介绍三, ApacheCXF 实现WebService(Jax-ws)四, Spring 整合 ApacheCXF 实现WebService(Jax-ws)五,ApacheCXF 实现webservice (Jax-rs)六,Sping整合CXF实现基于Restful风格的webservice(jax-rs)原创 2025-08-12 14:33:56 · 877 阅读 · 0 评论 -
Java解决单机环境下多数据源的事务问题
在自定义数据源中注入上边那两个多数据源,维持多数据源执行事务期间用到的连接列表,在自定义数据源中添加事务相关业务,既在获取 连接的地方将 Connection 缓存到 ThreadLocal 中使用了@Primary。原创 2025-08-12 14:33:00 · 237 阅读 · 0 评论 -
手撕四大限流算法
经过上述的描述,原创 2025-08-12 14:32:02 · 858 阅读 · 0 评论 -
深入理解Java定时调度机制 (Timer)源码阅读
在实现定时调度功能的时候,我们往往会借助于第三方类库来完成,比如: quartz 、 spring schedule 等等。jdk从1.3版本开始,就提供了基于 timer 的定时调度功能。在 timer 中,任务的执行是串行的。这种特性在保证了线程安全的情况下,往往带来了一些严重的副作用,比如任务间相互影响、任务执行效率低下等问题。为了解决 timer 的这些问题,jdk从1.5版本开始,提供了基于 scheduledexecutorservice 的定时调度功能。本节我们主要分析 timer 的功能。原创 2025-08-12 14:02:15 · 839 阅读 · 0 评论 -
手写一个Callable和FutureTask,异步线程执行并得到结果,了解其原理
/ 1. 创建callable@Override// 模拟执行耗时 3秒try {return new User("用户" + new Date().getTime(), "29");// 2.创建futureTask// 3.放到线程中执行// 4.获取返回结果// 5.打印最后,这里是用wait和notify模拟的,还可以使用LockSupport来实现。原创 2025-08-07 10:41:04 · 521 阅读 · 0 评论 -
Kafka Connector Source/ Kafka Connector Sink连接器的开发使用
开始和结束的端点:例如,将 Kafka 中的数据导出到 HBase 数据库,或者把 Oracle 数据库中的数据导入 Kafka 中。数据传输的中间介质:例如,为了把海量的日志数据存储到 Elasticsearch 中,可以先把这些日志数据传输到 Kafka 中,然后再从 Kafka 中将这些数据导入到 Elasticsearch 中进行存储。Kafka 连接器可以作为数据管道各个阶段的缓冲区,将消费者程序和生产者程序有效地进行解耦。Source 连接器:负责将数据导入 Kafka。Sink 连接器。原创 2025-08-07 10:30:49 · 362 阅读 · 0 评论 -
轻量级分布式任务调度平台(XXL-JOB介绍、原理、工作流程、XXL-JOB环境搭建集成springboot)
XXL-JOB是一个轻量级分布式任务调度平台,主打特点是平台化,易部署,开发迅速、学习简单、轻量级、易扩展,代码仍在持续更新中。调度中心任务调度控制台,平台自身并不承担业务逻辑,只是负责任务的统一管理和调度执行,并且提供任务管理平台执行器负责接收“调度中心”的调度并执行,可直接部署执行器,也可以将执行器集成到现有业务项目中。通过将任务的调度控制和任务的执行解耦,业务使用只需要关注业务逻辑的开发。XXL-JOB主要提供了任务的动态配置管理、任务监控和统计报表以及调度日志几大功能模块,原创 2024-11-14 10:19:36 · 1530 阅读 · 0 评论 -
实现一个任务调度引擎系统
【代码】实现一个任务调度引擎系统。原创 2024-11-14 10:13:55 · 402 阅读 · 0 评论 -
关于Iceberg数据湖的正确使用方式 转载大佬的博客就不声明了,在此标题处声明,非全原创,感谢!
说明 如果写数据时,遇到异常提示return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask,应该找不到fb303相关类路径,可以在Hive命令行中手动执行命令 add jar /Users/XXX/cloudera/cdh5.7/hive/lib/libfb303-0.9.3.jar。下载地址:https://dlcdn.apache.org/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz。原创 2024-11-14 10:10:39 · 693 阅读 · 0 评论 -
gateway网关结合nacos动态路由
网关路由请求过后,如果我们希望拦截请求,做自己的业务逻辑则可以使用GlobalFilter 全局过滤器。全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与 GatewayFilter 的作用一样。区别在于 GlobalFilter 的逻辑可以写代码来自定义规则;而 GatewayFilter 通过配置定义,处理逻辑是固定的。**需求:**定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件参数中是否有 authorizationauthorization 参数值是否为 admin。原创 2024-11-14 10:09:38 · 1534 阅读 · 0 评论 -
大数据开发之Kafka和Kafka Restful Proxy的入门教程
消费者会定期将自己消费分区的offset提交给__consumer_offsets,key是consumerGroupId+topic+分区号,value就是当前offset的值,并且kafka会定期清理topic里的消息仅保留最新的那条数据,通过如下公式可以选出consumer消费的offset要提交到__consumer_offsets的哪个分区。新消费组中的消费者在启动以后,默认会从当前分区的最后⼀条消息的offset+1开始消费(消费新消息)。可以通过以下的设置,让新的消费者第⼀次从头开始消费。原创 2024-11-14 10:08:48 · 1335 阅读 · 0 评论 -
难难难难难难难!美团追魂七连问!关于Object o = new Object()创建对象的问题
看下图,比如thread1第一次进来,判断是否为空,为空,拿到锁之后创建对象,但是创建对象有三步(申请空间,初始化,关联),但是这里发生了指令重排序,申请了空间,并进行了关联,但此刻并未初始化(对象有了,数据为空),此时thread2进来了,判断是否为空,不为空,不为空的话,直接就拿走对象用了,其实这个对象的数据都是未初始化的数据,因此就错了。有同学想问,字符串的长度不一样长,为何字节一直是4个字节?默认压缩,占4个字节,不压缩占8个字节,实例数据有多少就占多少,类型指针指向创建的类,此处指针指向。原创 2024-11-14 10:07:43 · 443 阅读 · 0 评论 -
手写一个@Transactional注解,实现事务回滚
*** 自定义事务注解* 空注解,用来标识*//*** 将自定义的事务注解,使用AOP的方式,来增强它的功能*/@Aspect@Component@Autowired/*** 让标记着@myTransactional注解的方法,不直接调用,而是在该方法前后增加代码,增强该方法功能。原创 2024-11-14 10:03:14 · 311 阅读 · 0 评论 -
手撸一个ThreadPool线程池(源码简化版)
线程池由任务队列和工作线程组成,它可以重用线程来避免线程创建的开销,在任务过多时通过排队避免创建过多线程来减少系统资源消耗和竞争,确保任务有序完成。更多介绍参考文章:https://www.imooc.com/article/51147B站视频地址:https://space.bilibili.com/512437822。原创 2024-11-13 10:28:41 · 387 阅读 · 0 评论 -
手写一个AQS队列同步器锁 高仿AbstractQueuedSynchronizer抽象队列同步器 AQS同步器核心原理剖析(自旋+LockSupport+CAS)
现在有一个场景,就是很经典的减库存高并发的场景,以下是伪代码//查询库存//如果库存数量>0,库存减1//如果库存数量<0,减库存失败假如数据库的库存数量是5,如果是高并发的情况下(30个线程同时减库存),没有加synchronize同步锁,结果将如何?结果是,下单成功的数量远远大于5,为什么?原创 2024-11-13 10:24:47 · 760 阅读 · 0 评论 -
手写一个基于redis的分布式锁(watch dog看门狗 / redisson分布式锁的底层原理)
首先看一下锁的主体,首先在过期时间上采取一个比较折中的策略:默认30s,目前直接在代码写死,后期优化成可配置的形式,这样程序宕掉也不至于长时间的不可用;其次,关于业务线程可能阻塞导致的执行时间过长的问题,这边可以看到在lock的时候会启动一个WatchDog线程,此线程的作用是用于监视key的剩余过期时间,发现过小时完成自动续约,以此来保证锁不会被提前释放。Redisson分布式锁的底层原理:https://www.cnblogs.com/windpoplar/p/11964088.html。原创 2024-11-13 10:21:37 · 474 阅读 · 0 评论 -
用JAVA实现大文件上传及显示进度信息
文章转自:https://www.cnblogs.com/darkprince/p/5114936.html原创源码(参考):https://gitee.com/fanjiangfeng/UploadBigFile我的源码:https://gitee.com/fanjiangfeng/xxx_edu。原创 2024-11-13 10:20:38 · 1523 阅读 · 0 评论 -
Java设计模式的分析与实践(23种设计模式)
1,设计模式概述1.1 软件设计模式的产生背景"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克原创 2024-11-13 10:18:24 · 700 阅读 · 0 评论 -
EFK日志收集系统的设计与实现
primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。上面已经分析了文档路由机制,默认的这种路由模式,最大的优势在于负载均衡,这种方式可以保证平均分配在不同的分片上,但是他有一个很大的劣势,就是查询时候无法确定文档的位置,此时它会请求广播到所有的分片上去执行,另一方面,使用默认的路由模式,后期修改分片数量不方便。原创 2024-11-13 10:15:42 · 986 阅读 · 0 评论 -
Linux搭建Jenkins持续集成并给出连接gogs仓库对springboot工程自动部署的所需内容
Linux安装Jenkins:https://www.cnblogs.com/wintest/p/12182067.htmlJenkins可选插件为空怎么办?如果在插件列表找不到插件或者安装插件失败,可以选择手动下载插件并在高级页进行上传。这里maven-plugin.hpi文件就是下载手动上传安装的。Linux安装配置Maven:https://blog.youkuaiyun.com/zjh_746140129/article/details/79017448。原创 2024-11-12 10:30:47 · 437 阅读 · 0 评论 -
Flask框架从0到1实现博客网站(请以学习的目的观看,博主也是以学习为主)
GitHub地址:https://github.com/fantongxue666/Python-Projects。原创 2024-11-12 10:23:13 · 429 阅读 · 0 评论 -
Hadoop分布式存储和计算MapReduce的使用以及Hive数据仓库等内容精讲
这个Mapper程序不做任何逻辑,也不对Key-Value做任何改变,只是接收数据,然后往下发送/*** K1:行偏移量* V1:行数据文本(必须包括要分区的值)* K2:行数据文本*///map方法把K1,V1转为K2,V2@Override。原创 2024-11-12 10:22:09 · 822 阅读 · 0 评论 -
springboot整合log4j2日志全解
在这里简单介绍下常用的配置参数日志级别机制:如果一条日志信息的级别大于等于配置文件的级别,就记录。trace:追踪,就是程序推进一下,可以写个trace输出debug:调试,一般作为最低级别,trace基本不用。info:输出重要的信息,使用较多warn:警告,有些信息不是错误信息,但也要给程序员一些提示。error:错误信息。用的也很多。fatal:致命错误。输出源CONSOLE(输出到控制台)FILE(输出到文件)格式SimpleLayout:以简单的形式显示。原创 2024-11-12 10:21:05 · 575 阅读 · 0 评论 -
dateway数据接口配置服务
Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开辟新的管理端口。这种内嵌集成方式模式的优点是,可以使得大部分老项目都可以在无侵入的情况下直接应用 Dataway。进而改进老项目的迭代效率,大大减少企业项目研发成本。原创 2024-11-12 10:20:19 · 1009 阅读 · 0 评论 -
springboot整合elasticsearch+ik分词器+kibana
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。原创 2024-11-11 10:29:52 · 1068 阅读 · 0 评论 -
springboot集成jwt令牌【前后端分离模式下的身份认证方式】
server:port: 8080spring:# 自定义配置config:jwt:# 加密密钥# token有效时长# header 名称1,@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。2,@Autowired默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false3,@Resource(这个注解属于J2EE。原创 2024-11-11 10:25:37 · 753 阅读 · 0 评论 -
JavaEmail发送网易163邮箱和QQ邮箱
【代码】JavaEmail发送网易163邮箱和QQ邮箱。原创 2024-11-11 10:23:37 · 270 阅读 · 0 评论 -
手写Mybatis框架,剖析底层结构原理
封装JDBC操作利用反射打通Java类与SQL语句之间的相互转换MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBatis的核心竞争力。Mybatis的用法这里简单说一下,新建Mapper接口文件,然后在mapper.xml配置文件中写对应的sql相关信息。> <!> <!> <!FROM user。原创 2024-11-11 10:22:39 · 609 阅读 · 0 评论 -
动手实现一个Tomcat服务器(简易版)
首先我们需要先了解HTTP协议,请求头,请求行,请求体,响应头,响应行,响应体,具体请移步百度!其次,Tomcat的底层是socket编程,没有socket基础的同学请往右拐👇准备好了上面两个条件,我们就可以开始写Tocmat服务器了!原创 2024-11-11 10:21:05 · 643 阅读 · 0 评论 -
springboot集成rabbitmq商品秒杀业务实战(流量削峰)
消息队列如何实现流量削峰?要对流量进行削峰,最容易想到的解决方案就是用消息队列来缓冲瞬时流量,把同步的直接调用转换成异步的间接推送,中间通过一个队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送出去。这里就不讲springboot和rabbitmq如何集成了,参考文章。原创 2024-11-08 09:39:02 · 941 阅读 · 0 评论 -
手写SSO单点登录
官方介绍:单点登录,简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分。more。原创 2024-11-08 09:24:30 · 1239 阅读 · 0 评论 -
HttpClient远程调用另一个项目的接口查询数据
比如讲,现在有一个B项目,它有一个接口查询的是学生信息,然后A项目想要访问B项目的这个接口并查询学生信息,使用。,好像它更适合跨项目远程调用接口,不过不太会用,这里就使用。就可以拿到数据了,这里只是测试数据。可以实现,了解了一下。原创 2024-11-07 14:26:07 · 216 阅读 · 0 评论 -
Java爬虫的底层及实现过程(可动手实现爬取京东官网的商品信息数据并保存到数据库中)
jsoup是一款java的html解析器,可直接解析某个url地址,html文本等内容,它提供了一套非常省力的api,可通过dom,css以及类似于jquery的操作方法来取出和操作数据。Jsonp的主要功能如下:1,从一个url,文件或字符串中解析html;2,使用dom或css选择器来查找、取出数据。原创 2024-11-07 14:18:46 · 987 阅读 · 0 评论 -
JavaWeb文件上传和下载
【代码】JavaWeb文件上传和下载。原创 2024-11-06 10:29:17 · 198 阅读 · 0 评论