自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (14)
  • 收藏
  • 关注

原创 python import matlibplot出现DLL load failed while importing _cext的解决办法

安装python,import matplotlib时,出现ImportError: DLL load failed while importing _cext。出错原因:未安装微软的MSVC runtime组件。安装MSVC runtime组件。

2023-06-11 15:00:45 1070

翻译 SO_REUSEPORT 端口复用socket选项

Liunux 3.9版本对于TCP和UDP增加了端口复用SO_REUSEPORT的socket选项,这个选项允许相同主机上的多个socket绑定到同一个端口,用来提升多核系统上多线程网络server应用的性能。 SO_REUSEPORT的基本概念非常简单,多个server(进程或线程)能绑定到相同的端口上,如如下代码: int sfd = socket(domain,...

2020-04-28 16:04:21 1493

原创 深入理解补码

补码黑历史对于每个计算机专业的同学,刚开始都会接触到二进制转换、原码、反码、补码的知识。国内教材上是如下定义的:原码:最高位为符号位,0代表整数,1代表复数,非符号位为改数字绝对值的二进制表示。如127的原码为 0111 1111,-127的原码为 1111 1111。反码:正数的反码与原码一致;负数的反码是对原码按位取反(符号位不变)。如127的反码为 0111 1111,-12...

2020-03-31 11:59:01 2138

原创 记住英文定义,你再也不会混淆C语言的指针数组、数组指针,函数指针、指针函数

经常有小伙伴在求职面试过程中,会被问到C语言的基础问题,最令人抓狂的两个问题可能是:1)请说出指针数组和数组指针的区别; 2)请说出函数指针和指针函数的区别。 虽然小伙伴们有很丰富的开发经验,如果没有做好准备,突然面对这两个问题,也会大脑瞬间一懵。实际上,这些技术在项目开发中会经常使用,就是和名称没对应上。笔者最近仔细研究了下这两类问题,对比英文定义,发现根源还是我们的汉语博大精...

2019-07-09 17:16:28 588

原创 select函数导致CPU使用率100%的问题

问题项目重构过程中,发现修改后,进程的CPU始终为100%,相关代码如下: struct timeval timeout = {2,0}; while(1) { result = select(FD_SETSIZE, &testfds, (fd_set *)0, (fd_set *)0, &timeout); } ...

2019-06-20 17:10:58 3937

原创 VPP Node分析(一) Node示例代码分析

VPP Node分析(一) Node示例代码分析1、概述VPP由一个个plugin组成,功能逻辑按node进行划分,数据包在node之间进行传递,一个个node构成了VPP的Graph处理图谱,本文先简单分析node的一般代码框架,后续文章深入分析Node的后台调度框架和原理。2、节点注册VPP中Node注册是自定义插件的入口,由于VPP封装性好,注册一个Node,只需按格式调用VPP定义...

2019-05-28 15:30:36 4057

原创 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...

2019-05-14 15:51:49 2624

原创 从零开始写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...

2019-03-25 14:11:33 744

转载 Autoconf和Automake使用

Autoconf和Automake使用  一、生成Makefile流程图二、具体实例  执行命令顺序:autoscan;aclocal; autoconf; autoheader;automake --add-missing; ./configure; make; ./helloworld;1、建目录  在你的工作目录下建一个helloworld目录,用来存放...

2019-03-22 14:44:06 251

原创 VPP使用详解——基于VPP的VLAN配置

组网场景:配置原理:VPP中的接口模式默认为L3模式,没有和华为、H3C交换机对应的VLAN命令,利用VPP实现VLAN转发的模型类似于Linux中的bridge。如要实现如下VLAN配置(参见上图):接口GE1的模式为access,加入到VLAN 10中;接口GE2的模式为trunk,允许VLAN10和VLAN11的报文通过;接口GE3的模式为acc...

2019-03-14 16:21:12 9154 2

原创 UBUNTU直接安装VPP

VPP提供了简易的安装方式,如果不需要改动VPP的源码,是可以安装和使用VPP的,安装步骤如下: 更新apt-get源 修改/etc/apt/sources.list 文件,在结尾增加如下两行: deb https://packagecloud.io/fdio/1901/ubuntu/ xenial main deb-src https://packagecl...

2019-03-04 17:23:24 1876 2

原创 electric-fence mprotect() failed的问题解决方法

    最近定位一个多线程内存malloc崩溃时的问题,这个问题内部测试的时候测不出来,业务刚上线压力规模较小时也没问题,后来随着业务量的增大,平均每2周会出现一次,生成的coredump文件每次都是挂在malloc函数,报错提示 malloc(): memory corruption (fast)。    根据相关迹象,最大的怀疑点是使用野指针或内存写越界,导致malloc堆头的内部管理数据...

2019-02-19 10:44:45 1028

转载 定位多线程内存越界问题实践总结

定位多线程内存越界问题实践总结关键字 多线程,内存越界,valgrind,electric-fence,mprotect,libsigsegv,glibc 最近定位了在一个多线程服务器程序(OceanBase MergeServer)中,一个线程非法篡改另一个线程的内存而导致程序core掉的问题。定位这个问题花了整整一周的时间,期间历经曲折,尝试了各种内存调试的办法。往往感觉就要柳暗花...

2019-02-15 10:28:09 520

原创 DPDK TestPmd的转发模式

原文链接:TestPmd转发模式官方英文文档TestPMD的设置转发模式命令:    testpmd&gt; set fwd (io|mac|macswap|flowgen| rxonly|txonly|csum|icmpecho|noisy) (""|retry)    除rx_only模式外的其他几种转发模式都可以指定retry参数各种转发模式的说明如下:io: 使用...

2019-02-14 10:09:03 5540 1

原创 Linux性能测试工具和命令集合

 http://www.brendangregg.com/linuxperf.htmlhttp://oliveryang.net/

2019-01-29 15:29:07 216

转载 不利用临时变量,交换两个变量的值

1.借助中间量交换通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int x = 10; int y = 20; int temp = x; x = y; y = temp; 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交...

2019-01-23 10:49:32 478

原创 堆排序的C语言实现

#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;math.h&gt;#include &lt;time.h&gt;typedef struct heap_array{  int max_num;  int total_num;  int last_index;  int data[0];}heap_a...

2019-01-02 18:02:27 789

原创 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...

2018-12-19 17:04:39 2797

转载 计算机体系结构

CPU与内存的那些事下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下:转: CPU的等待有多久?原文标题:What Your Computer Does While You Wait原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]   本...

2018-11-12 09:44:18 1854

原创 VPP Node Graph关系图

  VPP的业务是由一个一个的Node构成了一张Graph,形成业务处理图谱,用命令show vlib graph可以查看Node Graph,笔者整理的基础的Node Graph如下图,供阅读者参考。...

2018-09-04 10:11:36 3583

原创 VPP代码分析——Node的数据结构和初始化

  VPP借鉴了FreeBSD协议栈的graphnode处理思想,报文的处理是在一个个node之间逐级处理,除VPP预定义的node外,开发者可以按需要在插件中创建相应的功能node,并和VPP预定义的node建立关联关系。一、VPP的NODE数据结构   node的基础数据结构如上图所示,__bootstrap_vlib_main_vector是最顶级的全局变量,此变量下的vm是一个...

2018-08-30 17:40:22 5435 2

原创 使用Automake,Autoconf生成Makefile

 Automake,Autoconf生成Makefile在Unix 上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个Makefile就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于make的文档比较多,不过写一个Makefile总是一件很烦人的事情,GNU Autoconf 及...

2018-08-15 11:00:55 506

原创 VPP和Linux内核协议栈通信的方法

背景介绍    基于VPP开发一款网络设备,除使用VPP框架实现端口数据报文转发外,还需要对设备进行配置和管理,比较常用的是要实现ssh、web等相关服务,另外,由于VPP并未实现dhcp server的功能,控制面可能还需移植isc-dhcp类似的dhcp server。相关的用户态程序是基于Linux内核的socket来收发包的,因此,需要实现VPP和Linux内核协议栈通信的方法,可以将...

2018-08-14 17:14:07 11001 1

原创 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...

2018-08-14 15:03:07 12119 1

原创 Cisco VPP入门(四)——VPP示例插件编译运行

一、VPP源码架构VPP源码架构如上图,主要包括以下几个层次:Plugins:主要为实现一些功能,在程序启动的时候加载,一般情况下会在插件中加入一些node节点去实现相关功能Vnet:提供网络资源能力:比如设备,L2,L3,L4功能,session管理,控制管理,流量管理等VLIB:主要提供基本的应用管理库:buffer管理,graph node管理,线程,CLI,trace等...

2018-08-09 10:31:03 6420 3

原创 Cisco VPP入门(三)——VPP启动配置及常用命令

配置文件:startup.cfg(/etc/vpp/startup.cfg)/*****************************************************************************/unix {  Interactive //将CLI命令加入到输入输出,提供调试  log /tmp/vpp.log //日志  full-coredump...

2018-08-07 16:23:15 8010 4

原创 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...

2018-08-03 16:05:22 2818

原创 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...

2018-08-03 14:26:33 5177

转载 转发技术风雨三十年,你经历过……

今天看到一篇深度好文,特转发过来,时不时理解并回忆下过去的技术发展历程。曾经的我,也是奋斗在网络数通领域,现今转换到虚拟化NFV的方向,的确如文章里谈的,多少人的人生的轨迹无意间被技术的隐形大手在背后推动着,全然无知。 作者简介:岳青伦,任职于华为产品与解决方案部,研究方向SDN/NFV 前言 记得刚到大学报道的那天,为了给家人报个平安,我在电话亭里足足等了两个小时,...

2018-07-27 15:57:20 1153

原创 Intel Tick-Tock策略简介

Intel Tick-Tock策略简介 Intel的tic-toc策略(又称为:tick-tock)很有趣,特别几张roadmap画得很赞。什么是tic-toctic-toc是Intel从2008年引入的一个CPU研发和生产策略。简单的说就是,每一代CPU都会对应tic或者toc。如果这代CPU对应tic,那么这一代CPU相角前一代将会提升制造工艺(即更精细的纳米工艺),...

2018-07-13 15:16:07 3860

转载 Ubuntu14.04双网卡主备配置

近日有个需求,交换机有两台,做了堆叠,服务器双网卡,每个分别连到一台交换机上。这样就需要将服务器的网卡做成主备模式,以增加安全性,使得当其中一个交换机不通的时候网卡能够自动切换。整体配置不难,网上也有相应的教程,可能有些是ubuntu的版本不同,所以配置以后没有达到应有的效果,最终通过51运维网的Ubuntu双网卡绑定的设置方法一文中的方法实现了该功能,本文简单记录之。一、Bond的工作模式Lin...

2018-07-04 17:30:46 1029

原创 几行简单的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

2017-10-13 11:07:17 437

转载 苹果终端wifi图标点亮慢和portal弹窗机制分析以及处理办法和建议经验案例

问题现象在无线环境中经常碰到苹果终端连接无线后wifi图标无法点亮导致终端无法上网、在起portal的网络中认证页面无法自动弹出影响使用体验。告警信息无原因分析一、wifi图标无法点亮分三种情况:1、无线属内网环境,自动获取地址时没有下发DNS地址,导致wifi图标始终无法点亮。2、无线即无portal认证、又无加密,此时有些苹果终端每次连接wifi

2017-08-28 16:42:05 1923

原创 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

2017-08-24 19:17:25 1893

原创 一个学习FreeBSD不错的中文网站

https://wiki.freebsdchina.org/欢迎访问 FreeBSDChina Wiki !大家可以在wiki中尽情地写下好的重要的内容,分享给更多的人,让这个严谨而又富有活力的操作系统能更多的被大家使用起来。如何参与如何参与贡献者如何成为FreeBSD CommitterFreeBSD 中

2017-08-24 09:33:51 5342 1

转载 FreeBSD 的 Ports 系统

FreeBSD 的 Ports 系统什么是 Ports 系统简单的讲,一个 port 就是一个被移植到了 FreeBSD 上的软件。所有这些软件的集合,加上 FreeBSD 处理这些软件的各种工具,就是 Ports 系统。Ports 系统有什么用每一个被移植到 FreeBSD 上的软件(就是 Port),都能通过 Ports 系统中的工具方便有序

2017-08-24 09:28:00 2459

原创 Freebsd安装内核源码

安装FreeBSD时因为网络问题,没有安装源码,在系统安装好之后,可使用svnlite直接从SVN服务器下载安装源码:   #cd /usr/src    #svnlite checkout https://svn0.us-west.freebsd.org/base/releng/10.3/

2017-08-23 19:08:40 4152

转载 JQuery操作CheckBox 第二次无法选中的问题

用JQuery做CheckBox全选和反选的时候,遇到一个问题。当用JQ控制全选,全取消一次以后,再次点击全选,发现代码变了,但是CheckBox没有处于选中状态。百度后得知:我使用的方法是$("#id").attr("checked",true);方式,jQuery API明确说明,1.6+的jQuery要用prop,尤其是checkBox的checked的属性的判断。因

2017-08-23 15:23:58 538

原创 FreeBSD安装VIM最简单的方法

查阅了相关资料,FreeBSD系统有两种方法可以安装vim。  方法一:  通过ports工具安装  #cd /usr/ports/editor/vim  #make install  安装过程提示失败,也没有找到解决方法,尝试方法二  方法二:  通过pkg命令安装  #pkg install vim

2017-08-11 17:42:04 5453

原创 FreeBSD系统下su:sorry的解决办法

FreeBSD系统下su:sorry的解决办法      在FreeBSD上要使用su命令成为root用户,不但要知道root的口令,还需要经过特别设置,否则就不能成功使用这个命令。这是因为 FreeBSD对执行su命令的用户进行了更严格的限制,能使用su命令的用户必须属于wheel组(root的基本属组,组ID为0),否则就不能通过 这个命令成为root用户。因此需要编辑组设置文件/etc/

2017-08-10 17:30:06 1728

Automake官方PPT教程

GNU官方的Automake教程,国内的Automake教程大多过时并且抽象,官方教程从零开始,可帮助初学者快速了解Automake的基础知识,熟练驾驭开源项目的automake

2019-03-25

DPDK Cookbook

Intel 28年开发经验的资深工程师写得ebook,作者从2009年就参与于DPDK开发,Cookbook介绍了DPDK入门方法,使用DPDK盒子作为流量生成器,提供了DPDK性能优化的建议,深入浅出,值得DPDK开发入门者学习或资深开发者进行回顾。

2019-03-14

electric-fence 源码

electric fence是Linux下的C语言内存越界访问检测工具,可检测如下两种情况:1、内存访问越界 2、使用释放后续的内存 使用方法: 1、make编译得到libefence.a静态库 2、在gcc编译时增加 -L . -lefence的选项

2019-02-15

VPP软件架构和实现介绍(VPP design and implementation overview)

VPP系统的软件架构设计和实现介绍,官方资源,作者站的角度较高,适合初学者入门或开发者回顾阅读。

2018-09-13

FDIO VPP快速入门指导手册

Linux基金会FDIO的开源项目Cisco VPP的官方快速入门手册,纯净英文版本,非常适合VPP初学者快速上手VPP

2018-08-07

Source Insight 4.0

Source Insight 4.0版本,借鉴了现代编辑器的功能,支持代码折叠,界面风格更清新,Source Insight 一贯出色,4.0更精彩

2018-07-13

FreeBSD开发手册

FreeBSD开发手册,对想学习或正在从事FreeBSD方面开发的朋友,是一份很不错的手边参考书。

2017-07-22

CMCC Portal Wireshark 插件

中国移动Portal协议分析的Wireshark插件,可分析CMCC Portal协议。使用方法:1)将cmccportal.lua放到wireshark的安装根目录,2)修改wireshark根目录下的init.lua,在文件最后增加dofile(DATA_DIR.."cmccportal.lua")

2017-07-20

lcov-1.10.tar.gz

lcov,配合gcov可以进行图形化的代码覆盖率查看

2013-04-24

libgds(通用数据结构库)

开源的通用数据结构库,包括了内存管理,数组,链表,radix树,堆栈,cli解析等内容,非常适合初学者进行数据结构的研究

2013-02-06

dhcp option

根据RFC,归纳了常见的DHCP报文的option类型,方便开发进行参考

2013-01-30

安卓手机 dhcp 协议栈源代码

安卓手机的dhcp协议栈实现源代码,可以方便移植到各种嵌入式终端

2013-01-30

linux dhcpd(dhcp-4.2.5)源代码

dhcpd为应用层协议,不在linux内核中,由linux的发行版本发布,资源是linux下dhcp客户端的源代码实现

2013-01-30

KBFD源代码

双向快速链路检测是一种轻量级,协议无关,介质无关的检测协议,本资源是开源的BFD实现的源代码

2013-01-30

空空如也

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

TA关注的人

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