- 博客(10)
- 收藏
- 关注
原创 jvm内存区域的划分以及运行时对象存储位置
jvm内存区域的划分以及运行时对象存储位置程序计数器虚拟机栈本地方法栈堆方法区运行时常量池直接内存jvm的内存区域分为程序计数器、本地方法栈、虚拟机栈、堆、方法区程序计数器当字节码解释器在工作的时候,就是通过改变程序计数器的值来选取下一条要执行的代码,例如分支、循环、跳转、异常处理都是通过程序计数器的值的变更来实现的,当执行的方法为Native方法时程序计数器为空(Undefined)。由于Java的多线程是通过线程轮流切换并分配处理器时间来实现的,所以在任意一个确定的时刻,一个处理器都只会执行一个线
2021-01-28 18:55:27
850
原创 类的加载时机
类的加载时机chushihua到卸载出内存,一共需要经历加载、验证、准备、解析、初始化、使用、卸载七个阶段,其中验证、准备、解析统称为连接,连接是全程由虚拟机进行控制的,步骤如下加载、验证、准备、初始化、卸载这五个阶段的时间是确定的,解析则有可能在某些特定的环境之下在初始化之后开始。这些阶段是按部就班的开始而不是进行或者完成,因为这些步骤通常是由一个步骤调用了其他步骤。加载的时间虚拟机并未强制指定,但是在初始化阶段,规定了五种情况必须立即进行初始化,进行初始化之前加载、验证、准备、是已经完成的。(1
2021-01-28 15:35:20
277
原创 jvm加载类的加载过程详解
类的加载过程详解加载加载时类加载的一个阶段,不是类加载。首先是通过全限定类名获取定义这个类的二进制字节流。将这个字节流中所代表的静态存储结构转换为方法区的运行时数据结构,也就是将静态资源放置在方法的运行时常量池中。再内存中生成一个这个类的class对象,作为方法区中这个类的各种数据访问入口。//数组和非数组对象的加载略有不同,稍后补充验证首先要进行的是文件格式验证,验证是否能够被虚拟机处理解析:(1) 是否是以魔数0xCAFEBABE开头。(魔数:每个class文件的头四个字母,作用
2021-01-26 22:25:06
286
原创 集合、流、多线程的总结,不是底层,适用于入行不久的同志们闲的时候看,不是很详细,主要是流程性的东西
在接触java之初,面试最常问,开发最常用的东西首先就是集合看集合要理清思路,区分类别,其实常用的也就是这两个 List Map Set根据这两个接口延伸出了N个实现类,也就是我们实际中使用的集合:List1.ArrayList:ArrayList为什么是增删慢,查询快,因为底层是数组;那么为什么又能添加数据呢,ArrayList的底层数据默认长度是10,等等,我写过,自己去看。2.linkedList:linkedlist底层是链表结构,所以就实现了增删方便但是查询的时候没有索引
2021-01-09 15:53:15
134
原创 nginx的纯代理转发简单配置
一部分转载:https://www.cnblogs.com/AdamChen/p/12431533.html根据请求的不同,转发到不同的项目worker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_tim
2020-12-26 16:56:06
605
原创 java后端项目获取resin配置的虚拟路径,从而对请求的uri进行操作实现权限控制
java后端项目使用resin发布时,必须配置一个路径,指向自己的项目,在conf/resin.xml中 <host id="" root-directory="."> <!-- - webapps can be overridden/extended in the resin.xml --> <web-app id="/" root-directory="webapps/ROOT"/>
2020-12-25 17:20:26
312
原创 ArrayList如何进行的扩容以及数组扩容方式
初始化arraylist请童鞋们自己去百度,我们从添加开始看点开arraylist的源码,查看add方法,初始化的size进行+1作参看见没,数组的第++个元素等于参数,懂吧private int size;transient Object[] elementData;public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[
2020-12-18 17:47:54
445
3
原创 springboot项目启动后10秒后执行一个方法且只执行一次,直接启动方法中的工具类很可能还没加载进ioc
最近再写一个爬虫的项目,我希望项目启动之后就开始执行我的启动方法,所以我给方法加了@PostConstruct注解,让项目启动之后就开始执行。注意哈,这个注解作用在方法,这个类一定是可以被扫描的,我加了一个@service,应该@compent应该也可以。@Servicepublic class ThreadRunDemo { private static Map<String,Thread> threadMap = new HashMap(); @PostConstruc
2020-12-16 11:18:58
2397
1
原创 springboot中添加了@compent标签但是在service或者工具类注入时为null
首先 在springboot的注入方式有三种:构造方法、setter、依赖注入。setter我也不懂底层,当然我也不用。构造方式就是手写一个构造方法,然后将用到的到dao或者service在里面进行处理(这不是重点)public class userService{ private UserDao userDao; public void UserService(UserDao userDao){ this.userDao = userDao;
2020-12-16 10:53:58
941
1
原创 sql语句函数总结
查询时判断某个字段的长度:where LENGTH(字段名) < a a代表字符长度判断长度大于a且不等于null: where LENGTH(product_name) < a and product_name is not null (等于null去掉not)查询时排序字段为null,null默认最大值,所以在asc/desc时在最下方或者最上方,同时在排序字段前添加ISNULL()函数可以进行处理 order by not ISNULL(issue_date) , issue_
2020-11-18 11:05:38
335
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人