- 博客(83)
- 收藏
- 关注
原创 记一实验:原始套接字占用已经连接的端口号
当本机的某个端口A已经和另一个电脑的某个端口B建立了tcp连接,如果使用原始套接字用该端口A发送一个SYN, 对方端口返回了SYN-ACK, 本机操作系统的协议栈会认为错误,然后发送RST。
2025-02-02 17:52:24
85
原创 2.5K的屏幕看1080P视频模糊问题
博主买了一台笔记本电脑,小新pro16 2023,CPU的型号是AMD Ryzen 7 7840HS with Radeon 780M Graphics。2.其实主要原因的因为显卡驱动,在AMD官网下载windows驱动,进入该软件后自动识别驱动,给出升级,升级后就解决了问题。但是打开B站发现看1080P的视频很模糊,有2个方法。
2024-12-30 16:01:40
570
原创 script代码是何时执行的
我认为从前向后执行,执行完成所有再绘制页面,如果script放在div后面,则script代码就知道DOM, 否则不知道(代码3示例)// 调用函数,阻塞3秒。// 调用函数,阻塞3秒。
2024-12-23 14:28:54
355
原创 pycharm的2句话:Add content roots to PYTHONPATH Add source roots to PYTHONPATH理解ModuleNotFoundError
如果是通过终端运行:我的t6.py文件是在E:\PyProjects\nmap_local\test目录下。发现少了E:\PyProjects\nmap_local这路径,其实这个才是我的项目根路径,我的项目目录下有util目录,如果我在t6.py文件中import util会报错。但是点击pycharm的运行按钮就可以!
2024-12-18 21:46:21
284
原创 typora让代码行能够隐藏(超出显示范围不换行)
在文件中加上代码,为什么加上!important呢,因为CSS的优先级原因。打开主题文件夹,选择对应主题的CSS文件。
2024-12-08 21:26:48
348
原创 tcp连接设置一个超时时间(没在操作系统层面设置)
await asyncio.open_connection(ip, port, limit=1024)代码是使用了操作系统的TCP连接,正常TCP连接的时候会有重试机制,当第一个SYN没有回复的时候,会再重试4次,每次间隔1s, 2s,4s, 8s,我觉得太慢了,我想就重试2次。tcp_retries1:设置第一次重试前的重试次数(默认值是 3 次)。tcp_retries2:设置最大重试次数(默认值是 15 次)。调整操作系统的 TCP 重传参数。以下回答是GPT给出的。
2024-12-07 22:49:37
768
原创 TCP连接的时候遇到的异常(目标端口没开放)
*1. 发送第一个SYN后没收到回复,隔时间 1s , 2s , 4s, 8s 重新发送4个SYN, 如果都失败,结束 **运行这段代码后,有2种情况【我在windows 11电脑尝试的】可能原因:主机的端口被防火墙屏蔽(这个时候开不开该端口都一样)可能原因:主机的端口没被防火墙屏蔽,但是上面没有运行任何服务。
2024-12-07 21:55:14
407
原创 算法时间复杂度和真实时间测算
2^N=1000000000, N 约等于 29.90 , 29还行,30,31,32都不行。一维度循环 1后面9个0。
2024-11-06 19:50:10
170
原创 记录java输入相关的实验,验证hasNext、hasNextLine、next和nextLine
第二行输入12然后输入几个空格然后再按下enter。第一行输入几个空格然后enter。
2024-10-28 22:37:50
113
原创 java中Scanner的nextLine和next方法
在读取过程中,如果输入中包含多个单词,它只会读取第一个单词,后面的内容会留在输入流中供后续方法使用。读取一个单词,即从输入流中读取第一个空白符之前的字符,空白符可以是空格、Tab、回车等。用于读取包含空格的整行文本,比如用户输入一句话时,它会将整句话读取出来。读取整行字符串,即从当前光标位置读取到回车符之前的所有字符。我的猜想是前面1,2,3,4解析完成后确实剩下“ 5”读取到换行符结束,并将该行的数据(包括空格)完整返回。思考,输入1 2 3 4 5加上enter,输出什么。
2024-10-28 21:22:01
704
原创 leetcode 1027 最长等差数列 题目的思考
对于第三个数,它的序列长度应该是【0,3】长度为2,第一个数也是3。对于第一个数3,它的序列长度就是他自己3。对于第二个数0,它的序列长度就行它自己0。如果序列是:3 0 3,枚举的公差是3。
2024-10-13 22:00:48
378
原创 docker启动的rabbitmq如何启动其SSL功能
在容器的/etc/rabbitmq/rabbitmq.conf文件中写下面的内容(如果没有该文件就自己创建一个),最好的方法是在宿主机创建一个rabbitmq.conf写好下面的内容,然后复制到容器的/etc/rabbitmq/rabbitmq.conf。使用docker的复制命令将ca.crt、server.crt和server.key文件复制到容器的/etc/server_ssl目录下(其实复制到哪都行,就是后面配置文件写的对应的文件路径)
2024-10-12 21:45:55
579
原创 为何四次挥手要等待2MSL
因为A并不知道它发送出去的ACK要多久对方才能收到,所以A至少要维持MSL时长的TIME_WAIT状态才能保证它的ACK从网络中消失。所以晃眼一看,A只需要等待1个MSL就够了,但仔细想一下其实1个MSL是不行的,因为在B收到ACK前的一刹那,B可能因为没收到ACK而重传了一个FIN报文,这个FIN报文要从网络中消失最多还需要一个MSL时长,所以A还需要多等一个MSL。参考文章:https://zhuanlan.zhihu.com/p/204988465。A主动关闭连接一方,B是被动关闭一方。
2024-10-10 12:58:04
212
原创 最长递增子序列的nlogn解法
看到文章中 https://blog.csdn.net/evildoerxmf/article/details/134266237。计算dp[5]的时候要考虑前5个数dp[0~4], 最后dp[5] = dp[1] + 1 = dp[0] + 1 = 2。当nums[i]d[len]时,将nums[i]加入d数组;dp[]值为1的数是2。dp[]值为2的数是5。dp[]值为3的数是7。
2024-10-10 11:06:00
227
原创 python引用计数
(2) dfs函数 step = 2函数中的x形参。(3) dfs函数 step = 1函数中的x形参。(4) dfs函数 step = 0函数中的x形参。(5) getrefcount函数函数中的x形参。py 3.11解释器输出对象a:5。
2024-10-03 01:08:20
336
原创 python深拷贝和浅拷贝的实验
浅拷贝会创建一个新对象,然后将原始对象中的所有引用复制到新对象中。这意味着,如果原始对象包含的是不可变类型(如整数、字符串、元组)的属性,那么浅拷贝将复制这些不可变类型的数据;但如果原始对象包含的是可变类型(如列表、字典、集合)的属性,那么浅拷贝将只复制这些可变类型的引用,而不是它们的内容。深拷贝会创建一个新对象,然后递归地复制原始对象中的所有子对象。这意味着,无论原始对象包含的是不可变类型还是可变类型的属性,深拷贝都会复制它们的内容,而不是引用。深拷贝(Deep Copy): 复制对象及其所有子对象。
2024-09-15 17:28:00
407
原创 LVS的加权轮询算法
权值较高的服务器比权值较低的服务器首先接收到新连接,权值较高的服务器比权值较低的服务器获得更多连接,权值相等的服务器获得相同的连接。一开始等于cw=0,最大公约数是1,cw减去最大公约数后是-1,cw被置为服务器中最大的权重4。cw减去最大公约数后是0,重新开始,cw被置为服务器中最大的权重4。cw相当于一个标杆,通过不断的降低标杆让权重小的服务器能被调度。第二轮cw减去最大公约数后是3,cw>=3的有。第三轮cw减去最大公约数后是2,cw>=2的有。第四轮cw减去最大公约数后是1,cw>=1的有。
2024-08-31 15:48:44
520
原创 vrrp协议,主备路由器的选举
这个过程确保了即使在所有备份路由器优先级相同的情况下,也能迅速且有效地选举出一个新的主路由器,从而保持网络的连续性和可靠性。需要注意的是,VRRP版本2允许通过配置认证来防止未经授权的路由器参与选举过程,这增加了选举过程的安全性。新的主路由器在选举完成后会主动发送ARP通告(ARP Gratuitous Message),以更新网络中设备的ARP缓存,从而通知设备新的主路由器的MAC地址与虚拟IP地址之间的映射关系。对于192.168.85.131和192.168.85.132配置是。
2024-08-29 11:32:01
1871
原创 linux的int80汇编代码举例
int 0x80 指令会触发一个软件中断,CPU 会根据中断向量号查找中断描述符表(IDT)中的对应条目,并跳转到相应的中断处理程序。int 0x80 是 x86 架构中的一条软件中断指令,它用于触发一个软中断(software interrupt),并且它是执行系统调用的主要机制之一。当执行 int 0x80 时,CPU 会保存当前的执行状态(程序计数器等),然后跳转到中断处理程序的地址。操作系统内核会处理这个系统调用,执行所请求的操作,然后将控制权返回给用户空间程序,并恢复之前的执行状态。
2024-08-17 21:30:42
428
原创 netsh int tcp show global查看TCP参数
enabled: 表示启用HyStart算法,这是一个用于改进TCP连接启动阶段的算法,可以更快地达到网络的最佳吞吐量。enabled: 表示接收段合并功能被激活,这可以减少传送到上层应用程序的中断次数,提高网络处理效率。enabled: 表示TCP快速打开功能被激活,这可以在某些情况下减少TCP连接建立的延迟。enabled: 表示在遇到网络拥塞时,TCP拥塞窗口会按照一定比例减少,而不是固定减少。enabled: 表示如果对端不支持TCP快速打开,将回退到正常的TCP连接建立过程。
2024-08-15 20:18:09
1347
原创 如果一个进程里面某个线程发生崩溃,会对进程产生什么影响?
进程的其他线程可以继续运行,但进程的功能可能会受到影响,尤其是如果挂掉的线程是关键任务线程。当 Linux 中一个进程的线程挂掉(崩溃或终止)时,进程的整体状态可能会受到影响,具体情况取决于线程的数量和类型,以及该线程执行的任务。总的来说,当一个线程挂掉时,虽然进程未必会立即终止,但其功能或性能可能会受到影响,具体取决于该线程的重要性和系统的异常处理机制。单线程进程:如果该进程只有一个线程,那么线程挂掉就意味着进程挂掉,整个进程将终止,状态会变为“已终止”或“僵尸”状态。
2024-08-15 00:05:54
735
原创 epoll 的边缘触发(Edge Triggered,ET)和水平触发(Level Triggered,LT)
水平触发(LT) 更加简单直观,但会在可读/可写状态持续存在时重复通知应用程序。边缘触发(ET) 更高效,但要求应用程序处理所有数据,避免数据遗漏。LT 适合大部分场景,而 ET 适合高性能应用,但需要更加细致的处理逻辑。
2024-08-13 20:42:32
390
原创 c语言使用select进行IO多路复用
红黑树:用于存储和快速查找所有注册的文件描述符。每次select调用前都要进行初始化【重新设置要监听的位置】,内核态会把数据拷贝回来会覆盖(用户态拷贝到内核态,内核态拷贝到用户态)epoll_create:创建一个 epoll 实例,返回一个 epoll 文件描述符,用于管理后续的 epoll 操作。但是依然存在用户态、内核态相互拷贝的问题,内核态会修改revents拷贝回用户态,在用户态需要改成0(重新初始化)epoll_wait:等待注册的文件描述符上发生的事件,返回发生事件的文件描述符列表。
2024-08-13 20:19:03
326
原创 python代码模拟服务器实验2:IO多路复用select
而不是文件描述符。在Unix-like系统上,文件描述符是一个整数,而在Windows上,select期望得到的是socket对象本身,而不是它们的文件描述符。实验代码的环境是在windows,和linux是有差别的。在Windows系统上,select模块需要传递特定的。客户端代码参考实验1。
2024-08-13 10:50:20
307
原创 python代码模拟服务器实验1:阻塞IO
例如,常见的值有 5、10 或者更高,这样可以确保服务器能处理更多并发的连接请求而不容易拒绝新的连接。总结:server_socket.listen(1) 中的 1 是连接请求队列的最大长度,决定了在服务器处理当前连接时,可以有多少其他连接请求被挂起等待处理。如果在这个时候有第三个客户端请求连接,由于队列长度已经达到 1,第三个请求可能会被拒绝,或者客户端会收到 ECONNREFUSED 错误。如果服务器正忙于处理当前连接,而另一个连接请求到来,那么这个新的连接请求将被放入队列中。
2024-08-13 00:06:39
209
原创 HCL实验1:两台PC通过交换机ping通
在PC_2的主机上ping PC_3的ip。2台PC机器的Ip地址必须在同一子网。PC_2的ip地址和子网掩码配置如下。PC_3的ip地址和子网掩码配置如下。
2024-07-31 22:42:49
709
3
python切片的问题
2023-03-20
在4次挥手的途中,客户端电脑突然关闭,服务器端会怎样
2023-02-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人