- 博客(1113)
- 资源 (52)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 老程序员解Bug的通用套路
程序员在很多人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug。 记得刚毕业入行时,我们老大派给我和另外一个新来同事的第一件事就是修Bug,要不是在学校敲过几年代码,还真不知道如何下手!和我一起进公司的另外一个同事完全就是以“看戏者”的身份,看我搞了...
2018-06-06 09:25:29
12258
25
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++17新属性详解
C++17的入选特性有:(1).非类型模板参数的 auto 模板参数分为两种,一种是类型模板参数,也是我们用得最多的一种:template <typename T, typename U>auto add(T t, U u) { return t+u;} 里面的 T 和 U 都是类型模板参数。另一种是非类型模板参数,它可以让不同的字面量成为模板的参数:te...
2018-05-27 21:59:38
54148
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 C++大牛的博客
1. C++大牛的博客 Bjarne Stroustrup的博客: Bjarne Stroustrup’s HomepageBjarne Stroustrup,不认识的可以去面壁了,没有他,就没有我们现在的饭碗。Bjarne Stroustrup是丹麦人,目前任教于TAMU。他的Homepage和他的书籍The C++ Programming Language一样
2018-01-21 21:37:00
5696
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++模板详解
一.C++模板的定义: 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是一种对类型进行参数化的工具;二.使用模板的目的: 能够使得程序员编写与类型无关的代码。比如编写了一个交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些
2017-05-31 21:19:42
2404
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Qt的5种常用布局搭建
Qt布局详解: 界面开发首先要对整个界面进行布局,使窗体上的所有的控件必须有一个合适的尺寸和位置。那么做出来的界面才看起来美观。那么如何对界面进行布局呢?Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QFormLayout,QStackLayout。(布局管理类)这些类简单易用,无论在代码中还是用Qt Design
2016-09-30 09:06:16
5468
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 优秀程序设计的18大原则
优秀程序设计的18大原则1、避免重复原则(DRY - Don’t repeat yourself)编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就很容易形成一个抽象体。2、抽象原则(Abstraction Principle)与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。
2016-07-11 17:07:57
6243
原创 C++结构体与共同体相关算法总结
结构体用于将不同的数据类型组合在一起,每个成员都有自己的内存空间,成员之间互不影响。共同体(也称为共用体)用于将不同的数据类型组合在一个内存空间中,所有成员共享同一块内存。这意味着在一个时间点上只能有一个成员有效。/* 1、用指针和结构体实现一双向链表,并实现其相应的增、删、遍历功能,并在实例中应用它。public://头指针,当前指针//初始化函数//插入函数//删除函数//遍历函数。
2024-07-21 21:17:44
715
原创 C++运算符重载相关算法
*1、定义一个二维向量类Vector,并在该类中用成员函数方式重载一元运算符++(前、后缀)和二元运算符+。this->x=x;this->y=y;++y;Vector s;s.x=x++;s.y=y++;return s;Vector sum;return sum;++v1;
2024-07-21 21:17:32
637
原创 C++数组类算法总结
* 1、将一个数组中的值按逆序重新存放,例如,原来顺序为:a、b、c、d。要求改为:d、c、b、a。*/back(a);int i=0;while(*p!='\0')p++;//把指针定位到字符串末尾i++;//统计字符个数cout
2024-07-14 22:53:04
498
原创 C++异常处理算法总结
可以定义自己的异常类,通常继承自或其派生类。public:1、自己写一个程序,在某种条件下抛出各种类型异常(如:整数、字符串、类对象、引用等),再捕捉这些异常,并进行相关处理,保证自己的程序不被中断,让它继续执行。public:class Range{ //异常类1int index;//异常类2int len;len=si;int num=10;n
2024-07-07 22:53:16
812
原创 C++使用库Vecotr和自己手写数组的优缺点对比
C-style 数组和 std::vector 各有优缺点,应根据具体需求选择适合的工具。对于需要高性能和固定大小的场景,C-style 数组是不错的选择。而对于需要灵活性、安全性和丰富功能的场景,std::vector 更加适合。了解并掌握这两者的使用,可以帮助我们编写更加高效和健壮的 C++ 代码。
2024-06-30 22:48:46
741
原创 CUDA编程的注意事项和使用流程详解
CUDA编程是一种高效利用GPU进行并行计算的技术,但也需要开发者具备良好的并行编程知识和经验。通过本文,希望大家能够更好地理解CUDA编程的基本流程和注意事项,从而编写出高性能的并行程序。随着硬件和软件的发展,未来CUDA编程将会更加普及和易用,为各类计算密集型应用带来更多的性能提升。
2024-06-30 21:57:01
946
原创 NVIDIA GPU 的使用场景及应用
以上只是一个简单的示例,更复杂的应用包括使用 cuDNN 进行深度学习加速、使用 TensorRT 进行推理优化等。每种 API 都有其具体的功能和使用方法,通常需要结合特定的使用场景和需求进行选择和使用。:启动 CUDA 内核,其中 numBlocks 是启动的块数,blockSize 是每个块中的线程数。以下是一些主要平台和使用场景,以及常用的 API 接口和 C++ 代码示例。__global__:标识 CUDA 内核函数,它将在 GPU 上运行。
2024-06-30 21:56:59
686
原创 C++使用GPU进行矩阵数据计算加速
使用GPU进行矩阵数据计算加速可以显著提高计算效率,尤其是在处理大规模矩阵运算时。以下是一个简单的示例,演示如何使用CUDA(Compute Unified Device Architecture)在C++中进行矩阵乘法运算。CUDA是NVIDIA开发的并行计算平台和编程模型,允许使用GPU加速计算任务。分配矩阵的主机内存,初始化矩阵数据,调用CUDA核函数进行计算,然后将结果从设备内存复制回主机内存。这是在GPU上运行的代码。每个线程计算矩阵C中的一个元素。包括分配、复制和释放内存,确保内存使用有效。
2024-06-23 22:10:32
518
原创 OpenMP使用详解
OpenMP 提供了简单而强大的并行编程能力,适合在共享内存系统上实现高效的并行计算。通过合理使用 OpenMP 指令,可以显著提高程序的执行效率。
2024-06-23 22:01:41
869
原创 C++求一个数据集的最大值和最小值详解
求一个数据集的最大值和最小值是常见的数据处理任务之一,主要用于了解数据的范围和分布情况。原理非常简单:遍历整个数据集,记录当前遇到的最大值和最小值。假设在处理一个温度传感器的数据集,想要知道一天中记录的最高和最低温度。通过这种方式,我们可以快速找出数据集中最大和最小的值,并应用于各种领域的数据分析任务中。(5).完成遍历后,最大值和最小值变量即为数据集中的最大值和最小值。(3).如果该元素大于当前记录的最大值,则更新最大值。(4).如果该元素小于当前记录的最小值,则更新最小值。
2024-06-23 21:45:46
369
原创 Dll与exe的区别及使用详解
DLL(Dynamic Link Library,动态链接库)和EXE(Executable, 可执行文件)是两种不同类型的文件格式,主要用于不同的目的。DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。由于DLL能被应用程序动态载入内存。所以,应用程序可以在需要时才将DLL载入到内存中,这让程序的可维护性变得很高。比如QQ的视频功能需要升级,那么负责编写QQ的程序员不必将QQ所有代码都重写,只需将视频功能相关的DLL文件重写即可。
2024-06-16 20:26:29
924
原创 C++网络编程方面的开源项目
合理的选择开源库能让我们快速的开发出可靠的软件,大大的节约开发时间和开发成本。因此,对开源库的特点和应用场景的掌握是非常重要也是非常必要的。
2024-06-16 20:26:12
700
原创 uint64_t result 强制转换为std::vector<uint8_t> buffer
std::vector uint64ToByteVector(uint64_t value) 是一个接受 uint64_t 值并返回 std::vector 的函数。字节序: 上述代码采用小端序。如果需要大端序,则将 buffer[i] 改为 buffer[7 - i]。类型转换: 使用 static_cast 确保从 uint64_t 转换到 uint8_t 安全。
2024-06-09 22:52:53
517
原创 UDP/TCP/HTTP使用详解
Socket是一种网络通信的抽象,允许不同机器上的应用程序相互通信。在C++中,socket编程主要涉及两种协议:UDP(用户数据报协议)和TCP(传输控制协议)。此外,HTTP(超文本传输协议)作为一种应用层协议,通常建立在TCP之上,用于Web服务通信。
2024-06-09 22:33:50
857
2
原创 C++中resize()使用详解
在C++中,resize() 是一个常用的成员函数,主要用于调整 std::vector 容器的大小。std::vector 是一个动态数组,允许在运行时改变其大小。resize() 提供了一种简便的方法来增加或减少 vector 的元素数量。
2024-05-31 23:38:57
1008
原创 C++异常的抛出和捕获(try、catch、throw)详解
通过使用try、catch和throw关键字,C++提供了一种强大的机制来处理运行时错误。理解和正确使用这些关键字,可以帮助我们编写更加健壮和可靠的程序。希望本文对您理解C++中的异常处理有所帮助。
2024-05-31 23:31:08
896
原创 C++线程库std::thread和std::async的用法详解
C++作为一门强大的系统编程语言,提供了多种并发编程工具,使得开发者可以充分利用多核处理器的性能。C++11标准引入了新的线程库,包括std::thread和std::async,为开发高效并发应用提供了强大支持。下面我将std::thread和std::async的用法及其原理做一个归纳总结,希望对大家有帮助。
2024-05-26 15:29:09
642
原创 C++引用参数与引用返回值细节处理提升代码效率
在C++中,引用参数(reference parameters)允许我们传递变量的引用而不是变量的副本。这意味着函数操作的是原始变量而非其副本,从而避免了不必要的拷贝操作。引用返回值(reference return values)允许函数返回一个变量的引用,而不是变量的值。这在需要返回大对象或希望直接修改调用者提供的对象时非常有用。如果使用引用接收引用返回值,则返回的引用必须具有较长的生存期,不可以引用局部变量。如果使用引用接收值返回值,则引用了一个临时对象,该对象的生存期将延长到和这个引用相同。
2024-05-26 15:28:51
1028
原创 C++ Vector 使用详解
总结一下,push_back用于在vector的末尾添加元素,push_front并不是的成员函数,但可以通过insert在开头插入元素,pop_back则用于从vector的末尾移除元素,clear清空中的所有元素。
2024-05-18 21:02:42
832
原创 几种常见拥塞控制算法
在网络工程中,拥塞控制算法是用来调节网络流量,以防止过量的数据流导致网络拥堵和性能下降。这些算法在实现上可以非常复杂,旨在平衡数据传输的速率和网络的承载能力,以维持网络的稳定性和效率。
2024-05-18 18:56:55
936
原创 智能指针、Vector、结构体数据的结合使用
不管是单独使用,还是结合使用,都是可以的,利用每种的特点灵活使用能够让我们的代码更简洁易读,也更高效。
2024-05-18 18:56:37
604
原创 通用循环缓冲区类(c++版)
在多种应用场景下,如网络通信、数据流处理和实时系统中,循环缓冲区(又称环形缓冲区、圆形缓冲区或者循环队列)是一个非常有用的数据结构。它允许缓冲区在被填满之后,自动从起始位置开始重写数据,从而实现一个连续的数据流处理。本文将介绍如何在C++中实现一个通用的循环缓冲区类(),并确保其高效性和类型安全性。
2024-05-12 23:16:31
660
原创 Linux机器上启动一个脚本并保存输出
要在远程Linux机器上启动一个脚本并保存输出,需要能够从一台机器上无密码(使用SSH密钥认证)远程登录另一台机器。以下步骤和脚本可以完成这个任务。
2024-05-12 22:55:49
275
2
原创 C++模版类实现单链表
单链表是一种基本的数据结构,它由一系列节点组成,每个节点都包含存储数据的值和一个指向列表中下一个节点的指针。如果当前节点是列表的最后一个节点,则该指针为null。单链表的实现原理;类的设计、封装;设计抽象类list并让单链表继承自list,是为了和顺序表、双链表配合,利用(纯)虚函数实现多态。通过使用C++模板,我们创建了一个灵活且类型无关的单链表数据结构。这样的实现使得单链表能够适应不同类型的数据存储需求,极大地增强了代码的复用性和扩展性。
2024-05-05 18:00:32
987
原创 结合C++11新特性来学习C++中lambda表达式的用法
C++11标准引入了lambda表达式,极大地增强了C++的表达能力,特别是在编写泛型代码、函数对象和闭包等方面。lambda表达式可以让我们在需要函数对象的地方写下匿名函数,进而简化代码。在 C++ 11 中,lambda 表达式(通常称为 "lambda")是一种在被调用的位置或作为参数传递给函数的位置定义匿名函数对象的简便方法。Lambda 通常用于封装传递给算法或异步方法的少量代码行。lambda表达式是C++11中一个非常有用的特性,能够提升代码的简洁性和灵活性,特别是在使用STL算法时。
2024-05-05 18:00:29
889
原创 C++initializer_list详解
initializer_list 是 C++11引入的一个强大特性,它为统一初始化提供了支持,简化了构造函数重载,并使得初始化列表的使用变得更加灵活。但是,在使用 initializer_list 时,需要注意其只读性质和潜在的生命周期问题。理解其工作原理及限制后,你可以有效地在自己的 C++代码中使用 initializer_list,使代码更加清晰和高效。
2024-04-27 18:58:59
1856
1
原创 C++顺序表的创建及常用14种操作
顺序表通常使用数组来实现。为了便于管理顺序表,我们通常定义一个结构体来封装数组和记录顺序表当前的长度。顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。
2024-04-27 18:58:47
752
原创 互联网大裁员背景下C++程序员如何突围?
假如你没有背景也没有资源,那就努力靠自己,用奋斗扬起生活的风帆,攀登智慧的巅峰,叩开成功的大门,点燃光辉灿烂的明天,永远相信“三分天注定,七分靠打拼”。
2024-04-21 12:00:05
1260
7
原创 C++代码优化思路及27个建议
在软件开发中,代码优化是一项关键活动,尤其是在性能敏感的应用场合,如嵌入式系统、游戏开发、系统级软件以及大数据处理等领域。代码运行效率影响体验度和系统效率。代码优化不仅可以提高程序的执行效率和响应速度,还有助于减少资源消耗(如CPU时间和内存使用)和提升用户体验。今天我个人将C/C++代码优化的一些基本思路做一个简单总结,希望对大家在开发过程中的代码优化有所帮助。
2024-04-21 11:28:39
1596
原创 ZeroMemory、memset 和 “={0}” 三者用于清零操作的区别:
在C或C++编程中,清零内存的操作是一个常见需求。ZeroMemory、memset 和使用 ={0} 是实现这一目的的三种不同方式。所以,再次强烈建议:类(class)只使用构造函数进行初始化,不要调用ZeroMemory进行清零操作。
2024-04-21 11:12:47
1217
原创 C++文件操作函数
C++提供的文件操作功能强大且灵活,从基础的文件读写到复杂的文件系统操作,几乎可以满足所有需求。了解并掌握这些操作对每一个C++开发者都是必要的。希望本文能帮助大家入门C++中的文件操作,并在实际开发中加以应用。
2024-04-21 10:50:28
945
原创 C++系统时间操作函数
在深入具体的函数之前,我们首先需要理解C++中时间的基本概念。C++标准库提供了多种方式来获取和操作时间,主要可以分为以下几类:C风格时间操作C++11及以后的现代时间库库定义了三种主要的时间类型:时间点(time points)、持续时间(durations)和时钟(clocks)。时钟有三种类型:system_clock、steady_clock和high_resolution_clock。
2024-04-21 09:59:13
1090
jQuery瀑布流经典布局源码
2016-01-28
Navicat安装指导及安装资源
2024-03-23
vncserver和vncviewer
2017-06-01
大数据资料集锦
2016-03-30
Hadoop技术全套图书
2016-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人