03 2020 档案

摘要:工作流介绍 工作流就是通过计算机对业务流程自动化执行管理;它主要解决的是“使用多个参与者之间按照某种预定义的规则自动进行传递文档,信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”; 工作流实现方式 在没有专门的工作流引擎之前,我们之前为了实现流程控制,通常的做法就是采用状态字段的 阅读全文
posted @ 2020-03-30 19:30 EXTRA· 阅读(685) 评论(0) 推荐(0)
摘要:一.volatile关键字有什么用途,和Synchronize有什么区别 volatile是一个轻量级的Synchronize,保证了共享变量的可见性,能够防止脏读,被volatile关键字修饰的变量,如果值发生了改变,其他线程立刻可见 volatile能保证数据可见性,但是无法保证数据的原子性 S 阅读全文
posted @ 2020-03-29 17:10 EXTRA· 阅读(291) 评论(0) 推荐(0)
摘要:1.cas无锁机制:CAS:Compare and Swap,即比较再交换。 1.1 Java内存模型:JMM(Java Memory Model) 在内存模型当中定义了一个主内存,所有声明的实例变量都存在于主内存当中,主内存的数据会共享给所有线程,每一个线程有一块工作内存,工作内存当中主内存数据的 阅读全文
posted @ 2020-03-26 19:28 EXTRA· 阅读(195) 评论(0) 推荐(0)
摘要:1.锁是干什么用的 锁一般来说用作资源控制,限制资源访问,防止在并发环境下造成数据错误 2.重入锁 重入锁也叫作递归锁,指的是同一个线程外层函数获取到一把锁后,内层函数同样具有这把锁的控制权限 synchronized和ReentrantLock就是重入锁对应的实现 synchronized重量级的 阅读全文
posted @ 2020-03-25 17:09 EXTRA· 阅读(227) 评论(0) 推荐(0)
摘要:一.Callable的Future模式 线程实现方式: 1.继承Thread类 2.实现Runnable接口 3.线程池 4.Callable 无论使用继承Thread类还是实现Runnable接口,还是使用线程池都没有办法解决2个问题 1.线程执行没有返回值结果 2.线程执行没有办法抛出异常,只能 阅读全文
posted @ 2020-03-23 19:26 EXTRA· 阅读(131) 评论(0) 推荐(0)
摘要:1.并发工具类 1.CountDownLatch:可以实现线程计数,阻塞后续线程 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实 阅读全文
posted @ 2020-03-19 16:42 EXTRA· 阅读(181) 评论(0) 推荐(0)
摘要:串行和并行: 串行:一个线程在处理操作 并行:多个线程在处理同一个操作 什么叫做并发编程:在多线程环境下,应用程序的执行 并发编程的目的:充分运用到资源,提高程序的效率 什么情况下用到并发编程: 1.在线程阻塞时,导致应用程序停止 2.处理任务时间过长时,可以创建子任务,来进行分段处理 3.间断任务 阅读全文
posted @ 2020-03-18 14:46 EXTRA· 阅读(115) 评论(0) 推荐(0)
摘要:一.HashMap底层源码剖析 1.介绍HashMap底层用到的数据结构 数组:数组的每一项都是一个链表,其实就是数组和链表的结合体 单向链表:当发生Hash碰撞时,首先会找到数组对应位置,然后1.8采用尾插入法(1.7采用头插入法),形成一个单向链表结构 jdk1.8 后 红黑树:当数组中每项的链 阅读全文
posted @ 2020-03-17 19:28 EXTRA· 阅读(137) 评论(0) 推荐(0)
摘要:一.了解Map集合吗?Map集合都有哪些实现 1.HashMap HashTable LinkedHashMap TreeMap ConcurrentHashMap 二.HashMap和HashTable之间的区别 1.HashMap:底层基于数组+单向链表(红黑树),非线程安全,默认容量为16,允 阅读全文
posted @ 2020-03-16 19:38 EXTRA· 阅读(151) 评论(0) 推荐(0)
摘要:Vector和ArrayList以及LinkedList区别和联系,以及分别的应用场景 线程安全: Vector:如果创建Vector时没有指定容量,则默认容量为10,底层基于数组实现,线程是安全的,底层采用synchronized同步方法进行加锁 ArrayList:底层基于数组,线程不安全,查询 阅读全文
posted @ 2020-03-15 19:17 EXTRA· 阅读(256) 评论(0) 推荐(0)
摘要:一、类加载机制 JVM把class文件加载到内存,并对数据进行校验、准备、解析、初始化,最终形成JVM可以直接使用的Java类型的过程。‘ 类加载全过程 1、加载 将class字节码文件加载到内存中,并将这些数据转换成方法区中的运行时数据(静态变量、静态代码块、常量池等),在堆中生成一个Class类 阅读全文
posted @ 2020-03-12 17:41 EXTRA· 阅读(143) 评论(0) 推荐(0)
摘要:一.字节码查看 将.java源文件编译成.class二进制字节码文件,运行该字节码文件 1.将class字节码文件内容输出到文本文件当中 javap -v xxx.class > xxx.txt 第一个部分: 显示生成class的java源文件的基本信息 Classfile /C:/Users/FL 阅读全文
posted @ 2020-03-11 15:13 EXTRA· 阅读(313) 评论(0) 推荐(0)
摘要:一.Tomcat压力测试,通过调整参数以及配置优化Tomcat 1.部署一个web工程,测试访问 1.1.1 将SQL脚本执行,生成对应的数据库 将SQL脚本上传到服务器,通过 cat 脚本.sql | mysql -uroot -p 1.1.2 部署项目 找到项目,修改jdbc.propertie 阅读全文
posted @ 2020-03-10 17:01 EXTRA· 阅读(581) 评论(0) 推荐(0)
摘要:GC日志 一.生成GC日志-XX:+UseG1GC 代表使用G1垃圾收集器-XX:MaxGCPauseMillis=100 垃圾收集最大停顿时间-Xmx256m 代表堆内存最大大小-XX:+PrintGCDetails 输出GC详细信息-XX:+PrintGCTimeStamps 打印GC时间戳-X 阅读全文
posted @ 2020-03-09 17:01 EXTRA· 阅读(555) 评论(0) 推荐(0)
摘要:1.串行垃圾收集器 只有一个线程在进行垃圾回收,其他线程都要停止(STW),不适合用在交互性较高的应用当中 通过设置VM Options参数制定我们采用串行垃圾收集器,并且打印垃圾收集信息 -XX:+UseSerialGC -XX:+PrintGCDetails -Xms16m -Xmx16m 2. 阅读全文
posted @ 2020-03-06 16:33 EXTRA· 阅读(135) 评论(0) 推荐(0)
摘要:概述 VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。 VisualVM使用简单,几乎0配置,功能还是比较丰富的,几乎囊括了其它JDK自带命令的所有功能。 内存信息 线程信息 阅读全文
posted @ 2020-03-05 16:18 EXTRA· 阅读(1682) 评论(0) 推荐(0)
摘要:1.什么是垃圾回收 程序运行会产生各种各种的数据,那么这些数据存在于内存当中,这些数据不可能是永久存在的,无效的资源对象需要进行垃圾回收,释放内存 2.不同的编程语言都有GC垃圾回收 java语言自带GC垃圾回收器,并且有JVM自动进行垃圾回收,程序员主要关注代码实现,不关注垃圾回收 System. 阅读全文
posted @ 2020-03-05 16:09 EXTRA· 阅读(122) 评论(0) 推荐(0)
摘要:jstack介绍 jstack是jdk自带的线程堆栈分析工具,使用该命令可以查看或导出 java 应用程序中线程堆栈信息。 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如 阅读全文
posted @ 2020-03-04 16:01 EXTRA· 阅读(853) 评论(0) 推荐(0)
摘要:为什么要学习JVM优化 JVM被称为Java虚拟机,所有Java程序的运行都依赖于JVM 1.应用运行一段时间后突然停止,程序没有响应 2.服务器的CPU突然升高 3.在多线程应用下,如何去分配线程数量 。。。。。。。。。。。。。。。。。。。。。。。 优化JVM目的是为了让程序运行的更快 JVM运行 阅读全文
posted @ 2020-03-03 22:28 EXTRA· 阅读(125) 评论(0) 推荐(0)