芯动大师_社区达人页

个人头像照片
芯动大师
已加入开发者社区833

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
乘风问答官
乘风问答官
个人头像照片
技术博主
技术博主
个人头像照片
一代宗师
一代宗师

成就

已发布525篇文章
64条评论
已回答40个问题
1条评论
已发布0个视频
github地址

技术能力

兴趣领域
  • C语言
  • 芯片
  • Python
  • Android开发
  • 人工智能
  • 智能网卡
  • 小程序
擅长领域
技术认证

暂时未有相关云产品技术能力~

凡事预则立,不预则废

暂无精选文章
暂无更多信息

2023年09月

  • 09.11 21:35:45
    发表了文章 2023-09-11 21:35:45

    C++重载输入和输出运算符

    在C++中,标准库本身已经对左移运算符<<和右移运算符>>分别进行了重载,使其能够用于不同数据的输入输出,但是输入输出的对象只能是 C++ 内置的数据类型(例如 bool、int、double 等)和标准库所包含的类类型(例如 string、complex、ofstream、ifstream 等)。 如果我们自己定义了一种新的数据类型,需要用输入输出运算符去处理,那么就必须对它们进行重载。本节以前面的 complex 类为例来演示输入输出运算符的重载。 其实 C++ 标准库已经提供了 complex 类,能够很好地支持复数运算,但是这里我们又自己定义了一个 complex 类,这样做仅仅是
  • 09.10 21:08:37
    发表了文章 2023-09-10 21:08:37

    C++的运算符重载介绍

    所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。运算符重载(Operator Overloading)也是一个道理,同一个运算符可以有不同的功能。 实际上,我们已经在不知不觉中使用了运算符重载。例如,+号可以对不同类型(int、float 等)的数据进行加法操作;<<既是位移运算符,又可以配合 cout 向控制台输出数据。 C++ 本身已经对这些运算符进行了重载。C++ 也允许程序员自己重载运算符,这给我们带来了很大的便利。 下面的代码定义了一个复数类,通过运算符重载,可以用+号实现复数的加法运算:
  • 09.09 20:45:49
    发表了文章 2023-09-09 20:45:49

    C++中的typeid运算符

    typeid 运算符用来获取一个表达式的类型信息。类型信息对于编程语言非常重要,它描述了数据的各种属性: 对于基本类型(int、float 等C++内置类型)的数据,类型信息所包含的内容比较简单,主要是指数据的类型。 对于类类型的数据(也就是对象),类型信息是指对象所属的类、所包含的成员、所在的继承关系等。 类型信息是创建数据的模板,数据占用多大内存、能进行什么样的操作、该如何操作等,这些都由它的类型信息决定。 typeid 的操作对象既可以是表达式,也可以是数据类型,下面是它的两种使用方法: typeid( dataType ) typeid( expression ) dat
  • 09.08 22:12:38
    发表了文章 2023-09-08 22:12:38

    C++的纯虚函数和抽象类

    在C++中,可以将虚函数声明为纯虚函数,语法格式为: virtual 返回值类型 函数名 (函数参数) = 0; 纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上=0,表明此函数为纯虚函数。 最后的=0并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”。 包含纯虚函数的类称为抽象类(Abstract Class)。之所以说它抽象,是因为它无法实例化,也就是无法创建对象。原因很明显,纯虚函数没有函数体,不是完整的函数,无法调用,也无法为其分配内存空间。抽象类通常是作为基类,让派生类去实现纯虚函数。派生类必须实现纯虚函数才能被实例化。纯虚函数使用举例:
  • 09.07 21:44:14
    发表了文章 2023-09-07 21:44:14

    C++中的多态和虚函数

    #include <iostream> using namespace std; //基类People class People{ public: People(char *name, int age); void display(); protected: char *m_name; int m_age; }; People::People(char *name, int age): m_name(name), m_age(age){} void Peopl
  • 09.06 20:49:17
    发表了文章 2023-09-06 20:49:17

    C++的向上转型

    在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍。例如: int a = 10.9; printf("%d\n", a); 输出结果为 10,编译器会将小数部分直接丢掉(不是四舍五入)。再如: float b = 10; printf("%f\n", b); 输出结果为 10.000000,编译器会自动添
  • 09.05 21:13:37
    发表了文章 2023-09-05 21:13:37

    C++中虚继承时的构造函数

    在虚继承中,虚基类是由最终的派生类初始化的,换句话说,最终派生类的构造函数必须要调用虚基类的构造函数。对最终的派生类来说,虚基类是间接基类,而不是直接基类。这跟普通继承不同,在普通继承中,派生类构造函数中只能调用直接基类的构造函数,不能调用间接基类的。 下面我们以菱形继承为例来演示构造函数的调用: #include <iostream> using namespace std; //虚基类A class A{ public: A(int a); protected: int m_a; }; A:
  • 09.04 22:18:11
    发表了文章 2023-09-04 22:18:11

    C++将派生类赋值给基类

    在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍。例如: int a = 10.9; printf("%d\n", a); 输出结果为 10,编译器会将小数部分直接丢掉(不是四舍五入)。再如: float b = 10; printf("%f\n", b); 输出结果为 10.000000,编译器会自动添
  • 09.03 20:34:07
    发表了文章 2023-09-03 20:34:07

    C++中的语法知识虚继承和虚基类

    多继承(Multiple Inheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。 多继承时很容易产生命名冲突,即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有可能发生,比如典型的是菱形继承,如下图所示: 图1:菱形继承 类 A 派生出类 B 和类 C,类 D 继承自类 B 和类 C,这个时候类 A 中的成员变量和成员函数继承到类 D 中变成了两份,一份来自 A-->B-->D 这条路径,另一份来自 A-->C-->
  • 09.02 22:07:42
    发表了文章 2023-09-02 22:07:42

    C++的多重继承

    派生类都只有一个基类,称为单继承(Single Inheritance)。除此之外,C++也支持多继承(Multiple Inheritance),即一个派生类可以有两个或多个基类。 多继承容易让代码逻辑复杂、思路混乱,一直备受争议,中小型项目中较少使用,后来的 Java、C#、PHP 等干脆取消了多继承。 多继承的语法也很简单,将多个基类用逗号隔开即可。例如已声明了类A、类B和类C,那么可以这样来声明派生类D: class D: public A, private B, protected C{ //类D新增加的成员 } D 是多继承形式的派生类,它以公有的方式继承 A 类,

2023年08月

  • 08.31 20:53:31
    发表了文章 2023-08-31 20:53:31

    C++的基类和派生类构造函数

    基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通的成员函数。 在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数完成,但是大部分基类都有 private 属性的成员变量,它们在派生类中无法访问,更不能使用派生类的构造函数来初始化。 这种矛盾在C++继承中是普遍存在的,解决这个问题的思路是:在派生类的构造函数中调用基类的构造函数。 下面的例子展示了如何在派生类的构造函数中调用基类的构造函数:
  • 08.30 21:14:50
    发表了文章 2023-08-30 21:14:50

    C++中的继承和派生

    C++ 中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。 继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。 在C++中,派生(Derive)和继承是一个概念,只是站的角度不同。继承是儿子接收父亲的产业,派生是父亲把产业传承给儿子。 被继承的类称为父类或基类,继承的类称为子类或派生类。“子类”和“父类”通常放在一起称呼,“基类”和“派生类”通常放在一起称呼。 派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。
  • 08.29 21:55:02
    发表了文章 2023-08-29 21:55:02

    C++中的 class和struct区别

    C++ 中保留了C语言的 struct 关键字,并且加以扩充。在C语言中,struct 只能包含成员变量,不能包含成员函数。而在C++中,struct 类似于 class,既可以包含成员变量,又可以包含成员函数。 C++中的 struct 和 class 基本是通用的,唯有几个细节不同: 使用 class 时,类中的成员默认都是 private 属性的;而使用 struct 时,结构体中的成员默认都是 public 属性的。 class 继承默认是 private 继承,而 struct 继承默认是 public 继承(《C++继承与派生》一章会讲解继承)。 class 可以使用模板,
  • 08.28 21:04:53
    发表了文章 2023-08-28 21:04:53

    C++字符串详解

    C++ 大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的 string 类。string 类处理起字符串来会方便很多,完全可以代替C语言中的字符数组或字符串指针。 string 是 C++ 中常用的一个类,它非常重要,我们有必要在此单独讲解一下。 使用 string 类需要包含头文件<string>,下面的例子介绍了几种定义 string 变量(对象)的方法: #include <iostream> #include <string> using namespace std; int main(){ string s1
  • 08.27 19:21:15
    发表了文章 2023-08-27 19:21:15

    C++友元函数和友元类

    在 C++ 中,一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。现在,我们来介绍一种例外情况——友元(friend)。 借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的 private 成员。 friend 的意思是朋友,或者说是好友,与好友的关系显然要比一般人亲密一些。我们会对好朋友敞开心扉,倾诉自己的秘密,而对一般人会谨言慎行,潜意识里就自我保护。 在 C++ 中,这种友好关系可以用 friend 关键字指明,中文多译为“友
  • 08.26 20:28:04
    发表了文章 2023-08-26 20:28:04

    C++中的const成员变量和成员函数

    在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。 const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表,这点在前面已经讲到了,请猛击《C++初始化列表》回顾。 const成员函数(常成员函数) const 成员函数可以使用类中的所有成员变量,但是不能修改它们的值,这种措施主要还是为了保护数据而设置的。const 成员函数也称为常成员函数。 我们通常将 get 函数设置为常成员函数。
  • 08.25 22:11:08
    发表了文章 2023-08-25 22:11:08

    C++构造函数初始化列表

    构造函数的一项重要功能是对成员变量进行初始化,为了达到这个目的,可以在构造函数的函数体中对成员变量一一赋值,还可以采用初始化列表。 C++构造函数的初始化列表使得代码更加简洁,请看下面的例子: #include <iostream> using namespace std; class Student{ private: char *m_name; int m_age; float m_score; public: Student(char *name, int age, float s
  • 08.24 21:56:17
    发表了文章 2023-08-24 21:56:17

    C++类成员的访问权限以及类的封装

    C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。所谓访问权限,就是你能不能使用该类中的成员。 Java、C# 程序员注意,C++ 中的 public、private、protected 只能修饰类的成员,不能修饰类,C++中的类没有共有私有之分。 在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。 在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问 p
  • 08.23 22:38:35
    发表了文章 2023-08-23 22:38:35

    C++函数重载

    在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如希望交换两个变量的值,这两个变量有多种类型,可以是 int、float、char、bool 等,我们需要通过参数把变量的地址传入函数内部。
  • 08.22 22:31:41
    发表了文章 2023-08-22 22:31:41

    C++头文件和std命名空间

    C++ 是在C语言的基础上开发的,早期的 C++ 还不完善,不支持命名空间,没有自己的编译器,而是将 C++ 代码翻译成C代码,再通过C编译器完成编译。 这个时候的 C++ 仍然在使用C语言的库,stdio.h、stdlib.h、string.h 等头文件依然有效;此外 C++ 也开发了一些新的库,增加了自己的头文件,例如: iostream.h:用于控制台输入输出头文件。 fstream.h:用于文件操作的头文件。 complex.h:用于复数计算的头文件。 和C语言一样,C++ 头文件仍然以.h为后缀,它们所包含的类、函数、宏等都是全局范围的。 后来 C++ 引入了命名空间的概
  • 08.21 21:39:46
    发表了文章 2023-08-21 21:39:46

    C++的对象与类的含义

    C++是一门面向对象的编程语言,理解C++需要掌握类(class)和对象(object)这两个概念。 C++ 中的类(Class)可以看做C语言中结构体(Struct)的升级版。结构体是一种构造类型,可以包含若干成员变量,每个成员变量的类型可以不同;可以通过结构体来定义结构体变量,每个变量拥有相同的性质。例如: #include <stdio.h> //定义结构体 Student struct Student{ //结构体包含的成员变量 char *name; int age; float score; }; //显示结构体的成员变量 void displ
  • 08.20 21:48:04
    发表了文章 2023-08-20 21:48:04

    C++实现对回收站里的文件进行操作

    本篇文章主要为大家详细介绍了C++如何使用代码对回收站里的文件进行操作,譬如文件的删除与恢复等。 方式一:设置不同的SHFILEOPSTRUCT结构体,调用SHFileOperation函数就可以实现拷贝、删除、移动等文件操作 SHGetSpecialFolderLocation函数: 原型: HRESULT SHGetSpecialFolderLocation(HWND hwnd, int csidl, PIDLIST_ABSOLUTE* ppidl) 该函数用于获取特殊文件夹的物理路径。它接受以下参数: hwnd:可选参数,指定父窗口的句柄。如果不需要与窗口关联,可以设置为NU
  • 08.19 22:26:21
    发表了文章 2023-08-19 22:26:21

    QT设置widget背景图片

    首先说方法,在给widget或者frame或者其他任何类型的控件添加背景图时,在样式表中加入如下代码,指定某个控件,设置其背景。 类名 # 控件名 { 填充方式:图片路径 } 例如: QWidget#Widget { border-image: url(:/resource/bg2.png); } 或者 QFrmae#frame { border-image: url(:/resource/bg2.png); } 如果单纯改变样式表,没有指定控件的话,内部的其他控件背景也会改变。 特别提醒:类名 # 控件名,其中控件名要准确,假如你把widget的名字改成了其他,那么这里
  • 08.18 22:23:34
    发表了文章 2023-08-18 22:23:34

    C++中String的语法及常用接口用法

    在C语言中,string是一个标准库类(class),用于处理字符串,它提供了一种更高级、更便捷的字符串操作方式,string 类提供了一系列成员函数和重载运算符,以便于对字符串进行操作和处理。
  • 08.17 22:22:02
    发表了文章 2023-08-17 22:22:02

    VisualStudio打包项目文件为.exe安装包

    注意事项:打包项目前,确保项目能正常运行,不然打包毫无意义。
  • 08.16 21:45:13
    发表了文章 2023-08-16 21:45:13

    SQLite数据库实现数据增删改查

    当前文章介绍的设计的主要功能是利用 SQLite 数据库实现宠物投喂器上传数据的存储,并且支持数据的增删改查操作。其中,宠物投喂器上传的数据包括投喂间隔时间、水温、剩余重量等参数。 实现功能: 创建 SQLite 数据库表,用于存储宠物投喂器上传的数据。 实现对数据库表中数据的插入操作,即将从宠物投喂器接收到的数据存储到数据库中。 实现对数据库表中数据的查询操作,包括按照投喂间隔时间、水温、剩余重量等参数进行筛选,以便用户能够查看特定范围内的数据信息。 实现对数据库表中数据的修改操作,即可以修改已经存储的宠物投喂器上传的数据。 实现对数据库表中数据的删除操作,即可以删除已经存储的宠
  • 08.15 22:08:35
    发表了文章 2023-08-15 22:08:35

    QT使用QML实现地图绘制虚线

    QML提供了MapPolyline用于在地图上绘制线段,该线段是实线,因此我使用Canvas自定义绘制的方式在地图上绘制线段
  • 08.13 22:49:58
    发表了文章 2023-08-13 22:49:58

    C++使用new来初始化指向类的指针

    C++使用new来初始化类的指针 1.ClassName * p = new ClassName; 调用默认构造函数。 如果类里没有写默认构造函数,会使用编译器帮我们生成的,但不会初始化成员变量,如 class NoConstructor    //没写构造函数的类 { public:     ~NoConstructor() {}     void printVal()      {          cout << m_val << endl;      } private:     int m_val; }; NoConstructor* p1 = new NoConstruct
  • 08.09 22:13:10
    发表了文章 2023-08-09 22:13:10

    C语言驱动开发之内核解锁与强删文件

    在某些时候我们的系统中会出现一些无法被正常删除的文件,如果想要强制删除则需要在驱动层面对其进行解锁后才可删掉,而所谓的解锁其实就是释放掉文件描述符(句柄表)占用,文件解锁的核心原理是通过调用ObSetHandleAttributes函数将特定句柄设置为可关闭状态,然后在调用ZwClose将其文件关闭,强制删除则是通过ObReferenceObjectByHandle在对象上提供相应的权限后直接调用ZwDeleteFile将其删除,虽此类代码较为普遍,但作为揭秘ARK工具来说也必须要将其分析并讲解一下。
  • 08.09 22:08:17
    发表了文章 2023-08-09 22:08:17

    C语言驱动开发之内核解锁与强删文件

    在某些时候我们的系统中会出现一些无法被正常删除的文件,如果想要强制删除则需要在驱动层面对其进行解锁后才可删掉,而所谓的解锁其实就是释放掉文件描述符(句柄表)占用,文件解锁的核心原理是通过调用ObSetHandleAttributes函数将特定句柄设置为可关闭状态,然后在调用ZwClose将其文件关闭,强制删除则是通过ObReferenceObjectByHandle在对象上提供相应的权限后直接调用ZwDeleteFile将其删除,虽此类代码较为普遍,但作为揭秘ARK工具来说也必须要将其分析并讲解一下。
  • 08.08 22:49:51
    发表了文章 2023-08-08 22:49:51

    Qt搭建RTSP服务器

    一、项目背景 随着物联网技术不断发展,视频监控系统在各个领域的应用越来越广泛。其中,RTSP(Real Time Streaming Protocol)是一种常用的流媒体传输协议,可以实现对实时音视频数据的传输和播放。为了实现视频监控系统的网络化和智能化,需要开发一个基于RTSP协议的视频流服务器,能够接收前端设备的视频流,并提供RTSP协议的服务,方便客户端进行实时的视频浏览、回放等操作。 在开发过程中,为了提高开发效率、减少开发难度和成本,同时具备良好的可扩展性和可维护性,我选择使用Qt和Live555库来搭建RTSP服务器。Qt是一个跨平台的C++应用程序开发框架,具有完善的GUI界
  • 08.07 22:07:34
    发表了文章 2023-08-07 22:07:34

    CMake中使用vcpkg

    vcpkg是一个微软开源的C++包管理器。 在以前的开发中,如果在项目中需要使用某个开源库,例如qt,我们需要取官网下载qt的源码,然后构建得到对应的库,然后在项目中链接这个库。对于自己熟悉的库还好说,若是不熟悉的库,如何拉取源码?如何构建?如何在项目中引用?等等这些问题通常会困扰我们,然而,大多数情况下,我们只是使用这个开源库,并不需要关心这个库的构建和编译等问题。如此,在以前的开发过程中,往往会花费不少的时间在引入开源库上。 vcpkg是在背景下开发出来的,通过vcpkg,我们可以在项目中很方便的引入开源库,不用再关心拉取代码、构建开源库的这些事情。 CMake构建的项目中引入开源库
  • 08.06 21:03:11
    发表了文章 2023-08-06 21:03:11

    C与C++之间的相互调用及函数区别

    最近项目需要使用google test(以下简称为gtest)作为单元测试框架,但是项目本身过于庞大,main函数无从找起,需要将gtest框架编译成静态库使用。因为项目本身是通过纯c语言编写,而gtest则是一个c++编写的测试框架,其中必然涉及c与c++之间的相互调用。 注意,本文的前提是,c代码采用gcc等c语言编译器编译c代码,采用g++等c++编译器编译c++代码,如果c和c++代码统一使用g++编译,大部分情况是可以实现两者代码相互调用的。以下为踩坑过程的总结o_O||。 c与c++的函数区别 要了解两者之间如何实现相互调用,必须先了解c与c++之间的函数有什么不同。 c+
  • 08.05 22:21:14
    发表了文章 2023-08-05 22:21:14

    C++实现对回收站里的文件进行操作

    本篇文章主要为大家详细介绍了C++如何使用代码对回收站里的文件进行操作,譬如文件的删除与恢复等。 方式一:设置不同的SHFILEOPSTRUCT结构体,调用SHFileOperation函数就可以实现拷贝、删除、移动等文件操作 SHGetSpecialFolderLocation函数: 原型: HRESULT SHGetSpecialFolderLocation(HWND hwnd, int csidl, PIDLIST_ABSOLUTE* ppidl) 该函数用于获取特殊文件夹的物理路径。它接受以下参数: hwnd:可选参数,指定父窗口的句柄。如果不需要与窗口关联,可以设置为NU
  • 08.04 23:22:08
    发表了文章 2023-08-04 23:22:08

    vscode配置gitbash终端

    VSCode是一款微软出的轻量级编辑器,它本身只是一款文本编辑器而已,所有的功能都是以插件扩展的形式所存在,想用什么功能就安装对应的扩展即可,非常方便,同时也支持非常多的主题和图标,外观比较好看,重要的是VSCode支持各大主流操作系统,包括Windows、Linux和Mac OS。所以就选择它作为自己的一款主要的编辑器来使用。
  • 08.03 22:20:18
    发表了文章 2023-08-03 22:20:18

    合并k个已排序的链表

    前言: 今天给大家分享一道面试中常见的题目——合并K个升序链表,我会用暴力和分治两钟方法去求解这道题目,通过动图展示问题求解的全过程。这里提醒大家,画图是我们求解复杂问题的有效手段,有时可以起到事半功倍的效果,各位小伙伴在做题的过程中如果遇到麻烦,不妨动手画画图哟。 题目描述: 合并K个升序的链表并将结果作为一个升序的链表返回其头节点。例如: 输入:[{1,2},{1,4,5},{6},{2,3,5}] 输出:{1,1,2,2,3,4,5,5,6} 思路一:暴力求解法 首先根据题目的描述,画出如下模拟图。 第一步:确定合并后链表的头节点rhead 从上图中可以看出:lists
  • 08.02 21:58:30
    发表了文章 2023-08-02 21:58:30

    c++实现哈希桶

    闭散列的回顾 在前面的学习中我们知道了闭散列的运算规则,当两个数据计算得到的位置发生冲突时,它会自动的往后寻找没有发生冲突的位置,比如说当前数据的内容如下: 当插入的数据为33时计算的位置为3,可是位置3已经被占领了并且4也被占领了,但是位置5没有被占领所以插入数据33就会占领位置5,那么这里的图片就如下: 这就是闭散列的插入原则,并且每个节点都有一个变量用来表示状态,这样在查找就不会出现漏查的情况,但是这样的实现会存在一个问题,扩容是根据有效数据的个数和vector容量来确定的,但是查找的时候是根据当前元素的状态是否为空来判断后面还有没有要查找的数据,如果为空的话则说明当前元素的后面没
  • 08.01 21:33:03
    发表了文章 2023-08-01 21:33:03

    基于Qt编写超精美自定义控件

    无论是哪一门开发框架,如果涉及到UI这块,肯定需要用到自定义控件,越复杂功能越多的项目,自定义控件的数量就越多,最开始的时候可能每个自定义控件都针对特定的应用场景,甚至里面带了特定的场景的一些设置和处理,随着项目数量的增多,有些控件又专门提取出来共性,做成了通用的自定义控件,意味着控件主要做外观处理,用户根据不同的场景需要,设置不同的外观和规则,就这样搞来搞去搞到现在,已经超过了202个控件,慢慢的积累迭代和更新,历经超过9年的时间不断的完善,尤其是对不同Qt版本、不同编译器、不同操作系统的支持,其中Qt6改动比较大,很多方法或者类改名或者废弃了,需要用类似的方法处理,在改完整个自定义控件大全

2023年07月

  • 07.31 21:16:05
    发表了文章 2023-07-31 21:16:05

    配置 Sublime Text4为 C++ 编辑器的方法

    自定义在Terminus的终端中编译运行cpp文件: 在Tools->Build System->New Build System中新建编译文件,保存为CppTerminus.sublime-build,替换内容
  • 07.30 22:14:21
    发表了文章 2023-07-30 22:14:21

    合并k个已排序的链表

    今天给大家分享一道面试中常见的题目——合并K个升序链表,我会用暴力和分治两钟方法去求解这道题目,通过动图展示问题求解的全过程。这里提醒大家,画图是我们求解复杂问题的有效手段,有时可以起到事半功倍的效果,各位小伙伴在做题的过程中如果遇到麻烦,不妨动手画画图哟。
  • 07.29 22:57:06
    发表了文章 2023-07-29 22:57:06

    C++中互斥锁的使用

    我们现在有一个需求,我们需要对 g_exceptions 这个 vector 的访问进行同步处理,确保同一时刻只有一个线程能向它插入新的元素。为此我使用了一个 mutex 和一个锁(lock)。mutex 是同步操作的主体,在 C++ 11 的 <mutex> 头文件中,有四种风格的实现: mutex:提供了核心的 lock() unlock() 方法,以及当 mutex 不可用时就会返回的非阻塞方法 try_lock() recursive_mutex:允许同一线程内对同一 mutex 的多重持有 timed_mutex: 与 mutex 类似,但多了 try_lock_for() t
  • 07.28 22:00:33
    发表了文章 2023-07-28 22:00:33

    如何配置 Sublime Text4为 C++ 编辑器

    自定义在Terminus的终端中编译运行cpp文件: 在Tools->Build System->New Build System中新建编译文件,保存为CppTerminus.sublime-build
  • 07.27 21:38:44
    发表了文章 2023-07-27 21:38:44

    c++实现哈希桶

    这就是闭散列的插入原则,并且每个节点都有一个变量用来表示状态,这样在查找就不会出现漏查的情况,但是这样的实现会存在一个问题,扩容是根据有效数据的个数和vector容量来确定的,但是查找的时候是根据当前元素的状态是否为空来判断后面还有没有要查找的数据,如果为空的话则说明当前元素的后面没有我们要查找的元素,如果为存在或者被删除的话就说明当前元素的后面还有我们要查找的数据,如果我们不停的插入数据并且删除数据的话就会导致容器中的每个元素的状态都变成了被删除这样在查找一个不存的数据时,就会陷入死循环的状态那么这就是我们之前模拟实现的一个缺点,那么这里我们就来看看第二个解决数据不集中的方法:拉链法或者叫哈
  • 07.26 22:14:09
    发表了文章 2023-07-26 22:14:09

    C++ 中的std::array实现编译器排序

    某日二师兄参加XXX科技公司的C++工程师开发岗位第25面: 面试官:array熟悉吗? 二师兄:你说的是原生数组还是std::array? 面试官:你觉得两者有什么区别? 二师兄:区别不是很大,原生数组(非动态数组)和std::array都在栈上开辟空间,初始化的时候需要提供数组长度,且长度不可改变。有一点区别的是,std::array提供了安全的下标访问方法at,当下标越界时会抛出异常。
  • 07.25 21:46:20
    发表了文章 2023-07-25 21:46:20

    运用事件与定时器实现字幕滚动效果(Qt开发)

    1、效果展示 我们经常能够在外面看到那种滚动字幕,那么就拿qt来做一个吧。 2、实现思路 实现一个窗口部件,这个窗口部件显示了一串文本标语,它会每t毫秒向左移动一个像素。如果窗口部件比文本宽,那么文本将会被多次重复,直到能够填满整个窗口部件的宽度为止。 3、滚动窗口部件 创建一个滚动窗口类,将其命名为ticker。 3.1、成员变量 我们需要提供几个成员变量。 myText用来表示要显示的文本内容。 offset表示当前偏移量。 myTimerId表示定时器的ID编号。 QString myText; int offset; int myTimer
  • 07.24 21:46:00
    发表了文章 2023-07-24 21:46:00

    C++使用VLD检测内存泄漏

    C/C++ 程序越复杂,内存的管理显得越重要,稍有不慎就会出现泄漏。如果内存泄漏不是很严重,在短时间内对程序不会有太大影响,这也使得内存泄漏问题有很强的隐蔽性,不易被发现。 然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的 - 从性能下降到内存耗尽,甚至会影响其他程序的正常运行。
  • 发表了文章 2024-07-01

    LDO产品的基础知识解析

  • 发表了文章 2024-06-30

    LDO产品的基础知识解析

  • 发表了文章 2024-06-29

    DC-DC产品设计PCB注意事项

  • 发表了文章 2024-06-27

    关于LDO,读懂这一篇就够了

  • 发表了文章 2024-06-26

    LDO电源模块

  • 发表了文章 2024-06-25

    开关电源DC-DC电源应用设计原理

  • 发表了文章 2024-06-24

    LDO电源模块如何快速设计布局

  • 发表了文章 2024-06-22

    在Ubuntu系统上定制文件系统

  • 发表了文章 2024-06-21

    噪声-降噪引脚如何提高系统性能

  • 发表了文章 2024-06-20

    LDO的原理及测试方法

  • 发表了文章 2024-06-17

    基于AB32VG1的冬笋探测器设计

  • 发表了文章 2024-06-15

    Apache IoTDB进行IoT相关开发实践

  • 发表了文章 2024-06-14

    关于LDO,读懂这一篇就够了

  • 发表了文章 2024-06-13

    eFuse电子保险丝,需要了解的技术干货来啦

  • 发表了文章 2024-06-12

    Apache IoTDB进行IoT相关开发实践

  • 发表了文章 2024-06-11

    C++的list-map链表与映射表

  • 发表了文章 2024-06-06

    c++实现哈希桶

  • 发表了文章 2024-06-05

    使用阿里云解决云上数据保存的挑战

  • 发表了文章 2024-06-05

    RA8D1-Vision Board上OSPI-Flash实践

  • 发表了文章 2024-06-04

    大模型技术的发展与实践

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2024-01-22

    你完整阅读过源码吗?

    对于“读源码太枯燥,没啥意思”的观点,可以从多个角度理解和回应:

    学习阶段与兴趣点:对于初学者或者对编程、软件架构尚不深入理解的开发者来说,直接阅读复杂的源代码确实可能感觉枯燥且难以吸收。他们可能更需要从基础概念、API文档和教学示例入手,逐步建立系统的知识体系。然而,随着技术能力和经验的增长,理解并研究高质量的源码能够帮助开发者提升设计思维和解决问题的能力,从而可能会发现其中的乐趣。
    
    学习方法论:阅读源码并非一蹴而就的过程,也不是单纯地逐行扫描代码。有效的源码阅读应当结合问题导向、模块化分析以及适当的调试实践。通过了解项目背景、明确目标、拆分功能模块,甚至参与到社区讨论中,都可以让这个过程变得更有意义和吸引力。
    
    价值体现:源码是众多优秀工程师智慧的结晶,尤其是开源项目中的顶级源码,它们代表了业界的最佳实践和创新思路。通过阅读源码,我们可以学习到如何优化性能、处理复杂逻辑,以及良好的编码规范和设计模式等,这对于个人成长和技术进步具有极大的价值。
    
    挑战与乐趣:如同解谜一样,阅读源码有时就像解开一个精心设计的技术难题,克服挑战后所获得的成就感也是无法忽视的。此外,随着对源码理解的加深,逐渐掌握其运行机制,能更好地驾驭这项技术,这本身也是一种乐趣所在。
    

    总之,“读源码枯燥”这一看法因人而异,取决于个体的学习阶段、方法及对技术探索的态度。在实践中找到适合自己的学习方式,将源码阅读融入日常开发和学习过程中,往往能收获更多有价值的经验和技能提升。

    踩0 评论0
  • 回答了问题 2024-01-22

    预见2024,你对技术革新有哪些猜想?

    边缘计算的普及:随着物联网设备的快速增长和边缘计算技术的成熟,边缘计算将在2024年得到更广泛的应用。边缘计算可以将数据处理和分析推向离终端设备更近的地方,减少数据传输延迟和带宽占用,提高响应速度和用户体验。

    量子计算的商业化:量子计算作为一项前沿技术,具有在某些特定场景下超越传统计算能力的潜力。预计到2024年,量子计算将进一步商业化,云服务提供商可能会开始提供量子计算能力,以支持解决复杂问题和优化算法。

    安全性和隐私保护的增强:随着云计算的普及,对于数据安全性和隐私保护的需求也越来越高。未来,云计算服务提供商将加强数据加密、访问控制和身份认证等安全机制,以确保用户数据的安全和隐私。

    融合AI和云计算:人工智能(AI)在各个行业的应用越来越广泛,而云计算作为支持大规模数据处理和模型训练的基础设施,将与AI融合得更加紧密。未来,云服务提供商可能会提供更强大的AI平台和工具,使开发者能够更轻松地构建和部署AI应用。

    可持续性和能源效率的关注:云计算数据中心的能源消耗一直是一个重要的问题。随着对可持续性的关注不断增加,云计算服务提供商将更加注重节能和环保,采用更高效的硬件设备和数据中心设计,以减少能源消耗和碳排放。

    踩0 评论0
  • 回答了问题 2023-07-14

    乘风问答官5月排位赛开启!话题、问题双赛道,Apple 妙控键盘等你赢!

    积极参与

    踩0 评论0
  • 回答了问题 2023-05-15

    百问求答(4)Flink专场!回答问题赢小爱智能音箱等好礼

    积极参与

    踩0 评论0
  • 回答了问题 2023-03-19

    你使用过哪些云产品组合进行开发?

    作为开发者,我们都知道云计算已经成为了当今软件开发行业的主要趋势。而阿里云作为国内领先的云计算服务提供商,不仅提供了各种云产品服务,还为开发者提供了方便易用的开发工具和平台,使得开发者可以更加轻松地进行开发和部署。 在阿里云的云产品组合中,常见的组合方式包括ECS + RDS、ECS + SLB、OSS + CDN和Function Compute + API Gateway等,不同的组合方式可以满足不同的业务需求和应用场景。 例如,我们在开发一个电商网站时,通常需要使用ECS来部署网站应用程序,使用RDS来存储用户数据和订单信息,使用SLB来实现负载均衡和高可用性。此时,我们可以使用阿里云的ECS、RDS和SLB服务来快速搭建一个高可用性的电商网站,从而为用户提供更好的体验。 云原生时代的到来,使开发者自己完成应用从开发到部署成为了可能。CloudBase 提供的各种基础设施,令开发者无需再纠结于各种服务器配置之中,这极大地解放了生产力,让你的想法可以快速实现和快速上线。开发者快来拥抱 Serverless 吧! uniapp云开发(云数据库) ![图片.png](https://ucc.alicdn.com/pic/developer-ecology 图片.png

    /m77oqron7zljq_94efb8fe4cc6467b87cd0c3f496ec37d.png)

    踩0 评论0
  • 回答了问题 2023-03-19

    ModelScope社区上线,怎么看待它在AIGC发展中起到的作用?

    随着人工智能技术的不断发展,越来越多的企业和个人开始涉足这个领域,但由于人工智能技术的门槛较高,很多人在开始学习时都会感到困难重重。而Modelscope的上线则为这个问题提供了一个可行的解决方案,我记得Modelscope它能够让企业和个人开发者更方便地体验各种人工智能模型,然后就可以加速人工智能技术的普及和发展。AI模型的体量已经跃升至万亿的规模,但大模型的弊端日益凸显:大算力、强算法、大模型。这些都让一些普通开发者望而却步。通过开源,让技术壁垒和计算资源不再是阻碍,降低AI的应用门槛。达摩院的ModelScope正是在这样的共识下应运而生,一经推出就引起AI界极大的关注。

    踩0 评论0
  • 回答了问题 2023-03-19

    乘风问答官2月排位赛开启!话题、问题双赛道,Beats蓝牙耳机等你赢!

    积极学习,重在参与,技术迭代。

    踩0 评论0
  • 回答了问题 2023-03-19

    开发者参与开源软件项目有哪些好处?

    对于目前开源项目的一些思考: 1.随着国家对于技术的越来越重视,越来越多的开源平台和开源项目开始出现,例如目前也有很多的托管平台让技术开发者使用。比如说国际上最大的托管平台GitHub,国内知名的托管平台码云等等。 2.很多的开源项目也随之产生,方便了更多的开发者,我们可以使用更多的开源项目,参考别人优秀的想法,提高自己对于项目的认知水平。

    踩0 评论0
  • 回答了问题 2022-12-27

    2022年你和社区发生了哪些故事?

    我与阿里云社区之间的故事,从今年开始入驻社区之后,便参加了很多的活动,也获得了很多的奖励。一开始接触到阿里云的时候,是朋友的推荐,后面自己开始进一步接触,感觉社区挺不错的,输出了很多优质的文章,对自己的技术提升也有很大的帮助。后面自己也有幸写了自己的第一篇博客,很幸运的签约成为了阿里云社区的一员,由此开始了我的写作之路。从一开始的签约博主,到后来的星级博主,再到后来的专家博主,自己获得荣誉的同时,也创作了很多的文章,为社区的建设贡献了自己的力量。对于即将结束的2022年,我有很多的感悟,与社区之间也产生了很多的感情,希望在2023年阿里云社区能够越来越好,我也可以持续输出更多的优质文章,既能够提升自己的能力,又可以为社区的建设尽自己的力量。微信截图_20221227212114.png

    踩0 评论0
  • 回答了问题 2022-11-25

    OpenSearch如何添加自建MySQL数据源

    在网站上添加了 OpenSearch 功能以后,IE 7.0 和 Firefox 2.0 以上的浏览器(好吧,我承认在 Opera 和 Chrome 里没找到这个功能,但是 IE 8.0 RC 和 Firefox 3.05 是绝对没有问题的)就能够在自带的搜索栏里面添加这个网站的搜索功能了。

    要添加 OpenSearch 功能,一共分三步:

    第一步:实现 OpenSearch 功能;

    第二步:编写 OpenSearch 描述文件;

    第三步:添加对 OpenSearch 描述文件的引用。 ———————————————— 版权声明:本文为CSDN博主「happytdw」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_30045597/article/details/113320448

    踩0 评论0
  • 回答了问题 2022-11-25

    DataV到期被释放如何恢复

    释放SWAP 监控报警一个PVE节点的SWAP使用满了。

    踩0 评论0
  • 回答了问题 2022-11-25

    kibana如何开启公网访问

    配置Kibana私网访问白名单时,需要先打开Kibana私网访问开关(默认关闭)再进行操作。 Kibana公网访问默认开启(绿色),关闭Kibana公网访问功能,公网入口隐藏,您将无法通过公网进入Kiban...

    踩0 评论0
  • 回答了问题 2022-11-25

    Elasticsearch新购实例长时间生效中怎么办

    一般情况下,通过操作系统write接口写到磁盘的数据先到达 Elastic:在 Elasticsearch 中计算摄取延迟并存储摄取时间以提高可观察性 Elastic 中国社区官方博客

    踩0 评论0
  • 回答了问题 2022-11-25

    DataWorks写到外表单个文件超过5G如何处理

    减小JAR文件。DataWorks执行MapReduce作业的时候,需要在本地执行,所以保留Main函数即可。

    踩0 评论0
  • 回答了问题 2022-11-25

    Quick Bi 如何连接PolarDB MySQL

    通过公网连接阿里云PolarDB for MySQL 添加白名单。 公网连接阿里云PolarDB for MySQL之前,需要将Quick BI的IP地址加入到阿里云PolarDB for MySQL的白名单。

    踩0 评论0
  • 回答了问题 2022-11-25

    DataWorks如何计费

    每小时出账:每个小时统计前一个小时的实际使用量,并从账户余额中扣除实际消费的金额。 例如,当前时间是9:30,结算的是8:00~9:00期间产生的费用。 每日出账:每个自然日开始时,统计前一个自然日的实际使用量,并从账户余额中扣除实际消费的金额。

    踩0 评论0
  • 回答了问题 2022-11-25

    E-MapReduce如何创建集群

    登录阿里云 E-MapReduce 控制台。 在上方选择所在的地域(Region),所创建集群将会在对应的地域内,一旦创建后不能修改。 单击创建集群,进行创建。

    踩0 评论0
  • 回答了问题 2022-11-25

    Quick BI是否支持本地部署

    支持

    踩0 评论0
  • 回答了问题 2022-11-25

    如何关闭Dataworks

    登录DataWorks控制台。 单击左上角的图标,选择全部产品>任务运维>运维中心。 在左侧导航栏,单击智能监控>事件管理。 在事件管理页面关闭报警。

    踩0 评论0
  • 回答了问题 2022-11-24

    短信推送服务每次推送的来信号码不一致

    显示手机号码的短信 现在显示手机号码的短信除了是用自己手机发送的短信外,就是卡发短信了。一般人不会用自己的手机大批量发送营销短信,因为很容易被标记为骚扰短信,容易被拦截.

    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息