/images/avatar.jpg

DOS 系统功能调用(INT 21H)

/images/dos_image.png

INT表示interrupt(中断), INT指令是X86汇编语言中最重要的指令之一,它的作用是引发中断,调用“中断例程”(interrupt routine)。
中断是由于软件或硬件的信号,使CPU暂停执行当前的任务,转而去执行另一段子程序。

Node.js:容器中Core Dump

在开始之前,我们先了解下什么是 Core 和 Core Dump。
什么是 Core?

在使用半导体作为内存材料前,人类是利用线圈当作内存的材料,线圈就叫作 core ,用线圈做的内存就叫作 core memory。如今 ,半导体工业澎勃发展,已经没有人用 core memory 了,不过在许多情况下, 人们还是把记忆体叫作 core 。

Typescript学习

安装

安装TypeScript还是很简单的:

1
npm install -g typescript

写个hello.ts

1
2
3
4
5
6
function sayHello(person: string) {
    return 'Hello, ' + person;
}

let user = 'Tom';
console.log(sayHello(user));

然后执行

1
tsc hello.ts

这时候会生成一个编译好的文件 hello.js

RabbitMQ四五事之死信队列

业务需求

有时候我们需要某些任务定时执行,譬如取消订单,5分钟没支付,这个订单就被取消。简单实现的话,我们可以使用Redis或Linux的crontab来实现,而对于RabbitMQ,我们则可以用它的死信队列来实现定时任务。

Puppeteer使用例子

https://s3.ax1x.com/2021/03/05/6eGwVJ.png
这篇文章很简单呢,就是记录一下用Puppeteer的一些snippet。

访问网站后截图

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
const puppeteer = require('puppeteer');
const url = 'https://segmentfault.com';

(async() => {
    const browser = await puppeteer.launch({
        headless: true,
        args: ["--no-sandbox", "--single-process"],
    });
    const page = await browser.newPage();
    await page.setViewport({ width: 1920, height: 1080 });
    // ‘networkidle2’ means that there are no more than 2 active requests open. 
    // This is a good setting because for some websites (e.g. websites using websockets) there will always be connections open
    await page.goto(url, {
        waitUntil: 'networkidle2',
        timeout: 1000 * 60 * 5, // 毫秒 超时参数需要加上,有时候网络不好,会导致等着
    });
    await page.screenshot({path: './data/website.png', type: 'png'});
    page.close();
    browser.close();
})();

ES6中的class

https://s1.ax1x.com/2020/08/30/dbt2p6.png

ES6

ECMAScript 2015或ES2015是对JavaScript编程语言的重大更新。这是自2009年对ES5进行标准化以来对语言的首次重大更新,ES6加入很多有用的特性。因此,ES2015通常被称为ES6。