0%

​ 关于集合,实则是分为两大类的:ListSetMap 只是另类的集合,并不是 Collection 类的一个子类。List 不去重,Map 是键值对,而 Set 则是去重的无序列表。Set 的各个实现类基本都是借助 Map 来实现的,基本原理都一样,这里以 HashSet 为例,其它的实现类可以举一反三。

注:本文基于jdk_1.8.0_162

阅读全文 »

严格来说,Map 并非集合,而是一个键值对的映射。但是 Map 却可以从某些角度被当作集合。Map 当中,最常用的就是 HashMap ,其余几种实现基本都和 HashMap 有关系或者原理一致。

注:本文基于jdk_1.8.0_144

Map家族谱

阅读全文 »

​ 最近又看起了 springSecurity ,想起了之前遇到的一个关于页面标签的诡异问题:sec:authorize="hasRole('ADMIN')" 可以正确判断,从而正确控制相应的内容显示不显示,但是到了用 sec:authorize-url="/test" 的时候,就不受控制了。对应的链接无论当前用户有没有权限,相应的内容都会显示在页面上。经过了某度上你抄我我抄你,千篇一律的错误答案之后,翻开了官方文档,终于找到了真正的原因。

原因及解决方案

原因

​ 在我们用 springSecurity 实现了相关权限的处理后,实际 sec:authorize-url 判断链接是否有权限所使用的权限拦截器并不是我们自定义的 CustomerFilterSecurityInterceptor ,而是系统默认指定的 FilterSecurityInterceptor ,所以每次都会显示有权限。

阅读全文 »

​ 作为Java 中八种基本类型之一的char 的封装类型,String 类可以说是Java程序员每天打交道最多的一个类了。所以,了解String 类的实现与原理是十分有必要的。

注:本文基于jdk_1.8.0_144

String 类是不可变的

类及成员变量

1
2
3
4
5
6
7
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
//值的存储
private final char value[];
//hash值
private int hash;
}

​ 由类的构成可以看出:

阅读全文 »