Hi there 👋

  • Welcome to My Blog.
  • Those Blogs 是我个人的一些笔记
  • 包含Go, Python, 机器学习, KV 存储引擎的一些相关笔记, 方便以后复习
  • 我的GitHub主页
hugo logo

Hugo搭建博客并用GitHubAction部署

介绍 这是我博客 Blog 的地址 和 Github Repositroy。 本博客是用Hugo 来生成静态网站。 Hugo GitHub 并通过 GitHub Action 来自动化部署到 GitHub Pages。 搭建步骤 创建代码仓库 首先按照文档创建 GitHub Pages 站点。该仓库可见性必须是 Public。 另外创建一个仓库用来存放 Hugo 的源文件,名称随意,这里假设仓库名叫 .github.io.source。建议将仓库可见性设置成 Private 以保护好你的源代码。 ...

2023-03-16 19:35 · 8 min · 3827 words · Reid

家庭mesh组网规划

概念介绍 家庭路由器 Mesh 组网是指使用多个路由器组成的网络,这些路由器可以通过无线或有线连接互相连接,形成一个更大的网络。这些路由器被称为 Mesh 节点或 Mesh 路由器。 Mesh 组网技术是一种基于路由器的分布式网络技术,它可以使家庭网络更加灵活、高效、安全。通过 Mesh 组网,用户可以在不同位置使用路由器,而无需使用有线连接,从而提高了家庭网络的覆盖范围和性能。 Mesh 组网通常使用 Wi-Fi 技术,其中 Mesh 路由器可以互相连接,并通过 Wi-Fi 信号将数据传输到用户设备。这种技术还可以用于连接其他网络设备,如智能灯泡、智能音箱等。 总的来说,家庭路由器 Mesh 组网是一种先进的家庭网络技术,可以提供更加灵活、高效、安全的网络连接,以满足现代家庭的需求。 ...

2024-09-19 14:33 · 7 min · 3497 words · Reid

Rust Tracing日志

介绍 严格来说,tracing 并不是一个日志库,而是一个分布式跟踪的 SDK,用于采集监控数据的。 随着微服务的流行,现在一个产品有多个系统组成是非常常见的,这种情况下,一条用户请求可能会横跨几个甚至几十个服务。此时再用传统的日志方式去跟踪这条用户请求就变得较为困难,这就是分布式追踪在现代化监控系统中这么炽手可热的原因。 ...

2024-07-17 17:19 · 8 min · 3567 words · Reid

动态规划之01背包问题

0-1 背包 背包问题整体分为以下几种,情况比较复杂,但是对于面试的话,掌握01背包和完全背包,就差不多了,本篇主要介绍01背包和完全背包。 题干 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 比如: ...

2024-04-19 16:55 · 8 min · 3687 words · Reid

动态规划之完全背包问题

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 ...

2024-04-19 16:55 · 3 min · 1261 words · Reid

Rust Leetcode链表实现

Rust LinkedList 定义 Leetcode: rust 如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // Definition for singly-linked list. #[derive(PartialEq, Eq, Clone, Debug)] pub struct ListNode { pub val: i32, pub next: Option<Box<ListNode>>, } impl ListNode { #[inline] fn new(val: i32) -> Self { ListNode { next: None, val } } } /// 单链表 #[derive(Debug)] struct LinkedList<T> { head: Option<Box<Node<T>>>, } Go 如下: ...

2024-02-01 14:00 · 7 min · 3111 words · Reid

For循环耗时从3.2秒降到0.3秒

一道面试题 1 2 3 4 5 6 7 8 9 int test(int n) { int fact = 1, num = n+1; for(int i =1; i<num; i++) { fact *= 1; } return fact; } 面试官:这段求阶乘的代码怎么样? 答:挺简洁的,简单易懂。不过如果参数 n 值比较大的话,会导致 fact 溢出,结果是错的。 面试官:嗯,是的。不过,咱们先不考虑溢出的问题,你觉得这段代码的性能怎么样? 答:时间复杂度是 O(n),而且代码比较精炼,性能应该还挺不错的吧?(心虚 ing…) 面试官:你能想办法把它优化一下,让性能更好吗? 思考 ing… 答:在多 CPU 系统上,如果 n 的值比较大的话,可以考虑用多线程来实现。 面试官:嗯,这是一个思路。如果是单 CPU 呢? 再次思考 ing… 答:用 GCC 编译的话,可以加上优化选项-O3,应该能提高性能。 面试官:嗯,还有吗? 答:没了。 面试官:好了,感谢来参加面试,回去等通知吧! 思考一下,如果是你的话,会怎么回答呢? 下面,来深入讲解一下,隐藏在这道题背后的深层次知识! 本文较长,且涉及到 CPU 内部很底层的知识,请耐心看完,一定会有收获! ...

2023-12-26 10:09 · 12 min · 5939 words · Reid

B+树

前言 首先,为什么要总结B树、B+树的知识呢?最近在学习数据库索引调优相关知识,数据库系统普遍采用B-/+Tree作为索引结构(例如mysql的InnoDB引擎使用的B+树),理解不透彻B树,则无法理解数据库的索引机制;接下来将用最简洁直白的内容来了解B树、B+树的数据结构 ...

2023-10-19 10:30 · 11 min · 5442 words · Reid

分布式事务

分布式事务初探 分布式事务主要有两部分组成。第一个是并发控制(Concurrency Control)第二个是原子提交(Atomic Commit)。 之所以提及分布式事务,是因为对于拥有大量数据的人来说,他们通常会将数据进行分割或者分片到许多不同的服务器上。假设你运行了一个银行,你一半用户的账户在一个服务器,另一半用户的账户在另一个服务器,这样的话可以同时满足负载分担和存储空间的要求。对于其他的场景也有类似的分片,比如说对网站上文章的投票,或许有上亿篇文章,那么可以在一个服务器上对一半的文章进行投票,在另一个服务器对另一半进行投票。 ...

2023-10-18 14:54 · 36 min · 17701 words · Reid

CPU缓存基础知识

CPU缓存 CPU缓存(CPU Cache)的目的是为了提高访问内存(RAM)的效率,这虽然已经涉及到硬件的领域,但它仍然与我们息息相关,了解了它的一些原理,能让我们写出更高效的程序,另外在多线程程序中,一些不可思议的问题也与缓存有关。 ...

2023-10-17 11:11 · 10 min · 4959 words · Reid