测试框架之powermock,mock
SpringBoot之SpringSecurity
什么是SpringSecurity
Spring Security是基于Filter实现的对系统的访问权限进行细粒度的控制,包括用户认证(Authentication)和用户授权(Authorization);认证是验证某个用户是否为系统中的合法主体,授权是验证某个用户是否有权限执行某个操作。众所周知,想要对对Web资源进行保护,最好的办法莫过于Filter,要想对方法调用进行保护,最好的办法莫过于AOP。所以springSecurity在我们进行用户认证以及授予权限的时候,通过各种各样的拦截器来控制权限的访问,从而实现安全。
SpringSecurity的启动加载流程
SpringSecurityConfigurer
Netty之ByteBufAllocator
ByteBufAllocator接口的继承图如下:
它提供了一系列接口给用户调用, 包括生成各种ByteBuf 的操作,例如 ioBuffer(), heapBuffer(), directBuffer(), compositeBuffer()等等,并且提供了一个默认工厂ByteBufAllocator DEFAULT = ByteBufUtil.DEFAULT_ALLOCATOR; 在ByteBufUtil工具类里定义了一个默认工厂, 默认工厂的具体类型需要由具体实现的子类确定,默认情况下, 根据当前应用所在的平台, 判断需要使用池化工厂还是非池化工厂。
Java的四种引用
之所以要学习java的四种引用是因为看了netty关于内存泄露检测实现时候,使用了java的PhantomReference(虚引用),有必要系统学习java的四种引用。
Netty之ByteBuf
什么是ByteBuf
数据在网络上是以字节流的形式进行传输的。Java官方的NIO提供了一个ByteBuffer类作为字节的容器。但是ByteBuffer的使用比较复杂,尤其是需要通过flip()方法对读写进行切换。因此netty重新设计了一个字节容器,即ByteBuf,没有了ByteBuf,Netty就失去了灵魂,其他所有的都将变得毫无意义。
ByteBuf与ByteBuffer的对比
Netty的ByteBuf采用了读写索引分离的策略(readerIndex与writerIndex),一个初始化(里面尚未有任何数据)的ByteBuf的readerIndex与writerIndex值都为0;
当读索引与写索引处于同一个位置时,如果继续读取,那么就会抛出IndexOutOfBoundsException;
对于ByteBuf的任何读写操作都会分别单独维护读索引与写索引。maxCapacity最大容量默认的限制时Integer.MAX_VALUE;