自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 同步和异步的区别

我们可以将同步看成是单线的执行,即要么执行成功,要么执行失败,反正就是要返回一个结果,在没有得到这个结果之前什么都不干,就傻傻的等着。任务提交后不向系统交出控制权,持续等待。...

2022-08-03 21:00:05 157 1

原创 Java8 Optional 的常见操作

final Clazz clazz1 = new Clazz("1", "高一一班");final Student s1 = new Student("1", "张三", clazz1);final Student s2 = new Student("2", "李四", null);

2022-08-02 23:40:34 536

原创 Java8 lambda学习

一个参数,可省略参数外的括号。多个参数,不可省略参数的括号。单条语句,可省略语句的大括号。无参数,不可省略参数的括号。多条语句,语句需要加大括号。

2022-08-02 23:32:19 146

原创 Map遍历和按value值排序输出

一、问题导入。 输入一个字符串,将其按每个字符的频率从低到高的顺序输出。 输入:HelloWorld 输出:r(1)d(1)e(1)H(1)W(1)o(2)l(3) 分析此题,用Map存放每个字符及其对应出现的次数后,需要按照value值的大小来对key排序。import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.

2022-04-17 21:50:56 1308

原创 LeetCode168 简单题 Java题解

题目描述给定一个正整数,返回它在 Excel 表中相对应的列名称。例如,1 -> A2 -> B3 -> C…26 -> Z27 -> AA28 -> AB示例 1:输入: 1输出: “A”示例 2:输入: 28输出: “AB”示例 3:输入: 701输出: “ZY”思路首先要理解进制转换,参考:https://zhuanlan.zhihu.com/p/75006709本题中需要注意不是直接的

2022-03-31 13:04:02 581

原创 LeetCode26 简单题 Java题解

题目描述给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。Java语言版首先根据题目描述,有序数组说明重复的元素一定相邻。要求返回移除重复元素后数组的新长度.

2022-03-31 13:02:31 123

原创 索引的底层数据结构为什么使用B+树?

1.常见的索引结构有: B 树, B+树和 Hash,所针对的引擎是不同的。2.为了提升查询的效率,要尽可能少的从磁盘中读取数据3.同时要保证读取的数据足够有效,所以要分块读取4.磁盘跟内存进行交互的时候,是以页为单位的,在进行数据读取的时候,一般都是读取的页的整数倍,innodb存储引擎默认读取的是16kb的数据5.这时候,考虑使用树结构,二叉树,AVL,红黑树都有一个问题,树的分支只有两个,想要往这些树中结构插入更多的数据时,树的结构变得更深,导致次数变多,查询效率下降6.基于此,考

2022-03-01 10:50:29 490

原创 进程和线程的区别

线程与进程的比较如下:1.进程是资源(包括内存、打开的文件等)分配的单位,线程是CPU调度的单位;2.进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈;3.线程同样具有就绪、阻塞、执行三种基本状态,同样具有状态之间的转换关系;4.线程能减少并发执行的时间和空间开销;对于,线程相比进程能减少开销,体现在:1线程的创建时间比进程快,因为进程在创建的过程中,还需要资源管理信息,比如内存管理信息、文件管理信息,而线程在创建的过程中,不会涉及这些资源管理信息,而是共享它们;

2022-02-26 01:30:45 5118

原创 最长递增子序列输出路径

如何输出字典序最小的路径?想获得路径,我们需要O(N^2)的朴素做法去得到dp数组。有的朋友建议在更新dp数组的过程中更新pre。这样一定能得到一个结果,但是如果判断字典序是否最小就比较麻烦了,因为原数组是无序的。建议大家额外二重for循环遍历去求解。class Solution { public int lengthOfLIS(int[] nums) { int[]dp= new int[nums.length]; if (nums.length == 0)

2022-02-25 15:14:12 482

原创 求x的平方根,精确到6位小数

用二分法来一波.....使用double进行赋值public static void main(String[] args) { System.out.println(mySqrt(8));}public static double mySqrt(int num) { double left = 0; double right = num; while (left < right) { double middle = (left + rig.

2022-02-24 03:01:12 707

原创 计算机网络HTTP复习

1.HTTP状态码1xx1xx 类状态码属于提示信息,是协议处理中的⼀种中间状态,实际⽤到的⽐较少。2xx2xx 类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。「200 OK」是最常⻅的成功状态码,表示⼀切正常。如果是⾮ HEAD 请求,服务器返回的响应头都会有 body数据。「204 No Content」也是常⻅的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。「206 Partial Content」是应⽤于 HTTP 分块下载或断点续传,.

2022-02-21 20:33:00 119

原创 java中Scanner和Integer.paseInt(sc.nextLine())转换

用Scanner先获取一个int值,再获取一个字符串就出现了问题。解决办法:1. 再创建一个键盘录入对象,再获取字符串。2. 把所有的数据都以字符串的形式录入,然后使用什么,转换成什么形式。如:int xx2 = Integer.parseInt(sc.nextLine());//将字符串转换成int值public static void main(String[] args) { // String类的练习 System.out.println("Stri

2022-02-21 20:32:41 550

原创 Java线程常见代码

1.死锁public class DeadLockDemo { private static Object resource1 = new Object();//资源 1 private static Object resource2 = new Object();//资源 2 public static void main(String[] args) { new Thread(() -> { synchronized (res

2022-02-10 03:05:41 568

原创 JVM类加载过程

1.类的生命周期?类加载的过程了解么?加载这一步主要做了什么事情?初始化阶段中哪几种情况必须对类初始化?https://javaguide.cn/java/jvm/class-loading-process/#2.双亲委派模型双亲委派模型要求除了顶层的启动类加载器外,其余的类加载都应当有自己的父类加载器。这里类加载器之间的父子关系一般不会以继承的关系来实现,而是都使用组合关系(一个类持有另一个类)来复用类加载器的代码。类加载器之间的“父子”关系也不是通过继承来体现的,是由“优先级”来决定

2022-02-09 21:19:58 296

原创 JVM内存区域

1.说一下方法区和永久代的关系。《Java 虚拟机规范》只是规定了有方法区这么个概念和它的作用,并没有规定如何去实现它。那么,在不同的 JVM 上方法区的实现肯定是不同的了。 方法区和永久代的关系很像 Java 中接口和类的关系,类实现了接口,而永久代就是 HotSpot 虚拟机对虚拟机规范中方法区的一种实现方式。 也就是说,永久代是 HotSpot 的概念,方法区是 Java 虚拟机规范中的定义,是一种规范,而永久代是一种实现,一个是标准一个是实现,其他的虚拟机实现并没有永久代这一说法。2.J

2022-02-08 02:09:20 620

原创 JVM-GC复习

1.堆->分区(由于使用的算法不同)2.jvm有哪些垃圾回收器,实际中如何选择?图中展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,则说明它们可以搭配使用。虚拟机所处的区域则表示它是属于新生代还是老年代收集器。新生代收集器(全部的都是复制算法) : Serial、ParNew、Parallel Scavenge老年代收集器:CMS(标记-清理)、Serial Old(标记-整理)、Parallel Old(标记整理)整堆收集器:G1 (一个Region中是标

2022-02-06 02:07:33 926

原创 JVM 虚拟机栈

Java 虚拟机栈是由一个个栈帧组成,而每个栈帧中都拥有:局部变量表、操作数栈、动态链接、方法出口信息

2022-02-06 00:21:24 726

原创 mysql如何做分库分表的

使用mycat或者shardingsphere中间件做分库分表,选择合适的中间件,水平分库,水平分表,垂直分库,垂直分表在进行分库分表的时候要尽量遵循以下原则:1、能不切分尽量不要切分;2、如果要切分一定要选择合适的切分规则,提前规划好;3、数据切分尽量通过数据冗余或表分组来降低跨库Join的可能;4、由于数据库中间件对数据Join 实现的优劣难以把握,而且实现高性能难度极大,业务读取尽量少使用多表join。...

2022-02-05 03:30:47 1157

原创 京东科技Java实习面经

1.arraylist和linkedlist2.实现多线程的方式,两个线程交替执行3.springmvc拦截器和过滤器4.LocalThread5.mysql索引类型,应用场景,性别为什么不能建索引6.explain 如何评估7.类加载机制8.锁,信号量,synchronized 底层原理9.redis常用数据结构10.过期数据删除机制11.项目为什么采用这样的框架12.字符串反转...

2022-02-02 01:31:52 1527

原创 索引的底层数据结构为什么使用B+树?

1.常见的索引结构有: B 树, B+树和 Hash,所针对的引擎是不同的。2.为了提升查询的效率,要尽可能少的从磁盘中读取数据3.同时要保证读取的数据足够有效,所以要分块读取4.磁盘跟内存进行交互的时候,是以页为单位的,在进行数据读取的时候,一般都是读取的页的整数倍,innodb存储引擎默认读取的是16kb的数据5.这时候,考虑使用树结构,二叉树,AVL,红黑树都有一个问题,树的分支只有两个,想要往这些树中结构插入更多的数据时,树的结构变得更深,导致次数变多,查询效率下降6.基于此,考

2022-02-02 01:26:50 196

原创 Java基础复习3

1.Java 语言的特点面向对象(封装,继承,多态)平台无关性( Java 虚拟机实现平台无关性)->>>>> .java ->.class2.比较 JVM 和 JDK 以及 JRE3.为什么说 Java 语言“解释与编译并存”4.Java 基本类型有哪几种,各占多少位?5.Java 泛型,类型擦除。...

2022-01-30 01:59:54 44

原创 MySQL索引复习m2

1.索引原理2.索引失效的情况?1、组合索引不遵循最左匹配原则2、组合索引的前面索引列使用范围查询(<,>,like),会导致后续的索引失效3、不要在索引上做任何操作(计算,函数,类型转换)4、is null和is not null无法使用索引5、尽量少使用or操作符,否则连接时索引会失效6、字符串不添加引号会导致索引失效7、两表关联使用的条件字段中字段的长度、编码不一致会导致索引失效8、like语句中,以%开头的模糊查询9、如果mysql中使用全表扫描比使用索引

2022-01-26 00:52:14 107

原创 MVCC学习笔记

1.事务ACIDACID:原子性: undo log (mvcc)一致性:最核心和最本质的要求隔离性:锁,mvcc(多版本并发控制)持久性: redo log

2022-01-25 21:54:35 125

原创 JVM内存模型

1.描述一下jvm内存模型,以及这些空间的存放的内容?

2022-01-25 01:09:20 157

原创 多线程m3

1.服务器CPU数量及线程池线程数量的关系?首先确认业务是CPU密集型还是lO密集型的,如果是CPU密集型的,那么就应该尽量少的线程数量,一般为CPU的核数+1;如果是IO密集型:所以可多分配一点 cpu核数*2也可以使用公式:CPU核数Ⅰ(1-阻塞系数);其中阻塞系数在0.8~0.9之间。CPU密集型:加密,解密,压缩各种算法lO密集型:文件操作2.多线程之间是如何通信的?多进程之间通讯:信号量、信号、套接字、有名管道、无名管道、共享内存、mq由于...

2022-01-23 21:50:50 168

原创 Java实现堆

使用优先队列实现堆class MaxHeap { private int[]data ; private int count ; private int capacity; public MaxHeap(int capacity) { data = new int[capacity + 1]; count=0 ; } public int size() { return count; } .

2022-01-23 16:30:32 276

原创 多线程m2

1.什么是并发?什么是并行?举例~2.并发与并行会造成什么影响? 资源的争抢,死锁~3.如何解决这些影响?线程互斥,上锁lock ,管程->>>>>>pv操作(原子操作)4.简单描述一下ABA问题?是什么-> cas ->解决,加版本号1.有两个线程同时去修改一个变量的值,比如线程1、线程2,都更新变量值,将变量值从A更新成B。⒉首先线程1、获取到CPU的时间片,线程2由于某些原因发生阻塞进行等待,此时线程1...

2022-01-23 01:57:13 124

原创 Java多线程复习1

1.如何预防死锁?1.首先需要将死锁发生的是个必要条件讲出来2.死锁预防,那么就是需要破坏这四个必要条件1.由于资源互斥是资源使用的固有特性,无法改变,我们不讨论⒉破坏不可剥夺条件 (1.一个进程不能获得所需要的全部资源时便处于等待状态,等待期间他占有的资源将被隐式的释放重新加入到系统的资源列表中,可以被其他的进程使用,而等待的进程只有重新获得自己原...

2022-01-23 00:41:35 119

原创 Java基础m2

1.equals()和==区别。为什么重写equal要重写hashcode?2.

2022-01-19 22:25:55 633

原创 Java基础m1

1.请聊一下java的集合类,以及在实际项目中你是如何用的?参照java集合一章,注意说出集合体系,常用类接口实现类,加上所知道的高并发集合类,JUC参照集合增强内容,在实际项目中引用,照实说就好了(弱化),问集合的引子... ...2.Hashmap为什么要使用红黑树?在jdk1.8版本后,java对HashMap做了改进,在链表长度大于8的时候,将后面的数据存在红黑树中,以加快检索速度红黑树虽然本质上是一棵二叉查找树,但它在二叉查找树的基...

2022-01-19 02:34:46 267

原创 Java基础复习02

1.Java 异常2.JVM vs JDK vs JRE3.List和Set4.String StringBuffer 和 StringBuilder1. String是不可变的,如果尝试去修改,会新生成一个字符串对象,StringBuffer和StringBuilder是可变的2.stringBuffer是线程安全的,StringBuilder是线程不安全的,所以在单线程环境下StringBuilder效率会更高String是final修饰的,不可变,每次操作都会产生新的Strin

2022-01-19 00:35:35 40

原创 Java基础复习01

1.==和equals2.Arraylist 与 LinkedList 区别?ArrayList:基于动态数组,连续内存存储,适合下标访问(随机访问),扩容机制:因为数组长度固定,超出长度存数据时需要新建数组,然后将老数组的数据拷贝到新数组,如果不是尾部插入数据还会涉及到元素的移动(往后复制一份,插入新元素),使用尾插法并指定初始容量可以极大提升性能、甚至超过linkedList(需要创建大量的node对象)LinkedList:基于链表,可以存储在分散的内存中,适...

2022-01-17 22:14:27 224

原创 寒假刷题打卡209. 长度最小的子数组

核心思路:计算low,fast区间的值,如果小于target就移动fast指针,如果大于等于就移动low指针,并记录下fast - low即区间长度!其实这里滑动窗口只是 双指针的应用(快慢指针)! public int minSubArrayLen(int target, int[] nums) { int res = Integer.MAX_VALUE ; int sum = 0; int i =0 ; int subLengt...

2022-01-16 23:11:33 148

原创 mysql数据库学习

嗯,也没啥总结的,算是知识的搬运工吧~事务相关什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。事物的四大特性(ACID)介绍一下?原子性: 事务是最小的

2022-01-15 01:45:48 55

原创 初学NIO

对于NIO,它是非阻塞式,核心类:1.Buffer为所有的原始类型提供 (Buffer)缓存支持。2.Charset字符集编码解码解决方案3.Channel一个新的原始 I/O抽象,用于读写Buffer类型,通道可以认为是一种连接,可以是到特定设备,程序或者是网络的连接。...

2022-01-07 21:43:12 213

原创 抽象类与接口

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。另外,接口和抽象类在方法上有区别:1.抽象类可以有构造方法,接口中不能有构造方法。2.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。3.抽象类中可以有普通成员变量,接口中没有普通成员变量4. 抽象类中的抽象方法的访问类型可以是p...

2022-01-07 21:38:52 41

原创 Java interface 中的变量和方法

一.interface中的变量都是默认public static final修饰的二.interface中的方法都是默认public abstract修饰的注意点:  这些修饰词可以省略一个,也可以省略多个(甚至都省略),但是不能用其他修饰词修饰.  不写public 不是默认的 default;写default会报错  例如:    变量:      public static final int MAX_LENGTH = 1000;      final int MAX_

2022-01-04 23:33:59 1362

原创 如何自己构造二叉树输入用例?

搜了挺多文章,没见到有用Java 写二叉树输入的,于是参照代码随想录的内容自己写了一个~~~public static void main(String[] args) { int[] nums = new int[]{4, 1, 6, 0, 2, 5, 7, -1, -1, -1, 3, -1, -1, -1, 8}; TreeNode root = createNode(nums); List<List<Integer>> res = level

2021-12-26 21:09:12 1010

原创 刷题的小总结(双指针)

今天刷几题有关数组的题,都可以用双指针的思路,以后面对数组原地操作的的题也可以考虑双指针~~~~~~~~26. 删除有序数组中的重复项https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/双指针解法一个指针 i 进行数组遍历,另外一个指针 j 指向有效数组的最后一个位置。只有当 i 所指向的值和 j 不一致(不重复),才将 i 的值添加到 j 的下一位置。class Solution { pub...

2021-12-25 22:26:09 453

原创 mysql基本命令

好久没写SQL,这就来复习一波~~~  1、show databases;查看所有的数据库  2、create database data_name;创建数据库  3、show tables;查看所有的数据表  4、create table liuzhu(  id int(11) not null auto_incertment,  name char(10)  )engine=Innodb  创建数据表  5、create index index_nam...

2021-12-24 21:27:06 350

桂电操作系统期末复习手写笔记.pdf

桂电操作系统期末复习手写笔记.pdf

2022-01-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除