我写的掘金小册上线了

相信大家也发现了,最近公众号博客都没怎么发文章,上次发还是在上次 6 月份。这是因为我把所有的工作之余时间投入到了这本小册:RocketMQ 核心原理解析。

有关注一段时间的朋友应该都还记得,之前公众号里发过 RocketMQ 相关的文章。最初只是想针对 RocketMQ 的一些分散的知识点做一些分享,没想到后面写着写着,竟然渐渐的形成了一套比较完整的知识体系。于是基于这些已有的分享,经过了很久构思和写作,才终于有了这本小册。

我博客的风格一向都是“讲人话”,在这本小册当中也不例外。小册里会以生活中大家都体验过的取快递的场景来由浅入深的剖析 RocketMQ 的底层原理,然后配合大量的图片进行讲解,相信一定能更好的帮助大家去理解。

继续阅读
广告

用户态和内核态的区别是啥

这篇文章的深度不会太深,重点就是了解一下用户态和内核态的区别就 OK 了。

先给不了解内核态、用户态的简单介绍一下,我们在什么时候会提到这两个概念。

例如我们的应用程序需要从磁盘读取某个文件的数据,此时并不是直接从磁盘加载到应用内存中,而是:

  • 先将数据从「磁盘」复制到「内核 Buffer」
  • 再将数据从「内核 Buffer」复制到「用户 Buffer」

以上就是用户态内核态的概念。首先我们给他下个定义,这两个是操作系统的运行级别

然后我们知道,我们写的程序,最终运行的时候实际都会被编译、解释成一条一条的 CPU 指令被 CPU 执行。

继续阅读

html2canvas关于图片不能正常截取

问题

首先说说遇到了什么问题。首先有这么一个需求。需要前端根据后端传过来数据,动态的生成图片。图片中的文案、背景图片、用户头像全部都是通过后端的接口获取。但是使用 html2canvas 生成的canvas有些图片成功的在canvas里生成了。但是有些图片无论如何都显示不出来。

官方文档

在项目里面操作了半天未果,google了半天未果。此时有些许绝望。突然想到了,为什么不去它的 官网 看看呢。于是乎我在官网上看到了下面的内容。

继续阅读

为hexo博客添加基于gitment评论功能

关于gitment

gitment其实就是利用你的代码仓库的Issues,来实现评论。每一篇文章对应该代码仓库中的
一个Issues,Issues中的评论对应你的博客每篇文章中的评论。如果你是用github的博客的话
用起来将会十分的方便。

注册github应用

首先需要在这注册一个OAuth Application, 请戳此处。在注册的过程中,你需要输入以下的东西:

继续阅读

在koa中想要优雅的发送响应?看这就对了

背景

前不久把项目中用了很久的一个伪中间件撸成了一个npm包发布了出去。

为什么叫伪中间件?正常的中间件的引用方式, 就拿body-parser为例。

var Koa = require('koa');
var bodyParser = require('koa-bodyparser');
 
var app = new Koa();
app.use(bodyParser());
 
app.use(async ctx => {
  // the parsed body will store in ctx.request.body
  // if nothing was parsed, body will be an empty object {}
  ctx.body = ctx.request.body;
});

反观我撸的伪中间件的引用方式。


为什么要这么干呢…纯粹是因为这个伪中间件与现有项目的耦合度太高了,
为(就)了(是)方(懒)便在项目里面把这个伪中间件的引用方式从本地工具组件换成从node_modules里引用。

继续阅读

关于css,js放置位置的问题

一天,小明正在网上查找资料,项目中遇到的问题需要通过查阅资料来解决,他看到一个标题很有意思,觉得这应该是他要找的答案,于是他就点了进去,结果进入网站后几秒钟的时间,网页还是一片空白,过了好久才加载完成。

为什么会出现这种情况?

说到这那我们就有必要先了解一下网站加载的整个完整过程了。

1.首先浏览器从服务器接收到html代码,然后开始解析html

2.构建DOM树(根据html代码自顶向下进行构建),并且在同时构建渲染树

继续阅读