java
Groople
专注技术分享
展开
-
Java虚拟机学习---ClassLoader的思考
为什么会有双亲委派模型? Java虚拟机在加载一个clas文件时,需要遵循一个流程,这个加载流程就是双亲委派模型,Java类加载器有三种:BootstrapClassLoader(启动类加载器)、ExtClassLoader(扩展类加载器)、AppClassLoader(应用程序加载器)。 ...原创 2019-11-21 21:27:54 · 197 阅读 · 0 评论 -
Java虚拟机学习---Class文件解析
class文件整体结构:类型 名称 说明 长度 u4 magic 魔数,识别Class文件格式 4个字节 u2 minor_version 副版本号 2个字节 u2 major_version 主版本号 2个字节 u2 con...原创 2019-10-27 18:52:35 · 332 阅读 · 0 评论 -
Java对象Cloneable实现深拷贝的思考
所谓对象浅拷贝,拷贝的是对象的内存地址,深拷贝,是对将对象里的内容拷贝出来并放到一个新的对象中,二者的区别是,修改原对象时,浅拷贝会跟着修改,深拷贝对象不受原对象的影响。在一些多线程和并发的场景中经常会牵涉到对象的拷贝。 这里以一个简单的例子,总结下深拷贝的方式。package deepclone.deepclone;public class User { pu...原创 2019-10-22 22:10:07 · 1307 阅读 · 0 评论 -
Java虚拟机学习---垃圾回收算法的思考
引用计数算法 给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值减1;任何时刻计数器为0的对象就是不可能被使用的。 这种算法的实现简单,判定效率也很高,在大部分情况下它都是一个不错的算法,但是Java虚拟机里没有选用此算法,主要的原因是它不能解决对象之间循环引用,导致不能回收的问题。比如下面这段代码: public c...原创 2019-10-15 23:36:59 · 154 阅读 · 0 评论 -
Java虚拟机学习---Mac下编译openJDK 1.9
准备1、安装homebrew ,打开命令行工具:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"2、安装必备工具:brew install mercurialbrew install ccachebrew install fr...原创 2019-09-09 13:02:51 · 646 阅读 · 1 评论 -
Day2.Java关键字之 transient
一、关键知识点 1、transient用于变量上,不能用于方法或类上。 2、被transient修饰过的变量将不会被序列化,在被反序列化后,transient 变量的值被设为初始值,如 int 型的是 0,对象型的是 null。即对象只能存在于内存中,无法进行网络传输或保存到本地。 3、静态变量无论有没有transient修饰,都不会被序列化。...原创 2019-03-07 21:36:10 · 215 阅读 · 0 评论 -
Day3-4.序列化之Serializable
本篇博客主要解决以下问题: 1、Serializable是怎么实现的? 2、Serializable中serialVersionUID的作用是什么?为什么会有这个字段? 3、transient字段有何作用?如何自己定制序列化? 一、Serializable是怎么实现的 一般我们使用序...原创 2019-03-08 22:37:34 · 639 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来...转载 2018-08-10 12:13:14 · 171 阅读 · 0 评论 -
每日一学(五) Java内存分配浅析
这阵子在做android 性能优化方面的事情,发现公司的程序中内存泄露的地方挺多,这就牵涉到内存分配。于是写下这篇博客,简单分析一下Java中的内存分配一个完整的Java程序运行过程会涉及以下内存区域: 寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。 栈:保存局部变量的值,包括:a.用来保存基本数据类型的值;b.保存类的实例,即堆区对象的引用(指针)。也可以用原创 2017-06-13 22:22:42 · 361 阅读 · 0 评论 -
Java后台开发<二>:Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建
这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明。如果还没有搭建好环境(主要是Maven+MySQL的配置)的猿友可以参考博主以前的一篇文章: http://blog.csdn.net/u010838555/article/details/52944606转载 2016-10-27 12:38:29 · 3206 阅读 · 1 评论 -
Java后台开发<一>:环境搭建
很久之前就想做Java后台开发了,苦于一直没有找到合适的后台开发教程,某日发现一篇很不错的Java后台开发配置文章,记录如下:jdk+eclipse+svn+maven+mysql+tomcat7.0+sublime安装包和jar插件配置管理工具-SVN http://download.csdn.net/detail/u013142781/9355417 tom转载 2016-10-27 12:22:30 · 16812 阅读 · 1 评论 -
Java回调机制解析
以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,字面上的意思类似于我调你的同时,你反过来也调用我。所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式:Cla转载 2016-02-29 15:09:58 · 330 阅读 · 0 评论