自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 问答 (2)
  • 收藏
  • 关注

转载 java类加载器

类加载器是负责加载类的一个对象,ClassLoader是一个抽象类。最常见的加载策略是根据的类的全名,然后找到这个类的class文件,然后从文件读取这个类的数据加载到JVM。每个类都能通过getClassLoader方法获取加载这个类的类加载器。数组类的类对象不是由类加载器创建的,而是根据Java运行时的需要自动创建的。 Class#getClassLoader()返回的数组类的类加载器与其元素...

2020-04-16 23:38:55 113

原创 Java虚拟机类加载机制

虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的类加载的过程类的个生命周期如下图:为支持运行时绑定,解析过程在某些情况下可在初始化之后再开始,除解析过程外的其他加载过程必须按照如图顺序开始。加载通过全限...

2020-04-16 21:12:10 124

原创 基于zookeeper实现分布式锁

一、分布式锁介绍分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。二、架构介绍在介绍使用Zookeeper实现分布式锁之前,首先看当前的系统架构图解释: 左边的整个区域表示一个Zookeeper集群,locker是Zookeeper的一个持久节...

2020-04-09 13:31:49 177

转载 盘点:35 个 Java 代码优化魔鬼细节

来源 |https://www.jianshu.com/p/6e472304b5ac前言代码 优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此...

2020-04-09 13:21:48 327

转载 curator的分布式锁实现和源码分析 Mrsunup

curator 本身提供了非常多的功能点,比如分布式锁,leader选举,类似java的CyclicBarrier,在这里不再列举了这里主要讲解curator的分布式的锁的基本实现以及源码分析1.curator的分布式锁实现/** * @Project: 3.DistributedProject * @description: curator的分布式锁的实现 * @author: s...

2020-04-09 12:42:45 336 1

转载 基于zookeeper实现分布式锁(一)

一、分布式锁介绍分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。二、架构介绍在介绍使用Zookeeper实现分布式锁之前,首先看当前的系统架构图解释: 左边的整个区域表示一个Zookeeper集群,locker是Zookeeper的一个持久节...

2020-04-09 12:10:51 344

原创 基于ZooKeeper的分布式锁

一、简介锁的概念,在Java日常开发和面试中,都是个很重要的知识点。锁能很好的控制生产数据的安全性,比如商品的数量超卖问题等。传统的做法中,可以直接利用数据库锁(行锁或者表锁)来进行数据访问控制。随着请求量逐步变多的情况下,将压力怼到数据库上会对其性能产生极大影响。这时候,单体应用中可以利用JVM锁,在程序层面进行访问的控制,将压力前移,对数据库友好。当请求量再进一步变多,这时候一般会考虑集群分...

2020-04-09 12:05:38 448

原创 JAVA字节码文件分析(一)

​​​​Java不只是一种编程语言,还是一个完整的操作平台。Java之所以可以跨平台,这离不开JVM虚拟机。JVM是一个软件,在不同的平台上,JVM有不同的版本。Java在编译之后会生成一种.class文件,这种文件成为字节码文件。JVM虚拟机就是将Java编译后的.class文件翻译成特定平台下的机器码,然后运行。也就是说,在不同平台上装上平台对应的JVM虚拟机后,就可以将Java字节码文件转...

2020-04-09 12:00:39 512 1

原创 17-21堆(线程共享)

堆内存17_堆_定义18_堆_内存溢出19_堆_内存诊断_jmap20_堆_内存诊断_jconsole21_堆_内存诊断_jvirsualvm17_堆_定义定义: Heap,通过new关键字创建的对象,都存放在堆内存中。特点:线程共享,堆中的对象都存在线程安全的问题垃圾回收,垃圾回收机制重点区域。18_堆_内存溢出一个简单的例子 java.lang.OutOfMemeryError:...

2020-04-06 15:00:34 209

原创 16_本地方法栈

标题16_本地方法栈本地方法栈类似于虚拟机栈,也是线程私有。1、本地方法栈(Native Method Stacks)与 Java 虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的 Native 方法服务。虚拟机规范中对本地方法栈中的方法使用的语言、使用方式与数据结构并没有强制规定,因此具体的虚拟机可以自由...

2020-04-06 13:03:42 149

原创 15、线程诊断_迟迟得不到结果

15_线程诊断_迟迟得不到结果jstack pid 查看进程中各线程的详细信息,拉到最后,发现死锁问题。查看线程详细信息后,发现问题出现在JAVA程序内29和21行。分析程序可知,两个线程各自都想锁住两个对象,且开始都各自锁住一个不同的对象,两个线程都无法获得另一个对象,造成死锁。...

2020-04-06 12:53:15 109

原创 14、线程诊断_cpu占用高

标题14、线程诊断_cpu占用高cpu占用过多1、定位进程,top找出占用cpu过多的进程PID2、. ps -H -eo pid,tip,%cpu | grep PID,找出该进程下占用过大的线程 TID例:32655进程中,32665线程占用cup过高3、 jstack pid查看进程中各线程的详细信息,可以看出问题所在。注意:这里TID为十六进制,TID转换为16进制。jst...

2020-04-06 12:40:44 252

转载 基于springboot的RestTemplate、okhttp和HttpClient对比

基于springboot的RestTemplate、okhttp和HttpClient对比1、HttpClient:代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,不建议直接使用。2、RestTemplate: 是 Spring 提供的用于访问Rest服务的客户端, RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。引入jar包:&lt...

2020-04-02 23:13:11 2689

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除