自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 快手校招Java后端面经

快手1面(3.10,近40分钟)自我介绍hashmap的底层数据结构,hashmap扩容机制,hashmap扩容死链问题,jdk1.8时是如何解决,还有其它解决办法?(答了加锁,如hashtable,因为jdk1.8虽然能防止出现死链问题,但仍然有并发问题)mysql的sql是如何执行的,从sql语句到存储引擎的执行流程(这个我直接说不知道)mysql索引了解吗?为何使用b+树知道聚簇索引和普通索引的区别?知道索引覆盖?如果一个字段的值为null,查询会走索引?算法:判断一颗树是否是排序树反

2022-03-24 16:51:03 1374

原创 java后端秋招面经

秋招已经结束,说说我的秋招经历吧⠀我是今年1月份才开始准备春招(其实已经算晚的了),所以春招基本上都是一面就挂了。但春招也让我认识到自己有哪些不足,至少在春招就把很多坑都踩了。⠀秋招我是7月20开始投简历,8月基本都是在笔试。9月才开始面试。很多大厂都是挂在了笔试,感觉自己笔试这块还是没有准备充分。⠀⠀⠀⠀⠀下面是秋招面经,基本按时间顺序写的。网易一面(8.30)自我介绍java有哪些基本数据类型try中的return是在finally前执行?装箱和拆箱hashcode==和e

2021-11-25 17:19:05 1654 1

原创 java并发总结

一、并发基础ㅤ1、进程与线程ㅤ进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)线程一个进程之内可以分为一到多个

2021-10-11 22:24:17 11111 1

原创 redis总结

一、五大数据类型相关命令参考https://www.redis.net.cn/tutorial/3508.html1、string相关命令重要的几个关于key的命令keys [表达式] #匹配指定keyexists key # 判断当前的key是否存在move key [num]# 移除指定num数据库的keydel key key #移除当前所在数据库的key(和上面的move类似)expire key [num] 设置key过期时间ttl key # 查看当前key的剩余时间t

2021-10-11 22:02:42 246

原创 jvm疑难点总结

双亲委派机制为何可以防止核心API被篡改?因为每个类加载器都只会去加载指定目录下的包,即使自己定义了java.lang.String的类,加载该类时类加载器会委托父类加载器加载,最终到引导类加载器,引导类加载器只加载lib目录下面的类。ㅤ关于栈帧中的动态链接问题这里涉及到方法的调用方法的调用:在Jvm中,将符号引用转换位调用方法的直接引用,与方法的绑定机制相关。静态链接: 当一个字节码文件被装载进JVM内部时,如果被调用的目标方法在编译期可知,且运行期保持不变。 将调用方法的

2021-10-10 17:14:08 139

原创 mysql中using index、using where、using index condition的区别

using index、using where、using whereusing index :使用覆盖索引的时候就会出现,测试时主键索引也会生效using where:在查找使用索引的情况下,需要回表去查询所需的数据using index condition:查找使用了索引,不需要回表查询,因为要过滤的字段在索引中using index & using where:查找使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据(联合索引很容易出现这样的结果)举个例子其中ro

2021-10-10 16:44:02 12795 3

原创 ReentrantLock&AQS源码分析

1、ReentrantLock的几个特点可中断可以设置超时时间可以设置为公平锁支持多个条件变量与 synchronized 一样,都支持可重入2、AQS原理AQS内部主要维护了一个双向队列和一个状态state在独占模式中,双向队列存储了所有阻塞的节点(当然也有被取消的节点)节点存储了当前线程,每个节点也有几个状态,其中1表示节点被取消-1表示该节点后面的节点需要被唤醒-2表示节点在条件变量中AQS中的state变量的几个状态0表示无锁1表示有锁大于1表示可重入锁

2021-07-11 18:45:31 130

原创 无锁&偏向锁&原子整型&轻量级锁在无锁竞争下的效率对比

文章目录1、无锁2、偏向锁3、原子整形4、synchronized轻量级锁5、总结1、无锁private final static int TEST_VALUE=999999999;public static void main(String[] args) { long l=0; long l1 = System.currentTimeMillis(); for(long i=0;i<TEST_VALUE;i++){ l++; }

2021-07-11 17:10:01 207

原创 java关于Locksupport.unpark的一个bug

关于park和unpark的原理我就不说了。今天遇到一个关于连续使用park和unpark的bug样例如下:@Test public void parkAndUnPark(){ Thread t=Thread.currentThread(); new Thread(()->{ try { Thread.sleep(1000); log.debug("unpark1");

2021-07-07 18:58:58 374 2

原创 编译时常量的解释(static final)

直接解用个例子来说明吧class A{ public static final int a=15; public static final int b=Integer.valueOf(15);}上面的变量a是编译时常量,b是运行时常量当另外一个类引用这两个变量时,如下class B{ public static void main(String[] args) { int v1=A.a; int v2=A.b;

2021-05-12 22:55:04 501

原创 java线程池源码详细分析(ThreadPoolExecutor)

前置工作一般我们使用的java线程池的大多都是由ThreadPoolExecutor所生成的。类结构图如下:在说源码前,先说明几个概念,这几个概念不弄明白,那源码也很难看懂。首先是线程池的状态和数量在线程池中是如何表示的ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态,低 29 位表示线程数量在线程池中使用了一个AtomicInteger类型的变量来保存线程池的状态和数量不妨看看源码是如何定义的:private final AtomicInteger ct

2021-04-28 18:14:34 703

原创 SpringMVC中视图解析器源码分析

SpringMVC中视图解析器源码分析该篇博客只分析视图解析器源码,如果想看DispatcherServlet的具体流程,请看SpringMVC中DispatcherServlet源码直接进入视图解析的入口,如下进入该方法关键的一行代码如上,进入render()方法protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception {

2020-12-19 21:04:30 264 2

原创 SpringMVC中DispatcherServlet源码分析

SpringMVC中DispatcherServlet源码分析很久以前就学了springmvc,一直好奇springmvc内部细节,今天就跑了一遍springvmc中DispatcherServlet。springmvc的入口就是DispatherServlet点进源码DispatherServlet,看到如下:public class DispatcherServlet extends FrameworkServlet servlet的入口是service方法,但在DispatcherServ

2020-12-19 20:53:53 241 1

原创 C语言中结构体长度计算

结构体的长度并不是简单地将结构体地所有成员相加它中间会出现偏移量,我们以下为例现有如下结构体:struct good{ char c; int id; char g; int shop; double price; int num; char rec[50];}我们假设初始地址开始为0c的长度为1,0可以整除1,当c填充到内存后地址加1,即此时到了地址为1的位置id...

2019-12-23 19:51:33 4610

原创 JSTL的核心标签库基础

JSTL的核心标签库使用:1 . 导入jar包2 . 声明jstl标签库的引入(核心标签库)<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>基本标签:<c:out value=“数据” default=“默认值”></c:out>数据可以为常量值也可以是EL表达式作用:...

2019-10-08 16:02:35 161

原创 EL标签基础

EL标签作用:获取作用域对象中的数据。注意:获取的是pageContext,request,session,application四个对象中的数据,其他数据一概不理会,使用El标签可以不导入其它包。语法:${表达式}表达式:1 . 获取request对象存储了请求数据${param.键名}------返回一个值${paramvalues.键名}------返回一个数...

2019-10-08 15:32:00 1006

原创 JSP基础知识总结

JSP的三种注释前端语言注释:<!- - 注释内容 - ->会被转译,也会被发送,但是不会被浏览器执行java语言注释:// /* */会被转译,但是不会被servlet执行JSP注释:<%-- --%>不会被转译..JSP的page指令作用:配置jsp文件的转译相关的参数。使用:<%@page 属性名=“属性值” …%>属性:...

2019-10-08 14:53:30 209

原创 简单的画图工具(C语言)

我们需要调用<graphics.h>库里面的一些函数,里面的函数功能我就不介绍了,大家可以百度或者看书。下面这个界面就是我们这次的目标。首先我们初始化一个界面这就要用到initgraph函数例如:initgraph(700, 500);在界面里面添加字符比如添加"颜色"二字:outtextxy(10, 10, L"颜"); outtextxy(10, 30...

2019-05-11 18:32:01 22668 8

原创 C语言文件处理所遇到的一些问题和解决方法

1.关与removeremove用法:remove(“文件名”);作用:删除某文件注意:用这个函数时一定要先关闭文件,再删除,否则就会删除失败。2:关于renamerename用法:rename(“原文件名”,“新文件名”);作用:修改某文件的名称注意:这个和remove类似,都要先关闭文件,再删除。在调用函数时,如果被调用函数里面用到了remove和rename,一定要在调用函数...

2019-05-10 20:03:48 1053

原创 栈的应用———四则运算表达是求值

我们先看看后缀表达式:9 3 1 -3 *+10 2 / +规则:从左到右遍历表达式的每个数字和字符,遇到是数字就进栈,遇到是符号,就将处于栈顶的两个数字出栈,运算结果进栈,一直到获得最终结果中缀表达式“9+(3-1)* 3 + 10 / 2”叫中缀表达式规则:从左到右遍历中缀表达式的每个数字和字符,是数字则输出,即成为后缀表达式的一部分;若是符号或优先级不高于栈顶符号(乘除优先加减)则栈顶...

2019-04-10 19:17:30 194

转载 最长公共子序列(动态规划)

//萌新,今天自学了动态规划算法,下面这是一个最长公共子序列的问//题#include<stdio.h>#include<string.h>int b[100][100],c[100][100];char a1[100],a2[100];//定义两个字符串数组;void print(int i,int j){if(i0||j0)//i=0或者j=0说明回溯完...

2019-03-31 22:10:48 723

空空如也

空空如也

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

TA关注的人

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