- 博客(1093)
- 资源 (52)
- 收藏
- 关注
原创 老程序员解Bug的通用套路
程序员在很多人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug。 记得刚毕业入行时,我们老大派给我和另外一个新来同事的第一件事就是修Bug,要不是在学校敲过几年代码,还真不知道如何下手!和我一起进公司的另外一个同事完全就是以“看戏者”的身份,看我搞了...
2018-06-06 09:25:29 12210 25
原创 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 54067 5
转载 C++大牛的博客
1. C++大牛的博客 Bjarne Stroustrup的博客: Bjarne Stroustrup’s HomepageBjarne Stroustrup,不认识的可以去面壁了,没有他,就没有我们现在的饭碗。Bjarne Stroustrup是丹麦人,目前任教于TAMU。他的Homepage和他的书籍The C++ Programming Language一样
2018-01-21 21:37:00 5610 1
原创 C++模板详解
一.C++模板的定义: 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是一种对类型进行参数化的工具;二.使用模板的目的: 能够使得程序员编写与类型无关的代码。比如编写了一个交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些
2017-05-31 21:19:42 2394 3
原创 Qt的5种常用布局搭建
Qt布局详解: 界面开发首先要对整个界面进行布局,使窗体上的所有的控件必须有一个合适的尺寸和位置。那么做出来的界面才看起来美观。那么如何对界面进行布局呢?Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QFormLayout,QStackLayout。(布局管理类)这些类简单易用,无论在代码中还是用Qt Design
2016-09-30 09:06:16 5445 1
原创 优秀程序设计的18大原则
优秀程序设计的18大原则1、避免重复原则(DRY - Don’t repeat yourself)编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就很容易形成一个抽象体。2、抽象原则(Abstraction Principle)与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。
2016-07-11 17:07:57 6232
原创 C++ Vector 使用详解
总结一下,push_back用于在vector的末尾添加元素,push_front并不是的成员函数,但可以通过insert在开头插入元素,pop_back则用于从vector的末尾移除元素,clear清空中的所有元素。
2024-05-18 21:02:42 818
原创 几种常见拥塞控制算法
在网络工程中,拥塞控制算法是用来调节网络流量,以防止过量的数据流导致网络拥堵和性能下降。这些算法在实现上可以非常复杂,旨在平衡数据传输的速率和网络的承载能力,以维持网络的稳定性和效率。
2024-05-18 18:56:55 722
原创 智能指针、Vector、结构体数据的结合使用
不管是单独使用,还是结合使用,都是可以的,利用每种的特点灵活使用能够让我们的代码更简洁易读,也更高效。
2024-05-18 18:56:37 499
原创 通用循环缓冲区类(c++版)
在多种应用场景下,如网络通信、数据流处理和实时系统中,循环缓冲区(又称环形缓冲区、圆形缓冲区或者循环队列)是一个非常有用的数据结构。它允许缓冲区在被填满之后,自动从起始位置开始重写数据,从而实现一个连续的数据流处理。本文将介绍如何在C++中实现一个通用的循环缓冲区类(),并确保其高效性和类型安全性。
2024-05-12 23:16:31 616
原创 Linux机器上启动一个脚本并保存输出
要在远程Linux机器上启动一个脚本并保存输出,需要能够从一台机器上无密码(使用SSH密钥认证)远程登录另一台机器。以下步骤和脚本可以完成这个任务。
2024-05-12 22:55:49 244 2
原创 C++模版类实现单链表
单链表是一种基本的数据结构,它由一系列节点组成,每个节点都包含存储数据的值和一个指向列表中下一个节点的指针。如果当前节点是列表的最后一个节点,则该指针为null。单链表的实现原理;类的设计、封装;设计抽象类list并让单链表继承自list,是为了和顺序表、双链表配合,利用(纯)虚函数实现多态。通过使用C++模板,我们创建了一个灵活且类型无关的单链表数据结构。这样的实现使得单链表能够适应不同类型的数据存储需求,极大地增强了代码的复用性和扩展性。
2024-05-05 18:00:32 965
原创 结合C++11新特性来学习C++中lambda表达式的用法
C++11标准引入了lambda表达式,极大地增强了C++的表达能力,特别是在编写泛型代码、函数对象和闭包等方面。lambda表达式可以让我们在需要函数对象的地方写下匿名函数,进而简化代码。在 C++ 11 中,lambda 表达式(通常称为 "lambda")是一种在被调用的位置或作为参数传递给函数的位置定义匿名函数对象的简便方法。Lambda 通常用于封装传递给算法或异步方法的少量代码行。lambda表达式是C++11中一个非常有用的特性,能够提升代码的简洁性和灵活性,特别是在使用STL算法时。
2024-05-05 18:00:29 882
原创 C++initializer_list详解
initializer_list 是 C++11引入的一个强大特性,它为统一初始化提供了支持,简化了构造函数重载,并使得初始化列表的使用变得更加灵活。但是,在使用 initializer_list 时,需要注意其只读性质和潜在的生命周期问题。理解其工作原理及限制后,你可以有效地在自己的 C++代码中使用 initializer_list,使代码更加清晰和高效。
2024-04-27 18:58:59 1209
原创 C++顺序表的创建及常用14种操作
顺序表通常使用数组来实现。为了便于管理顺序表,我们通常定义一个结构体来封装数组和记录顺序表当前的长度。顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。
2024-04-27 18:58:47 408
原创 互联网大裁员背景下C++程序员如何突围?
假如你没有背景也没有资源,那就努力靠自己,用奋斗扬起生活的风帆,攀登智慧的巅峰,叩开成功的大门,点燃光辉灿烂的明天,永远相信“三分天注定,七分靠打拼”。
2024-04-21 12:00:05 1192 7
原创 C++代码优化思路及27个建议
在软件开发中,代码优化是一项关键活动,尤其是在性能敏感的应用场合,如嵌入式系统、游戏开发、系统级软件以及大数据处理等领域。代码运行效率影响体验度和系统效率。代码优化不仅可以提高程序的执行效率和响应速度,还有助于减少资源消耗(如CPU时间和内存使用)和提升用户体验。今天我个人将C/C++代码优化的一些基本思路做一个简单总结,希望对大家在开发过程中的代码优化有所帮助。
2024-04-21 11:28:39 890
原创 ZeroMemory、memset 和 “={0}” 三者用于清零操作的区别:
在C或C++编程中,清零内存的操作是一个常见需求。ZeroMemory、memset 和使用 ={0} 是实现这一目的的三种不同方式。所以,再次强烈建议:类(class)只使用构造函数进行初始化,不要调用ZeroMemory进行清零操作。
2024-04-21 11:12:47 641
原创 C++文件操作函数
C++提供的文件操作功能强大且灵活,从基础的文件读写到复杂的文件系统操作,几乎可以满足所有需求。了解并掌握这些操作对每一个C++开发者都是必要的。希望本文能帮助大家入门C++中的文件操作,并在实际开发中加以应用。
2024-04-21 10:50:28 776
原创 C++系统时间操作函数
在深入具体的函数之前,我们首先需要理解C++中时间的基本概念。C++标准库提供了多种方式来获取和操作时间,主要可以分为以下几类:C风格时间操作C++11及以后的现代时间库库定义了三种主要的时间类型:时间点(time points)、持续时间(durations)和时钟(clocks)。时钟有三种类型:system_clock、steady_clock和high_resolution_clock。
2024-04-21 09:59:13 952
原创 C++字符操作及字符串打印
在C++中,处理字符和字符串是基本操作之一,涉及到各种数据类型和函数。今天,我对C++中的字符和字符串打印进行一个全面的总结,包括基础的字符处理以及使用标准库中的字符串类及字符串打印。
2024-04-21 09:47:46 1007
原创 strtok()函数详解
strtok() 函数用于将字符串分割成一系列的令牌(tokens)。这个函数声明在 头文件中,其原型如下:分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。在头文件#include中。strtok() 是一个强大的工具,用于在C/C++语言中分割字符串,它非常有用,但需要小心使用,以避免安全问题和数据完整性问题。
2024-04-21 09:33:39 1662
原创 C++中箭头操作符(->)和点操作符(.)有什么不同?
最后,总结一下,点操作符()用于直接访问对象的成员,而箭头操作符(->)用于通过对象的指针访问成员。选择使用哪一个操作符,取决于你是直接拥有对象还是拥有指向对象的指针。了解这两个操作符的区别对于编写清晰且高效的C++代码至关重要。希望通过本文的解释和示例,对大家尤其是C++初学的小伙伴能有所帮助,能更好地在项目中正确使用这两个操作符。
2024-04-13 15:43:52 56 1
原创 奇校验及校验和的帧校验机制详解
此代码首先定义了设置奇校验位的setOddParity函数,然后定义了计算校验和的calculateChecksum函数。在main函数中,我们创建了一个示例数据帧,并打印出带有奇校验和校验和的结果。采用奇校验及校验和的帧校验机制,可以增加数据传输的可靠性。在这种机制下,每个数据字节包含一个用于奇校验的校验位,确保每个字节中“1”的数量为奇数。此外,在每个数据帧的末尾添加一个校验和字节,这个校验和是除通讯标志外的所有字节(包括数据和校验位)之和的补码。以下是采用奇校验及校验和机制的。
2024-04-13 14:55:03 42
原创 C++异常处理机制详解
throw Exception(1,"错误!");C++的异常处理机制是一个强大的特性,它在正确使用时可以极大地增强程序的健壮性和错误处理能力。帮助我们写出质量更高的C++代码。
2024-04-13 14:23:30 500
原创 fopen文件操作详解(全网最全)
fopen通过对fopen的各种模式标识符的深入了解和正确使用,可以使文件操作在C程序中既安全又高效。希望本文能帮助大家更好地掌握这一工具,优化编程实践。
2024-04-13 11:29:30 56 1
原创 C++开源库大全
程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。
2024-04-13 10:18:40 58
原创 C++内存泄露处理方法
在使用C++进行软件开发时,内存管理是一个核心且不可回避的问题。不当的内存管理不仅会导致内存泄露,还可能引发程序的不稳定甚至崩溃。本文将详细探讨C++中内存泄露的成因、诊断方法以及预防和修复策略,以提高开发者在实际工作中对内存管理的掌控能力。内存泄露指的是程序在申请内存后,未能在不再使用它时正确释放,导致内存资源无法被再次有效利用。长时间运行的程序如果存在内存泄露,将会逐渐消耗完系统所有可用内存,影响程序性能,甚至导致程序和系统的崩溃。正确管理内存是C++编程中至关重要的技能。
2024-04-13 10:17:43 141
原创 C++常量变量作用域及使用详解
对一个C++变量来说,有两个属性非常重要:作用域和生命周期,它们从两个不同的维度描述了一个变量--时间和空间。顾名思义,作用域就是一个变量可以被引用的范围,如:全局作用域、文件作用域、局部作用域;而生命周期就是这个变量可以被引用的时间段。不同生命周期的变量,在程序内存中的分布位置是不一样的。一个程序的内存分为代码区、全局数据区、堆区、栈区,不同的内存区域,对应不同的生命周期。在C++中,变量的作用域和生命周期是两个核心概念,它们定义了变量何时可以被程序访问以及变量存在的时间长度。
2024-04-05 22:16:28 40 1
原创 C++ Boost ASIO网路通信库
Boost ASIO(Asynchronous I/OLibrary)是Boost库的一部分,由Andrei Alexandrescu创建。它设计用于解决网络和低级通信问题,特别是异步I/O,使开发人员能够轻松地编写高性能的网络应用程序。ASIO的核心理念是提供一个简洁且易于使用的接口,同时保持底层的性能和灵活性。Boost ASIO是一个强大且灵活的网络通信库,其异步I/O模型使得网络编程变得更加简单高效。虽然学习曲线可能会稍有陡峭,但一旦熟悉,它将极大地提升我们的网络编程能力。在实际项目中,结合。
2024-04-05 21:41:48 35 1
原创 关于学习C++编程的50个观点
8. 如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的c++水平并没有和你通关的能力一起变高——其实可以时刻记住:学c++是为了编游戏的;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;40. 既然决定了学c++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;28. c++绝不是所谓的c的“扩充”——如果c++一开始就起名叫z语言,你一定不会把c和z语言联系得那么紧密;
2024-04-05 20:35:41 1010 1
原创 C++常用第三方库及使用注意事项
在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。
2024-04-05 20:27:03 50 1
原创 十个海量数据处理方法总结
处理海量数据是当今很多行业面临的挑战,尤其是在大数据时代。有效管理和处理海量数据对于获取洞察力、提升效率和做出更好的决策至关重要。下面是十种常用的海量数据处理方法,对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。尤其是高级开发的笔试面试都会涉及,下面做一个总结,希望对大家有所启发和帮助。
2024-03-31 16:53:46 46
原创 十道海量数据处理面试题
位图法比较适合于这种情况,它的做法是按照集合中最大元素max创建一个长度为max+1的新数组,然后再次扫描原数组,遇到几就给新数组的第几位置上1,如遇到5就给新数组的第六个元素置1,这样下次再遇到5想置位时发现新数组的第六个元素已经是1了,这说明这次的数据肯定和以前的数据存在着重复。对每个小文件,统计每个文件中出现的词以及相应的频率(可以采用trie树/hash_map等),并取出出现频率最大的100个词(可以用含100个结点的最小堆),并把100个词及相应的频率存入文件,这样又得到了5000个文件。
2024-03-31 14:09:00 652
原创 VMware虚拟机与Windows主机之间文件共享
两种方法各有优势,共享文件夹功能操作简便,而网络共享更接近实际网络操作的场景,可以按照实际需求选择合适的方法进行文件共享。
2024-03-31 13:05:09 1473
原创 VMware虚拟机与Windows主机之间相互复制粘贴文件实现
平时我们从主机往虚拟机拷贝文件时,需要通过共享文件夹或者移动存储设备(U盘或移动硬盘)来做中转,那么有没有什么好办法能够直接把主机的文件或数据复制到虚拟机,这样就可以既方便又节省时间,那么有没有这样的办法呢?
2024-03-31 13:04:42 3730
原创 C++模板类 容器之map及对象副本 深/浅拷贝等问题浅析
(1).一个未命名的临时string 对象被构造并传递给与map 类相关联的下标操作符,这个对象用Anna 初始化,(2).在word_count 中查找Anna 项,没有找到(3) .一个新的键/值对被插入到word_count 中。当然键是一个string对象持有“Anna”。但是值不是1而是0(4).插入完成接着值被赋为1用下标操作符把map 初始化至一组元素集合,会使每个值都被初始化为缺省值。然后再被赋值为显式的值,如果元素是类对象而且它的缺省初始化和赋值的运算量都很大。
2024-03-25 22:18:35 127
原创 Visual Studio 2022安装使用教程-详细
在属性页对话框下配置属性,选择链接器-> 系统,然后选择编辑框旁边子系统属性。在显示的下拉列表菜单,选择控制台 (/SUBSYSTEM: CONSOLE)。选择确定以保存所做的更改。若要生成项目时,从生成菜单选择生成解决方案或者直接按快捷键F7。输出窗口会显示生成过程的结果。我们可以看到,输出“Hello World!”,在右边的三角箭头下来列表中选择“c++17”在项目的属性页对话框中选择。3)、 点击2022下载,会弹出登录。11)、选择C++17语言标准。8)、安装完之后,点击“
2024-03-25 22:16:31 203
原创 Navicat 安装详解
Navicat premium非常功能强大的多连接数据库管理工具,提供了简单数据库开发的基本和必需的功能,可以为专业开发人员提供满足他们所有特定需求的功能,而且对于刚接触数据库服务器的用户来说也很容易学习。复制请求码到注册机中的 Request Code 里面,之后点击 Activation Code 下面的 Generate 按钮就会生成一个激活码。点击 Generate 生成按钮就会生成一个许可证秘钥,将许可证秘钥复制后再打开 Navicat Premium 15。点击手动激活后会生成一个请求码。
2024-03-23 12:30:20 4132 1
Navicat安装指导及安装资源
2024-03-23
vncserver和vncviewer
2017-06-01
大数据资料集锦
2016-03-30
Hadoop技术全套图书
2016-03-21
Apache Flume Distributed Log Collection for Hadoop
2016-03-21
《Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理》
2016-03-21
《Hadoop技术内幕:深入解析Hadoop Common和HDFS
2016-03-21
jQuery瀑布流经典布局源码
2016-01-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人