自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 收藏
  • 关注

原创 记一个可用的list.h

list.h中封装了一个通用链表的使用接口,但是从内核源码中直接拿出来list.h并不能直接使用,还需要修改一下,下面记录一个已经可以在用户态代码使用的list.h。

2023-06-01 17:00:33 123

原创 linux C 使用netlink机制添加、删除 ip地址

以下代码是使用netlink机制实现对一个网卡添加删除ip地址的小demo,包括ipv4,ipv6地址。

2023-05-24 09:33:30 372

原创 使用netlink给指定的接口配置IP地址

【代码】使用netlink给指定的接口配置IP地址。

2023-05-22 17:06:08 323

原创 dlopen之另类用法,打开程序本身的符号

dlopen的常规用法是用来打开一个动态库的里面的函数,并在合适的时候执行这个函数。那么可否使用dlopen打开一个二进制程序本身的函数符号,然后并执行呢?答案是可以的,只需要在编译的时候加上一个参数即可。好记性不如烂笔头,一直找一直忘,决定还是写下来。

2023-05-18 15:15:31 203

原创 GO_map

package mainimport ( "fmt")func main() { fmt.Println("---------------map test") var map1 map[int]string fmt.Println("map1:", map1) fmt.Printf("%p\n", &map1) // map1[1] = "hello" // 不可直接使用,需要使用make分配内存后再使用,会报错panic: assignment to entry i.

2022-02-07 16:34:10 179

原创 GO_切片

package mainimport ( "fmt")func main() { fmt.Println("---------------切片") /* 数组是有固定长度的数据类型,切片和数组类似,有一些共有的属性,但是长度是可变的。 */ var arr1 [5]int = [5]int{1,2,3,4,5} // 定义并初始化一个数组 var sli1 []int = arr1[1:4] // 由数组得到切片,arr[起始索引:终止索引(但不包括终止索引)] va.

2022-02-06 13:42:08 259

原创 GO_数组

package mainimport ( "fmt" "unsafe")func get_arr() (ret [3]int) { ret = [3]int{1, 2, 3} fmt.Printf("get_arr, ret:%p\n", &ret) return ret}func modify_arr(arr [3]int) { fmt.Println("in modify_arr begin:", arr) arr[0] = 100 fmt.Println("i.

2022-02-05 17:23:55 333

原创 GO_错误and自定义错误

package mainimport ( "fmt" "errors")func test() { defer func() { err := recover() // 使用内置函数recover()得到返回的错误 if err != nil { fmt.Println("发生了错误并捕获") } }() num1 := 1 num2 := 0 num3 := num1 / num2 // 如果没有defer ... recover 机制这里会执行出错 fmt.

2022-02-04 14:36:38 257

原创 GO_字符串常用函数

package mainimport ( "fmt" "strconv" "strings")func main() { fmt.Println("-----------常用的系统函数------") str1 := "hello" str2 := "北京" // len():按字节计算的长度 fmt.Println("len(str1):", len(str1), " len(str2):", len(str2)) // 字符串遍历,如果有中文,要转成[]rune类型.

2022-02-03 14:13:00 609

原创 GO_闭包

闭包一个函数,如果用到了这个函数以外的变量,那么这个函数和变量组成的环境就构成了闭包。demo 利用闭包使得局部变量达到全局变量的效果package mainimport ( "fmt")func addUpper() func(int) int { var n int = 10 return func(x int) int { n = x + n return n }}func addUpper2(n int) func(int) int {...

2022-02-02 14:49:26 538

原创 GO_包的使用

包go代码是以包的形式组织存放的,一个文件夹就是一个包。一个工程中必须有main包,当一个包中想要引入另个包的时候需要注意以下几点。1.包中允许被其他包使用的函数变量首字母必须大写;2.在main中必须以import导入包名(从src路径下开始),使用包中变量和函数时必须以 包名.函数名 包名.变量名使用。demo代码结构:在工程pro5下有main和untils两个文件夹,在两个文件夹下分别有mian.go和untils.go两个文件。实现untils.gopacka

2022-01-31 13:34:14 459

原创 GO_流程控制

ifpackage mainimport "fmt"func main() { fmt.Printf("-----------流程控制---------\n") // if 语句 var age int fmt.Println("请输入你的年龄:") fmt.Scanln(&age) fmt.Println("age:",age) if age > 18 { fmt.Println("已经成年") } else { fmt.Println("未成年"

2022-01-29 12:46:31 383

原创 GO_基本数据类型与字符串之间的转化

package mainimport ( "fmt" "strconv")func main() { fmt.Println("-----------基本数据类型和字符串之间的转换-----------") var var1 int = 10 var var2 float64 = 1.11 var var3 bool = true var var4 byte = 'A' var str_ret string // 默认值是空字符串 fmt.Println("var1:", v.

2022-01-28 11:43:23 448

原创 二分法进阶

一个二维数组,奇数行递增,偶数行递减。在这个二维数组中查找这个数。#include <stdio.h>int find1(int *a,int size,int target){ int low = 0,high = size - 1; int mid = 0; //{0,1,2,3,4,5,6,7,8,9}, while(low <= high){ mid = (low + high) / 2; if(a[mid] == target){ return

2021-03-21 15:31:55 126

原创 2020面试总结

有离职想法应该是在2020年初就萌芽了,无奈疫情横祸,自己畏手畏脚地不敢动手便一直往后拖了。直到年中和朋友一次闲谈中知道他参加了春招,百度、字节等都有收获,最重要的薪资福利问题,嗯,真香,大厂是真的香。处于嫉妒、羡慕终于下定决心要离职了,于是开始了准备。起初目标是友商,主要是考虑到有相关的工作经验,将来适应起来会比较容易。但后来经过和朋友们的讨论,以及自己的想法,也对一些大厂有了想法。参加过的面试有启明、绿盟、奇安信、网宿、深信服、滴滴、京东、字节。对启明本来没什么兴趣的,主要是因为之前的同学就在那

2021-02-22 08:54:44 195 3

原创 C debug

开发过程中某些情况下标准输入、输出、出错文件描述符被重定向导致代码中printf()语言不能正常打印,但是打印信息确认代码调试过程中很重要的一种手段,因此可以以记录文件的形式来查看。在C中以宏的形式准备好一个调试手段在一些情况下是很实用的。#include <stdio.h>#include <unistd.h>#define DEBUG(fmt,...) printf(fmt,__VA_ARGS__) #define DEBUG2(...) printf(__V

2021-01-22 13:56:26 341

转载 http https ssl

原文地址:https://blog.csdn.net/freekiteyu/article/details/76423436

2020-12-26 09:27:29 206

转载 dpdk 无锁队列

原文地址:https://www.cnblogs.com/jungle1996/p/12194243.html

2020-11-14 10:15:20 224

原创 面试

time:2020.11.03(三面时间)公司:某互联网中大厂;岗位:网络安全研发;形式:zoom此时,距离结束三面已经三天了,还未收到任何反馈,感觉晾了,总结一下。一面:时间,2020.10.21.由于当时手头工作还比较忙,所以时间约在了晚上8点。面试官很年轻,自我介绍完后就简历上的项目着重提问,尤其注重细节问题,然后延伸到其他的一些知识点。之后是网络相关知识的询问,有难有易,总体难度适中。最后是一道手写编程题。全程1.5小时,很愉快。结果:第二天收到通知,一面过。二面:时间,

2020-11-06 21:10:05 194

原创 C语言判断字符是中文还是英文

看到同事使用 & 0x80 判断一个字符是中文还是英文的操作后,特地查了一下资料并求教了一下。链接原址:https://www.cnblogs.com/hardsoftware/p/6209051.html代码亲测:#include <stdio.h>#include <string.h>int main(int argc,char** argv){ if(argc != 2){ printf("./xxx str"); return 0;.

2020-10-19 15:33:46 5999 3

原创 CISCO nat实例

原文:https://blog.51cto.com/11806823/2071148

2020-10-17 15:32:37 229

原创 面试

有幸接到阿里的电话面试,部分问题如下,欢迎交流.1.对安全行业有哪些认识?2.开发过程中的的hash是用什么算法实现的?index冲突了怎么办;3.报文的应用识别是怎么做的,如给定一些报文如何知道他们的应用层协议?其他厂商是怎么做的;4.什么是ddos攻击?举些例子。5.netlink和ioctl的使用场景;6.ttl的证书是怎么得到的(一般都是专业机构颁发的)7.hyperscan、pcre、或者其他的一些正则匹配引擎的差异8.TCP四次握手时最后的2MSL是多少?...

2020-09-22 07:36:46 150 1

原创 linux shell 实现交互式自动执行expect

在使用一些Linux命令的时候经常需要根据提示输入一些信息,如yes,才能继续执行。如使用scp 复制一个文件到远程地址时需要输入"yes"以及“用户的账号密码”等信息。如下图:当在调试某些功能时这个命令可能会多次输入,很繁琐。如何减少步骤呢?答案使用:expect命令。expect需要在linux中额外安装(需要tcl和expect),如下:http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar..

2020-09-16 18:43:44 915

原创 力扣------找出数组中元素个数大于数组长度1/2的那个元素

有一个整形数据,共有N的元素,如果其中有一个元素m的数量大于n/2,请找出这个元素。方法1:两层for循环得到数组中每个元素的数量,然后取出其中元素数量最多的那个元素;方法2:对数组进行排序,因为元素m的数量大于n/2,那么排序后中间那么元素的就是要找的元素;方法3:1.依次遍历数组,若接下来的数字与记录的数字相同,则次数加一;若接下来的数字与记录的数字不同,则次数减一。2.当次数为0时,保存下一个数字,并将次数置为1。当数组结束的时候得到的那个元素就是待寻找的元素。例如极端情

2020-08-23 09:04:05 718

翻译 力扣-----删除单链表的结点

原创链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 --head =[4,5,1,9],它可以表示为:说明:链表至少包含两个节点。 链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表中的一个有效节点。 不要从你的函数中返回任何结果。程序中的“狸猫换太子”,这个函数...

2020-07-22 07:26:48 233

原创 排序算法---直接插入、shell、快速

#include <stdio.h>int a[10] = {7,4,1,0,2,5,8,9,6,3};void print_a(){ printf("\n"); int i ; for(i = 0;i < sizeof(a) / sizeof(a[0]);i++){ printf("%d ",a[i]); } printf("\n"); }void InsertSort_Down(int* arr, int length){ int i; //假定.

2020-07-05 08:05:25 103

转载 力扣-----三数和为0

链接:https://leetcode-cn.com/problems/3sum给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]int Compare...

2020-06-21 11:18:58 282

翻译 力扣-----求最长的公共前缀

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-common-prefix编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。char * longestCommonPrefi...

2020-06-20 15:28:20 193

转载 力扣----两数之和

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] ...

2020-06-14 10:43:51 329

原创 Python学习之路----json 和 pickle

JSON在各种编程语言中都有各自规定的数据类型,且根据硬件平台的不同,占用的字节大小也不同。如果想要不同类型的语言之间进行通信,就需要转化成json字符串进行。高级数据类型与JSON之间的转化#将列表转化成字符串并存入文件import jsonfile_dump = open('dump1','w',encoding = 'utf8')list1 = [1,2.2,'hello',(4,5,6),{'name':'zhangsan'}]x = json.dumps(list1)p

2020-06-13 17:02:33 101

转载 linux netfilter

知乎地址:https://zhuanlan.zhihu.com/p/81866818

2020-06-08 17:46:13 136

原创 Python学习之路-----像字典操作对象

class Person(object): def __init__(self,age,name): self.age = age self.name = name def __str__(self): return 'name:{} age:{}'.format(self.name,self.age) def __getitem__(self,key): print('__getitem__ wa.

2020-06-07 16:16:35 147

转载 TCP 为什么三次握手而不是两次握手(正解版)

原创地址 :https://blog.csdn.net/lengxiao1993/article/details/82771768

2020-06-04 13:20:14 153

翻译 力扣---求指定字符串的无重复最长字串

int i = 0;//用于遍历字符串 int j = 0;//用于遍历子串 int n = 0;//用于保存最大长度 int index = 0;//用于指向子串的第一个元素 //abcabcdb while(s[i]!='\0'){ for (j = index; j < i; ++j) { printf("s[i]:%c s[j]:%c\n",s[i],s[j]); if (s[j] == s[i]) { break; } } pr..

2020-06-03 21:55:55 174

原创 力扣---两数相加

给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。输入:(2 -> 4...

2020-06-02 08:18:27 165

原创 Python-----字典推导式

使用字典推导式将原有字典的key,value交换位置。dict1 = {'name':'zhangsan','age':10}dict2 = {v:k for k,v in dict1.items()}print(dict1,dict2)#{'name': 'zhangsan', 'age': 10} {'zhangsan': 'name', 10: 'age'}

2020-05-24 15:40:08 238

原创 Python学习之路-----列表推导式

列表推导式常用于生成简单有规律的列表,利用简洁的语法往往能达到令人意外的效果。#列表推导式list1 = [x for x in range(10)]print(list1)list1 = [x for x in range(10) if x % 2 == 0]print(list1)list1 = [x for x in range(10) if x % 2]print(list1)points = [(x,y) for x in range(1,5) for y in ra

2020-05-24 09:04:58 296

原创 mysql----case when then

mysql中的case when then 语句类似于其他编程中的if/else if/else。基本语法如下:case when...then... when...then... when...then... elseend比赛年份和结果表create table scores( date_year int, win_loss varchar(5));数据insert into scoresvalue(2005,'loss'),(2006,'win'),(200

2020-05-09 11:07:08 252

原创 mysql-----in和exists order by小结

in和exists 语句结果是一样的,但是使用时要遵循小表驱动大表的原则。order by

2020-05-03 15:49:21 294 2

原创 mysql----如何在使用like %xxx% 的情况下避免索引失效

背景:当在某列建立索引,并且在查询条件中使用like '%xxx%' 这样的语句时,会使得索引失效。当时实际的环境必须使用 like '%xxx%' 这样的条件,那么应该如何解决这个问题。答:使用覆盖索引避免这个问题。即:在要查询的列和其他的列之间建立一个复合索引,然后查询时同时查询和复合索引有关的列即可避免全表扫描。create table user_info( id i...

2020-05-03 09:50:11 2081 1

空空如也

空空如也

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

TA关注的人

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