基于 eBPF 的入侵检测机制

1 月 5 日
阅读 6 分钟
315
BPF(Berkeley Packet Filter)是一种数据链路层原始接口,用于收发原始链路层封包。1992 年,Steven McCanne 和 Van Jacobson 提出了一篇名为《BSD 数据包过滤:一种新的用户级包捕获架构》的论文,详细描述了他们如何在 Unix 内核中实现网络数据包过滤。BPF 在数据包过滤方面引入了两项重大创新:一种新的虚拟机(VM)...

零信任技术思考

2023-05-16
阅读 6 分钟
1.6k
当今互联网时代,随着数据泄露和网络攻击的不断增加,安全问题已经成为了一项重要的考虑因素。传统的网络安全策略通常是通过防御外部威胁来保护网络。然而,这种方法已经无法满足当今复杂的安全风险。

云原生安全端上能力建设

2023-03-06
阅读 3 分钟
745
云原生技术在各大公司的落地如火如荼,研发模式和基础设施都发生了很大的变化,新的 Kubernetes 和容器技术正逐步取代传统的物理机和虚拟机。在云原生架构的演变过程中我们发现也带来了一些新的风险和挑战,包括容器网络安全、容器逃逸、镜像安全等多个方面。为保障业务上云安全,一方面是要分析解决新的安全风险,另一...

HIDS 常见检测原理

2023-03-03
阅读 5 分钟
2.2k
反弹 shell 的本质是把 bash 或 sh 进程的输入输出重定向到 socket,在 socket 中获取 stdin[0],stdout[1] 和 stderr[2] 输出到 socket。因为进程通信有较高的复杂性,所以 bash 的输入输出可能是一个 pipe。

Python 网络编程之 UDP 协议

2018-05-28
阅读 3 分钟
7.7k
TCP 的可靠体现在传输数据之前,会有三次握手来建立连接。在数据传完后,还会断开连接用来节约系统资源。在数据传递时,有确认机制、重传机制、拥塞控制机制以保证传输的可靠性,但这些机制都会消耗大量的时间和系统资源,每个连接都会占用系统的 CPU、内存等硬件资源,所以也导致 TCP 容易被人利用,比如 DDOS、CC 等攻...

WebSocket 通信过程与实现

2018-04-28
阅读 7 分钟
46.2k
WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输。但它跟 HTTP 没什么关系,它是基于 TCP 的一种独立实现。

Socket 通信原理

2018-03-14
阅读 4 分钟
24.2k
Socket 就像一个电话插座,负责连通两端的电话,进行点对点通信,让电话可以进行通信,端口就像插座上的孔,端口不能同时被其他进程占用。而我们建立连接就像把插头插在这个插座上,创建一个 Socket 实例开始监听后,这个电话插座就时刻监听着消息的传入,谁拨通我这个“IP 地址和端口”,我就接通谁。

Python语法糖——遍历列表时删除元素

2016-10-19
阅读 1 分钟
44.9k
Python的for可以遍历一个List,但是在遍历的过程中删除元素常常会得到意想不到的结果甚至程序出现异常,例如: {代码...} 输出: [1, 1, 2, 8, 3, 2, 5, 0, 2, 6] 这段代码的本意是想删除列表中元素为 0 的项,但实际跑起来并不是那个结果。 再看下面这个例子,利用索引来遍历删除列表中的元素: {代码...} 输出: Index...

Python数据结构——AVL树的实现

2016-09-30
阅读 6 分钟
8.5k
既然,我们已经证明,保持 AVL 树的平衡将会使性能得到很大的提升,那我们看看如何在程序中向树插入一个新的键值。因为所有的新键是作为叶节点插入树的,而新叶子的平衡因子为零,所以我们对新插入的节点不作调整。不过一旦有新叶子的插入我们必须更新其父节点的平衡因子。新叶子会如何影响父节点的平衡因子取决于叶节点...

Python语法糖——for/else循环语句里的break

2016-04-09
阅读 1 分钟
16.7k
我们在if里添加了一个break,这是因为else是在for后执行的,但只有for循环正常退出时才会执行else语句(不是由break结束循环)。而当循环是由break语句中断时,else就不被执行。

Python数据结构——AVL树的基本概念

2016-02-12
阅读 2 分钟
7.3k
在上一节中我们讨论了建立一个二叉搜索树。我们知道,当树变得不平衡时get和put操作会使二叉搜索树的性能降低到O(n)。在这一节中我们将看到一种特殊的二叉搜索树,它可以自动进行调整,以确保树随时都保持平衡。这种树被称为AVL树,命名源于其发明者:G.M. Adelson-Velskii 和 E.M. Landis。

Python数据结构——二叉搜索树的实现(下)

2016-02-02
阅读 12 分钟
6.8k
最后,我们把注意力转向二叉搜索树中最具挑战性的方法,删除一个键值(参见Listing 7)。首要任务是要找到搜索树中要删除的节点。如果树有一个以上的节点,我们使用_get方法找到需要删除的节点。如果树只有一个节点,这意味着我们要删除树的根,但是我们仍然要检查根的键值是否与要删除的键值匹配。在以上两种情况下,如...

Python数据结构——二叉搜索树的实现(上)

2016-01-08
阅读 6 分钟
7k
我们已经知道了在一个集合中获取键值对的两种不同的方法。回忆一下这些集合是如何实现ADT(抽象数据类型)MAP的。我们讨论两种ADT MAP的实现方式,基于列表的二分查找和哈希表。在这一节中,我们将要学习二叉搜索树,这是另一种键指向值的Map集合,在这种情况下我们不用考虑元素在树中的实际位置,但要知道使用二叉树来...

[译]学习Python编程的19个资源

2015-12-23
阅读 6 分钟
17.5k
用Python编写代码一点都不难,事实上它一直被赞誉为最容易学的编程语言。如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏的话,用Python来开发游戏的资源也有很多。这是快速学习这门语言的途径之一。

Python数据结构——二叉堆的实现

2015-12-16
阅读 6 分钟
13.4k
在前面的章节里我们学习了“先进先出”(FIFO)的数据结构:队列(Queue)。队列有一种变体叫做“优先队列”(Priority Queue)。优先队列的出队(Dequeue)操作和队列一样,都是从队首出队。但在优先队列的内部,元素的次序却是由“优先级”来决定:高优先级的元素排在队首,而低优先级的元素则排在后面。这样,优先队列的入...

Python数据结构——解析树及树的遍历

2015-12-04
阅读 8 分钟
18.9k
完成树的实现之后,现在我们来看一个例子,告诉你怎么样利用树去解决一些实际问题。在这个章节,我们来研究解析树。解析树常常用于真实世界的结构表示,例如句子或数学表达式。

Python数据结构——树的实现

2015-11-25
阅读 5 分钟
33.4k
在用嵌套列表表示树时,我们使用 Python 的列表来编写这些函数。虽然把界面写成列表的一系列方法与我们已实现其他的抽象数据类型有些不同,但这样做比较有意思,因为它为我们提供一个简单、可以直接查看的递归数据结构。在列表实现树时,我们将存储根节点作为列表的第一个元素的值。列表的第二个元素的本身是一个表示左...

[译]Java和Python——应该先学习哪种编程语言

2015-11-18
阅读 2 分钟
8.8k
Java和Python是目前两种非常流行且功能强大的编程语言。初级程序员常常感到困惑,最常被问到的问题就是应该学习Java还是Python,Python是不是容易上手,应该推荐给初学者学习什么样的编程语言等等。首先因为我是一个Java开发者,所以我会有偏见,我会建议你用Java入门,然后学习Python,但如果你向一个Python开发者问这...

Python数据结构——树的基本概念

2015-11-16
阅读 4 分钟
6.4k
我们已经学过了像栈和队列这样的线性数据结构,同时我们对递归也有了一定的了解,现在让我们来看看另一种常见的数据结构——树(Tree)。树在计算机科学里应用广泛,包括操作系统,图形学,数据库和计算机网络。树和真正的树有许多相似的地方,也包括根、树枝和叶子,它们的不同在于计算机中的树的根在顶层而它的叶子在底部。

HTML5与HTML4区别简介

2015-11-10
阅读 3 分钟
7k
移动互联网的快速发展,尤其是4G时代已经来临,加上微软在Windows 10中搭载了新的浏览器Edge取代了IE的地位,所以现在很多网站都开始抛弃IE朝着HTML5发展,PC端在不同浏览器之间的兼容性问题越来越少,在移动终端上用的甚是广泛,HTML5已成为浏览器标记语言的霸主,这是大势所趋。随着Adobe放弃移动Flash,微软亦将停止...

Python数据结构——内建数据结构

2015-11-10
阅读 3 分钟
3.5k
list 是一个可以在其中存储一系列项目的数据结构。list 的项目之间需用逗号分开,并用一对中括号括将所有的项目括起来,以表明这是一个 list 。下例用以展示 list 的一些基本操作:

Python数据结构——双端队列

2015-11-04
阅读 2 分钟
8.6k
双端队列(Deque),是一种类似于队列的元素的有序集合。它拥有两端,队首和队尾,并且元素保持在当前的位置。双端队列的一个不同点就是,添加和删除元素的位置不受限制。新元素可以在队首或者队尾添加。同样地,双端队列中的元素可以从两端弹出。在某种意义上,这种混合的线性结构同时具有栈和队列的性质。

六款好用的Python IDE

2015-11-02
阅读 2 分钟
15.6k
一个优秀的IDE,最重要的就是在普通文本编辑之外,提供针对特定语言的各种快捷编辑功能,让程序员尽可能快捷、舒适、清晰的浏览、输入、修改代码。对于一个现代的IDE来说,语法着色、错误提示、代码折叠、代码完成、代码块定位、重构,与调试器、版本控制系统(CVS)的集成等等都是重要的功能。以插件、扩展系统为代表的可...

Python数据结构——队列

2015-11-02
阅读 2 分钟
12.2k
队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于存储按顺序排列的数据,先进先出,这点和栈不一样,在栈中,最后入栈的元素反而被优先处理。可以将队列想象成在银行前排队的人群,排在最前面的人第一个办理业务,新来的人只能在后面排队,直到轮到他们为止。

Python数据结构——栈

2015-11-01
阅读 2 分钟
23k
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。咖啡厅内的一摞盘子是现实世界中常见的栈的例子。只能从最上面取盘子,盘子洗净后,也只能摞在这一摞盘子的最上面。栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构。