自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(439)
  • 资源 (17)
  • 收藏
  • 关注

原创 驱动开发学习目录

驱动开发学习目录字符设备驱动开发

2021-07-02 17:25:10 179

原创 【19】c++11新特性 —>线程异步

函数参数:f:任务函数Args:传递给f的参数policy:可调用对象f的执行策略。

2023-11-09 16:27:27 162

原创 【18】c++11新特性 —>线程同步

线程同步:线程同步就是让多个线程按顺序访问临界区域,只有在当前线程访问临时区结束后,下一个线程才能继续访问。(临界区加锁即可)

2023-11-09 15:25:06 183

原创 【17】c++11新特性 —>弱引用智能指针weak_ptr(2)

通过wek_ptr返回管理this资源的共享智能指针对象shared_ptr。C++11中为我们提供了一个模板类叫做std::enable_shared_from_this,这个类中有一个方法叫做shared_from_this(),通过这个方法可以返回一个共享智能指针,在函数的内部就是使用weak_ptr来监测this对象,并通过调用weak_ptr的lock()方法返回一个shared_ptr对象。

2023-11-08 20:25:49 187

原创 【16】c++11新特性 —>弱引用智能指针weak_ptr(1)

弱引用的智能指针,它不共享指针,不能操作资源,是用来监视shared_ptr中管理的资源是否存在。

2023-11-08 17:27:59 122

原创 【16】c++11新特性 —>独占智能指针unique_ptr

std::unique_ptr是一个独占的智能指针,他不允许其他的智能指针共享其内部的指针,可以通过他的构造函数初始化一个独占智能指针对象,但是不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr。int。

2023-11-08 15:46:11 70

原创 【15】c++11新特性 —>共享智能指针(指定删除器)

当智能指针管理的内存对应的引用计数变为0的时候,这块内存就会被智能指针析构掉了。另外,我们在初始化智能指针的时候也可以自己指定删除动作,这个删除操作对应的函数称之为删除器,这个删除器函数本质是一个回调函数,我们只需要进行实现,其调用是由智能指针完成的。

2023-11-08 15:12:20 191

原创 c++线程池

【代码】c++多线程。

2023-11-08 14:55:20 44

原创 【14】c++11新特性 —>共享智能指针

在C++中没有垃圾回收机制,必须自己释放分配的内存,否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针(smart pointer)。。

2023-11-07 18:13:10 182

原创 【13】c++11新特性 —>call_once

在某些特定情况下,某些函数只能在多线程环境下调用一次,比如:要初始化某个对象,而这个对象只能被初始化一次,就可以使用。来保证函数在多线程环境下只能被调用一次。do_once函数只被调用了一次。

2023-11-07 14:48:21 107

原创 【12】c++11新特性 —>forward完美转发

右值引用类型是独立于值的,一个右值引用作为函数参数的形参时,在函数内部转发给内部其他函数时,他就变成了一个左值。并不是原来的类型了。如果需要按照参数原来的类型转发给另一个函数,可以使用std::forward()函数,该函数的功能称之为完美转发。当T不是左值引用类型(T& )时,t将被转换为T类型的右值;当T为左值引用类型(T& )时,t将被转换为T类型的左值;用一个示例演示forward。

2023-11-07 14:18:38 124

原创 【11】c++11新特性 —>move移动语义(2)

当使用移动构造函数时,通常需要使用std::move()函数将左值转换为右值,以便编译器识别出应该调用移动构造函数而非拷贝构造函数.通过使用std::move(),程序员明确知道自己正在进行资源所有权转移,令代码更加清晰和安全。在c++11标准中,引入右值引用和移动语义.移动构造函数允许对象的资源(比如堆内存、文件句柄等)在被移动时进行转移,而非传统的拷贝,这种机制可以大幅度提高性能,特别时对于大型对象来说。

2023-11-07 11:52:46 73

原创 【10】c++11新特性 —>move移动语义(1)

移动语义(Move Semantics)是C++11引入的一个重要特性,它允许在不复制数据的情况下将资源(如内存、指针等)从一个对象转移到另一个对象,从而可以提高程序的性能。在C++11添加了右值引用,并且不能使用左值初始化右值引用,如果想要使用左值初始化一个右值引用需要借助std::move()函数,使用。使用这个函数并不能移动任何东西,而是和移动构造函数一样都具有移动语义,list ls2 = move(ls);//效率高,但是执行完成后,ls将为空。

2023-11-07 09:56:43 50

原创 【9】c++11新特性 —>&&的特性

c++中,不是所有情况下&&都代表一个右值引用,具体的场景体现在模板和自动类型推到中,如果是模板参数,需要指定为&&,如果是自动类型推到需要指定为auto&&,在这两种场景下&&被称为未定义的引用类型,另外还有一点需要额外注意const T&&表示一个右值引用,不是未定义类型。由于上述代码中存在T&&或者auto&&这种未定引用类型,当它作为参数时,有可能被一个右值引用初始化,也有可能被一个左值引用初始化,在进行类型推导时右值引用类型(&&)会发生变化,这种变化被称为。

2023-11-06 23:37:15 355

原创 【8】c++11新特性 —>右值引用(2)

【代码】【8】c++11新特性 —>右值引用(2)

2023-11-06 22:58:49 91

原创 c语言简单线程池实现

【代码】c语言简单线程池实现。

2023-11-06 00:54:42 44

原创 【7】c++11新特性 —>右值引用(1)

C++11增加了一个新的类型,称为右值引用(R-value reference),标记为&&,左值:存储在内存中、有明确存储地址(可取地址)的数据;右值:可以提供数据值的数据()不可取地址。区别:可以使用&取地址的是左值,不能取地址的是右值。一般情况下=左边是左值,=右边是右值,上面前两行,a,b都是左值,520,1314是右值;但是a=b是一种特殊情况,在这个表达式中,a,b都是左值。

2023-11-02 09:51:55 62

原创 【6】c++11新特性(稳定性和兼容性)—>Lambda表达式

不需要额外写一个命名函数或者函数对象;(2)简洁:避免了代码膨胀和功能分散;(3)在需要的时间和地点实现。

2023-11-01 19:54:40 105

原创 16.力扣c++刷题-->找出字符串中第一个匹配的子串

【代码】16.力扣c++刷题-->找出字符串中第一个匹配的子串。

2023-10-27 09:45:01 101

原创 15.力扣c++刷题-->合并两个有序链表

【代码】15.力扣c++刷题-->合并两个有序链表。

2023-10-26 17:41:31 223

原创 14.力扣c++刷题-->有效括号

题目:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。

2023-10-26 15:38:02 107

原创 13.力扣c++刷题-->最长公共前缀

题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。

2023-10-26 13:45:48 37

原创 12.力扣c++刷题-->罗马数字转整数

通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。注:解题关键是,判断当前数字和它下一个数字的大小,如果当前数字大于下一个数字就加当前数字,如果当前数字小于下一个数字,那就减去当前数字。X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

2023-10-26 10:33:42 125

原创 11.力扣c++刷题-->判断是否为回文数

【代码】11.力扣c++刷题-->判断是否为回文数。

2023-10-25 15:31:03 60

原创 10.力扣c++刷题-->两数之和

题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

2023-10-24 11:40:45 106

原创 9.力扣c++刷题-->跳跃游戏

题目:给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true;否则,返回 false。

2023-10-24 11:15:57 120

原创 8.力扣c++刷题-->买股票的最佳时机2

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。解题关键:获取最大利润,因为不考虑交易次数,那么收集所有上坡(即),就可以获的利润最大化。

2023-10-24 10:51:38 83

原创 7.力扣c++刷题-->买股票的最佳时机

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。

2023-10-24 10:29:49 60

原创 6.力扣c++刷题-->轮转数组

题目:给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。解题关键:可以额外加一个数组,nums[(i+k)%k] = nums1[i];

2023-10-23 19:48:39 27

原创 5.力扣c++刷题-->找出众数

题目:给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。

2023-10-23 19:22:55 238

原创 4.力扣c++刷题-->删除有序数组中的重复项 II

题目:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

2023-10-23 18:10:11 98

原创 3.力扣c++刷题-->删除有序数组中的重复项

题目:给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。然后返回 nums 中唯一元素的个数。

2023-10-23 17:59:39 57

原创 2.力扣c++刷题-->移除元素

题目:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

2023-10-23 17:30:55 185

原创 1.力扣c++刷题-->合并两个有序数组

题目:给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

2023-10-23 17:11:05 95

原创 【31】c++设计模式——>模板方法模式

基本操作方法也在抽象基类中被声明为虚函数,但是可以被子类重写以实现具体的步骤。2.

2023-10-23 14:16:28 288

原创 【30】c++设计模式——>状态模式

状态模式是一种,它可以让一个对象在其内部状态发生变化时更改其行为。通过将每个状态封装成一个独立的类,我们可以使状态之间互相独立,并且使得状态的切换变得更加灵活、可扩展。(多个状态之间可以相互转换)在状态模式中,我们通常会定义一个抽象状态类(Abstract State),以及多个具体状态类(Concrete States)。每个具体状态都会实现抽象状态类中定义的各种操作,并且在需要时执行状态转换。

2023-10-23 11:55:37 315

原创 【29】c++设计模式——>策略模式

C++中的策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时选择算法的行为。策略模式通过将算法封装成独立的类,并且使它们,从而使得算法的变化独立于使用算法的客户端。

2023-10-22 21:45:45 407

原创 【28】c++设计模式——>观察者模式(1)

C++观察者模式(Observer Pattern)是一种设计模式,它用于在对象之间建立一种一对多的依赖关系。在该模式中,当一个对象(称为主题)发生变化时,所有依赖于它的对象(称为观察者)都会得到通知并自动更新。

2023-10-22 18:52:35 339

原创 【27】c++设计模式——>迭代器模式(遍历双向链表)(2)

【代码】【27】c++设计模式——>迭代器模式(遍历双向链表)(2)

2023-10-21 23:58:32 429

原创 【27】c++设计模式——>迭代器模式(1)

迭代器实现通常包含两个主要组件:迭代器和聚合对象,聚合对象一般是vector,list,set,map等,迭代器负责在聚合对象上进行遍历,并提供了一种统一的访问元素的方法。聚合对象用来存储,并提供创建迭代器的接口。通过将遍历算法与聚合对象分离开来。

2023-10-20 16:54:02 588

分区管理,,包含怎么设置分区等

分区管理,,包含怎么设置分区等

2022-07-20

scsi驱动和USB-stroage驱动的解析.pdf

scsi驱动和USB-stroage驱动的解析.pdf

2022-07-20

串口测试代码,用于测试串口收发的

串口测试代码,用于测试串口收发的

2022-04-24

蓝牙千月测试软件。。。

蓝牙千月测试软件。。。

2022-02-17

串口测试程序,文件传输,流控,等

串口测试程序,文件传输,流控,等

2022-02-16

串口测试的几种测试代码

串口测试的几种测试代码

2022-02-14

libdrm库,包含一些DRM的操作,例如,modetest,kmstest

libdrm库,包含一些DRM的操作,例如,modetest,kmstest

2022-02-11

nvt_pack_tool.rar

联咏打包工具,兼容linux和weindows

2021-12-30

内存访问异常错误问题定位.pdf

内核崩溃Unable to handle kernel paging request at virtual address **分析

2021-12-30

Code Conversion_gbk2utf8.rar

gbk转utf8

2021-09-28

rv1126_output_bt1120.zip

rv1126_rv1109 显示输出由MIPI切换到BT1120

2021-07-26

nvt_wifi.rar

之前移植了wifi驱动,这里面是一些关于测试的脚本及测试文档

2021-07-07

linux第三方库源码.rar

linux下常用调试工具库,包括buildroot,busybos,iperf,i2c_tool,alsa,gdb,tcpdump,openssh,opencv等几十个库

2021-06-30

驱动开发例程及开发手册.rar

正点原子学习驱动开发例程及开发指南,包含IIC,gpio,spi,音频,字符设备,网络设备,块设备,设备树等驱动开发教学及程序

2021-06-30

音频alsa架构.rar

linux音频alsa框架,思维导图形式描述

2021-06-30

01_reg_editor.tar.gz

读取寄存器的代码,配置Makefile中内核代码路径,即可读取任意寄存器数据,不会用的可以私我

2021-06-30

03_sata_write_read.tar.gz

flash坏块检测代码

2021-06-30

空空如也

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

TA关注的人

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