pigLoveRabbit的博客

pigLoveRabbit的博客

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

什么是 Core Dump?

当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做 Core Dump(中文有的翻译成 “核心转储”)。我们可以认为 Core Dump 是 “内存快照”,但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时 dump 下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。Core Dump 对于编程人员诊断和调试程序是非常有帮助的,因为对于有些程序错误是很难重现的,例如指针异常,而 Core Dump 文件可以再现程序出错时的情景。

在Node生成core dump文件有两步
先开启core dump

1
ulimit -c unlimited

ulimit -c设置允许 Core Dump 生成的文件的大小,如果是 0 则表示关闭了 Core Dump。unlimited表示无限制。

gcore

第二步我们可以用gcore命令(需要装gdb)不重启程序生成core dump文件:

1
gcore [-o filename] pid
但在容器中,gcore命令会报错。

参考: * Node.js 调试指南

安装

安装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));

阅读全文 »

业务需求

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

阅读全文 »

ES6

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

本文环境: * NodeJs版本:v12.13.0 * OS:Ubuntu 18.04.4 LTS

阅读全文 »

缘由

有时候,我们想看看一个变量底层对应底层的数据结构或者PHP脚本是如何执行的,gdb就是这样一个好工具,之前有篇文章写过如何简单使用gdb。

本文环境: * PHP版本:PHP 7.1.16 (cli) (built: Apr 8 2020 11:56:59) ( ZTS ) * OS:Ubuntu 18.04.4 LTS * gdb: GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git

阅读全文 »

gdb

gdb 是 UNIX 及 UNIX-like 下的调试工具,在 Linux 下一般都直接在命令行中用 gdb 来调试程序,相比 Windows 上的集成开发环境 IDE 提供的图形界面调试,一开始使用 gdb 调试可能会让你感觉很难适应,但是只要熟悉了 gdb 调试的常用命令,调试出程序会很有成就感,一方面因为这些命令就类似图形界面调试按钮背后的逻辑,另一方面用命令行来调试程序,逼格瞬间就上了一个档次,这次就跟大家分享 gdb 调试的基本技术和 15 个常用调试命令。

阅读全文 »

需求

有时候我们会开启很多线程(go中是协程)去做一件事件,然后希望主线程等待这些线程都完成后才结束,一个简单的想法是,我在主线程sleep一段时间,譬如3s钟,但是明显这样的做法不科学,因为这些任务很有可能在200ms内就都完成了。如果你用过Java的话,那你很快就会想到CountDownLatch类,在Go中,也有类似的结构,就是本文要讨论的WaitGroup

阅读全文 »

gRPC是什么

官网如此写到 > A high-performance, open source universal RPC framework

其实,gRPC是一个高性能的,通用的,面向服务端和移动端,基于 HTTP/2 设计的RPC框架。

阅读全文 »

FTP协议

相比其他协议,如 HTTP 协议,FTP 协议要复杂一些。与一般的 C/S 应用不同点在于一般的C/S 应用程序一般只会建立一个 Socket 连接,这个连接同时处理服务器端和客户端的连接命令和数据传输。而FTP协议中将命令与数据分开传送的方法提高了效率。

阅读全文 »
0%