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+树相对于其他数据结构有何独特之处!

阅读全文 »

bjmayor 发布于 2021-10-22

I/O多路复用

I/O 多路复用

前言

  • BIO 、NIO 、AIO 总结
  • Unix网络编程中的五种IO模型

为了加深对 I/O多路复用机制 的理解,以及了解到多路复用也有局限性,本着打破砂锅问到底的精神,前面我们讲了BIO、NIO、AIO的基本概念以及一些常见问题,同时也回顾了Unix网络编程中的五种IO模型。本篇重点学习理解IO多路复用的底层实现机制。

概念说明

IO 多路复用有三种实现,在介绍select、poll、epoll之前,首先介绍一下Linux操作系统中基础的概念

  • 用户空间和内核空间
  • 进程切换
  • 进程的阻塞
  • 文件描述符
  • 缓存 I/O

阅读全文 »

bjmayor 发布于 2021-10-18

memcached使用介绍

[TOC]

memcached 有2个版本。需要注意。

介绍

特点:

  1. 协议简单
  2. 基于libevent的时间处理。
  3. 内置内存存储方式;
  4. 采用互不通信的分布式。(这里的分布式只是为了扩大能存多少的问题,而不是稳定性。)

从上述特点4可见,基于memcached的memcacheq有个很大的缺点,就是做分布式其实不稳定,如果其中一个服务器down掉,就会丢失消息,这时只能通过重启机器来解决。也就是必须有个监控服务才能保证稳定性。

基本特性

(1)mc的核心职能是KV内存管理,value存储最大为1M(可修改,改源代码,编译安装),它不支持复杂数据结构(哈希、列表、集合、有序集合等);

(2)mc不支持持久化;

(3)mc支持key过期;

(4)mc持续运行很少会出现内存碎片,速度不会随着服务运行时间降低;

(5)mc使用非阻塞IO复用网络模型,使用监听线程/工作线程的多线程模型;

阅读全文 »