自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_41854763的博客

用以记录成长

  • 博客(23)
  • 收藏
  • 关注

原创 CGLIB动态代理之intercept函数刨析

网上搜CGLIB动态代理,几乎所有的博文都只给了示例代码而缺少对代码的解释说明(特别是关键的intercept函数),看完实在是云里雾里。所以,这篇博文将带你从源码的角度来理解intercept函数。前言关于如何使用CGLIB创建动态代理,网上已经有很多资料,这里就不再赘述。本文将使用如下代码进行分析,如果你还看不懂下面的代码,请先自行搜索资料看懂后再继续后面的内容。import net.sf.cglib.core.DebuggingClassWriter;import net.sf.cglib.

2020-12-12 15:51:01 3680 15

原创 深入理解JVM之加载自己的String类

前言面试Java时,一个较为常见的问题是——“能否加载自己的String类?”那到底能不能呢?本文就带你一探究竟。(想知道答案的小伙伴可以直接跳到文章末尾~)预备知识虚拟机类加载机制双亲委派模型定义自己的类加载器以上内容是本文的预备知识,《深入理解Java虚拟机》这本书以及网上的很多文章都已经讲的很清楚了,还不清楚的读者可以自行查阅,本文就不再赘述。加载自己的String类首先,我们需要知道,双亲委派模型并不是一个强制性的约束条件,而只是Java设计者推荐给开发者的类加载器实现方式

2020-08-09 11:56:08 1195 1

原创 DPDK发送自定义头部的数据包

之前写过一篇使用DPDK解析自定义数据包头部的文章。这篇文章将介绍如何使用DPDK来发送带有自定义头部的数据包!实现思路使用rte_pktmbuf_alloc在memory_pool中为数据包申请空间。使用rte_pktmbuf_append往申请的空间中添加自定义头部。往自定义头部中填入具体的内容。核心代码struct my_header { uint16_t id; uint16_t flag;}static struct rte_mbuf * generate_pkt.

2020-06-07 19:21:03 2136 14

原创 你真的会用nohup与&吗?

搜索nohup与&的用法与区别,可以搜到大量的博客,且内容几乎一样。本文写在那些博客的基础之上,建议读者看过几篇搜索到的博客之后再看下面的内容(当然直接看也没问题),相信你会有所收获。用中文搜索nohup和&的用法,99%的文章都会告诉你:nohup可以使进程忽略SIGHUP信号,&可以使进程在后台运行。要使得进程在shell退出后依然运行,可以结合使用nohup与&,即nohup your_command &这个做法肯定是没有问题的。但请思考一个问题,

2020-06-07 16:05:54 573 1

原创 P4在table中使用ternary匹配

P4支持ternary匹配,也就是对于一个匹配字段,你可以用mask指定这个字段中的哪些bits是你关心的(1表示关心,0表示忽略),从而只匹配你关心的bits的值而忽略其他的值。那在代码中怎么使用呢?话不多说,直接上代码(P4版本为 P4_16)!action drop() { mark_to_drop(standard_metadata);}action your_action (...

2020-04-08 12:23:58 2800 11

原创 networkx画图时显示节点和边的属性

python的NetworkX库可以帮助我们构建网络拓扑图,并在一些画图工具的帮助下将拓扑可视化,这对于网络研究,展示等都是十分的方便。不过,我发现并没有文章比较系统的介绍如何在可视化的图中展示节点和边的属性。因此就想写一篇文章来教会大家如何在图中显示节点和边的属性,从而让图更加的清晰,直观。先说总体思路,想要展示节点和边的属性,我们需要借助如下两个函数:draw_networkx_lab...

2019-12-05 17:09:10 27834 20

原创 git不再跟踪所有pyc文件

最近在开发项目的时候遇到了如下问题:一开始时将pyc文件加入了git,但后来决定不在版本库中包含pyc文件了,于是在.gitignore文件中加入了*.pyc这条规则。这时新增的pyc文件确实被忽略了,但是如何快速将已经位于版本库中的pyc文件移除呢?很简单,只需要在git项目的根目录下运行如下命令即可:git rm ./\*.pyc如果只是想从版本库中删除但在本地保留这些文件的话,则加上...

2019-12-04 20:29:03 5090

原创 使用DPDK解析自定义数据包头部

近年来,协议无关(protocol-independent)的数据包处理在网络领域算是一个比较火的概念。但是,DPDK的初衷并不是为了实现协议无关的数据包处理,而是为了加速数据包的处理过程。那么,如何使用DPDK来解析我们自定义的头部呢?本文将给出一种可行的方式供读者参考。假设我们希望定义名字为my_header的头部:struct my_header { uint16_t id; u...

2019-12-01 22:46:49 1803 2

原创 Windows10使用VS code remote报错:Could not establish connection to "your_server_ip_address"

Windows10使用VS Code remote-ssh报错:Could not establish connection to “your_server_ip_address”. The process tried to write to a nonexistent pipe.如果发生这个错误,仔细观察vscode的输出,如果能看到如下这句话:Bad owner or permissio...

2019-11-29 20:07:30 21118 12

原创 Docker 中 EXPOSE port 和 -p port 的区别

在使用docker时,有时需要在docker run时使用-p来公开一些容器中的端口以提供服务。然而,在编写Dockerfile时,也会用到EXPOSE命令来公开某些端口。那么,EXPOSE和-p有啥关系吗?他们的作用是什么呢?其实答案很简单,引用Docker官方文档中的一段话,这段话完美诠释了EXPOSE和-p之间的关系:The EXPOSE instruction does not ac...

2019-09-04 20:57:53 5586

原创 使用Python绘制数据中心网络拓扑

使用Python绘制数据中心网络拓扑本文采用Python语言,借助networkx, matplotlib实现三种典型数据中心网络拓扑的绘制与可视化。三种数据中心网络拓扑为Fat-tree, BCube, Vl2。 拓扑生成在开始之前,引入相关的包:import matplotlib.pyplot as pltimport networkx as nxFat-treede...

2019-08-08 21:50:21 14461 4

原创 微信小程序修改action-sheet-cancel的高度

微信小程序官方在很早的版本里就移除了组件 action-sheet,推荐使用~~“更加方便”~~ 的wx.showActionSheet(Object object) API代替,然后这个Action Sheet的List里面只允许放String,而有些事件必须由button才能触发,比如分享小程序页面给好友,这个Action sheet中只能放String的限制显然一点都不方便啊。。。所以有的...

2019-05-06 20:29:57 2675

原创 微信小程序前端展示小程序码

后台将调用微信小程序官方接口得到的小程序码不做处理的直接返回给前端,这时前端收到的是一个byte数组,通过console.log的方式得到的是一串乱码,如下所示:那如何将这个byte数组转换为可在前端展示的图片呢?网上有很多解法,但我发现了一种十分简单的方法,那就是:将这个小程序码当作文件从后台下载!let that = this;wx.downloadFile({ url: '这里...

2019-05-06 19:50:41 1162 2

原创 12行代码搞懂C中string的使用

本文希望通过尽可能少的代码来展示在C中使用string的一些知识,让读者一看便懂,一看就能记下,这样就能在C中灵活的使用string啦~~什么是‘\0’在C中,‘\0’(ASCII码为0)用于标识一个字符串的结束,有许多与string相关的方法是基于‘\0’来工作的,比如strlen()。string末尾自动补’\0’的情况在以下情况中,编译器会自动为你在字符串的末尾添上‘\0’...

2019-04-11 21:14:45 194

原创 【DPDK源码阅读】Sample Application --- l3fwd之em获取5元组原理解析

l3fwd整个程序的逻辑并不十分复杂,而且网上有许多讲解文章,对于大部分人来说,要看懂并不难。不过,在程序的exact match逻辑中,涉及到了获取数据包5元组的操作,这个操作的具体实现涉及到一些比较底层的知识,而且用了一些比较少用的写法,要看懂并不容易,因而,本文将带你详细分析源码,彻底搞懂获取数据包5元组的实现逻辑!1.前言在进行源码分析之前,先做几点说明:后面涉及的内容建立...

2019-03-20 23:51:26 1220

原创 在单个虚拟机中搭建DPDK测试环境

目前网络上关于如何测试DPDK应用程序的教程很多都需要用到物理硬件,在研究初期的时候显得不是那么方便。因此,我希望通过这篇博客,和大家分享一种纯虚拟的方式,教你如何从0开始,仅使用一台虚拟机搭建出DPDK的测试环境。1. 虚拟机创建这一步你可以使用任何你喜欢的方式创建一台Linux虚拟机,不过创建时需要注意如下两点:(1)在条件允许的情况下,尽量多的为虚拟机分配CPU核数;(2)至...

2019-03-12 19:08:40 1819 4

原创 【SDN】Ryu网络拓扑可视化app使用简介

【SDN】Ryu网络拓扑可视化app使用简介在使用SDN的过程中,经常会遇到网络拓扑可视化的需求,而目前主流的SDN控制器也都提供了相应的功能。这篇博文将简单介绍一下当你选用Ryu作为控制器时,如何实现网络拓扑的可视化。Ryu自带了网络拓扑可视化的app,名称为gui_topology.py,路径为:ryu安装目录/ryu/app/gui_topology/gui_topology.py...

2018-11-29 20:01:04 9062 16

原创 Java 文件I/O使用笔记

Java 文件I/O使用笔记Java I/O的设计十分的繁杂,几乎每次使用起来都需要百度一下,很浪费时间。因此,本文希望尽可能少的列出足以满足平时文件I/O需求的知识点,以此来简化Java I/O的使用和记忆难度。1. Text I/O & Binary I/O关于Text I/O和Binary I/O的区别,引用《Introduction to Java Programmin...

2018-11-04 11:10:35 203

原创 一句话定义概念

一句话定义概念 我在与人交流的过程中,经常出现如下状况:理解一个概念,但总是无法清楚的表达自己的想法。因而,就想写这么一篇文章,记录我在平时遇到的对某一个概念的精准描述(通常是一句话),一是起到记录作用,二是希望说我能从这些描述中学到概括提炼的技巧! Operating System: An operating system is a program that mana...

2018-09-16 22:19:58 1228

原创 红黑树理解以及Java实现

我对红黑树的理解 红黑树本身并不复杂,只是在插入删除的时候情况比较多,如果强行记忆的话会显得比较困难,而且容易忘记。所以以前对红黑树一直没有很好的掌握。恰好这次借着复习数据结构的机会,静下心来仔细的学习了一下红黑树,所以用这篇文章把我对红黑树的操作的理解记录下来,在理解的基础上记忆会容易得多,这样以后就不用重复学习啦!1. 红黑树的定义 红黑树是一颗二叉查找树,且具有如下...

2018-09-13 21:05:26 12603 17

原创 Java动态绑定与静态绑定之胡思乱想

Java动态绑定与静态绑定之胡思乱想 之所以写这篇博客,是因为写代码过程中遇到了很奇怪的现象,我觉得只能通过动态绑定与静态绑定来解释,于是,就学习了一下动态绑定与静态绑定的实现原理,这个过程中确实学到了很多,怕以后忘了,所以用博客的形式记录下来。 为啥叫胡思乱想呢,是因为这篇博客主要记录的是我学到的内容和我的一些疑问与解答,并没有很强的逻辑性,所以就叫胡思乱想啦!Java动...

2018-04-02 21:52:30 1812

原创 用代码详解Java访问控制修饰符

用代码详解Java访问控制修饰符 Java访问控制符是一个很基础的内容,网上介绍的文章也很多,但是许多都讲的不清楚,给我造成了很大的困惑,于是我决定自己写一篇博客,并结合代码,针对default与protected这两个比较难理解的访问控制修饰符做一个比较清楚的介绍。前言先让我们来看一张图:     这是关于访问权限介绍的一张很经典的图,但是,这张图中的描述有很多令...

2018-04-02 12:33:51 392

原创 TCP学习过程中的疑问与解答

TCP连接问题与解答 本篇博客罗列出了我学习TCP过程中产生的疑问以及相应的解答,我假设阅读本博客的人已经了解了基本的TCP工作机制,所以不会花大篇幅系统的讲解TCP具体的工作流程,而是集中于解决我产生的疑问。全文共包括以下四个部分:    1 TCP为什么需要三次握手?    2 TCP握手时的初始序号为什么要随机选择?   3 TCP关闭连接时为什么需要四次握手?  ...

2018-03-20 21:37:44 217

空空如也

空空如也

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

TA关注的人

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