- 博客(73)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 基于QT的网络嗅探器实现(网络安全课程设计)
在这学期的网络安全课程设计中,我们需要自己实现一个基于WinPcap编程接口的网络嗅探器,历时两周完成,主要参考资料: 1、WinPcap 中文技术文档(http://www.ferrisxu.com/WinPcap/html/index.html) 2、一步一步开发sniffer(Winpcap+MFC) (https://blog.csdn.net/litingli/a...
2018-05-23 15:58:59
15090
34
原创 [面试]一文搞懂Mysql索引
个人开发博客网站,欢迎访问:rayoluo.topB+树特点:树中的节点并不存储数据本身,而是只是作为索引;将每个叶子节点串在一条链表上,链表中的数据是从小到大有序的,方便按区间查找;每个节点中子节点的个数不能超过m,也不能小于m/2;根节点的子节点个数可以不超过m/2,这是一个例外;一般情况下,根节点会被存储在内存中,其他节点存储在磁盘中。B+树的数据结构演进:1.给一亿个数据构建二叉查找树索引,索引中会包含大约1亿个节点,每个节点假设占用16字节,那就需要大约1GB的内存空间,.
2021-09-01 00:20:14
320
1
原创 gin-contrib/session源码浅析
初始代码:redis.NewStore用于配置redis连接,最后一个参数作为加密密钥对sessionid进行加密处理。首先是sessions.Sessions方法返回一个httphandler中间件,所有的请求共享相同的store,即共享相同的底层存储。接下来通过session.Get(“count”)获取session服务端信息中count键对应的值,Get方法如下:Session方法定义如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aKgpVSfv
2021-06-04 10:30:45
803
原创 堆和优先队列
什么是优先队列普通队列和优先队列的比较普通队列:先进先出,后进后出优先队列:出对顺序和入队顺序无关,和优先级相关,优先级高的先出队优先队列的应用排队,VIP客户优先windows任务管理器,系统任务优先优先队列不同实现方式的时间复杂度堆二叉堆是一颗完全二叉树。go标准库中提供了堆的实现,直接参考:https://books.studygolang.com/The-Golang-Standard-Library-by-Example/chapter03/03.3.htmlpac
2021-05-10 16:34:22
246
转载 论文怎样寻找创新点
写大论文最关键的就是要找到创新点,而最伤脑筋的是如何才能找到创新点。最近看到许多同学为了找到大论文中的创新点是殚精竭虑,每天在教研室是如坐针毡,非常的痛苦。我个人觉得,创新点就像是机遇一样,说来就来,说走就走。李开复老师曾经说过,创新是需要积累的。在找到创新点之前,我们需要大量地阅读相关的论文或书籍,并反复地比较相关理论或模型的异同。如此这般,才能有创新的火花在我们的大脑中迸发出来!就个人而言,我喜欢将看过的论文都记录下来,以备以后查看。据不完全统计,我已经阅读了中文小论文106篇,英文小论文35篇,中文
2021-04-06 20:57:35
1180
原创 容器技术概念入门
文章目录进程篇Namespace技术示例隔离与限制虚拟机与容器技术对比Linux Namespace的不足Cgroups技术容器镜像Mount Namespacechrootrootfs联合文件系统与增量rootfs-容器镜像的分层Docker exec运行原理Docker Volume机制的原理kubernetes的本质初探kubernete结构声明式API进程篇什么是“程序”,什么是“进程”?如要写一个计算加法的小程序,程序的输入来自一个文件,计算完成后的结果则输出到另一个文件中。磁盘上的数据加上
2021-04-05 18:40:40
1041
原创 go context源码解析
文章目录Context是什么?Context基本使用方法创建特殊用途的Context方法WithValueWithCancelWithDeadline总结面试问题和回答总结参考内容Context是什么?Go 1.7引入context,中文译作“上下文”,准确地说它是goroutine地上下文,包含goroutine地运行状态、环境、现场等信息。context主要用来在goroutine之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v键值对等。Context基本使用方法包context
2021-04-05 18:37:05
250
原创 剑指offer题解2-栈和队列
文章目录面试题09 用两个栈实现队列面试题30 包含min函数的栈面试题31 栈的压入、弹出序列面试题09 用两个栈实现队列题目链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/双栈实现队列:成员变量维护两个栈 stack1 和 stack2,其中 stack1 支持插入操作,stack2 支持删除操作构造方法初始化 stack1 和 stack2 为空插入元素插入元素对应方法
2021-02-04 20:40:16
180
原创 Go类型嵌套时容易犯的错误
记录一个在go编程容易犯的错误。下面是用数组实现栈的代码:这部分代码是实现了一个数组,支持常见的插入元素、删除元素等基本操作。// 实现支持泛型的数组package arrayimport ( "bytes" "fmt" "reflect")type MyArray struct { arr []interface{} size int}// 创建一个新的数组, 切片长度设置为capacity, 相当于定长数组func NewArray(capacity int) *My
2021-02-03 19:04:46
192
原创 剑指offer题解1-数组
面试题03 数组中重复的数字链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/第一种方法很自然能想到,使用标记数组或者集合,时间复杂度是O(N),空间复杂度是O(N),这没什么好说的。如果加一个要求:要求空间复杂度是O(1)呢?网上看到的第一种方法是原地交换,利用题目中的条件,在一个长度为n的数组nums里的所有数字都在0 ~ n-1之间,那么数组的索引与数组的值之间存在一对多的映射关系。这就是数学上的“
2021-02-02 18:56:51
160
原创 [论文解读 IJCAI 19] LogAnomaly Unsupervised Detection of Sequential and Quantitative Anomalies
论文题目:LogAnomaly Unsupervised Detection of Sequential and Quantitative Anomalies in Unstructured Logs论文来源:IJCAI 2019论文链接:https://doi.org/10.24963/ijcai.2019/658摘要通过日志记录运行时状态对几乎所有的计算机系统而言都很常见,检测出日志中的异常对于及时定位系统的故障至关重要。然而,手动从日志中检测异常十分费时、易出错且不可行。现存的自动日志异常.
2021-01-13 16:32:21
1774
2
原创 [论文解读 CCS 17] DeepLog Anamaly Detection and Diagnosis from System Logs through Deep Learning
论文题目:DeepLog Anamaly Detection and Diagnosis from System Logs through Deep Learning论文来源:CCS 2017 (Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communication Security)论文链接:https://doi.org/10.1145/3133956.3134015关键词:异常检测;深度学习;日志分析0 摘要系.
2021-01-12 11:43:00
2311
1
原创 Go初出茅庐(二)
文章目录接口(interface)接口定义接口实例值接收者和指针接收者实现接口值接收者实现接口指针接收者实现接口接口值接口与类型的关系接口嵌套空接口空接口作为函数的参数空接口作为`map`的值类型断言并发接口(interface)接口是一种类型。接口定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。为什么要引入接口:比如三角形、四边形、圆形都能计算周长和面积,如何把它们当成“图形”来处理?比如学生、老师都会吃饭睡觉学习,如何把他们当成“人”来处理?Go语言为了解决类
2020-12-17 09:57:17
192
原创 Go初出茅庐(一)
文章目录Go语言初探变量、常量和字符串变量字符串流程控制if条件语句切片匿名函数和闭包结构体方法和接收者结构体的继承结构体与jsonGo语言初探Go语言的发展目标及特性:类型安全和内存安全的编程语言,Go语言使用静态类型,所以是类型安全的,且作为强类型语言,隐式的类型转换是不被允许的对网络通信、并发和并行编程的极佳支持,从而更好地利用大量的分布式和多核的计算机(这个特性是Go语言最强有力的部分,不仅支持了日益重要的多核与多处理器计算机,也弥补了现存编程语言在这方面所存在的不足)编译和链接到机器代
2020-12-17 09:48:37
350
原创 kata containers调研
极客时间-47简介安全问题的唯一正解在于允许那些(导致安全问题的)Bug发生,但通过额外的隔离层来阻拦住它们。 ——LinuxCon NA 2015, Linus Torvalds不论是gVisor还是Kata Container, 其实现的本质,是给进程分配一个独立的操作系统内核,从而避免让容器共享宿主机的内核。这样,容器进程能看到的攻击面,就从整个宿主机内核变成了一个极小的、独立的、以容器为单位的内核。从而有效解决了容器进程发生“逃逸”或者夺取整个宿主机的
2020-12-16 14:39:00
948
原创 集合框架Review
准备刷题之前,复习巩固一下Java集合框架的内容。菜鸡如我,天天在看语法。。这样不得行哈哈目标了解Java集合框架体系结构;会使用ArrayList存取数据,会使用LinkedList存取数据(重点);了解ArrayList与LinkedList的区别;掌握Set存储数据的特点;会通过迭代器和增强型for遍历Set;会使用Map存取数据,掌握Map常用方法,掌握遍历Map;掌握泛型的好处及使用;掌握Collections的使用;备注:集合框架体系结构归纳为图,总结哪些是接口,哪些.
2020-12-14 23:41:01
250
1
原创 Cilium是如何防止常规网络攻击的?
最近一个影响许多Kubernetes CNI组件的漏洞被发现,这个漏洞通过让攻击pod发送假冒的IPv6 *“Router Advertisement”*数据包给主机工作节点,导致该节点将所有的IPv6网络流量路由到攻击pod(即“中间人攻击”)。幸运的是,对于Cilium的使用者,由于Cilium提供了许多内置默认的安全特性,其生产环境并没有受到该漏洞的影响。在这篇博文中,我们将讨论Cilium的默认特性是如何自动地防护常见类型的网络攻击的。在我们深入之前,先看看有关IPv4和IPv6的基础知识,以及它们
2020-11-13 12:19:20
516
原创 同主机容器基于XDP的连通性实验
XDP原理介绍受到Bastion论文的启发,我们尝试基于XDP来实现同主机上两个容器之间的端到端转发。XDP全称为eXpress Data Path, 是一种内核网卡上的Rx-hook,支持在网卡驱动上执行用户编写的eBPF程序,优点包括:在接收到数据包之后能够立即对其进行处理;内核还没有为数据包分配skb缓存,开销低。补充:以下内容参考Veth XDP: XDP for containers网卡驱动需要做一些修改(加入hook点)才能支持XDP(Native XDP),它的缺点是需要选择支持XD
2020-11-10 15:38:16
3052
2
原创 算法作业-分治
091M4041H - Algorithm Design and AnalysisAssignment 1Notice:For problem 1-6, you should at least do the following things:Describe your algorithm in natural language AND pseudo-code;Draw a “subpr...
2020-11-08 19:45:20
618
原创 一小时搞定Git命令与Gayhub使用
参考廖雪峰大神的博客:)创建版本库初始化一个Git仓库,使用git init命令。添加文件到仓库,分两步:使用命令git add <file>,注意,可反复多次使用,添加多个文件;使用命令git commit -m <message>要随时掌握工作区的状态,使用git status命令。如果git status显示有文件被修改过,用git diff可以查看修改内容。版本回退HEAD指向的版本是当前版本,当修改HEAD指向时会更新工作区文件。因此Git允许我们.
2020-11-07 00:19:12
1050
原创 XDP-内核可编程数据包处理方案
论文:《The eXpress Data Path: Fast Programmable Packet Processing in the Operating System kernel》大纲高速数据包处理的挑战XDP设计性能评估XDP应用总结高速数据包处理的挑战高速数据包处理How to drop 10 million packets per second解决方案kernel bypass: DPDK, 完全绕过内核协议栈,由专门的网络应用程序操作网络硬件,并为数据包处理任.
2020-10-29 10:58:12
4359
3
转载 操作系统篇-浅谈实模式与保护模式
一、实模式a.那究竟实模式是什么呢?在计算机上面,实模式存在的时间非常之短,所以一般我们是感觉不到它的存在的。CPU复位(reset)或加电(power on)的时候就是以实模式启动,在这个时候处理器以实模式工作,不能实现权限分级,也不能访问20位以上的地址线,也就是只能访问1M内存。之后一般就加载操作系统模块,进入保护模式。处理器8086 有 20 根地址线(不清楚8086的童鞋,可以自行百度,这可处理器非常有名,资料也很多),可以寻址 1MB 内存。但是,它内部的寄存器16 位的,无法在程序中访问
2020-10-26 20:00:48
364
原创 Docker初探之基本使用篇
Docker入门文章目录Docker入门一、为什么要用Docker二、基本概念镜像容器仓库三、镜像加速四、Docker常用命令帮助命令镜像命令容器命令常用其他命令后台启动容器查看日志查看容器中的进程信息查看镜像的元数据进入当前正在运行的容器容器内文件拷贝到主机目录一些实践配置nginx配置tomcatcommit镜像五、总结六、参考一、为什么要用Docker容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高,因此相比于传统的虚拟机技术,一个相同配置的主机能够运行
2020-10-11 18:47:44
223
1
原创 XDP/BPF Github教程
参考:xdp-tutorialbasic01主要介绍了如何编写简单的xdp程序以及通过libbpf库或者iproute2将xdp程序加载到内核并将内核代码挂载到指定的网络接口上。Simple XDP code:SEC("xdp")int xdp_prog_simple(struct xdp_md *ctx){ return XDP_PASS;}section本身的作用就是来自汇编中的声明,汇编每一段开头都有不同的声明,表示接下来这一段的内容是什么。如下图所示,BP.
2020-09-28 17:31:33
4852
原创 eBPF/sockmap实现socket转发offload
通过代理服务器在两个TCP接连之间转发数据是一个非常常见的需求,然而这个代理服务器也是整条路径中的瓶颈之所在,代理服务器的七层转发行为极大地消耗着单机性能,所以通过代理服务器的七层转发优化,是一件必须要做的事情。*eBPF能否将代理程序的数据转发offload到内核呢?*如果可以做到,这就意味着这个offload可以达到和XDP offload相近的功效。在kubernetes环境下通过代理来执行L7策略代理(比如Envoy)执行额外的L7策略(Health checks, service disco
2020-09-28 17:29:25
2251
原创 Go基础之切片
Talk is cheap, show me the code:)代码:package mainimport ( "fmt")// func main() {// var x = [3]int{1, 2, 3}// fmt.Println(arraySum(x))// }// func arraySum(x [3]int) int{// sum := 0// for i := 0; i < len(x); i++ {// sum += x[i]// .
2020-09-27 20:36:45
115
原创 BPF技术学习分享
什么是BPF程序:BPF is a highly flexible and efficient virtual machine-like construct in the Linux kernel allowing to execute bytecode at various hook points in a safe manner.BPF程序 ----LLVM+Clang----> BPF字节码 ----JIT----> BPF指令集;BPF架构采用一种新的虚拟机设计,包含支持x8
2020-09-23 10:08:13
1671
1
原创 方法论-十步学习法
《软技能:代码之外的生存指南》第一步 了解全局大多数开发人员在打开一本新书开始阅读的时候,他们对自己所不知的一无所知。他们将“未知之未知”留到后面去发现。这一方法的问题在于,你要么学非所需,要么力所不及。在深入探索某个主题之前至少需要对其有所了解,这一点非常重要。这样你才能弄清自己到底要学什么,找出最好的学习方式。在这一步,你要做的就是了解自己将要学习的主题的全局。这个主题宏观上什么样?你能从中学到足够丰富的知识以了解自己所不知道的吗?以及自己所不知道的有多少?途径:搜索引擎、博客、书籍介绍性章.
2020-09-12 12:13:13
361
原创 基于容器网络的安全容器方案Bastion
论文:BASTION: A Security Enforcement Network Stack for Container Networks文章目录背景知识容器网络论文内容摘要引言背景和动机容器网络容器网络挑战假设和威胁模型容器网络接口插件的限制BASTION设计BASTION MANAGER容器信息收集BASTION网络栈管理Network Visibility ServiceDirect ARP HandlerInter-container Communication HandlerGatewa.
2020-09-04 21:49:27
1030
1
原创 安全容器方案X-Containers
文章目录背景介绍**什么是容器?****容器与虚拟机有什么区别?****容器技术的不足有哪些?****已有的支持容器隔离的安全容器方案有哪些?**X-Container架构与实现**X-Container的架构是怎样的?****X-Container有哪些实现细节?**X-Container性能评估总结参考论文:《X-Containers: Breaking Down Barriers to Improve Performance and Isolation of Cloud-Native Contai
2020-08-21 13:21:46
1265
原创 理解胶囊网络
Internal data representation of a convolutional neural network does not take into account important spatial hierachies between simple and complex objects.(Hinton)For a CNN, a mere presence of these objects can be a very strong indicator to consider tha.
2020-06-06 15:59:42
326
原创 Dirty COW漏洞原理与简单利用
我将分为3个部分进行介绍,包括:漏洞的概述,漏洞的成因以及漏洞的利用。首先是漏洞概述:Dirty COW漏洞是一种发生在写时复制的竞态条件漏洞,它影响所有基于Linux的操作系统,包括Android,这个漏洞2007年起就存在于Linux内核中,直到2016年才被发现和修复。可以利用这个漏洞修改受保护的文件,也可以利用这个漏洞提权。Dirty COW漏洞是发生在写时复制的竞态条件漏洞,我们先看看什么是竞态条件和写时复制。竞态条件是指一个系统或者进程的输出依赖于不受控制的事件出现顺序或者出现时
2020-05-20 21:48:15
10264
4
原创 深度学习模型VGG
背景介绍这篇文章是以比赛为目的——解决ImageNet中的1000类图像分类和定位问题。在此过程中,作者做了六组实验,对应6个不同的网络模型,这六个网络深度逐渐递增的同时,也有各自的特点。实验表明最后两组,即深度最深的两组16和19层的VGGNet网络模型在分类和定位任务上的效果最好。作者因此斩获2014年分类第二(第一是GoogLeNet),定位任务第一。其中,模型的名称——“VGG”代表了牛津大学的Oxford Visual Geometry Group,该小组隶属于1985年成立的Robotics
2020-05-18 19:32:40
1324
1
原创 手把手实现CNN的卷积层及池化层
参考《深度学习入门》卷积层在二维图像上,卷积操作一方面可以高效地按照我们的需求提取图像的领域信息,在全局上又有着非常好的平移特性。接下来我们看卷积层的实现,im2col实现参见论文High Performance Convolutional Neural Networks for Document Processing,这里还有一篇讲的比较通俗的文章,可供参考:im2col方法实现卷积算法。下面我们来看如何使用纯python代码来实现卷积操作,这里我们使用im2col来进行优化,下面是im2c.
2020-05-15 23:40:28
1212
1
原创 机器学习系列笔记(3)——有监督学习方法
声明:该笔记参考国科大《模式识别与机器学习》课程及讲义,侵删。这篇文章包含回归、分类的有监督学习方法。回归问题中标签是连续值,任务就是找到一个函数fff能够拟合给定的数据及其标签,损失函数是平方损失,优化的目标是使得期望风险最小化。一、线性回归部分线性回归中什么是线性?即fff是关于参数向量www的线性函数(将xxx视作常数,对其次数不做约束,可以是1次、2次、3次)线性回归的目标...
2019-12-20 17:16:20
1376
原创 机器学习系列笔记(2)——多项式回归与过拟合
多项式回归与过拟合import numpy as npimport matplotlib.pyplot as pltX_simple = np.arange(1,11).reshape(-1,2)X_simplearray([[ 1, 2], [ 3, 4], [ 5, 6], [ 7, 8], [ 9, 10]])...
2019-12-17 19:29:39
399
原创 机器学习系列笔记(1)——统计机器学习基础
统计学习概论损失函数是指:针对单个具体样本,表示模型预测值与真实样本值之间的差距。损失函数越小,说明模型对于给样本预测越准确。常见损失函数有0-1损失函数、平方损失函数、绝对损失函数以及对数损失函数。经验风险:对所有训练样本都求一次损失函数,再累加求平均。即,模型f(x)f(x)f(x)对训练样本中所有样本的预测能力。Remp(f)=1N∑i=1NL(yi,f(xi))R_{emp}(f)...
2019-12-11 20:34:56
402
原创 基于概率的矩阵分解
基于概率的矩阵分解知乎链接频率学派: 他们认为世界是确定的, 他们直接为事件本身建模,也就是说事件在多次重复实验中趋于一个稳定的p值,那么这个p值就是该事件的概率. 他们认为模型参数是一个定值,希望通过类似解方程组的方式从数据中求得该未知数.这就是频率学派使用的参数估计方法—极大似然估计.这种方法往往在大数据量的情况下可以很好的还原模型的真实情况.贝叶斯派:他们认为世界是不确定...
2019-11-24 11:15:29
705
原创 Java后端书架
后端开发方向的一些推荐书籍,链接如下,可结合自身情况挑选书籍进行学习。江南白衣的后端书架-链接1;江南白衣的后端书架-链接2;下面这个是我科硕士大佬黄小斜"后端开发从小白到BAT的成长之路"博客链接,亦可进行参考(膜),另外他的博客上还有很多专栏文章可供学习:Java工程师修炼之路(从小白到BAT的两年学习历程);fighting!!!...
2019-09-16 00:13:34
432
华中科技大学计算机学院socket编程实验源代码
2019-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人