摘要: 原子操作:不能被分割(中断)的一个或一系列操作叫原子操作。 原子操作Atomic主要有12个类,4种类型的原子更新方式,原子更新基本类型,原子更新数组,原子更新字段,原子更新引用。Atomic包中的类基本都是使用Unsafe实现的包装类。 基本类型:AtomicInteger,AtomicLong, 阅读全文
posted @ 2019-10-16 10:32 lailailaisunday 阅读(586) 评论(0) 推荐(3) 编辑
摘要: HashMap死锁 在讲解HashMap之前我们先来看看一段代码: 运行这段代码,会发现代码一直处于运行状态,其实就是发生了死锁。(运行环境是jdk1.7)。具体怎么死锁呢,我们下面来具体看看: HashMap在扩容的时候会发生死锁,扩容死锁的代码如下: 假设我们的线程2运行到下面的情况的时候Par 阅读全文
posted @ 2019-10-16 10:31 lailailaisunday 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 线程池 线程池的目的就是减少多线程创建的开销,减少资源的消耗,让系统更加的稳定。在web开发中,服务器会为了一个请求分配一个线程来处理,如果每次请求都创建一个线程,请求结束就销毁这个线程。那么在高并发的情况下,就会有大量线程创建和销毁,这就会降低系统的效率。线程池的诞生就是为了让线程得到重复使用,减 阅读全文
posted @ 2019-10-16 08:42 lailailaisunday 阅读(1171) 评论(0) 推荐(0) 编辑
摘要: 1.安装node环境: 下载地址:https://nodejs.org/download/release/v8.13.0/node-v8.13.0-linux-x64.tar.gz gunzip node-v8.13.0-linux-x64.tar.xz tar -xf node-v8.13.0-l 阅读全文
posted @ 2020-01-02 21:47 lailailaisunday 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 用mac装Linux虚拟机,发现每次启动以后虚拟机的地址都不一样,很难受,被这个静态ip配置把头都搞痛了,下面记录了以下过程: 首先把网络配置改成nat模式 在mac终端到这个目录下 cd /Library/Preferences/VMware\ Fusion/vmnet8 之后先cat nat.c 阅读全文
posted @ 2019-12-30 22:30 lailailaisunday 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 1、下载wlp.zip包:下载地址:https://developer.ibm.com/wasdev/downloads/#asset/runtimes-wlp-javaee8 2、解压 3、启动cmd命令: 进入 wlp/bin 目录:(cd path_to_liberty是我自己的目录) Whe 阅读全文
posted @ 2019-12-30 18:23 lailailaisunday 阅读(2245) 评论(0) 推荐(0) 编辑
摘要: 环境部署 1.服务器准备:centos7.4系统,Jdk1.8 cat /etc/redhat-release。Es6.x 如果是自带的openjdk需要先卸载: rpm -qa|grep java rpm -e –nodeps * 2.ElasticSearch安装:我采用的版本为6.6.0 ht 阅读全文
posted @ 2019-12-29 16:04 lailailaisunday 阅读(1398) 评论(0) 推荐(0) 编辑
摘要: 1.垃圾收集器的种类 垃圾收集算法是内存回收的方法论,垃圾收集器是内存回收的具体实现工具。目前没有万能的垃圾收集器,需要根据具体的应用场景选择合适的垃圾收集器。 1.1Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC) Serial收集器即串行收集器,是最 阅读全文
posted @ 2019-12-10 17:25 lailailaisunday 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 1、JVM内存分配与回收 1.1 对象优先在Eden区进行分配 堆中存储的对象,大多数情况下优先存储在Eden区,当Eden区存满没有足够的空间的时候,虚拟机将进行一次minorGC。当满足一定条件以后,就会进行FullGC。垃圾回收分为minorGC和fullGC两种,下面来看一下这两者的差别: 阅读全文
posted @ 2019-12-06 15:09 lailailaisunday 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 类的加载过程 在使用java命令运行主类(main)的时候,首先要通过类加载器将类加载到JVM内存中去。主类在运行过程中如果用到其他的类就会逐步加载这些类。jar包里的类并不是一次性加载的,是使用的时候才加载的。 类加载过程分为以下几步: 加载 》验证 》准备 》解析 》初始化 》使用 》卸载 1、 阅读全文
posted @ 2019-11-29 17:59 lailailaisunday 阅读(363) 评论(0) 推荐(0) 编辑
摘要: JVM整体结构与内存模型之间的关系 JVM整体结构图如下: 先贴一个代码: 栈(线程) 栈:java虚拟机只要开始运行一个程序的时候就会给这段程序分配一个栈内存区域,专属于这个线程,所以说栈(线程)主要存储的就是属于自己的局部变量的内存区域。以上图代码为例,当我们运行这段代码的时候,java虚拟机就 阅读全文
posted @ 2019-11-27 17:37 lailailaisunday 阅读(262) 评论(0) 推荐(0) 编辑
摘要: ScheduledThreadPoolExecutor ScheduledThreadPoolExecutor继承了ThreadPoolExecutor 实现了ScheduledExecutorService。主要用来处理延时任务和定时任务。 定时线程池的执行原理与一般的线程池执行过程有点差别,具体 阅读全文
posted @ 2019-11-06 17:58 lailailaisunday 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 并发与并行 并发:多个进程交替执行。 并行:多个进程同时进行,不存在线程的上下文切换。 并发与并行的目的都是使CPU的利用率达到最大。Fork/Join就是为了尽可能提高硬件的使用率而应运而生的。 计算密集型与IO密集型 计算密集型:也称之为CPU密集型,此时系统的硬盘,内存性能相对于CPU要很多。 阅读全文
posted @ 2019-10-25 18:58 lailailaisunday 阅读(1353) 评论(1) 推荐(0) 编辑