03 2020 档案
摘要:工作流:一套业务流程 员工编写请假条 >部门经理进行处理 >总经理 >人事登记 数据库中生成记录 工号 姓名 部门编号 请假日期 请假天数 请假事由 状态 001 张三 1 2020年3月30日 3 zxxx 0,1 0代表提交失败 1代表提交成功 部门经理:部门经理的部门编号和审批员工的部门编号要
阅读全文
摘要:一.volatile关键字有什么用途,和Synchronize有什么区别 volatile是一个轻量级的Synchronize,保证了共享变量的可见性,能够防止脏读,被volatile关键字修饰的变量,如果值发生了改变,其他线程立刻可见 volatile能保证数据可见性,但是无法保证数据的原子性 S
阅读全文
摘要:cas无锁机制:CAS:Compare and Swap,即比较再交换。1 .1Java内存模型:JMM(Java Memory Model) 在内存模型当中定义了一个主内存,所有声明的实例变量都存在于主内存当中,主内存的数据会共享给所有线程,每一个线程有一块工作内存,工作内存当中主内存数据的副本
阅读全文
摘要:1.锁是干什么用的 锁一般来说用作资源控制,限制资源访问,防止在并发环境下造成数据错误 2.重入锁 重入锁也叫作递归锁,指的是同一个线程外层函数获取到一把锁后,内层函数同样具有这把锁的控制权限 synchronized和ReentrantLock就是重入锁对应的实现 synchronized重量级的
阅读全文
摘要:并发队列Queue,队列其实就是一个容器 1.同步容器 Vector容器,HashTable容器,都是线程安全 如果同步容器使用foreach迭代过程中修改了元素的值,则会出现ConcurrentModificationException异常 可以使用iterator迭代器解决,但是在多线程并行情况
阅读全文
摘要:线程实现方式: 1.继承Thread类 2.实现Runnable接口 3.线程池 4.Callable 无论使用继承Thread类还是实现Runnable接口,还是使用线程池都没有办法解决2个问题 1.线程执行没有返回值结果 2.线程执行没有办法抛出异常,只能自己通过try-catch解决 Call
阅读全文
摘要:1.并发工具类 1.CountDownLatch:可以实现线程计数,阻塞后续线程 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实
阅读全文
摘要:一、实现多线程的方式:方式一:继承Thread类 a.自定义类继承Thread类 b.在自定义类中重写run()方法 c.创建自定义类的对象 d.启动线程的对象方式二:实现Runnable接口(大多数使用) a.自定义类实现Runnable接口 b.在自定义类中重写run()方法 c.创建自定义类的
阅读全文
摘要:ConcurrentHashMap性能高于HashTable,都能够完成线程安全操作, Hashtable中线程安全使用synchronized同步方法进行加锁操作,如果当前一个线程正在访问该集合,其他线程是无法进行访问的,需要进行等待反之ConcurrentHashMap当中采用分段锁机制 JDK
阅读全文
摘要:有可能问道你都知道哪些常用的Map集合? HashMap、HashTable、LinkedHashMap、ConcurrentHashMap。 Collection集合接口和Map接口有什么关系? 没关系,Collection是List、Set父接口不是Map父接口。 HashMap是线程安全的吗?
阅读全文
摘要:1.单列集合List 1.1 Vector和ArrayList以及LinkedList区别和联系,以及分别的应用场景 线程安全: Vector:如果创建Vector时没有指定容量,则默认容量为10,底层基于数组实现,线程是安全的,底层采用synchronized同步方法进行加锁 /** * Adds
阅读全文
摘要:User java.lang.Class 所有的类都是Class类的对象 类加载:由.java源文件编译生成.class二进制字节码文件,当运行时,首先Java虚拟机会将本地/网络阐传输.class文件加载到内存当中,那么加载的过程就叫做类加载 一.类加载的过程 加载过程:将.class文件通过IO
阅读全文
摘要:3、代码优化 27: getstatic #12 // Field java/lang/System.out:Ljava/io/PrintStream; 30: aload_1 31: invokevirtual #11 // Method java/lang/StringBuilder.toStr
阅读全文
摘要:一.字节码查看 将.java源文件编译成.class二进制字节码文件,运行该字节码文件 1.将class字节码文件内容输出到文本文件当中 javap -v xxx.class > xxx.txt 第一个部分: 显示生成class的java源文件的基本信息 Classfile /C:/Users/FL
阅读全文
摘要:一、部署测试java web项目(压力测试环境搭建) 要想进行对Tomcat的性能进行优化,首先你要有一个部署在Linux之上的Tomcat服务,为了将场景模拟的更贴近真实的开发环境,在tomcat上部署一个可以访问数据库的项目 1、mysql环境 #切换到mysql目录 cd /usr/local
阅读全文
摘要:一.生成GC日志 -XX:+UseG1GC 代表使用G1垃圾收集器 -XX:MaxGCPauseMillis=100 垃圾收集最大停顿时间 -Xmx256m 代表堆内存最大大小 -XX:+PrintGCDetails 输出GC详细信息 -XX:+PrintGCTimeStamps 打印GC时间戳 -
阅读全文
摘要:1.垃圾收集器 1.串行垃圾收集器 只有一个线程在进行垃圾回收,其他线程都要停止(STW),不适合用在交互性较高的应用当中 通过设置VM Options参数制定我们采用串行垃圾收集器,并且打印垃圾收集信息 -XX:+UseSerialGC -XX:+PrintGCDetails -Xms16m -X
阅读全文
摘要:1.JVisual VM工具使用,可以监控到内存,线程等等使用情况,也可以通知JVM进行垃圾回收,还可以生成内存以及线程的详细信息dump,抽样器 2.JVisual vm工具连接远程,通过JMX进行远程连接,远程服务需要开启JMX服务,本地通过JMX远程的端口号进行连接 2.1 配置Tomcat解
阅读全文
摘要:1.使用jstat命令查看堆内存的使用情况 jstat 命令选项 vmid 间隔时间 查询次数 1.查看当前进程Class类加载的统计 jstat -class 14116 2.查看编译统计 jstat -compiler 14116 3.查看垃圾回收统计 jstat -gc 14116 S0C S
阅读全文
摘要:一.Jvm优化第一次 了解下我们为什么要学习 JVM优化 掌握 jvm的运行参数以及参数的设置 掌握 jvm的内存模型(堆内存) 掌握 jamp命令的使用以及通过MAT工具进行分析 掌握定位分析内存溢出的方法 二.为什么要学习JVM优化 JVM被称为Java虚拟机,所有Java程序的运行都依赖于JV
阅读全文
摘要:1、什么是Spring Data Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。 Spring Data可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作
阅读全文
摘要:导入依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>org.elasticsearc
阅读全文