- 博客(64)
- 收藏
- 关注
原创 selenium快速入门
(2) class值重复的有很多,需要切片 console -> document.getElementsByClassName()元素定位有两个函数:find_element() 和 find_elements()(1) 通过精确链接文本找到标签a的元素[模糊文本定位](5) 通过任意类型定位:"[类型*=‘模糊值’]"(6) 通过任意类型定位:"[类型^=‘开头值’]"(7) 通过任意类型定位:"[类型$=‘结尾值’]"(4) 通过任意类型定位:"[类型=‘精确值’]"
2025-04-10 15:19:41
216
原创 常见的三种锁
互斥锁 Mutex 保证在任意时刻只有一个线程能够进入被保护的临界区。当一个线程获取到互斥锁后,其他线程若要进入临界区就会被阻塞,直到该线程释放锁。互斥锁是一种阻塞锁,当线程无法获取到锁时,会进入阻塞状态。应用场景上,互斥锁适用于临界区资源访问时间较长或存在阻塞操作的情况。
2025-03-09 20:51:07
220
原创 左值引用与右值引用
1.左值引用是对左值的引用;右值引用是对右值的引用(不过也有特例)const左值引用能指向右值,不过不能修改;右值引用通过std::move(v)可以指向左值声明出来的左值引用或者右值引用都是左值(int& lref = n, int&& rref = 20, lref和rref都是左值)2.左值引用与右值引用在功能上的差异(1)左值引用:左值引用或者可以避免对象的拷贝(2)右值引用:实现移动语义和完美转发。
2025-02-28 02:10:21
166
原创 C++11中function,lambda,bind
function用来描述函数对象的类型lambda表达式用来生成函数对象(可以访问外部变量的匿名函数)bind也是用来生成函数对象(函数和参数进行绑定生成函数对象)
2025-02-27 17:24:56
146
原创 虚函数、虚函数表、虚函数表指针
②继承的情况下,虚函数表指针赋值过程?类的不同对象,通常虚函数表指针是不一样的(拷贝构造/opertor=需要深拷贝)a.首先调用父类构造函数,把A的虚函数表的地址赋值给vptr。b.然后调用子类构造函数,把B的虚函数表的地址赋值给vptr。讨论两种情况:在磁盘(可执行程序)、在内存(运行状态)①类对象构造的时候,把类的虚函数表地址赋值给vptr。每个类只有一个虚函数(有虚函数的类)编译器编译的时候生成。
2025-02-26 23:13:19
218
原创 malloc和new的相关知识
⑥申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数,而new在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成空间中资源的清理。⑤malloc申请空间失败时,返回的是NULL,因此使用时必须判空,new不需要,但是new需要捕获异常。④malloc的返回值为void*, 在使用时必须强转,new不需要,因为new后跟的是空间的类型。注意3:malloc分配的是虚拟地址,使用时才会分配真实的物理地址(缺页中断)
2025-02-26 22:10:14
235
原创 【计算机网络】多路转接之poll
poll也是一种linux中的多路转接方案(poll也是只负责IO过程中的"等")解决:1.select的fd有上限的问题;2.每次调用都要重新设置关心的fd。
2024-11-24 04:19:21
279
原创 【计算机网络】多路转接之select
系统提供来实现IO = 等 + 拷贝 -> select()只负责等待,可以一次等待多个fdselect()本身没有数据拷贝的能力,拷贝要read()/write()来完成。
2024-11-24 04:18:01
456
原创 【操作系统】非阻塞IO
因为文件描述符默认都是阻塞IO,所以想要使用非阻塞IO,就要先把fd设置为非阻塞的可以用把文件描述符设置成非阻塞的基于fcntl,我们实现一个SetNoBlock函数将文件描述符设置为非阻塞。
2024-11-24 04:17:10
96
原创 【计算机网络】解决bind error
因为是服务器主动断开的,所以服务器要去维持TIME_WAIT状态,维持该状态期间,该端口依旧被占用,所以就无法绑定成功。首先要知道:四次挥手动作完成之后,主动断开连接的一方要维持一段时间的TIME_WAIT。服务器有时可以立即重启,有时候无法立即重启 — bind error。:使用setsockopt() 设置地址复用。
2024-11-22 03:18:48
397
原创 【计算机网络】IP协议
第一个:更多分片=1 && 偏移量=0、最后一个:更多分片=0 && 偏移量>0当前的起始位置 + 自身长度 = 下一个报文中填充的偏移量大小。
2024-11-20 23:02:32
367
原创 【计算机网络】TCP协议
TCP有这么多策略的原因就是要保证可靠性,同时又要尽可能的提高性能保证可靠性:校验和、序列号、确认应答、超时重传、连接管理、流量控制、拥塞控制提高性能:流量控制、拥塞控制、延迟应答、捎带应答。
2024-11-17 20:02:54
403
原创 【计算机网络】UDP协议
① 16位源端口号:自己的端口号② 16位目的端口号:对方的端口号③ 16位UDP长度:整个数据报(UDP报头+UDP有效载荷)的长度,最大64KB一个UDP最多传64KB的数据,如果要传的数据 > 64KB,那就将大数据分成若干个小数据④ 16位UDP校验和:检测数据在传输过程中出现的错误。
2024-11-17 20:02:15
424
原创 【计算机网络】Socket编程接口
套接字种类很多,例如:网络套接字、原始套接字、unix域间套接字三种套接字就要设计三套接口吗?不用,利用struct sockaddr复用同一套接口如果是网络套接字编程:使用socket相关函数时,传参传递的是 struct sockaddr_in如果是unix域间套接字编程:使用socket相关函数时,传参传递的是 struct sockaddr_un。
2024-11-11 23:36:39
412
原创 【操作系统】基于阻塞队列的生产消费模型
单生产单消费的情况下,我们只需要维护生产者和消费者之间的互斥和同步关系即可将阻塞队列封装成一个类:首先给出整体框架,接着会说明每一个类内函数的实现。
2024-10-29 03:07:31
99
原创 【操作系统】多线程
①进程地址空间 里面决定了进程能够看到的“资源”②页表决定 进程真正拥有“资源”的情況③合理划分 进程地址空间 + 页表,我们就可以对一个进程的资源进行分类。
2024-10-26 04:32:00
87
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人