自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(544)
  • 资源 (5)
  • 论坛 (6)
  • 问答 (6)
  • 收藏
  • 关注

转载 对mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁概念的理解

记得在上大学那会开始,在大学的课堂上,常常会听到老师讲什么共享锁,排它锁各种锁的词汇,以前仅仅听过一次就没有管了,并没有进行深入的研究最近,在各种群里,又看见了什么乐观锁、悲观锁什么鬼的感觉很高级的词汇,于是乎今天对这几个概念进行学习,揭开它神秘的面纱,缕缕思路记录下我对这几个概念的想法实验环境:mysql5.6存储引擎:innoDB我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)乐观锁乐观锁不是数据库自带的,需要我们自己去实现。乐观锁是指操作数据库时.

2021-05-09 22:09:17 7

转载 mysql索引-B+树

索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在 MySQL 数据库中分三类:B+ 树索引 Hash 索引 全文索引我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的 B+ 树索引。要介绍 B+ 树索引,就不得不提二叉查找树,平衡二叉树和 B 树这三种数据结

2021-05-09 21:56:12 9

转载 理解B+树

B+树是为磁盘和存储工具设计的一种数据结构,它是一种平衡查找树,它在查找,插入、修改方面的时间复杂度都稳定为 O(logn)节点B+树节点是一组按照key有序的元素,B+树包含两种类型的节点,一种是索引节点,一种是叶子节点索引节点也叫内部节点,索引节点只包含key,不包含data, 节点的 key是升序排列的,对于指定的索引节点key来说,它左子树上所有的key都小于它的key,它右子树上所有的key都大于等于它的key 叶节点上存储的是主键和数据(key和data), 所有的叶节点都在同

2021-05-09 21:15:03 8

转载 二叉树的四种遍历算法

二叉树作为一种重要的数据结构,它的很多算法的思想在很多地方都用到了,比如STL算法模板,里面的优先队列、集合等等都用到了二叉树里面的思想,先从二叉树的遍历开始:看二叉树长什么样子:我们可以看到这颗二叉树一共有七个节点0号节点是根节点1号节点和2号节点是0号节点的子节点,1号节点为0号节点的左子节点,2号节点为0号节点的右子节点同时1号节点和2号节点又是3号节点、四号节点和五号节点、6号节点的双亲节点五号节点和6号节点没有子节点(子树),那么他们被称为‘叶子节点’这就是一些基本

2021-04-26 21:53:19 19

原创 activity串行多实例会签

1、串行会签定义 不同于并行会签(根据任务提交时,指定的处理人数量,生成对应数量的任务),串行会签,任务提交时虽然也指定了处理人集合,但是只会生成一个任务,等当前任务处理完成后,才会生成第2个任务,依次类推,按照指定处理人集合中用户的顺序,设置对应的处理人。2、流程图定义,Sequential勾选,对应的bpmn文件isSequence为true,表示串行。2、启动流程,查看act_ru_execution、act_ru_task、act_ru_variable表: p...

2021-04-15 22:34:41 43

原创 activity删除act_ru_task表中正在执行的任务

通过调用taskService.deleteTask方法删除当前正在执行的任务,activity抛出异常提示不能删除正在执行的任务,如果调用complete完成任务,再去历史表中删除,但是调用complete,流程自动往前推进,不想推进的情况下删除当前任务,解决方案如下:1、首先自定义命令,这里继承了NeedsActiveTaskCmd表示当前任务不能挂起(没有这个需求,直接结成TaskCmd即可)import org.activiti.engine.impl.cmd.NeedsActiveTas

2021-04-15 22:17:18 58

转载 ActivitiOptimisticLockingException:was updated by another transaction concurrently

org.activiti.engine.ActivitiOptimisticLockingException: Task[id=dgdfccc542755, name=申请人] was updated by another transaction concurrentlyat org.activiti.engine.impl.db.DbSqlSession.flushUpdates(DbSqlSession.java:872) 代码如下://更新TaskmanagementServic.

2021-04-15 21:55:39 40

转载 mysql重做日志

重做日志(redo log)作用:  确保事务的持久性。  防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。内容:  物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。什么时候产生:  事务开始之后就产生redo log,redo log的落盘并不是随着事务的提交才写入的,而是在事务的执行过程中,便开始写入redo log文件中。什么时

2021-04-13 22:56:20 13

转载 Intellij IDEA如何在一个窗口同时打开多个Maven项目

1、建立父目录,比如fatherProject,并将多个项目放入该父目录fatherProject下2、File-Open...打开父目录fatherProject3、引入pom.xml,打开Maven Projects面板,点击加号,即Add Maven Projects,选择所有子项目的pom.xml文件说明:如果看不到MavenProjects面板,可点击左下角这个图标,并选择MavenProjects面板如果该图标下依然看不到,可尝试全局搜索Maven,如下图所示

2021-04-08 22:38:58 46

转载 Eclipse和Idea中workspace,project,moudle等概念

EclipseEclipse中以Workspace为单位,打开的一个窗口为一个workspace。一个workspace中可以包含许多无关或者相关的Project。如果通过maven管理,相关的项目通过pom.xml文件来建立关联。引入Project:IdeaIdea中概念有些不同,没有workspace的概念,而是以Project为单位,一个窗口对应一个project。而project中可以包含很多的module,module对应到Eclipse中即为Project。...

2021-04-08 22:35:37 39

转载 Java动态调用Groove代码

1 目的动态执行任务或者扩展功能,需要java动态执行groovy代码2 项目依赖<dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.5.2</version> <type>po

2021-04-08 22:28:49 37

转载 activiti 中国式自由流任意节点的跳转

工作流目前只能支持按照预先设置好的线,判断线的预制条件才能按照模板进行跳转 。假设一个场景 a提交到 b b提交到c c提交到d d在一直提交下去。但是退回如何控制呢。假如d-a一直退回。貌似要画很多的线进去,线上配置条件。这样流程才能运转下去。在这里我们不想去画线,但是还期望流程能在制定的模板节点中运行。所以这个场景就是中国式流程。目前版本是5.141.实现的代码如如下:import java.util.Map;import org.activiti.engine.delegate.Ta...

2021-03-21 16:29:47 60

转载 activiti并行和串行区别

多实例还有并行、串行区分。以下解释一下什么是并行与串行并行代表同时进行,如把任务分给5个人来处理,这5个人同时会收到任务,并且可以同时处理,不受各自的影响。串行代表工作或任务由一个人完成后,再由另一个人去处理,直至全部完成,每个任务依赖于前一个任务完成。...

2021-03-19 16:32:13 86

原创 activity默认流转

上图中是默认流转条件,当且仅当其他流转条件无法满足时才会走默认流转节点,即使传输的条件不符合默认流转的表达式,例如,该节点有flow_1:流转条件是${a==1},flow_2:流转条件是${a==2},flow_3:流转条件是${a==3},默认流转。此时传入a=4,flow_1、flow_2都不满足,因为flow_3设置了默认流转,则即使也不满足flow_3的条件(条件会被忽略),此时也会通过flow_3进行流转。注意:该节点有flow_1:流转条件是${a==1},flow_2:...

2021-03-18 22:40:07 30

转载 装饰器模式

装饰器模式装饰器模式又称为包装(Wrapper)模式。装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰器模式的结构通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生子类来扩展,抑或是使用对象组合的方式。显然,直接修改对应的类的方式并不可取,在面向对象的设计中,我们应该尽量使用组合对象而不是继承对象来扩展和复用功能,装饰器模式就是基于对象组合的方式的。装饰器模式以对客户端透明的方式动态地给一个对象附加上了更多的责任。换言之,客户端并不会角色对象在装饰前和装

2021-03-16 23:00:37 19

转载 模板模式

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。介绍意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。何时使用:有一些通用的方法。如何解决:将这些通用算法抽象出来。关键代码:在抽象类实现,其他步骤在子

2021-03-16 22:07:34 12

转载 Activity bpmn.xml类似的解析时,会遇到‘XXX‘ 不是 ‘NCName‘ 的有效值的问题

主要原因是:xml中或类xml的文件中有些关键属性的值不符合NCName命名规范,例如我遇到的是流程的bpmn文件中,id的属性值命名的数字开头:NCName 不包含冒号 (:) 的 XML 名称。NCName 以字母或下划线 (_) 字符开头,后接 XML 规范中允许的任意字母、数字、重音字符、变音符号、句点 (.)、连字符 (-) 和下划线 (_) 的组合。NCName 的一些示例:x_aaabbb.ccccatalogpart-number _-._-......

2021-03-01 21:30:46 42

转载 记一次使用visualVM分析GroovyClassLoader加载机制导致频繁gc的性能问题

一、现象描述 通常使用如下代码在Java 中执行 Groovy 脚本:1 GroovyClassLoader groovyLoader = new GroovyClassLoader();2 Class<Script> groovyClass = (Class<Script>) groovyLoader.parseClass(groovyScriptFile);3 Script groovyScript = groovyClass.newInstance();...

2021-02-28 20:33:03 44

转载 Juel 表达式使用

JUEL包的结构如下:1.1.1.Juel maven仓库配置目前最新的版本是2.2.7,使用的时候在pom.xml中添加仓库坐标即可。<dependency> <groupId>de.odysseus.juel</groupId> <artifactId>juel-spi</artifactId> <version>2.2.7</version> </dependency> &l..

2021-02-25 22:09:51 67

转载 Semaphore -信号量、实现限流

信号量模型一个计数器、一个等待队列、三个方法。计数器和等待队列对外是透明的三个方法:Init(); 初始化计数器down(); 计数器的值-1;如果此时计数器的值小于0,则当前线程将被阻塞,否则当前线程继续执行; – 在Semphore中是acquire()方法up(); 计数器的值+1;如果此时计数器的值大于或等于0,则唤醒等待队列中的一个线程,并将其从等待队列中移除; – 在Semphore中是release()方法在 Java SDK 里面,信号量模型是由 java.util.concu

2021-02-23 22:48:59 59 1

转载 了解信号量Semaphore和线程池的差异

一、首先要明白Semaphore和线程池各自是干什么?信号量Semaphore是一个并发工具类,用来控制可同时并发的线程数,其内部维护了一组虚拟许可,通过构造器指定许可的数量,每次线程执行操作时先通过acquire方法获得许可,执行完毕再通过release方法释放许可。如果无可用许可,那么acquire方法将一直阻塞,直到其它线程释放许可。线程池用来控制实际工作的线程数量,通过线程复用的方式来减小内存开销。线程池可同时工作的线程数量是一定的,超过该数量的线程需进入线程队列等待,直到有可用的工作线程来

2021-02-23 22:36:34 77

转载 报错“importPackage“ is not defined

在学习尚学堂视频过程中,跟着老师敲代码,但是自己的代码报错:Exception in thread "main" javax.script.ScriptException: ReferenceError: "importPackage" is not defined in <eval> at line number 1 at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScript

2021-02-22 22:05:20 37

转载 Eureka工作原理

Eureka 工作原理上节内容为大家介绍了,注册中心 Eureka 产品的使用,以及如何利用 Eureka 搭建单台和集群的注册中心。这节课我们来继续学习 Eureka,了解它的相关概念、工作流程机制等。Eureka 作为 Spring Cloud 体系中最核心、默认的注册中心组件,研究它的运行机制,有助于我们在工作中更好地使用它。Eureka 核心概念回到上节的服务注册调用示意图,服务提供者和服务的消费者,本质上也是 Eureka Client 角色。整体上可以分为两个主体:Eureka

2021-01-30 22:35:38 42

转载 使用Maven插件构建Docker镜像

我们知道,Maven是一个强大的项目管理与构建工具。如果可以使用Maven构建Docker镜像,那么我们的工作就能得到进一步的简化。经过调研,以下几款Maven的Docker插件进入笔者视野,如表13-1所示。表13-1 Maven的Docker插件列表插件名称 官方地址 docker-maven-plugin https://github.com/spotify/docker-maven-plugin docker-maven-plugin https://githu

2021-01-19 22:43:00 39

转载 Idea配置热部署

Idea配置热部署一、概念热部署就是正在运行状态的应用,修改了他的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效。热部署为了解决的问题有两个, 一是在开发的时候,修改代码后不需要重启应用就能看到效果,大大提升开发效率;二是生产上运行的程序,可以在不停止运行的情况下进行升级,不影响用户使用。二、Idea开启热部署本篇文章主要是介绍Idea这款开发工具的热部署,而用Idea的人大多数都是用来开发java程序,当前流行的java程序主要有两种,第一种是传统的

2021-01-19 21:51:16 37

转载 SpringBoot自定配置原理

前言package com.mmall;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringAppli

2021-01-17 17:17:03 53

转载 Spring @Conditional注解 详细讲解及示例

前言:@Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。@Conditional的定义://此注解可以标注在类和方法上@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME) @Documentedpublic @interface Conditional { Class<? extends Cond

2021-01-16 19:09:55 35 1

转载 Spring Profile

一、简介Profile的意思是配置,对于应用程序来说,不同的环境需要不同的配置。比如:开发环境,应用需要连接一个可供调试的数据库单机进程 生产环境,应用需要使用正式发布的数据库,通常是高可用的集群 测试环境,应用只需要使用内存式的模拟数据库Spring框架提供了多profile的管理功能,我们可以使用profile功能来区分不同环境的配置。二、 区分Bean对象首先,我们先看看如何基于Profile来定义一个Bean。通过@Profile注解可以为一个Bean赋予对应的profi

2021-01-16 17:33:27 20

转载 spring @Enable*注解工作原理

1.@enable*注解的工作原理通过观察这些@enable*注解的源码,我们发现所有注解都有一个@Import注解,这个注解用来导入配置类的,这也就意味着这些自动开启的实现是导入了一些自动配置的bean.这些导入的配置方式分为以下三种类型.第一类:直接导入配置类直接导入配置类SchedulingConfiguration,这个类注解了@Configuration,且注册了一个scheduledAnnotationProcessor的bean,源码如下第二类:依据条件选择配置类

2021-01-16 14:41:29 42

转载 redis的五种数据结构原理分析

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs和 地理空间(geospatial) 索引半径查询。简单来说,Redis的数据结构主要分为五种基本的数据结构+三种高级的数据结构。我们下面所要介绍的就是这五种基本的数据...

2021-01-11 22:51:08 53

转载 Redis三种模式对比

模式类型主从模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后)主从模式原理同Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。优点:1、解决数据备份问题..

2021-01-10 21:33:17 38

转载 Redis主从复制原理

和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。复制过程从节点执行 slaveof 命令。 从节点只是保存了 slaveof 命令中主节点的信息,并没有立即发起复制。 从节点内部的定时任务发现有主节点的信息,开始使用 socket 连接主节点。 ...

2021-01-10 12:15:41 59

转载 redis过期策略及定期策略配置

redis服务器实际使用的过期键删除策略有两种:定期删除 惰性删除redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定时遍历这个字典来删除到期的 key。除了定时遍历之外,它还会使用惰性策略来删除过期的 key,所谓惰性策略就是在客户端访问这个 key 的时候,redis 对 key 的过期时间进行检查,如果过期了就立即删除。定时删除是集中处理,惰性删除是零散处理。通过配合使用这两种删除策略,服务器可以很好地合理使用cpu时间和避免浪费内存空间之间取得平衡。1.定期

2021-01-06 22:47:09 111

转载 解读I/O多路复用技术

前言当我们要编写一个echo服务器程序的时候,需要对用户从标准输入键入的交互命令做出响应。在这种情况下,服务器必须响应两个相互独立的I/O事件:1)网络客户端发起网络连接请求,2)用户在键盘上键入命令行。我们先等待哪个事件呢?没有哪个选择是理想的。如果在acceptor中等待一个连接请求,我们就不能响应输入的命令。类似地,如果在read中等待一个输入命令,我们就不能响应任何连接请求。针对这种困境的一个解决办法就是I/O多路复用技术。基本思路就是使用select函数,要求内核挂起进程,只有在一个或多个I/

2021-01-04 22:51:02 45

转载 ANSI是什么编码?

用Notepad++创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII呢),输入汉字居然不是乱码:保存为test.txt,发送给你美国的同事Bob。他也用Notepad++,不幸的是,却发现你的文件内容是这样的:也许你会认为:你用的是中文系统,能正常显示中文;他用的是英文系统,不能显示中文!这么想,好像很有道理呢!但是再细想一下:一个系统显示乱码,说明它不支持这种编码格式(或者解码方式不对)。难道英文系统不支持ANSI?难道ANSI是一种中文编码

2021-01-03 15:34:58 141

转载 css中img{display:block;}是什么意思

img{display:block;}表示将img标签,也就是图片标签变成一个区块标签是分成 区块 和 内联块 2种一个标签显示一行的称为 区块,如(段落P,标题H系列,DIV等)(你没见过在2个P标签放在一行能显示的情况吧)?若标签能在一行显示N个,表明此标签为 内联块,如(<a>,<img>,<input>)区块和内联块最大的区别就是,区块可以设置宽、高、居中对齐等操作,而内联块不行也就是说,当你需要将一张图片居中,或者要设置区域大小,或单独一.

2021-01-03 14:54:55 111

转载 servlet的动态注册

说实话,对servlet 3动态加载servlet的机制有些失望,本来期望着可以在运行时完成对servlet的注册和销毁,但现状是,只能在webapp启动在初始化时进行完成注册,可能是为了安全考虑吧。在Servlet3.0中可以动态注册Servlet,Filter,Listener,在ServletContext对应注册API为:/** * 添加Servlet */ public ServletRegistration.Dynamic addServlet(String serv

2020-12-22 20:50:18 50

转载 Base64编码出现换行符

概述Base64是一种字符串编码格式,Base64采用A-Z a-z 0-9 “+“ “/“这一共64个字符来编码原始字符(还有垫字符“=“)。一个字符本身是1个字节,也就是8位,而Base64编码后的一个字符只能表示能表示6位的信息。也就是原始字符串中3字节的信息编码会变成4字节的信息。Base64的主要作用是满足MIME传输需求,在传输过程中都是用ASCII支持的可见字符。Base64是基于字节的编码,所以不同字符集下的相同字符在Base64下可能有着不同编码问题描述在进过Base64编码后的字符

2020-12-20 16:12:20 64

转载 OAuth 2和JWT - 如何设计安全的API?

OAuth 2和JWT - 如何设计安全的API?Moakap译,原文OAuth 2 VS JSON Web Tokens: How to secure an API本文会详细描述两种通用的保证API安全性的方法:OAuth2和JSON Web Token (JWT)假设:你已经或者正在实现API; 你正在考虑选择一个合适的方法保证API的安全性;JWT和OAuth2比较?要比较JWT和OAuth2?首先要明白一点就是,这两个根本没有可比性,是两个完全不同的东西。 JWT是一.

2020-12-17 22:44:18 57

转载 什么是 JWT -- JSON WEB TOKEN

什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。起源说起JWT,我们应该来谈一谈基于token的认证和传统的session认证的

2020-12-17 22:34:52 41

数据结构试验报告

数据结构试验报告,里面有线性表,树的遍历,图的遍历,排序等代码

2013-01-10

c语言指针详解

c和指针这本书,有助于学号c语言,精通c预言的精髓指针,一本很精点的书

2013-01-19

TCP/IP详解

这是tcp、ip实现的代码,希望能给网络爱好者带来帮助,大家一起学习。

2013-05-18

c++ GUI Qt 编程

这是学习Qt的景点书籍,主要涉及的只是是c++,希望能给你们带来帮助。大家一起努力学习

2013-05-18

基于VC++的MP3

这是基于MFC做的MP3,希望能能给初学者带来好处,大家一起进步

2013-01-10

波波仔86的留言板

发表于 2020-01-02 最后回复 2020-01-02

怎么连不上网易邮箱的服务器呢

发表于 2012-12-29 最后回复 2014-12-30

求助ZStack

发表于 2013-03-18 最后回复 2013-03-24

求大神

发表于 2012-12-26 最后回复 2012-12-29

Visual C++网络编程经典案列详解里的邮件收发器

发表于 2012-12-26 最后回复 2012-12-28

请教MFC网络编程的邮件收发的问题

发表于 2012-12-26 最后回复 2012-12-26

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

TA关注的人 TA的粉丝

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