8 bdss58

尚未进行身份认证

暂无相关描述

等级
博文 232
排名 7k+

pre-binary 安装docker

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

2019-03-15 19:50:16

语义化版本编号(Semantic Versioning)

2019-01-11 11:16:54

linux进程虚拟内存

http://csapp.cs.cmu.edu/2e/ch9-preview.pdfhttp://engineering.pivotal.io/post/virtual_memory_settings_in_linux_-_the_problem_with_overcommit/https://manybutfinite.com/post/anatomy-of-a-program-in-mem...

2018-12-06 23:30:17

为啥redis是单线程的?

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

2018-11-22 16:13:43

虚拟机实现(C语言)

reference:https://felixangell.com/blog/implementing-a-virtual-machine-in-c/介绍这里写篇文章介绍一下用C语言实现虚拟机。我喜欢从事底层程序的工作,比如编译器、解释器、解析器和虚拟机等。所以我写这篇文章来学习一下虚拟机是如何工作的,以此来带领自己进入底层编程领域。前提继续这篇文章之前你需要有:GCC/Cla...

2018-11-01 23:16:38

执行机器码

首先生成机器码为下面函数生成机器码://mul.cintmul(inta,intb){ returna*b;}然后编译汇编之,生成object文件:gcc-cmul.c-omul.o从mul.o中提取机器码:objdump-j.text-dmul.omul.o:fileformatelf64-x86-64Disa...

2018-10-25 21:37:22

C语言实现协程(coroutine)

DonaldKnuth说过:“子程序就是协程的一种特例。”编程过程中,最常用的就是函数调用,这时对于调用方来说,被调函数就是子程序(subroutine)。可以把协程理解相互配合工作的函数,函数之间可以相互切换,并且能够从上次切换的状态重新开始执行。python程序中的yield关键字可以将一个函数停止执行并保持执行状态,等待再次被调用。defrangeN(a,b...

2018-10-22 14:17:05

达夫设备(duff's device)

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

2018-10-22 12:21:58

使用 dlv 调试 golang 程序

使用dlv前取消编译时优化gobuild-gcflags='all=-N-l'取消测试用例编译时优化gotest-c--gcflags='all=-N-l'使用dlvtobecontinue…

2018-10-17 22:03:39

结构体内存布局`alignof`

首先看看下面这个程序对输出#include<stdio.h>#include<stdint.h>#include<stdalign.h>typedefuint32_tMYSIZE;structNode{char*Data;//1---指针变量,如果在64位操作系统上,占用8bytestructNode...

2018-09-10 11:46:40

共享内存

方式1使用mmap#include<sys/mman.h>#include<stdlib.h>#include<strings.h>#include<unistd.h>#include<errno.h>#include<stdio.h&a

2018-09-10 11:12:51

linux 下的 autotools 使用

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

2018-08-23 22:12:11

LRU缓存算法

注:本文使用golang语言表述。LRU(leastrecentlyused)是一个缓存剔除策略算法,在缓存容量不足的时候,将最不常用的一个或多个缓存相剔除,腾出空间以便后续缓存使用。实现一个LRUcacheLRUcache可以使用两个数据结构来表示。一个hashtable,用来存储需要存储的缓存项,这样,get/set操作可以在O(1)时间复杂度下完成。一个d...

2018-06-13 11:43:46

golang http 请求

1.使用默认http.Client{}使用标准库的http.Post方法。postData=`{"name":"jian","age":20}`resp,err:=http.Post("url","application/json",bytes.NewBuffer(postData))iferr!=nil{//}...

2018-04-26 16:50:09

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

二叉树的序列化同遍历一样,有先序、后序和中序之分。这里使用先序遍历去序列化二叉树。这样的一个一个二叉树,先序遍历的结果是:1245361|---|---||--2----3|||456为了序列化,现将空节点使用符号“#“代替,那么先序遍历的结果就是:124...

2018-03-19 21:24:46

Processes, threads and goroutines

Processes进程起初,计算机在批处理模式下一个一个地执行任务。后来在上世纪60年代开发了多任务分时操作系统,在70年代被广泛用于网络服务器、ftp、telnet、以及后来地httpd上,httpd使用fork子进程的方式来处理每个网连接。在分时系统上,系统记录当前执行进程的状态,然后在不同进程之间快速切换以便让CPU去执行每个进程,这样便达到了并发执行的效果。切换的过程称作上下文切...

2018-03-16 17:17:52

golang c10k问题

不好意思,英文原文地址找不到了go内置networkpoller2002那年,DanKegel提出了c10k问题。简单来说,就是在当今硬件水平下如何写出一个支持上万并发的tcpserver。这个问题提出之后,出现了多线程和事件循环来提高服务器性能。多线程对调度和内存压力比较大,虽然事件循环有所缓解,但是有复杂的回调。go继承了两者的优点。Go应对...

2018-03-15 17:04:06

数据库的存储和读取

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

2018-03-09 23:48:59

模拟任务流程编排(nodejs)

实现一个TaskMan,当:TaskMan('john')/**output:hi,Iamjohn*/TaskMan('john').doSomething('gotowork')/**output:hi,IamjohndoSomethinggotowork*/TaskMan('john').sleep(3).doSomething('g...

2018-03-04 22:09:34

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

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

2018-02-27 00:29:41
奖章
    暂无奖章