- 博客(82)
- 收藏
- 关注
原创 HTTPS 的通信加解密过程,证书为什么更安全?
证书中包含了服务器的公钥和其他身份信息。6.客户端和服务器使用对称密钥进行加密通信:客户端和服务器通过协商好的对称密钥进行加密和解密,这意味着数据传输过程中使用相同的密钥进行加密和解密,保证了数据传输的机密性和完整性。证书的使用能够确保服务器的身份和通信的安全性,增加了整个通信过程的安全性和可信度。4.客户端生成密钥:如果证书有效,客户端会生成一个用于对称加密通信的随机密钥,并使用服务器的公钥进行加密。5.服务器解密消息:服务器收到客户端发来的加密密钥后,使用自己的私钥对其进行解密,获取对称加密的密钥。
2023-12-13 14:02:52 422
原创 微博热搜信息使用Python抓取网页数据并写入文件
本文介绍了如何使用 Python 中的 Requests 和 BeautifulSoup 库来抓取网页数据,并将抓取到的数据写入文件。我们将详细说明代码实现步骤,并提供实用的示例
2024-02-14 12:26:57 469
原创 爬虫唐诗三百首
接下来,我们调用get_poem()函数来爬取每首诗的内容,并将其存储在本地的txt文件中。然后,我们使用Selenium的find_element()方法来获取诗歌内容的文本,并对其进行处理和存储。这样可以提高效率,并且不会干扰我们的工作。通过这个示例,我们可以看到如何使用Python编程语言和Selenium库来构建一个简单的网络爬虫,从古诗文网上获取唐诗三百首的全集。然后,我们使用Selenium库来模拟浏览器行为,访问古诗文网的特定页面,获取诗歌的内容,并将其存储到本地的txt文件中。
2024-02-13 19:34:53 957
原创 java垃圾回收算法
SWT:将jvm中内存冻结的一种状态!停止所有内存使用,所有进程线程停止运行,GC除外!native方法可以执行,底层用c++等与jvm无关!垃圾回收时,将这一块的存活对象全部拷贝到另一半,然后可以清除当前这一半内存。最坏结果:会产生大量内存碎片,总容量足够但是都是碎片空间,无法容纳!具体:标记后不会立即删除,而是将存活对象整理到一端,之后清除其他对象!标记清除法的基础上将存留对象移动到一块,空余多余空间!1:分代算法:划分为新生代、老年代。2:清除阶段:直接将垃圾内存回收。1:标记阶段:标记垃圾内存。
2024-01-12 15:25:13 341
原创 软件测试笔试理论知识点
3. 灰盒测试:例如,测试人员可以综合黑盒测试和白盒测试的特点,既考虑软件的功能需求,也考虑软件的内部结构和代码实现,以评估软件的功能、性能和安全性等方面的特性。4. 静态测试:例如,测试人员可以通过代码审查、文档检查、代码分析等方式,对软件的文档、源代码、设计图等静态资料进行分析和评估,以发现潜在的缺陷和错误。软件测试是指在软件开发过程中,通过对软件系统或应用程序的功能、性能、可靠性、安全性、易用性等方面进行检测和评估,以发现并纠正软件中的缺陷和错误,提高软件质量和可靠性的过程。
2024-01-12 15:23:41 390
原创 鸿蒙北向开发环境配置
下载完成后,双击下载的“deveco-studio-xxxx.exe”,进入DevEco Studio安装向导,在如下界面选择安装路径,默认安装于“C:\Program Files”下,也可以单击“Browse...”指定其他安装路径,然后单击“Next”。双击已安装的DevEco Studio快捷方式进入配置页面,IDE会进入配置向导,选择Agree,同意相应的条款,进入配置页。等待配置自动下载完成,完成后,单击'Finish',IDE会进入欢迎页,我们也就成功配置好了开发环境。
2024-01-12 15:17:04 420
原创 批量文件夹命名
img_directory = "文件所在文件夹路径"csv_file_path = "csv文件绝对路径"print("文件数量与新名称数量不匹配")print("路径不是文件夹")print("路径不是文件夹")print("路径不存在")print("路径不存在")# 检查文件数量和新名称数量是否匹配。print("文件名修改完成")# 构建新的文件路径。# 遍历目录下的所有文件。# 检查路径是否为目录。# 检查路径是否为目录。# 检查路径是否存在。# 初始化文件名列表。# 检查路径是否存在。
2023-12-25 16:07:05 339
原创 区块链基础原理和以太坊工作原理
10.以太坊引入了智能合约的概念,这是一种自动执行的合同,其中包含了预定义的规则和逻辑。总体而言,以太坊通过引入智能合约和以太虚拟机在区块链上执行代码,使得开发者可以构建更为复杂和功能丰富的去中心化应用。其工作原理在分布式网络中实现了智能合约的执行和交易的确认。EVM是一个在所有以太坊节点上运行的虚拟机,负责解释智能合约的字节码。当我们谈论区块链的基础原理时,我们指的是一种分布式账本技术,它采用去中心化的方式记录和验证交易。18.以太坊的存储是去中心化的,每个节点都保存了完整的区块链历史。
2023-12-18 12:25:22 497
原创 永久关闭win10更新
3、在高级选项中,您可以将“更新选项”中项目全部关闭,或者选择“暂停更新”,但此暂停更新至多只能暂停35天,这个方法不算永久^_^。3、然后,选中“Schedule Start”,并在“所选项”中。理模板”>“Windows组件”>“Windows更新”,然后。2、找到“Windows Update”选项并双击打开,将“启。1、按“Windows+\"键,打开Windows设置,再单。3、在“配置自动更新”窗口中,选择“已禁用”,再单。5、在弹出的窗口中,勾选“已启用”,单击“确定”。
2023-12-14 17:29:25 395
原创 机器学习-外汇预测
外汇预测在金融领域具有重要的意义,可以帮助投资者制定更好的投资策略,企业降低汇率风险,政府制定更合适的经济政策,同时也对国际贸易关系产生影响。本实验旨在通过实现线性回归模型,对时间序列数据(欧元和美元的兑换率)进行预测,并通过评价指标对模型进行评估。在实验中,我们使用Python编程语言,主要使用了pandas、numpy、scikit-learn、tabulate、matplotlib和torch等库。实验步骤包括数据准备、数据预处理、模型训练和评估等。通过不同的评价指标和MSE损失曲线,我们可以看出
2023-12-14 11:10:04 1149 1
原创 基于神经网络预测混凝土强度
1.13.1随着人工智能和深度学习技术的不断发展,神经网络在回归问题领域的应用也会不断拓展和深化。未来回归问题领域的发展方向可能包括以下几个方面:1. 多任务回归:将多个相关的回归任务结合起来进行联合学习,可以提高模型的泛化能力和效率,适用于多个相关任务共同出现的场景。2. 强化学习回归:将强化学习技术应用于回归问题中,可以通过优化奖励函数来实现更加精准和灵活的回归预测。3. 增强模型的可解释性:由于神经网络模型的黑盒性,导致模型的可解释性较差,不利于模型的应用和推广。
2023-12-14 11:03:41 1004
原创 C语言初学者如何发现/修复代码中bug
7.编写清晰的代码: 好的代码结构和注释可以减少bug的发生。使用有意义的变量名和合适的注释可以更容易地理解代码。10.使用调试工具: 学习使用调试器(如GDB)来逐步跟踪代码的执行,并观察变量的值。4.注意内存管理: C语言需要手动管理内存,确保分配和释放内存的操作都正确,以避免内存泄漏和段错误。2.编写清晰的代码: 使用有意义的变量名和注释,帮助自己和其他人更容易理解代码的意图和逻辑。输入的多样性有助于发现潜在的问题。通过不断练习和经验积累,你会逐渐变得更加熟练,并且更有效地发现和解决代码中的问题。
2023-12-14 10:55:54 367
原创 C语言的基本输入输出
当我们编写程序时,有时候我们需要与用户进行交互,让程序接收输入和展示输出。这就是所谓的输入输出。在C语言中,我们使用 这个头文件来进行输入输出操作。这些简单的例子希望帮助你理解C语言中的基本输入输出。 是C语言中的标准输入输出库。其中,常用的输出函数是 printf,而常用的输入函数是 scanf。输入是程序获取信息的方式,输出是程序向用户展示信息的方式。通过输入输出,我们可以让程序变得更灵活、更有用。%d 表示输出整数,%f 表示输出浮点数,%s 表示输出字符串。
2023-12-14 10:31:37 311
原创 C语言动态管理内存
当我们编写程序时,有时候我们需要一些灵活的存储空间,这时就要用到动态内存管理。通过这些例子,你可以更好地理解动态内存管理的概念,并且在实际编程中灵活地应用这些知识。计算机的内存就像一本大书,每个字节就像书中的一页。有时候我们需要灵活地增加书的页数,这就是动态内存管理的概念。静态内存是在写程序时就确定好的,无法改变大小。但是,动态内存就像弹性的书架,可以根据需要伸缩。4.在程序中,我们使用 free 函数来释放我们之前用 malloc 分配的内存。3.当你不再需要书架上的书时,记得归还,否则书架就会变满。
2023-12-14 10:27:25 291
原创 C语言中的指针
通过这些简单的例子,你可以开始理解指针是如何工作的。3.地址和值: ptr 存储的是 num 的地址,通过 *ptr 我们可以获取 num 存储的值。6.指针的加减整数: ptr++ 会将指针指向下一个位置,而 ptr-- 则是指向上一个位置。5.指针的加法和减法: 指针可以进行简单的加法和减法运算,用来访问相邻的内存位置。8.数组和指针的关系: 数组名本质上就是指向数组首元素的指针。9.指针和数组的运算: 指针可以被用于访问数组的各个元素。20.多级指针的概念: 指针也可以指向指针,形成多级指针。
2023-12-14 10:25:18 327
原创 C语言的文件操作
文件流是程序和文件之间的抽象概念,通过文件流,程序能够读取或写入文件中的数据。1.fopen() 函数用于打开文件,它需要文件路径和打开模式作为参数,并返回一个指向文件的指针。9.在读取文件时,使用循环结构和适当的条件语句检查文件结束标志,以防止读取超过文件大小。8.在打开文件后,使用条件语句检查文件指针是否为 NULL,以确保文件成功打开。2.fclose() 函数用于关闭文件,释放与文件相关的资源。7.rewind() 用于将文件指针重置到文件的开头。5.fseek() 用于设置文件指针的位置。
2023-12-14 10:12:35 378
原创 优秀的下载器IDM
3.断点续传: 如果下载过程中发生连接中断或程序关闭,IDM 具有断点续传功能,允许用户在中断的地方重新开始下载而无需重新下载整个文件。2.调度和队列: IDM 允许用户安排下载任务,创建下载队列,设置下载优先级,并在需要时进行调度。6.定时下载: IDM 具有定时下载功能,用户可以设置下载任务在特定时间或特定条件下开始。5.下载分类: 用户可以将下载任务进行分类,以便更好地组织和管理已下载的文件。IDM官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘。
2023-12-14 09:59:08 343
原创 OSPF协议你真的懂吗?
5.分层设计:OSPF采用了分层设计的思想,将网络拓扑划分为具有层次结构的区域,从而实现更好的可管理性和可扩展性。此外,OSPF还支持虚拟链路(Virtual Link)和多区域多协议(Multi-Area-Multi-Protocol)功能,以更好地适应复杂网络环境的需求。由于其广泛的功能和特性,OSPF成为了企业网络和大型互联网中的一种重要的路由协议选择。这种分区和区域化的设计减少了路由器之间的链路状态数据交换和计算量,提高了网络的可扩展性和效率。
2023-12-13 14:08:47 609
原创 RIP协议你真的学会了吗?
当一个路由器收到一个路由更新消息时,它根据自己到达目标网络的距离与收到的距离进行比较,选择更短距离的路径。然而,由于其限制和性能特征,当面对大规模网络或需要更高性能和灵活性的场景时,通常会选择其他更先进的内部网关协议(IGP),如OSPF(开放最短路径优先)或IS-IS(中间系统到中间系统)。6.RIP版本:最初的RIP协议是RIP版本1(RIPv1),后来又发展出RIP版本2(RIPv2)。距离向量是指每个路由器根据从自身到目标网络的距离(通常以跳数表示)来选择最佳路由路径的一种方式。
2023-12-13 14:07:12 401
原创 静态路由实现原理
静态路由的实现原理非常直观简单。目标网络指示要访问的目标网络的IP地址范围,子网掩码用于确定目标网络的边界,下一跳路由器是指在到达目标网络之前数据包需要经过的路由器。4.查找下一跳路由器:一旦找到与目标IP地址匹配的目标网络,路由器将查找该目标网络对应的下一跳路由器。2.数据包到达发送方路由器:当数据包到达发送方路由器时,路由器会检查其目标IP地址,并根据路由表中的配置进行查找。6.下一跳路由器处理:下一跳路由器重复上述步骤,查找匹配的目标网络和下一跳路由器,直到数据包到达目标网络。
2023-12-13 14:05:33 377
原创 C语言必背程序1-5
C语言入门算法必备这个程序通过使用嵌套的两个循环,外层循环控制行数,内层循环控制每行的乘法表达式的个数。程序从1乘1开始,逐渐增加行数和乘法表达式的个数,直到打印出9乘9的乘法表。下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,请在空白处完善程序这个程序在原始的随机输入数组基础上,通过函数实现了将数组逆时针旋转90度的功能。具体实现是创建一个临时数组,并按照逆时针旋转的规则将原始数组
2023-12-13 10:23:44 814
原创 你真的知道“中间人攻击吗?”
4.隐藏攻击:为了成功进行中间人攻击,攻击者需要隐藏其存在,使双方不知道其通信被中间人监听或篡改。2.伪造身份:攻击者冒充一方(通常是服务器)与另一方进行通信,并向双方发送伪造的证书或公钥,使双方相信正在与合法的实体进行通信。攻击者可以选择转发原始的通信内容,以避免引起双方的怀疑,或者更改通信内容以实施欺骗或发动其他攻击。中间人攻击(Man-in-the-Middle Attack,简称MitM攻击)是一种针对通信过程中的数据传输进行的攻击,攻击者将自己插入到通信双方之间,窃听或篡改双方之间的通信内容。
2023-12-13 10:10:12 328
原创 HTTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)
总结来说,HTTPS是HTTP的安全版本,通过使用SSL/TLS加密传输数据和进行证书身份验证,保证了数据的安全性。证书包含了服务器的公钥,用于建立加密连接,从而确保客户端与服务器之间的通信是可信的。12.身份验证:证书中包含了服务器的公钥,并经过CA(Certificate Authority,证书颁发机构)签名,客户端可以使用这个证书验证服务器的身份,并确保与合法的服务器进行通信。5.客户端验证服务器证书的有效性,确认服务器的身份和公钥,并生成一个用于加密通信的临时对称密钥。
2023-12-13 10:08:40 869
原创 C语言十个练习题
6、编写函数实现冒泡法排序,要求采用数组作为函数参数实现。7、编写函数夹现选择法排序,要求采用数组作为函数参数实现。8、编写函数实现两个数据交换,要求采用指针作为函数参数实现。2、编写函效求出10!10、编写一个函效,实现对a、b、c3个整数按大小顺序,在主函数输出排序后的结果。9、编写函数实现3X3数组的最大值与最小值查找,并在主函数中输出。3、编写函数实现10个元素数组的平均值,并在主函数输出。4、编写函数实现圆面积计算,并在主函效中输出结果。5、编写函数实现圆柱体积计算,并在主函数输出结果。
2023-12-06 17:00:59 372
原创 数据结构之队列
队列是一种常见的数据结构,遵循先进先出(FIFO)的原则。在队列中,新元素被添加到队列的末尾,而从队列中移除元素发生在队列的头部。队列的实现可以基于数组或链表,其主要操作包括入队、出队、查看队首元素和获取队列长度。队列在广度优先搜索、线程池和缓冲区管理等场景中有广泛应用。掌握队列的基本操作和应用场景,有助于更好地理解和运用这一简单而强大的数据结构。
2023-11-16 18:20:41 35
原创 数据结构之顺序表
而链表中的元素在内存中是通过指针连接起来的,每个元素包含一个值和指向下一个元素的指针,通过遍历指针链表可以访问元素。常见的线性表有顺序表和链表。链表则使用指针来实现,可以动态地分配内存,插入和删除元素的时间复杂度较低,但访问元素时需要遍历链表。插入操作可以在指定位置插入一个新元素,删除操作可以删除指定位置的元素,查找操作可以根据值或位置查找元素,修改操作可以修改指定位置的元素的值。线性表中的数据元素按照顺序排列,每个元素都有一个前驱元素和一个后继元素,除了第一个元素没有前驱元素,最后一个元素没有后继元素。
2023-11-16 18:18:04 26
原创 Java面试基本考点
Arrylist基于数组实现,用下标访问 支持随机访问 连续存储扩容机制:数组长度固定,长度超出后再插入新的数据需要新建数组,将老数组数据拷贝到新的数组,不是尾插会涉及元素的移动,尾插法设置好初始化容量,性能可以极大提升,甚至超过LinkListLinkList:基于链表,存储在分散的内存中,适合数据的插入删除操作,不适合查询遍历必须用iterator不能用for循环因为每次放循环内用get(i)都会对list遍历性能消耗极大此外尽量不用indexof,当其结果为空时会遍历整个列表。
2023-09-17 22:21:46 38
原创 注解和反射
实例化对象------------->利用getClass()方法--------------->获取该对象完整的包类信息。object类定义了getclass 返回值为Class类,则为反射的源头 --------------->也就是。:1----------方法区---->可被所有线程共享,包含所有的class和static变量。引入对象类包------->通过new 实例化对象---------->获取实例化对象。初始化:JVM负责初始化--->类构造器-->构造类信息并不是构造类对象。
2023-09-17 22:20:49 31
原创 常用Raid分类及区别
Raid磁盘阵列:将多块独立的物理硬盘,组合为一个容量巨大的硬盘,利用多个硬盘并发读写数据提高工作效率,通过存储一些冗余数据,提高硬盘的存储能力。
2023-09-17 22:18:53 611
原创 ARP 协议和Https 协议
数据传输的可靠性是通过数据链路层和网络层的点对点和传输层的端对端保证的。端到端与点到点是针对网络中传输的两端设备间的关系而言的。端到端通信是针对传输层来说的。它是一个网络连接,指的是在数据传输之前,在发送端与接收端之间(忽略中间有多少设备)为数据的传输建立一条链路,链路建立以后,发送端就可以发送数据,知道数据发送完毕,接收端确认接收成功。也就是说在数据传输之前,先为数据的传输开辟一条通道,然后在进行传输。从发送端发出数据到接收端接收完毕结束。点到点通信是针对数据链路层或网络层来说的。
2023-09-17 22:17:03 105 2
原创 如何解决哈希冲突
哈希冲突是在哈希表中多个键映射到同一个桶的情况。为了解决哈希冲突,常见的方法包括链表、红黑树、开放寻址法和虚拟桶。链表通过在桶中存储具有相同哈希码的键值对,但在冲突较多时性能下降。红黑树在链表长度超过阈值时转换链表为树,提高性能。开放寻址法通过探测序列在其他可用桶中存储冲突的键值对。虚拟桶将多个桶组合成一个逻辑桶来处理冲突。除了这些方法,还有拉链法,其中每个桶都是一个独立的链表或其他数据结构。选择适当的解决冲突方法取决于负载因子、冲突率、性能需求和空间利用等因素。每种方法都具有优点和限制,需要根据具体情况进
2023-09-03 20:46:27 201
原创 哈希函数的原理是什么
HashMap使用哈希函数将键的哈希码映射到哈希表中的桶,以实现高效的数据存储和查找。哈希函数将键的哈希码转换为数组索引,并处理哈希冲突。哈希冲突可能发生在多个键映射到同一个桶的情况下,HashMap使用链表或红黑树来解决冲突。一个好的哈希函数能够均匀地分布键值对,减少冲突,提高HashMap的性能。自定义类作为键时,需要正确重写`hashCode()`和`equals()`方法以确保正确的哈希码生成和冲突处理。
2023-09-03 20:42:53 100
原创 java的HashMap
摘要:HashMap是Java中的一种数据结构,它实现了Map接口,并且基于哈希表(Hash table)来存储和管理键值对数据。它提供了快速的插入、删除和查找操作,并且具有良好的性能。HashMap内部通过一个数组来实现,数组中的每个元素称为桶(bucket),每个桶可以存储一个或多个键值对。通过哈希函数将键映射到相应的桶,实现高效的数据存储和查找。HashMap使用键的哈希码来确定键值对在哈希表中的位置,并使用链表或红黑树解决哈希冲突。插入、删除和查找操作的平均时间复杂度为常数。然而,哈希冲突较多时,
2023-09-03 20:40:45 123
原创 java反射
Java的反射(Reflection)是指在运行时动态地获取和操作类的信息,包括类的字段、方法、构造函数等。通过反射,可以在编译时未知的情况下,在运行时检查、获取和修改类的属性和方法,以及调用对象的方法。可以使用Method对象的invoke()方法来调用方法,可以传递参数并获取返回值,甚至可以调用私有方法。2. 获取类的信息:通过Class对象,可以获取类的各种信息,如类的名称、修饰符、字段、方法、构造函数等。1. 获取Class对象:通过反射,可以获取类的Class对象,用于表示和操作类的信息。
2023-09-03 20:35:32 20
【STM32单片机】贪吃蛇游戏设计
2023-12-13
自动化文件夹脚本程序,批量创建文件夹
2023-12-13
Typora是一款Markdown编辑器和查看器
2023-12-12
微博信息爬虫exe文件,下载打开双击运行即可
2023-12-05
java基础的注解和反射的相关知识点总结
2023-09-06
基于java的功能记事本程序
2023-08-15
javaweb前端相关入门关于变量的简单知识
2023-08-10
软件测试笔试理论知识点
2023-07-11
linux常用命令以及服务器工作中常用命令
2023-07-10
基于神经网络的外汇预测
2023-07-10
NAvicat用到的工具
2023-07-10
Windows使用记录查看工具
2023-07-10
数据恢复工具大家可以下载试试
2023-07-10
python基础学习+基础pdf文件
2023-06-08
分区助手,诸位c盘很小的C盘杀手,这个很好用免费的快下载
2023-05-26
混凝土强度预测 python 简单小项目
2023-05-26
数据库音乐管理系统很简单很low
2023-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人