
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
下载东西很容易,但是如何优化?先抛出几个问题1.下载完后,文件都要存在内存吗? 比如我下载两个g的文件需要两个g的内存?2.下载文件后,如何存进硬盘,需要拷贝几次? 能不能实现零拷贝?3.下载的过程中多线程下载会提高速度吗?4.下载的过程中如果网络中断了怎么办?分别回答这几个问题1.没必要存在内存,我们可以用流来下载,但是用流来下载的痛点是:网络断开了怎么办? ...
语法糖可以看成是编译器实现的一些功能。他们帮我们程序员特高代码开发效率。如泛型:泛型擦除前public static void main(String[] args) {Map<String, String> map = new HashMap<String, String>();map.put("hello", "你好");map.put("ho...
通过分派的讲解可以知道java中重载和重写在java虚拟机中是如何是实现的。静态分派package org.fenixsoft.polymorphic;/*** 方法静态分派演示* @author zzm*/public class StaticDispatch {static abstract class Human {}static class Ma...
前言最近有很多小师妹来问我。师妹:师兄~看了你之前的从腾讯到阿里,最后选择字节,觉得你特别厉害,请问你是怎么进BAT的呀,能不能告诉我你的学习路线呀~既然小师妹都这么问了,那我在这篇就如实回答她。正文第一阶段看书籍从书籍当中我们能更加系统的学习。我先推荐Java语言的书籍,如果你不是学Java的可以先跳过Java的书。如果你是什么都不会的小白,先看《Java 核心技术卷 1+卷 2》Java深入理
双亲委派模型是在实现在类加载器之间的。一般有三种类加载器 启动类加载器 扩展类加载器 应用程序加载器。 在没有自己定义的类加载器出现 我们的应用程序是由这三种类加载器相互配合的。从名字可以看出 启动类加载器是最顶层的 应用程序是底层的那么该模型的工作过程就是,如果一个类加载器收到了类加载的请求,他不会自己去尝试加载这个类,而是把请求传递给父类,父类再传递 。 如果最...
类从加载到虚拟机开始到出去内存。有这么几个阶段加载验证准备解析初始化使用卸载这几个过程 并不是有这绝对的先后顺序。某些可能会混合式进行。加载,其实虚拟机并没有规定什么时候要加载,但对于初始化是有这么几种情况必须要初始化。1.使用new实例化对象、读取或设置一个类的静态字段。但是如果被final 修饰的就不用,因为 final的静态字段 在编译时就已经放...
有个面试官问过一个问题,为什么对象分代年龄有15而没有16,17.因为储存对象分代年龄的只有四位。那当然最多就只有15.来看下图。每个对象刚刚新建就在新生代堆当中。(除了一些较大的对象,要分配很大的连续的内存空间,就直接进入到老年代)这时候,垃圾回收机制就起作用了,当一个对象判定为死亡的时候,垃圾回收就会来处理,经过一轮,新生代就复制到另外的内存空间,他的新生代的值也会相...
大家都知道 synchronized 是锁。那怎么会实现可见性和有序性。volatile也能实现对吧。java内存模型是这么规定的关于主内存与工作内存之间的交互协议,即一个变量如何从主内存拷贝到工作内存。如何从工作内存同步到主内存中的实现细节。java内存模型定义了8种操作来完成。这8种操作每一种都是原子操作。8种操作如下:lock(锁定):作用于主内存,它把一个变量标记为一条线程独占...
局部变量表示一组变量值储存空间,用于存放方法参数和方法内部定义的局部变量。其最小单位为solt。一个slot可以存放一个boolean,byte,char,short,int,float,reference,returnAddress,的数据类型。但虚拟机规范确有没有明确规定一个solt占有的空间大小。此外 long,double占用两个solt。因为连续占用两个solt,却不用担心数据安...
在发生minorGC(对新生代垃圾回收),如果老年代最大可用的连续空间大于新生代所有对象的总空间,那么Minor GC就是安全的。新生代使用复制收集算法,会使用一个survivor空间作为轮换备份。但是如果出现,minor gc 后仍然有很多对象存活,且大于survivor的空间,那么就把无法容纳的放进老年代。放进的同时要做分配担保,就是老年代本身还有容纳这些对象的剩余空间。但是会有多少对...







