- 博客(38)
- 收藏
- 关注
原创 如何在Linux用libevent写一个聊天服务器
如果成功连接后我们可以直接在listener回调函数里创建一个bufferevent缓冲区,并为每个缓冲区设置相应的读回调和事件回调,读回调是专门处理用户给服务器发送的指令,服务器通过指令执行登陆账号,添加好友,删除好友,注销账号,列出好友列表,发送信息的操作。那么如何储存用户数据呢,那自然是创建一个全局变量的Client类的数组的动态指针(在写代码时我一直想需不需要用链表,用链表在处理用户注销时很方便,但在初始化时可能很麻烦,所以我暂时没用链表)演示效果晚点发,要求上课了!废话少说,先看看思路。
2025-04-25 15:07:52
489
原创 Linux网络编程socket服务器端模拟实现
此时打开另一个端口,用nc命令连接服务器,输入hello,会返回HELLO,如图。socket(),创建socket套接字。accept(),阻塞客户端监听连接。listen(),设置监听上限,当程序运行时将在端口堵塞,如图下。server 服务器端主要流程。bind(),绑定ip和端口。用转换大小写字符串为例子。
2025-04-01 16:45:02
211
原创 Qt如何创建多个窗口在不依赖于创建多个qwidget和qmainwindow
首先在Qt designer完成自己第一个窗口的配置,后剪切第一个窗口的所有控件,再放入一个stackwidget控件,调整窗口大小后即可用stackwidget创建多个窗口。
2025-03-30 15:12:01
97
原创 linux系统编程循环创建子线程和读写锁区别
线程2不可能和线程3一起,因为写锁优先级高,而读锁1和3在他前面。读锁可多线程一起访问如读锁1和3,读锁4 5 2。读共享,写独占,写锁优先级更高。
2025-03-30 15:05:56
179
原创 QT小项目-简单的记事本
这次用的配置好了QT环境的vs2022编写,与之前有些不同,比如QT creator里,ui界面是用指针编写,在vs则变为结构体,其次,由于vs是用的MSVC套件,一般作用与windows系统,不考虑跨平台,如需跨平台则用QT creator编写,项目编写与QT creator区别不是很大,注意细节,第一次使用VS编写随便写个简单的项目。
2025-03-11 15:43:09
347
2
原创 qt小项目,简单的音乐播放器
问题:ui界面文件的spacer效果不是我所想的,可能还不太熟练spacer的使用,所以固定了窗口大小。主要所使用的知识:qt文件对话框和qfile的使用,qt媒体的配置和使用,qurl的使用。可改进点:没有添加播放器背景,可在paintevent重载,自行添加想要背景。
2025-03-07 15:19:56
1015
1
原创 文本搜索程序(Qt)
当前问题:如果给的文本例如:abcd efg,只搜索a时abcd会一起标红,或许是设置查找模式出了问题。解决方案:查看是否是查找模式设置出了问题,如不是,则可通过kmp字符串匹配修改查找方案。功能:可查找想要收索的关键字,找到则标红。
2024-11-28 18:10:00
421
原创 Leetcod编程基础0到1-基础实现内容(个人解法)(笔记)
for (i = 0;i++)for (;for (i = 0;i++)for (;
2024-08-13 17:00:30
921
原创 有n个人围成一圈,顺序排号。 从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
我的想法是先创建一个Person类包含自身序号和数字,在借助vector容器从而实现,人数和出局数字都经过宏定义来实现,提高代码移植性。
2024-07-30 18:04:31
243
原创 简单的搜索方式(c++)(stl容器)(初版)
输入面可搜索出相关食物,如输入面,输出面条,面包。假设我们有以下食物在搜索数据库中。1.初始化数据库复杂。
2024-07-14 21:31:46
275
原创 deque容器学习(c++)
vector对于头部的插入和删除效率低,尤其是当数据量过于大时deque对于头部的插入和删除的速度较快vector访问元素的速度会比deque快。
2024-07-04 17:04:08
226
原创 STL容器初学(String,Vector)
vector数据结构与数组非常类似,不同在于vector可以动态扩展(malloc,realloc???
2024-06-09 20:21:40
197
原创 初学STM32-LED流水灯及蜂鸣器的使用
实际上也是使用了固件库,但是不是使用固件库的函数,而是使用了固件库的定义,包括宏定义,结构体定义。和51的开发差不多,但因为32的寄存器太多,实际开发手动配置大量寄存器极其耗费时间,同时在没有注释的情况下可读性差,所以较少使用。HAL库模式:全称是Hardware Abstraction Layer(抽象印象层),相比于标准库更加深入的封装,有句柄、回调函数等概念(ps:有点类似Windows开发),因此相对于标准库模式有更好的可移植性(可在不同芯片的移植),但代价就是更多的性能损失。
2024-05-29 19:50:04
387
原创 int main(int argc,char* argv[])写法使用
使用vim编写c/c++代码时可以用int main(int argc,char* argv[])而非int main()编写,可以方便编写。再编译完后./my_program arg1 arg2 arg3。一般要输出自己的以数组1开始,数组0为程序名称。
2024-05-29 18:49:13
207
原创 如何用wsl2编写一个自动打开程序脚本
因为每次学习都要打开浏览器和vs 2022等一系列程序,很麻烦,所以可以运用wsl2启动后缀.sh的脚本文件。
2024-05-19 14:59:18
439
原创 本周学习总结
简单来说就是把父类的public内容放到子类的public,父类的protected内容放到子类的protected,父类的private内容放到子类private,如以下列子。因为父类和子类都是类,必然也少不了构造和析构函数,但处理顺序有点不同,这是我的一句话总结“先有爸爸后有儿子,白发人送黑发人”如以下列子。如果父类和子类有相同的函数或成员,一般调用是调用子类,如要调用父类加作用域即可。继承方式分为三种,1公共继承,2保护继承,3私有继承,即把父类的属性继承到子类的private里。
2024-05-12 18:04:52
372
原创 学习总结(4_8-4_15)
我们可以按照此图来写定时器程序,以T0定时器为例,图二是控制定时器模式,高四位为T1定时器,低四位为T0定时器,我要启用T0定时器则给前面高四位置1,设置第四位即可,GATE不用设置置0即可,CT为0时为定时器模式,所以CT为0,M1和M2是设置定时器模式,定时器有多个模式,如十六位自动重载,十六位,八位自动重载等,而T0定时器十六位常用,M1 M0 = 01:方式1,是16位定时器/计数器。连续存储:数组中的元素在内存中是连续存储的,也就是说,数组的所有元素在内存中是相邻的。8的点阵屏,相当于有8。
2024-04-18 17:30:31
1685
1
原创 Github的注册学习与使用
打开自己的储存文件夹会发现会有自己的储存库出现,进入储存库文件夹,可随意注册任意文件,以test.txt为例,首先创建test.txt,在此路径打开git bash,输入git add “test.txt”,然后再输入git commit -m “想要的备注”,然后根据此图。最右边为main或master,例如我是main则输入git push origin main即可把自己的文件传入的自己的github的储存库。找到ssh和pgh密钥,添加新的ssh密钥,把密钥复制进去即可,命名可随意。
2024-04-06 23:30:03
1240
2
原创 本周学习总结
138译码器可以控制数码管状态,图中ABC指的是二进制数,C为高位,A为低位,如点亮第三个数码管即LED6,而LED6对应的是Y5,即二进制5,那么得使得CBA二进制为5,即P24 = 1,P23 = 0,P22 = 1,第三个数码管即可点亮,那么如何显示数字呢?dp被称为段码,与前面不同,如果为高电平1才会点亮,结合前面的电路图,可知P0口控制段码,假设要显示数字6,则是b口为0,其余为1,即1011 1110,但给P0口赋值时得低位读写即0111 1101 十六进制为0x7D。共阳时,拉低电平点亮。
2024-04-05 19:01:45
1761
1
原创 小白C语言在visual studio中使用scanf函数时报错
2 使用scanf_s函数代替scanf函数,它可以防止可能的缓冲区溢出(不推荐,此代码仅vt编译器可用,其他编译器不一定能使用)报错原因:visual studio不支持scanf写法,认为此函数或变量不安全。
2023-09-09 22:27:50
361
1
原创 wsl安装时问题(个人向)
错误原因:未启用“适用于 Linux 的 Windows 子系统”可选组件方法:打开“控制面板” -> “程序和功能” -> “打开或关闭 Windows 功能”-> 选中“适用于 Linux 的 Windows 子系统”,或使用本文开头所述的 PowerShell cmdlet。
2023-08-08 21:51:30
1441
1
原创 如何安装wsl(win11)
打开powershell并输入dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart。
2023-08-08 21:45:51
132
原创 win10可用运行内存与实际不符处理办法(64位)
处理办法:拆开主机,有内存条A和内存条B,先把内存条B拆开单独上内存条A,开机,后关机把内存条A拆开单独上内存条B(两次都是插第一个内存槽),开机再关机,最后插上内存条A和内存条B开机即可。以知发生平台AMDcpu+AMD显卡 或 AMDcpu+n卡。发生原因不详(后补充)
2023-07-08 11:01:05
2582
原创 减肥小技巧
以下有几种运动适合减肥。一是妇孺皆知的跑步,虽然跑步不是一种最有效的燃脂运动方式,但它所受的限制较少,室内室外都可进行,运动时请佩戴好相关防备措施,但不建议体重高于190的人群,易对身体造成伤害。:人体的热量来源主要是日常吃的食物,包括三餐饮食、零食、饮料等等,因此控制自己的日常饮食,饮食以三餐为主,尽量不吃或者少吃零食和饮料,同时也需要保持结构多样化,蔬菜、水果、蛋白质、碳水化合物都需要有。如一桶水,想要里面的水变少一是减少其他途径的入水量(身体热量的摄入量),二是使桶里水变少(增加身体消耗的热)。
2023-07-08 10:46:27
157
原创 关于部署WSL遇到错误 0x80370102问题
重新启动Ubuntu即可,若依旧报错进入控制面板->程序->启用或关闭windows功能,勾选虚拟机平台选项,重启电脑即可。进入BIOS界面,启用虚拟化,结果如图。
2023-07-06 19:06:02
1077
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人