![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
日常总结
工作中遇到的
CF_S
这个作者很懒,什么都没留下…
展开
-
dlopen之另类用法,打开程序本身的符号
dlopen的常规用法是用来打开一个动态库的里面的函数,并在合适的时候执行这个函数。那么可否使用dlopen打开一个二进制程序本身的函数符号,然后并执行呢?答案是可以的,只需要在编译的时候加上一个参数即可。好记性不如烂笔头,一直找一直忘,决定还是写下来。原创 2023-05-18 15:15:31 · 287 阅读 · 0 评论 -
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 · 189 阅读 · 0 评论 -
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 · 285 阅读 · 0 评论 -
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 · 343 阅读 · 0 评论 -
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 · 285 阅读 · 0 评论 -
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 · 625 阅读 · 0 评论 -
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 · 550 阅读 · 0 评论 -
GO_包的使用
包go代码是以包的形式组织存放的,一个文件夹就是一个包。一个工程中必须有main包,当一个包中想要引入另个包的时候需要注意以下几点。1.包中允许被其他包使用的函数变量首字母必须大写;2.在main中必须以import导入包名(从src路径下开始),使用包中变量和函数时必须以 包名.函数名 包名.变量名使用。demo代码结构:在工程pro5下有main和untils两个文件夹,在两个文件夹下分别有mian.go和untils.go两个文件。实现untils.gopacka原创 2022-01-31 13:34:14 · 491 阅读 · 0 评论 -
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 · 496 阅读 · 0 评论 -
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 · 458 阅读 · 0 评论 -
二分法进阶
一个二维数组,奇数行递增,偶数行递减。在这个二维数组中查找这个数。#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 · 142 阅读 · 0 评论 -
2020面试总结
有离职想法应该是在2020年初就萌芽了,无奈疫情横祸,自己畏手畏脚地不敢动手便一直往后拖了。直到年中和朋友一次闲谈中知道他参加了春招,百度、字节等都有收获,最重要的薪资福利问题,嗯,真香,大厂是真的香。处于嫉妒、羡慕终于下定决心要离职了,于是开始了准备。起初目标是友商,主要是考虑到有相关的工作经验,将来适应起来会比较容易。但后来经过和朋友们的讨论,以及自己的想法,也对一些大厂有了想法。参加过的面试有启明、绿盟、奇安信、网宿、深信服、滴滴、京东、字节。对启明本来没什么兴趣的,主要是因为之前的同学就在那原创 2021-02-22 08:54:44 · 227 阅读 · 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 · 350 阅读 · 0 评论 -
http https ssl
原文地址:https://blog.csdn.net/freekiteyu/article/details/76423436转载 2020-12-26 09:27:29 · 216 阅读 · 0 评论 -
dpdk 无锁队列
原文地址:https://www.cnblogs.com/jungle1996/p/12194243.html转载 2020-11-14 10:15:20 · 262 阅读 · 0 评论 -
面试
time:2020.11.03(三面时间)公司:某互联网中大厂;岗位:网络安全研发;形式:zoom此时,距离结束三面已经三天了,还未收到任何反馈,感觉晾了,总结一下。一面:时间,2020.10.21.由于当时手头工作还比较忙,所以时间约在了晚上8点。面试官很年轻,自我介绍完后就简历上的项目着重提问,尤其注重细节问题,然后延伸到其他的一些知识点。之后是网络相关知识的询问,有难有易,总体难度适中。最后是一道手写编程题。全程1.5小时,很愉快。结果:第二天收到通知,一面过。二面:时间,原创 2020-11-06 21:10:05 · 208 阅读 · 0 评论 -
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 · 6346 阅读 · 3 评论 -
CISCO nat实例
原文:https://blog.51cto.com/11806823/2071148原创 2020-10-17 15:32:37 · 260 阅读 · 0 评论 -
面试
有幸接到阿里的电话面试,部分问题如下,欢迎交流.1.对安全行业有哪些认识?2.开发过程中的的hash是用什么算法实现的?index冲突了怎么办;3.报文的应用识别是怎么做的,如给定一些报文如何知道他们的应用层协议?其他厂商是怎么做的;4.什么是ddos攻击?举些例子。5.netlink和ioctl的使用场景;6.ttl的证书是怎么得到的(一般都是专业机构颁发的)7.hyperscan、pcre、或者其他的一些正则匹配引擎的差异8.TCP四次握手时最后的2MSL是多少?...原创 2020-09-22 07:36:46 · 162 阅读 · 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 · 934 阅读 · 0 评论 -
力扣------找出数组中元素个数大于数组长度1/2的那个元素
有一个整形数据,共有N的元素,如果其中有一个元素m的数量大于n/2,请找出这个元素。方法1:两层for循环得到数组中每个元素的数量,然后取出其中元素数量最多的那个元素;方法2:对数组进行排序,因为元素m的数量大于n/2,那么排序后中间那么元素的就是要找的元素;方法3:1.依次遍历数组,若接下来的数字与记录的数字相同,则次数加一;若接下来的数字与记录的数字不同,则次数减一。2.当次数为0时,保存下一个数字,并将次数置为1。当数组结束的时候得到的那个元素就是待寻找的元素。例如极端情原创 2020-08-23 09:04:05 · 740 阅读 · 0 评论 -
排序算法---直接插入、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 · 118 阅读 · 0 评论 -
linux netfilter
知乎地址:https://zhuanlan.zhihu.com/p/81866818转载 2020-06-08 17:46:13 · 151 阅读 · 0 评论 -
TCP 为什么三次握手而不是两次握手(正解版)
原创地址 :https://blog.csdn.net/lengxiao1993/article/details/82771768转载 2020-06-04 13:20:14 · 182 阅读 · 0 评论 -
C语言单链表反转
#include <stdio.h>#include <stdlib.h>#include <string.h>struct Node{ int num; struct Node *next;};struct Node* init_head();int insert_Node(struct Node *head,int new_value...原创 2020-03-20 15:32:27 · 299 阅读 · 0 评论 -
发帖提问----linux下共享内存和ring队列
最近项目中需要用到共享内存通信,为了方便操作,加入了一种ring队列数据结构。我本人也是第一次接触ring队列,于是在网上找相关资料,主要是看了以下几个帖子:https://blog.csdn.net/ds1130071727/article/details/85772923https://www.cnblogs.com/java-ssl-xy/p/7868531.htmlhttp...原创 2020-03-07 15:24:10 · 645 阅读 · 1 评论