
java
Round_Yuan
世界很无聊,你也很无聊。。。。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【JVM调错】由于GC导致生产环境高CPU错误
在2020年3月时候突然接到用户反映产品很卡。 作为一个开发兼运维(临时接管)的好处就凸显出来了,上来就干。 首先查看内存和CPU 发现CPU问题: 在这里插入图片描述 2.拉取 25376 的 stack 信息【保存状态】 3、通过 top -Hp 命令 发现有如下线程占用较高cpu 4、根据线程占用率榜对应 栈信息发现: 1)占用39.2%以上的线程号为 25378~25391(转换为16...原创 2020-04-10 01:01:02 · 531 阅读 · 0 评论 -
JDK 源码下载 快速
JDK 源码下载 快速 搜索JDK 源码下载,一般大家看到的都是从 这里 http://hg.openjdk.java.net/ 下载,我尝试之后发现下载巨慢,而且还一直中断。那么有没有快速的下载方法呢? 有的。 github 官方jdk 仓库: https://github.com/openjdk/jdk 官方打包好的 http://jdk7.java.net/source.html...原创 2020-03-06 17:08:55 · 287 阅读 · 0 评论 -
java同步线程(一)
java同步线程(一) 同步代码块 线程安全问题,有一个经典的问题: 银行取钱问题: 1、账户类 public class Account { //封装账户编号,账户余额两个Eield private String accountNo; private double balance; public Account(String accoun...原创 2019-01-14 21:58:10 · 248 阅读 · 2 评论 -
HashCode和equals的区别(二)
HashCode和equals的区别: String方法的equals方法和HashCode方法 String的HashCode方法 /** Cache the hash code for the string */ private int hash; // Default to 0 /** The value is used for character storage. */ ...原创 2019-01-20 22:00:46 · 386 阅读 · 0 评论 -
java网络编程(一)
java网络编程(一) RMI(远程方法调用) RMI概要: RMI 远程方法调用是计算机之间通过网络实现对象调用的一种通讯机制。 过去,TCP/IP通讯是远程通讯的主要手段,面向过程的开发。 而RPC使程序员更容易地调用远程程序,但在面对复杂的信息传讯时,RPC依然 未能很好的支持,RMI被设计成面向对象开发模式,允许程序员使用远程对象来实现通信 RMI远程调用步骤: 1,客户调用客...原创 2019-01-09 22:35:23 · 208 阅读 · 0 评论 -
java同步线程(二)
java同步线程(二) 同步方法 同步方法: 使用synchronized关键字来修饰某个方法,则该方法称为同步方法。 同步方法的同步监视器是this,也就是该对象本身。 通过同步方法可以非常方便地实现线程安全的类,线程安全的类具有如下特征。 1、该类的对象可以被多个线程安全地访问。 2、每个线程调用该对象的任意方法之后都将得到正确结果。 3、每个线程调用该对象的任意方法...原创 2019-01-15 22:25:06 · 236 阅读 · 2 评论 -
java同步线程(三)
java同步线程(三) 基本实现方式及同步原理 释放同步监视器的锁定 任何线程进入同步代码块之前,必须先获得对同步监视器的锁定,那么何时会释放监视器的锁定呢? 1、当前线程的同步方法、同步代码块执行结束,当前线程即释放同步监视器。 2、当前线程在同步代码块、同步方法中遇到break、return终止了该代码块、该方法的继续执行,当前线程会释放 同步监视器。 3、当前...原创 2019-01-16 22:00:36 · 228 阅读 · 0 评论 -
SSO 与 CAS
一、什么是单点登录? 从以下几点谈起: 1、为什么产生单点登录? 在现在每个企业都有不同的产品,豆瓣读书、豆瓣电、豆瓣。。。影甚至同一个产品他的域名都是不同的,比如 这些情况如果每次都登陆一次就会产生不便对于用户。 2、什么是单点登录? 举一个经典例子: 非单点登录:我去迪斯尼去玩,玩一个项目就得买一张票。单点登录就是我买了一张通票去哪玩都是这张票。 3、单点登录原理: 推荐一篇帖子,讲的很好...原创 2019-08-07 09:42:51 · 512 阅读 · 0 评论 -
ConcurrentHashMap(基于jdk1.8)
ConcurrentHashMap(基于jdk1.8) 之前写过关于HashMap和HashTable的区别 HashMap 无锁 ConcurrentHashMap是有锁的 ConcurrentHashMap结构介绍 /*Key-value entry. This class is never exported out as a user-mutable Map.Entry (i.e.,...原创 2019-09-15 17:39:51 · 227 阅读 · 0 评论 -
java线程池 实现原理
java线程池 实现原理 线程池的好处: 降低资源消耗 提高响应速度 提高线程的可管理性 线程池的实现原理 下图是提交一个新任务到线程时,线程池的处理流程 ! ThreadPoolExecutor执行execute方法分下面4种情况 如果当前运行的线程少于corePoolSize,则创建新线程来执行任务(注意!执行该步骤需要获取全局锁) 如果运行的线程等于或者多于corePoolSize ,...原创 2019-09-15 20:25:37 · 264 阅读 · 0 评论 -
线程池的创建
线程池的创建 java 通过 Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性...原创 2019-09-15 22:27:43 · 317 阅读 · 0 评论 -
HashCode和Equals的区别
我们首先来看一下HashCode的源码: /** * Returns a hash code value for the object. This method is * supported for the benefit of hash tables such as those provided by * {@link java.util.HashMap}...原创 2019-01-19 22:51:32 · 270 阅读 · 0 评论 -
HashMap和Hashtable的区别
HashMap: public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { Hashtable public class Hashtable<K,V> extends Dictionary<...原创 2019-01-24 17:00:24 · 381 阅读 · 0 评论 -
java多线程编程(三)
java多线程编程(三) 原子操作的实现原理 1.术语定义 !(cpu术语定义.png)[] 2.处理器如何实现原子操作 (1)使用总线锁保证原子性 第一个机制是通过总线锁保证原子性。如果多个处理器同时对共享变量进行读改写操作(i++就是经典的读改写操作),那么共享变量就会被多个处理器同时进行操作,这样读改写操作就不是原子的,操作完之后共享变量的值会和期望的不一致。举个例子,如果i...原创 2019-01-03 22:48:03 · 185 阅读 · 0 评论 -
java多线程编程(四)
java多线程编程(四) Java内存模型 引言: 内存模型的基础----内存模型相关的基本概念 java内存模型中的顺序一致性–重排序与顺序一致性内存模型 同步原语(synchronized、volatile和final)的内存语义及重排序规则在处理器中的实现 java内存模型的设计,主要介绍java内存模型的设计原理,及其与处理器内存模型和顺序一致性内存模型的关系 Java内存模...原创 2019-01-05 23:38:08 · 356 阅读 · 0 评论 -
java多线程编程(一)
java多线程编程(一) 基本实现方式及同步原理 三种实现方式: 1、继承Thread Thraad 实现 Runable 源码中的表现: public Thread(Runnable target) { init(null, target, "Thread-" + nextThreadNum(), 0); } 2、实现Runable 这是Runable的...原创 2019-01-01 22:32:00 · 1722 阅读 · 0 评论 -
java多线程编程(五)
java多线程编程(五) java内存模型分类 使用写缓冲区临时保存向内存中写入数据。 Why? 提升效率: 1)写缓冲区可以保证指令流水线持续运行,它可以避免由于处理器停顿下来等待向内存写入数据而产生的延迟 2)通过以批处理的方式刷新写缓冲区,以及合并写缓冲区中对同一内存地址的多次写,减少对内存总线的占用。 缺点: 每个处理器上的写缓冲区,仅仅对它所在的处理器可见。这个特性会对内存...原创 2019-01-06 13:31:55 · 181 阅读 · 0 评论 -
解读StringBuffer、StringBuilder、String区别
源码级StringBuffer和StringBuilder以及String区别 作为一个面试常问的问题: 首先看一下源码: public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence public final class ...原创 2019-01-17 16:48:15 · 302 阅读 · 0 评论 -
java多线程编程(二)
java多线程编程(二) volatile、synchronized及锁对比 volatile的使用优化 1、追加字节能优化性能 如果队列的头节点和尾节点都不足64字节的话,处理器会将他们都读到同一个高速缓存行中,在多处理器 下每个处理器都会缓存同样的头、尾节点,当一个处理器试图修改头节点时,会将整个缓存行锁定,会导致其他 处理器不能访问自己高速缓存中的尾节点。 通过填充字节来填满高...原创 2019-01-02 22:52:20 · 206 阅读 · 0 评论 -
java控制线程(二)
java控制线程(二) 控制线程-守护线程 后台线程: what: 有一种线程,它是在后台运行的,它的任务是为其他的线程提供服务,这种线程被称为“后台线程(Daemon Thread)” 又称为"守护线程“或”精灵线程“。 JVM的垃圾回收机制就是典型的后台线程。 特征: 如果所有的前台线程都死亡,后台线程会自动死亡。 How: 调用Thread对象的setDaemon...原创 2019-01-12 11:39:12 · 272 阅读 · 0 评论 -
java多线程编程(六)
java多线程编程(六) 数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分为下列3种类型,如下表所示。 名称 代码示例 说明 写后读 a=1; b=a; 写一个变量后,再读这个位置 写后写 a=1;a=2; 写一个变量后,再写这个变量 读后写 a=b;b=1; 读一个变量之后,再写这个变量 ...原创 2019-01-07 22:24:11 · 176 阅读 · 0 评论 -
java控制线程(三)
java控制线程(三) sleep和yield 线程睡眠:sleep 如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread()类的静态sleep()方法来实现。sleep()方法有两种重载形式。 static void sleep(long millis):让当前正在执行的线程暂停millis毫秒,并进入阻塞状态,该方法受到系统计时器和...原创 2019-01-13 18:47:25 · 192 阅读 · 0 评论 -
java多线程(七)
java多线程编程(七) 重排序对多线程的影响 这一节,看一下重排序对多线程的影响。 示例代码: class ReorderExample{ int a=0; boolean flag = false; public void writer(){ a=1; //1 flag=true; //2 } public void reader(){ if(flag){...原创 2019-01-08 22:00:47 · 192 阅读 · 0 评论 -
JVM讲解-1
JVM JVM详解 在最近学习了一下JVM的知识,现在将学到的做一个总结 overview 一、什么是JVM? 1、jvm的定义 2、jvm的位置 3、jvm的意义 二、JVM的构造 1、类加载子系统与方法区 2、方法区 3、java堆 4、程序计数器 5、java栈 6、本地方法栈 7、直接内存 ...原创 2018-10-19 17:27:07 · 253 阅读 · 0 评论