贺巩山的博客

没有伞的孩子更要努力奔跑


  • 首页

  • 文件系统

  • Linux运维

  • 剑指Offer

  • LeetCode题解

  • PAT甲级题解

  • PAT乙级题解

  • CCF CSP题解

  • 分类

  • 标签

  • 归档

  • 书单

  • 关于

  • 搜索

ConcurrentHashMap中size()方法的实现原理

发表于 2020-04-24 | 更新于 2020-05-05 | 分类于 java
字数统计: 764

2020年4月23日晚上,阿里交叉面时,面试官问到了ConcurrentHashMap中size()方法的实现原理,我瞬间懵逼,因为之前只关注了put和get等操作,压根根本没看过size()的源码…

阅读全文 »

ConcurrentHashMap扩容操作的实现原理

发表于 2020-04-24 | 更新于 2020-05-05 | 分类于 java
字数统计: 1.6k

2020年4月23日晚上,阿里交叉面时,面试官问到了ConcurrentHashMap中扩容操作的实现原理,瞬间懵逼。当初看源码的时候,这块就没看懂。这次仔细研究了很久,终于看明白啦。

阅读全文 »

Java序列化

发表于 2020-04-23 | 更新于 2020-05-05 | 分类于 java
字数统计: 605

晚上面阿里的第4轮面试(交叉面,其实应该算是第5面,因为中午已经面过HR了)时,面试官问到了Java对象的序列化,觉得有必要详细学习这块知识。

阅读全文 »

Spring MVC DispatcherServlet请求流程

发表于 2020-04-22 | 更新于 2020-05-05 | 分类于 spring mvc
字数统计: 233
1
2
3
4
5
private List<HandlerMapping> handlerMappings;

private List<HandlerAdapter> handlerAdapters;

private List<ViewResolver> viewResolvers;

1.找到当前请求的HandlerExecutionChain

1
2
3
4
5
6
7
8
9
10
11
protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception {
if (this.handlerMappings != null) {
for (HandlerMapping mapping : this.handlerMappings) {
HandlerExecutionChain handler = mapping.getHandler(request);
if (handler != null) {
return handler;
}
}
}
return null;
}

2.寻找当前处理器对象对应的处理器适配器

1
2
3
4
5
6
7
8
9
10
11
12
// 遍历DispatcherServlet中的handlerAdapters,寻找当前请求对应的处理器适配器
protected HandlerAdapter getHandlerAdapter(Object handler) throws ServletException {
if (this.handlerAdapters != null) {
for (HandlerAdapter adapter : this.handlerAdapters) {
if (adapter.supports(handler)) {
return adapter;
}
}
}
throw new ServletException("No adapter for handler [" + handler +
"]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler");
}

3.根据ModelAndView中的视图名,寻找对应的视图解析器,对视图名进行解析,返回View对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
protected View resolveViewName(String viewName, @Nullable Map<String, Object> model,
Locale locale, HttpServletRequest request) throws Exception {

if (this.viewResolvers != null) {
for (ViewResolver viewResolver : this.viewResolvers) {
View view = viewResolver.resolveViewName(viewName, locale);
if (view != null) {
return view;
}
}
}
return null;
}

关于MySQL中varchar超过限制长度的问题

发表于 2020-04-22 | 更新于 2020-04-23 | 分类于 mysql
字数统计: 677

下午面快手的时候,小姐姐问我:如果列的类型为varchar(10),当插入的字符串长度超过10的时候,将会发生什么?这个问题之前完全没了解过,一时语塞,只能回答说:“应该会发生溢出吧”。

阅读全文 »

ThreadLocal源码分析

发表于 2020-04-18 | 更新于 2020-04-23 | 分类于 java
字数统计: 398

通过java.lang.ThreadLocal类,可以实现线程本地存储。

阅读全文 »

ThreadLocal.ThreadLocalMap源码分析

发表于 2020-04-18 | 更新于 2020-04-23 | 分类于 java
字数统计: 1.7k

ThreadLocalMap是ThreadLocal类的静态内部类,用于保存本地线程变量。它采用除留余数法和线性探测法,以ThreadLocal.threadLocalHashCode为键,以本地线程变量为值。

阅读全文 »

LeetCode 5.最长回文子串

发表于 2020-04-17 | 更新于 2020-04-17 | 分类于 leetcode
字数统计: 651

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

阅读全文 »

leetcode-37-sudoku-solver

发表于 2020-04-14 | 更新于 2020-04-14
字数统计: 0

Java线程池 ThreadPoolExecutor

发表于 2020-04-14 | 更新于 2020-04-18 | 分类于 java
字数统计: 547

在《阿里巴巴Java开发手册》中,禁止使用Executors创建线程池,强制使用ThreadPoolExecutor。

阅读全文 »
1…121314…49
Gongshan He

Gongshan He

490 日志
62 分类
89 标签
GitHub 微博 知乎 Linkedin E-Mail
友情链接
  • 卢明冬的博客
  • lipixun
  • 柳婼 の blog
  • 心灵港
  • Liudeyin
© 2016 — 2023 Gongshan He
访问人数 总访问量 次