摘要:
前言 当年写的比较差:https://www.cnblogs.com/aoximin/p/12965408.html,所以特来重新写一遍。 正文 首先为什么会出现is 和 as 呢? 因为是为了有需要检验的地方,如果直接使用显示转换的话,那么可能直接报错了。 namespace ConsoleApp 阅读全文
摘要:
前言 首先什么是io复用呢? 现在web框架没有不用到io复用的,这点是肯定的,不然并发真的很差。 那么io复用,复用的是什么呢?复用的真的不是io管道啥的,也不是io连接啥的,复用的是io线程。 这其实是操作系统的设计上的io并发不足的地方,然后自己给慢慢填了。 正文 听一段历史: 当时操作系统设 阅读全文
摘要:
前言 什么是零拷贝技术? 首先计算机不存在什么真的零拷贝技术,这点是确认的。 零拷贝值得是减少多余的拷贝的意思。 正文 首先如果我们要传输文件是怎么处理的呢? 当需要从磁盘读取数据到内存时,CPU会发出指令通知硬盘控制器进行读取操作。 此后,CPU可以执行其他任务,而不需要持续参与数据的读取 阅读全文
摘要:
前言 简单说自己理解的洋葱模型。 正文 先来看一个洋葱模型: 这个是ddd的洋葱模型。 我们看到最里面的是domain model。 为什么里面是domain model呢? 领域模型 domain model 是做什么的,是实现我们业务逻辑模型的,这个重中之重。 然后看domain service 阅读全文
摘要:
前言 最近写一些底层一些的东西,简单回顾一下环境变量. 正文 首先我们来看下c 语言的环境变量的位置。 可以看到每个进程都有自己的环境变量,操作系统会复制环境变量的副本给一个新创建的进程。 那么这个副本哪里来呢? 是操作系统自己维护一份在内存中吗?那不是,因为操作系统中进程有亲属关系。具体来说,操作 阅读全文
摘要:
前言 在默认环境下,mysql 是可重复读,为什么默认可重复读呢? 一般情况下感觉读可提交就行,可重复读解决幻读的问题,但是大多情况下没有幻读的问题,所以也没有必要可重复读。 那么为什么mysql 要把默认配置设置为可重复读呢? 正文 历史原因: 这种图,如果是在可提交读的情况下,会发生什么呢? 当 阅读全文
摘要:
前言 这个不用多说,两种重要的日志分别是redo log 和 binlog,这两种,下面分别来结束。 正文 先来redo log, redo log 是inno db 引擎特有的,运用了一种wal 技术,全称是: write-ahead logging. 它的关键点就是先写日志,再写磁盘,也就是先写 阅读全文
摘要:
前言 比较一下唯一索引和普通索引的区别。 如果有一列数据唯一,这个时候是否是就直接设置唯一索引,这样可以避免插入重复的值,来实现业务需求。 那么唯一索引是如何保持唯一的呢?这个对性能是否有影响。 正文 数据库我们知道是增删改查。 那么首先来看下这个查,唯一索引是如何查数据的呢? select id 阅读全文
摘要:
前言 什么是幻读?幻读这个概念产生是因为事物隔离级别可重复读需要解决的一个问题。 可重复读,顾名思义,就是一个事物中多次读取的结果是一致的。 那其中就包含两个需要解决的问题: 虚读: 对同一行数据,每次读取的不一致。具体表现为T1读取某一数据后,当T2进行了修改,然后T1再次读该数据的时候与上一次读 阅读全文