- 博客(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 1391 1
翻译 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 1734
原创 深入理解补码
补码黑历史对于每个计算机专业的同学,刚开始都会接触到二进制转换、原码、反码、补码的知识。国内教材上是如下定义的:原码:最高位为符号位,0代表整数,1代表复数,非符号位为改数字绝对值的二进制表示。如127的原码为 0111 1111,-127的原码为 1111 1111。反码:正数的反码与原码一致;负数的反码是对原码按位取反(符号位不变)。如127的反码为 0111 1111,-12...
2020-03-31 11:59:01 3239
原创 记住英文定义,你再也不会混淆C语言的指针数组、数组指针,函数指针、指针函数
经常有小伙伴在求职面试过程中,会被问到C语言的基础问题,最令人抓狂的两个问题可能是:1)请说出指针数组和数组指针的区别; 2)请说出函数指针和指针函数的区别。 虽然小伙伴们有很丰富的开发经验,如果没有做好准备,突然面对这两个问题,也会大脑瞬间一懵。实际上,这些技术在项目开发中会经常使用,就是和名称没对应上。笔者最近仔细研究了下这两类问题,对比英文定义,发现根源还是我们的汉语博大精...
2019-07-09 17:16:28 674
原创 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 4173
原创 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 4289
原创 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 2693
原创 从零开始写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 767
转载 Autoconf和Automake使用
Autoconf和Automake使用 一、生成Makefile流程图二、具体实例 执行命令顺序:autoscan;aclocal; autoconf; autoheader;automake --add-missing; ./configure; make; ./helloworld;1、建目录 在你的工作目录下建一个helloworld目录,用来存放...
2019-03-22 14:44:06 273
原创 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 9603 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 1920 2
原创 electric-fence mprotect() failed的问题解决方法
最近定位一个多线程内存malloc崩溃时的问题,这个问题内部测试的时候测不出来,业务刚上线压力规模较小时也没问题,后来随着业务量的增大,平均每2周会出现一次,生成的coredump文件每次都是挂在malloc函数,报错提示 malloc(): memory corruption (fast)。 根据相关迹象,最大的怀疑点是使用野指针或内存写越界,导致malloc堆头的内部管理数据...
2019-02-19 10:44:45 1130
转载 定位多线程内存越界问题实践总结
定位多线程内存越界问题实践总结关键字 多线程,内存越界,valgrind,electric-fence,mprotect,libsigsegv,glibc 最近定位了在一个多线程服务器程序(OceanBase MergeServer)中,一个线程非法篡改另一个线程的内存而导致程序core掉的问题。定位这个问题花了整整一周的时间,期间历经曲折,尝试了各种内存调试的办法。往往感觉就要柳暗花...
2019-02-15 10:28:09 558
原创 DPDK TestPmd的转发模式
原文链接:TestPmd转发模式官方英文文档TestPMD的设置转发模式命令: testpmd> set fwd (io|mac|macswap|flowgen| rxonly|txonly|csum|icmpecho|noisy) (""|retry) 除rx_only模式外的其他几种转发模式都可以指定retry参数各种转发模式的说明如下:io: 使用...
2019-02-14 10:09:03 6036 1
原创 Linux性能测试工具和命令集合
http://www.brendangregg.com/linuxperf.htmlhttp://oliveryang.net/
2019-01-29 15:29:07 240
转载 不利用临时变量,交换两个变量的值
1.借助中间量交换通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int x = 10; int y = 20; int temp = x; x = y; y = temp; 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交...
2019-01-23 10:49:32 510
原创 堆排序的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...
2019-01-02 18:02:27 813
原创 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 2883
转载 计算机体系结构
CPU与内存的那些事下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下:转: CPU的等待有多久?原文标题:What Your Computer Does While You Wait原文地址:http://duartes.org/gustavo/blog/[注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 本...
2018-11-12 09:44:18 1893
原创 VPP Node Graph关系图
VPP的业务是由一个一个的Node构成了一张Graph,形成业务处理图谱,用命令show vlib graph可以查看Node Graph,笔者整理的基础的Node Graph如下图,供阅读者参考。...
2018-09-04 10:11:36 3744
原创 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 5619 2
原创 使用Automake,Autoconf生成Makefile
Automake,Autoconf生成Makefile在Unix 上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个Makefile就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于make的文档比较多,不过写一个Makefile总是一件很烦人的事情,GNU Autoconf 及...
2018-08-15 11:00:55 527
原创 VPP和Linux内核协议栈通信的方法
背景介绍 基于VPP开发一款网络设备,除使用VPP框架实现端口数据报文转发外,还需要对设备进行配置和管理,比较常用的是要实现ssh、web等相关服务,另外,由于VPP并未实现dhcp server的功能,控制面可能还需移植isc-dhcp类似的dhcp server。相关的用户态程序是基于Linux内核的socket来收发包的,因此,需要实现VPP和Linux内核协议栈通信的方法,可以将...
2018-08-14 17:14:07 11291 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 12318 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 6585 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 8224 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 2873
原创 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 5299
转载 转发技术风雨三十年,你经历过……
今天看到一篇深度好文,特转发过来,时不时理解并回忆下过去的技术发展历程。曾经的我,也是奋斗在网络数通领域,现今转换到虚拟化NFV的方向,的确如文章里谈的,多少人的人生的轨迹无意间被技术的隐形大手在背后推动着,全然无知。 作者简介:岳青伦,任职于华为产品与解决方案部,研究方向SDN/NFV 前言 记得刚到大学报道的那天,为了给家人报个平安,我在电话亭里足足等了两个小时,...
2018-07-27 15:57:20 1207
原创 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 4095
转载 Ubuntu14.04双网卡主备配置
近日有个需求,交换机有两台,做了堆叠,服务器双网卡,每个分别连到一台交换机上。这样就需要将服务器的网卡做成主备模式,以增加安全性,使得当其中一个交换机不通的时候网卡能够自动切换。整体配置不难,网上也有相应的教程,可能有些是ubuntu的版本不同,所以配置以后没有达到应有的效果,最终通过51运维网的Ubuntu双网卡绑定的设置方法一文中的方法实现了该功能,本文简单记录之。一、Bond的工作模式Lin...
2018-07-04 17:30:46 1095
原创 几行简单的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 466
转载 苹果终端wifi图标点亮慢和portal弹窗机制分析以及处理办法和建议经验案例
问题现象在无线环境中经常碰到苹果终端连接无线后wifi图标无法点亮导致终端无法上网、在起portal的网络中认证页面无法自动弹出影响使用体验。告警信息无原因分析一、wifi图标无法点亮分三种情况:1、无线属内网环境,自动获取地址时没有下发DNS地址,导致wifi图标始终无法点亮。2、无线即无portal认证、又无加密,此时有些苹果终端每次连接wifi
2017-08-28 16:42:05 2033
原创 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 1966
原创 一个学习FreeBSD不错的中文网站
https://wiki.freebsdchina.org/欢迎访问 FreeBSDChina Wiki !大家可以在wiki中尽情地写下好的重要的内容,分享给更多的人,让这个严谨而又富有活力的操作系统能更多的被大家使用起来。如何参与如何参与贡献者如何成为FreeBSD CommitterFreeBSD 中
2017-08-24 09:33:51 5545 1
转载 FreeBSD 的 Ports 系统
FreeBSD 的 Ports 系统什么是 Ports 系统简单的讲,一个 port 就是一个被移植到了 FreeBSD 上的软件。所有这些软件的集合,加上 FreeBSD 处理这些软件的各种工具,就是 Ports 系统。Ports 系统有什么用每一个被移植到 FreeBSD 上的软件(就是 Port),都能通过 Ports 系统中的工具方便有序
2017-08-24 09:28:00 2525
原创 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 4240
转载 JQuery操作CheckBox 第二次无法选中的问题
用JQuery做CheckBox全选和反选的时候,遇到一个问题。当用JQ控制全选,全取消一次以后,再次点击全选,发现代码变了,但是CheckBox没有处于选中状态。百度后得知:我使用的方法是$("#id").attr("checked",true);方式,jQuery API明确说明,1.6+的jQuery要用prop,尤其是checkBox的checked的属性的判断。因
2017-08-23 15:23:58 558
原创 FreeBSD安装VIM最简单的方法
查阅了相关资料,FreeBSD系统有两种方法可以安装vim。 方法一: 通过ports工具安装 #cd /usr/ports/editor/vim #make install 安装过程提示失败,也没有找到解决方法,尝试方法二 方法二: 通过pkg命令安装 #pkg install vim
2017-08-11 17:42:04 5554
原创 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 1766
Automake官方PPT教程
2019-03-25
DPDK Cookbook
2019-03-14
electric-fence 源码
2019-02-15
VPP软件架构和实现介绍(VPP design and implementation overview)
2018-09-13
Source Insight 4.0
2018-07-13
CMCC Portal Wireshark 插件
2017-07-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人