- 博客(68)
- 收藏
- 关注

原创 网络协议全景:Linux环境下的TCP/IP、UDP
UDP即用户数据报协议是在传输层的一个无连接协议,UDP具有简单的报头格式和面向数据报的特点,特别适合对延迟敏感但容忍丢包的应用场景,如视频流、语音通信和在线游戏。TCP(传输控制协议),提供可靠的、面向连接的通信服务。它通过建立连接、数据传输和连接终止的机制,确保数据能按顺序、无差错地从一端传送到另一端。
2024-09-17 19:38:11
1899
6

原创 基于Boost库的搜索引擎开发实践
private:// 构造函数,初始化 jieba 分词器{}// 禁用拷贝构造函数public:mtx.lock();// 加锁,保证线程安全// 初始化停止词映射表if (!return;in.close();// 对字符串进行分词,并移除停止词// 使用 jieba 进行搜索模式分词it!) // 遍历分词结果if (temp!// 移除该词elseit++;// 调用单例实例的分词方法。
2024-09-12 19:51:41
2427
9
原创 Qt 实操记录:打造自己的“ QQ 音乐播放器”
当我们将完成的音乐播放器程序运行起来后:观察分析可得,主界面大致可分为几个部分:head(headleft和headright)和body(bodyleft和bodyright(层叠窗口和播放控制区域))。据以上可得head从左至右分别为一个logo、搜索框、换肤按钮、最小化、最大化、关闭按钮。可以用QLabel QLineEdit 和四个QPushButton实现:在headright中有一根垂直弹簧用来保证head在整个widget上保证一定的高度 不会被body过度挤压。logo的QSS优化
2025-03-18 14:14:01
943
2
原创 Linux高级I/O:多路转接模型
阻塞 I/O:在阻塞 I/O 模型中,当进程请求 I/O 操作时,它会被挂起,直到该操作完成。这种方式进程在等待 I/O 的同时不能做其他的事。非阻塞 I/O:非阻塞 I/O 允许进程发出 I/O 请求后立即返回,进程可以继续执行其他操作。为了检查 I/O 是否完成,进程需要通过轮询方式不断检查状态,所以也常称为非阻塞轮询IO,这种方式可以减少等待时间,但是在高频率轮询时很消耗cpu资源。I/O 多路复用。
2024-09-23 18:06:18
972
4
原创 Linux IPC解析:匿名命名管道与共享内存
进程间通信)是计算机系统中不同进程之间交换数据和同步操作的机制。由于现代计算机系统中,程序通常会由多个进程组成,这些进程可能需要相互通信以完成任务,因此IPC非常重要。数据交换:允许不同进程共享数据或传递信息。同步:协调多个进程之间的操作,以避免竞态条件和资源冲突。互斥:控制多个进程对共享资源的访问,确保同一时间只有一个进程能够访问资源管道(Pipes):匿名管道:用于相关进程之间的单向通信,如父子进程或兄弟进程。
2024-08-01 16:15:20
1492
3
原创 深入解析:inode、软硬链接与动静态库的奥秘
在Linux操作系统中,‘inode(索引节点)是文件系统的核心组件之一,用于管理文件和目录的元数据。每个文件和目录在磁盘上都有一个对应的inode`,它不包含文件的实际数据内容,而是记录了关于文件的关键信息。简单来说,在Linux系统中,一个文件,有一个inode。每一个inode都有自己的inode编号(inode的设置,是以分区为单位的,不能跨分区inode表示文件的所有属性文件名,并不属于inode内的属性!
2024-07-26 07:15:00
1605
3
原创 深入解析C++11:现代特性和应用
C++11是C++编程语言的一个重要版本更新,它在2011年被标准化。C++引入了进140个新特性,并且修正的大量的缺陷,使得C++编程更加高效和便捷。
2024-07-10 20:43:04
1275
5
原创 深入剖析红黑树:优雅地平衡二叉搜索树
目录。红黑树和AVL树的插入效率O(logN),只是红黑树不像AVL追求如此平衡,所以旋转次数会少,并且实现也较简单。所以在实践中大都使用红黑树。之后我们还是使用**红黑树模拟实现map和set**。
2023-10-05 15:29:07
386
18
原创 搜索二叉树的算法解析与实例演示
随着移动智能设备的普及,各种各样的使用需求也被开发出来,从最早的移动听音乐、看图片(MP3时代),到之后的移动视频需求(MP4时代)到现在的移动流媒体需求(智能手机看视频)。但当我们习惯这些需求后,忽然发现自己不知不觉间成了待割的韭菜(3台设备就要加钱)。作为一颗倔强的韭菜,自然不会甘愿被割,因此打算自建一个私人影音媒体平台。现在,笔者就向大家展示,使用cpolar内网穿透+ Jellyfin,自建私人影音平台的全过程。
2023-08-27 14:06:31
320
11
原创 解密C++多态机制:发挥对象的多样性,实现更加智能的程序设计
重载:两个函数在同一作用域、函数名/参数相同重写:两个函数分别在基类和派生类的作用域、函数名/参数/返回值都必须相同(协变例外)、两个函数必须是虚函数隐藏重定义)两个函数分别在基类和派生类的作用域、函数名相同、两个基类和派生类的同名函数不构成重写就是重定义。
2023-07-27 20:31:38
508
22
原创 回顾类与对象:掌握String探索其模拟实现的沉浸式体验
算法、容器、迭代器、空间适配器、仿函数 、配接器。包含了里常用的基本数据结构和基本算法,在STL中体现了泛型化程序设计的思想。
2023-07-10 14:19:28
838
25
原创 构建无忧:探索 Linux 项目自动化构建神器-make/Makefile
编写Makefile是Linux开发中一项重要的技能,熟练的运用这个工具能提高编译效率,帮助你完成大型工程。Makefile带来的最大好处就是——自动化编译,一旦将Makefile文件写好,只需要一个make命令,即可完成预期的编译,大大提高了软件开发的效率。
2023-07-04 12:28:05
357
18
原创 从入门到精通:解锁Linux开发工具和编译器的力量
一.编辑器vim的使用1.vim的基本概念2.vim的使用二.编译器gcc/g++1.编译器的使用2.编译器是如何完成的?3.动态库与静态库
2023-07-02 13:34:49
569
31
转载 本地搭建CFimagehost私人图床【公网远程访问】
图片服务器也称作图床,可以说是互联网存储中最重要的应用之一,不仅网站需要图床提供的外链调取图片,个人或企业也用图床存储各种图片,方便随时访问查看。不过由于图床很不挣钱,各互联网大厂正在逐步关停所属的图床服务器,这也导致用户只能自己想办法,搭建自己的图床服务器。今天,笔者就为大家介绍,如何使用Cpolar+ CFImagehost,搭建简洁易用的私人图床。CFImagehost网站只是众多网站源码中的一种,我们还可以在本地设备上安装其他类型的网站源码,部署不同功能和应用场景的网站。
2023-06-03 09:49:13
1054
38
转载 公网使用SSH远程连接安卓手机Termux - Android手机服务器
使用安卓机跑东西的时候,屏幕太小,有时候操作不习惯。不过我们可以开启ssh,使用电脑PC端SSH远程连接手机termux。本次教程主要实现在安卓手机termux上安装SSH,在电脑上通过SSH远程连接Termux。同时在Termux上做内网穿透,用cpolar创建安全隧道映射22端口,实现在外也可以SSH远程连接Termux,无需公网IP,也不用设置路由器 ,这里使用国产内网穿透工具cpolar简单实现。
2023-05-30 18:58:06
1464
28
转载 Ubuntu安装RabbitMQ server - 在外远程访问
RabbitMQ是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现,由于erlang 语言的高并发特性,性能较好,本质是个队列,FIFO 先入先出,里面存放的内容是message,下面介绍通过在ubuntu+cpolar+rabbitMQ环境下,实现mq服务端远程访问。
2023-05-27 10:17:44
840
27
转载 【IIS建站教程】windows本地搭建web服务,内网穿透发布公网访问
在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助,比如网页运行的Apache和Nginx、数据库软件MySQL和MSSQL之类,为方便用户使用,还出现了XAMPP、PHPStudy、宝塔面板等等一系列集成服务,都是为了方便我们能快速建立网站。是不是不适用这些软件就无法建立网站了呢?答案当然是否定的,在Windows系统中实际上集成了建立网站所必须的软件环境。今天就让我们来看看,如何使用Windows自带的网站程序建立网站吧。
2023-05-23 07:36:37
3931
35
转载 Linux安装MongoDB数据库并内网穿透在外远程访问
MongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。它最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。本次教程我们将在Linux centos服务器上安装部署Mongodb数据库,同时使用cpolar进行内网穿透,实现即使在外也可以远程连接访问Mongodb数据库。
2023-05-20 08:48:49
1665
45
转载 私有GitLab仓库 - 本地搭建GitLab私有代码仓库并随时远程访问「内网穿透」
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。
2023-05-16 07:52:39
4788
56
转载 无云服务器,Linux本地快速搭建web网站,并内网穿透发布上线(1)
在web项目中,部署的web站点需要被外部访问,则需要一个媒介,通过把资源放在这个媒介中,再通过所暴露的端口指向这个站点,当外部访问这个媒介所对应的端口时,媒介指向站点,完成访问,像这种类似的媒介,常用的有tomcat容器、Apache等,这边使用Apache来建搭建。Apache2 是一种流行的 Web 服务器应用程序,也就是通常所说的运行网站的服务器,目前apache在centos已经改名,叫httpd。
2023-05-05 11:05:35
3998
87
转载 远程访问本地jupyter notebook服务 - 无公网IP端口映射
Jupyter Notebook,它是一个交互式的数据科学和计算环境,支持多种编程语言,如Python、R、Julia等。它在数据科学、机器学习、深度学习、教育和文档编写等领域都有很广泛的应用。重要的是,Jupyter Notebook可以在Web浏览器中使用,所以我们可以在服务器端开启服务,在外通过网页远程访问运行代码进行数据分析,拥有一个可以随时随地使用的科学计算环境,而无需在本地安装配置Python环境。
2023-05-01 08:00:00
1665
40
原创 【数据结构与算法】树与二叉树
除了之前我们讲的栈、队列、链表等线性结构,数据结构中还有着一对多的非线性结构———树。树是有n个结点组成的有限集,当n=0时为空树,在任意一颗非空树中,有且仅有一个特定的根结点;当n>1时,其余结点又可以分为一棵树,称为根的子树。如下图所示:二叉树是度为2的树,二叉树的子树有左右之分所以二叉树是有序树。
2023-04-03 08:15:35
744
41
原创 【数据结构与算法】堆与堆排序
堆是一种数据结构,首先它总是一颗完全二叉树(因为堆适合表示完全二叉树),在逻辑上堆是一颗完全二叉树,真正实现上是使用数组来实现的。根据不同的规则(任意根节点比左右孩子大或者小)区分出大根堆和小根堆。上图就是一个大根堆的演示,小根堆则相反。堆的底层逻辑就是数组,所以创建堆只需要先创建个数组。接着我们想通过数组建堆,就需要调整数据在数组中的位置。现在我们假设有一个乱序的数组:我们要将其调整为大根堆的情况,则需要从第二层左孩子开始向上调整。上图为数据26作为孩子节点大于其父节点15,则26与15 交换
2023-03-26 16:06:35
1120
18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人