SO_REUSEPORT 端口复用socket选项 Liunux 3.9版本对于TCP和UDP增加了端口复用SO_REUSEPORT的socket选项,这个选项允许相同主机上的多个socket绑定到同一个端口,用来提升多核系统上多线程网络server应用的性能。 SO_REUSEPORT的基本概念非常简单,多个server(进程或线程)能绑定到相同的端口上,如如下代码: int sfd = socket(domain,...
深入理解补码 补码黑历史对于每个计算机专业的同学,刚开始都会接触到二进制转换、原码、反码、补码的知识。国内教材上是如下定义的:原码:最高位为符号位,0代表整数,1代表复数,非符号位为改数字绝对值的二进制表示。如127的原码为 0111 1111,-127的原码为 1111 1111。反码:正数的反码与原码一致;负数的反码是对原码按位取反(符号位不变)。如127的反码为 0111 1111,-12...
记住英文定义,你再也不会混淆C语言的指针数组、数组指针,函数指针、指针函数 经常有小伙伴在求职面试过程中,会被问到C语言的基础问题,最令人抓狂的两个问题可能是:1)请说出指针数组和数组指针的区别; 2)请说出函数指针和指针函数的区别。 虽然小伙伴们有很丰富的开发经验,如果没有做好准备,突然面对这两个问题,也会大脑瞬间一懵。实际上,这些技术在项目开发中会经常使用,就是和名称没对应上。笔者最近仔细研究了下这两类问题,对比英文定义,发现根源还是我们的汉语博大精...
select函数导致CPU使用率100%的问题 问题项目重构过程中,发现修改后,进程的CPU始终为100%,相关代码如下: struct timeval timeout = {2,0}; while(1) { result = select(FD_SETSIZE, &testfds, (fd_set *)0, (fd_set *)0, &timeout); } ...
VPP Node分析(一) Node示例代码分析 VPP Node分析(一) Node示例代码分析1、概述VPP由一个个plugin组成,功能逻辑按node进行划分,数据包在node之间进行传递,一个个node构成了VPP的Graph处理图谱,本文先简单分析node的一般代码框架,后续文章深入分析Node的后台调度框架和原理。2、节点注册VPP中Node注册是自定义插件的入口,由于VPP封装性好,注册一个Node,只需按格式调用VPP定义...
ubuntu 16.04 下配置串口输出 一、修改grub,增加:GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"GRUB_TERMINAL=serialGRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"root@ubuntu:~# vi /etc/d...
从零开始写Automake —— Automake的最简单教程 源文件目录结构: 项目顶层目录名为helloworld,源码放在src目录下,源码如下: src/main.c#include <stdio.h>#include <config.h>int main(void){ puts("Hello World!"); puts("This is " PACKAGE_STRING "."); r...
Autoconf和Automake使用 Autoconf和Automake使用 一、生成Makefile流程图二、具体实例 执行命令顺序:autoscan;aclocal; autoconf; autoheader;automake --add-missing; ./configure; make; ./helloworld;1、建目录 在你的工作目录下建一个helloworld目录,用来存放...
VPP使用详解——基于VPP的VLAN配置 组网场景:配置原理:VPP中的接口模式默认为L3模式,没有和华为、H3C交换机对应的VLAN命令,利用VPP实现VLAN转发的模型类似于Linux中的bridge。如要实现如下VLAN配置(参见上图):接口GE1的模式为access,加入到VLAN 10中;接口GE2的模式为trunk,允许VLAN10和VLAN11的报文通过;接口GE3的模式为acc...
UBUNTU直接安装VPP VPP提供了简易的安装方式,如果不需要改动VPP的源码,是可以安装和使用VPP的,安装步骤如下: 更新apt-get源 修改/etc/apt/sources.list 文件,在结尾增加如下两行: deb https://packagecloud.io/fdio/1901/ubuntu/ xenial main deb-src https://packagecl...
electric-fence mprotect() failed的问题解决方法 最近定位一个多线程内存malloc崩溃时的问题,这个问题内部测试的时候测不出来,业务刚上线压力规模较小时也没问题,后来随着业务量的增大,平均每2周会出现一次,生成的coredump文件每次都是挂在malloc函数,报错提示 malloc(): memory corruption (fast)。 根据相关迹象,最大的怀疑点是使用野指针或内存写越界,导致malloc堆头的内部管理数据...
定位多线程内存越界问题实践总结 定位多线程内存越界问题实践总结关键字 多线程,内存越界,valgrind,electric-fence,mprotect,libsigsegv,glibc 最近定位了在一个多线程服务器程序(OceanBase MergeServer)中,一个线程非法篡改另一个线程的内存而导致程序core掉的问题。定位这个问题花了整整一周的时间,期间历经曲折,尝试了各种内存调试的办法。往往感觉就要柳暗花...
DPDK TestPmd的转发模式 原文链接:TestPmd转发模式官方英文文档TestPMD的设置转发模式命令: testpmd> set fwd (io|mac|macswap|flowgen| rxonly|txonly|csum|icmpecho|noisy) (""|retry) 除rx_only模式外的其他几种转发模式都可以指定retry参数各种转发模式的说明如下:io: 使用...
不利用临时变量,交换两个变量的值 1.借助中间量交换通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int x = 10; int y = 20; int temp = x; x = y; y = temp; 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交...
堆排序的C语言实现 #include <stdio.h>#include <stdlib.h>#include <math.h>#include <time.h>typedef struct heap_array{ int max_num; int total_num; int last_index; int data[0];}heap_a...
DPDK环境搭建和编译运行 1、编译工具 apt-get install make apt-get install gcc apt-get install linux-kernel-headers kernel-package apt-get install numactl libnuma-dev准备环境变量:export RTE_ARCH="x86_64"export RTE_SDK="/h...
计算机体系结构 CPU与内存的那些事下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下:转: CPU的等待有多久?原文标题:What Your Computer Does While You Wait原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 本...
VPP Node Graph关系图 VPP的业务是由一个一个的Node构成了一张Graph,形成业务处理图谱,用命令show vlib graph可以查看Node Graph,笔者整理的基础的Node Graph如下图,供阅读者参考。...
VPP代码分析——Node的数据结构和初始化 VPP借鉴了FreeBSD协议栈的graphnode处理思想,报文的处理是在一个个node之间逐级处理,除VPP预定义的node外,开发者可以按需要在插件中创建相应的功能node,并和VPP预定义的node建立关联关系。一、VPP的NODE数据结构 node的基础数据结构如上图所示,__bootstrap_vlib_main_vector是最顶级的全局变量,此变量下的vm是一个...
使用Automake,Autoconf生成Makefile Automake,Autoconf生成Makefile在Unix 上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个Makefile就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于make的文档比较多,不过写一个Makefile总是一件很烦人的事情,GNU Autoconf 及...
VPP和Linux内核协议栈通信的方法 背景介绍 基于VPP开发一款网络设备,除使用VPP框架实现端口数据报文转发外,还需要对设备进行配置和管理,比较常用的是要实现ssh、web等相关服务,另外,由于VPP并未实现dhcp server的功能,控制面可能还需移植isc-dhcp类似的dhcp server。相关的用户态程序是基于Linux内核的socket来收发包的,因此,需要实现VPP和Linux内核协议栈通信的方法,可以将...
VPP使用详解——使用VPP作为家庭路由器 介绍VPP运行在Intel的Atom处理器系统上,是作为一个SOHO路由器的较好方案。Linux发行版本Linux发行版本使用的是Ubuntu 16.04 LTS,安装VPPClone vpp 最新代码,编译软件:$ git clone http://gerrit.fd.io/r/vpp vpp-gate$ cd vpp-gate$ make install-dep...
Cisco VPP入门(四)——VPP示例插件编译运行 一、VPP源码架构VPP源码架构如上图,主要包括以下几个层次:Plugins:主要为实现一些功能,在程序启动的时候加载,一般情况下会在插件中加入一些node节点去实现相关功能Vnet:提供网络资源能力:比如设备,L2,L3,L4功能,session管理,控制管理,流量管理等VLIB:主要提供基本的应用管理库:buffer管理,graph node管理,线程,CLI,trace等...
Cisco VPP入门(三)——VPP启动配置及常用命令 配置文件:startup.cfg(/etc/vpp/startup.cfg)/*****************************************************************************/unix { Interactive //将CLI命令加入到输入输出,提供调试 log /tmp/vpp.log //日志 full-coredump...
Cisco VPP入门(二)—— VPP源码目录介绍 一、获取源码 git clone -b master https://gerrit.fd.io/r/vpp fdio.1704一、源码目录说明目录名称 描述说明 build-data Build metadata build-root Build output directory doxygen Documentation generator co...
Cisco VPP入门(一)——VPP源码编译与安装 VPP是Cisco开源的路由工程,支持如下网络功能: 我的系统是Ubuntu 14.04,使用VPP1606分支代码进行编译安装1、下载源码git clone -b stable/1606 https://github.com/FDio/vpp.git2、编译 进入目录并且安装依赖文件 #cd vpp # make install-dep 生成Makefi...
转发技术风雨三十年,你经历过…… 今天看到一篇深度好文,特转发过来,时不时理解并回忆下过去的技术发展历程。曾经的我,也是奋斗在网络数通领域,现今转换到虚拟化NFV的方向,的确如文章里谈的,多少人的人生的轨迹无意间被技术的隐形大手在背后推动着,全然无知。 作者简介:岳青伦,任职于华为产品与解决方案部,研究方向SDN/NFV 前言 记得刚到大学报道的那天,为了给家人报个平安,我在电话亭里足足等了两个小时,...
Intel Tick-Tock策略简介 Intel Tick-Tock策略简介 Intel的tic-toc策略(又称为:tick-tock)很有趣,特别几张roadmap画得很赞。什么是tic-toctic-toc是Intel从2008年引入的一个CPU研发和生产策略。简单的说就是,每一代CPU都会对应tic或者toc。如果这代CPU对应tic,那么这一代CPU相角前一代将会提升制造工艺(即更精细的纳米工艺),...
Ubuntu14.04双网卡主备配置 近日有个需求,交换机有两台,做了堆叠,服务器双网卡,每个分别连到一台交换机上。这样就需要将服务器的网卡做成主备模式,以增加安全性,使得当其中一个交换机不通的时候网卡能够自动切换。整体配置不难,网上也有相应的教程,可能有些是ubuntu的版本不同,所以配置以后没有达到应有的效果,最终通过51运维网的Ubuntu双网卡绑定的设置方法一文中的方法实现了该功能,本文简单记录之。一、Bond的工作模式Lin...
几行简单的jQuery代码搞定tab标签切换效果 几行简单的jQuery代码搞定tab标签切换效果*{ margin:0; padding:0;list-style: none;}body {font:12px/1.5 Tahoma;}#outer {width:450px;margin:150px auto;}#tab {overflow:hidden;zoom:1;background:#000;border:1px so
苹果终端wifi图标点亮慢和portal弹窗机制分析以及处理办法和建议经验案例 问题现象在无线环境中经常碰到苹果终端连接无线后wifi图标无法点亮导致终端无法上网、在起portal的网络中认证页面无法自动弹出影响使用体验。告警信息无原因分析一、wifi图标无法点亮分三种情况:1、无线属内网环境,自动获取地址时没有下发DNS地址,导致wifi图标始终无法点亮。2、无线即无portal认证、又无加密,此时有些苹果终端每次连接wifi
DPDK在Atom和J1900平台上运行失败的解决方法 按照dpdk的quick start guide,编译helloworld程序,在J1900平台上运行,会报错导致运行失败:constructor function rte_cpu_check_supported() needs to check some unnecessary CPU flags which is not used by current DPDK such as "AE
一个学习FreeBSD不错的中文网站 https://wiki.freebsdchina.org/欢迎访问 FreeBSDChina Wiki !大家可以在wiki中尽情地写下好的重要的内容,分享给更多的人,让这个严谨而又富有活力的操作系统能更多的被大家使用起来。如何参与如何参与贡献者如何成为FreeBSD CommitterFreeBSD 中
FreeBSD 的 Ports 系统 FreeBSD 的 Ports 系统什么是 Ports 系统简单的讲,一个 port 就是一个被移植到了 FreeBSD 上的软件。所有这些软件的集合,加上 FreeBSD 处理这些软件的各种工具,就是 Ports 系统。Ports 系统有什么用每一个被移植到 FreeBSD 上的软件(就是 Port),都能通过 Ports 系统中的工具方便有序
Freebsd安装内核源码 安装FreeBSD时因为网络问题,没有安装源码,在系统安装好之后,可使用svnlite直接从SVN服务器下载安装源码: #cd /usr/src #svnlite checkout https://svn0.us-west.freebsd.org/base/releng/10.3/
JQuery操作CheckBox 第二次无法选中的问题 用JQuery做CheckBox全选和反选的时候,遇到一个问题。当用JQ控制全选,全取消一次以后,再次点击全选,发现代码变了,但是CheckBox没有处于选中状态。百度后得知:我使用的方法是$("#id").attr("checked",true);方式,jQuery API明确说明,1.6+的jQuery要用prop,尤其是checkBox的checked的属性的判断。因
FreeBSD安装VIM最简单的方法 查阅了相关资料,FreeBSD系统有两种方法可以安装vim。 方法一: 通过ports工具安装 #cd /usr/ports/editor/vim #make install 安装过程提示失败,也没有找到解决方法,尝试方法二 方法二: 通过pkg命令安装 #pkg install vim
FreeBSD系统下su:sorry的解决办法 FreeBSD系统下su:sorry的解决办法 在FreeBSD上要使用su命令成为root用户,不但要知道root的口令,还需要经过特别设置,否则就不能成功使用这个命令。这是因为 FreeBSD对执行su命令的用户进行了更严格的限制,能使用su命令的用户必须属于wheel组(root的基本属组,组ID为0),否则就不能通过 这个命令成为root用户。因此需要编辑组设置文件/etc/
高性能网关设备及服务实践 针对海量的网络流量,转发性能是我们最关键的一个方面,那构建高性能的后台服务器有哪些关键的技术和需要注意的地方,今天邀请了后台开发同学童琳和郑胜利来和大家一起谈谈。一、引言随着互联网的高速发展,内容量的提升以及对内容智能的需求、云产业的快速突起,作为互联网的计算基石服务器的形态以及使用成为了炙手可热的话题,全球各家大型互联网公司都持续的在服务器平台上有非常大的动作,譬如f
修复FREEBSD上的UFS文件系统 修复FREEBSD上的UFS文件系统 昨天在两台FreeBSD上配置好Heartbeat服务(两台机器是用网线连通的,做为Heartbeat的两个节点),启动服务时Heartbeat检测到crmd守护进程没起来,于是它就尝试重启两台机器以启动crmd守护进程。不料重启的过程文件系统出问题了。 错误的信息是这样的: panic: ufs_dirbad: /: bad
FreeBSD下的VLAN配置 在Linux系统上,通过vconfig命令创建VLAN,FreeBSD的组网需求和系统机制和Linux类似,但是在创建VLAN上有区别,FreeBSD系统上有两种方法可以创建VLAN 方法1: 如下是创建VLAN的模板命令,vlan_device是物理网卡名称,vlan_id是VLAN的tag # ifconfig vlan_device.vlan_idcreate
自己动手编写FreeBSD内核防火墙模块 1. 概述ipfw是BSD系统中重要的防火墙和通信控制工具,防火墙和NAT都可以通过ipfw的相关指令来实现。pf (包过滤Packet Filter) 是FreeBSD 系统上进行TCP/IP流量过滤和网络地址转换的软件系统。 PF 同样也能提供TCP/IP流量的整形和控制,并且提供带宽控制和数据包优先集控制。本文不讲解pf和ipfw命令的用法,通过阅读FreeBSD内核协议栈源码,
FreeBSD内核模块开发入门 在《FreeBSD Architecture Handbook》的《Writing FreeBSD Device Drivers》章节介绍了编写FreeBSD内核模块的例子,FreeBSD内核模块框架源码如下:Skeletion.c:/** KLD Skeleton* Inspired by Andrew Reiter▒~@~Ys Daemonnews article*/
深入理解TAILQ队列 工作的主要内容是tcp/ip,平台是FreeBSD,而且在内核态开发,所以很多情况下会涉及内核的一些数据结构和宏,比如说mbuf和TAILQ等。 TAILQ是FreeBSD/linux内核对双向队列操作的一种抽象,抽象程度不亚于C++,能实现操作队列需要的各种操作:插入元素,删除元素,遍历队列等。这个队列的优点是插入元素很快。 这里先回顾一下队列的特点(来自维基百科 http://zh.wik
FreeBSD开发手册中文版 因公司防火墙项目,需要对FreeBSD的协议栈进行深入学习。以前大部分开发是基于Linux系统,虽说Unix是Linux的鼻祖,一段时间接触下来,在Unix上做开发,和Linux对比差异还是存在的,特别是涉及到项目需要了解的内核部分和协议栈部分。 网上搜索资源,发现一份不错的文档,值得FreeBSD开发入门学习借鉴:http://shouce.jb51.net/freebsd-devel
FreeBSD代码目录说明 The Layout of /usr/srcThe complete source code to FreeBSD is available from our public repository. The source code is normally installed in/usr/src which contains the following subdirectories:
gdb出现During startup program exited with code 127的解决方法 通过ssh登录到AC,用gdb调试zDeamon程序,执行run的时候,后台提示:During startup program exited with code 127.原因是SHELL变量配置不正确,通过如下方法修改:1)/bin/sh 进入bash2) export SHELL=/bin/sh 修改SHELL变量
Wireshark下可用的CMCC Portal插件 wireshark的插件是使用lua语言开发的,wireshark并未内置CMCC Portal协议,日常工作会经常分析Portal协议,找到相关资料,开发了一个简单的插件,可解析CMCC Portal协议。 CMCC Portal协议报文头C语言数据结构struct cmcc_portal_header{ unsigned char version; unsig
FreeBSD10.3 下安装和配置samba4 1. 通过ports安装samba4 #cd /usr/ports/net/samba43 #make install2. 拷贝samba配置文件smb.conf到指定路径 #cp /usr/ports/net/samba43/work/samba-4.3.3/packaging/RHEL/setup/smb.conf /usr/local/etc/smb4
python常用的十进制、16进制、字符串、字节串之间的转换(长期更新帖) 进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等废话不多上,直接上例子整数之间的进制转换:10进制转16进制: hex(16) ==> 0x1016进制转10进制: int('0x10', 16) ==> 16类似的还有oct(), bin()-------------------字符串转整数:
busybox启用telnetd功能 busybox默认已经添加了对telnetd和telnet功能的支持,只需要完成一些相关的设置工作就可以启动这2个功能了。Ø 创建/dev/pts目录Ø 在/etc/fstab中添加如下信息,挂载devpts文件系统devpts /dev/pts devpts defaults 0 0Ø 在/dev目录下增加ptmx设备文件:
解决busybox添加用户出现passwd: unknown uid 0的问题 busybox做了一个小型linux系统,为了设置passwd,在原系统上chroot,然后用passwd修改root密码,但提示unknown uid 0问题解决,缺少lib库libnss_compat.so.2libnsl.so.1libnss_nis.so.2libnss_files.so.2将上面几个文件拷贝到目标文件系统的/lib下就好
通过ssh远程到服务器,解决vim不能复制粘贴的问题 通过ssh远程到服务器,用vim查看linux源代码,不能复制粘贴到本地。原因是vim设置了鼠标模式为set mouse=a ,为所有模式,鼠标左键选中触发的是vim的插入命令,没有复制到本地的系统粘贴板。 修改鼠标模式为命令行模式 set mouse=c,可解决问题
解决Fedora tracker-sotre CPU占用率过高 今天终于找到 tracker-store自启动的文件位置啦在/etc/xdg/autostart/目录下面,会看到带 tracker 的三个文件,把这三个文件删除即可,便禁掉了 tracker-store自启动
Linux多源文件Makefile模版 编译内核模块时,一个源文件的Makefile模板到处都是:obj-m := module.oKERNELDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)default:$(MAKE) -C $(KERNELDIR) M=$(PWD) modulesclean:
Linux内核模块与Makefile实例 //内核模块#include #include MODULE_LICENSE("GPL");MODULE_AUTHOR("zhouyou");MODULE_DESCRIPTION("slab test module");static struct kmem_cache *test_cachep = NULL;int slab_ctor_cnt = 0;
DHCP option 52, Option Overload 在RFC2132中对OPTION 52的定义如下:9.3. Option Overload This option is used to indicate that the DHCP 'sname' or 'file' fields are being overloaded by using them to carry DHCP options. A DHCP
开源NAC系统PacketFence的安装配置 简介:PacketFence是一个开放源代码的网络访问控制系统。在本文中,杰克·威伦将告诉你通过命令行安装PacketFence的详细步骤。PacketFence是一个开放源代码的网络访问控制(NAC)系统。作为开放源代码领域的坚定支持者,我知道启动和运行这个项目是一件非常有趣的事情。因为,在超过十年的Linux技术生涯中,PacketFence的安装是我遇到过最困难的安装之一。为什么出现
vxWorks 错误代码表(458753-2949131/0x70001-0x2d000b) 458753 0x70001 S_dsmLib_UNKNOWN_INSTRUCTION 786433 0xc0001 S_ioLib_NO_DRIVER 786434 0xc0002 S_ioLib_UNKNOWN_REQUEST 786435 0xc0003 S_ioLib_DEVICE_ERROR 786436 0xc0004 S_ioLib_DEVICE_TIMEOUT
vxWorks 错误代码表(3014657-8913450/0x2e0001-0x88022a) 3014657 0x2e0001 S_nfsLib_NFS_AUTH_UNIX_FAILED 3014658 0x2e0002 S_nfsLib_NFS_INAPPLICABLE_FILE_TYPE 3211265 0x310001 S_errnoLib_NO_STAT_SYM_TBL 3276801 0x320001 S_hostLib_UNKNOWN_HOST 3276802
P2P中的NAT穿越方案 一、反向链接技术适用场景:P2P通信双方中只有一方位于NAT设备之后如图1所示,客户端A位于NAT之后,它通过TCP端口1234连接到服务器的TCP端口1235上,NAT设备为这个连接重新分配了TCP端口62000。客户端B也通过TCP端口1234连接到服务器端口1235上。A和B从服务器处获知的对方的外网地址二元组{IP地址:端口号}分别为{138.76.29.7:1234}和{
win32 API 实现登陆输入框 很多应用程序都需要输入框,让用户输入特定信息,最近在学习win32的API编程,在实现输入框时摸索了一阵子,这里将怎样用WIN32 API实现输入框记录下来,方便初学者共同提高。 我实现了一个demo程序,在应用程序启动时,会弹出登录输入框,由用户输入用户名和密码进行登录,如果输入的用户名和密码正确,则继续运行应用;否则,退出应用程序。 下面详细说明一下实现步骤: 第
如何让win32 Application显示输入框 很多人纠结如何在win32 application下显示一个类似这样的输入框。而win32下又不兼容MFC的内容怎么办?可能我们就需要自己写这个对话框了。首先将这个对话框画好作为资源保存到我们的win32程序中,具体做法如下:1, 创建一个空的win32 Application程序。2, 点击菜单栏上的Insert(插入)->Resource(资源),选择对话框
mips的分支延迟槽 分支延迟槽 (Branch delay slot),简单地说就是位于分支指令后面的一条指令,不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支指令提交 (commit)。看这个代码片段 (MIPS Linux kernel 2.6.17):801ea9d4: 02202021 move a0,s1801ea9d8: 27a50014
玩转ptrace 翻译: Magic.D E-mail: adamgic@163.com译者序:在开发Hust Online Judge的过程中,查阅了不少资料,关于调试器技术的资料在网上是很少,即便是UNIX编程巨著《UNIX环境高级编程》翻译: Magic.D E-mail: adamgic@163.com译者序:在开发Hust Online Judge的过程中,查阅了不
MIPS 通用寄存器 MIPS有32个通用寄存器($0-$31),各寄存器的功能及汇编程序中使用约定如下:下表描述32个通用寄存器的别名和用途REGISTERNAMEUSAGE$0$zero常量0(constant value 0)$1$at保留给汇编器(Reserved for
调试技巧之 gcc/g++ -instrument-functions 参数 调试技巧之 gcc/g++ -instrument-functions 参数参考 GCC 函式追蹤功能 finstrument-functions __attribute__ +用 Graphviz 可视化函数调用 ibm 用 Graphviz 可视化函数调用 gcc/g++使用-finstrument-functions來觀察code每
C语言VOID类型大小 今天和同事在VOID指针类型大小的理解上有些分歧,下面的代码,我理解void类型指针大小不固定,如下使用取出来的指针不确定,同事坚持说没有问题,他一直都是这样用,并且void *指针类型就是char *类型。/* *释放CCB消息 */void CCB_FreeMsg(void *pMsg){ CCB_MSG_S *pstCcbMsg = NULL;
C语言长度为0的数组的使用 前面在看Xen的源码时,遇到了一段代码,如下所示:注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?……这篇文章主要针对该问题进行简单的讲解。废话不多说了,现在就开始。长度为的数组在标准c和c++中是不允许的,如果使用长度为的数组,编译时会产生错误,提示数组长度不能为。但在GNUc中,这种用法却是合
一种基于libgds的简单内存泄露的检测方法 由于项目原因,需要定位一个内存泄露问题,由于我们的系统是运行在VxWorks下的,而网上大多数开源的内存工具都是在linux下,因此需要自己想些办法。 在看libgds代码时,发现了它里面一个简单的内存管理库,使用恰当时,可以帮助开发人员方便的检测内存泄露问题。 Libgds的原理就是对系统的malloc进行了替换,将malloc申请的地址、地址大小、代码行
如何查看安卓系统dhcp协议栈的源代码 在公司定位一个dhcp的问题偶尔发现的,抓包发现安卓手机DHCP报文中的Vendor ID(option 60)出卖了自己,原来安卓使用的dhcp协议栈是dhcpcd-5.2.10,。 以前苦于摸不准终端的行为,现在源码在手,定位问题不愁了。
Cisco模拟器的配置和使用说明 Router1.batREM ----------Created by Xiaofan----------@echo offtitle Router1-----Created by Xiaofanmkdir Router1cd Router1:reload..\dynamips-wxp.exe -T 2001 -P 7200 -r 256 --disk0 4 -t np
dht11太打击自信 硬件出身,毕业后却做了软件开发,本属无可奈何。 一时心血来潮,想折腾出点技术宅的小玩意,买了一堆外设来调试,多年不碰单片机,竟然在dht11这么一个东西上卡壳了,也不知道是硬件问题还是怎么着,没有示波器啥都看不了,电子DIY爱好者的痛处,太打击自信心了。 绕过dht11那个破玩意,继续玩其他的。 现在是冲走大学时的老路子,当时的资料都找不着,下一部计划,调试stm32的经
美的代码 看到一个代码牛人招徒弟,要求中有一条,能识别代码的美与丑。 本人酷爱书法,曾向一些高手请教,他们收徒标准中最重要的一条是要有独立的鉴赏力,能识别好书与丑书。这样看来,代码与书法都有异曲同工之妙。CSDN首页上看到介绍Doom3的源代码,其中说到什么是优美的代码,有下面几条,摘录如下。关于代码,什么才能被称为“好看”——或者说“优美”?在和几个程序员朋友讨论后,我得出了结论