自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 C++从入门到精通(非常详细)(上)

当我们定义一个与命名空间冲突的名字时,(与cherno的age同名),C++编译器在这里不认识cherno的age,会调用main函数里的age,(main函数为主入口,编译器都会从该入口进行调用,编译器首先遇见了main中的age,会默认之后的age都是这个)那么有什么办法可以避免这种情况呢?备注:ostream(输出流),istream(输入流),iostream(输入输出流),sstream(字符串流),ifstream(写入文件流),ofstream(写出文件流),fstream(文件流)

2023-11-19 15:48:44 391

原创 C++设计模式(策略模式)

1.所谓策略模式,个人感觉更像是对一种行为表示出不同处理(策略)。比如,你现在想要买一件衣服或者其它,我们可以针对买这个行为做出不同的策略,比如可以去某东买,也可以去某宝买,更甚至可以去线下实体店进行购买,这些都是对买这种行为做出的不同反应。2.如何编码去实现呢?其实策略模式挺容易实现的。

2024-06-18 03:42:18 212

原创 C++工厂设计模式(抽象工厂)

1.工厂设计模式其实就是将某个工厂生产的所有产品归于同一个工厂。比如小米汽车工厂生产小米汽车、小米车灯、小米轮胎等等,奥迪工厂生产奥迪汽车、奥迪车灯、奥迪轮胎等等,奔驰工厂生产奔驰汽车、奔驰车灯、奔驰轮胎等等,其实这就是C++中的工厂设计模式。2.怎么去编码实现?对于客户来说,买了哪家的汽车产品,就用哪家产品的功能,并且所有产品以及产品质量保证以及售后等等,都由指定的工厂跟踪负责,C++工厂设计同样如此。代码实现:通过基类与纯虚函数,在其子类中进行对车一系列功能的重写。

2024-06-18 03:20:06 389

原创 Linux C++条件变量(std::condition_variable)

灵活的锁(std::unique_lock)与普通的锁(std::lock_guard)相比更加灵活,更适用于条件变量。(在条件不满足时是解锁状态即资源释放,条件满足时,进行上锁,获取资源,在线程任务完成之前进行解锁,释放资源。2.两个通知函数notify_one和notify_all。1.std::condition_variable类。目的:主要是实现代码的同步操作。为什么使用灵活的锁?

2024-06-02 22:14:37 382

原创 QT实现高并发多线程处理多个Socket客户端

实现多线程方法有两种,分别是继承QObject或者继承QThread。本文使用继承QObject,并使用moveToThread将客户端Socket移动到线程中执行。主要是为了使得每个客户端进来后,分配一个线程进行处理。4. 具体代码结构如下图。

2024-06-01 19:06:00 392

原创 Linux C++ Json文件解析详解

结论:上述代码成功编译,并生成了我们期望看到的custom.json文件。Jsoncpp文件已经在github上开源。2.配置生成静态库libjsoncpp.a。1.Linux Jsoncpp配置。3.Json文件解析。4.Json文件写入。

2024-05-30 22:21:53 390

原创 QT实现互亿无线短信验证

最近在开发软件过程中,需要短信验证。所以使用了第三方短信供应商(互亿无线)。2. tencentCloudSmsVerification.cpp实现。1.tencentCloudSmsVerification.h实现。以下使用TCP Soket 编程实现HTTP POST。

2024-04-25 21:13:03 213 2

原创 网络层(IP协议)

路由聚合的目的主要是解决路由表的坑余。,聚合的理论是因为无论聚合前还是聚合后的网络地址是相同的。主机与路由器都保存一张路由控制表,标明了IP地址、目标地址子网掩码、接口、下一个路由器IP地址等,通过目标地址在路由控制表中查询段记录,通过段记录将IP数据包转发到下一个路由,通过如此的循环,最终完成发往至目标地址的任务。实际在IP数据包转发过程中,我们并不是将IP数据包发送到具体的主机,而是发送到相同网络地址的“所有设备”。默认路由为0.0.0.0/0,默认路由表示所有的网络以及子网的信息。

2024-04-25 20:33:30 383 1

原创 TCP/IP五层模型

TCP/IP五层自顶向下分别为应用层、传输层、网路层、数据链路层以及物理层。

2024-04-25 18:52:42 190 5

原创 浅谈互斥锁(std::mutex)

另外top()与pop()之间也存在竞争:新线程在top()与pop()之间进行top()操作,假设栈中有两个及以上的数据时,好像并没有太大的异常,我们仔细设想一下,其实出栈的元素可能是同一个,而这种错误,代码编译后并不会被发现。所谓互斥锁,实质上就是指当某一个线程拥有锁(即资源),在执行其线程任务时,其它的线程只能等待,只有当上一个线程完成自己的任务并且释放锁的资源后,其它的线程才能进行重新上锁(即获取资源),完成自己的任务。条件竞争一般是指两个及两个以上线程共享数据内存,并抢着完成各自的任务。

2024-04-24 11:52:10 658

原创 如何进行线程管理

使用标识,去标识线程可能是为了区别线程,假设一个线程执行的同时,另外一个相同的线程也来执行,那么这边造成一定的时间开销与空间开销,所以标识线程主要是为了区别线程,防止同一个线程被执行两次。总而言之,标识线程主要是。而释放资源往往是我们程序员往往忽视的环节,在前期C++学习中,我们熟知,智能指针也是自动进行资源回收的对象,其实了解过智能指针的小伙伴都知道,其实销毁智能指针的操作,就是在析构函数中实现的,其实这也就是C++之父提出的RAII机制,它是充分利用了局部对象自动销毁的特性来控制资源的生命周期的。

2024-04-20 19:03:59 1709

原创 Hello,并发与并行世界!

共享资源中,有部分资源在一定时间内只能由一个进程享有,例如一个男卫生间,现约定只能由一个工人占有,当该工人占有后,其余工人不能占用该卫生间,只能等待上一个工人使用完该卫生间后才能进行享用,那么当上一个工人占用卫生间时,怎样才能保护该卫生间防止被其他人强制享用呢?其实join()函数与detach()函数相对应的,join()函数其实就是主线程等待新线程结束,而不是不等待新的线程结束,它就将自顾自地运行到main()结束。C++11以后,为我们提供了线程库std::thread,并提供一系列的线程模版。

2024-04-20 17:55:20 817 2

ViT算法及其在轴承故障诊断工程领域应用

ViT算法及其在轴承故障诊断工程领域应用

2024-07-15

QT实现网易邮件发送(SMTP协议)

通过TCP与SMTP服务器进行建立会话。采用“一问一答”,达到网易邮箱发送的功能。

2024-04-20

Visual Studio与Qt安装教程

Visual Studio与Qt安装教程

2024-03-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除