自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 安卓adb调试没有弹出允许调试解决方案

一开始打算参照一个开源项目写一个adb投屏手机到电脑,然后将手机连接到电脑,发现在手机上没有出现允许调试这一弹窗。.android下的用户,删掉这个,然后手机上就可以弹出允许调试了,如果没有的话可以插拔下,然后使用。本次就对问题做一个记录,我使用的华为,应该对其他手机也是一样的操作。,所以先要允许设备调试,那么找到以下这个文件。这里后面是无法识别的。进行重启下服务,使用。

2023-03-31 12:28:39 2189

原创 输入输出系统(IO)方式

IO的一些方式 程序查询 程序中断 DMA

2022-10-12 14:55:36 1373

原创 IO接口概念

IO接口的一些概念

2022-10-10 17:17:18 10713

原创 多处理机的基本概念

多处理机的基本概念

2022-10-09 19:26:49 756

原创 指令流水线

指令流水线

2022-10-09 17:39:21 3074 3

原创 微程序控制器

微程序控制器笔记

2022-10-08 00:14:49 4022

原创 BMP文件存储格式

最近公司里面有一个需要将yuv保存成bmp文件的任务,但是由于我对bmp文件存储格式不太了解,下面进行了一番搜索,实操,有了这篇文章。最近在学数字图像处理,正好里面也有,所以我感觉这篇文章应该能解决很多人对bmp文件存储格式的疑问。BMP文件组成bmp文件是由四部分组成的,其中第三部分位图颜色标可以是有的,也可以是没有的,在下面的内容中会解释到。首先来看第一部分位图文件头结构首先先来看下位图文件头结构typedef struct tagBITMAPFILEHEADER{ WORD bfTyp

2021-08-02 11:53:30 837

原创 opencv:将imshow的内容写到avi文件中

由于公司项目需要,这里需要将imshow显示出来的内容输出到avi文件中,做一个记录,以防后面需要的时候方便找到。这里用的是VideoWriter。//视频保存地址QString save_path = save_path_;save_path.append(".avi");std::string outputVideoPath = qstr2str_(save_path);//std::cout<<"save_path:"<<outputVideoPath<

2021-07-12 16:40:00 189

原创 FFmpeg结构体:AVPacket

AVPacket是一个存储压缩数据的结构体。在雷神的文章中已经比较清楚的描述了AVPacket,贴上雷神AVPacket的地址:FFMPEG结构体分析:AVPacket相比于雷神的文章,本文会增加一些AVPacket的函数,下面来看下AVPacket的声明代码:/** * This structure stores compressed data. It is typically exported by demuxers * and then passed as input to deco

2021-03-28 15:30:33 152

原创 ffmpeg:av_find_best_stream()

av_find_best_stream应该也是最近几年加的,从雷神的博客中没有看见,那就自己写一篇来记录下。这个函数同样是在libavformat/avformat.h下声明,下面是他声明的代码/** * Find the "best" stream in the file. * The best stream is determined according to various heuristics as the most * likely to be what the user expe

2021-03-28 14:56:09 1416

原创 FFmpeg结构体:AVStream

在看雷神博客的时候发现现在版本的ffmpeg的AVStream和雷神博客的已经不一样了,如果雷神没走的话估计已经更新了,雷神真的宝藏。我就自己记录下AVStream贴上雷神的AVStream: FFMPEG结构体分析:AVStream我们知道在AVFormatContext里就有AVStream,下面是AVFormatContext中AVStream部分代码 /** * A list of all streams in the file. New streams are crea

2021-03-28 00:01:56 664

原创 FFmpeg:av_dump_format()

最近在研究ffmpeg,雷神的博客给了很大的帮助,可惜雷神走了。在雷神博客里面发现没有av_dump_format()这个函数,那就自己写篇文章来记录下。av_dump_format是打印输入和输出格式的详细信息,声明位于libavformat/avformat.h下,如下所示/** * Print detailed information about the input or output format, such as * duration, bitrate, streams, conta

2021-03-27 23:03:09 601

原创 VS2017 编译SDL

最近在搞音视频方面,因为需要把YUV显示出来,之前用过OpenGL的shader,这里使用的就是SDL,记录下自己使用SDL编译的时候出现的问题。首先先去官网下载SDL:www.libsdl.org在这里我选择了VC++的版本下载下来后,压缩包里是这些东西。我将include下都放到我自己工作路径的include下,取名SDL,如下图。上面那些文件是ffmpeg的。然后将lib下的文件也放到我自己的工作目录下。x86和x64就是sdl的lib,lib里面有SDL.

2021-03-26 15:12:33 262

原创 C++指针常量和常量指针

其实在接触这个的时候会比较混乱,所以就写一篇文章来整理下这个。在英文中一个是const pointer to type,一个是pointer const to type。下面是这两种的例子char a = 'a';char b = 'b';char* const y = &a;这里可以通过指针来修改y指向的值,但不能让y再重新指向一个新的地址。*y = 'c';//可行y = &b;//会出现错误另一种则是char a = 'a';char b = 'b';cons

2021-02-08 15:06:39 92

原创 数据结构之图(理论附带题目)

数据结构——图1 图的基本概念2 图的存储2_1 邻接矩阵2_2 邻接表2_3 十字链表2_4 邻接多重表3 图的遍历3_1 深度优先遍历3_2 广度优先遍历4 图的应用4_1 最小生成树4_2 最短路径4_3 拓扑排序4_4 关键路径在开始本文前,还是先通过一张思维导图了解下本文所要接触的内容。1 图的基本概念在之前文章中的逻辑结构介绍中,已经知道了图是一种多对多的关系。接下来就是一些图的概念介绍和它们的一些使用即相关题目。2 图的存储2_1 邻接矩阵2_2 邻接表2_3 十字链表2_4

2020-12-06 19:20:21 1801 5

原创 计算机网络之链路层(理论附带题目)

计算机网络之链路层链路层的功能4种组帧方法封装成帧透明传输组帧方法——字符计数法组帧方法——字符填充法组帧方法——零比特填充法组帧方法——违规编码法差错控制检错编码检错编码——奇偶校验码检错编码——循环冗余码纠错编码——海明码差错控制小结链路层其实感觉在一般找工作或应用中运用到的可能没有网络层多,但是在一般考试中或者考研中还是比较喜欢在这里出现题目的。下面通过一张思维导图来进入链路层的学习。链路层的功能我们从之前的章节中已经看过OSI或者TCP/IP模型那两张图了,知道链路层的下一层是物理层,其上一

2020-12-03 14:19:56 1178

原创 数据结构之树与二叉树

数据结构之树与二叉树逻辑结构树树的基本概念树的基本术语树的性质树小结二叉树特殊二叉树满二叉树完全二叉树二叉排序树平衡二叉树二叉树的性质二叉树的存储结构顺序存储链式存储二叉树的遍历先序遍历中序遍历后序遍历层次遍历线索二叉树树、森林、二叉树的转换及遍历在开始本文前,还是通过一张思维导图来了解下本文主要涉及的到的内容。逻辑结构在开始本文前,先说一下逻辑结构,同样用思维导图来了解。本次主要内容就是树结构,线性结构在之前的文章中已经有了说明,图结构将在以后的文章中进行说明。树树的基本概念树是n个节点

2020-11-27 22:01:44 664 1

原创 矩阵的压缩存储

本篇文章主要介绍的内容是矩阵的压缩存储,现在通过一张思维导图来了解下本文的大概内容。数组在说矩阵的压缩存储前,先说下数组,在C语言或者C++语言里面,已经知道什么是数组了,但是在数据结构里的数组和它们不一样。在编程语言里,它们是一种数据类型,其实数据结构是比编程语言要出现的早的,下面让我们来了解下几种数组。1.一维数组A是n个相同类型数据元素构成的有限序列。2.二维数组可看作是每个数据元素都是相同类型的一维数组的一维数组;这句话可能很奇怪,光从字面意思有点不太好理解,那么就有下图给大家看下,可能就

2020-11-26 21:34:13 2730

原创 计算机网络之物理层(理论附带题目)

计算机网络之物理层通信基础通信基础基本概念码元、速率、波特、带宽码元速率、波特、带宽奈氏准则&香农定理奈氏准则(内忧)香农定理(外患)编码和调制编码在开始这篇文章之前,还是通过思维导图的方式来整理下这篇文章的大致内容。通信基础通信基础基本概念这里还是得简单提句物理层的应用:就是在计算机之间传输比特流。我们可以通过一张王道操作系统上的图来了解以下这个东西。它先讲数据以数字信号的方式传送给调制解调器,调制解调器将它转换为模拟信号,再经过广域网传输给对方,再传输的过程中,再用调制解调器讲模

2020-11-25 15:53:07 5045 3

原创 栈与队列的应用

从一张思维导图来进入这块知识。栈的应用进制转换当一个十进制数N转换成八进制数时,计算过程中,把N与8求余得到的八进制数的各位依次进栈,计算完毕后将栈中的八进制依次出栈,输出结果就是待求得的八进制数。(这里顺序存储和链式存储都可以使用)下面来看一下它的过程:1.初始化空栈2.十进制数N非0时,循环以下操作:(1)N与8求余,余数入栈;(2)N更新为N与8的商3.栈非空时,循环以下操作:(1)弹出栈顶元素(2)输出e。下面是代码实现void conversion(){ InitSt

2020-11-24 18:19:26 499

原创 栈和队列

栈和队列及其应用栈栈的基本概念栈的基本操作顺序存储Top指向当前位置判断栈空入栈出栈读栈顶元素Top指向下一个插入位置入栈出栈共享栈链式存储结构入栈出栈取栈顶元素栈总结队列队列的基本概念队列的基本操作顺序存储判断队空入队出队循环队列循环队列之判断队空循环队列之入队循环队列之出队链式存储链队入队操作链队出队操作双端队列总结在这篇文章将介绍数据结构中的栈和队列及它们的常见应用。在之前写过的文章中或者看本文的读者应该知道有两种存储方式,一种是顺序存储,一种是链式存储,本文将通过这两种存储来实现栈和队列。栈栈

2020-11-24 16:06:44 309

原创 计算机网络体系结构(浓缩版)

为了更好的理解和学习计算机网络这门课,或者说更好的回顾计算机网络的知识,我决定为此写一系列的文章,文章的内容主要来自于我学习计算机网络时候的内容和对计算机网络方面的理解。如果有什么问题的话,欢迎在评论区下面一起讨论。计算机网络体系结构计算机网络概念计算机网络分类体系结构与参考模型协议、服务、接口(访问服务点SAP)结论在进行计算机体系结构的内容前,先从一张思维导图来了解下这个部分所包含的知识点。不过其中有些就在本文中舍去了,因为有些都有很多版本包括概念什么也是,就舍去了。计算机网络概念计算机网络:

2020-11-23 18:42:27 515

原创 线性表之单链表及C语言实现

线性表之单链表及其实现链表的定义建立单链表头插法尾插法单链表的基本操作构造空的单链表销毁单链表判断是否为空链表求单链表长度输出单链表按位查找元素按值查找元素插入数据元素删除数据元素总结链表的定义定义:线性表的链式存储称为链表,每个存储节点包含数据元素本身+元素之间逻辑关系的信息,分别称为数据域和指针域。单链表:每个节点除了数据域外,只有一个指针指向后继结点。如下面图所示。这里我们能看出顺序表和单链表的区别,顺序表逻辑相邻的两个元素,物理上也是相邻的,单链表逻辑相邻的物理上则不用相邻,它是通过一个n

2020-11-22 20:08:14 464

原创 线性表之顺序表及C语言实现

线性表之顺序表线性表【逻辑结构】基本定义线性表基本操作线性表的顺序存储顺序表的静态分配和动态分配静态分配动态分配顺序表基本操作的实现初始化线性表销毁线性表判断是否为空求线性表长度按位查找元素按值查找元素插入元素删除元素总结线性表【逻辑结构】基本定义定义:线性表是由n个相同数据特性的数据元素构成的有限序列,n为线性表的长度,n=0时为空表。线性表的特点:1.只有一个表头元素,只有一个表尾元素。2.除了第一个元素外,每个元素只有一个直接前驱;3.除最后一个元素外,每个元素只有一个直接后继。比如

2020-11-21 20:07:23 219

原创 linux下的makefile简略介绍

makefile介绍makefile有点类似于windows中的vs一下,它定义了一些规则来指定,哪些文件需要先编译哪些文件需要后编译,甚至一些更复杂的操作,makefile也可以写shell脚本一样的命令。makefile相比于在shell下一直使用gcc去写方便的是只需要一个make命令就可以搞定,比如在当前目录使用make。makefile中会使用gcc去对源代码进行编译,生成.o或者可执行文件。makefile的命名规则:makefile或Makefile。makefile的基本规则m

2020-11-21 15:17:16 225

原创 linux下的动态库和静态库及其使用

Linux下的静态库和静态库1.库的基本介绍2.静态库3.动态库4.文中提到的几个文件代码总结1.库的基本介绍无论是在windows还是linux下都存在着库,库是二进制文件,里面有一些函数,它可以看成函数的集合,可以方便程序员调用,程序员只需要include它的头文件即可调用函数。使用库的好处:①可以减少开发者的代码开发量,缩短开发周期。②提高代码的重用性。库如何进行使用:在前面说到了方便程序员调用,那么如何使用呢,就需要两个文件,一个是头文件,一个是库文件。①头文件——包含了库函数的声明

2020-11-20 16:03:33 962

原创 银行家算法

银行家算法是最著名的避免死锁的办法,它的思想是:把操作系统视作银行家,操作系统管理的资源视作银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家进行贷款。操作系统按照银行家制定的规则为进程分配资源。进程运行之前先声明对各种资源的最大需求量,当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过该进程声明的最大需求量。若超过则拒绝分配资源,若未超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。你可能对此段文字

2020-11-11 15:36:53 3339

原创 操作系统之死锁

在看死锁之前,先来看一张表格,这张表格对死锁,饥饿和死循环做了共同点和不同点的概述。 共同点 区别 死锁 都是进程无法顺利向前推进的现象(故意设计的死循环除外) 死锁一定是“循环等待对方手里的资源”导致的,因此如果有死锁现象,那至少有两个或两个以上的进程同时发生死锁。另外,发生死锁的进程一定处于阻塞态。 饥饿 可能只有一个进程发生饥饿。发生饥饿的进程既可能是阻塞态(如长期得不到需要的I/O设备),也可能是就绪态(长期得不到处理机) 死循环 可能只有一个进.

2020-11-11 14:05:43 706

原创 经典进程同步问题——吸烟者问题

吸烟者问题是为了解决“可以生产多个产品的单生产者”问题提供了一个思路。问题描述:有三个抽烟者和一个供应者。每个抽烟者不停地卷烟抽,组成一根烟需要三种材料:烟草、纸和胶水。三个抽烟者中,第一个有烟草,第二个有纸,第三个拥有胶水。供应者无限地提供三种材料,供应者每次将两种材料放到桌子上,拥有剩下那种材料的抽烟者卷一根烟并抽掉它,并给供应者一个信号告诉已完成,那么供应者可以继续提供另外两种材料,如此重复(让三个抽烟者轮流地抽烟)。问题分析:关系分析。供应者与三个抽烟者分别是同步关系。供应着无法同时满足

2020-11-10 19:51:49 3316 2

原创 经典进程同步问题——哲学家进餐

问题描述:一张圆桌上坐着5名哲学家,每两名哲学家之间的桌上摆着一根筷子,两根筷子中间是一碗米饭,如图所示(图来自于王道操作系统课本)。哲学家只会思考和进餐,哲学家在思考时,并不影响其他人。只有当哲学家饥饿时,才试图拿起左、右两根筷子(一根一根拿起)。若筷子在其他人手上,则需等待。饥饿的哲学家只有同时拿起两根筷子才可以开始进餐,进餐完毕后,放下筷子继续思考。问题分析:关系分析。5名哲学家与左右邻居对其中间的筷子是互斥的,因为我拿了,你就没有办法拿,中间筷子只有一根。 整理思路。这个问题的关.

2020-11-10 19:32:56 743

原创 经典进程同步问题——读者写者

读者-写者问题问题描述:有读者和写者两组并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会产生副作用,但是如果某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。简单来说,你可以一个文档打开好多,但是你不能边读边写。从上述来看,得满足以下几个要求。①允许多个读者可以同时对文件执行读操作;②只允许一个写着往文件中写信息。③任一写着再完成写操作前不允许或其他读者或写者工作;④写者执行写操作前,应让已有的读者和写着全部退出。问题分析:关系

2020-11-10 15:30:41 1104

原创 经典进程同步问题——生产者消费者(多生产者多消费者)

生产者-消费者问题问题描述:一组生产者进程和一组消费者进程共享一个初始为空、大小为n的缓冲区,只有缓冲区没有满的时候,生产者才能把消息放入缓冲区,否则得等待缓冲区空闲出来;只有缓冲区不空的时,消费者才能从缓冲区取出消息,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入消息,或一个消费者取出消息。问题分析:关系分析。生产者消费者是互斥关系,同时它们也是相互协作的关系,只有生产者生产了,消费者才能消费,它们也是同步关系。 整理思路。只有生产者和消费者两个进程,正好这两个是互斥和同步的关系

2020-11-10 14:42:31 4250

原创 操作系统之管程

管程的出现是一种进程同步工具。管程的特性保持了进程互斥,无须程序员自己实现互斥,从而降低了死锁发生的可能性。同时管程提供了条件变量,可以让程序员灵活地实现进程同步。管程有点类似于在面向对象时候学习到的类。管程有四个部分组成:①管程的名字②局部于管程内部的共享结构数据说明;③对该数据结构进行操作的一组过程(可以理解为函数)④对局部于管程内部的共享数据设置初始值的语句。可能通过文字来看不是很明白,下面举个生产者消费者的例子(生产者消费者是经典的进程同步问题,这里只做简述,详细的内容可

2020-11-09 20:19:47 557

原创 操作系统之信号量机制

信号量机制可用来解决互斥与同步问题,它只能被两个标准原语(执行过程中不可以被中断,通常可由硬件来实现)wait(S)和signal(S)访问,也可以记作“P操作(wait)”和“V操作(signal)”。原语的操作类似TestAndSet,Swap和关中断在我的另一篇文章有写到《操作系统之进程同步问题》中有叙述到。原语之所以不能被中断,是因为原语对变量的操作过程如果被打断,可能会去允许另一个对同一变量的操作过程,从而出现临界段问题。若能够找到一种解决临界段问题的元方法(原语),就可以实现对共享变量操

2020-11-09 19:47:55 1472

原创 操作系统之进程同步问题

目录1.进程同步的基本概念①临界资源②同步③互斥2.实现临界区互斥的基本方法①软件实现算法一:单标志法。算法二:双标志法先检查。算法三:双标志法后检测。算法四:Peterson’s算法。②硬件实现方法中断屏蔽方法硬件指令方法本文需要了解的问题有以下几个为什么要引入进程同步的概念 不同的进程之间会存在什么样的关系 会遇到怎么样的问题关于信号量和管程单独开一篇文章1.进程同步的基本概念在多道程序环境下,进程是并发执行的,每个进程之间都存在

2020-11-09 15:23:19 1537

原创 Delphi之BitBlt函数与屏幕截屏

BitBlt函数的功能是:把源设备的矩形放到目标设备中。让我们来看下函数原型BOOL BitBlt( HDC hdcDest, // handle to destination device context int nXDest, // x-coordinate of destination rectangle's upper-left corner int nY...

2020-03-06 13:19:09 1422

原创 Delphi之RegisterHotKey和UnregisterHotKey

下面是根据D7的帮助手册翻译并注释过来的,不得不说按F1查看帮助手册真的很方便,就是是英文的,比中文看的久点,为了方便查询,我就顺手翻译下了。RegisterHotKey函数用来注册全局热键到指定的句柄下面是函数原型BOOL RegisterHotKey( HWND hWnd, //接收热键的窗口句柄 int id, // 热键的标识id UIN...

2020-03-05 09:13:33 575

原创 Delphi之窗口托盘

这个我代码里都注释得很多了,可以直接看代码,就是窗口启动后右下角有个托盘图标,但是我没对窗口让他不可视或者什么,其余大家可以自己去改unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ShellAPI;const...

2020-03-05 08:15:12 293

原创 Delphi之Canvas画矩形

在窗口上放一个Image大小差不多为窗体大小这个Button不用管,我只是为了看能不能透明而已QWQ。下面是实现在Image1的Canvas上画图的代码,要对Image1设置鼠标Down、Up和Move的事件unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, ...

2020-03-04 15:32:04 1737

原创 Delphi之获取当前鼠标位置(GetCursorPos)

最近在写截图小工具,所以需要获得鼠标的位置,其实很简单,只需要一个函数就可以GetCursorPos procedure---------------------------------------------------------------返回鼠标位置.UnitQControlsCategorymouse handling utilitiesDelphi 语法...

2020-03-04 13:06:29 2545

空空如也

空空如也

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

TA关注的人

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