排序:
默认
按更新时间
按访问量

虚拟机实现(C语言)

reference: https://felixangell.com/blog/implementing-a-virtual-machine-in-c/ 介绍 这里写篇文章介绍一下用C语言实现虚拟机。我喜欢从事底层程序的工作, 比如编译器、解释器、解析器和虚拟机等。所以我写这篇文章来学习一下虚...

2018-11-01 23:16:38

阅读数:20

评论数:0

执行机器码

首先生成机器码 为下面函数生成机器码: // mul.c int mul(int a, int b) { return a*b; } 然后编译汇编之,生成 object 文件: gcc -c mul.c -o mul.o 从 mul.o 中提取机器码: objdump -j .text -...

2018-10-25 21:37:22

阅读数:22

评论数:0

C语言实现协程(coroutine)

Donald Knuth 说过: “子程序就是协程的一种特例。” 编程过程中,最常用的就是函数调用,这时对于调用方来说,被调函数就是子程序(subroutine)。可以把协程理解相互配合工作的函数,函数之间可以相互切换,并且能够从上次切换的状态重新开始执行。 python 程序中的 yield...

2018-10-22 14:17:05

阅读数:25

评论数:0

达夫设备(duff's device)

达夫设备(Duff’s device)是 c 编程语言里将循环展开的编程技巧。 具体就是使用 switch 和 loop 结合,将 case 写在 loop 里面。 下面代码展示里其执行过程: #include <stdio.h> #in...

2018-10-22 12:21:58

阅读数:16

评论数:0

使用 dlv 调试 golang 程序

使用 dlv 前 取消编译时优化 go build -gcflags='all=-N -l' 取消测试用例编译时优化 go test -c --gcflags='all=-N -l' 使用 dlv to be continue…

2018-10-17 22:03:39

阅读数:66

评论数:0

结构体内存布局`alignof`

首先看看下面这个程序对输出 #include <stdio.h> #include <stdint.h> #include <stdalign...

2018-09-10 11:46:40

阅读数:41

评论数:0

共享内存

方式1 使用mmap #include <sys/mman.h> #include <stdlib.h> #include <strings....

2018-09-10 11:12:51

阅读数:20

评论数:0

linux 下的 autotools 使用

在Linux环境下,当拿到一份源码,安装过程通常简单如下: ./configure make make install c project 源码中通常有个 configure 程序,确切来说他是一个shell脚本。他的作用就是检测当前操作系统和一些执行环境(比如依赖和编译器等),然后根据这...

2018-08-23 22:12:11

阅读数:36

评论数:0

LRU缓存算法

注:本文使用golang语言表述。 LRU(least recently used)是一个缓存剔除策略算法,在缓存容量不足的时候,将最不常用的一个或多个缓存相剔除,腾出空间以便后续缓存使用。 实现一个LRU cache LRU cache可以使用两个数据结构来表示。 一个hash...

2018-06-13 11:43:46

阅读数:106

评论数:0

golang http 请求

1. 使用默认http.Client{} 使用标准库的http.Post方法。 postData = ` { "name": "jian", "age":20 }` ...

2018-04-26 16:50:09

阅读数:107

评论数:0

二叉树的序列化和反序列化

二叉树的序列化同遍历一样,有先序、后序和中序之分。这里使用先序遍历去序列化二叉树。 这样的一个一个二叉树,先序遍历的结果是:124536 1 | ---|--- | | --2-- --3 | | |...

2018-03-19 21:24:46

阅读数:174

评论数:0

Processes, threads and goroutines

Processes进程 起初,计算机在批处理模式下一个一个地执行任务。后来在上世纪60年代开发了多任务分时操作系统,在70年代 被广泛用于网络服务器、ftp、telnet、以及后来地httpd上,httpd使用fork子进程的方式来处理每个网连接。 在分时系统上,系统记录当前执行进程的状态,然...

2018-03-16 17:17:52

阅读数:93

评论数:0

golang c10k问题

不好意思,英文原文地址找不到了 go 内置 network poller 2002那年,Dan Kegel 提出了c10k问题。简单来说,就是在当今硬件水平下如何写出一个支持上万并发的tcp server。这个问题提出之后,出现了多线程和事件循环来提高服务器性能。 多线程对调度和...

2018-03-15 17:04:06

阅读数:222

评论数:1

数据库的存储和读取

reference: https://www.reddit.com/r/Database/comments/27u6dy/how_do_you_build_a_database/ 大多数数据库使用C编写,使用B-tree数据结构存储数据。过去,有一个叫C-Isam的C语言库(c libr...

2018-03-09 23:48:59

阅读数:1106

评论数:0

模拟任务流程编排(nodejs)

实现一个TaskMan,当: TaskMan('john') /** output: hi, I am john */ TaskMan('john').doSomething('go to work') /** output: hi, I am john doSomething go ...

2018-03-04 22:09:34

阅读数:92

评论数:0

mysql去除多列组合重复(并添加组合唯一索引)

缘起 由于起初mysql数据表设计考虑不周,导致后续表里出现重复数据,这里点重复是指多个列组合起来数据一样。现期望多个列组合数据表示点记录在数据表里唯一,结局办法就是加多列组合唯一索引。 本文以col1, col2和col3三列组合为唯一索引。数据表名为table_name 这时如果...

2018-02-27 00:29:41

阅读数:766

评论数:0

程序的编译与执行过程

本文以C程序为例。 构建C程序需要4个步骤,分别使用4个工具完成: preprocessor, compiler, assembler, and linker.四步完成后生成一个可执行文件。 第一步,预处理. 这一步处理 头文件、条件编译指令和宏定义。 第二步,编译. 将第一步产生的...

2018-02-25 23:36:43

阅读数:652

评论数:0

mysql事务模型

说起事务,得先说说mysql ACID。 ACID 是 atomicity, consistency, isolation, and durability 的英文首字母缩写,即原子性、一致性、隔离性和持久性。一个数据库系统需要这四点,mysql innodb引擎的事务特性与这四点紧密相关。 事...

2018-02-14 12:41:37

阅读数:129

评论数:0

AB测试与结果绘图

最近在排查问题过程中,使用ab工具对一个线上系统做了一个简单压测。ab工具是Apache 出的一个http压测工具,具体使用可以参考网上很多教程,简单的使用如下: ab -n 1000 -c 10 www.baidu.com/ 输出: Benchmarking www.googl...

2018-02-12 20:09:55

阅读数:194

评论数:0

macos修复hostname被篡改为bogon

带着mac去了外地,打开terminal准备连接公司的开发机。这时发现terminal上显示的hostname被篡改为bogon。 bogon是谁,难道有人动了我的电脑,回想一下没有啊。难道有吊炸天的hacker黑了我的电脑然后改了一下hostname?也是不肯能,他有那功夫干这个也是无聊透顶。...

2018-02-10 23:44:46

阅读数:2035

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭