
java
小白不想当码农
这个作者很懒,什么都没留下…
展开
-
zookeeper的Java API模拟服务注册与发现
zookeeper的Java API模拟服务注册与发现构建服务提供者构建server1复制一份创建 server2创建服务消费者`Main` 构建服务提供者 构建server1 /** * 返回唯一的zookeeper实例 * @author sheledon */ public class ZkFactory { private static final int sessionTimeout = 7000; private static volatile ZooKeeper zkC原创 2021-05-04 16:38:28 · 277 阅读 · 0 评论 -
一文带你刨析class文件,反正学医的老同学是听懂了
一文带你认识class文件 Write Once , Run AnyWhere java如何实现跨平台? 为啥C程序不能跨平台? hello.cpp #include<stdio.h> int main() { printf("Hello World\n"); return 0; } 下面是这个c程序的执行过程 预处理会将hello.cpp文件中通过include引入的头文件插入到程序文本中,得到hello.i文件 编译器将hello.i中的C代码翻译成汇编指令,得到文件hel原创 2020-10-04 14:24:28 · 310 阅读 · 0 评论 -
外行人都懂的单点登录,不看血亏!!!!
什么是单点登录 单点登录的英文名 Single Sign On (SSO)。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。比如说淘宝和天猫都是阿里巴巴的子系统,在网页端,我们登录了淘宝,那么天猫也会自动登录;反之相同。 下面看一下单点登录的大概的设计 如上SSO的关键就是SSO认证中心,所有的子系统通过与SSO交互实现了一端登录其他端自动登录。 单系统登录设计与实现 在了解多系统SSO设计与实现之前我们先来看一下单系统登录的设计与实现 在初学servlet和jsp的时原创 2020-09-23 22:15:32 · 503 阅读 · 0 评论 -
JVM系列之java虚拟机栈
JVM系列之java虚拟机栈 tip:上面讲了JVM运行时数据区域的程序计数器器(PC),这篇文章带大家走进JVM的运行时数据区域JAVA虚拟机栈 啥是java虚拟机栈 java虚拟机栈和程序计数器一样也是线程私有的,生命周期和线程相同;它是Java方法执行的线程内存模型。当一个方法被执行的时候,java会同步创建一个栈帧,这里的栈帧就是栈的元素;每一个栈帧包含局部变量表,操作数栈,动态连接,方法返回地址等信息,一个方法从开始到执行结束对应着虚拟机栈中一个栈帧的入栈和出栈。 下面放一张图让大家直观的理原创 2020-09-16 21:29:53 · 177 阅读 · 0 评论 -
JVM热身之程序计数器
JVM运行时数据区域之程序计数器 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来 -----------《深入理解java虚拟机》 在用C编程的时候,我们malloc一块空间总是需要手动进行free,不然就会造成内存泄露即使用过的内存没被释放,造成内存不够用了;而在Java中,垃圾回收器会自动帮我们回收在后台回收那些不再“使用”的内存,所以在Java编程中不容易出现内存泄露和溢出的问题。但是一旦出现例如java.lang.OutOfMemoryE原创 2020-09-14 11:12:18 · 231 阅读 · 0 评论 -
类加载概述
加载 加载过程主要完成以下几件事情 类加载器根据类的全限定名获取类的二进制字节流 将二进制字节流表示的静态结构转换为方法区的运行时数据结构 在堆上面实例化一个该类的Class对象,作为方法区这个类的各种数据访问的入口 验证阶段 验证是连接阶段的第一步 验证阶段主要目的是确保Class文件的字节流中包含的信息符合java虚拟机规范,确保这些信息被加载 入内存不会危害到jvm自身的安全。主要包含以下几个步骤 文件格式验证 验证字节流是否符合Claa文件格式的规范要求,确保字节流所表示的静态结构能原创 2020-08-08 11:30:52 · 150 阅读 · 0 评论 -
吐血带你分析AQS源码!!!
啥是AQS呢? AQS是一个用来构建锁和同步器的框架,可以帮助我们快速构建锁和同步队列器,ReebtrantLock,CountDownLatch,ReentrantWriteLock等都是基于AQS实现。 AQS底层使用双端队列,CAS操作实现 先来看一下AQS中重要的属性 //双端队列的头节点,是当前共享资源的持有线程,不再阻塞队列之内 private transient volatile Node head; //阻塞队列的尾节点 private transient volatile Node ta原创 2020-08-01 22:03:41 · 188 阅读 · 0 评论 -
HotSpot到底是咋有那么多对象的
本文参照与《深入理解jvm》 首先介绍一下,HotSpot中对象的内存布局 对象头: 包括Mark Word 和 类型指针俩部分,markword是肯定有的,而类型指针是否存 在依赖于引用的实现方式 MarkWord里面存储着对象运行时候的数据,例如分代年龄,哈希值,偏向锁ID等 MarkWord在32位和64位机器中分别占用32比特和64比特,他会根据对象的状态 对空间进行复用,尽量在最小的空间中存储最多的数据 实例数据 存放对象的实例数据,是对象存储的真正有效的信息。实例数据包括类中的实例变原创 2020-07-27 18:21:07 · 169 阅读 · 0 评论 -
自动装箱的陷阱
今天在阅读 jvm关于自动装箱部分的内容时,对最后一个案例 自动装箱的的陷阱感到疑惑。解决后特此记录 Integer a=1; Integer b=1; Integer c=128; Integer d=128; Integer e=127; System.out.println(a==b); System.out.println(c==d); System.out.println原创 2020-07-13 18:43:43 · 264 阅读 · 0 评论 -
01
只不过不想变得平庸,却被认为生活中只有0和1原创 2020-06-09 00:10:40 · 125 阅读 · 0 评论 -
java fail-fast 与 java.util.ConcurrentModificationException 及踩坑 subList
fail-fast复现异常什么是 fail fast原理通过源码知原理迭代器for each 语句,直接看 target下的class文件解决方法多线程下异常复现另一种会抛出异常的情景分析 复现异常 List<Integer> list=new ArrayList<>(); for(int i=0;i<5;i++){ list.add(i); } Iterator<Integer>原创 2020-06-01 11:20:38 · 1424 阅读 · 1 评论 -
java String字符串解析为JSON格式
导入所需要的jar包,maven坐标 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.9</version> </dependency> 使用 JSONObject jsonObject=JSONObject原创 2020-05-27 08:39:47 · 774 阅读 · 0 评论