
Java
deltapluskai
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java高并发笔记
文章目录(一)线程安全性原子性可见性有序性(二)安全发布原则安全发布策略(三)线程安全策略不可变对象线程封闭线程不安全的类与写法同步容器并发容器安全共享对象策略(四)JUC之AQSAQS接口CountDownLatchSemaphoreCyclicBarrierReentrantLock 与 Condition(五)JUC扩展Callable接口Future接口FutureTask类Fork/Join框架BlockingQueue接口(六)线程池对比Thread类ThreadPoolExecutor类线程池原创 2020-10-22 14:24:51 · 239 阅读 · 0 评论 -
Servlet总结
Servlet体系结构Servlet:接口|(继承)GenericServlet:抽象类|(继承)HttpServlet:抽象类|(继承)MyServlet extends HttpServletservlet常用方法: void init(ServletConfig config):初始化 void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑 void destroy():销毁 Servl..原创 2020-10-22 14:22:36 · 205 阅读 · 0 评论 -
泛型带来的坑
Map<Short, String> map = new HashMap<>(); for(short i = 0; i <100; i++) { map.put(i, String.valueOf(i)); map.remove(i - 1);}System.out.println(map.size());这段代码输出是100,原因如下:首先JVM将i - 1自动向上转型为inti - 1被自动装箱为IntegerHashMap在比较两个原创 2020-06-08 22:46:35 · 223 阅读 · 0 评论 -
JDK源码阅读(一):java.lang.*
JDK源码阅读(一):java.lang.*文章目录JDK源码阅读(一):java.lang.*Object`public final native Class<?> getClass()``public native int hashCode();``protected native Object clone() throws CloneNotSupportedException;...原创 2020-04-28 18:05:20 · 331 阅读 · 0 评论 -
虚拟机执行子系统(二):虚拟机类加载机制
虚拟机执行子系统(二):虚拟机类加载机制文章目录虚拟机执行子系统(二):虚拟机类加载机制类加载的时机主动引用被动引用接口加载类加载过程加载验证准备解析初始化类加载器类与类加载器双亲委派模型破坏双亲委派模型Java模块化系统定义:Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。Java与C/C++不同之处在...原创 2020-03-20 15:37:12 · 160 阅读 · 0 评论 -
虚拟机执行子系统(一):类文件结构
虚拟机执行子系统(一):类文件结构文章目录虚拟机执行子系统(一):类文件结构Class文件结构魔数与Class文件版本常量池访问标志类索引、父类索引与接口索引集合字段表集合方法表集合属性表集合Class文件结构一个Class文件对应唯一类或接口,但反过来则不是(譬如类或接口也可以动态生成,直接送入类加载器中)。Class文件是一组以8个字节为基础单位的二进制流,中间没有添加任何分隔...原创 2020-03-16 13:52:39 · 214 阅读 · 0 评论 -
JVM参数设置(一)
JVM参数设置(一)以下设置默认使用serial/serial Old收集器堆内存Xms堆内存的最小值,默认为物理内存的1/64Xmx堆内存的最大值,默认为物理内存的1/4Xmn新生代的大小,设置此值老年代的大小为Xmx-Xmn、-XX:Survivor-Ratio设置新生代Eden和Survivor区域的空间比例(n:1),新生代可用总容量为n+1,多出来一个1作为空闲的Su...原创 2020-03-11 15:54:41 · 148 阅读 · 0 评论 -
JVM自动内存管理(二):垃圾收集器与内存分配策略
JVM自动内存管理(二):垃圾收集器与内存分配策略(一)判断对象是否死亡引用计数法基本思路:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。主流的JVM没有选用此法来管理内存:意外情况很多(如:对象间的循环引用)、需要大量的额外资源来保证正确。可达性算法(主流JVM使用)思路:通过一系...原创 2020-03-06 21:05:13 · 444 阅读 · 0 评论 -
JVM字符串常量池
字符串常量池在JDK7之后,字符串常量池从运行时常量池中分离,放到堆中。String::intern如果存在堆中的对象,会直接保存对象的引用,而不会重新创建对象,否则在字符串常量池创建对象。以下代码分析基于JDK7以上public static void main(String[] args) { String s = new String("1");//字符串常量池由于class...原创 2020-02-16 22:55:32 · 540 阅读 · 0 评论 -
JVM自动内存管理(一):Java内存区域与内存溢出异常
JVM自动内存管理(一):Java内存区域与内存溢出异常(一)运行时数据区线程共享: 方法区(JDK8含运行时常量池)、堆内存(JDK8含字符串常量池)线程私有:栈内存(虚拟机栈、本地方法栈)、程序计数器PC直接内存:与NIO有关程序计数器PCNative方法定义:一个Native Method就是一个Java调用非Java代码的接口。方法的实现由非Java语言...原创 2020-02-15 17:02:46 · 195 阅读 · 0 评论 -
Java学习(十二)
Java学习(十二)类的加载机制与反射类的加载类也是一种对象,是java.lang.Class实例;类的初始化过程:加载、连接、初始化过程:类的加载由类加载器(默认由JVM提供)完成,指的是加载.class文件,这个文件可以是来源于JAR包,加载完毕后,系统会生成Class对象。类的连接该阶段负责把类的二进制数据合并到JRE中。过程:验证:验证加载的类的内部结构是否正确...原创 2019-10-23 18:45:14 · 152 阅读 · 0 评论 -
Java学习(十一)
Java学习(十一)网络编程基本网络支持InetAddress类其有两个子类分别表示ipv4和ipv6,即Inet4Address、Inet6Address该类没有构造器,通过两个静态方法:getByName(String host)和getByAddress(byte[] addr)来获取实例通过实例方法获取主机名、IP地址:getHostAddress()、getHostN...原创 2019-10-21 16:24:34 · 127 阅读 · 0 评论 -
Java学习(十)
Java学习(十)多线程线程的创建和启动三种方式:继承Thread类创建线程类(自定义线程类)重写run()方法,调用线程类对象的start()方法来启动Thread.currentThread()返回当前正在执行的线程对象getName()实例方法返回调用该方法的线程名,默认是Thread-n,可以用setName(String name)为线程设置名字但是如果不是这种方...原创 2019-10-20 15:44:18 · 124 阅读 · 0 评论 -
Java学习(八)
Java学习(八)Annotation概念用于修饰包、类、构造器、方法、成员变量、参数、局部变量的生命,用于设置元数据,这些信息存储在Annotation的name=value对中基本的Annotation@Override,用于指定方法重写,写在子类覆盖父类的方法之前,告知编译器必须检查子类是否重写父类方法@Deprecated表示内容已经过时,如果再使用,编译器会发出警告...原创 2019-10-19 14:56:27 · 142 阅读 · 0 评论 -
Java学习(九)
Java学习(九)Java I/O流字节流:8bit,InputStream、OutputStream为抽象基类字符流:16bit,Reader、Writer做抽象基类Java同样有着C/C++文件位置指针的类似概念通常的,打开一个文件之类的、从/向特定IO设备(磁盘、网络等)读写的流,称为节点流。处理流:对已存在的流做封装,使用起来更简便抽象基类输入流InputStream...原创 2019-10-19 14:54:41 · 141 阅读 · 0 评论 -
java学习(一)
java学习(一)今天继续开始系统学习java,希望能坚持下去,打卡。。。java开发环境运行环境JRE各种API以及JVM开发环境JDK编译器(javac命令)JDK包含JREJDK包含JREJDK包含JRE重要的事情说三遍java运行机制先编译为字节码(*.class)后在JVM上解释java安装配置过程默认安装到C:\Program Files\Jav...原创 2019-01-22 20:47:17 · 135 阅读 · 0 评论 -
java学习(四)
java学习(四)java面向对象(上)static修饰符static修饰符用于修饰类的成员变量和方法,表示该变量或方法属于这个类本身而不属于任何一个实例static修饰的方法内不能写this,因为static表示这个方法属于一个类,因此省略的this引用无法指向有效的对象,静态成员不能直接访问非静态成员java参数传递java参数传递方式只有值传递,也就是形成一个副本,因此想...原创 2019-02-02 18:44:31 · 197 阅读 · 0 评论 -
java学习(三)
java学习(三)switch语句java 7之后支持switch表达式的是java.lang.String类型的变量或表达式,但StringBuffer和StringBuilder这两种类型是不允许的java标签java标签和其他语言标签类似——一个紧跟着英文冒号的标识符可以利用这个标签用break从内层循环一次性结束外层整个大循环,也可以用在continue后面用以跳过外层大循环的本...原创 2019-01-28 21:56:11 · 199 阅读 · 0 评论 -
Java学习(五)
java学习(五)面向对象(下)java基本数据类型包装类[外链图片转存失败(img-vjIiNfPZ-1568981904775)(C:\Users\msi\AppData\Roaming\Typora\typora-user-images\1549177155001.png)]通过这些包装类就可以实现引用传递基本类型参数,这些包装类可以直接与基本数据类型相互赋值还可以通过包装类提供的...原创 2019-09-20 20:18:36 · 141 阅读 · 0 评论 -
Java学习(六)
java学习(六)java基础类库(部分)String、StringBuffer、StringBuilder类String类是不可变类,即一旦创建,这个对象中的字符串无法更改StringBuffer类代表字符串可变的对象。StringBuilder和StringBuffer基本相似,但后者是线程安全的,前者性能略高。补充:char和byte的区别byte 是字节数据类型 ,是有...原创 2019-09-23 19:58:21 · 126 阅读 · 0 评论 -
Java学习(七)
Java泛型泛型定义:意为参数化类型,即传入的参数是个类型,如集合List<String>,就是一个带类型参数的泛型接口,泛型允许在定义类、接口、方法时使用类型作为形参,这个类型形参将在声明变量、创建对象、调用方法时动态地指定。语法:Java7之后,在调用对象的构造器的时候,可以省略泛型中的参数类型,而只留下菱形语法,例如List<String> books...原创 2019-10-10 19:59:09 · 153 阅读 · 0 评论 -
java学习(二)
Java学习(二)java与cpp区别java必须在一个class内找到程序入口,也就是说必须定义一个类,在这个类里面需要有public static void main(String[] args)作为入口方法一个.java文件最多只能定义一个public类,且.java文件名必须与这个类相同垃圾回收机制由JRE在后台自动进行,通常在CPU空闲或内存不足时自动进行垃圾回...原创 2019-01-23 23:14:37 · 138 阅读 · 0 评论