pre-binary 安装docker

由于公司centos开发机有网络完全设置,总是存在网络不通或者外网不通或者yum源不全等各种各样等问题,导致我安装docker环境处处碰壁。 现在这里记录一下我是用 pre-binaries 离线安装docker的过程。 1. 准备 pre-binaries 在这里下载二进制打包文件 https:...

2019-03-15 19:50:16

阅读数 28

评论数 0

语义化版本编号(Semantic Versioning)

2019-01-11 11:16:54

阅读数 63

评论数 1

linux进程虚拟内存

http://csapp.cs.cmu.edu/2e/ch9-preview.pdf http://engineering.pivotal.io/post/virtual_memory_settings_in_linux_-_the_problem_with_overcommit/ https:/...

2018-12-06 23:30:17

阅读数 337

评论数 0

为啥redis是单线程的?

看到网上一些讨论,现在在这里整理一下。 多线程编程复杂并且线程之间需要加锁,影响性能 CPU并不是瓶颈,网络才是瓶颈。redis 是一个server,通过网络io与多个client交互。 多线程并不意味着更快。redis设计成单线程就是为了避免线程之间的锁竞争,使得内存访问超级快。 ...

2018-11-22 16:13:43

阅读数 83

评论数 0

虚拟机实现(C语言)

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

2018-11-01 23:16:38

阅读数 1026

评论数 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

阅读数 511

评论数 0

C语言实现协程(coroutine)

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

2018-10-22 14:17:05

阅读数 496

评论数 0

达夫设备(duff's device)

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

2018-10-22 12:21:58

阅读数 74

评论数 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

阅读数 426

评论数 0

结构体内存布局`alignof`

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

2018-09-10 11:46:40

阅读数 140

评论数 0

共享内存

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

2018-09-10 11:12:51

阅读数 43

评论数 0

linux 下的 autotools 使用

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

2018-08-23 22:12:11

阅读数 85

评论数 0

LRU缓存算法

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

2018-06-13 11:43:46

阅读数 181

评论数 0

golang http 请求

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

2018-04-26 16:50:09

阅读数 188

评论数 0

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

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

2018-03-19 21:24:46

阅读数 314

评论数 0

Processes, threads and goroutines

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

2018-03-16 17:17:52

阅读数 166

评论数 0

golang c10k问题

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

2018-03-15 17:04:06

阅读数 337

评论数 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

阅读数 2084

评论数 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

阅读数 264

评论数 0

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

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

2018-02-27 00:29:41

阅读数 1828

评论数 0

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