自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(224)
  • 资源 (1)
  • 收藏
  • 关注

原创 局部变量、全局变量、局部函数、全局函数、static、extern-------全解

局部变量、全局变量、局部函数、全局函数、static、extern文章目录局部变量、全局变量、局部函数、全局函数、static、extern可见域和作用域变量的声明与定义:1、全局变量与局部变量全局变量:局部变量:2、全局函数与内部函数链接过程解释extern建议最优用法1.一个c文件需要调用另一个c文件里的变量或者函数,而不能从.h文件中调用变量2.extern int a = 5与int a = 5意义是一样的,都是定义。而extern int a;是声明。但会产生一条警告3.引用函数4.如果==不想

2021-04-08 14:02:03 1140

原创 YUV Format

基本概念如下:surface的原点是(0,0),出在surface的左上角。stride含义代表surface宽度,单位为bytesAlignmentsurface的对齐取决于图像显示驱动。surface必须是DWORD对齐。压缩格式与平面格式。在压缩格式中,yuv都存在一个单一数组中。在平面格式中,YUV会分别单独存放在三个分离的planes下图为surface示意图。

2024-02-26 10:40:38 847

原创 Makefile详解&实战

makefile详解&实际演示

2023-09-20 12:13:32 186

原创 [python] 进度条使用

【代码】[python] 进度条使用。

2023-06-28 21:07:17 327

原创 Android Studio引用第三方库的方式

Android Studio引用第三方库的方式

2023-06-06 22:15:12 1965 1

原创 Vscode Git 显示一堆未跟踪更改解决

Vscode Git 显示一堆未跟踪更改解决

2023-02-08 11:43:31 3841 1

原创 Android Studio引用AAR的方式

Android Studio引用AAR的方式

2023-01-18 23:00:35 1772 1

原创 音视频同步原理

webrtc音视频同步

2022-12-02 20:53:21 1068

原创 CMake变量可见性学习

cmake变量可见scope学习

2022-08-17 10:28:15 419

原创 Leetcode768. 最多能完成排序的块 II

单调栈

2022-08-13 17:01:09 109

原创 手把手教你简历制作需要注意的点

简历制作小技巧,教你如何避坑

2022-07-19 13:18:42 936

原创 2022 第297周周赛

leetcode第297周周赛

2022-06-25 20:36:26 185

原创 CMake使用心得

CMake工作流程简介

2022-06-21 21:31:01 664

原创 大小端详解

编程基础知识之大小端

2022-06-09 21:16:40 196 1

原创 C++函数返回优化

C++函数返回优化我们知道,函数运行结束后,函数内部的局部变量就会消失,当函数返回的对象的时候,会产生一个临时对象,这样会消耗很多的计算资源,写一段代码进行测试。#include <iostream>using namespace std;class MyBuff { public: MyBuff() { cout << "MyBuff()" << endl; } MyBuff(const MyBuff& b) = delete;

2022-05-16 09:48:20 327

原创 水塘抽样(解决k个数据均匀抽样问题)

水塘抽样文章目录水塘抽样背景思路k=1k>1例题[398. 随机数索引](https://leetcode-cn.com/problems/random-pick-index/)背景给定一个数据流,但是数据流的长度N很大,且N直到处理完所有数据之前都不可知,如何在只遍历一遍数据(O(N))的情况下,能够随机选取出这组数据的k个概率相等的均匀抽样。(包含未知大小数据流中随机选取k个数据,使得每个数据抽取到的概率相等)(1)仅扫描数据一次。(2)空间复杂度为O(K)。空间复杂度与整个数据量无关,

2022-04-25 18:54:28 905

原创 android studio 调用C++代码

Android studio调用C++代码JNI原理JNI(Java Native Interface)叫做JAVA本地接口。JAVA是一种跨平台的语言,这种特性依赖的是Java虚拟机,虚拟机由C/C++编写。适配各个系统,通过JNI为上层的JAVA应用提供各种服务,保证跨平台性。JNI查找Android系统在启动启动过程中,先启动Kernel创建init进程,紧接着由init进程fork第一个横穿Java和C/C++的进程,即Zygote进程。Zygote启动过程中会AndroidRuntime

2022-04-17 16:45:31 5361

原创 机器人学运动模型

机器人学运动模型文章目录机器人学运动模型DOF (degree of freedom)DOM (degree of mobility)常见运动模型differential-drive modelbicycle modelDOF (degree of freedom)每一个robot都有确定的自由度,每个自由度都有一个驱动器那么所有的自由度都是可控的自由度: 物体能够对坐标系进行独立动作的数目一个物体可以相对于坐标系,进行三个平移和三个旋转运动,即一个简单的物体有六个自由度。DOM

2022-03-15 17:21:02 1163

原创 适配器模式C++详解

适配器模式文章目录适配器模式适配器模式C++实现适配器模式(Adapter),将一个类的接口转换成客户希望的另外接口。(比如变压器et)Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。主要解决的原本的类已经有了,但却不能直接使用,而且短时间内无法改造它,或者压根就无法改造的时候就需要适配它。也就是说,当系统数据和行为都是正确的时候,但是接口不符合,这时候就使用Adapter适配器模式C++实现假设,现在有现有的各种动物,都是现成的,有猫、狗。他们都有各自的方法比如说

2022-03-03 21:15:21 2228

原创 状态模式C++详解

状态模式C++详解文章目录状态模式C++详解状态模式由来状态模式c++实现状态模式由来面向对象设计其实就是希望做到代码的责任分解(也就是说,将状态设计成类,将责任分离,这个状态应该干嘛干嘛这样)。状态模式: 当一个对象的内在状态改变的时候,允许其改变行为。状态模式主要解决的是当控制一个对象状态转移的表达式过于复杂的时候,将状态的判断逻辑转移到表示不同状态的一系列的类当中,可以把复杂的判断逻辑简单化状态模式c++实现Context.h#ifndef CONTEXT_H_#define CO

2022-03-03 13:46:50 592 1

原创 字节面经(gdb原理、valgrind)

字节面经文章目录字节面经GBD调试的原理gdb的调试命令原理gdb如何实现断点的呢你怎么定位程序cpu使用率高的问题内存泄露kill某个有名称的进程voliate栈的效率为什么比堆要高为什么构造函数不可以被继承GBD调试的原理gdb调试可以用vscode的launch进行配置,同时也可以用用Cmake进行一个编译在进行调试参考链接GBD调试包括两个程序:(1) gdb程序,(2)被调试程序本地调试 上面两个程序都运行在本地远程调试 调试程序在一台电脑,被调试程序在另外一台电脑gdb的调试

2022-03-02 15:47:19 1234

原创 valgrind查看内存泄漏

valgrind查看内存泄漏文章目录valgrind查看内存泄漏valgrind --tool=memcheck --leak-check=full ./a.out可以检测如下问题:如果malloc/realloc/calloc和free的数量不同,则会报告如下的内容。==3375== HEAP SUMMARY:==3375== in use at exit: 128 bytes in 1 blocks==3375== total heap usage: 4,900 all

2022-03-02 15:45:02 304

原创 进程间通信的方式及原理

# 进程间通信的方式文章目录# 进程间通信的方式消息队列使用步骤消息队列使用步骤管道消息队列信号信号量socket消息队列首先消息队列就是内核维护的一块链表区域,只要是有足够权限的进程都可以向队列中添加消息,只要是有读权限的进程都可以在里面拿出消息克服了信号承载信息少,以及管道只能承载无格式字节流以及有限缓冲区大小的缺点消息队列是随着内核可持续的消息队列信息的传递是基于拷贝的,所以效率低下消息队列只有内核重启或者人工删除的时候才会消失,所以不用的时候请关闭进程通过key

2022-03-02 15:42:29 961

原创 装饰模式C++详解

装饰模式的作用装饰模式C++代码实现代码实现装饰模式的缺点# 装饰模式1. 装饰模式的作用动态的给一个对象添一些额外的职责,就增加功能而言,装饰模式比生成子类更加的灵活。为已有的功能动态的添加更多功能的一种方式可以将勒种的核心职责和装饰从勒种移除,有效把职责和装饰分离2. 装饰模式C++代码实现[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nBme9NTF-1645595496479)(./装饰模式.png)]3....

2022-02-23 13:52:43 916

原创 超级详细解释KMP算法(next数组的前世今生)

KMP算法文章目录KMP算法KMP算法的作用KMP算法的思想算法4中的KMP算法KMP算法思想KMP算法的表示怎么求解dfa数组求解`pre_next[]`例题描述示例1示例2KMP算法的作用可以在O(m+n)的时间复杂度内,在文本串S中找到模式串P是否存在。KMP算法的思想首先要想理解KMP算法,就必须先理解了解暴力解法的思想假设有文本串A B B B A A B B A模式串A B B A如果是暴力解法,那么会有两个指针,一个指针i指向文本串。一个指针j指向模式串。当j未走

2022-02-22 20:01:43 407

原创 Doxygen文档生成工具

Doxygen代码文档生成工具文章目录Doxygen代码文档生成工具DoxygenDoxygen的注释vscode插件Doxygen实际使用Doxygen根据百度百科说法,Doxygen是一种开源的,跨平台的文档系统,支持C、C++、Java、Objective-C语言,可以生成在线的HTML参考手册或者离线的Latex、RTF参考手册Doxygen是一种程序的文件产生工具,可以将程序中特定的注释转换成为说明文件。可以对未归档的源文件,可以通过配置Doxygen来提取代码结构可以生成依赖

2022-02-16 14:45:37 8121

原创 Lc2045到达目的地的第二短时间

2045. 到达目的地的第二短时间help城市用一个 双向连通 图表示,图中有 n 个节点,从 1 到 n 编号(包含 1 和 n)。图中的边用一个二维整数数组 edges 表示,其中每个 edges[i] = [ui, vi] 表示一条节点 ui 和节点 vi 之间的双向连通边。每组节点对由 最多一条 边连通,顶点不存在连接到自身的边。穿过任意一条边的时间是 time 分钟。每个节点都有一个交通信号灯,每 change 分钟改变一次,从绿色变成红色,再由红色变成绿色,循环往复。所有信号灯都 同时 改

2022-01-24 14:28:48 600

原创 手把手带你了解链接全过程(二)

手把手带你了解链接全过程(二)文章目录手把手带你了解链接全过程(二)位置无关代码`PIC`数据引用`PIC`函数引用库打桩机制处理目标文件的工具link位置无关代码这是共享库实现的原理.也就是,可以加载而无需重定位的代码称为位置无关代码(Position-Independent Code PIC),Gcc使用-fpic编译,且编译共享库必须使用在X86-64系统中,不需要做特殊处理.目标模块中的符号的引用会自动成为PICPIC数据引用通过上述过程完成对动态库数据的引用PIC函数引用其中

2022-01-24 11:47:25 339

原创 手把手带你了解链接全过程(一)

手把手带你了解链接全过程(一)文章目录手把手带你了解链接全过程(一)目标文件可重定位目标文件格式目标文件分类**链接器的作用****符号和符号表****符号解析**静态库链接器如何引用静态库重定位加载可执行目标文件动态链接库应用程序中加载和链接共享库目标文件可重定位目标文件格式首先要知道目标文件就是纯粹的字节块的集合这些块中有: 包含程序代码,程序数据,链接器与加载器的数据结构.text已编译程序代码.rodata只读数据.data已经初始化的全局和静态变量.bss未初始化全局

2022-01-17 15:59:46 1119

原创 大型源码阅读辅助工具

Sourcetrail安装Github地址下载解压完成以后直接执行install.sh脚本即可安装如果使用的是IDE的话可以使用相应的插件,以vscode为例,安装sourcetrail插件,同时设计vsscode以及客户端的端口和客户端的设置端口需要一致使用其中Sourcetrail Project是项目名称,Sourcetrail Project Location是源文件的首地址.根据不同的语言和方式进行创建项目.c/c++ from compliation 如果已经有c

2022-01-16 13:44:06 13473

原创 va_list可变参数的秘密

va_list可变参数的秘密文章目录va_list可变参数的秘密内部实现原理使用步骤例子我们知道在c++里面,如果无法确认传入的参数个数以及类型的时候,那么可以使用省略号来指定参数列表比如void fun1(int a, ...)void fun2(...)其中比较典型的就是printf函数printf (const char *__restrict __fmt, …)调用printf(“ssss %d”,10)那么其函数内部实现的是如何的值得注意的是\1. 变参处的定义

2022-01-08 17:08:48 651 1

原创 无向图算法之CC算法

CC算法算法实现#include "graph.h"/* CC算法比union-find算法更慢.CC算法需要构建好一幅图 但是union-find算法是一种动态算法,可以在添加边的时候去检查两个顶点是否连通 */class CC { // 其实就是计算连通分量 public: CC(Graph G) { marked_.resize(G.V(), false); id_.resize(G.V()); for (int i = 0; i <

2022-01-07 15:29:42 698

原创 手把手教学拓扑排序

手把手教学拓扑排序文章目录手把手教学拓扑排序过程建图算法的流程自己图类的实现例题简单版本[207. 课程表](https://leetcode-cn.com/problems/course-schedule/)[851. 喧闹和富有](https://leetcode-cn.com/problems/loud-and-rich/)在图论中,**拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)**的所有顶点的线性序列。且该序列必须

2021-12-29 15:32:23 374

原创 LC785.判断二分图(BFS/DFS/并查集)

LC785.判断二分图文章目录LC785.判断二分图[785. 判断二分图](https://leetcode-cn.com/problems/is-graph-bipartite/)分析题解785. 判断二分图难度中等329存在一个 无向图 ,图中有 n 个节点。其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号。给你一个二维数组 graph ,其中 graph[u] 是一个节点数组,由节点 u 的邻接节点组成。形式上,对于 graph[u] 中的每个 v ,都存在一条位于节点 u 和节

2021-12-27 15:34:06 151

原创 1609. 奇偶树(广度优先搜索)

1609. 奇偶树难度中等44如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减给你二叉树的根节点,如果二叉树为 奇偶树 ,则返回 true ,否则返回 false 。示例 1:输入:root = [1,10,4,3,null,7,9,12,8,6

2021-12-25 15:15:25 91

原创 1705. 吃苹果的最大数目(贪心算法)

1705. 吃苹果的最大数目难度中等104有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。给你两个长度为 n 的整数数组 days 和 a

2021-12-24 14:54:33 561

原创 每日算法学习之并查集(全网最详细)

并查集文章目录并查集作用原理实现优化路径压缩作用并查集能够解决图论中的动态连通性的问题什么是动态连通性满足下面三个特点自反性 节点p 节点q连通对称性 如果节点p节点q连通那么节点 q和节点p也连通传递性 节点a 节点b连通 节点b 节点c连通 那么 节点a 节点c连通原理视频链接文章链接其实原理也是很简单的首先维护一个parent[]的数组,数组的含义就是parent[i]代表 i的父节点是parent[i]初始化的时候大家都各自为政,所有人都是自己的父节点paren

2021-12-24 14:52:04 503

原创 Rabin-Karp算法(加速字符串匹配)

Rabin-Karp算法文章目录Rabin-Karp算法[1044. 最长重复子串](https://leetcode-cn.com/problems/longest-duplicate-substring/)Rabin-Karp算法的作用就是实现字符串的快速对比,判断字符串是否相同。算法的思想如下:将字符串进行编码,利用HashMap实现快速的匹配对比判断。所以关键是进行编码的规则,也就是利用hash函数进行编码映射。eg abcd abc编码为 22∗0+21∗1+20∗2=42^2*0+

2021-12-23 15:22:26 954

原创 686. 重复叠加字符串匹配

686. 重复叠加字符串匹配文章目录[686. 重复叠加字符串匹配](https://leetcode-cn.com/problems/repeated-string-match/)自己的解题思路参考别人别人解题思路给定两个字符串 a 和 b,寻找重复叠加字符串 a 的最小次数,使得字符串 b 成为叠加后的字符串 a 的子串,如果不存在则返回 -1。注意:字符串 "abc" 重复叠加 0 次是 "",重复叠加 1 次是 "abc",重复叠加 2 次是 "abcabc"。示例 1:输入:a =

2021-12-22 15:24:58 327

原创 pkg-config到底是个啥

Pkg-config到底是个啥文章目录Pkg-config到底是个啥使用方法makefile中使用pkgconfig如何编写PC文件参考????Pkgconfig其实跟使用的CMakeList文件中的配置文件作用是一样的,都是为了在需要使用第三方头文件或库文件的时候告诉编译器头文件和库文件的位置百度百科的解释是pkg-config 是一个在源代码编译时查询已安装的库的使用接口的计算机工具软件。pkg-config原本是设计用于Linux的,但现在在各个版本的BSD、windows、Mac OS X

2021-12-19 19:56:35 1156

基于C++语言编写的LFU算法

基于C++语言编写的LFU算法

2021-10-18

空空如也

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

TA关注的人

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