Tag: 知乎
All the articles with the tag "知乎".
-
从零开始写数据库:500行代码实现 LSM 数据库
技术笔记前言 LSM Tree 是很多 NoSQL 数据库引擎的底层实现,例如 LevelDB,Hbase 等。本文基于《数据密集型应用系统设计》中对 LSM Tree 数据库的设计思路,结合代码实现完整地阐述了一个迷你数据库,核心代码 500 行左右,通过理论结合实践来更好地理解数据库的原理。 SSTab...
-
SQL查询引擎原理浅析
技术笔记SQL的诞生 SQL英文全称是Structured Query Language,中文名即结构化查询语言,是一门专门用来查询数据的声明式编程语言。 我先解释一下声明式语言的概念,编程语言有两个分类: 命令式:手把手教机器做事情 声明式:告诉机器任务,让它自己想办法解决 举个例子,假设你家里有机器人,...
-
对感知机算法的一些理解
技术笔记机器学习假设了对于某个问题存在一个上帝函数,给定一个输入就能得到一个确定的输出,计算机可以通过样本数据在假设的函数空间中找到一个近似上帝函数的函数,我们可以利用这个近似函数来进行预测。 现实世界的问题大体可以分为两类:分类和回归。 分类问题就是对一个东西判断它所属的类别,例如判断一张照片里面的动物是...
-
怎样写线程安全的代码
技术笔记前言 多线程编程是软件开发中最棘手的问题之一。无论什么时候用多线程来操作同一份数据,都会出现并发问题。这就让写线程安全的代码成为一件非常困难的事情。本文将会从并发问题的本质出发,带你了解问题的根源,然后通过实例阐述保证线程安全的难点在哪里,最后提供常见的并发控制技术的原理和例子,希望能够帮助读者更好...
-
MAB问题的解法与应用(万字长文)
技术笔记 目录 MAB问题 MAB是多臂老虎机(Multi Armed Bandit)的缩写,MAB问题就是假设有个赌徒到赌场里面摇老虎机,赌场里面有10个老虎机,每个老虎机的赢钱概率是不一样的,此时他不知道每个老虎机的赢钱概率,而且他只有100个币,也就是说只能摇100次,如果他想最大化收益应该怎么摇?...
-
50行代码实现一个KV数据库
技术笔记最简单的KV数据库需要多少行代码实现?答案是不到50行。接下来我会带你实现一个基于日志顺序写入的数据库,它的功能很简单,支持写入和查询字符串类型的key和 value。 一个KV数据库最重要的是存储实现,因为它的查询语法很简单,根据key查询value就行,不像关系型数据库还需要实现解析器和优化器来...
-
从零开始写KV数据库:基于哈希索引
技术笔记前言 新的KV数据库层出不穷,我们经常听说的KV数据库如RocksDb、Hbase等都是基于日志结构的存储引擎。最近我在看《数据密集型应用系统设计》,里面有一章专门在讲日志结构的存储引擎的演进过程,纯看理论不过瘾,所以我决定根据书里的理论动手自己实现一个KV数据库。同时,为了能顺便学习Rust,所以...
-
Java 类隔离加载的正确姿势
技术笔记什么是类隔离技术 只要你 Java 代码写的足够多,就一定出现这种情况:系统新引入了一个中间件的 jar 包,编译的时候一切正常,一运行就报错:java.lang.NoSuchMethodError,然后就哼哧哼哧的开始谷歌找解决方法,最后在几百个依赖包里面找的眼睛都快瞎了才找到冲突的 jar,把问...
-
Java 日志框架冲突问题排查与总结
技术笔记Java 日志框架冲突问题排查与总结 前言 Java 有很多的日志框架可以选择,当同一个项目中出现多种日志框架时就很容易出现日志框架冲突的问题,导致日志打印不出来。本文将以一次典型的日志冲突排查问题为例,提供排查步骤和思路,最后分析日志框架冲突的原因。 一般行文思路都是先讲 Why,再讲 How,这...
-
多视角看区块链
技术笔记前言 像很多新技术一样,区块链开始火起来的时候评价是两级分化的,有人觉得区块链会成为下一代的互联网的基础设施,有人觉得区块链没有任何价值。很多时候观点的不同是因为看的角度不一样,如果能从多个角度看区块链,或许能得到更客观的观点,因此本文会分别从技术和业务的视角来分析区块链。 从技术的视角看区块链 从...