自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

老五的作坊

linux学习,交流

  • 博客(135)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 linux 必先利其器之总纲--工具包

linux经常会遇到调试问题,下面这些工具助大家提高效率,节省时间1:linux performance Observability tool2:linux Static performance Tools3: linux performance Tuning tools4:bpftrace/eBPF Tools5:linux bcc/BPF Tracing Tools6: linux performance observability :sar7: linux performan

2020-07-03 17:43:34 231

翻译 linux必先利其器篇之--GDB详解

gdb调试完整示例(教程):ncurses我对在网上找到显示命令而不显示其输出的“ gdb示例”感到有些沮丧。 gdb是GNU调试器,Linux上的标准调试器。在观看《给我15分钟》链接: link.时,我被提醒缺乏示例输出,我将改变Greg Law在CppCon 2015上对GDB演讲的看法,所幸其中包括输出! 15分钟是值得的。这也启发了我分享一个完整的gdb调试示例,其中包括输出和涉及的每个步骤,包括死胡同。这不是一个特别有趣或陌生的问题,它只是例行的gdb调试会话。但是它涵盖了基础知识,并且可以

2020-07-03 17:15:27 1358

原创 项目管理:代码检查 pre-commit 使用详解

Git钩子脚本对于在提交代码审查之前识别简单问题很有用。我们在每次提交时都运行钩子,以自动指出代码中的问题,例如缺少分号,尾随空白和调试语句。通过在代码审阅之前指出这些问题,代码审阅者可以专注于更改的体系结构,而不会浪费琐碎的样式问题。我们建立了预提交来解决钩子问题。它是用于预提交挂钩的多语言包管理器。您可以指定所需的挂钩列表,并且在每次提交之前,预提交可以管理用任何语言编写的任何挂钩的安装和执...

2020-03-04 15:14:18 19454 2

原创 C语言 回调函数详解

我们在使用C语言实现相对复杂的软件开发时,经常会碰到使用回调函数的问题。但是回调函数的理解和使用却不是一件简单的事,在本篇我们根据我们个人的理解和应用经验对回调函数做简要的分析。1、什么是回调函数  既然谈到了回调函数,首先我们就要搞清楚什么是回调函数。在讨论回调函数之前,我们需要说明另一个概念,那就是函数指针。什么是函数指针呢?说的浅显一点,函数指针就是指向函数的指针,说白了也是一种指针...

2020-03-03 09:14:04 4152

原创 外企程序员职业发展

做了多年的程序员,目前在 DELL EMC, 以及很多同事在其他大公司(阿里, 腾讯,高通, 英特尔,美光,展讯, vmware , bilibili, 携程等等, 有内推需求或者简历修改建议找工作建议的可以留言或者发送到邮箱[email protected] 长期有效)互相交流,学习进步下面是一些工作岗位可以看看是否合适。1:Software Sr Engineer -C/C++...

2020-01-08 16:18:48 1073

原创 详解chroot

chroot 内核流程linux 的内核源码SYSCALL_DEFINE1(chroot, const char __user *, filename)-》》 ksys_chroot(const char __user *filename)-》》》 set_fs_root(current->fs, &path);此处当前文件系统里面 fs->roo...

2019-11-14 17:42:23 2775

原创 linux 实现pimd-sm 设计详解

设计总览为了在linux 环境实现多播路由,内核和用户端进程进行交互和处理,主要实现我们用户端的实现。内核处理转发数据主要是根据内核多播转发表multicast forwarding cache(MFC)。 我们用户端的pim守护进程主要是处理控制包和其他路由器的包, 然后维护用户端的转发表。pim 守护进程处理用户端的所有pim的控制信息, 然后设置一个合适的内核环境,然后内核转发组播数...

2019-11-13 16:16:47 1986

原创 OVS代码笔记

OVS代码笔记>> 原创文章,转载请保留地址,欢迎交流学习ovsdb-client:从main开始分析:1、for (command = get_all_commands(); ; command++) {if (!command->name) {VLOG_FATAL("unknown command '%s';...

2019-03-18 07:42:09 589

原创 基于TCAM 的高速路由查找

摘要  随着路由器接口速率的提高,传统的软件路由查找机制已经不能满足要求。目前常见的硬件解决方案是采用TCAM实现高速路由查找。由于路由查找具有最长前缀匹配的特点,因此采用TCAM 需要解决路由表如何存储和管理等问题。本文设计和实现了基于TCAM 的高速路由查找机制,重点解决了路由表的存储和管理机制。该方案已经用于国家“863”重大项目“核心路由器”中,取得了良好的效果。关

2017-03-22 11:46:25 3823 4

原创 hash表建立,查找,详解

散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。应用场景任何一个问题,当选择数据结构的时候一般只有有限的几个选择:数组、链表、二叉树(绝大多数的场景下都是使用二叉

2017-03-22 11:38:01 17008

原创 Linux文件系统架构分析

Linux文件系统架构分析1:架构设计1.1:首先看一下Linux 中文件系统的逻辑关系示意图,如下:                                  图1.1Linux 中文件系统的逻辑关系示意图1.2:VFS虚拟文件系统又称虚拟文件系统转换( Virual Filesystem Switch)之所以说它虚拟,是因为它所有的数据结构都是在运行

2016-11-04 18:58:02 2846

原创 Linux字符设备注册函数 register_chrdev详解

Linux字符设备注册函数 register_chrdev详解 当我们需要注册字符设备的时候,需要module_init()中调用register_chrdev()注册。下面主要介绍接口的实现过程与细节。内核函数前面添加__  代表内核级函数。谨慎调用。源代码如下:int __register_chrdev(unsigned int major, unsigned int

2016-10-24 18:03:28 45495 1

原创 Linux 中task_struct和文件系统的关系

Linux 中task_struct和文件系统的关系 在内核进程运行的时候,有current 宏对应目前进程task_struct结构 Linux进程主要数据结构之间的关系。 如图: 一个进程文件位置是有fs_struct描述的,进程打开的文件是有files_struct描述的,具体打开的文件描述符是有file控制的。 一:fs_structcount

2016-10-20 14:42:46 3347

原创 遍历ip开放的端口

用于检测服务器上某个ip地址开放的端口,查漏洞等。

2023-02-06 17:42:58 411 1

原创 Mellanox cx4 驱动总结

网卡驱动逻辑

2022-12-02 22:08:31 1134

原创 Mellanox CX4 offload 卸载功能介绍

mlx cx4 offload 功能介绍

2022-12-02 15:23:46 1102 1

原创 linux内核发包工具pktgen

pktgen运用了proc 文件系统特征来实现用户和内核的交互,用户通过向proc中传输数据,内核接收到数据后进行解析按照预定义的操作执行,添加端口,填充报文,通过内核发包接口dev_queue_xmit/netdev_start_xmit 发送给网卡,省去了从用户态发包的大部分流程(发包流程介绍,引用)。代码分析:加载pktgen.ko内核模块,module_init(pg_init);会发现多了跟cpu core数相等的kpktgend_%d 内核线程,};

2022-08-22 16:02:28 746

原创 pipeline思维之网络

pipeline思维之网络如果让你设计一台设备的网络功能,你会怎么设计?你可能还没有太多思路,或者经验丰富,不妨让我们看看一些成熟产品的网络设计与处理流程,此文以流水线的思维来看看他们的实现和设计,以便更好地设计我们自己的网络处理逻辑。交换机下面为三层交换机pipeline, 交换设备主要是做为网络拓扑中的一个中间通道,安全文档快速的将数据包转包到目的地linux主机主机测的网络三个阶段接收,转发,发送,一般主机主要做为最终的接收节点处理接收的报文。P4可编程设备p4设备以可编程而文档,重

2022-05-28 11:46:23 273

原创 sonic config 配置方法介绍

Sonic config 介绍官网的一些参考如下链接。https://github.com/Azure/sonic-utilities/blob/master/doc/Command-Reference.md笔记如下1:source codesonic-utilitie/config 对应源码都可以在main.py中找到。举例修改hostname, 代码如下,主要三部操作,1:连接configdb 2:修改db里面对应数据 3:使能配置以及相关# 'hostname' c..

2022-05-22 14:51:48 1233

原创 github 在线使用vscode 小技巧

问题通常我们在github上预研,查看一些代码库的时候并不行把代码克隆下来,然后用IDE工具去查看,知识简短查看一部分内容,但是由于项目有时间代码文件层次比较深,不容易找到对应字符定义方法方法一 只读模式github提供了在线vscode 阅读代码的方式,很简单在网页对应url 字符github 后面添加1s 即可进入对应的vscode online模式,不过是只读的不能修改可编辑模式目前实验下来是面向企业或者付费用户的,很简单1: 点击句号 . 可进入2: 将项目的github.com

2022-05-22 14:44:06 4898

原创 linux 虚拟接口驱动介绍

linux 虚拟接口驱动介绍本文主要从Linux内核驱动层面介绍不同linux 接口类型的底层代码逻辑common info再内核 driver/net/ 目录下面有不同的内核网络虚拟设备的驱动.ip link help.TYPE := { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |bridge | bond | team | ipoib | ip6tnl | ipip | sit | vxlan |gre |

2022-05-06 14:34:41 1436

原创 sonic redis模块学习

redis做为sonic的存储数据库,基于redis 的特性,可以满足sonic的数据驱动,快速响应。这个文件sonic-buildimage/dockers/docker-database/database_config.json.j2 定义了redis在sonic中应用的数据库。基本功能与其他nosql区别并不大, 简单教程如下 https://www.runoob.com/redis/redis-lists.htmlredis-server 启动server, redis-cli客户端连接ser

2020-09-21 16:45:50 1993 1

原创 SONIC容器和主机的通信 d-bus

一直有个疑问,sonic系统中容器怎么跟主机或者其他容器里的应用去通信交互。在sonic官网上找到一点介绍,感觉这块还是很重要的,为啥介绍的篇幅那么少。该文档描述了用于在容器内执行的应用程序以安全地请求主机OS执行操作(“动作”)的方式(框架)。该框架的组成部分是:d-bus详细信息链接: https://dbus.freedesktop.org/doc/dbus-specification.html主机服务组件(在主机操作系统上执行),translib API组件(执行的是容器)该框架旨在供S

2020-09-18 16:41:20 959

翻译 以配置MTU 了解SONIC网络操作系统命令配置流程

介绍总览本文档介绍了SONiC中的最大传输单元(MTU)配置和行为。在计算机网络中,层的通信协议的MTU定义了允许该层通过一个接口传输的最大协议数据单元的大小(以字节为单位)。每个接口,层和协议都与一个MTU关联。在SONiC中,基于层的接口有两种类型的MTU。1.端口MTU(第2层):以太网帧可以携带的最大字节数。2. IP MTU(第3层):允许通过L3接口传输的IP有效负载的最大大小,不包括L2标头和尾部。要求1.默认的MTU为1500,可配置范围为68字节至9216字节。最小以太网帧为

2020-09-17 14:49:35 1972

翻译 sonic 架构学习

射人先射马,擒贼先擒王在我们学习sonic的过程中,无疑了解sonic的架构是非常重要的,然后再去了解各个模块的细节,总分学习模式。下面是我自我学习并翻译的链接https://github.com/Azure/SONiC/wiki/Architecture?spm=a2c6h.12873639.0.0.980036b0oeCGJJ参考文档#Document Title Document Identifier & Link1 SONiC official wiki https://github

2020-09-17 14:24:46 7945 1

翻译 交换芯片 BCM56750/BCM56850 体系结构概述

BroadScale 架构BCM56750/BCM56850设备采用BroadScale架构设计,具有高性能为分组交换而优化的管道。此外,实现是模块化的以下好处:1:灵活的端口配置2:可伸缩的吞吐量3:可伸缩的自定义功能4:迁移到不同的平台而不改变架构如图4所示,宽尺度交换体系结构由多个阶段或模块组成管道。每个管道块执行特定的功能,并将相关信息输出给后续程序以一种允许每个块独立运行的方式划分阶段。没有一个block需要等待另一个block。前端端口接口是独立于媒体和结构为一组高密度GbE

2020-09-05 21:54:37 4011

原创 linux 主机网络分析

在我们学习,分析网络的时候,无论是教科书,畅销书,视频,通常都会把网络模块分拆开了来讲解,导致我们可能只知其一,不知其二,对整个网络的收发包流程没有一个清晰认识。网络收发包可以理解为流水线模型,想想一下,长江从源头(源地址)出发经过各个省,到达出开口(目的地址),流经的各个省份可以理解为各个处理模块,分工配合。我找到几篇英文博客,讲解的非常详细https://blog.packagecloud.io/eng/2016/06/22/monitoring-tuning-linux-networking-s

2020-09-03 14:34:13 173

原创 基于集群的CI微服务测试架构设计与实现

问题矛盾:CI测试中经常遇到整个流程时间太长,需求测试结果很急。自动化分布式测试缩短测试时间。old例如100个case,假设原来CI测试需要12小时(一台机器把所有的case跑一边)new假设又N个机器,这里为了说明具体点,我们举例三个机器TA, TB,TC在三台机器都能连接的server上建立case 池,静态方式case.json状态文件,动态方式起个server服务与测试端通信, 文件解释1 :表示有效可以被选中case还没有机器选中去跑,0:已经有机器选中。# cat case.j

2020-09-03 14:31:47 226

原创 云计算网络之--linux bridge 详解

linux bridge 是什么?通俗的说linux bridge可以比作一个简单的二层虚拟交换机,集成在linux里面。像普通交换机一样,其他端口可以连接bridge,终端虚拟设备通过接入bridge实现互相通信和外部设备的通信。linux bridge主要包括四个部分,这也是简单二层物理交换机的必备部分,可以说是虚拟了物理交换机的基础业务。1:网络端口(或接口)集:用于将终端交换机之间的流量转发到网络中的其他主机。2:控制平面:用于运行生成树协议(STP),该协议计算最小生成树,以防止环路使网络

2020-08-21 15:05:21 2851

原创 云计算网络之---tap/tun/veth 虚拟网卡详解

参考资料https://www.kernel.org/doc/Documentation/networking/tuntap.txthttps://www.cnblogs.com/bakari/p/10450711.html - linux云计算网络区别图一图胜千言,进入正题: 物理网卡,TUN, TAP, VETH 四种模型的数据收发如下图所示TAP/TUNtap/tun 是 Linux 内核 2.4.x 版本之后实现的虚拟网络设备,不同于物理网卡靠硬件网路板卡实现,tap/tun 虚拟网

2020-08-20 17:02:20 5140

原创 自动化CI分析报告系统

使用场景我们有个基于jenkens的 CI,每天都会测试很多太不同的服务器,产生很多的数据,收到很多邮件,情况是数据太分散,还需要人为的花费很多时间去分析处理,由此产生的数据集中化,分析处理后,按需报告的系统。报告结果下面是按照我们的需求对每个测试case的分析结果部分展示这个文件是使用pandas处理生成的,每天相关人员都会收到一个邮件附件是上面的报告文件,根据需求把各项数据进行处理。技术实现pandaspandas 做excel文件的统计,分析,再组织的工作。 all_data

2020-08-16 13:50:12 592

原创 pxe boot 多网卡dhcp fail 分析及修复详解

今天在调试linux启动的过程中发现 双网启动时候竟然只有一个网卡dhcp分配了ip[2020-08-05 00:51:43.416382] root@atragon:~# ifconfig[2020-08-05 00:51:44.167357] eth0 Link encap:Ethernet HWaddr xxxxxxxxxx:40 [2020-08-05 00:51:44.167357] Scope:Link[2020-08-05 00:51:44.1673

2020-08-13 22:28:09 2728

原创 最短路径算法应用(Dijkstra(迪杰斯特拉)- 思考与优化

Dijkstra算法介绍以及优化思考在工作中经常会遇到各种算法,Dijskstra 就是一个应用比较广泛的,Dijskstra理论上的,下面加入了一些实践的思考1:网络协议ospf获得 数据流量转发路由的最短路径。思考优化方案:使用回射报文,通过计算比较不同路径的反馈时间来优化选路。分别从不同端口发送echo 广播报文,建立s() , u(), list,收集从不同端口回文时间,把出端口直连设备统计到s list, 后面步骤跟Dijkstra算法理念类似,直至整个区域都加入到s list. 这个思考有

2020-08-10 15:55:12 2617

原创 linux下查找某个目录下的具体目录,删除过期文件

删除当前目录下的所有超过90天的log文件#!/bin/shfor folder in $(find . -type d -name log)doecho $folderfind $folder -type f -mtime +91 -exec rm -rf {} ;done

2020-07-31 17:36:47 754

原创 最快的方式建立自己的linux环境- buildroot-qemu

我找到一个基于qemu快速建立Linux开发环境的方法,下面步骤亲测有效。我将展示在QEMU仿真器中运行自己构建的Linux系统的最快方法。我说最快吗?然后开始:$ git clone git://git.buildroot.net/buildroot$ cd buildroot/$ make qemu_arm_versatile_defconfig其中qemu_arm_versatile_defconfig是buildroot / configs目录中的文件和defconfig名称。下一个:

2020-07-17 17:11:30 758

转载 SOCAT详解

概述socat,是linux下的一个工具,其功能与有“瑞士军刀”之称的netcat类似,不过据说可以看做netcat的加强版。的确如此,它有一些netcat所不具备却又很有需求的功能,例如ssl连接这种。nc可能是因为比较久没有维护,确实显得有些陈旧了。安装Ubuntu上可以直接sudo apt-get install socat,其他发行版没试过。也可以去官网下载源码包socat link :http://www.dest-unreach.org/socat/基本语法1socat [opti

2020-07-15 16:51:42 43189

原创 qemu 调试实践

1: git clone https://github.com/qemu/qemu.git2:cd qemu3: sudo ./configure --enable-kvm --enable-debug --enable-vnc --enable-werror --target-list=x86_64-softmmuERROR: glib-2.48 gthread-2.0 is required to compile QEMU4:apt-cache search glib25:sudo apt-g

2020-07-13 16:51:15 436

原创 linux x86 vs arm&mips 启动流程对比

做linux 开发的需要了解启动流程,不建议一下子就钻进去研究整个流程(你会发现流程很复杂,细节很多),建议带着问题去看,不如优化启动流程时间,然后分阶段的处理,这样效果会好很多。在我们做开发的过程中不同架构下linux的启动流程稍有不同,下图展示,建议遇到问题再对应阶段具体分析。1:x862:arm & mips...

2020-07-10 11:37:06 570

原创 linux必先利其器之-netstat神器详解

netstat 命令详解netstat是linux下查看网络信息经常用到的命令,今天我们来详细介绍它的使用。netstat 主要是显示网络连接,路由表,端口数据统计,执行进程和组播关系的作用。我们首先看下help 或者使用man netstat查看具体信息。~$ netstat -husage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help} netstat [-vWnNcaeol

2020-07-05 17:33:20 403

原创 python 发送邮件代码demo

import smtplibfrom os.path import basenamefrom email.mime.application import MIMEApplicationfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.utils import COMMASPACE, formatdatedef send_mail(send_from, sen

2020-05-15 10:59:05 380

数字图像处理源代码课件,课程设计

数字图像处理源代码,课件,课程设计源代码

2015-01-22

tortoisesvn客户端

tortoiseSVN,svn客户端,编程中的代码管理

2015-01-21

linux进程监控和守护进程的程序

linux实现对开启进程的监控,1,从配置文件中获得要开启的进程名 2,放入结构体数组中3,用fork加exel启动进程,4,检测proc下进程是否在运行,没有运行,则开启此进程5,

2015-01-16

linux下使用的json包

linux下对json的方法打包封装可以实现对键值对的直接加入,是json在linux下简单化

2015-01-12

日志管理永远c++、c

开发中对于日志的处理,c、c++抛出异常信息,日志记录

2014-12-21

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

TA关注的人

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