自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈橙橙

陈橙橙@

  • 博客(121)
  • 资源 (1)
  • 收藏
  • 关注

原创 【Flowable】任务监听器(五)

前言之前有需要使用到Flowable,鉴于网上的资料不是很多也不是很全也是捣鼓了半天,因此争取能在这里简单分享一下经验,帮助有需要的朋友,也非常欢迎大家指出不足的地方。一、监听器在Flowable中,我们可以使用监听器来完成很多流程业务,比如指定任务处理人、任务通知提醒等操作,在这里我们来简单尝试一下监听器的使用,我们在上篇文章中使用的请假流程中来创建监听器。如上图所示:事件create:任务创建的时候触发。assignment:在分配处理人的时候触发。complete:处理完成之后

2023-09-15 14:33:07 1870

原创 【Flowable】使用UEL整合Springboot从0到1(四)

前言在前面我们介绍了Springboot简单使用了foleable以及flowableUI的安装和使用,在之前我们分配任务的处理人的时候都是通过Assignee去指定固定的人的。这在实际业务中是不合适的,我们希望在流程中动态的去解析每个节点的处理人,当前flowable也支持这样去做。一、 UEL表达式Flowable使用UEL进行表达式解析。UEL代表Unified Expression Language,是EE6规范的一部分.Flowable支持两种UEL表达式: UEL-value 和UEL-m

2023-09-15 11:23:59 463

原创 【Flowable】Flowable表结构(三)

我们发现flowable的表结构都是ACT_开头进行命名的,因为他是基于activity进行开发的因此命名也延续了act_这样的一个命名:RERUHIGEID。

2023-09-14 16:28:51 190

原创 【Flowable】FlowableUI使用以及在IDEA使用flowable插件(二)

之前有需要使用到Flowable,鉴于网上的资料不是很多也不是很全也是捣鼓了半天,因此争取能在这里简单分享一下经验,帮助有需要的朋友,也非常欢迎大家指出不足的地方。

2023-09-11 23:43:36 1136

原创 【Flowable】Springboot使用Flowable(一)

二、新建Test类三、flowable流程图新建一个xml文件命名为:以上简单介绍springboot整合flowable,后续会继续深入研究,欢迎各位小伙伴指点不足。

2023-09-11 23:07:55 415

原创 【并发编程】synchronized如何保证原子性、一致性和可见性

synchronized是解决线程安全的问题,常用在同步普通方法、静态方法、代码块中,每个对象有一个锁和等待队列,锁只能被一个线程持有,其他需要锁的线程需要阻塞等待,锁被释放后,对象会从队列中取出一个并唤醒,唤醒哪个线程是不确定的,不保证公平性,因此,synchronized是非公平、可重入的悲观锁。

2023-07-07 14:34:59 389

原创 【并发编程】ReentrantLock是公平锁还是非公平锁

ReentrantLock是公平锁还是非公平锁?ReentrantLock通过参数控制,可以是公平锁也可以是非公平锁。

2023-07-06 10:19:10 463

原创 【并发编程】常见的锁

在多线程编程中,上下文切换是一种常见的操作,上下文切换通常是指在一个CPU上,由于多个线程共享CPU时间片,当一个线程的时间片用完后,需要切换到另一个线程运行。同时,需要将切换到的线程的状态信息回复,以便于该线程能够正确运行。什么是上下文切换:上下文切换是指CPU从一个线程转到另一个线程时,需要保存当前线程的上下文状态,恢复另一个线程的上下文状态,以便于以下次恢复执行该线程时能够正确地运行。悲观锁适合写操作多的场景,乐观锁适合读操作的场景,乐观锁的吞吐量会比悲观锁多。

2023-07-06 09:53:15 185

原创 【Mysql】事务原理与优化最佳实践(四)

我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增 删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事 务隔离机制、锁机制、MVCC多版本并发控制隔离机制、日志机制,用一整套机制来解决多 事务并发问题。

2023-07-04 12:40:33 197

原创 【Mysql】Explain深入分析(三)

使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。

2023-07-03 21:37:13 378

原创 【Mysql】索引数据结构深入研究(二)

在这里需要明确的一点是,数据库的引擎InnoDB或者是MyISAM引擎它们是形容数据表的,不是形容数据库的。另外:文章中提到的索引的数据结构暂且都默认使用B+Tree。

2023-06-28 15:07:46 340

原创 【Mysql】索引数据结构深入研究(一)

大伙都知道,Mysql中的数据都是存在我们磁盘上的,磁盘写入数据是一个磁道一个磁道的进行写入,可能我们在今天向Mysql中插入一条col1为1的这一条数据,数据分布在磁盘上的某个位置A,过了好几天在插入col1为2的这条数据,数据分布在磁盘上的某个位置B,这时间间隔内,我们计算机的任何程序都可能往磁盘上进行写入数据,所以,Mysql的数据是在磁盘上随机分布,不一定是紧挨着的,之所以能通过select直观的看到,是mysql将这些数据汇集起来了。而B+Tree适用于需要顺序访问的场景,如范围查询和排序。

2023-06-20 13:23:08 719

原创 Gitee流水线部署

在传统服务器上我们对项目的部署步骤比较繁琐,需要经历编译、打包、上传、启动,这里使用Gitee提供的流水线部署进行简化此过程。

2023-03-16 21:11:57 1969 1

原创 Redis专题(六):Redis主从复制、哨兵搭建以及原理

孤独是你长久的朋友,爱只会偶尔来敲门。掌好夜深的每一盏灯,爱来时窃窃听闻。

2022-12-02 11:08:05 445

原创 【spring源码】二、手写模拟Spring加载bean底层原理

孤独是你长久的朋友,爱只会偶尔来敲门。掌好夜深的每一盏灯,爱来时窃窃听闻。

2022-06-10 18:18:26 381 3

原创 【spring源码】一、从spring的hello world开始重头嚼

孤独是你长久的朋友,爱只会偶尔来敲门。掌好夜深的每一盏灯,爱来时窃窃听闻。

2022-06-10 09:42:25 302

原创 【linux从入门到放弃】shell变量及运用

shell变量变量是shell传递数据的一种方法,变量是用来代替每个值的符号名。我们可以把变量当成一个容器,通过变量,可以在内存中存储数据。也可以在脚本执行中进行修改和访问存储的数据。变量的设置规则变量名称通常是大写字母,它可以由数字、字母(大小写)和下划线组成。变量名区分大小写;但是不能以数字开头。等号 = 用于为变量分配值,在使用过程中符号两边不能有空格。变量存储的数据是整数数值和字符串值在对变量赋予字符串值时,建议使用引号进行括起来,因为如果字符串中存在空格符号。需要使用单引号或双引号

2022-04-08 17:56:27 924

原创 【linux从入门到放弃】shell基本语法

什么是shellshell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户输入的命令给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕并反馈给用户。这种对话方式是交互也可以是非交互的。我们所输入的命令计算机是不识别的,这时候就需要一种程序来帮助我们进行翻译,编程计算机程序,同时又把计算机生成的结果返回给我们。编程语言分类​编程语言主要用:低级语言和高级语言低级语言:机器语言:二进制语言汇编语言:符号语言,使用助记符来代替操作码,也就是用符号代替机器语言的

2022-04-07 23:02:30 636

原创 【我和kubernetes的相遇】核心组件和架构图

kubernetes组件当你部署完了kubernetes,即拥有了一个完整的集群。一个kubernetes集群由一组被称作节点的机器组成。这些节点上运行kubernetes所管理的容器化应用。集群具有至少一个工作节点。工作节点托管作为应用负载组件的Pod。控制平面管理集群中的工作节点和Pod。为集群提供故障转移和高可用性,这些控制平面一般跨多主机运行,集群跨多个节点运行。container我们先以container为七点,k8s既然是容器编排工具,那么一定会有container。那么k8s是

2022-04-02 15:28:52 1050

原创 【我和kubernetes的相遇】kubernetes概述

什么是kubernetesKubernetes(k8s)是一个可移植,可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化配置。为什么如此流行传统部署时代早期,在物理服务器上运行应用程序。无法为物理服务器中的应用程序定义资源边界,从而会造成资源分配问题。例如多个程序部署在同一台服务器上其中某一程序占用了大量的资源,从而导致其他程序性能较差。后来我们又尝试着将不同的程序部署在不同的服务器上,但随之到来的问题又是服务器的资源得不到充分的利用,维护成本增加。虚拟化部署时代为了解决上

2022-04-01 21:21:56 532

原创 【docker的那些事】搭建Swarm集群

前言前面我们对docker compose进行了介绍和使用,然而docker compose比较适用于单机的环境下,对于多机的环境下docker也提供了对应的能力,首先我们得准备三台服务器,任意三台可以互相访问的服务器都行。搭建swarm集群选择一台服务器为manger。manager node也可以作为worker node提供服务查看ip执行:docker swarm init --advertise-addr=你的ip此处注意控制台的打印信息进入另外两个worker服务器,

2022-03-30 23:24:34 2210 2

原创 【docker的那些事】docker-compose、scale扩容缩容

前言Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置创建并启动所有服务。虽然现在Compose的使用不是非常广泛,大多数选择还是更倾向于k8s。但是对于一些不是很大的项目来说Compose依然还是可以去选择的。传统的使用的docker在传统的docker使用上,如果我们需要去部署一个springboot的项目,他依赖于redis、mysql等一些环境,我们就需要docker pul

2022-03-30 14:02:52 5989

原创 【docker的那些事】使用percona-xtradb和haproxy搭建mysql集群

前言前面我们对docker的网络、Dockerfile,持久化以及仓库等相关都进行简单的介绍,这里我们简单的来使用docker来搭建一个mysql的集群。对于集群的概念来说,有强一致性和弱一致性,这里我们使用percona-xtradb来搭建一个mysql的高可用集群,这里也是强一致性的。拉取镜像、配置。#1、拉取镜像docker pull percona/percona-xtradb-cluster:5.7.21#2、打一个tag复制镜像docker tag percona/percona-

2022-03-29 10:45:33 1488

原创 【docker的那些事】 volume持久化

前言前面我们对docker的网络、Dockerfile以及仓库等相关都进行简单的介绍,docker技术在目前看来还非常的流行,那么随之带来的数据问题我们如何去解决?我们都知道在docker中像创建一些类似于redis、mysql等等容器相比较之前还是要简单的太多太多,那么在我们这么便捷的使用这些技术的同时,对于他的一些数据问题也应当去考虑考虑。Volume这篇文章我们以mysql来简单说明一下。我们先来启动一个mysql容器。docker run -d --name mysql01 -e MY

2022-03-28 21:18:47 1443

原创 【docker的那些事】docker是如何进行网络通信的

docker容器之间是如何通信的?在这里,大家先看下在我们安装docker之后,linux/window会给我们新增一个网docker0的网卡。主机之间的通信的离不开网卡,在docker容器之中也是一样,我们都知道docker container本质也是基于一个小的linux内核去运行的。因此每个container他也有独立的ip,那么container之间又是如何去通信的呢?我们先来看一下,首先运行两个tomcat容器docker run -d --name tomcat01 -p 8

2022-03-28 14:40:38 2960

原创 【docker的那些事】通过container逆向生成images

场景:我们在使用docker的时候,拉取镜像通常都是通过docker pull去默认的hub.docker中拉取,然后通过run来来运行一个images成功一个container。然而有的时候这些images无法满足我们的需求,那么我们能不能通过container反向生成一个images呢?我们先来看一张图其实可以理解为container只是基于image之后的layer而已,也就是可以通过docker run image创建出一个container出来。container到imag.

2022-03-27 12:29:53 1945

原创 【docker的那些事】linux搭建harbor以及推送images

搭建局域网的harbor下载需要下载的harborhttps://github.com/goharbor/harbor/releases上传至服务器这里我上传至/opt/harbor下解压tar -zxvf harbor-offline-installer-v1.7.1.tgz解压完成之后,他也会生成一个harbor的目录,进入目录cd harbor修改配置文件vi harbor.cfg找到如下配置,并修改hostname = reg.mydom

2022-03-25 23:19:18 1472

原创 【docker的那些事】Dockerfile构建并推送到阿里云仓库

场景假如我有一个springboot的项目,在传统的方式去部署,我需要一台linux服务器,并且在服务器上安装配置jdk等操作,当然对于springboot的项目来说只需要这样,然后执行 java -jar或者 nohup java -jar去执行。我们在编写一个DockerFile的时候,我们会怎么去考虑呢?比如:我有一个Spring Boot项目(这也是比较简单的,直接运行jar包好),我希望把这个项目编制成image,然后把这个image给你,你也能够运行成。1.准备一个Spring Boot

2022-03-25 17:21:42 1819

原创 vagrant虚拟机安装docker

在Win10上准备centos7和大家说明一下,我们的目的仅仅是要安装一个centos7,然后在centos7上安装docker如果搞不定vagrant+virtualbox的方式,也可以直接使用VM搭建一个centos7或者你可以直接使用一台云服务器,上面安装了centos7毕竟我们的目的只是为了得到一个centos7的机器,所以不必花太多精力在这个问题上折腾我上课用的环境是【 win10 64位 VirtualBox-6.0.12-133076-Win [已上传到

2022-03-25 10:12:59 972 4

原创 RocketMQ源码环境搭建运行

下载源码使用gitgit clone https://github.com/apache/rocketmq.git或者自行下载ziphttps://github.com/apache/rocketmq使用IDEA打开,等待加载完毕…文件配置在项目根路径下增加conf目录从distribution拷贝,broker.conf、logback_broker.xml、logback_namesrv.xml三个文件到根目录下的conf目录中修改conf目录下的配置1.修改broker

2022-03-24 14:22:11 459

原创 Linux搭建RocketMQ

一、下载首先去github下载对应的版本:点击跳转,右键复制下载链接,也可以自行使用上传工具传包https://codeload.github.com/apache/rocketmq/tar.gz/refs/tags/rocketmq-all-4.9.3二、执行命令wget https://codeload.github.com/apache/rocketmq/tar.gz/refs/tags/rocketmq-all-4.9.3tar -zxvf rocketmq-all-4.9.3

2022-03-24 13:16:08 4926

原创 基于Springboot+SpringCloud+Spring Security OAuth2.0搭建的博客系统

前言看过这样一段话《2022值得深思的一段话》1.在同一辆列车上,有人感染,有人安全,这是机体免疫力2.同样的隔离,有人一年不愁吃穿,有人一星期就经济拮据,这是财务免疫力3.同样隔离在家,有人读书学习,空中课程很自律,有人打麻将玩游戏,混混沌沌过日子,这是价值免疫力4.一样的灾难,有人阳光向上,勇往直前有人怨天尤人,甚至仇恨社会,这是心理免疫力。这样灾难,是个大浪淘沙的过程,对所有人的体质、阅历、认知、人性、良知、勇气、思想、道德、灵魂、理想、价值观等都是长筛选。所以战胜意外和不幸,所要做的

2022-03-19 16:39:55 1049 5

原创 SpringSecurity(十二)过滤器链分析(上)

前言说到Spring Security的实现原理,大部分都知道是通过过滤器链。因为Spring Security中的所有功能都是通过过滤器链来实现的,这些过滤器组成一个完整的过滤器链。那么这些过滤器链是如何初始化的?我们之前说的AuthenticationManager又是如何初始化的?前面我们对Spring Security的一些核心过滤器以及组件有了一定的了解。由于初始化流程相对复杂,因此我们并没有一开始从这一块分析。初始化流程分析Spring Security初始化流程整体上来说还是很好理解的,

2022-03-16 14:44:19 1904

原创 SpringSecurity(十一) 登录流程分析(下)

前言上一篇我们对SpringSecurity登录流程几个重要组件进行了简单的分析,最后遗留下来了一点,这里我们将继续上篇内容讨论。有兴趣的朋友可以看看本专栏的文章。还请不吝赐教。AbstractAuthenticationProcessingFilter作为SpringSecurity过滤器链中的一环,AbstractAuthenticationProcessingFilter可以用来处理任何提交给它的身份你认证,我们来用图看看它的工作流程:上图显示的流程是一个通用的架构。AbstractAut

2022-03-16 12:51:00 1375

原创 SpringSecurity (十) 登录流程剖析(上)

前言Spring Seucirty 中默认的一套登录流程是十分完善并且严谨的。但是项目需求非常多样化,很多时候,我们可能还需要对 Spring Security登录流程进行定制,定制的前提是我们需要深刻理解Spring Security登录流程,然后在此基础之上,完成对登录流程的定制。登录流程分析要搞清楚Spring Security认证流程,我们得先认识与之相关的三个基本组件:AuthenticationManager、ProviderManager以及AuthenticationProvider

2022-03-16 11:03:18 1161

原创 SpringSecurity(九)从请求对象获取登录数据

上两篇我们主要讨论了一下从SecurityContextHolder中获取数据以及他的原理,这里我们来看一下第二种方法获取请登录数据,从当前请求种对象种获取。从请求对象中获取我们首先来看一下获取登录数据的代码,如下:@GetMapping("/authentication") public void authentication(Authentication authentication){ System.out.println("authentication = "+ a.

2022-03-13 20:37:26 2015 8

原创 SpringSecurity(八)用户数据获取之SpringSecurityContextHolder深度剖析(下)

在上一篇中我们大致的说明了从Security中获取登录数据的逻辑以及SecurityContextHolder保存数据的策略,最后也遗留下了一个问题。—SpringBoot中不同的请求都是由不同的线程处理的,那为什么每一次请求都还能从SecurityContextHolder中获取到登录用户信息呢,这就得提到SpringSecurity过滤器链中最重要的一环了。SecurityContextPersistenceFilter前面几篇我们也介绍了SpringSecurity常见的过滤器,在这些过滤器中.

2022-03-13 11:17:11 1853 2

原创 SpringSecurity(七)用户数据获取之SpringSecurityContextHolder深度剖析(上)

登录用户数据获取登录成功之后,在后续的业务逻辑中,我们可能还需要获取登录成功用户的用户对象,如果我们不使用任何安全框架,我们可以将用户信息保存在HttpSession中,需要的话就从HttpSession中获取数据。在SpringSecurity中,用户登录信息本质上还是保存在HttpSession中,但是为了方便使用,SpringSecurity对HttpSession中的用户信息进行了封装,封装之后,我们在想获取用户登录数据就会有两种不同的思路:从SecurityContextHolder中获取

2022-03-11 22:55:30 3738

原创 SpringSecurity(六)注销登录

注销登录SpringScurity中提供了默认的注销页面,当然我们也可以根据自己的需求对注销登录进行定制。@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests()

2022-03-11 17:53:21 1576

原创 SpringSecurity(五)表单配置-登录失败及页面跳转原理

认证失败继上一篇内容我们继续讨论一下关于表单登录配置认证失败的时候,它默认页面的跳转原理。前言为了方便在前端页面中展示失败的异常信息,我们现在项目中的pom.xml文件中引入thymeleaf依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymel

2022-03-11 17:22:21 4039

空空如也

空空如也

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

TA关注的人

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