目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

标签: Java (111)

HashTable

哈希表  散列表(Hash table,也叫哈希表),是根据关键码值(Key value)⽽直接进 ⾏访问的数据结 构。也就是说,它通过把关键码值映射到表中 ⼀个位置来访问记录,以加快查找的速度 。这 个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表 M,存在函数 f(key),对任意 给定的关键字值 key,代 ⼊函数后若能得到包含该关键字的记录在表中的地址,则称表 M 为哈 希(Hash)表,函数 f(key)为哈希(Hash) 函数。 散列函数  能使对 ⼀个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。 链式哈希表 是由 ⼀组链表构成,每个链表都可以看做是 ⼀个“桶”,我们将所有的元素通过散列的 ⽅式放 到具体的不同的桶中。 插 ⼊元素时,⾸先将其键传 ⼊ ⼀个哈希函数,函数通过散列的 ⽅式告知元素属于哪个“桶”,然 后在相应的链表插 ⼊元素。 查找或删除元素时,⽤同们的 ⽅式先找到元素的“桶”,然后遍历相应的链表,直到发现我们想要的元素。 链表长度:因为每个“桶”都是 ⼀个链表,如果表变得太 ⼤,它的性能将会降低。 *** 哈希扩容:Bu....

异常

错误  程序运行时发生的不被期望的事件,阻 ⽌了程序按照预期正常执行。常见程序错误分三类: 编译错误:没有遵循语法规范。 运行时错误:程序在执行时发生的错误。 逻辑错误:程序没有按照预期的逻辑顺序执行。 Java 异常体系  个 java.lang.Throwable 类是 Java 中所有错误和异常的超类,其派生的两个子类分别为:Error、Exception。 Error  包含大量子类,用于抽象出错后程序无法处理的情况,例如:OutOfMemoryError。 Exception  包含大量子类,用于抽象程序本身可以处理的异常。例如:ArrayIndexOutOfBoundException。同时 Exception 又派生出量大子类: 运行时异常(不可查异常):RuntimeException 类及其子类,例如:ArrayIndexOutOfBoundsException。ClassNotFoundException。 非运行时异常(编译时可查异常):所有 Exception 类及其子类(RuntimeException 类及其子类除外),例如:IOException。....

JDK8~13新特性

接口新特性_JDK8 使用场景  接口里面定义公用的业务逻辑,抽取出来,每个子类都必须具备;静态方法可以充当工具类 默认方法default  接⼝⾥⾯定义⼀个默认⽅法,这个接⼝的实现类实现了这个接⼝之后,不⽤管这个 default修饰的⽅法就可以直接调⽤,即接⼝⽅法的默认实现。 Animal_interface public interface Animal { void run(); void eat(); default void breath(){ System.out.println("使用氧气呼吸"); } static void test(){ System.out.println("这个是静态方法"); } } Dog public class Dog implements Animal { @Override public void run() { System.out.println("dog 跑"); } @Override public void eat() { System.out.println("dog 吃"); } } 静态方法  接⼝名.静态⽅法来访....

Mybatis

# MyBatis  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 快速入门 引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>....

MyBatis-Plus

什么是 MyBatis?  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。消除了 JDBC 的复杂性,MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis vs JPA MyBatis 的优势 SQL 语句可以自由控制,更灵活、性能较高。 SQL 与代码分离、易于阅读和维护 提供 XML 标签,支持编写动态 SQL 语句 MyBatis 的劣势 简单的 CRUD 操作还得写 SQL 语句(XML 或注解) XML 中有大量的 SQL 要维护 MyBatis 自身功能很有限,但支持 Plugin MyBatis-Plus  MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。  官网  码云  GitHun 无侵入:只做....

Netty

剖析:启动服务 # 服务启动主线 * Selector selector = sun.nio.ch.SelectorProviderImpl.openSelector() * ServerSocketChannel serverSocketChannel = provider.openServerSocketChannel() * selectionKey = javaChannel().register(eventLoop().unwrappedSelector(), 0, this); * javaChannel().bind(localAddress, config.getBacklog()); * selectionKey.interestOps(OP_ACCEPT); • Selector 是在 new NioEventLoopGroup()(创建一批 NioEventLoop)时创建。 • 第一次 Register 并不是监听 OP_ACCEPT,而是 0: selectionKey = javaChannel().register(eventLoop().unwrap....

Shiro

什么是权限控制  将指定用户绑定到指定资源上,只能对指定资源进行(CRUD)操作。 限框架核心知识 ACL 和 RBAC ACL: Access Control List 访问控制列表  以前盛行的一种权限设计,它的核心在于用户直接和权限挂钩。  例子:常见的文件系统权限设计(Linux 文件系统权限设计), 直接给用户加权限 优点:简单易用,开发便捷。 缺点:用户和权限直接挂钩,导致在授予时的复杂性,比较分散,不便于管理。 RBAC: Role Based Access Control  基于角色的访问控制系统。权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。  例子:基于 RBAC 模型的权限验证框架与应用 Apache Shiro、Spring Security。 优点:简化了用户与权限的管理,通过对用户进行分类,使得角色与权限关联起来 缺点:开发对比 ACL 相对复杂  总结:不能过于复杂,规则过多,维护性和性能会下降, 更多分类 ABAC、PBAC 等。 Apache Shiro VS Spring Security Spring Security ....