摘要:
因为感觉对 B 树的理解不是特别深刻,一直想手撸一个 B 树,这次终于得偿所愿,文末有完整的 B 树代码。 代码比较长,大概六百行。 B 树的代码使用了一百组数据进行 插入/删除 测试,结果正确。 从生产讲,实现一棵 B 树不会有什么实际意义,但是这些代码和构建这些代码的思路,都将成为我们职业素养的 阅读全文
摘要:
KMP算法是目前应用非常广泛的一种字符串匹配算法,因为其代码量比较少,相较传统的解法又多了一个初学会比较陌生的辅助数组,所以在刚接触的情况下比较难以理解。 需要说明的是,kmp算法有非常多的改进或衍生版本,看每一个版本的说明时建议看到底再看其它版本,防止概念混淆。比如 next 数组的定义,某些版本 阅读全文
摘要:
小记一次小功能,头像的预览和上传。 头像的预览和上传依赖前端的几个机制: 1. 对于 input ,type 为 file 时浏览器会为我们提供文件选择功能,且选择文件后可以在该 input 中拿到选取文件的信息,借此通过 JS 将文件读为二进制或者Base64或者文本格式的串进行后续处理。 2. 阅读全文
摘要:
作为一个 JAVA 开发者,对注解这一概念一定是不陌生的。像我们平时常用的就有 @Controller, @Service,@Test,@Override 等等好多个,正确的使用注解确实可以方便我们的开发,以@Controller 为例,加上该注解后,框架层面为我们节省了一大堆需要在 Servlet 阅读全文
摘要:
理解一个数据结构,我们应该首先明白该数据结构的作用与应用场景,尔后理清其逻辑结构,基于逻辑结构考虑如何在计算机上进行物理存储,最后对以上进行代码实现。 我们按上述思考顺序来实现一次线段树。 作用及应用场景 我们考虑一个场景,我们有一个长度为 n 的数组,我们需要经常进行两种操作: 1. 计算某个区间 阅读全文
摘要:
文章篇幅较长,知识点涵盖比较广泛,作为学习 JS 的一个总结。文章中仅涵盖 ES5 及之前的传统的知识点,未涵盖 ES6 及之后的新特性。 JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很 阅读全文
摘要:
关于 λ 演算在这篇博客 λ表达式与邱奇数,JAVA lamda表达式实现 中做了一个初步的介绍,这次我们来看一些实际应用中的例子:闭包。闭包的知识点有很多,但核心概念就一个,从 λ 演算的角度看便是:自由变量的替换依赖于定义函数的上下文环境。也就是说上下文环境的改变会通过影响函数中的自由变量而直接 阅读全文
摘要:
前言 学习 λ 演算的初衷是为了更好的使用 JAVA8 的 lamda表达式,但是在学习过程中发现 λ 演算的作用和深度远远比想象的大的多得多。λ 演算的定义并不复杂,包括一条变换规则(变量替换)和一条函数定义方式,但其外延却囊括和渗透到了无数方向,乃至学习过程中脑中不断冒出一句话:内涵越小、外延越 阅读全文
摘要:
《深入理解计算机系统》学习笔记与总结 首先一个大的总结:在计算机中,使控制流发生突变的源头被称为异常控制流。异常是分为多个层级的,硬件异常与软件异常。我们在讨论异常的处理时也应该分情况讨论。异常控制流存在的逻辑是:我们的程序除了需要对程序内部状态的变化做出反应外,也应该可以对系统状态的变化做出反应。 阅读全文
摘要:
题目: 关于动态规划类题目的思路如何找在上一篇博客 https://www.cnblogs.com/niuyourou/p/11964842.html 讲的非常清楚了,该博客也成为了了leetcode中戳气球题目点赞和阅读最多的题解(虽然题解本身就很少)。 本题的解题路径与上述博客一致,也是从 递归 阅读全文