title |
---|
Apriluestc's projects |
包括代码上传,分支管理,用户信息配置
URL:https://github.com/Apriluestc/2020/blob/master/blog/doc/%E5%85%B6%E4%BB%96/git%E5%91%BD%E4%BB%A4.md
VS2017 调试、gdb 调试,包含断点调试、单步调试、查看函数调用栈信息等
URL:https://github.com/Apriluestc/2020/blob/master/blog/%E9%A1%B9%E7%9B%AE/debug.md
URL:https://github.com/Apriluestc/op.im
本项目为 C++ 编写的多人聊天室,使用 UDP socket 进行通信,支持多人聊天、支持语音聊天
技术特点
- C++ STL
- 生产者消费者模型
- 多线程技术,多线程同步原语同步与互斥
- UDP socket 编程
URL:https://github.com/Apriluestc/web.d
【测试页】Apriluestc's pub
项目介绍
本项目为 C++ 11 编写的高性能 Web 服务器,使用状态机解析了 GET、POST 请求,可静态处理资源,支 持 HTTP 长连接、支持管线化请求,并实现了异步日志,实时记录服务器运行状态,经 webbench 测试该服务器可达 30000 并发
技术特点
- 使用 Epoll 边沿触发、非阻塞 IO、Reactor 模式
- 使用多线程技术充分发挥多核 CPU 性能
- 定时器定时关闭超时请求和剔除不活跃连接
- 使用状态机解析了 GET 和 POST 请求
- 主线程负责 accept 请求,并轮询分配给其他 IO 线程,这样一来锁竞争只会出现在主线程和某一特定线程(如:IO 线程、计算县城、工作线程)
- 使用 eventfd 跨线程异步唤醒
- TCP 接收发送环形缓冲区
- 使用智能指针、RAII 机制规避程序中出现内存泄漏的可能
- 异步日志实时记录服务器运行状态(便于 Debug)
- webd 服务以 dameon 进程运行
URL:https://github.com/Apriluestc/compress
本项目为 C++ 编写的文件压缩工具,使用哈夫曼压缩算法和 lz77 算法实现,支持文件夹压缩、支持文件压缩
技术特点
- 哈夫曼压缩算法
- lz77 压缩算法
压缩测试
【使用方法]./Jarvis 0001.txt
-
哈夫曼压缩测试(txt、png、pdf)
- 文件大小 37M,压缩后 16M,压缩时间 40.04 s,解压缩时间 7.69 s
- 文件大小 47M,压缩后 20M,压缩时间 49.10 s,解压缩时间 8.97 s
- 文件大小 20K,压缩后 19K,压缩时间 0.08 s,解压缩时间 0.02 s
- 文件大小 72K,压缩后 71K,压缩时间 0.2 s,解压缩时间 0.04 s
- 文件大小 74M,压缩后 73M,压缩时间 146.21 s,解压缩时间 23.47 s
-
Lz77 压缩测试(分别为 txt、png、pdf)
- 文件大小 37M,压缩后 34M,压缩时间 80.00 s,解压缩时间 26.28 s
- 文件大小 47M,压缩后 44M,压缩时间 100.45 s,解压缩时间 32.43 s
- 文件大小 42M,压缩后 39M,压缩时间 89.12 s,解压缩时间 29.39 s
- 文件大小 20K,压缩后 20K,压缩时间 0.40 是,解压缩时间 0.00 s
- 文件大小 72K,压缩后 80K,压缩时间 3.25 s,解压缩时间 0.00 s
- 文件大小 1.2M,压缩后 1.4M,压缩时间 49.66 s,解压缩时间 0.11 s
URL:https://github.com/Apriluestc/Jarvis
������ Linux 智能语音 Ai 工具 Jarvis,该项目基于百度语音开源 SDK & 图灵机器 人搭建的,目前没有接入微信平台(ps:很简单的一个项目,主要用于练习开源库、开源接口的使用)
项目功能
- 支持语音识别、语音合成
- 支持语音操作指令(如:语音查看内存、等等)