
Ĵava
文章平均质量分 94
程序员面试那点事儿
互联网大厂校招、社招面试官,多年互联网大厂工作经验,分享校招、社招面试题、职场相关内容,互相交流经验
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM之经典垃圾回收器
性能指标吞吐量:用户线程执行时间/(用户线程执行时间+垃圾回收线程执行时间),吞吐量越高,系统的资源利用率越高停顿时间:GC执行过程中,导致用户线程停顿的时间。内存占用率:垃圾收集器执行过程中也需要占用一部分内存空间,内存占用率越低越好保证吞吐量的情况下,尽可能追求低时延Serial针对新生代的垃圾收集器,单线程执行,串行的垃圾收集器,采用标记-复制算法。垃圾回收的时候是单线程处理,同时需要STW优点:简单高效、占用内存更小、单线程省去线程资源竞争带来的损耗当使用参数 「-XX:+Use原创 2020-08-20 11:45:34 · 153 阅读 · 0 评论 -
Java的三种代理模式(Spring动态代理实现原理)
https://www.cnblogs.com/qlqwjy/p/7550609.htmlhttps://blog.csdn.net/dhfzhishi/article/details/79692433https://www.jianshu.com/p/67bf0bea8157https://zhuanlan.zhihu.com/p/24908105原创 2020-08-17 20:25:57 · 1271 阅读 · 1 评论 -
深入理解ThreadLocal
ThreadLocal是什么提供一种在多线程环境下,每个线程都可以拥有自己独特的数据,同时在线程执行过程中传递。ThreadLocal怎么实现的类泛型public class ThreadLocal<T>{}可以存储任意格式的数据关键属性 //表示当前ThreadLocal的hashCode,用于计算当前ThreadLocalMap中索引的位置 private final int threadLocalHashCode = nextHashCode(); /**原创 2020-08-17 17:42:03 · 345 阅读 · 0 评论 -
Java垃圾回收算法
垃圾回收需要完成三件事情哪些内存需要回收Java的堆和方法区什么时候回收对象死去的时候,进行回收。 如何判断对象已死引用计数法:对象被引用一次加1,引用失效时减1。很难解决对象的循环依赖问题可达性分析算法:通过一系列为GC Roots的根对象作为起始节点集,从这些节点出发,根据引用关系向下搜索,搜索的路径称为引用链,如果某个对象到GC Roots没有任何引用链,证明这个对象是不可能再使用的。如何回收分代收集理论弱分代假说。绝大多数对象都是朝生夕灭的。强分代假说。熬过多次垃圾收集过程原创 2020-08-13 15:38:07 · 215 阅读 · 0 评论 -
多线程知识
问题1:多线程的目的是什么?充分利用CPU资源,并发做多件事情问题2:如何在JAVA程序中创建一个线程?new Thread问题3:线程执行的是什么 ?一个代码的执行流,完成一组代码的运行,称之为一个任务问题4:任务是什么?Runnable 对象里的run()方法内的代码块...原创 2020-01-27 11:50:32 · 188 阅读 · 0 评论 -
类文件结构
概述代码编译的结果从机器码转变为字节码是编程语言发展的一大步,这是一种与操作系统无关的程序编译后的存储格式,是构成Java体系平台无关性的基石,实现了一次编写,到处运行的梦想。实现语言无关性的基础是虚拟机和字节码,Java虚拟机不和任何语言相绑定,只与class文件这种特定的二进制文件相关联。Class类文件结构数据结构是虚拟机重要的基础,...原创 2020-03-24 07:44:02 · 111 阅读 · 0 评论 -
Java字节码文件结构解析
的地步原创 2020-03-19 07:57:25 · 184 阅读 · 0 评论 -
ClassLoader源码分析与实例剖析
ddd原创 2020-03-19 07:33:10 · 103 阅读 · 0 评论 -
不同的类加载器作用与加载动作分析
获取ClassLoader的途径获得当前类的ClassLoader :clazz.getClassLoader()获得当前线程上下文的ClassLoader:Thread.currentThread().getContextClassLoader();获得系统的ClassLoader:ClassLoader.getSystemClassLoader()获得调用者的ClassLoader...原创 2020-03-16 21:15:58 · 223 阅读 · 1 评论 -
类加载器与类初始化深度剖析
import java.util.Random;/** * 在这里编写类的功能描述 * * @author wangkai * @created 2019/12/31 */public class MyTest7 { public static void main(String[] args) { System.out.println(FinalTest.x...原创 2020-03-16 15:32:04 · 207 阅读 · 0 评论 -
类加载器双亲委托机制详解
在父亲委托机制中,各个加载器按照父子关系形成了树型结构,除了根类加载器之外,其余的类加载器都有且只有一个父加载器加载顺序:自底向上检查类是否已经加载,从顶向下尝试加载类/* * Copyright (c) 2019 maoyan.com * All rights reserved. * *//** * 在这里编写类的功能描述 * * @author wangkai * @...原创 2020-03-12 09:03:06 · 212 阅读 · 0 评论 -
初始化对于类和接口的异同点深入解析
当Java虚拟机初始化一个类时,要求它的所有父类都已经被初始化,但是这条规则并不适用于接口在初始化一个类时,并不会先初始化它所实现的接口在初始化一个接口时,并不会先初始化它的父接口因此,一个父接口并不会因为它的子接口或者实现类的初始化而初始化,只有当程序首次使用特定接口的静态变量时,才会导致该接口的初始化/* * Copyright (c) 2019 maoyan.com * Al...原创 2020-03-12 08:33:35 · 199 阅读 · 0 评论 -
类加载器深入解析及重要特性剖析
加载:把二进制形式的java类型读入java虚拟机中验证准备:为类变量分配内存,设置默认值。但是在到达初始化之前,类变量都没有初始化为真正的初始值解析:解析过程就是在类的常量池中寻找类、接口、字段和方法的符号引用,把这些符号引用替换成直接引用的过程初始化:为类变量赋予正确的初始值类实例化:为新的对象分配内存、为实例变量赋默认值,为实例变量赋正确的初始值,Java编译器为它编译的每一个...原创 2020-03-11 15:58:49 · 204 阅读 · 0 评论 -
接口初始化规则与类加载器准备阶段和初始化阶段的重要意义
初始化阶段的意义/* * Copyright (c) 2019 maoyan.com * All rights reserved. * *//** * 在这里编写类的功能描述 * * @author wangkai * @created 2019/12/31 */public class MyTest5 { public static void main(Str...原创 2020-03-09 09:44:46 · 171 阅读 · 0 评论 -
编译器常量与运行期常量的区别与数组创建本质分析
运行期常量编译器无法确定/* * Copyright (c) 2019 maoyan.com * All rights reserved. * */import java.util.UUID;/** * 当一个常量的值并非编译器可以确定的时候,那么其值就不会放到调用类的常量池里 * 这个时候程序运行的时候,会导致主动使用这个常量所在的类,显然会导致这个类被初始化 * ...原创 2020-03-09 09:14:57 · 272 阅读 · 0 评论 -
常量的本质含义与反编译及助记符详解
类加载器并不需要等到某个类被首次使用/* * Copyright (c) 2019 maoyan.com * All rights reserved. * *//** * JVM 初始化 * * -XX:+TraceClassLoading,用于追踪类的加载信息并打印出来 * -XX:+<option> 表示开启option选项 * -XX:-<optio...原创 2020-03-07 16:03:39 · 266 阅读 · 0 评论 -
类的加载连接与初始化过程详解
Java程序对类的使用方式可分为两种主动使用- 创建类的实例- 访问某个类或接口的静态变量(getstatic)、或者对该静态变量赋值(putstatic)- 调用类的静态方法(invokestatic)- 反射(如Class.forName(“com.test.Test”))- 初始化一个类的子类- Java虚拟机启动时被标明为启动类的类(Java Test)- JDK1.7开...原创 2020-03-07 15:34:33 · 242 阅读 · 0 评论 -
类加载深入解析与阶段分解
类加载在JAVA代码中,类型的加载、连接、初始化过程都是在程序运行期间完成的,类型指的是JAVA的类,接口、枚举等,不是对象提供了更大的灵活性,增加了更多的可能性 比如字节码是可以认为修改的,运行期间生成使其有了更大的灵活性类加载器深入剖析类加载器 就是把class文件加载到内存中,是加载类的一个工具在如下几个情况,JAVA虚拟机结束生命周期执行了System.exit()方法...原创 2020-03-07 11:20:52 · 221 阅读 · 0 评论 -
亿级流量电商系统JVM参数设置优化
直接进入老年代综合以上,大概7分钟左右老年代就会满,然后触发Full GC通过调整JVM参数 使其几乎不发生Full GC原创 2020-03-02 18:17:30 · 965 阅读 · 0 评论 -
JAVA内存模型
文章目录基本概念JVM 与线程JVM内存区域基本概念程序:完成某个任务的代码序列(静态)进程:程序在某些数据上的一次运行(动态)线程:一个进程会有一到多个线程JVM 与线程JVM启动时机:类被调用 运行程序的时候启动,先启动一个JVM线程,然后再启动其他线程(main)JVM内存区域线程在JVM中是这么运行的方法区:类信息,常量,static,JIT...原创 2020-01-13 20:08:37 · 189 阅读 · 0 评论 -
JVM内存模型
Java内存模型和JVM内存模型JVM是一个标准,实现标准的有很多产品,比如Hotspot等方法区有时候是和堆区是在一起的,但是会有方法区的概念方法区里存的是JAVA类的模版信息,JAVA反射原理就是通过找到类的模版信息,new 一个对象线程共享和非共享User u=new User();引用对象 u 存在栈中真实对象 new User存在堆中......原创 2020-01-13 09:36:39 · 331 阅读 · 0 评论 -
JVM学习曲线及疑难点剖析
应用类的框架学习要先去按照文档把API都给用一遍,理解用法JVM本身是一个非应用的框架,理论大于实际,要通过记笔记,输出的方式去深入理解它多做记录,多做输出!!多做记录,多做输出!!多做记录,多做输出!!三个感觉:学完之后,感觉啥都没学,这个是因为JVM本身没有太多在项目中的实际使用造成的学的越多,感觉会的越少,说明你学习在进步通过英文文档学习最好要有耐心,任重道远...原创 2020-01-13 08:59:18 · 222 阅读 · 0 评论 -
MyBatis的Mapper接口以及Example的实例函数及详解
https://blog.csdn.net/biandous/article/details/65630783转载 2018-11-13 09:18:42 · 499 阅读 · 0 评论 -
mybatis在控制台输出SQL执行语句
log4j啥的输出语句,mybatis配置一下配置文件就可以啦。在mybatis-config.xml中添加如下两行代码就可以,网上有的说只添加最后一行,经尝试不打印。两行都填加才打印。<settings> <setting name= "mapUnderscoreToCamelCase" value = "true"/> <sett...转载 2018-11-13 09:11:15 · 6652 阅读 · 0 评论 -
IO流
IO流是什么IO流:JAVA程序进行数据传输的管道,流就是管道。把数据传到程序中是输入流,把数据从程序中输出是输出流原创 2020-04-01 09:08:26 · 123 阅读 · 0 评论 -
ReentrantLock源码解析
自旋锁public class SpinLock { volatile int status=0; void lock() throws InterruptedException { while (compareAndSet(1,0)){ /* 缺点:耗费CPU资源。没有竞争到锁的线程会一直占用cpu资源...原创 2020-01-21 09:30:01 · 465 阅读 · 1 评论 -
java 中的修饰符
原创 2018-08-28 11:56:04 · 131 阅读 · 0 评论 -
Java 包
原创 2018-08-28 11:52:51 · 146 阅读 · 0 评论 -
Java 中的 static 使用之静态初始化块
Java 中可以通过初始化块进行数据赋值。如:在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量...原创 2018-08-28 11:45:27 · 220 阅读 · 0 评论 -
Java中的static使用之静态方法
与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。静态方法的使用如:1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:...原创 2018-08-28 11:42:27 · 398 阅读 · 0 评论 -
Java中的static使用之静态变量
大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望该类所有的对象共享同一个成员。此时就是 static 大显身手的时候了!!Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐...原创 2018-08-28 11:37:09 · 204 阅读 · 0 评论 -
Java构造方法
原创 2018-08-28 11:33:27 · 1706 阅读 · 0 评论 -
Java 中的内部类
1 什么是内部类 内部类就是定义在另外一个类里面的类,与之对应,包含内部类的类被称为外部类2 为什么非要将一类定义在另外一个类里面呢 1 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2 内部类的方法可以直接访问外部类中的所有数据,包括私有的数据 3 内部类所实现的功能使用外部类同样可以实现,只是有时内部类更方便 ...原创 2018-08-28 16:49:58 · 171 阅读 · 0 评论 -
Spring入门
概述两个基本网址https://spring.io/ https://spring.io/projects/spring-framework1 什么是框架 Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,但现在已经不止于企业应用 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 --从大小和开销两方面而言,Sp...原创 2018-09-25 10:45:46 · 173 阅读 · 0 评论 -
java面试题之int和Integer的区别
int和Integer的区别1、Integer是int的包装类,int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 4、Integer的默认值是null,int的默认值是0延伸: 关于Integer和int的...转载 2018-09-15 11:52:25 · 226 阅读 · 0 评论 -
maven的基础使用
一句话介绍:使用maven可以更有效的帮助我们管理项目,maven可以管理各种包,并解决各种冲突, 类似一个仓库目录结构:mvn -v 查看版本 complie 编译 test 测试 package 打包 clean 删除target install 安装jar包到本地仓库中创建目录的两种方...原创 2018-09-28 15:55:44 · 209 阅读 · 0 评论 -
java中匿名内部类的理解
如下面: Runnable runnable = new Runnable() { @Override public void run() { } };123456 new View.OnClickListener(){ @...转载 2018-10-31 17:19:27 · 292 阅读 · 0 评论 -
第二章 数据类型和运算符
1 常用的进制有哪些 十进制,二进制,八进制,十六进制2 如何将十进制数据转成二进制数据 ...原创 2018-11-15 20:13:26 · 264 阅读 · 0 评论 -
百战程序员
1 JAVA有什么核心优势让其流行? 跨平台的特性,安全,多线程,分布式开发2 JAVA的三个版本是什么? JavaME 小型的智能卡和嵌入式应用 机顶盒 JAVASE 适用于桌面软件 qq JAVAEE 适用于网页服务器应用 企业管理系统3 JAVA哪个公司发明的? SUN 公司发明,被甲骨文收购4 JAVA的跨平台是通过什么实现的? ...转载 2018-11-15 10:36:30 · 1229 阅读 · 0 评论 -
JAVA集合框架
1 JAVA集合整体框架图(了解,没事对照源码看看)简化的图java.util中的数据结构继承有两大类,一类实现了Collection接口,一类实现了Map接口 2 集合框架是什么 一组属性相同的数据或对象,可以按照接口、实现、算法三个方面对集合框架中的数据结构进行分类 接口:Collection、List、Map组成了集合框架中所有具体实现类的接口。...原创 2019-02-25 11:32:39 · 213 阅读 · 0 评论