该文被密码保护。 阅读全文
posted @ 2022-04-23 19:23 hzhuan 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 二分查找的本质是可以在有序的数列中,通过二分一个中间值进行探测,可以一次排除掉一半的数据,最后要么找到需要的数据,要么排除掉所有的数据。时间复杂度只有logN bool binarySearch(int l, int r, int []arr, int value) { while(l<=r) { 阅读全文
posted @ 2021-07-19 15:33 hzhuan 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 1、引言 数据库压力过大时,会对数据库做读写分离,一个主库多个从库, 当读压力过大时,又可以将要读的内容放在缓存中,比如放到redis中,mysql是将数据存在磁盘中,redis是存在内存里,这一点上redis读取数据要比mysql快几个数量级, 同时内存也比磁盘贵几个数量级。。。 那么,如何要保证 阅读全文
posted @ 2020-10-25 15:06 hzhuan 阅读(400) 评论(0) 推荐(0) 编辑
摘要: GC(垃圾收集机制) 一、如何识别一个垃圾对象? 1. 引用计数法 2. GCRoot引用链 二、分代收集机制 一般垃圾回收发生在堆区,很少有在方法区发生,所以方法区被称为 永久代 1. 新生代 包括Eden、from survivor、to survivor三个区 在这个区采用的是 复制收集算法 阅读全文
posted @ 2019-07-16 20:17 hzhuan 阅读(926) 评论(0) 推荐(0) 编辑
摘要: 排序算法 大部分算法都是从 无序区 扩展到 有序区 一、算法概述 1. 冒泡排序 O(N2),空间O(1) 每一轮从无序区冒泡出一个最大的数到有序区 2. 选择排序O(N2),空间O(1) 每一轮从无序区选择一个最大的数到有序区 3. 堆排序O(NlogN),空间O(1) 其实就是 选择排序的改进 阅读全文
posted @ 2019-07-14 12:27 hzhuan 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 一、字符串结构SDS 相比普通字符串数组的优点: 可以O(1)获取字符串长度 不用担心缓冲区buf会溢出(有扩容机制) 扩容机制(内存重分配) 每次重分配时会预留 的空间,便于下次使用 二进制安全,可以保存二进制数据(图片等文件) 因为不用担心文件中出现'\0',而使字符串的读取提前结束 可以使用部 阅读全文
posted @ 2019-07-14 12:18 hzhuan 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 事务的隔离性(续篇) 首先说一个结论: ​ 事务A,B交替执行,两事务会更新同样的一行,隔离级别采用 可重复读 ,那么会发生什么? A先更新完,但并未提交,则B更新时会被阻塞(行锁) A先更新完且提交了,则B在更新时, 能读到 最新的数据,并且将之更新 需要注意的是第二个,并没有触发可重复读,而是 阅读全文
posted @ 2019-06-26 16:30 hzhuan 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 五、控制反转(IOC)和依赖注入(DI) 1. 概念 控制反转:将创建对象的控制权反转给了spring 依赖注入:spring在创建对象的过程中,动态地将依赖对象注入到Bean组件 2. 实现 工厂模式 BeanFactory 从BeanFactory中获取对象,没有就创建,依赖没有就创建依赖,对象 阅读全文
posted @ 2019-06-22 23:27 hzhuan 阅读(129) 评论(0) 推荐(0) 编辑
摘要: MySql事务的隔离级别解析 一、日志 1. binlog(逻辑日志) 它是MySql服务层的日志 statement 格式的话是记 sql语句 row格式会记录 行的内容 ,记两条,更新前和更新后都有。 作用: 备份和恢复数据(可以指定恢复到某一时刻哦) 2. redo log(物理日志) 这是i 阅读全文
posted @ 2019-06-22 17:44 hzhuan 阅读(603) 评论(0) 推荐(0) 编辑
摘要: 手写Spring mvc框架 一、依赖管理工具 Maven、Gradle 优点: 自动化管理依赖(jar包) 解决依赖冲突 打包(mvn clean package) 特性: 约定大于配置 比如src是约定好的代码目录 同一个项目可以有很多模块,每个模块单独构建 插件机制 Gradle比起Maven 阅读全文
posted @ 2019-06-20 23:54 hzhuan 阅读(424) 评论(0) 推荐(0) 编辑