
java
文章平均质量分 68
↣我爱学习喔
虽然有点晚,但也要成为很厉害的人
展开
-
可达性分析算法(GC ROOT)的过程
可达性分析算法:(当前主流语言的内存管理子系统都是通过可达性分析算法来判断对象是否存活,Java语言同样,没有使用引用计数法算法的)基本思路:GC roots的对象作为起始节点集合,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为 引用链,如果某个对象到GC roots没有任何引用链相连,那么这个对象就被认为是可以回收的对象。GC Roots:虚拟机栈中引用的对象(各个线程被调用的方法堆栈中使用到的参数,局部变量,临时变量等) 方法区中静态对象,常量对象,字符串常量池中的对.原创 2020-11-12 14:24:30 · 1308 阅读 · 0 评论 -
Java线程状态转换
Java语言定义了5种线程状态,在任意一个时间点,一个线程只能有且只有其中的一种状态,这5种状态分别如下。新建(New):创建后尚未启动的线程处于这种状态。运行(Runable):Runable包括了操作系统线程状态中的Running和Ready,也就是处于此状态的线程有可能正在执行,也有可能正在等待着CPU为它分配执行时间。无限期等待(Waiting):处于这种状态的线程不会被分配CPU执行时间,它们要等待被其他线程显式地唤醒。以下方法会让线程陷入无限期的等待状态:●没有设置Timeout参原创 2020-11-11 18:27:08 · 111 阅读 · 0 评论 -
JVM创建对象的过程
本文讨论的是Java对象在jvm中创建的过程(不包括数组、Class对象的创建)类的加载、连接、初始化在语言层面上,我们创建对象需要new关键词来创建对象,当JVM遇到这个指令时,首先检查这个指令能否在常量池中定位到这个类的符号引用,并且要检查这个符号引用代表的类是否已经被加载、连接(验证、准备、解析)、初始化过,如果没有那么就去执行类加载过程,详见:类加载机制,这里不再赘述。新生对象分配内存的方式2.1 对象内存布局要分配新生对象内存,那么先得知道它所需内存大小,在HotSpot虚拟机中,对象原创 2020-11-07 14:01:35 · 273 阅读 · 0 评论 -
《剑指offer》二维数组中的查找
牛客:二维数组的查找题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路假设现在有一个数组:思路:我们每次选取最大列的最小值(最右上角的元素),与目标值比较如果小于目标值,那么说明这一行的值都小于,所以去除这一行,如果大于...原创 2020-04-28 12:22:10 · 127 阅读 · 0 评论 -
《spring》xml引入构造方法
通过 <constructor-arg ref=idname/>配置使用c名称空间引入在beans节点中添加属性xmlns:c="http://www.springframework.org/schema/c"在bean节点中添加属性c:构造方法形参名-ref="idname"eg:public class A{}public class B{ priva...原创 2020-04-05 12:18:01 · 282 阅读 · 0 评论 -
《复习》类加载过程
父类静态代码块:静态初始化块静态属性不包括静态方法子类静态代码块:静态初始化块静态属性不包括静态方法父类非静态块非静态初始化块非静态属性父类构造函数子类非静态块非静态初始化块非静态属性子类构造函数...原创 2020-04-05 10:55:36 · 143 阅读 · 0 评论 -
《Spring》注解初始化spring容器
注解初始化spring容器在需要被容器创建的类上方添加注解@Component在主类上方添加注解@ComponentScan主方法初始化spring容器ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);,这个构造方法参数是@ComponentScan所在的类对象主类....原创 2020-04-02 13:21:18 · 399 阅读 · 0 评论 -
《Spring》自动装配同一接口歧义解决方案
接口编程解决使用具体的对象而不是接口(不推荐)使用首选Bean(@primary)注意同时只能有一个@primary使用@Qualifier()注解接口实现类(类声明的地方)上使用@Qualifier(id)接口声明的地方(装配这个对象时)使用同样的@Qualifier(id),(id要相同)在接口实现类(类声明的地方)上使用@Component(id)接着在接口声明(装配...原创 2020-04-03 14:07:41 · 189 阅读 · 0 评论 -
《Spring》@Autowired的基本使用场景和参数
四种使用场景使用在有参构造函数上使用在成员变量上是用反射机制进行自动注入,效率较低使用在setter方法上使用在任意函数上参数requiredspring是默认将required 参数设置成true的,就是说默认会自动装配,有时候我们并没有或者目前并不想让他自动装配,那么就可以将required 修改成false...原创 2020-04-03 13:32:53 · 1715 阅读 · 0 评论 -
《Spring》用xml方式初始化spring容器
初始化spring容器前提:现在有hello.A hello.B两个对象需要在容器中初始化B对象中有A的一个对象a:package hello;public class A{}在这里插入代码片初始化利用<bean id="a" class="aClass"></bean>配置其中,id是用来标志对象的,之后的代码会用到class是当前由spr...原创 2020-04-02 14:02:50 · 426 阅读 · 0 评论 -
HTTP之session和cookie
无状态协议HttpHttp是一个无状态协议,就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的。这种无状态的好处是快速。坏处是需要进行用户状态保持的场景时[比如,登陆状态下进行页面跳转,或者用户信息多页面共享等场景],必须使用一些方式或者手段比如: session 和 cookiecookie为了解决登录时进行跳转的问题,引入了cookie,cookie是一种在浏览器端解决...原创 2020-03-29 12:23:06 · 192 阅读 · 0 评论 -
Java线程池
什么是线程池顾名思义,事先创建若干个可执行的线程放入到一个容器中,需要的时候从容器中直接获取线程而不用创建线程,使用完毕放回容器中而不用销毁,从而避免人为创建和销毁线程,提高了效率。创建线程池在Java中有一个工具类 Executors ,它提供了几种创建线程池的方法:newSingleThreadExecutor()创建一个单一线程的线程池,单线程串行执行所有任务。如果当前任务因为异常...原创 2020-03-20 11:27:00 · 97 阅读 · 0 评论 -
通过反射修改String的内容
通过反射修改String的内容 String str = "hello"; //源码中的value数组 Field filed = String.class.getDeclaredField("value"); //设置可访问 filed.setAccessible(true); //得到value数组 char[] chars = (cha...原创 2020-03-17 12:27:43 · 541 阅读 · 0 评论 -
mysql原理、调优笔记
mysql内部引擎myisaminnoDB:聚集索引:b+树叶子结点包含完整的数据[索引+数据]必须有主键原创 2020-03-05 16:34:08 · 162 阅读 · 0 评论 -
昨天朋友面试栽在了单例模式的线程安全问题
面试常见的几种单例模式不支持多线程的单例模式:懒汉式线程不安全:public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == nu...原创 2020-03-03 12:31:25 · 126 阅读 · 0 评论 -
面试必备jvm类加载器
什么是类的加载我们平时所编写的“xx.java”文件需要经过我们所知的java编译器(javac)编译成“xx.class”文件,这个文件存放着编译后jvm指令的的二进制信息。而**当我们需要用到某个类时,jvm将会加载它,并在内存中创建对应的class对象,这个过程称之为类的加载。**过程如下:类的加载、连接、初始化1. 加载通过类的包名和雷鸣查找到此类的字节码文件,将xx.class...原创 2020-02-29 15:32:07 · 675 阅读 · 2 评论 -
一般TopK问题建议的解法
甩一个例题:考虑到时间复杂度必须优于nlogn ,那么就不能用暴力搜索法首先利用map统计个元素出现的次数:Map<Integer, Integer> map = new HashMap<>();for (int x: nums) { map.put(x, map.getOrDefault(x, 0) + 1);}此时有两种处理思路:利用sort(...原创 2019-12-13 19:26:27 · 262 阅读 · 0 评论