03 2022 档案
摘要:在一个应用程序中,我们需要多次使用线程,也就意味着,我们需要多次创建并销毁线程。而创建并销毁线程的过程势必会消耗内存。而在Java中,内存资源是及其宝贵的,所以,我们就提出了线程池的概念。 线程池:Java中开辟出了一种管理线程的概念,这个概念叫做线程池,从概念以及应用场景中,我们可以看出,线程池的
阅读全文
摘要:#1. 线程和进程有什么区别? 线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一
阅读全文
摘要:创建类有四种方式: 1、使用new 2、使用反射机制。首先获取到.class文件,然后调用newInstance()实例方法,其返回的是Object类型,要进行显式转换。 3、调用对象的clone()方法。 4、实现Serializable接口,调用java.io.ObjectInputStream
阅读全文
摘要:StackOverflowError 本地方法栈和虚拟机栈是线程所私有的,每个方法在执行的时候就会创建一个栈帧,它包含局部变量表、操作数栈、动态链接、方法出口等信息,局部变量表又包括基本数据类型和对象的引用; 产生原因:当前线程请求的栈深度超过了虚拟机所允许的栈深度,常发生在递归或者死循环当中。 可
阅读全文
摘要:参考链接:[https://blog.csdn.net/ma_chen_qq/article/details/82990603] https://blog.csdn.net/ThinkWon/article/details/102074107 java内存模型是共享内存的并发模型,线程之间主要通过读
阅读全文
摘要:基础知识的反射、泛型还没有看 Collections和Collection的区别 Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。 Collection 是各种集合接口的父接口,继承它的接口主要有Set和List,
阅读全文
摘要:打开一个网页,整个过程会使用哪些协议? DNS 解析 TCP 连接 发送 HTTP 请求 服务器处理请求并返回 HTTP 报文 浏览器解析渲染页面 连接结束 悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享
阅读全文
摘要:StringBuilder和StringBuffer都继承自AbstractStringBuilder StringBuilder性能高,当时线程不安全。 StringBuffer线程安全。 String不可变 value字符数组使用final进行修饰,因此value的引用的地址不可变,但是这个地址
阅读全文
摘要:什么是自动拆装箱? 装箱:将基本类型用它们对应的引用类型包装起来; 拆箱:将包装类型转换为基本数据类型; 面向对象和面向过程的区别 两者的主要区别在于解决问题的方式不同: 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。 面向对象会先抽象出对象,然后用对象执行方法的方式解决问题
阅读全文
摘要:转载链接:https://javaguide.cn/java/basis/java-basic-questions-01.html#hashcode-%E4%B8%8E-equals 原博主讲的很好! == 和 equals() 的区别 == 对于基本类型和引用类型的作用效果是不同的: 对于基本数据
阅读全文
摘要:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) {
阅读全文
摘要:这题主要是利用二叉法递归划分左右子树,有时间重做一下! class Solution { public boolean verifyPostorder(int[] postorder) { int root=postorder.length-1; return vertify(postorder,0
阅读全文
摘要:参考blog指路:https://blog.csdn.net/xiao_a_ruo_ya/article/details/98850706 Java集合又称为容器,用于存储、提取、删除数据。JDK提供的集合API都包含在 java.util 包内。 集合的分支: 集合框架两大分支:Collectio
阅读全文
摘要:LinkedList其实也就是我们在数据结构中的链表,这种数据结构有这样的特性: 分配内存空间不是必须是连续的; 插入、删除操作很快,只要修改前后指针就OK了,时间复杂度为O(1); 访问比较慢,必须得从第一个元素开始遍历,时间复杂度为O(n); 添加元素 add boolean add(E e):
阅读全文
摘要:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
阅读全文
摘要:class MinStack { /** initialize your data structure here. */ private Stack<Integer> minStack; private Stack<Integer> helpStack; public MinStack() { mi
阅读全文
摘要:class Solution { public int minArray(int[] numbers) { int start=0,end=numbers.length-1; int mid=0; while(start<end){ mid=start+(end-start)/2; if(numbe
阅读全文
摘要:class Solution { public int findMin(int[] nums) { int start=0; int end=nums.length-1; int mid=0; while(start<end){ mid=start+(end-start)/2; //只使用相邻的mi
阅读全文
摘要:while比for的效率更低 class Solution { public int[] reversePrint(ListNode head) { Stack<Integer> stack=new Stack<Integer>(); if(head==null){ return new int[0
阅读全文
摘要:动态规划就是为了避免多次重复的计算,也就是保留历史数据,这个历史记录的数据格式可以使用一维或者二维的数组进行保存。 动态规划分为以下三步: 一、定义dp数组的意义 即明确这个dp数组的各个元素代表的是什么意思 二、找出各数组元素之间的关系式 动态规划,还是有一点类似于我们高中学习时的归纳法的,当我们
阅读全文
摘要:class Solution { public int numWays(int n) { if(n==0){ return 1; } if(n<=2){ return n; } int[] dp=new int[n+1]; dp[0]=1; dp[1]=1; dp[2]=2; //随着 nn 增大,
阅读全文
摘要:class Solution { public boolean isSubStructure(TreeNode A, TreeNode B) { boolean result=false; if(A!=null&&B!=null){ if(A.val==B.val){ result=isTrue(A
阅读全文