HashMap 执行流程
HashMap执行流程图流程图https://www.processon.com/diagraming/6532431251d35763b9c31ad3 判断键值对数组 table 是否为空或为 null,否则执行 resize() 进行扩容(初始化) 根据键值 key 计算 hash 值得到数组索引 判断 table[i] == null,条件成立,直接新建节点添加 如果 table[i] == null,不成立 判断 table[i] 的首个元素是否和key一样,如果相同直接覆盖 value 判断 table[i] 是否为 treeNode,即 table[i] 是否是红黑树,如果是红黑树,则直接在树中插入键值 遍历 table[i],链表的尾部插入数据,然后判断链表的长度是否大于 8,大于 8 的话把链表转换为红黑树,在红黑树中执行插入操作,遍历过程中若发现 key 已经存在直接覆盖 value 插入成功后,判断实际存在的键值对数量 size 是否超过了最大容量 threadshold(数组长度 * 0.75),如果超过,进行扩容
Spring 源码 SpringBoot 源码
Spring容器中的Bean是何时创建的?为什么我们能从容器中获取到? 非懒加载的单实例bean会在容器创建的时候创建。容器内部会创建一个beanFactory,使用beanFactory的doGetBean方法来进行创建,并且在创建后会把bean放入一个单例bean的map集合(singletonObjects)中存储。key就是我们配置的bean的名称。所以我们调用容器的getBean方法来获取对象的时候,其实也是调用了doGetBean方法。就会从对应的集合中获取到之前创建的对象
MySQL(三)
...
MTMR
MTMR 是一个 Mac 上的自定义触控栏工具,可以自定义触控栏的按钮,可以添加自定义的脚本 可以通过 brew install --cask mtmr 来安装,也可以直接从这里直接下载镜像来安装,整体感觉还是很好看的
Butterfly 主题升级工具
GitHub Desktop 是一个图形化的 Git 客户端,可以方便地管理本地 Git 仓库,也可以直接从 Github 上克隆仓库到本地,然后进行修改,最后提交到 Github 上 可以明显的看到左右两边文件的不同,改动起来非常方便。使用之前先 pull 一下代码就可以了(不光是 GitHub 项目,Gitee 项目也是可以的)
Vue 中 background-image 的使用
Vue 中 background-image 的 url 属性不能直接写字符串,需要使用 require 引入图片,然后使用 v-bind 绑定到 background-image 的 url 属性上 1<view class="loading-img" :style="{background:'url('+require('static/img/IMG_3969.jpeg')+')', backgroundSize:'cover'}"></view>
Vue 监听对象集合的变化
如果只是普通的监听对象的变化,可以使用 watch 123'unit.reportedValue'(newVal, oldVal) { console.log(this.unit.unitId + ' ' + newVal + ' ' + oldVal)} 但是如果是监听对象集合的变化,特别是存在子父级关系时,就需要使用 watch 的 deep 属性 123456unitList: { handler(newVal) { this.collectList = newVal; }, deep: true}
Autowired 和 Resource 的区别
@Autowired @Resource Spring 定义的注解 JDK自带的注解(JSR-250定义的) 默认按类型自动装配(byType) 默认按名称自动装配(byName) 一个参数:required(默认true),表示是否必须注入 七个参数:最重要的两个参数是 name,type 默认按类型自动装配,如果要按名称自动装配,需要和 @Qualifier 一起配合 默认按名称自动装配,如果指定了 name,则按名称自动装配;如果指定了 type,则按类型自动装配 支持优先级,@Primary 注解修饰,该候选者会被选中,作为自动装配的 bean 不支持 作用范围:构造器,方法,参数,成员变量,注解 作用范围:类,成员变量,方法 不知道从什么时候起我的 IDEA 对 @Autowired 一直报黄色的波浪线,使用 alt + enter 查看 IDEA 给的提示是 Field injection is not...
MySQL 8.0的新特性-全局变量的持久化
在 MySQL 数据库中,全局变量可以通过 SET GLOBAL 变量来设置。例如,设置服务器语句超时的限制,可以通过设置系统变量 max_execution_time 来实现: 1SET GLOBAL MAX_EXECUTION_TIME = 2000; 使用 SET GLOBAL 语句设置的变量值只会临时生效。数据库重启后,服务器又会从 MySQL 匹配文件中读取变量的默认值。MySQL 8.0 版本增加了 SET PERSIST 命令。例如设置服务器最大连接数为1000: 1SET PERSIST GLOBAL max_connections = 1000; MySQL 会将该命令的配置保存到数据目录下的 mysqlId-auto.cnf 文件中,下次启动时会读取该文件来覆盖默认的配置文件。注意:这个特性对于MAC用户来说很有用,MAC 下的 MySQL 是没有配置文件的,如果想要永久更改配置只能是自己新建一个配置文件,但是我觉得太麻烦了,现在只需要一行命令就可以永久的更改配置真的方便了很多!PERSIST 命令必须要以命名行的形式执行,亲测在 Navicat...
1052 - Column 'id' in where clause is ambiguous
MySQL报错 1052 - Column 'id' in where clause is ambiguous,这里记录以下错误原因 多进行多表关联的时候,很多个表如何出现相同的列表,但是你没有指明是哪个表的时候 MySQL 就会报此错误(我就是这个原因,太大意了😷) 在查询结果有相同的列名,但是你没有指出是哪个表,就会出现这个错误,其实本质上是一个原因只不过一个在 WHERE 条件中一个在 SELECT 中,一样的是都需要明确指出是哪个表的哪个字段