- 博客(59)
- 收藏
- 关注
原创 List容器
List是双向链表的序列容器,list 通过节点链接存储元素,每个节点独立分配内存,内存不连续。目的:高效的插入和删除操作,避免频繁的内存重新分配和元素复制开销。由于每个元素独立分配内存,list 不支持随机访问,只能通过迭代器顺序访问元素。list 不支持像 vector 那样的预分配内存和容量管理函数,因为其内存分配是按需进行的。1、非连续存储2、只能通过迭代器访问元素,3、不支持指向元素的常规指针进行偏移访问。
2025-12-16 21:16:46
341
原创 Lambda表达式
Lambda表达式(匿名函数)是一种能在代码块定义临时函数,无需显示声明函数,可以捕获外部作用域内的变量,最终编译为编译器生成的匿名类的实例。
2025-12-10 11:31:35
579
原创 C++完美转发
核心组件作用万能引用 T&&接收任意值类别的参数引用折叠解决引用的引用问题,确定最终的引用类型还原参数的原始值类别,实现 “无损耗转发”
2025-12-08 14:25:58
798
原创 右值引用和移动语义
右值引用是一种特殊的引用类型,语法为T&&,专门用于绑定右值(临时对象、字面量等),无法绑定左值(除非用std::move转换)。// 右值引用绑定临时对象(右值)// 输出 hello// 编译报错:不能绑定左值到右值引用// 用std::move将左值转为右值引用(将亡值)return 0;
2025-12-04 22:11:09
320
原创 C++基础知识
复制对象的表层成员,还会为指针/引用类型的成员重新分配独立的底层资源,并复制原资源的内容。最终每个对象拥有独立的地址空间,独立互不干扰。
2025-12-04 21:24:09
225
原创 【智能指针】
四、总结智能指针 所有权 引用计数 拷贝性 典型场景unique_ptr 独占 | 无 | 不可拷贝 | 单个对象 / 数组的独占管理shared_ptr 共享 | 有 | 可拷贝 | 资源共享场景weak_ptr 弱引用(无)| 无 | 可拷贝 | 解决循环引用。
2025-12-03 22:13:00
538
原创 计算代码执行时间,测量时间间隔
steady_clock 是测量时间间隔的理想选择,因为它是单调递增的时钟,不受系统时间调整的影响,适合用于性能计时、超时判断等场景。1.使用 steady_clock::now() 获取任务开始时的时间点。2.执行一个模拟的耗时操作(通过 sleep_for 休眠 1.5 秒)4.计算两个时间点的差值,并通过 duration_cast 转换为毫秒。5.输出计算得到的耗时(约 1500 毫秒)3.再次获取时间点作为结束时间。
2025-10-11 16:57:13
155
原创 Git将A分支的提交,同步到B分支
因为有衍生的项目,从主分支拉了一个分支作为衍生项目的代码分支,先需要将拉了分支之后,在主分支的修改,也要提交到衍生项目的分支。假设主分支的A分支,衍生项目是B分支。
2025-06-19 12:06:57
380
原创 Git解决从远程仓库拉下来之后,代码块与本地冲突问题
因为在git stash 这一笔有对这段代码进行修改,然后git pull --rebase之后,又对这段代码修改了,git push了,之后又git pull --rebase,在git stash pop就出现上面的情况。2.手动将stashed changes部分删除,保留updated upstream部分。1.git checkout xxx.cpp,就会跟远程仓库一样,但是其他代码也会消去。
2025-04-21 21:13:34
278
原创 git撤回提交的代码
前言:有时我们git push提交了代码之后,在git网页丢弃了,需要恢复本地之前的记录。1、git log 查看提交的上一笔的提交的commit。4.查看文件状态,发现恢复到未提交之前。如何撤回git add 的文件。2.使用恢复到上一笔的提交。
2025-03-25 20:28:19
210
原创 Google Test的使用
/测试代码其中TestCase为测试用例的名称,用于将相关的测试用例分组在一起,以便于在测试结果中更好识别和分类。TestName为具体测试的名称,一般描述测试的目的。return a+b;
2024-07-29 20:55:10
1026
原创 Linux命令记录
这篇文章是记录我平常用到的一些linux操作命令,为了以后自己忘记了回来温习方便。1、xrandr功能:显示当前界面的分辨率Xrandr -s 2020*12532、set nu 设置显示行号Set noun 设置不显示行号修改.vimrc这个文件可以永久显示行号。3、dw是删除一个字母4、mv /ttt/yyy/*.c /hhh/jjj 将路径目录/tt/yyy/下所有.c的文件全部移到/hhh/jjj下5、-L 表示添加路径-l表示添加动态库6、which
2021-08-24 16:09:23
337
原创 双极性三极管
1、三极管简介 晶体三极管具有三个电极,又称为所以又称为半导体三极管,简称三极管或晶体管。三极管又分为单极型和双极型两种类型。双极型三极管是由三层杂质半导体构成的器件,由于这类三极管内部的电子载流子和空穴载流子同时参与导电,所以故称为双极型三极管。三极管具有放大和开关的作用,是组成放大电路和电子电路的核心器件。2、双极性三极管的基本结构、符号、类型。 双极性三极管由两个PN结构成,按照PN结的组合方式,有PNP型和NPN型,它们的结构示意图和电路符号,如下图。 如上图,无论是PNP型
2021-06-26 21:16:46
5271
原创 二极管与PN结
半导体与二极管1.1半导体二极管的结构与符号 半导体二极管也称为晶体管,简称二极管。它由一个PN结加上电极引线封装而成,二极管的文字符号为D或VD。如下图,P区引出的电极为正极,N区引出的负极。 根据PN结面积的大小,二极管可分为点接触型、面接触型、硅平面型。其中硅平面型结面积小,结电容小,允许通过的电流也比较小,适用于高频、小电流场合,如检波电路、脉冲电路及计算机中的开关元件。面接触型,结面积大,结电容大,允许通过的电流也比较大,适合低频、大电流场合,如整型电路。 我们都知道二极管具有加正
2021-06-24 13:35:31
8747
原创 JAVA小项目--商品管理系统
项目概述:这个项目可以实现用户对商品信息的录入、查询、修改、删除功能学习目的:主要是对java的基础知识的应用、ArrayList的使用和类的封装调用第一步:创建一个Product 类里面的成员有商品编号,商品名称,商品价格,以及实现商品编号,商品名称,商品价格的设置方法和获取方法public class Product { private String No;//商品编号 private String name;//商品名称 private Double price;/
2021-04-22 22:41:01
5313
1
原创 JAVA小项目--实现斗地主
实现思路:第一步准备牌、第二步洗牌、第三步发牌、第四步看牌。程序实现和相关细节如下:package com.company;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;/*斗地主案例 */public class Main { //程序的主入口 public static void main(String[] args) { //1、准备
2021-04-07 19:01:27
184
原创 Linux-C静态库与动态库的生成和使用
一.静态库和动态库的简述当我们想把代码提供给别人用,又不想被别人看自己的代码时,我们就可以建立自己的程序函数库。程序函数库是一些已经编译好的代码和数据,我们人是很难看懂的。在Linux中程序函数库分为:静态函数库以.a后缀结尾、动态函数库(共享函数库).以.os结尾。静态库的特点:①在程序执行前加载进去的②相对于加载动态库,程序执行比较快。③不同程序执行,使用相同函数库时,每次都会加载一份静动态库进内存,会造成资源浪费。动态库的特点:①在程序执行时加载进去的②不同程序执行,使用相同函数库时
2021-02-28 23:00:06
303
原创 树莓派登录方式(一)USB转串口登录
1、修改系统配置,解除蓝牙对串口的占用把SD卡插到电脑上,打开文件打开cmdline.txt文本,把里面的内容替换成下面的内容dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait打开config.txt,在文本末尾添加这一个,解除蓝牙对串口的占用dtoverlay=pi3-di
2021-02-27 19:13:25
638
原创 如何在乌班图下载、安装树莓派的交叉编译工具
1.到我的云盘下载交叉编译工具tools-master链接:https://pan.baidu.com/s/16s8r4cWqgzx_KNSPn6uJdg提取码:90t6复制这段内容后打开百度网盘手机App,操作更方便哦2在虚拟机与windows之间建立一个共享文件夹(自行网上百度)将tools-master复制到当前工作目录cp /mnt/hgfs/LWshare/tools-master.zip .3.解压tools-master.zipunzip tools-master.zip4.
2021-02-23 00:00:02
296
原创 树莓派外设使用---继电器
这次我们使用用树莓派的7引脚作为继电器的控制引脚,继电器是低电平导通,高电平断开。因为要用到树莓派I/O控制库(wiringPi.h)所以在编译工程文件的时候要手动链接。例如:gcc demo2.c -lwiringPi食物连接图:接线图树莓派 继电器引脚7---------------IN3.3V----------------VCC0--------------------GND代码示例:#include<wiringPi.h>#inclu
2021-02-21 11:44:56
554
原创 多线程编程之线程
什么是线程?线程是程序执行的最小单位。一个进程在某一时刻只能做一件事情,但加入线程之后,进程在某一时刻可以做多件事情了。每个线程都有独立的任务。在linux上开发线程的API主要有:1、创建线程:int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn) (void *), void *restrict arg);函数的返回值:若成功返回0,
2021-02-01 23:05:21
161
原创 共享存储
共享存储共享存储允许两个或者多个进程共享一个给定的存储空间。因为数据不需要再客户进程和服务器进程之间复制,所以这一种最快的进程间通信。但要注意的是当服务器进程往共享存储区写数据时,客户端进程不应读这些数据。例子:模拟服务器端#include <sys/ipc.h>#include <sys/shm.h>#include<stdio.h>#include<stdlib.h>#include<string.h>int main()
2021-01-28 15:09:14
1131
原创 进程间通信之消息队列
消息队列:消息队列是消息的链接表,存储在内核中,由消息队列标识符标识。我们把消息队列为队列,其标识符简称ID.消息队列的特点:1.消息队列是面向记录的,其内容有特定的格式和特定的优先级。2.消息队列独立于发送和接受。进程终止时,消息队列及内容并不会被删除。3.消息队列可以实现消息的随机查询。消息的查询可以不按先进先出读取,也可以按消息的类型读取。打开或者创建队列的函数原型:int msgget(key_t key, int msgflg);函数成功执行时,成功返回队列标识符,失败返回-1k
2021-01-27 16:48:36
186
原创 进程间通信之管道
什么是进程间通信及如何实现它:进程间的通信(IPS)是指不同进程之间进行信息传播或交换。实现进程间通信有管道、消息队列、信号量、共享内存、套接字(socket)、streams等,其中套接字(socket)、streams支持不同主机进程间的通信。管道分为无名管道和命名管道。1.无名管道:特点:1.管道是半双工,数据只能往一个方向流动。2.管道就像水管,数据就像水,数据读走就没有了。3.它只能用于具有亲缘关系的进程间通信(父进程与子进程)。4.它可以被看作特殊的文件,对它的读写可以用普通的r
2021-01-26 17:53:04
238
原创 exec族之execl函数的使用
exec的功能:在进程内部执行一可执行的文件,可以是二进制文件,也可以是shell脚本。excel函数的作用:函数原型:int execl(const char * path,const char * arg,…)path:要执行的程序路径。可以是绝对路径或者是相对路径。arg:程序的第0个参数,即程序名自身。相当于argv[O]。返回值:excel函数调用成功,无返回值。调用失败,返回-1.例程: 1 #include <sys/types.h> 2 #include &
2021-01-21 17:28:19
624
原创 编程模拟孤儿进程
孤儿进程:当父进程不等待子进程退出,在子进程退出前就结束了生命,此时子进程就变成了孤儿进程。在linux系统中为了避免孤儿进程,init(pid=1)专门收留孤儿进程,变成孤儿进程的父进程。代码实现如下:1 #include <sys/types.h> 2 #include <unistd.h> 3 #include<stdio.h> 4 #include<stdlib.h> 5 /*孤儿进程*/ 6 int main() 7 {
2021-01-21 00:27:02
264
原创 wait()函数抓僵尸进程
父进程等待子进程退出僵尸进程:如果子进程退出,而父进程没有进行收集,那么子进程就会变成僵尸进程列如 1 #include <sys/types.h> 2 #include <unistd.h> 3 #include<stdio.h> 4 #include<stdlib.h> 5 6 int main() 7 { 8 pid_t pid; 9 int i=0; 10 int stast=10;
2021-01-21 00:12:21
279
原创 vfork()函数的使用
vfork()函数的使用前言:vfork()函数与fork()函数创建进程的区别:区别一:vfork()创建的子进程直接使用父进程的存储空间,不进行拷贝。、区别而:vfork()创建的子进程,是子进程先运行,当子进程调用exit(0)退出,父进程才执行。代码如下: 1 #include <sys/types.h> 2 #include <unistd.h> 3 #include<stdio.h> 4 #include<stdlib.h&
2021-01-20 17:50:58
1090
原创 fork()函数,模拟服务器等待客户端连接创建子进程
fork()函数,模拟服务器等待客户端连接创建子进程前言:一个父进程希望复制自己,使父、子进程同时执行不同的代码段。这在网络服务进程中是常见的一父 进程等待客户端的服务请求。当这种请求到达时,父进程调用fork, 使子进程处理此请求。父进程则继续等待下一个服务请求到达。下面我们就编程实现。代码如下: 1 #include <sys/types.h> 2 #include <unistd.h> 3 #include<stdio.h> 4 5 in
2021-01-20 16:44:56
236
原创 使用fork()函数创建进程
使用fork()函数创建进程前言:如果程序调用fork()成功,fork()函数会返回两次的值,两次的值都不相同,返回0是给子进程的,父进程返回非负整数。调用不成功返回-1(具体怎样会调用不成功,我现在也不知道,以后学到了再来补充).下面是代码实现:#include <sys/types.h>#include <unistd.h>#include<stdio.h>int main(){ pid_t pid;//定义pid 获取进程号 pi
2021-01-20 15:35:25
836
原创 通过getpid()函数,获取进程标识符pid
通过getpid()函数,获取进程标识符pid每一个进程都有一个非负整数唯一的ID,叫做进程标识符PID.下面我们就用linux内核提供的函数 getpid()函数编程实现获取进程的pid首先通过man命令查看手册查看getpid()函数的使用。CLC@Embed_Learn:~$ man getpidNAME getpid, getppid - get process identificationSYNOPSIS #include <sys/types.h
2021-01-19 16:45:06
3899
原创 如何查看系统有哪些进程?( ps,top指令)
2.如何查看系统有哪些进程?指令:psHELLO@Embed_Learn:~$ ps PID TTY TIME CMD 3881 pts/2 00:00:00 bash 4120 pts/2 00:00:00 ps但这只能查看部分的进程信息,可以通过ps -aux 查看全部进程信息。HELLO@Embed_Learn:~$ ps -auxWarning: bad ps syntax, perhaps a bogus '-'? See http://proc
2021-01-19 16:22:02
379
原创 c语言标准库fopen(),read(),fwrite()的编程应用
c语言标准库fopen,fread,fwrite的编程应用#include<stdio.h>#include<string.h>int main(){ FILE *fd; char *str="aaaaa"; char buff[128]={0}; fd=fopen("./file4.txt","w+"); fwrite(str,sizeof(char),strlen(str),fd); fseek(fd,0,SEEK_SET); f
2021-01-18 17:39:46
416
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅