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

浙公网安备 33010602011771号