超级码农0912
码龄5年
关注
提问 私信
  • 博客:62,671
    62,671
    总访问量
  • 34
    原创
  • 1,477,952
    排名
  • 32
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2020-09-25
博客简介:

weixin_51110958的博客

查看详细资料
个人成就
  • 获得58次点赞
  • 内容获得28次评论
  • 获得224次收藏
  • 代码片获得287次分享
创作历程
  • 1篇
    2023年
  • 32篇
    2022年
  • 1篇
    2021年
成就勋章
TA的专栏
  • Spring源码
    7篇
  • Activiti7
    3篇
  • 基于Netty手写消息队列
    1篇
  • SpringBoot+Vue动态权限
    4篇
  • JVM
    2篇
兴趣领域 设置
  • Java
    java
  • 后端
    分布式中间件spring cloud
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Spring是如何加载BeanDefinition的

在Spring加载Bean的过程中是无法感知每个Bean的,也无法知道每一个bean具体的特征,比如某个bean是单例还是原型,是否懒加载等等。所以Spring需要beandefinition来对每个不同的bean进行描述,并不是直接把Bean直接存入容器而是读取成beanDefinition,再根据BeanDefenition对bean的描述进行实例化。那么Spring是如何读取这些BeanDefinition的呢?
原创
发布博客 2023.02.23 ·
517 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

(三)工作流Activiti7-个人任务查询及完成

在上篇文章中我们已经完成了流程的定义和部署。通过部署并启动流程后就已经开始给每个负责人分配任务了。比如下图:assignee可以写死但一般都是通过变量来设置任务负责人的,在启动一个流程实例的时候就可以将这个emp变量替换成真正的任务负责人。/*** 启动一个流程实例。
原创
发布博客 2022.10.25 ·
2319 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

(二)工作流Activiti7流程部署和启动

每当一个任务完成后就会从系统中删除,而在历史表中更新END_TIME字段,比如说请假流程xx科长审批完成,系统就会在task表中删除xx科长的任务信息添加xx部长的审批任务,历史任务表中的xx科长就会更新完成时间,新增xx部长的任务信息。比如请假流程,每一个请假流程都会启动一个请假流程实例,就好比类和对象的关系,流程就是类,启动一个流程就好比创建一个对象。这里我定义了一个请假流程,流程定义文件保存在resource资源目录下的**/bpmn/leave.bpmn20.xml**
原创
发布博客 2022.10.22 ·
1933 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

(一)工作流Activiti7基础环境搭建

Alfresco软件在2010年5月17日宣布Activiti业务流程管理(BPM)开源项目的正式启动,其首席架构师由业务流程管理BPM的专家 Tom Baeyens担任,Tom Baeyens就是原来jbpm的架构师,而jbpm是一个非常有名的工作流引擎,当然activiti也是一个工作流引擎。
原创
发布博客 2022.10.20 ·
875 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Nacos Config配置中心详解

在微服务的生态中,统一的配置管理也是至关重要的一环,在市场上也有很多的优秀的组件例如SpringCloud Config、Nacos、Apollo等。Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
原创
发布博客 2022.09.21 ·
3585 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Nacos服务注册实现原理

Nacos作为微服务生态核心组件之一,它承担着注册与发现、服务配置的作用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。本章将从源码角度探索Nacos是如何实现服务注册的。
原创
发布博客 2022.09.20 ·
1855 阅读 ·
2 点赞 ·
1 评论 ·
6 收藏

redis实现分布式锁详解

单体项目难以支撑高流量、高访问量的项目。为了降低服务的负载压力,大多数情况下都会把服务拆分集群部署在不同的服务器上。在这种场景下使用常规的JVM锁(Lock/Sync)是有问题的,其他服务是无法感知当前JVM锁的状态的,JVM锁也不能锁其他服务。所以需要一个分布式锁,所有的服务都是用统一的锁。现在比较常用的分布式锁就是redis、zookeeper和mysql。
原创
发布博客 2022.09.07 ·
2377 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

从0-1带你手写代码生成器(Java版)

在实际的项目开发中,根据数据库表创建实体、service、controller等结构是一件非常繁琐的事。所以我们经常需要使用到各种代码生成器,例如mybatis-plus,若依等框架都有自己的代码生成器和生成逻辑。本篇文章我们就从0开始,手写一个简单的代码生成器。源码github地址。
原创
发布博客 2022.09.02 ·
1386 阅读 ·
4 点赞 ·
0 评论 ·
9 收藏

websocket+vue+echarts实现实时动态渲染图表

最近遇到一个需求,需要在前端做一个可视化的图表,并且是实时更新的。但echarts不支持图表的实时渲染。只能通过setOption重新设置。我的实现思路是在页面初始化的时候向后端发起一个websocket请求,后端收到连接后将channel保存起来,每次数据更新或隔段时间就轮询这些channel推送数据。...
原创
发布博客 2022.08.07 ·
3379 阅读 ·
4 点赞 ·
0 评论 ·
30 收藏

踩坑记录:Netty客户端channel.close后主程序无法停止的问题

在尝试netty客户端主动断开连接,调用channel.close后,正常情况下程序会正常退出。但是我在尝试发送10W条消息到服务端再调用close方法,结果程序还在运行。正一头雾水的时候想到可以用jprofile工具查看还没关闭的线程,就进行调试,结果还真的发现一个Netty的BUG。这个ObjectCleanerThread的线程一直在运行,于是我就找啊找,结果在github上找到了答案,确实是netty的一个bug,不过这个bug在4.1.21已经被修复了。刚好我原先版本时4.1.20…...
原创
发布博客 2022.07.23 ·
1810 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

基于Netty手写一款高并发、高性能的消息队列Xy-MQ(一)

在大学时期用过NIO手写消息队列,那时候还不会Netty,用原生的NIO出现了很多问题,例如自定义消息协议后socket无法正常关闭,需要手动修改缓冲区大小等问题。最近刚好学习了Netty,准备用Netty去重写这个消息队列。我将会带着大家从零开始,手写一款高性能、高安全性、持久化的消息队列。源码会同步到Githubhttps感兴趣的可以点个Star!!!在当时Nio编写完成后,就已经拥有超高性能了,每秒钟可以生产和消费消息20000+。高性能、高并发、高可靠性、轻量级的消息队列。......
原创
发布博客 2022.07.22 ·
1323 阅读 ·
4 点赞 ·
1 评论 ·
18 收藏

SpringBoot+SpringSecurity+Vue实现动态权限(四)

在上一篇SpringBoot+SpringSecurity+Vue实现动态权限(三)中已经完成了vue-admin-template的整合以及动态菜单的实现。动态权限大体已经完成了,这一章我们需要修改逻辑,将权限标识存入redis中,后端通过redis中的权限标识来实现权限控制。...
原创
发布博客 2022.07.18 ·
1573 阅读 ·
0 点赞 ·
4 评论 ·
11 收藏

SpringBoot+SpringSecurity+Vue实现动态权限(三)

在上一篇完成了Security登录认证和授权过滤器的编写,后端的登录等功能已经实现。这一篇整合前端Vue实现动态菜单功能。前端Vue项目使用脚手架vue-admin-template
原创
发布博客 2022.06.25 ·
1807 阅读 ·
0 点赞 ·
0 评论 ·
14 收藏

SpringBoot+SpringSecurity+Vue实现动态权限(二)

在上一篇完成项目的构建后,完成了SpringSecurity获取用户信息和权限信息的逻辑。这一篇要实现SpringSecurity的配置,实现自己的登录认证和授权的逻辑。要完成自定义认证和授权的逻辑,就需要自己实现两个过滤器。这两个过滤器是认证过滤器和接口访问过滤器。分别要继承UsernamePasswordAuthenticationFilter类和BasicAuthenticationFilter这两个类。在UsernamePasswordAuthenticationFilter的实现类中可以定义登录
原创
发布博客 2022.06.23 ·
1720 阅读 ·
0 点赞 ·
0 评论 ·
9 收藏

SpringBoot+SpringSecurity+Vue实现动态权限(一)

之前都是使用若依框架来实现的动态权限和菜单功能,但是一直想尝试自己来实现动态权限。所以这两天准备整合一下自己的所学知识,依据RBAC权限模型,使用SpringBoot+SpringSecurity+Vue来自己实现一下动态权限。......
原创
发布博客 2022.06.22 ·
3321 阅读 ·
2 点赞 ·
12 评论 ·
25 收藏

SpringSecurity中loadUserByUsername方法无法正常捕获异常的问题

最近在做动态权限,整合了SpringSecurity。在使用SpringSecurity 做用户认证功能的时候,重写了loadUserByUsername方法并且在方法内判断用户是否为空,如果为空就抛出自定义的UserException异常。前端捕获到就反馈相应信息。代码如下:本以为如上代码会正常抛出UserException,但是在测试之后并没有按照预想的走...
原创
发布博客 2022.06.13 ·
4126 阅读 ·
7 点赞 ·
0 评论 ·
3 收藏

从源码角度解决mybatis报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

看了网上很多解决方法发现并不全,大部分都是检查namespace和标签id是否正确以及是否和方法名对应。首先要说一下报错中的这个statement 就是mappedstatement,在mybatis中一个mappedstatement对应一个或者是其他标签,是一对一的关系。如果检查了namespace和xml配置发现都没问题,就可以怀疑是自己的mapper文件并没有被扫描到。下面是我的排错思路:...
原创
发布博客 2022.06.10 ·
338 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

AQS是什么

AQS是java.util.concurrent.locks包中的一个抽象类,全称AbstractQueuedSynchronizer,直译过来就是抽象队列同步器。它是并发用来构建锁和其他同步组件的基础框架。
原创
发布博客 2022.06.08 ·
1159 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

java并发编程之Volatile详解

在Java中多个线程对公共变量的操作并不是直接在内存中操作的,每一个线程都会有一块自己的工作内存。线程会先从主内存中获取到变量的值到工作内存中进行修改在更新到主内存。假如有两个线程同时对某个变量进行操作,线程A对变量value进行了更新,还没将值回写到主内存中时,线程B也读取了变量value,就会出现脏读现象。...
原创
发布博客 2022.06.04 ·
343 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java死锁代码演示

前言java中锁是个非常有用的工具,运用的场景非常多,因为它使用起来非常简单而且容易理解。但是如果对锁的使用不当就有可能造成死锁,一旦产生死锁就可能会造成系统不可用。下面使用一段代码来模拟死锁发生的场景。public class DeadLock { private static String A ="a"; private static String B ="b"; public static void main(String[] args) { new De
原创
发布博客 2022.05.28 ·
3055 阅读 ·
1 点赞 ·
2 评论 ·
3 收藏
加载更多