自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 Rust 添加老版本的依赖时报错

因为有些仓库对版本的管理,是有问题的,比如说,做了 break 性的修改,但是没有发布更大的版本号,而是继续使用小版本号,这样子其他仓库下载的时候,默认会下载小版本下的更新版本,就导致了其他仓库的编译问题。在 version 的 value 字符串里面,需要使用 = 等号,或者其他的 大于小于号等于号等。不能简单的协程 version = “0.4.8”,这样子又会变成跟不写一样,默认取最新的版本。解决方法就是:在 toml 文件中指定特定仓库的特定版本,要如下这样。

2023-11-16 18:17:36 175

转载 幂数的‘幂’的来历

转自https://www.guokr.com/question/501057/幂并非外来术语,其原意为盖东西的方布。《九章算数》第一章《方田》中的第二个问题如下:又有田广十二步,从十四步。问为田几何?答曰:一百六十八步。方田术曰:广从步数相乘得积步。所谓方田就是矩形的田,广是宽度,从是高度。对于这条问题,三国时刘徽注解道:此积谓田幂。凡广从相乘谓之幂。所以至少从三国时期,幂可以表示长宽相乘。唐李淳风则对刘徽注又有阐述说:经云广从相乘得积步,注云“...

2020-09-14 09:33:09 3100

原创 Rust切换allocator

Rust支持2个内存分配器(allocator):alloc_system和alloc_jemalloc。alloc_jemalloc不支持valgrind,valgrind是查看内存泄漏很有帮助的工具,所以在定位内存泄漏问题时,需要切换成alloc_system。The Rust Programming Language 第一版上的说明已经过时了,只写#![feature(alloc

2018-01-15 16:09:49 1193

原创 /proc文件系统读出来的数据是最新的吗?

每次从/proc下读出来的数据都是最新的,没有“更新时间”这一说。每当读文件时,数据都是即时生成的。参考:https://unix.stackexchange.com/questions/74713/how-frequently-is-the-proc-file-system-updated-on-linux

2018-01-08 18:08:47 414

原创 通过/proc/PID/status查看进程内存占用情况

网上有很多资料描述status的内容,但是有些是错误的。综合比较了一下,下面2个的内容应该是正确的。1、https://locklessinc.com/articles/memory_usage/VmPeak:Peak virtual memory usageVmSize:Current virtual memory usageVmL

2018-01-08 16:47:36 7395

原创 bitcoin 在ubuntu上的安装指南

doc中有指导文档https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md

2017-11-17 11:57:33 2077

原创 有趣的一句话

今天听到一句有趣的话:“写专利就是,自己挖一个坑,跳进去,然后再爬出来”。很形象的形容了“”寻找难点,钻进去研究,然后最终解决”这样一个过程。也可以用在写论文等等其他方面。最近还看到一句话:读博士写论文的过程,就是开始有个想法,然后不断重复,直到自己相信,最后整理出来的过程。

2017-11-15 18:09:18 627

转载 protobuf扫盲

今天来介绍一下“Protocol Buffers”(以下简称protobuf)这个玩意儿。本来俺在构思“生产者/消费者模式 ”系列的下一个帖子:关于生产者和消费者之间的数据传输格式。由于里面扯到了protobuf,想想干脆单独开一个帖子算了。  ★protobuf是啥玩意儿?  为了照顾从没听说过的同学,照例先来扫盲一把。  首先,protobuf是一个开源项目(官方站点在“这

2017-11-14 12:02:28 273

转载 ubuntu16.04 npm安装

https://www.howtoing.com/install-latest-nodejs-npm-on-ubuntu第1步:添加NodeJS的PPA首先,你需要Node.js PPA在我们的系统的NodeJS官方网站提供通过。我们还需要如果尚未安装安装python-software-properties。$ sudo apt-get install python-s

2017-11-13 17:22:33 10474 1

转载 让PIP源使用国内镜像

对于Python开发用户来讲,PIP安装软件包是家常便饭。但国外的源下载速度实在太慢,浪费时间。而且经常出现下载后安装出错问题。所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成功率。国内源:新版ubuntu要求使用https源,要注意。清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:http://mirrors.

2017-11-13 16:56:39 455

转载 npm加速

淘宝镜像:http://npm.taobao.org/镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在):1.通过config命令(持久使用)设置命令:npm config set registry https://registry.npm.taobao.org //设置查看命令1:

2017-11-13 16:23:04 487

原创 程序员的幽默

这里面的一些话都是摘抄的,记录下来,玩味一下。A physicist, an engineer, and a computer scientist were discussing the nature of God. Surely a Physicist, said the physicist, because early in the Creation, God made Ligh

2014-02-14 09:49:34 828

原创 gperf工具的使用

我使用gperf工具是由于要裁剪字符转换库libiconv,libiconv库中就使用到了gperf这个工具,为了更好地理解iconv库,所以学习了一下gperf的使用。    关于gperf的介绍可以百度、google。GNU官方网站上的解释是:GNU gperf是一个完美的hash函数生成器。对于给定的一列字符串,它可以生成一个hash函数和hash表,以C或C++的形式。对于输入的字

2014-02-12 15:49:10 12509

转载 计算机界名人榜-----约翰·冯·诺依曼

约翰·冯·诺依曼 最简单的来说 他的精髓贡献是2点:2进制思想与程序内存思想20世纪即将过去,21世纪就要到来.我们站在世纪之交的大门槛,回顾20世纪科学技术的辉煌发展时,不能不提及20世纪最杰出的数学家之一的冯·诺依曼.众所周知,1946年发明的电子计算机,大大促进了科学技术的进步,大大促进了社会生活的进步.鉴于冯·诺依曼在发明电子计算机中所起到关键性作用,他被西方人

2012-08-21 11:36:20 12667

转载 计算机名人榜----- 阿兰·麦席森·图灵

阿兰·麦席森·图灵(Alan Mathison Turing,1912.6.23—1954.6.7)【简介】               英国数学家、逻辑学家,被称为人工智能之父。 1931年图灵进入剑桥大学国王学院,毕业后到美国普林斯顿大学攻读博士学位,二战爆发后回到剑桥,后曾协助军方破解德国的著名密码系统Enigma,帮助盟军取得了二战的胜利。       阿兰·麦席森

2012-08-21 11:35:00 7923

转载 C语言中size_t的陷阱

今天写了一个类似这样的程序:#include #include int main(){ int i = -1; if(i > strlen("Demon")) printf("Hello World"); else printf("Hello Demon"); return 0;}输出的竟然是Hello Wor

2012-08-09 11:43:05 1588

原创 linux编程:getenv,putenv,setenv

1、getenv   头文件 #include函数原型 char * getenv(const char *name);函数说明 getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。返回值

2012-08-09 11:12:09 12314

原创 字符串变小写

ngx代码中,字符转化为小写的宏是:#define ngx_tolower(c)   (u_char) ((c >= 'A' && c 如果c在[A, Z]之间,与上0x20,就会变成小写的字符。原因是A === 0x41,Z===0x5A,41的二进制表示为0100 0001,5A的二进制表示为0101  1010,而0x20的二进制表示为0010  0000。大写字母的高4位中的第三位

2012-08-08 10:31:08 764

转载 Nginx源码分析-内存池

本文转自淘宝平台http://www.tbdata.org/archives/1390,不是为了夺他人之美,只是觉得写得很好,怕淘宝万一删掉就找不到了,放在这里保存一下。大家可以直接链接过去,他们那个页面做的还是不错的。Nginx源码分析-内存池Nginx的内存池实现得很精巧,代码也很简洁。总的来说,所有的内存池基本都一个宗旨:申请大块内存,避免“细水长流”。一、创建一个内

2012-08-07 10:48:24 782

原创 内存分配地址的对齐

void * memalign (size_t boundary, size_t size) 看nginx源代码中的实现#define ngx_align(d, a)     (((d) + (a - 1)) & ~(a - 1)) 返回的地址值为d后第一个是a的整数倍的值。a是2的整数次幂。假设a = 2^n,即a的二进制表示中末尾有n个0。假设返回的结果为A。则A-d的

2012-08-03 18:35:01 1262

转载 linux memalign、valloc函数

在GNU系统中,malloc或realloc返回的内存块地址都是8的倍数(如果是64位系统,则为16的倍数)。如果你需要更大的粒度,请使用memalign或valloc。这些函数在头文件“stdlib.h”中声明。    在GNU库中,可以使用函数free释放memalign和valloc返回的内存块。但无法在BSD系统中使用,而且BSD系统中并未提供释放这样的内存块的途径。

2012-08-03 16:20:27 21843

转载 c语言NULL和0区别

转载自:http://www.cnblogs.com/youxin/archive/2012/03/27/2420023.html先看下面一段代码输出什么:#includeint main(){ int *p=NULL; printf("%s",p); }输出(null) ,单步调试可以看出执行int *p=NULL,p的值为0x0000000

2012-08-03 16:17:25 23686 2

转载 TCP listen() Backlog 参数详解

int listen(int fd, int backlog);socket系统调用listen只被tcp 服务器使用,他做两件事:1. 将未链接的套接口转换为被动套接口,指示内核接受向此套接口的连接请求,调用此系统调用后tcp 状态机有close转换到listen.2.第二个参数制定了内核为此套接口排队的最大连接个数。关于第二个参数,对于给定的监听套接口,内核要维护两个队

2012-08-01 15:20:10 12764

转载 ioctl函数

本函数影响由fd 参数引用的一个打开的文件。   #include int ioctl( int fd, int request, .../* void *arg */ ); 返回0 :成功    -1 :出错   第三个参数总是一个指针,但指针的类型依赖于request 参数。 我们可以把和网络相关的请求划分为6 类: 套接口操作 文件操作 接口操作

2012-07-20 12:01:47 760

转载 ioctl中的ifconf ifreg 结构

用ioctl获得本地ip地址时要用到两个结构体ifconf和ifreq,它们对于大多数人来说都是比较陌生的,这里给大家一种比较简单的理解方法,当然只一种帮助理解的方法,在描述中可能会有一些地方与真实定义有所出入,仅供参考.首先先认识一下ifconf和ifreq://ifconf通常是用来保存所有接口信息的//if.hstruct ifconf{int ifc_len

2012-07-20 11:37:30 1673 1

翻译 RFC894--以太网上IP数据报的传输标准

备忘录状态这篇RFC阐述了一种在以太网上封装IP数据报的标准方法。这篇RFC是为ARPA-INTERNET社区提供的。 介绍本备忘录适应于以太网(10Mbps,48bit地址)。详细描述了IP数据报在试验型以太网(Experimental Ethernet)上的传输过程。 帧(Frame)格式IP数据报以标准以太网帧格式进行传输。以太网帧中的type字段必须包含十六进制

2012-07-19 12:10:09 2827

转载 简介struct cmsghdr结构

附属信息可以包括0,1,或是更多的单独附属数据对象。在每一个对象之前都有一个structcmsghdr结构。头部之后是填充字节,然后是对象本身。最后,附属数据对象之后,下一个cmsghdr之前也许要有更多的填充字节。在这一章,我们将要关注的附属数据对象是文件描述符与证书结构。下图显示了一个包含附属数据的缓冲区是如何组织的。我们需要注意以下几点:cmsg_len与CMSG_LEN

2012-07-19 12:06:14 14420

转载 sendmsg recvmsg函数

sendmsg(2)与recvmsg(2)函数这些函数为程序提供了一些其他的套接口I/O接口所不具备的高级特性。下面的内容我们将会先来看一下sendmsg来介绍这些主题。然后将会完整的介绍recvmsg函数,因为他们的函数接口是相似的。接下来,将会描述msghdr的完整结构。sendmsg(2)函数现在是时候进入这个大同盟了。从概念上说,sendmsg函数是所有写入函数的基础,而他是从

2012-07-19 12:05:40 25496

转载 简介I/O向量、sendv、writev

在我们了解使用附属数据工作的复杂函数之前,我们应该熟悉被readv(2)与writev(2)系统调用所使用的I/O向量。我们不仅将会发现这些函数是十分有用的,而他们的工作方式也被引入了一些附属数据函数中。这会使得后面的理解更为容易。I/O向量(struct iovec)readv(2)与writev(2)函数都使用一个I/O向量的概念。这是由所包含的文件定义的:#include s

2012-07-19 12:05:07 6393

转载 内核中用于数据接收的结构体struct msghdr

我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构。在我们的虚拟机上发送icmp回显请求包,ping另一台主机172.16.48.1。我们使用系统调用sendto发送这个icmp包。     ssize_t sendto(int s, const void *buf, size_t len, int flags,

2012-07-19 12:03:25 1275

转载 fork的返回值

fork简介:         fork英文原意是“分岔,分支”的意思,而在操作系统中,乃是著名的Unix(或类Unix,如Linux,Minix)中用于创建子进程的系统调用。 【NOTE1】 fork () 的作用是什么?换句话说,你用 fork () 的目的是什么? ――是为了产生一个新的进程,地球人都知道 :)产生一个什么样的进程? ――和你本来调用 fork (

2012-07-18 17:06:09 653

转载 环境变量

一、什么是环境变量? Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。二、定制环境变量 环境变量是和Shell紧密相关的,它是通过Shell命令来设置的。环境变量又可以被所有当前用户所运行的程序所使用。对于bash来说,可以通过变量

2012-07-18 11:05:11 504

转载 hosts文件与resolv.conf文件

一. Hosts文件的位置 在Windows 2000/XP/Vista系统中位于\%Systemroot%\System32\Drivers\Etc 文件夹中。二. Hosts文件的基本内容和语法 用记事本打开hosts文件,就可以看见了微软对这个文件的说明。Hosts文件文一般有如下面的基本内容 # Copyright (c) 1993-1999 Microsoft Cor

2012-07-04 09:39:40 4802

转载 看看牛人们是怎么评价编程语言的

Basic一个有过 BASIC 编程经历的人是很难学会好的编程习惯的。作为一个潜在的程序员,他们已经被脑残并且无法修复。-- Edsger Wybe Dijkstra,Dijkstra 算法发明者CC 语言程序就像一群拿着刀的人在刚刚打过蜡的地板上快速的跳舞。-- Waldi Ravens罗马帝国衰败的主要原因之一是因为他们缺少0,他们没有办法知道他们的 C

2012-07-02 18:43:15 774

转载 vmware网络模式设置(说的最简单的一篇文章)

VMware 提供四种网络连接方式 ========================================================= Bridge:这种方式最简单,直接将虚拟网卡桥接到一个物理网卡上面,和linux下一个网卡 绑定两个不同地址类似,实际上是将网卡设置为混杂模式,从而达到侦听多个IP的能力. 在此种模式下,虚拟机内部的网卡(例如linux下的eth0

2012-07-02 17:03:17 532

转载 VMware网络设置详解 打造超级虚拟网络 (说的最为复杂和全面的)

我们知道,VMware Workstation提供了很多虚拟设备,利用这些设备,我们除了可以组建典型的桥接网络、仅主机网络、NAT网络外,还能组建复杂的自定义网络。本篇 目的就是让大家认识和掌握VMware Workstation虚拟的各种网络设备,最后再组建一个如图1所示的超级自定义网络。超级自定义网络示意图  一、认识网络设备  要组网,就需要使用网卡、交换机等组网设备,同样地

2012-07-02 16:15:14 475

转载 VMware网络配置详解

VMware网络配置详解一:三种网络模式简介安装好虚拟机以后,在网络连接里面可以看到多了两块网卡:其中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口,这些后面会详细介绍。 选择虚拟机网络模式方法如下,单击“Edit virtual machine settings”,如图所示: 然后在“Hardware”选项卡中选择“Ethernet”,在左边

2012-07-02 16:13:52 439

转载 gcc编译器

版权声明本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接、下载、传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明。其他作品本文作者十分愿意与他人共享劳动成果,如果你对我的其他翻译作品或

2012-06-28 16:28:35 1080

转载 无线局域网技术白皮书

无线局域网是计算机网络与无线通信技术相结合的产物。它利用射频(RF)技术,取代旧式的双绞铜线构成局域网络,提供传统有线局域网的所有功能,网络所需的基础设施不需再埋在地下或隐藏在墙里,也能够随需移动或变化。使得无线局域网络能利用简单的存取构架让用户透过它,达到“信息随身化、便利走天下”的理想境界。WLAN是20世纪90年代计算机与无线通信技术相结合的产物,它使用无线信道来接入网络,为通信的移动化,个

2012-06-28 09:33:03 3061

转载 WLAN组成

WLAN主要由站(Station,STA)、接入点(Access Point,AP)、无线介质( Wireless Medium,WM)和分布式系统(Dis-tribution System,DS)组成。  站( STA)。STA在WLAN中一般为客户端,可以是装有无线网卡的计算机,也可以是有WiFi模块的智能手机。STA可以是移动的,也可以是固定的,是无线局域网的最基本组成单元。

2012-06-28 09:27:00 3210

nginx源码分析

nginx 源码 分析 讲的很详细,是网上的人从csdn博客 “啃饼的技术博客” 中 的文章总结出来的,可以看他的博客

2012-07-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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