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