自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 目前比较排序所能够达到的最优计算复杂度

3)快速排序 (Quick Sort):快速排序在平均情况下的时间复杂度是 O(nlogn),虽然在最坏情况下是 O(n方),但通过合理选择主元(例如使用三数取中法),可以在实际中通常达到O(nlogn) 的性能。非基于比较的排序算法,如基数排序(Radix Sort)和计数排序(Counting Sort),可以在特定条件下实现线性时间复杂度 O(n),但这些算法不适用于所有类型的数据,并且不是基于比较的排序方法。具体来说,任何基于比较的排序算法,在最坏情况下都需要进行至少 log(n!

2024-06-04 14:38:02 162

原创 原始-对偶算法

通过对偶问题来求解原问题的最优解或者近似解,统称为原始-对偶算法。参考资料原始-对偶算法。

2024-05-12 23:26:14 545

原创 线性规划之对偶性质

参考资料:对偶性质

2024-05-12 10:40:34 244

原创 线性规划之对偶例子(矩阵博弈)

参考资料:对偶例子-矩阵博弈

2024-05-11 20:58:25 199

原创 线性规划之对偶是怎么来的

拉格朗日函数的形成就是目标函数和约束条件放在一起形成的效果。

2024-05-11 12:51:36 119

原创 线性规划之对偶概念

对偶性是线性规划最重要的内容之一。每个线性规划(LP1)必然有与之相伴而生的另一个线性规划问题(LP2),即任何一个求max z的LP1都有一个求min w的LP2。

2024-05-11 12:07:19 275

原创 线性规划之单纯形法

目前求解线性规划比较有效的一种方法就是单纯形法。所有系数转换为负数后,所有系数为0的时候,目标函数最大化。

2024-05-10 17:10:14 346

原创 DFI和DPI两种网络流量分析技术的对比

范围不同:DPI 关注单个数据包的内容,而 DFI 关注整个网络流的行为特征。粒度不同:DPI 对数据包进行深入分析,包括头部和有效载荷;DFI 对整个流量的行为进行分析,包括数据包的顺序、大小、频率等。应用场景不同:DPI 主要用于流量管理和网络安全,而 DFI 主要用于网络安全领域,特别是识别和应对复杂的网络攻击。

2024-05-06 11:41:44 787 2

原创 防火墙的特点

由于普通防火墙主要关注数据包的头部信息,并且规则集通常较为简单,因此性能相对较高,能够快速处理大量的数据包。普通防火墙通常不能深度检查数据包的内容,因此对应用层协议的细节支持有限,无法提供对应用层攻击的完全防护。普通防火墙主要在网络层(第三层)操作,根据数据包的源地址、目标地址、端口号和协议等信息进行过滤和控制。普通防火墙常用于边界防护,位于内部网络和外部网络之间,用于保护内部网络免受来自外部网络的攻击。普通防火墙不充当客户端和服务器之间的中间人,因此不涉及协议转换和应用层过滤功能。

2024-05-06 11:30:31 296

原创 包过滤防火墙、代理防火墙、状态检测防火墙的区别

包过滤防火墙:基于数据包的头部信息进行过滤,效率高,但不能检查数据包的内容。代理防火墙:充当客户端和服务器之间的代理,能够深度检查数据包的内容,提供更高级的安全性,但性能相对较低。状态检测防火墙:综合了包过滤和代理防火墙的优点,能够检查数据包的内容并维护连接状态,性能较包过滤防火墙稍低,但安全性更高。

2024-05-06 11:24:15 1239

原创 NAT和SOCKS4、SOCKS5的区别

NAT 是一种网络地址转换技术,用于将私有网络中的多个主机映射到单个公共IP地址。SOCKS4 和 SOCKS5是代理服务器协议,用于在客户端和服务器之间传输数据。SOCKS5比SOCKS4更安全,并且功能更丰富,包括TCP和UDP支持以及身份验证。

2024-05-06 10:47:32 503 1

原创 网站如何对访问者进行鉴别和授权以及面临的威胁

这些是用于授权的开放标准。OAuth用于授权第三方应用访问用户的资源,而OpenID Connect用于身份验证,使用户能够通过其提供商(如Google、Facebook等)进行登录。用户也应当采取良好的安全实践,如使用强密码、定期更改密码、不在不可信的网络上登录等。网站会将这些凭据与其数据库中存储的用户信息进行比对,以确认用户的身份。如果网站没有正确加密用户的密码或会话数据,攻击者可以通过拦截流量或访问数据库来获取这些信息。攻击者可能截获用户的登录信息或会话令牌,从而能够模拟用户并访问其账户。

2024-05-06 10:30:12 1124 1

原创 访问给定网站所涉及的网络协议

在Wireshark中,会看到HTTP或HTTPS的请求和响应,包括页面内容、图像、脚本等。如果你在Wireshark中捕获了电子邮件应用的流量,你会看到SMTP(用于发送邮件)、IMAP(用于收取邮件)或POP3(用于收取邮件)等协议的使用。在Wireshark中,会看到DNS请求和响应,显示了域名解析的过程。在Wireshark中,会看到TCP连接的建立、数据传输和连接的关闭过程。如果你访问的是一个HTTPS网站,你会看到TLS/SSL协议的使用。但具体的协议结构可能是加密的,难以直接解析。

2024-05-06 10:12:20 771 1

原创 使用域名会经过的协议

HTTP协议在建立连接后,发送HTTP请求,请求页面内容。服务器收到请求后,返回HTML页面及相关资源。首先,浏览器会将输入的域名发送给本地DNS服务器,或者DNS缓存服务器,以获取该域名对应的IP地址。一旦浏览器获得目标服务器的IP地址,它会使用TCP协议与服务器建立连接。这是通过三次握手来完成的。如果使用的是HTTPS协议,浏览器和服务器会进行SSL/TLS握手,以建立加密连接,保护通信安全。HTTPS协议在建立连接后,还会进行SSL/TLS握手,确保通信安全。

2024-05-05 21:29:45 146

原创 分治的思想及相关问题

主让i指向小于等于主元素部分的最后一个元素,j指向大于主元素部分的最后一个元素。

2024-04-26 09:00:23 195

原创 递归之生成排列和整数划分

算法的复杂度由if和else两部分决定,直觉上觉得是else起决定作用。输出语句共执行了nn!代表排序的总数,而每个排序有n个输出。所以复杂度由if决定为Θ(nn!

2024-04-13 18:08:28 191

原创 排序之冒泡、堆、插入和希尔

桶排序适用于元素分布均匀的场景。如果元素分布不均匀,会存在大多数元素都被分发到同一个桶中,则退化成比较排序。每次都从剩余的元素中取第一个元素,将其插入到前面已经排序好的序列中,使得插入后的序列依然是排序好的序列。将两个已经排序好的数组(如数组A和数组B)进行合并,合并后的数组依然是排序好的。为了减少比较次数,可以跳着比,比如每隔4个元素比较一次。比较排序所能达到的最优复杂度为O(nlogn)将元素组织成堆结构,然后每次取堆顶元素。如4路归并算法,和2路归并比较。插入排序是一种稳定排序。

2024-03-31 16:35:35 443

原创 数据结构之不相交集

是不是通过基于秩的合并就总能得到最优的不相交集?不一定:如有4个节点,先合并1和2,再合并3和4,不一定是最优的。

2024-03-30 21:17:57 360

原创 堆的特征和构建

任何一个父节点的值都大于等于其子节点的值,但节点的左右子节点并无顺序要求,且上层节点的值不一定大于下层节点的值。堆是一颗完全二叉树,堆所对应树的节点的排列必须是从上到下,从左到右的依次排列,否则将不构成堆。在最大堆中,根节点值最大,叶子节点值较小,从根到叶子的一条路径上,节点值是从大到小排列的。时间复杂度为O(nlogn),因为插入一个元素需要logn,总共需要插入n个构建元素。从一个空堆开始,逐步插入A中的每个元素,直到A中所有元素都被转移到堆中。直接对数据进行调整,如自上而下的调整。

2024-03-30 20:23:27 451

原创 时间和空间复杂度

在迭代(循环)的场景下,复杂度就是计算迭代次数最高的语句。为了求解问题的实例而执行的计算步骤所需要的内存。计算执行频率最高的语句作为算法的复杂度。用大写字母O来进行表示。用大写字母T来进行表示。

2024-03-30 13:47:48 180

原创 ElasticSearch入门教程原理1

基于Apache Lucene的开源分布式搜素引擎。

2024-02-19 16:55:15 1181

原创 JVM的内存结构和内存分配

Java栈是一个逻辑概念,特点是后进先出。一个栈的空间可能是连续的,也可能是不连续的。最典型的Stack的应用是方法的调用。退出该方法则对应的方法针被弹出。栈中存储的数据也是运行时确定的。Java堆内存的分配意味着以随意的顺序在运行时进行存储空间分配和收回的内存管理模型。堆中存储的数据常常是大小、数量和生命期在编译期时无法确定的。Java对象的内存总是在heap中分配。方法区是静态分配的,编译器将变量绑定在某个储存位置上,并且这些绑定不会在运行时改变常数池源代码中的命令常量。

2023-12-13 20:52:12 317

原创 版本控制及其常用系统

版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理。

2023-12-06 23:06:24 300

原创 Java程序员常用的自动化代码格式工具

Checkstyle是一个用于检查代码风格和质量的工具,同时也可以用来格式化代码。Spotless是一个通用的代码格式化工具,支持多种语言,包括Java。它可以与各种构建工具集成,如Gradle、Maven等。Eclipse集成开发环境(IDE)自带了代码格式化功能,可以通过配置文件定义代码风格,然后在保存文件时自动进行格式化。由Google开发的Java代码格式化工具,通过使用Google的代码风格规范,可以确保代码在整个项目中具有一致的格式。用户可以通过设置来定义代码风格,并在保存文件时自动应用格式。

2023-12-06 22:50:10 847 1

原创 计算机体系结构中计算机执行一条指令需要哪些步骤

这些步骤构成了指令执行的基本流水线,被称为经典的五段流水线(Fetch, Decode, Execute, Memory, Writeback)。在现代计算机体系结构中,可能会有更多的流水线阶段,也可能会引入超标量、乱序执行等技术来提高指令执行的效率。

2023-12-06 22:41:09 593

原创 中断是什么

我们把这个部分的工作称为I/O。CPU被打断前的进程在执行时是一句一句执行的,这时的中断称为精确中断,也就是被中断时,之前的指令全部完成,之后的都未开始,而与之相对应的就是非精确中断。中断时,中断控制器会在总线上放置一个地址,它指向的是一张表格,称为中断向量,里面的都是地址,也就是指针,指向应对不同中断情况的处理程序。中断机制的过程:假定CPU在执行其他的进程,同时设备控制器控制I/O设备,如硬盘和内存传输数据。如果中断控制器认为可以中断了,就通知CPU,这样CPU就阻塞当前的进程,开始处理中断。

2023-12-06 22:24:16 194

原创 内核态和用户态在虚拟内存地址空间上的区别

总体而言,内核态和用户态的虚拟内存地址空间在权限、访问控制和地址空间划分等方面存在显著的区别,这些设计有助于操作系统的稳定性、安全性和性能。

2023-12-06 21:56:18 346

原创 一些能在内核态运行用户态无法运行的命令

这些命令通常涉及对系统底层资源的管理,因此需要足够的权限来执行。在Linux中,超级用户(root用户)拥有最高权限,可以执行这些命令。

2023-12-06 21:45:54 230

原创 线程开销为何比进程小

线程共享同一进程的地址空间。因此,在多线程的环境中,线程之间可以更容易地共享数据和资源,像进程那样进行复杂的和。这降低了在进程间传递信息的开销。

2023-12-06 14:11:50 503

原创 MySQL千万级数据的表如何优化

优化查询count:表数据大时,查询表count会很慢。所以另建一个表来存两个数据,即这个表的名称和所对应的count数。分页查询优化:给表数据创建索引,因为在有索引的情况下条件查询会比较快,然后进行子查询。参考资料MySQL千万级数据的表如何优化。

2023-12-06 01:37:21 342

原创 extends为什么不能多重继承

多重继承指的是一个类可以有多个直接的父类。在某些其他编程语言中,比如C++,是支持多重继承的。

2023-12-05 23:53:02 208

原创 Java中protect关键字的作用

在Java中,protected 是一种访问修饰符,用于声明类的成员(字段、方法等)的访问权限。

2023-12-05 23:46:08 961

原创 volatile的可见性是如何实现的

volatile 是一个 Java 关键字,它主要用于确保多个线程能正确地处理共享变量。

2023-12-04 15:24:34 779

原创 线程间和进程间传递数据的区别

总体而言,线程适用于轻量级的任务,而进程适用于需要更严格的隔离和独立性的任务。选择线程还是进程取决于具体的应用场景和要解决的问题。

2023-12-04 15:18:50 235

原创 减少多线程竞争的技术

减少多线程竞争是为了提高程序的性能和避免因为竞争导致的性能下降或死锁等问题。

2023-12-04 15:11:46 318

原创 Java场景题:A想调用B但不想依赖B该如何做

首先,定义一个接口,其中包含a想要使用的方法。// 接口定义。

2023-12-04 14:51:55 366

原创 设计模式之装饰器模式

第一个称之为“构件”,Component,它是代表了产品需要哪些功能。ConcreteComponent可以理解为第一代机器人实现的功能。装饰器其实也是一个抽象的接口,首先它和机器人要有同样的功能,它们都继承了Component接口。由于需要把对象封装到内部,所以装饰器还关联使用了Component。下面确切的装饰器,就是我们说的壳子。

2023-12-04 14:03:58 158

原创 为什么TCP需要重传以及流量控制

流量控制的原因在于确保发送方不会发送过多的数据,以免超出接收方的处理能力。在数据传输之前,TCP通过三次握手建立连接,确保双方都准备好进行通信。当发送方发送数据后,如果在一定时间内没有收到确认,就会认为数据丢失,触发超时重传机制。即使网络状况良好,由于拥塞控制机制,TCP可能会减缓发送速率,导致需要进行重传。数据包在传输过程中可能会被乱序交付,接收方可能需要提醒发送方重传丢失的数据。,它会立即发送重复确认,告诉发送方需要重传的数据,而不必等到超时。,以防止发送方发送过多的数据导致接收方无法处理。

2023-12-04 13:13:34 318

原创 Set、HashTable和HashSet的区别

Hashtable是同步的,适合在多线程环境下使用。HashSet不是同步的,如果需要在多线程环境下使用,可以使用Collections.synchronizedSet方法包装HashSet。Set接口本身不提供同步性,但可以通过Collections.synchronizedSet创建同步的Set。

2023-12-04 13:03:03 391

原创 如何使用LinkedList实现栈和队列结构

【代码】如何使用LinkedList实现栈和队列结构。

2023-12-04 12:11:19 201

空空如也

空空如也

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

TA关注的人

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