04 2020 档案
摘要:添加依赖 如果使用的是Springboot就不需要手动添加依赖了。Springboot已经依赖了。 参数检验的使用 注解名 | 含义 | AssertFalse| 带注释的元素必须为false AssertTrue| 带注释的元素必须为true DecimalMax| 带注释的元素必须是一个数字,其
阅读全文
摘要:下载mongodb https://www.mongodb.com/download center/community 安装mongodb mongod 和mongo命令的作用不一样,在这里捯饬了半小时。 配置权限
阅读全文
摘要:缓存雪崩 产生原因 我们都知道Redis不可能把所有的数据都缓存起来,所以Redis需要对数据设置过期时间,并采用的是惰性删除( 放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,那就返回该键 )+定期删除两种策略对过期键删除。如果缓存数据设
阅读全文
摘要:RDB 简介 RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。 两种触发方式 手动触发 save: 该命令会阻塞redis,在sava期间,不能执行其他命令,直到持久化完成。 bgsave: 该命
阅读全文
摘要:搭建主从复制 简介 主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,mester以写为主,slaver以读为主。原则上是配从不配主。 搭建主从复制 新建三个文件夹:redis8000、redis8001、redis8002 将redis.conf复制到redis8000
阅读全文
摘要:Jedis和Lettuce Springboot2.x之后连接Redis默认使用的是Lettuce,2.x之前默认使用的是Jedis。 Jedis Jedis在实现上是直接连接的Redis Server,如果在多线程环境下是非线程安全的。每个线程都去拿自己的 Jedis 实例,当连接数量增多时,资源
阅读全文
摘要:简介 完全开源免费的,用C语言编写的,是一个高性能的(key/value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库。 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings,
阅读全文
摘要:多线程Join的理解 开发中使用多线程也非常少,之前因为有一个调取两个摄像头获取每帧进行活体检测时候,有人给了思路说到Join这个关键字,我才仔细的研究了一下这个。以前理解的意思是:使用join关键字,就是相当于调用join的线程如果没有执行完毕,其他线程都处于等待状态。这就相当是把线程串起来了
阅读全文
摘要:死信队列的作用 死信交换机有什么用呢? 在创建队列的时候 可以给这个队列附带一个交换机, 那么这个队列作废的消息就会被重新发到附带的交换机,然后让这个交换机重新路由这条消息。 死信消息产生的来源 消息被拒绝(basic.reject或basic.nack)并且requeue=false 消息TTL过
阅读全文
摘要:代码整合 maven依赖 yml配置 配置DirectConfig 发送方配置 消费者 其他的几种方式都类似。 消息的手动签收、消息退回、消息的回调 yml增加 增加RabbitMq配置 增加回调类 发送方增加一个CorrelationData 每个发送的消息都需要配备一个 CorrelationD
阅读全文
摘要:基本概念 Broker : 和AMQP里协议的概念一样, 就是消息中间件所在的服务器 Topic(主题) : 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的T
阅读全文
摘要:Exclusive Consumer: 独有消费者:Queue中的消息是按照顺序被分发到consumer的,然而,当你有多个consumers同时从相同的queue中提取消息时,你将失去这个保证。因为这些消息是被多个线程并发的处理。有的时候,保证消息按照顺序处理是很重要的。例如:你可能不希望在插入订
阅读全文
摘要:Messaage Properties: ActiveMQ支持很多消息属性,具体可以参考 http://activemq.apache.org/activemq message properties.html 常见得一些属性说明: 1. queue得消息默认是持久化得 2. 消息得优先级默认是4.
阅读全文
摘要:Message Cursors ActiveMQ发送持久消息的典型处理方式是:当消息的消费者准备就绪时,消息发送系统把存储的消息按批次发送给消费者,在发送完一个批次的消息后,指针的标记位置指向下 批次待发送消息的位置,进行后续的发送操作。这是一种比较健壮和灵活的消息发送方式,但大多数情况下,消息的消
阅读全文
摘要:Wildcards(通配符) Wildcars用来支持名字分层体系,它不是JMS规范的一部分,是ActiveMQ的扩展。 ActiveMQ支持以下三种通配符: ".":用于作为路径上名字间的分隔符 " ":用于递归的匹配任何以这个名字开始的Destination(目的地) " ":用于作为路径上任何
阅读全文
摘要:启动多实例 networkConnector: 在某些场景下,需要多个ActiveMQ的Broker做集群,那么就涉及到Broker到Broker的通信,这个被称为ActiveMQ的networkConnector。 ActiveMQ的ne tworkConnector默认是单向的,一 个Broke
阅读全文
摘要:消息存储持久化: ActiveMQ不仅支持persistent和non persistent两种方式,还支持消息的恢复( recovery )方式 PTP: Queue的存储是很简单的,就是 一个FIFO的Queue PUB/SUB: 对于持久化订阅主题,每一个消费者将获得一个消息的复制。 有效的消
阅读全文
摘要:什么是JMS JMS(Java Message Service)是一种与厂商无关的 API,用来访问消息收发系统消息。它类似于JDBC(Java DatabaseConnectivity):这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问
阅读全文
摘要:ActiveMQ简介 ActiveMQ是什么 ActiveMQ是Apache推出的一款开源的,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现的消息中间件(Message Oriented Middleware,MOM) ActiveMQ能干什么 最主要的功能就是:实现JMS
阅读全文
摘要:RabbitMQ相关概念 RabbitMQ是一个Erlang开发的AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的开源实现。是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在。
阅读全文
摘要:一、安装软件准备 "RabbitMq下载地址" "Erlang下载地址" "RabbitMq和Erlang版本关联地址" 二、windows环境下的安装 安装Erlang 安装RabbitMQ 启动Rabbitmq 点击 输入命令:rabbitmq plugins enable rabbitmq_m
阅读全文
摘要:一、kafka优点 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。 可扩展性:kafka集群支持热扩展 持久性、可靠性:消息被持久化到本地磁盘,并且
阅读全文
摘要:一 下载kafka "下载地址:" 记住 千万不能下载源码,下载编译过的 二 Linux安装kafka 将kafka上传到 Linux里面并解压,kafka需要JDK的环境。 配置config下面的server.properties文件 三 kafka的一些基本命令 四 docker安装kafka
阅读全文
摘要:"kafka node地址:" 下面代码只是消费信息的 估计后面再真正生产中可能会出现别的问题,后续在接着记录 最近几天出现了重复消费信息和消息丢失的情况。主要原因是因为node.js是异步的,而且出现错误就导致项目停止,这样被消费的消息就没办法提交。还有就是会出现重复的offset信息。本身对ka
阅读全文
摘要:一、Config简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。市面上开源的配置中心有很多。如:360的QConf、淘宝的diamond、百度的disconf都是解决这类问题。国外也有很多开源的配置中心Apache的Apache Commo
阅读全文
摘要:一、什么是Zuul Zuul作为微服务系统的网关组件。所有从设备或网站来的请求都会经过Zuul到达后端,用于构建边界服务,致力于动态路由、过滤、监控、弹性伸缩和安全。Zuul底层利用各种filter来实现如:认证和安全、性能检测、动态路由、压力测试、负载均衡、静态资源处理。 二、Zuul和Nginx
阅读全文
摘要:一、Hystrix介绍 Hystrix是一个延迟容错库。在分布式环境中,许多服务依赖项中的一些不可避免地会失败。如果这时候有大量的请求请求这个故障的服务,由于服务之间的依赖关系,故障会进行蔓延,这时候会导致调用服务自身也出现不可用的情况,使用Hystrix可以解决这个问题。当某个服务发生故障(类似用
阅读全文
摘要:一、Feign是什么? Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单,它的使用方法就是定义一个接口,然后在上面添加注解,同时也支持JAX RS标准的注解。Feign也支持可插拔式的编码器和解码器。SpringCloud对Feign进行了
阅读全文
摘要:一、负载均衡是什么? 在以前,项目访问量非常大的时候,往往一台服务器无法承载这么大的压力。一般采用的是服务器集群来缓解服务器压力。但是多个服务器又这么连接那?这时候就可以通过负载均衡来实现。负载均衡:就是通过一个代理服务器,代理服务器在通过算法来访问服务器集群中的一台服务器。最初我们实现负载均衡的方
阅读全文
摘要:一、Consul的安装与配置 之前有文章记录过如何配置 二、服务的注册 引入Maven依赖 服务发现 yml配置 测试Demo 三、启动 启动两个客户端 通过ip:8500查询Consul ui页面 查看实例
阅读全文
摘要:一、Eureka服务端 "官方文档" 引入maven依赖 激活eureka服务 配置eureka 启动 如果在配置eureka的时候没有加上register with eureka: false、fetch registry: false,启动过一小会,会看到控制台报错。但是不影响运行 。 通过异常
阅读全文
摘要:Mycat环境搭建 "Mycat下载地址" "Mycat文档" 接着前面已经搭建好的Mysql主从复制开始 查看,wrapper.log。出现下图就是启动成功了 然后进入conf目录下 配置schema.xml 配置server.xml | 属性 | 值 | | | | | 客户端连接端口号 | 8
阅读全文
摘要:整合SpringBoot Maven application.yml 启动入口文件 配置文件 生产者 QueueConsumer TopicConsumer 使用java构建一个broker 单机创建 将之前单机版点对点的连接地址修改就可以看到效果了 BrokerFactory创建 需要在src下创
阅读全文
摘要:一、Dockerfile学习 由一系列的参数和命令构成的脚本。这些命令应用于基础镜像并最终创建一个新的镜像。基础镜像就是操作系统级别的镜像。 常用命令 |FROM image_name:tag|定义了使用哪个基础镜像启动构建流程 | | |MAINTAINER user_name|声明镜像的创建者
阅读全文
摘要:一 部署Mysql 33306是宿主机的端口,3306是docker的端口,MMYSQL_ROOT_PASSWORD指定Mysql ,root的密码 二 部署tomcat 这样直接访问,会出现这样的原因是我的tomcat镜像不正确导致的。tocmat镜像拉取正确的话,直接访问也是无法看到tomcat
阅读全文
摘要:一 docker是什么? docker是目前比较火的容器引擎,开发者可以打包应用以及依赖到可移植的容器中,然后发布到任何流行的Linux容器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口。 二 安装docker 三 设置docker为国内镜像 设置docker国内镜像,不然拉取一
阅读全文
摘要:ELK下载 https://www.elastic.co/cn/downloads/ Elasticsearch搭建 "Elasticsearch" "集群" Logstash搭建 因为没有真实的环境的,我就手动上传了两个log日志文件做测试使用 在Logstash/config下面新增一个配置文件
阅读全文
摘要:一、Maven依赖 二、开始之前的准备 "官方文档" 三、关于索引的操作 "官方文档" 新增索引 查询指定索引 删除索引 四、关于文档的操作 "官方文档" 创建文档 根据文档ID查询文档 更新文档 删除文档 查询文档
阅读全文
摘要:一、集群的一些概念 集群 一个集群cluster由一个或者多个节点组成,具有相同的cluster.name,协同工作,分项数据和负载。当有新的节点加入或者删除了一个节点时,集群回感知到并能够平衡数据。ElasticSearch中可以监控很多信息,有一个最重要的就是集群健康。集群健康有三个状态:gre
阅读全文
摘要:一、ES一些概念 索引 _inde,文档存储的地方,类似于关系型数据中的数据库。 事实上,数据被存储和索引在分片中,索引仅仅是一个把一个或者多个分片分组在一起的逻辑空间。 索引名字必须是全部小写,不允许以下划线开头,不能包含逗号。 文档 文档id是一个字符串,与_index组合时,就可以在Elast
阅读全文
摘要:一、Elasticsearch介绍 之前有学习使用过Solr。Elasticsearch也是基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的
阅读全文
摘要:简述 前面从新回顾学习了Solr,正好也借此机会顺便学习一下Lucene。 一、什么是Lucene? 全文检索的一个实现方式,也是非结构化数据查询的方法。应用场景:在数据量大,数据结构不固定的时候,采用Lucene,比如百度、Google等搜索引擎,网站的站内搜索,电商平台的商品检索等。 二、Luc
阅读全文
摘要:学习的原因: 17年的时候有学习使用过lucene和solr,但是后来也遗忘了,最近公司有个项目需要使用到全文检索,正好也顺便跟着学习一下,使用的版本是Solr7.4的, solr解压之后的目录结构: 各文件夹里面的内容: solr从5版本之后不再需要tomcat,使用内置的jetty启动。 下面开
阅读全文
摘要:一、下载Mysql "Mysql下载地址:" 二、卸载Linux自带的mariadb 安装Mysql之前需要卸载mariadb的安装包 三、解压Mysql 下载完成之后通过FTP到Linux里面, 解压Mysql 四、依次安装所需RPM 五、以此执行初始化命令 使用命令登录Mysql 密码就是刚刚查
阅读全文
摘要:1、安装Consul 2、解压consul_0.7.5_linux_amd64.zip 3、执行以下 ./consul 看是否安装成功(是一个启动文件,不是一个目录) 4、启动consul 我的ip地址是192.168.100.129 5、访问consul 6.使用PostMan 注册Http服务
阅读全文
摘要:一、下载Nginx "Nginx下载地址" Nginx是C语言开发的,建议在Linux上运行。由于Nginx的一些模块依赖一些lib,所以在安装nginx之前需要安装如下依赖库 二、将下载好的Nginx通过ftp上传到Linux里面并解压 三、编译Nginx 接下来安装,使用 prefix参数指定n
阅读全文
摘要:一、下载Redis "Redis下载地址" 二、安装依赖包 安装Redis之前需要安装c++命令 三、上传并解压 四、编译Redis 五、Redis的一些配置 如果想后台启动、远程连接、不需要密码启动。需要修改redis.conf文件 将redis.conf文件复制到编译后的redis里面,并启动
阅读全文
摘要:在安装JDk之前将Linux自带的JDK卸载 查询是否携带JDK rpm qa | grep java 删除自带的JDK rpm e nodeps jdk文件 将下载好的JDK传到Linux、 解压JDK tar xvf 文件名称 配置Path vim /etc/profile ~~~ export
阅读全文
摘要:1、配置Vm网络编辑器 2、配置固定IP地址 3、配置网络工作 4、配置公共DNS服务 5、关闭防火墙 6、重启网络服务 总结:上面配置不一定全部适用,再次也是为了记录防止以后用到。
阅读全文
摘要:一、Apollo地址 "Apollo源码及简介" 、 "Apollo配置中心" 、 "Apollo设计原理" "java使用指南" 二、Apollo环境搭建 1、下载配置中心 2、执行两个sql文件:apolloconfigdb(存放配置文件信息)、apolloportaldb(网站信息) 3、下载
阅读全文
摘要:Mysql环境准备 配置Mysql 报错。原因:原因是/var/lib/mysql的访问权限问题。 Mysql主从复制原理 ==MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现。其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现
阅读全文
摘要:一、环境准备 ==CentOS7.3,zookeeper 3.4.14,jdk1.8== "zookeeper下载地址" 二、开始搭建 搭建之前,配置好JDK的环境 安装zookeeper 通过FTP将zookeeper上传到服务器上 3、启动集群 进入各个节点/bin目录下 4、集群是否同步 进入
阅读全文
摘要:一、Redis集群的简单介绍 Redis 集群是一个提供在多个Redis节点之间共享数据的程序集。Redis 集群并不支持同时处理多个键的 Redis 命令,因为这需要在多个节点间移动数据,这样会降低redis集群的性能,在高负载的情况下可能会导致不可预料的错误。Redis 集群通过分区来提供一定程
阅读全文
摘要:说一说为啥要要图片下载? 项目需要从甲方提供的数据中心拉取到图片然后推送给硬件平台,但是甲方使用的图片多是没有后缀名的,比如http://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=,硬件平台要求的是.jpg或者png的。 代码
阅读全文
摘要:后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源 前端路由:对于单页面应用程序来说,主要通过URL中的hash( 号)来实现不同页面之间的切换,同时,hash有一个特点:HTTP请求中不会包含hash相关的内容;所以,单页面程序中的页面跳转主要用hash
阅读全文
摘要:一、过滤器 vue中的过滤器分为两种,分为私有和全局的。私有的过滤器只能在当前的vum控制view区域使用。下面主要学习全局过滤器的使用。全局过滤器不可以放在vue示例下面。 过滤器可以用在两个地方:mustache插值和v bind表达式,过滤器调用时候的格式{{ name | 过滤器的名称 }}
阅读全文
摘要:一、什么是组件 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可; 组件化和模块化的不同: 模块化: 是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一; 组件化: 是从UI界面的
阅读全文
摘要:事件修饰符 在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation()是非常常见的需求。尽管我们可以在 methods 中轻松实现这点,但更好的方式是:methods 只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。在Vue中,事件修饰
阅读全文
摘要:一 概述 目前前端三大框架中的vue很是大火,而且现在的项目也是前后端分离居多。公司前端主要使用的是vue。如果后端一点前端知识也不懂的话,这样写出来的接口也不是很好。为此也打算简单的学习一下vue,这样在联调接口的时候也可以少出现一点问题,能在书写接口的时候也考虑到前端方面。 二 vue的实例结构
阅读全文
摘要:"java并发网" 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。 Java 关键字vola
阅读全文
摘要:什么是线程池?线程池的好处? 线程池的概念 :线程池就首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执
阅读全文
摘要:正文 之前在项目中与看到过ThreadLocal出现,但是一直不明白什么意思。而且最近也在从新学习多线程。正好有学到ThreadLocal。在次做一个记录。 ThreadLocal是什么意思? ThreadLocal的实例代表了一个线程局部的变量,每条线程都只能看到自己的值,并不会意识到其它的线程中
阅读全文
摘要:java线程的内存模型 java的线程内存模型中定义了每个线程都有一份自己的共享变量副本(本地内存),里面存放自己私有的数据,其他线程不能直接访问,而一些共享变量则存在主内存中,供所有线程访问。 上图中,如果线程A和线程B要进行通信,就要经过主内存,比如线程B要获取线程A修改后的共享变量的值,要经过
阅读全文
摘要:概念 是利用锁的机制来实现同步的。 互斥性: 即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。 可见性: 必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的
阅读全文
摘要:基本概念 程序: 代码,完成某一件任务,代码序列(静态的概念) 进程: 程序在某些数据上的一次运行(动态的概念) 线程: 一个进程可能包含一个或多个线程(占有资源的独立单元) JVM与线程 JVM是在类被调用的时候才会被启动。先有JVM线程,然后才其他(main)线程(JVM创建了其他线程,)。 J
阅读全文
摘要:线程的基本概念 进程与线程 进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称
阅读全文
摘要:Java集合框架的基础接口有哪些? Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接的实现。 Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌 List是一个有序集合,可以包含重复元素
阅读全文
摘要:一个 不包含重复元素 的 collection。更确切地讲,set 不包含满足 的元素对 和 ,并且 最多包含一个 null 元素 。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。 注:如果将可变对象用作 set 元素,那么必须极其小心。如果对象是 set 中某个元素,以一种影响 比较的方
阅读全文
摘要:类图 Iterable 集合框架最顶端的接口,实现接口的遍历。迭代器接口 可进行迭代的接口 ~~~java public interface Iterable { Iterator iterator(); default void forEach(Consumer action) { Objects
阅读全文
摘要:一、前言 前面文章写了关于ArrayList的源码解读,今天也正好把LinkedList一些方法的源码也研究一下。 二、LinkedList特点 基于双向列表,查询速度慢,增删改速度快 三、LinkedList的继承实现关系 LinkedList 是一个继承于AbstractSequentialLi
阅读全文
摘要:LinkedHashMap 概述 LinkedHashMap数据结构相比较于HashMap来说,添加了双向指针,分别指向前一个节点—— before 和后一个节点—— after ,从而将所有的节点已链表的形式串联一起来 ~~~ //HashMap里面的方法在LinkedHashMap进行了重写 v
阅读全文
摘要:Map是一个有键值映射的,但不包括相同key,每个key至多对应一个value。 这个接口替代了Dictionary这个类,Dictionary是抽象类而非接口. 除了一些基本的方法。只要看一下JDK1.8新增的方法 getOrDefault(Object key, V defaultValue)
阅读全文
摘要:概述 HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。 JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化
阅读全文
摘要:一、前言 一直都只是会用ArrayList,对于ArrayList的理解都比较简单。正好借此机会也把自己观看源码的一些理解写出来。方便自己以后回顾。使用的版本是JDK1.8。 二、ArrayList特点 随机访问速度快,插入和移除性能较差(数组的特点),支持null元素,有顺序,元素可以重复,线程不
阅读全文
摘要:二、单机演示Demo == 12、使用UEL表达式动态增加流程处理人 == 从新创建一个流程,使其Assignee变成表达式的。然后从新创建流程。 然后在执行流程 == 13、流程变量 == 13.1什么是流程变量 流程变量在 activiti 中是一个非常重要的角色,流程运转有时需要靠流程变量,业
阅读全文
摘要:一、什么是Activiti? Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超稳定的 BPMN2.0 流程引
阅读全文
摘要:正常导出excel表格使用的poi,但是导出复杂的excel有点困难,但是可以使用freemaker模板来导出复杂的excel。 都是先生成一个Excel表格的模板,最好是增加一行数据。具体看图里面的步骤。 项目整体结构 下面就直接看代码 主要是两个map,一个map是封装模板的位置和生成表格的位置
阅读全文
摘要:将主仓库下载到本地 增加从仓库地址 点击OK 第一次使用这个仓库有可能会让登陆 选择从仓库
阅读全文
摘要:创建Maven就不用多说了,下面直接看Pom.xml里面的依赖吧 配置文件 web.xml applicationContext.xml jdbc.properties log4j.properties Springmvc.xml mybatis config.xml 项目右键→Run As → m
阅读全文
摘要:JDBC JDBC访问数据库的基本步骤是什么? 加载驱动 通过DriverManager对象获取连接对象Connection 通过连接对象获取会话,有2种方式Statement、PreparedStatement; 通过会话进行数据的增删改查,封装对象 关闭资源、关闭会话、关闭连接。 说说prepa
阅读全文
摘要:一、分析对象引用与对象的区别 为了接下来进行更好的分析,我先建立一个Demo类,用于后面的分析。 接下来,我们用Demo类来创建一个对象。 这一条语句,其实包括了四个动作: 1)右边的“new Demo”,是以Demo类为模板,在堆空间里创建一个Demo对象。 2)末尾的()意味着,在对象创建后,立
阅读全文