- 博客(16)
- 收藏
- 关注
原创 使用epoll处理多个TCP线程连接
epoll是 Linux 下的高效 I/O 复用机制,用于同时处理多个 TCP 连接。它比传统的select和poll更加高效,尤其在处理大量并发连接时表现优异。epoll的基本思想是通过事件驱动的方式监控多个文件描述符,当文件描述符上的事件(如可读、可写)发生时,epoll会通知应用程序进行处理。
2024-09-28 22:18:04
620
原创 C++中TCP服务端程序
socket套接字:表示通信的端点。就像用电话通信,套接字相当于电话,IP地址相当于总机号码,而端口号则相当于分机号码。指定通信的协议族,常见的有:- AF_INET:IPv4 协议。- AF_INET6:IPv6 协议。- AF_LOCAL 或 AF_UNIX:本地通信(同一台计算机上的进程间通信)。- AF_PACKET:底层网络通信,允许访问物理层,如以太网帧。指定套接字的类型,常见的有:- SOCK_STREAM:面向连接的字节流套接字(TCP),保证数据的顺序和可靠传输。
2024-09-28 21:52:22
2496
原创 C++线程池
/ 创建线程池,最小3个线程,最大10个线程,任务队列容量100。// 如果忙碌线程数少于存活线程数的一半且存活线程数大于最小线程数,减少线程。// 如果任务数量多于存活线程数且存活线程数小于最大线程数,增加线程。
2024-09-23 20:31:45
986
原创 python和C++实现冒泡排序,附带冒泡排序思想和时间复杂度分析
遍历arr数组n次(n为数组长度),第i次遍历为寻找数组中第i个最大元素。遍历过程中,每次都从第一个元素开始,两两比较。arr[1]arr[2]arr[2]arr[2]arr[3]arr[3]arr[3]arr[4]arr[4]arr[n-2]arr[n-1]nn-1arr[n-1]可以看出,每次都是去除最大值和后面元素比较,所以在遍历完后,arr[n-1]是该数组中最大元素。接下来进行第二次遍历:6. 先比较arr[1]和arr[2],将其中较大元素放到arr[2]的位置。7. 再比较。
2024-03-24 21:47:53
205
1
原创 python和C++实现快速排序,附带快速排序思想和时间复杂度分析
对于一个给定的数组arr,先随机选择其中的一个数,方便称呼,取名为key,然后将arr中所有元素与keykeyleftkeymiddlekeyrightleftright1.最佳情况和平均情况下的时间复杂度都为 O(nlogn)。2.最坏情况下,时间复杂度为O(n^2)。那么什么叫最坏的情况呢?我看许多文章说的不清晰,我花了一些时间才弄清除。我举个例子说明一下吧:假设输入的数组arr为。可以看出,这个数组已经排好序了。我设计了两种算法对于数组arr的情况来做解释:第一种算法将数组arr。
2024-03-24 21:25:06
261
1
原创 vim编辑器鼠标右键无法粘贴,而是进入insert visual模式的解决方法
可以看到第一个结果是在vim目录下,所以是vim的配置文件,对文件内容进行编辑。
2024-03-21 10:20:52
2222
1
原创 香橙派安装wiringOP-Python
会报错,报错内容是wiringpi.py中导入了_wiringpi,但是并没有这个库。根据手册中编译wiringOP-Python并将其安装到开发板的 Linux 系统中。找到下面这段代码,把“_wiringpi”改为“wiringpi”即可。可以打开wiringpi.py文件。
2023-08-03 10:32:52
619
4
原创 树莓派安装2.7版本的WiringPi库,2023.4有效
,然后传输到树莓派上面,再执行下面的代码,意思是:给其中的build文件添加可执行权限,然后切换到管理员权限,运行build文件进行安装。不方便上外网的,可以到百度云上下载:链接:https://pan.baidu.com/s/1kehaqw8GKeAJ6auhBqxZLg。新买了一块树莓派,结果上网搜索安装wiringpi库的方法都不行,记录一下自己的安装过程。安装完成后,可以输入gpio -v命令查看版本,安装成功会显示下图的信息。可以到github上下载代码(
2023-04-12 10:10:34
566
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人