- 博客(31)
- 收藏
- 关注
原创 经典N皇后问题(C++代码实现)
本文介绍了N皇后问题的两种解法:回溯法及其优化版本。N皇后问题要求在N×N的棋盘上放置N个皇后,使得它们互不攻击。回溯法通过逐行尝试放置皇后,并在冲突时回溯,最终找到所有合法解。优化版本利用位运算减少计算量,适用于N≤32的情况。文章详细解析了两种方法的代码实现,包括如何判断皇后位置是否合法以及递归处理每一行的逻辑。通过这两种方法,可以有效解决N皇后问题并计算合法解的数量。
2025-05-18 18:21:46
1118
原创 C++面试之---左值与右值
具有地址可以出现在赋值号=的左侧可以取地址&变量、对象、数组元素都是左值示例:int x = 10;//x是左值x = 20;//左值可以出现在赋值号=的左侧//可以取地址int a=10;上面这段代码等同于对于上面这幅图,我们可以这样理解,左值是有房子的,而右值是住在这个房子里的人接下来,我们继续深入,我们将代码变换成下面这样int a = 10;a = 20;我们来观察这个反汇编代码其实也就是将原本放10的变换成20,如下图。
2025-04-14 19:56:31
1094
原创 带权无向图最小生成树算法
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2025-04-13 10:42:49
849
原创 C-S模式之实现一对一聊天
在C++的Socket编程中,实现一对一聊天的基本思路是构建一个客户端(Client)和一个服服务端(Server),并让每个客户端之间通过服务器进行消息的转发,具体步骤如下: ## 1. 服务器设计服务器愮接受多个客户端的连接,并为每对用户建立专属的通信通道,实现流程如下:* 服务端启动并监听某个端口* 每当有客户端连接时,服务端接受连接并创建一个独立的线程或使用I/O多路复用(如select、epoll)来处理客户端请求。* 服务端维护一个客户端的连接表(这里我们使用map来存储),当两个客
2025-04-05 19:20:28
1025
原创 使用C++实现HTTP服务
要实现一个简单的C++Web服务器,支持GET和POST请求,同时能够提供静态文件(如JavaScript、CSS和图片文件)。
2025-03-30 00:02:28
2322
原创 HTTP---基础知识
HTTP(Hyper Text Transfer Protocol,超文本传输协议),是用于客户端和服务器之间数据传输的应用层协议,主要用在Web浏览器和服务器之间的通信。HTTP最初是为传输HTML文档设计的,但现在支持多种类型的数据,如图片、视频、文本等。举个例子Web浏览:浏览器使用HTTP从服务器获取网页和资源,如图片和CSS文件数据传输:开发者使用HTTP在客户端和服务器之间发送和接收数据,特别是在Web API和RESTT服务中。每当你通过浏览器访问一个网页的时候。
2025-03-29 17:22:24
2363
原创 单播、广播、组播和任播
IP_MULTICAST_TTL:这是要设置的选项名,IP_MULTICAST_TTL用于指定多播数据包的生存时间(TTL),TTL定义了数据包在网络中可以经过的最大路由器数(或跳数)。(2)SOL_SOCKET:这是套接字层的选项类型,用于指定选项在套接字级别(例如,SO_REUSEADDR、SO_KEEPALIVE等)。若将其设置为0,则表示禁用端口重用。路由协议的计算与更新:在BGP等动态路由协议中,节点定期交换路由信息,一旦有节点发生变化(如故障、延迟增加),路由表会根据新的路由哦条件进行更新。
2025-03-22 19:09:58
1259
原创 socket编程与TCP协议
Socket是网络通信的“接口”,也就是程序与网路之间的中介。它为开发者提供了一套通用的函数或API,允许程序通过网络发送和接收数据。具体地说,socket抽象了网络底层的细节。比如数据包的传输、协议选择、错误处理等,开发者只需要使用socket提供的函数来建立连接和传输数据,而不需要关心网络底层的实现socket的特点UDP协议在网络编程中通过函数设置选项,主要涉及SOL_SOCKET(通用套接字层)和(UDP协议层)两类选项。
2025-03-13 21:55:37
1183
原创 字节序--大端存储与小端存储
如何检查自己的电脑是大端还是小端?·方法一:int num=1;char(&num);//如果最低有效字节在最低地址处,则为小端字节序int main()elsereturn 0;方法二:利用数据类型的存储方式来判断当前系统的字节序,常见的实现方法是使用union联合体来共享内存,并通过访问不同的成员来检查数据的存储顺序。//定义一个联合体,包含一个整数和一个字符数组union{uint32_t i;//32位整数//4字节字符数组} test;
2025-03-09 18:13:58
587
原创 TCP协议与包头格式
TCP(Transmission Control Protocol,传输控制协议)是面向连接的、可靠的、基于字节流的通信协议,是互联网协议套件中的核心协议之一。它运行在传输层,主要运用于提供端到端的可靠传输。
2025-03-09 16:39:08
614
原创 网络基础---协议和分层
协议(Protocol)是一组规则、约定或标准,它们定义了计算机网络中不同设备或程序之间交换数据的方式。这些规则确保了数据能够在网路中以一致和可预测的方式被发送、接收和解释。敲定一种组织数据和传输数据的方式,然后,大家都认可和使用这种方式。这就是协议。生活中的各种公认的规则都可以被看作是一种协议,例如:红绿灯信号、信件邮递、摩斯密码等。
2025-03-08 18:32:12
1099
原创 线程池和线程池的实现
线程池是指一种预先创建一组线程的机制,这些线程在应用程序启动时就已经创建好,等待执行任务。应有新的任务需要执行时,线程池会从线程集合中分配一个空闲线程来执行该任务,而不是每次都重新创建和销毁线程。-----池化思想线程复用:通过任务队列和条件变量,线程池中的线程可以复用,避免频繁创建和销毁线程。任务封装:使用封装任务,支持返回值获取。线程安全:通过互斥锁和条件变量确保任务队列的线程安全。异步结果:通过获取任务的异步执行结果。
2025-03-05 17:09:56
790
原创 原子变量和原子操作------浅谈
这篇技术文章聚焦 C++ 中的原子变量,开篇点明原子变量是用std::atomic模板类定义,能在多线程下确保操作线程安全,避免读写受干扰。接着阐述原子操作不可分割,介绍其基本类型,如读写、交换、CAS 等,并通过代码示例对比非原子与原子变量在多线程下的表现。随后深入探讨原子操作的内存序问题,强调多线程下内存操作重排可能引发的风险,以及内存顺序对操作可见性和排序的控制作用,且不影响原子性。
2025-02-12 21:08:14
1195
原创 C++读写锁
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考。
2025-02-07 15:13:45
1130
原创 OPencv3.4.1安装及配置教程
(3). opencv-3.4.1-vc14_vc15.exe:是用于 Windows 平台的安装程序,支持 Visual C++ 14 和15编译器,方便开发者在 Windows 环境下使用 OpenCV 进行开发。(2). opencv-3.4.1-ios-framework.zip:是针对 iOS 平台的框架文件包,供开发者在 iOS 应用开发中使用OpenCV 的各种功能,例如处理图像和视频等。在上面这个界面中,我们尽量选择除了C盘以外的磁盘进行安装,接着点击extract。点击应用就完成的配置。
2025-01-27 17:57:06
1397
原创 人脸识别打卡系统--基于QT(附源码)
项目地址https://gitcode.com/hujiahangdewa/Face_recognition.git服务器的具体实现(代码)接下来编译这个服务器文件,使用gcc来编译启动服务器这即是服务器启动成功之后的界面,如若启动失败,在评论区留下错误原因。三、客户端的搭建创建项目打开我们的QT软件,创建一个qt项目,具体如何创建可参考这个文章https://blog.csdn.net/hujiahangdewa/article/details/143915238?spm=
2025-01-21 17:54:24
2474
原创 C++多线程之unique_lock
unique_lock是一个更灵活的互斥量封装器,它提供了更多的控制选项,比如延迟锁定、尝试锁、递归锁定、定时锁定等。于std::lock_guard相比,std::unique_lock提供了更多的功能,但也需要更多的管理责任。如何定义使用unique_lock?·unique_lock的构造//自动上锁//自动锁定//延迟锁定//接受已锁定的mutex,不允许再次锁定//尝试锁定。
2025-01-20 17:42:22
1098
原创 线程同步与Mutex
线程同步(Thread Synchronization)是多线程编程中的一个重要概念,它指的是通过一定的机制来控制多个线程之间的执行顺序,以确保它们能够正确地访问和修改共享资源,从而避免数据竞争和不一致性问题。在多线程环境中,多个线程可能同时访问和修改共享资源(如变量,数据结构或文件等)。如果没有适当的同步机制,这些线程可能会以不可预测的顺序执行,导致数据竞争、脏读、脏写或其他不可预期的行为。线程同步的目标就是确保线程之间的有序执行,以维护数据的一致性和完整性。为什么要同步呢?
2025-01-19 23:57:46
1385
原创 C++多线程基础理论
线程(Thread)是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程编程是指在一个程序中创建多个线程并发的执行,没给线程执行不同的任务。线程是操作系统能够进行运算调度的最小单位,一个进程中可以包含多个线程,每个线程都是进程中的一个单一顺序的控制流。多线程编程的主要目的是为了提高程序的执行效率和响应速度,使得程序能够充分利用CPU资源。
2025-01-09 10:29:36
1081
原创 C++中的仿函数
在C++中,仿函数(Functors)或称为函数对象(Function Objects)是重载了调用操作符operator()的类或结构体,这使得这些类的对象可以像函数一样被调用。仿函数的主要用途是提供一种灵活的方式来定义和操作数据。通过创建自定义的仿函数,你可以将待定的逻辑封装在一个对象中,并在需要时将其传递给算法或容器。本文主要介绍了 C++ 中的仿函数,包括仿函数的定义、特性和相对性能优势。
2025-01-01 18:54:04
1057
原创 C++STL----Vector容器
vector的定义方式有多种在使用vector之前,我们必须要在头文件处声明#include,否则将会报错//以下实际中定义vector的方法//空的向量数组//定义一个向量数组//定义一个向量数组,由n个元素为a的向量数组//定义一个向量数组,由n个元素为默认0的向量数组//定义一个向量数组,并且初始化向量数组//定义一个向量数组,并且初始化向量数组上述例子中的T表示参数类型,即我们要存储的数据的类型如int、float,double等。
2024-12-23 15:27:47
1198
原创 C++模板--类模板
有了上一篇文章的铺垫,我们再来看看类模板。其实就是要看template 这段代码的后面跟的是什么,如果跟的是函数的定义,那么它就是一个函数模板,如果跟的是类,那么它就是一个类模板。当然,类模板也有一些细节,需要我们注意。要定义一个类模板,你可以使用template关键字和一个或多个模板参数来定义一个通用的类。
2024-12-22 16:28:31
875
原创 C++模板编程基础
接下来我们使用模板的方式来重写这个例子在这个例子中,Swap是一个模板函数,它可以接受任意相同类型的参数,并交换它们两个的值。模板函数的定义以template 开始,当然typename可以替换成class(两者的意思一样,都是定义类型名),T是自己设定的(可以随意),然后函数参数和返回类型中是使用T作为类型占位符。多参数函数模板的定义在这个例子中,printValue函数接收两个不同类型的参数,并在输出中显示它们。当然,如果我们要定义三个类型,直接在就可以添加。
2024-12-21 15:47:38
1164
原创 初识C/C++内存结构
当你在代码编辑器(Visual Studio 、Clion等)中写下一段代码,按道理讲,你并不需要太在意,你的代码变量被分配到哪个内存区域,也就是说这对程序员来说,基本就是透明的,你可以在一,也可以不在意。但是,作为一个专业的C++使用者来说,你应该对自己所写的代码由比较清晰的把握,清楚自己所写的代码中的变量存在什么区域中,者会有非常大的好处,这不但能够让你写出高性能的代码,还有助于你减少一些比较深层次的BUG。
2024-12-20 16:58:33
1342
原创 数据结构---排序
排序算法(sorting algorithm)用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用,因为有序数据通常能够被更高效地查找、分析和处理。如下图,排序算法中的数据类型可以是整数、浮点数、字符或字符串等。排序的判断规则可根据需求设定,如数字大小、字符 ASCII 码顺序或自定义规则。评价维度运行效率:我们期望排序算法的时间复杂度尽量低,且总体操作数量较少(时间复杂度中的常数项变小)。对于大数据量的情况,运行效率显得尤为重要。
2024-11-30 15:13:49
1297
原创 MySQl----学生竞赛管理系统(应付作业版)
以上就是本人对本次其中作业的基本理解,我也用存储过程完成了大多数的功能。后期还会再增加一些,未完待续…
2024-11-23 23:55:35
1380
原创 数据结构--二叉树简单构造及其类型
二叉树(binary tree)是一种非线性数据结构,代表“祖先”与“后代”之间的派生关系,体现了“一分为二”的分治逻辑。与链表类似,二叉树的基本单元是节点,每个节点包含值、左子节点引用和右子节点引用。
2024-11-21 16:05:43
887
原创 QT学习第一天
Qt 是一个跨平台的 C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展, 并且允许真正的组件编程。Qt也是一个跨平台应用程序和 UI 开发框架。使用 Qt只需一次性开发应用程序, 无须重新编写源代码, 便可跨不同桌面和嵌入式操作系统部署这些应用程序,即通过专用的IDE编译成可执行文件,便可直接运行Windows和Linux平台上的可执行文件。
2024-11-20 21:23:45
699
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人