bjmayor 发布于 2021-11-13

golang cron源码解读

cron

https://github.com/robfig/cron 这个定时任务比较流行,我在项目中也在用。不过在阅读源码前,为了保证任务是串行运行,我还加了处理代码。
看了源码后才知道本身就是支持的。

阅读全文 »

bjmayor 发布于 2021-10-27

goroutine分析

本文档最后一次更新时所用的 Go 版本是 1.15.6,但是大多数情况下,新老版本都适用。

描述

Go 运行时在一个称为 allgs 简单切片追踪所有的 goroutines。这里面包含了活跃的和死亡的 goroutine 。死亡的 goroutine 保留下来,等到生成新的 goroutine 时重用。

Go 有各种 API 来监测 allgs中活跃的 goroutine 和这些 goroutines 当前的堆栈跟踪信息,以及各种其他属性。一些 API 将这些信息公开为统计摘要,而另外一些 API 则给每个单独的 goroutine 信息提供查询接口。

尽管 API 之间有差异,但是活跃的 goroutine 都有如下共同 定义

  • 非死
  • 不是系统 goroutine,也不是 finalizer goroutine。

换句话说,正在运行的 goroutine 和那些等待 i/o、锁、通道、调度的 goroutine 一样,都被认为是活跃的。尽管人们可能会天真的认为后面那几种等待的 goroutine 是不活跃的。

阅读全文 »

bjmayor 发布于 2021-10-26

哲学家就餐问题

哲学家就餐问题

哲学家就餐问题是一个经典的同步问题,它是大量并发控制问题的一个例子。这个代表型的例子满足:在多个进程之间分配多个资源,而且不会出现死锁和饥饿。

本文内容主要是摘自《操作系统精髓与设计原理》

阅读全文 »

bjmayor 发布于 2021-10-24

如何解决通信中的安全问题-数字证书的由来

[TOC]

加密的基础知识。文章里的我是作为黑客出现的。。本文内容直接来源于《我的第一本算法书》去了些图片,做了简化。

在现代互联网社会中,加密技术是不可或缺的。那么对数据进行加密和解密时,计算机会进行哪些处理呢?这一节我们将讲解加密技术的必要性和基本原理。

阅读全文 »

bjmayor 发布于 2021-10-24

数据传输中的安全问题

[TOC]

主要摘自《我的第一本算法书》 第五章 安全算法

互联网中不可或缺的安全技术

通过互联网交换数据时,数据要经过各种各样的网络和设备才能传到对方那里。数据在传输过程中有可能会经过某些恶意用户的设备,从而导致内容被盗取。因此,要想安全地使用互联网,安全技术是不可或缺的。本章将要学习的就是保障安全的各种算法和利用了这些算法的机制。

阅读全文 »

bjmayor 发布于 2021-10-24

MySQL为何选择B+树存储索引

MySQL为何选择B+树存储索引

声明
本文所述的各种数据结构(二叉树等),均不考虑重复值的情况,本文简述各种数据结构的区别仅仅只是为了理解MySQL索引的需要而做的铺垫。

什么是索引

提起索引,大家都知道,建立索引可以让数据库查询更快,那么索引究竟是什么?我想这就不是每个人都能说得出来了。
索引,是数据库管理系统中一个排序的数据结构,并用以协助快速查询、 更新数据库表中数据。
是的,索引是一种数据结构,但是那么多的数据结构中为何MySQL要选择B+树呢?接下来就让我们一起来了解下B+树相对于其他数据结构有何独特之处!

阅读全文 »