![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 79
java基本知识、JVM
大鱼七号船船长
优秀青年
展开
-
【Java多线程与并发】进程与线程
一、进程和线程的由来串行:初期的计算机智能串行执行任务,并且需要长时间等待用户输入批处理:预先将用户的指令集中成清单,批量串行处理用户指令,仍然无法并发执行进程:进程独占内存空间,保存各自运行状态,相互间不干扰且可以互相切换,为并发处理任务提供了可能线程:共享进程的内存资源,相互间切换更快速,支持更细粒度的任务控制,使进程内的子任务得以并发执行二、进程和线程的区别进程是资源分配的最...原创 2020-03-15 22:14:33 · 209 阅读 · 0 评论 -
Java关键字:static、final,non static class区别
一、static被static修饰的成员变量和成员方法独立于该类的任何对象:不依赖于类特定的实例,被类的所有实例共享static对象可以在它的任何对象创建之前访问,无需引用任何对象:只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到它们public static本质上是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个st...原创 2020-03-13 17:30:25 · 306 阅读 · 0 评论 -
Interface接口、abstract抽象类及两者间的区别
一、abstract抽象类一个类中没有包含足够的信息来描绘一个具体的对象不能实例化对象,必须被继承才能被使用抽象类表示了一种继承关系,一个类只能继承一个抽象类,却可以实现多个接口(一)抽象方法 public protected 无private只包含一个方法名,而没有方法体;在父类中证明为abstract方法,子类中来具体实现如果一个类中包含抽象方法,那么该类必须是抽象类任何子...原创 2020-03-13 17:04:57 · 106 阅读 · 0 评论 -
Java关键字:深入剖析Volatile关键字
volatile原创 2020-03-13 15:17:38 · 99 阅读 · 0 评论 -
Collection包结构,与Collections的区别,List,Set,Map
【Java】关键字final static violate sy原创 2020-03-12 14:04:47 · 841 阅读 · 0 评论 -
ConcurrentHashMap:JDK1.7和JDK1.8中的实现
JDK1.7版本的实现不允许key或value值为NULL锁分段技术:将数据分成一段一段的储存,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问JDK1.8版本的实现在JDK1.8中对ConcurrentHashmap做了两个改进:取消segments字段,直接采用transient volatile HashEntry<K,...原创 2020-03-11 13:28:51 · 157 阅读 · 0 评论 -
java.util.Map:HashMap HashTable LinkedHashMap TreeMap
MapJava为数据结构中的映射定义了一个接口:java.util.Mapjava.util.Map实现类:HashMap、Hashtable、LinkedHashMap、TreeMapMap:主要用于存储键值对。根据键得到值,不允许键重复(重复会覆盖),但允许值重复HashMap一个最常用的Map,根据键的HashCode值存储数据,根据键可以直接获取它的值。访问速度快,遍历时,取得数...原创 2020-03-10 17:30:21 · 228 阅读 · 0 评论 -
hashcode作用,重写equals、hashcode
hashcode的作用hashcode用于返回对象的散列值,用于在散列函数中确定放置的桶的位置hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的如果两个对象相同,就是适用于equals(java.lang.Object)方法,那么这两个对象的hashCode一定要相同如果对象的equals方法被...原创 2020-03-10 16:50:56 · 318 阅读 · 0 评论 -
简单介绍Java8新特性
Java8 新特性简述1. Lambda表达式Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)2. 方法引用方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码3. 默认方法默认方法就是一个在接口里面有一个实现的方法4. 新工具新的编译工具,如:Nashor...原创 2020-03-10 15:44:56 · 176 阅读 · 0 评论 -
自动装箱和自动拆箱:int与Integer(源码详解)
基本数据类型与对象的差别基本数据类型不是对象,也就是使用int、double、boolean等定义的变量、常量。基本数据类型没有可调用的方法int i = 1; //后面没有可以被调用的方法Integer i = 1;//后面有很多方法可以被调用int与Integer有什么区别?Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数...原创 2020-03-10 12:21:17 · 2070 阅读 · 0 评论 -
【GC】Java 垃圾回收机制
一、对象被判定为垃圾的标准没有被其他对象引用判断方法1. 引用计数算法判断对象的引用数量通过判断对象的引用数量来决定对象是否可以被回收每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1任何引用计数为0的对象实例可以被当作垃圾收集、优点:执行效率高,程序执行受影响较小缺点:无法检测出循环引用的情况,导致内存泄漏如:父对象对子对象引用,子对象又对父对象引用,永远也无...原创 2020-03-10 10:55:30 · 171 阅读 · 0 评论 -
org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException
问题:org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.原创 2020-02-29 16:46:03 · 27000 阅读 · 5 评论 -
springboot+layui:多文件上传到本地
html页面代码直接复制layui官方文档代码<div class="layui-upload"> <button class="layui-btn layui-btn-normal" id="testList" type="button">选择文件</button> <div class="layui-upload-list">...原创 2020-02-29 15:54:58 · 3406 阅读 · 7 评论 -
springboot+layui:请求上传接口异常 FileNotFoundException:MultipartFile file
文件上传时,chrome与IE/Edge对于originalFilename处理方式不同chrome会获取到该文件的直接文件名称,IE/Edge会获取到文件上传时完整路径/文件名 @RequestMapping(value="/uploadSource" , method = RequestMethod.POST) @ResponseBody public String upl...原创 2020-02-27 21:12:56 · 880 阅读 · 1 评论 -
不同JDK版本间intern()方法的区别——JDK6 VS JDK6+
String s = new String("a");s.intern():JDK6:当调用intern方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的该字符串的引用。否则,将此字符串对象添加到字符串常量池中,并且返回该字符串对象的引用。JDK6+:当调用intern方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中该字符串的引用。否则,如果该字符串对象已经存在于Ja...原创 2020-02-26 16:29:35 · 346 阅读 · 0 评论 -
Java内存模型,及其相关面试问题
Java内存模型原创 2020-02-23 14:16:50 · 357 阅读 · 0 评论 -
【JVM】元空间、堆、栈独占部份间的联系——内存角度
public class HelloWorld{ private String name; public void sayHello(){ System.out.println("Hello "+name); } public void setName(String name){ this.name = name; } ...原创 2020-02-23 14:11:43 · 642 阅读 · 0 评论 -
【JVM】元空间与永久代区别
永久代(PermGen)java.lang.OutOfMemoryError:PremGen space这里的“PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。前者是JVM的规范,而后者则是JVM规范的一种实现。并且只有HotSpot才有“PermGen space”,而对于其他类型的虚拟机,如JRockit(Oracle)、J9(I...原创 2020-02-23 13:31:39 · 1354 阅读 · 0 评论 -
JVM三大性能调优参数 -Xms -Xmx -Xss 简述
JVM内存的系统级的调优主要的目的是减少Minor GC的频率和Full GC的次数,过多的Minor GC和Full GC是会占用很多的系统资源,影响系统的吞吐量概念- -Xss:规定了每个线程虚拟机栈(堆栈)的大小JDK5.0以后每个线程堆栈大小为1M。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右...原创 2020-02-22 19:07:01 · 1160 阅读 · 0 评论 -
Java内存模型中堆与栈的区别
Java内存分配策略静态存储:编译时确定每个数据目标在运行时的存储空间需求栈式存储:数据区需求在编译时未知,运行时模块入口前确定堆式存储:编译时或运行时模块入口都无法确定,动态分配栈Java方法执行的内存模型包含多个栈帧每当创建一个新线程时,Java虚拟机都会为其分配一个Java栈。虚拟机只会对Java栈执行两种操作,以帧为单位的压栈和出栈。以线帧为单位存储,栈帧是一个内...原创 2020-02-22 18:42:34 · 210 阅读 · 0 评论 -
为什么会引发java.lang.OutOfMemoryError异常
内存溢出当一个线程可以动态地扩展本机方法栈,并尝试本地方法栈扩展(未大于配置允许最大的栈大小)时,无法提供足够的内存当为新线程创建初始的堆(如:new Object)时,无法提供足够的内存以上情况将会导致Java虚拟机抛出OutOfMemoryError异常...原创 2020-02-22 17:59:28 · 232 阅读 · 0 评论 -
递归为什么会引发java.lang.StackOverflowError异常
原因递归过深,栈桢数超过虚拟机栈数解决方法循环方法替代实现或限制递归次数原创 2020-02-22 17:39:20 · 1447 阅读 · 0 评论 -
【JVM】ClassLoder (双亲委派机制)
类从编译到执行的过程ClassLoader通过ClassLoader类加载器把class文件加载到JVM内存中,生成class对象【如何加载.class文件】loadClass() :加载到类,返回实例种类ExtClassLoader:getExtDirs()查询路径中需要的class文件,加载AppClassLoader:加载classpath目录下定义的class自定义Cla...原创 2020-02-19 17:45:27 · 145 阅读 · 0 评论 -
【JVM】如何加载.class文件(forName、loadClass)
Java虚拟机、内存模型、GCJava的类加载机制JVM将描述类的数据从class文件中加载到内存,然后对数据进行校验、准备和解析,最后初始化,形成在Java虚拟机中可以直接使用的Java类型类加载的两种动态机制方法隐式加载new一个对象;调用一个类的静态方法显示加载java.lang.Class的forName方法;java.lang.ClassLoad的loadClass方...原创 2020-02-19 13:34:12 · 435 阅读 · 0 评论 -
【Java】平台无关性
Java一、平台无关性二、GC三、语言特性四、面对对象五、类库六、异常处理一、平台无关性(Compile Once,Run AnyWhere)指一种语言在计算机上的运行不受平台的约束,一次编译,到处运行,即通过Java创建的可执行二进制程序,可以在多个平台上运行。Java程序可以运行在各种各样的设备上减少了开发和部署到多个平台的成本和时间(一)如何实现?javac编译生...原创 2020-02-19 12:39:41 · 335 阅读 · 0 评论 -
【Java】List常用类,ArrayList与Array区别,Queue的用法
ArrayList & LinkedListArrayList : 以数组方式来实现针对快速随机查询的需求,使用ArrayList执行效率较好(数组特性:便于索引快速定位对象位置)LinkedList :以链表方式来实现List接口进行插入删除等操作效率更高,适合用来实现Stack(堆栈)和Queue(队列)(链表特性:插入删除效率高)注: LinkedList的特有方法(本身定义...原创 2020-02-18 15:24:21 · 941 阅读 · 0 评论 -
springboot:spring-boot-starter-parent 导包失败 “not found"【暂且弃坑】
问题利用IntelliJ IDEA自动构建springboot项目时【参照】,出现spring-boot-starter-parent导包失败问题,如下图所示原因pom.xml中dependency是对repository里的某个artifact的引用。执行时会根据dependency的groupId,artifactId和version去repository中寻找它。无需在pom.xm...原创 2020-02-08 21:13:16 · 7617 阅读 · 0 评论 -
springboot:No mapping for GET /***
问题:学习资料@MapperScan注解使用Spring Boot MyBatis注解:@MapperScan和@MapperCannot resolve symbol ‘MapperScan’原创 2020-02-16 15:09:08 · 23167 阅读 · 3 评论