- 博客(11)
- 收藏
- 关注
原创 HashMap 的 tableSizeFor方法 JDK1.8版本源码解析
/*** 构造一个空的具有指定的初始容量和负载因子的 HashMap* initialCapacity 初始容量* loadFactor 负载因子* threshold 下一个调整大小的值(容量*加载因子)*/public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) { throw new IllegalArgumentExcepti
2021-12-28 14:43:45
675
原创 如何才是熟悉JAVA的IO(一) JAVA IO 模型
目录前言一、IO模型二、JAVA IO模型前言作为一名不合格的程序员,只知道复制粘贴,学习总结的时间却很少,看到简历上的熟悉IO,一直在反问自己,如何才是真的熟悉IO,简单的使用流,写读操作,这些就足够了吗?这就是熟悉IO了吗?不够,这远远不够,所以看了很多论坛的很多文章,对IO还是一知半解,所以自己总结一下,后面有机会再完善.既然如此,就先从IO模型入手一、IO模型I/O,就是计算机内存与外部设备之间拷贝数据的过程同步: 按顺序执行,后续的任务是等待当前调用返回,才会进行下一步异步:
2021-12-22 15:00:08
587
原创 String、StringBuffer、StringBuilder区别
类可变性线程安全String不可变线程安全StringBuffer可变线程安全的,因为其内部大多数方法都使用 synchronized 进行同步其效率较低StringBuilder可变不是线程安全的,单线程下,优先考虑使用 StringBuilder...
2021-12-16 17:01:39
150
原创 双亲委派模型
一、类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段,对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间二、双亲委派模型1.类加载器分类1.启动类加载器(Bootstrap ClassLoader): 这个类加载器负责将存放在lib目录中的类库加载到虚拟机内存中. 启动类加载器无法被Java 程序直接引用, 用户在编写自定义类加载器时, 如果需要把加载请求委派给启
2021-12-16 16:03:19
389
原创 类加载机制
原理:JVM把class字节码文件加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆(并不一定在堆中,HotSpot在方法区中)中生成一个代表这个class的java.lang.class对象,作为方法区类数据的访问入口加载机制: 加载: 1.通过类的全限定名来获取定义此类的二进制字节流 2.将这个类字节流代表的静态存储结构转为方法区的运行时数据结构 3.在堆中生成一个代表此类的java.lang.Class对象,作为访问方法区这些数据结构的入口 连接:
2021-12-16 15:31:03
916
原创 最简单的 Java 内存管理模型
栈溢出(StackOverFlowError):若Java虚拟机栈的内存大小不允许动态扩展,当线程请求栈的深度超过当前Java虚拟机栈的最大深度时抛出内存溢出(OutOfMemoryError):若Java虚拟机堆中没有空闲内存,并且垃圾回收器也无法提供更多内存的话就会抛出 线程私有的: 程序计数器(Program Counter Register):也被称为PC寄存器,一块较小的内存空间,当前线程所执行的字节码的行号指示器.生命周期同线程,唯一不会出现OutOfMemoryEr
2021-12-16 15:29:08
2130
原创 Linux 安装和卸载 JDK
安装JDK使用xftp/SecureCRT将jdk源码包,上传到/usr/local(软件一般安装到这个目录) 解压 tar -zxvf jdk-8u181-linux-x64.tar.gz 顺手删掉源码包 rm -f jdk-8u181-linux-x64.tar.gz 配置环境变量 将jdk配置到/etc/profile,才可以在任何一个目录访问jdk vim /etc/profile 按i进入编辑,在profile
2021-12-16 15:25:30
329
原创 Java IO流大纲
数据流向:输入流、输出流 数据单位:字节流、字符流 是否与数据源直连:节点流、处理流BIO 同步并阻塞NIO 同步非阻塞 AIO 异步非阻塞 Netty 基于NIO的客户、服务器端编程框架NIOBuffers 缓冲区 属性: capacity(容量) position(位置) limit(限制) 使用: 分配缓冲区 ByteBuffer buffer= ByteBuffer.allocate(1024)
2021-12-16 15:19:39
492
原创 Java 设计模式
创建型模式1.单例模式: 某个类只能有一个实例,提供一个全局的访问点(私有化对象和构造方法,提供一个获得单例对象的方法)2.工厂方法模式: 建立一个工厂类,对实现了同一接口的一些类进行实例的创建3.抽象工厂模式: 创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类4.建造者模式: 封装一个复杂对象的构建过程,并可以按步骤构造5.原型模式: 通过复制现有的实例来创建新的实例结构性模式6.适配器模式: 将一个类的方法接口转换成客户希望的另一个接口7.桥接模式: 将抽象部分和它的实现部
2021-10-28 17:37:16
133
原创 表单提交方式总结
**表单提交方式**一 正常表单提交<form action="你要提交页面的url或者servlet的路径" method="get/post"></form><input type="submit" value="提交">二. 按钮提交表单<form action="你要提交页面的url或者servlet的路径" me...
2019-07-05 14:25:56
276
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人