8 bdss58

已隐藏 已隐藏

暂无相关描述

等级
TA的排名 7k+

linux 系统调用

https://blog.packagecloud.io/eng/2016/04/05/the-definitive-guide-to-linux-system-calls/

2019-08-11 22:22:04

ssh端口转发(打洞)

localportforwarding举例来说,工作中常见场景,一台mysql数据库1.2.3.4:3306在本地网络环境中不通,不过在远程开发机1.2.3.5上可以连通,通常需要ssh到1.2.3.5上,然后mysqlclient命令行链接。使用sshlocalportforwarding可以做到直接在本地连接1.2.3.4:3306ssh-fN...

2019-07-14 12:59:35

一键安装gcc 和 docker

写了一个脚本,自动化gcc和docker安装过程。优点:自动化快速不依赖网络屏蔽配置细节缺点:5.对安装过程无感知6.只能安装固定版本docker(dockerce18),gcc(9.1)gcc脚本制作过程:shell脚本installgcc.sh#!/bin/bash#Thisisjustalittlescriptthat...

2019-07-13 19:34:13

批量重命名文件

为了避免ide跳转到golangplan9代码,需要把所有“plan9”到文件重命名,加上后缀.bak。find.local/go/src-name"*plan9*"-typef|xargs-n1sh-c'f=$0;d=$(dirname$f);b=$(basename$f);mv$f$d/${b/$b/$b.bak}'...

2019-07-13 13:29:58

文件操作为啥需要及时手动 close?

目前知道的原因:文件打开后保存在操作系统buffer中,如果程序异常退出,造成系统资源浪费。使用file.close(),能够让os及时将buffer中的数据flush到文件里。防止在频繁open操作的场景下的filedescriptors耗尽(文件描述符泄漏)。//todo待看源码验证。...

2019-07-06 12:37:57

多线程导致的内存泄漏

JoinablethreadsVSDetachedthreads线程有两种运行模式:JoinableModeDetachedModeJoinableThread&pthread_join()#include<stdlib.h>#include<stdio.h>#include<string.h>#include...

2019-06-28 22:59:54

内存释放free函数如何知道内存大小

想知道free如何工作那肯定需要知道malloc如何工作,正所谓怎么来的就怎么回去。使用malloc分配内存时候根据参数指定的大小,分配一块内存,然后返回这块内存的起始位置给调用者,这就是调用者拿到的所谓的指针。起始这个指针并不是真正的起始位置,真正的指针在malloc返回指针p的前面,内存分配器在p的前面用两个字节的空间来存放分配的内存大小信息。看下图:...

2019-06-28 15:19:05

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

查看更多

勋章 我的勋章
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!