自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

原创 热部署配置

热部署配置** 1.在子工程中的pom里添加依赖**在子类添加该依赖 <!--热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime<

2020-11-05 12:48:01 320

原创 Activiti

1.Activiti中个人任务分配1.1分配任务负责人:1.1.1 固定分配,每一个任务都是固定的人进行执行1.1.2 表达式分配:UEL表达式,统一表达式语言,在activiti当中支持两种形式,一种是value,另外一种是method形式1.1.3 创建流程图,给每一个环节制定assignee值,通过UEL表达式分配任务负责人1.1.4 流程部署1.1.5 创建流程实例,制定任务...

2020-04-06 17:55:54 199

原创 Activiti流程部署

一.流程部署/*** 压缩包的方式部署流程*/@Testpublic void deploymentByZip(){//获取processEngine对象ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取一个RepositoryService对象RepositoryService ...

2020-04-02 14:10:44 209

原创 Activiti7

一.Activiti7体系架构通过加载activiti.cfg.xml文件得到ProcessEngineConfiguration对象,通过ProcessEngineConfiguration对象可以得到ProcessEngine对象得到该对象后,可以通过流程引擎对象ProcessEngine来得到各种Service,每一种Service接口有每个用途RepositoryService ac...

2020-04-01 16:39:25 398

原创 工作流简介

一. 工作流1.1 工作流介绍工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者 之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标, 或者促使此目标的实现”。1.2 工作流系统一个软件系统中具有工作流的功能,我们把它称为工作流系统,一个系统中工作流的功能是什 么?就是对系统的业务流程进行自动化管理,...

2020-03-30 21:32:58 551

原创 并发编程面试题

1.进程和线程还有协程之间的关系进程在程序运行,进程需要占用系统资源()2.并发和并行之间的区别并发:指统一时间内,宏观上处理多个任务并行:指统一时间内,真正上处理多个任务3.Java中多线程实现的方式继承Thread类,实现Runable接口,但是除以上两种方法外,还可以通过Callable创建一个带返回值的线程,可以通过线程池进行线程创建4.Callable和Future模式...

2020-03-28 19:39:47 487

原创 重排序和先行发生

一.volatile关键字有什么用途,和Synchronize有什么区别volatile是一个轻量级的Synchronize,保证了共享变量的可见性,能够防止脏读,被volatile关键字修饰的变量,如果值发生了改变,其他线程立刻可见volatile能保证数据可见性,但是无法保证数据的原子性Synchronize既能保证数据可见,也能保证数据原子性场景:1.volatile关键字不能修饰...

2020-03-28 18:44:14 317

原创

1.锁是干什么用的锁一般来说用作资源控制,限制资源访问,防止在并发环境下造成数据错误2.重入锁重入锁也叫作递归锁,指的是同一个线程外层函数获取到一把锁后,内层函数同样具有这把锁的控制权限synchronized和ReentrantLock就是重入锁对应的实现synchronized重量级的锁ReentrantLock轻量级的锁lock()代表加入锁unlock()代表释放锁不可重...

2020-03-25 16:05:16 91

原创 Callable的Future模式

线程实现方式:1.继承Thread类2.实现Runnable接口3.线程池4.Callable无论使用继承Thread类还是实现Runnable接口,还是使用线程池都没有办法解决2个问题1.线程执行没有返回值结果2.线程执行没有办法抛出异常,只能自己通过try-catch解决Callable和Runnable类似,在JUC包下,主要区别在于Callable中的call方法可以带返回...

2020-03-23 20:55:29 90

原创 并发工具类and如何使用线程池

1.CountDownLatch:可以实现线程计数,阻塞后续线程CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。countDown()实现计数器-1await()等待拦截方法,等待计数器为0时再放行,否则则一直...

2020-03-22 18:03:45 106

原创 并发工具类

1.CountDownLatch:可以实现线程计数,阻塞后续线程CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。countDown()实现计数器-1await()等待拦截方法,等待计数器为0时再放行,否则则一直...

2020-03-19 15:33:03 89

原创 并发编程-问题解决

概述  串行:一个线程在处理操作;并行:多个线程在处理操作;并发编程:在多线程环境下,应用程序的执行;并发编程的目的:同分运用到资源,提供程序的效率什么情况下用到并发编程:1.在线程阻塞时,导致应用程序停止;2.处理任务时间过长,可以创建子任务,来进行分段处理;3.间断任务执行;并发编程中待解决的问题1.并发编程中频繁上下文切换的问题    即使是单核处理器也支持多线程执行代...

2020-03-18 15:56:17 143

原创 HashMap底层源码剖析

HashMap底层源码剖析1.介绍HashMap底层用到的数据结构数组+单向链表+红黑树数组:数组每一项都是一个链表,其实就是数组和链表的结合体单向链表:当法神hash碰撞时,首先会找到数组对应位置,然后1.8采用尾插入法(1.7采用头插入法),形成一个单项链表结构红黑树:当数组中每项的链表长度大于8时,会转换为红黑树2.什么是hash碰撞?解决方案?hash碰撞:不同的key可能会...

2020-03-17 17:11:37 64

原创 Map集合面试题

一.了解Map集合吗?Map集合都有哪些实现1.HashMap HashTable LinkedHashMap TreeMap ConcurrentHashMap二.HashMap和HashTable之间的区别1.HashMap:底层基于数组+单向链表(红黑树),非线程安全,默认容量为16,允许有空的键和值数组:Node<K,V> [] table ,每一个元素...

2020-03-16 18:53:40 196 1

原创 单列集合List

单列集合List1.Vector和ArrayList以及LinkedList区别和联系,以及分别的应用场景  线程安全    Vector:    与ArrayList一样,也是通过数组实现的,不同的它支持线程的同步,底层采用synchronized同步方法进行加锁,所以线程安全;即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访...

2020-03-14 17:23:34 138

原创 JVM类加载机制

JVM类加载机制User java.lang.Class 所有的类都是Class类的对象类加载:由.java源文件编译生成.class二进制字节码文件,当运行时,首先Java虚拟机会将本地/网络阐传输.class文件加载到内存当中,那么加载的过程就叫做类加载一.类加载的过程加载过程:将.class文件通过IO流的方式加载到内存当中1.将.class文件字节码内容加载到内存当中2.先会...

2020-03-12 14:18:34 97

原创 代码优化

1 代码优化优化,不仅仅是在运行环境进行优化,还需要在代码本身做优化,如果代码本身存在性 能问题,那么在其他方面再怎么优化也不可能达到效果优的。1.1 尽可能使用局部变量调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变 量,如静态变量、实例变量等,都在堆中创建,速度较慢。另外,栈中创建的变量,随 着方法的运行结束,这些内容就没了,不需要额外的垃圾回收。1.2 尽量...

2020-03-11 15:25:21 113

原创 JVM字节码

JVM字节码对于程序本身的优化,可以借鉴很多前辈们的经验,但是有些时候,在从源码角度方面 分析的话,不好鉴别出哪个效率高,如对字符串拼接的操作,是直接“+”号拼接效率高还 是使用StringBuilder效率高?这个时候,就需要通过查看编译好的class文件中字节码,就可以找到答案。我们都知道,java编写应用,需要先通过javac命令编译成class文件,再通过jvm执行, jvm执行时是...

2020-03-11 15:15:28 96

原创 Apache JMeter

部署测试用的java web项  1.1 需要有mysql环境rpm -qa | grep -i mysql1.2 找一个sql脚本文件,在Linux服务器上执行      cat dashboard.sql | mysql ‐uroot ‐proot  1.3 执行成功后,数据中有三张表    1.4 部署web应用    1.4.1 进入webapps目录cd apa...

2020-03-10 21:16:30 90

原创 部署安装tomcat

1.安装Tomcat1.1 使用XFTP工具进行文件上传,将tomcat压缩包上传到/usr/local1.2 cd切换到/usr/local目录,然后使用tar -zxvf apache-tomcat-8.5.34.tar.gz解压集合1.3 配置Tomcat用户账号和密码   进入Tomcat的conf目录下cd apache-tomcat-8.5.34/conf/1.4 修改...

2020-03-09 20:57:02 145

原创 生成GC日志

测试代码 public static void main(String[] args) throws InterruptedException { List<Object> list=new ArrayList<>(); while (true){ int sleep=new Random().nextInt(100...

2020-03-09 16:15:23 958 1

原创 JVM垃圾收集器

1.串行垃圾收集器只有一个线程在进行垃圾回收,其他线程都要停止(STW),不适合用在交互性较高的应用当中通过设置VM Options参数制定我们采用串行垃圾收集器,并且打印垃圾收集信息 -XX:+UseSerialGC -XX:+PrintGCDetails -Xms16m -Xmx16mGC日志信息解读:年轻代的内存GC前后的大小:DefNew表示使用的是串行垃圾收集器。4...

2020-03-07 14:49:03 85

原创 监控JVM内存使用情况

监控JVM内存使用情况1.使用jstat命令查看堆内存的使用情况jstat 命令选项 vmid 间隔时间 查询次数1.查看当前进程Class类加载的统计jstat -class *****2.查看编译统计jstat -compiler *****3.查看垃圾回收统计jstat -gc *****S0C S1C S0U S1U EC ...

2020-03-05 15:31:11 528

原创 GC

1.什么是垃圾回收在程序中会产生各种各样的问题,这些数据可能是没有但是一直存在的,就需要把这些无效的资源进行垃圾回收,释放资源1.1C/C++语言的垃圾回收1.1.1 在c/c++语言中,没有垃圾回收机制,是通过new关键字申请内存资源,通过delete关键字释放资源1.1.2 如果程序员在程序中没有鞋delete关键字,那么资源就会一直存在程序中,最终会导致内存溢出1.2 java语言...

2020-03-05 14:36:09 124

原创 JVM垃圾收集器以及内存分配

概述  在JVM中,实现了多种垃圾收集器,包括:串行垃圾收集器,并行垃圾收集器,CMS(并发)垃圾收集器,G1垃圾收集器;1.串行垃圾收集器  串行(Serial)垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,并且java应用中的所有线程都要暂停,等待垃圾回收的完成。这种现象称之为STW  对于交互性较强的应用而言,这种垃圾收集器是不能够接受的;  一般在jav...

2020-03-04 19:03:48 57

原创 JVM

JVM的运行参数在JVM中有很多的参数可以进行设置,这样可以让JVM在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。三种参数类型  1.标椎参数-help-version2.-X参数(非标椎参数)-Xint-Xcomp3.-XX参数(使用率较高)-XX:newSize-XX:+UseSerialGC标准参数  JVM的标椎参数,一般都是很稳定的,在未来的J...

2020-03-03 17:14:27 521

原创 Spring Data ElasticSearch 使用

Spring Data ElasticSearch 使用什么是Spring Data  Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。Spring Data可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD外,还包括分页,排序等一些常用...

2020-03-01 13:33:35 144

原创 利用客户端操作Document文档数据

1.利用客户端操作Document文档数据1.1 创建一个文档{ "mappings":{ "type_table1":{ "properties": { "id":{ "type":"long", "store":true, ...

2020-02-27 15:41:02 152

原创 ElasticSearch

ElasticSearch1.什么是ElasticSearchElaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别*(pb指petabyte,它是较高级的存储单位)*的数据。es也使用Java开发并使用Lucene作为其核心来实 现所有索引和搜索的功能,但是它的目的是通过简单的R...

2020-02-26 17:44:54 148

原创 分析器

1.分析器1.1 默认标准分析器:StandardAnalyzer在外卖创建索引的时候,我们使用到了IndexWriterConfig对象,在我们创建索引的过程中,会经历分析文档步骤,就是分词的步骤,默认采用的标准分析器自动分析1.2 中午分析器:2.索引维护2.1 Fieid域属性分类:2.2 索引添加:2.3 索引修改:2.4 索引删除:3.查询Query子类:TermQ...

2020-02-25 14:49:55 301

原创 全文检索

一.什么是全文索引就是在检索数据,数据的分类:在计算机当中,比如说存在磁盘的文本文档,HTML页面,Word文档1.结构化数据1.1.1:格式固定,长度固定,数据类型固定等等,我们称之为结构化数据从,比如说数据库中的数据。2.非结构化数据1.2.2:word文档,HTML文件,pdf文档,文本文档等等,格式不固定,长度不固定,数据类型不固定,成为非结构化数据3.半结构化数据二.数据...

2020-02-24 15:39:50 128

原创 mysql

概念   MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,...

2020-02-23 13:08:53 84

原创 索引

添加测试数据/*部门表*/CREATE TABLE dept( deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*编号*/dname VARCHAR(20) NOT NULL DEFAULT "", /*名称*/loc VARCHAR(13) NOT NULL DEFAULT "" /*地点*/) ENGINE=MYISAM ...

2020-02-20 15:54:00 82

原创 优化MySQL

优化MySQL1.三大范式第一范式:保证每一列的原子性,不可再分第二范式:在第一范式的前提下,保证一张表只描叙一件事情,每个列都和主键相关,一张表只描叙一件事情第三范式:在第二范式的前提下,保证每个列都和主建直接相关2.分库分表:mycat分布式项目,每一个模块是一个工程,进行分库,一个数据库对应一个模块优点:1.拆分之后业务更加清晰,拆分规则更加明确2.系统之间整合或者扩展更加...

2020-02-19 13:46:20 83

原创 RocketMQ解决幂等性问题

RocketMQ解决幂等性问题在什么情况下会发生RocketMQ的消息重复消费  1.当系统的调用链路比较长的时候,比如系统A调用系统B,系统B再把消息发送到RocketMQ中,在系统A调用系统B的时候,如果系统B处理成功,但是迟迟没有将调用成功的结果返回给系统A的时候,系统A就会尝试重新发起请求给系统B,造成系统B重复处理,发起多条消息给RocketMQ造成重复消费;2.在系统B发送给Ro...

2020-02-18 21:41:15 1570

原创 RocketMQ

RocketMQ:  支持集群,效率高,同时支持上万队列,支持消息持久化,重试机制等等;RocketMQ包含的组件NameServer:单点,供Producer和Consumer获取Broker地址Producer:产生并发送消息Consumer:接受并消费消息Broker:消息暂存,消息转发RocketMQ优点强调集群无单点,可扩展任意一点高可用,水平可扩展海量消息堆积能力,...

2020-02-17 20:31:24 72

原创 ActiveMQ高级

设置持久化l默认不持久化(默认是1),正常的开发模式当中,是需要持久化的 DeliveryMode.NON_PERSISTENT = 1 不开启持久化 DeliveryMode.PERSISTENT = 2 开启持久化 producer.setDeliveryMode(2);开启持久化使用JDBC持久化步骤一:创建一个数据库步骤二:配置activemq.xml配...

2020-02-15 15:50:41 194

原创 ActiveMQ消息队列

ActiveMQ消息队列传统调用接口:会有是不好的通讯方式和特点,同步请求1.网咯延迟,发生阻塞如果在A调用B的时候,B有延迟,那么A就会一直等待,发生阻塞,等待B工程响应2.超时,重试机制在提交数据的时候,如果存在网络延迟,那么客户端重复点击提交,可能会产生数据不一致3.数据不一致就是说A提交数据,B有延迟没有拿到实时的数据,就会存在数据不一致消息中间建解决高并发,采用两种通...

2020-02-13 16:16:05 266

原创 Session共享

Session共享1.Nginx通过负载均衡IP地址固定绑定,解决Session共享Session解决方案:1.Nginx负载均衡IP地址绑定2.Spring-Session+Redis最好3.cokie保存信息,但是不安全4.tomcat配置session共享1.导入依赖 <dependency> <groupId>javax</gro...

2020-02-12 14:25:15 108

原创 Linux安装Nginx

安装虚拟机前面先安装虚拟机Linux安装Nginx1.1将Nginx素材内容上传到/usr/local目录安装pcre库1.cd到 usr/local/目录下2.tar -zxvf pcre-8.36.tar.gz 解压解压后可以ll下3.cd pcre-8.36目录4. 执行./configure编译 如果报错configure: error: no acceptabl...

2020-02-11 22:16:49 64

空空如也

空空如也

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

TA关注的人

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