0%

前言

使用过 Spring 的小伙伴,一定有被 XML 配置统治的恐惧。即使 Spring 后面引入了基于注解的配置,我们在开启某些 Spring 特性或者引入第三方依赖的时候,还是需要用 XML 或 Java 进行显式配置。

举个例子。没有 Spring Boot 的时候,我们写一个 RestFul Web 服务,还首先需要进行如下配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Configuration
public class RESTConfiguration
{
@Bean
public View jsonTemplate() {
MappingJackson2JsonView view = new MappingJackson2JsonView();
view.setPrettyPrint(true);
return view;
}

@Bean
public ViewResolver viewResolver() {
return new BeanNameViewResolver();
}
}
阅读全文 »

ThreadLocal 简介

ThreadLocal提供了线程的局部变量,每个线程都可以通过set()get()来对这个局部变量进行操作,但不会和其他线程的局部变量进行冲突,从而避免了线程安全问题。

简而言之:ThreadLocal保证了各个线程的数据互不干扰。

阅读全文 »

这一篇文章是关于HashMap 源码分析 HashMap 源码分析

前言

为什么要用ConcurrentHashMap?

1. 线程不安全的HashMap

在多线程环境下,使用HashMap的put操作会引起死循环,原因是多线程会导致HashMap的Entry链表形成环形数据结构,导致Entry的next节点永远不为空,就会产生死循环获取Entry

阅读全文 »

这一篇文章是关于ConcurrentHashMap 源码分析 ConcurrentHashMap 源码分析

HashMap简介

JDK1.8 之前 HashMap 由 数组+链表 组成的, 数组是 HashMap 的主体, 链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。

JDK1.8 之后 HashMap 的组成多了红黑树, 在满足下面两个条件之后, 会执行链表转红黑树操作, 以此来加快搜索速度。

  • 链表长度大于阈值(默认为 8)
  • HashMap 数组长度超过 64

HashMap底层数据结构分析

JDK1.8 之前

阅读全文 »

在处理fasterxml中string字符串转对象json格式,标准的json都是双引号 (” “);由于数据是单引号(‘ ‘)格式。导致了如下报错,特此记录

com.fasterxml.jackson.core.JsonParseException: Unexpected character (‘s’ (code 115)): was expecting double-quote to start field name

阅读全文 »

mysql版本为5.7,通过navicat查看json格式的数据是正常显示,但是查询出来是乱码, 读取其他字段都是正常的,也没有特殊设置json格式的字符集

阅读全文 »

最近开发过程中遇见了一个问题,Ubuntu 16.04 自动挂载SD卡报错,mounted filesystem with ordered data mode. Opts: (null)以此记录一下

阅读全文 »

最近业务需求,要求对集合按照多个属性分组,并且对某一个属性求和,利用lambda表达式进行分组求和;示例如下

1
2
3
list.parallelStream()
.collect(Collectors.groupingBy(o -> (o.getName() + o.getAge()), Collectors.toList()))
.forEach((id, transfer) -> transfer.stream().reduce((a, b) -> new StudentDemo(a.getName(), a.getAge(), a.getScore() + b.getScore())).ifPresent(studentDemoList::add));
阅读全文 »