自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 双指针 乘积小于 K 的子数组

双指针从广义上来说,是指用两个变量在线性结构上遍历而解决的问题。狭义上说,对于数组,指两个变量在数组上相向移动解决的问题;对于链表,指两个变量在链表上同向移动解决的问题,也称为「快慢指针」问题。双指针算法通常不难,双指针算法是基于暴力解法的优化,它们是很好的学习算法的入门问题。713. 乘积小于 K 的子数组class Solution {public: int numSubarrayProductLessThanK(vector<int>& nums, int

2022-05-06 22:32:09 466

原创 vivi驱动

摄像头驱动程序必需的11个ioctl// 表示它是一个摄像头设备 .vidioc_querycap = vidioc_querycap,// 用于列举、获得、测试、设置摄像头的数据的格式 .vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap, .vidioc_g_fmt_vid_cap = vidioc_g_fmt_vid_cap, .vidioc_try_fmt_vid_cap = vidioc_tr

2020-09-18 10:03:04 399

原创 Nand Flash

Nand Flash在嵌入式系统中的地位与PC上的硬盘类似,用于保存系统运行所必需的操作系统、应用程序、用户数据等。与内存掉电后数据丢失不同,Nand Flash的数据在掉电后仍可永久保存。常用的Flash类型有NOR Flash和Nand Flash两种。一块64页,一页2038byte(2K)和64byte的OOB区。地址分为列地址和行地址(页地址);page=addr/2048;(page>>8)&&0xff(page>>16)&&

2020-09-14 22:04:03 532

原创 内存控制器及SDRAM

PROGRAMMABLE ACCESS CYCLE(可编程的访问周期)时序图从左往右看,先发出地址信号,再发出片选信号,再发出读信号,过一会数据才有效,再把读信号释放掉,再释放片选信号,最后才开始新的地址周期。这些时间参数都是可以设置的,因为2440可以接各种类型的内存类芯片,它们性能都有差别,有点芯片性能较强,一发出读信号,芯片很快就可以提供数据,那Tacc时间就可以设置很小,这些值要根据外接芯片的性能来设置。寄存器BWSCON (位宽和等待控制寄存器):使能/禁止SDRAM的数码掩码引脚,是否使

2020-09-12 18:59:24 340

原创 ARM芯片时钟

在芯片上不仅有CPU,还有各种外设,可以分为两部分,有AHB总线和APB总线。所以引入三个时钟,CPU工作于Fclk,AHB总线工作于Hclk,慢速设备(外设总线)工作于Pclk。可见时钟源有两个,晶振和引脚输入的时钟,有个选择器,由引脚OM[3:2]选择2440由两个PLL( Phase Locked Loops锁相环 ),一个生产时钟给CPU用的,一个生产时钟给USB用的。有电路图知OM2、OM3都是接地的,所以MPLL和UPLL都使用晶振作为时钟源。晶振的12M进来,经过MPLL和UPLL

2020-09-12 14:26:39 474

原创 互斥锁和条件变量

一、互斥量互斥量是一种特殊的变量,它可以处于锁定状态(locked),也可以处于解锁状态(unlocked)状态。如果互斥量是锁定的,那么必然有一个线程持有或拥有这个互斥量。如果没有任何一个线程持有这个互斥量,那么这个互斥量就处于解锁、空闲或可用状态。当互斥量空闲,并且有一个线程试图获取这个互斥量时,这个线程就可以获得这个互斥量而不会被阻塞。如果互斥量处于锁定状态,那么试图获取这个互斥量的线程将被阻塞,并加入到这个互斥量的等待队列中。等待队列中的线程获得互斥量的顺序由实现系统决定。这样的机制解决了共享资源

2020-09-11 17:29:19 418

原创 SPI

概念SPI(Serial Peripheral interface),串行外设接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI优点:(1)支持全双工通信(2)通信简单(3)数据传输速率块缺点:(1

2020-09-08 11:20:42 288

原创 内存管理相关

内存管理相关1.概念2.进程的空间模型3.堆和栈的区别4.什么是堆,栈,内存泄漏和内存溢出?⭐⭐⭐⭐5.虚拟内存,虚拟地址与物理地址的转换内存管理方式内存碎片cache替换算法1.概念地址1.物理地址: 放在寻址总线上的地址。用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。2.逻辑地址:指由程序产生的与段相关的偏移地址部分。在C语言指针中,读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程DS数据段的地址。线性地址=段基址+逻辑地址3.线性地址:

2020-09-07 20:50:59 208

原创 面试整理

进程和线程什么是进程,线程,彼此有什么区别多进程、多线程同步(通讯)的方法用户线程和内核线程的区别多进程、多线程的优缺点进程的空间模型父进程、子进程的关系以及区别什么时候用进程,什么时候用线程进程线程的状态转换图 什么时候阻塞,什么时候就绪什么是进程上下文、中断上下文一个进程可以创建多少线程,和什么有关孤儿进程、僵尸进程、守护进程的概念基本概念正确处理僵尸进程的方法如何创建守护进程Linux内核相关用户空间与内核通信方式有哪些?系统调用的作用内核态,用户态的区别Boot

2020-09-07 15:07:49 216

原创 二分法

二分查找是计算机科学中最基本、最有用的算法之一。 它描述了在有序集合中搜索特定值的过程。二分查找中使用的术语:目标 Target —— 你要查找的值索引 Index —— 你要查找的当前位置左、右指示符 Left,Right —— 我们用来维持查找空间的指标中间指示符 Mid —— 我们用来应用条件来确定我们应该向左查找还是向右查找的索引在最简单的形式中,二分查找对具有指定左索引和右索...

2020-09-04 15:33:01 243

原创 剑指 Offer 35. 复杂链表的复制

参考

2020-09-02 14:19:41 104

原创 剑指 Offer 34. 二叉树中和为某一值的路径

class Solution { vector<vector<int>> res; void bacttrack(vector<int>& track,int sum,TreeNode* root){ if(!root) return ; track.push_back(root->val); sum-=root->val; if(sum==0 &.

2020-09-02 14:07:10 105

原创 剑指 Offer 33. 二叉搜索树的后序遍历序列

class Solution { bool recur(vector<int> postorder,int i,int j){ if(i>=j) return true; int p=i; while(postorder[p]<postorder[j]) ++p; int m=p; //寻找 第一个大于根节点 的节点,位置为m while(pos.

2020-09-02 11:01:03 109

原创 剑指 Offer 32 - III. 从上到下打印二叉树 III

class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> res; if(!root) return res; //空树 queue<TreeNode*> q; q.push(root); bool flag=true; .

2020-09-01 21:06:14 106

原创 剑指 Offer 32 - II. 从上到下打印二叉树 II

参考

2020-09-01 21:00:06 115

原创 剑指 Offer 32 - I. 从上到下打印二叉树

class Solution {public: vector<int> levelOrder(TreeNode* root) { vector<int> res; if(!root) return res; queue<TreeNode*> q; q.push(root); while(!q.empty()){ int n=q.siz.

2020-09-01 20:55:11 127

原创 剑指 Offer 31. 栈的压入、弹出序列

class Solution {public: bool validateStackSequences(vector<int>& pushed, vector<int>& popped) { stack<int> st; int pos=0; //出栈位置 for(int i=0;i<pushed.size();i++){ st.push(pushed[i]); /.

2020-09-01 20:44:13 103

原创 剑指 Offer 30. 包含min函数的栈

参考

2020-09-01 20:15:53 110

原创 剑指 Offer 29. 顺时针打印矩阵

参考

2020-09-01 20:14:43 104

原创 剑指 Offer 28. 对称的二叉树

参考

2020-09-01 20:13:26 95

原创 剑指 Offer 27. 二叉树的镜像

参考

2020-09-01 20:12:16 85

原创 剑指 Offer 26. 树的子结构

class Solution { bool isSameTree(TreeNode* A,TreeNode* B){ if(!B) return true; if(!A || A->val != B->val) return false; return isSameTree(A->left,B->left) && isSameTree(A->right,B-.

2020-09-01 20:10:36 87

原创 总线接口比较

请说明总线接口UART、I2C、SPI、USB的异同点(串/并、速度、全/半双工、总线拓扑等)UART:通用异步串行口,速率不快,可全双工,结构上一般由波特率产生器、UART发送器、UART接收器组成,硬件上两线,一收一发;I2C:双向、两线、串行、多主控接口标准。速率不快,半双工,同步接口,具有总线仲裁机制,非常适合器件间近距离经常性数据通信,可实现设备组网;SPI:高速同步串行口,高速,可全双工,收发独立,同步接口,可实现多个SPI设备互联,硬件3~4线;USB :通用串行总线,高速,半双工,由

2020-09-01 19:34:10 482

原创 柱状图中最大矩形

HW2020.8.26 笔试第二题题目描述一个仓库的一排连续整齐的摆放了长宽不等的n个矩形箱子(n=[1,100]),现在要这些高低不等的箱子组成的柱形图中,找到一块最大的完整矩形面积来贴一张海报。输入:依次给出n个矩形箱子的宽度[1,100]和高度[1,100]。为简化起见,最多20个箱子。输出:海报可用的最大矩形面积。如果输入参数有任何错误或者非法输入,返回0。示例:x[]=[1,1,1,1,2,1,1];y[]=[5,2,5,4,5,1,6];n=7海报可用的最大面积为4*4=16.(

2020-08-29 17:09:25 274

原创 无符号整数加扰

HW 2020.8.26笔试第一题题目描述对输入n个无符号整数,进行二进制的移位和调换进行加扰,加扰后仍能保持n个整数。输出加扰后的n个整数,两个整数之间空格分开。加扰步骤:1.先把每个整数每两个bit交换位置,如bit0和bit1交换,bit2和bit3交换,以此类推。2.再把每个整数向右移2位,溢出的部分,第一个整数的最低2bit移到第二个整数的最高两bit上,第二个整数的最低2bit移到第三个整数的最高两bit上,以此类推,最后一个整数的最低2bit移到第一个整数的最高2bit上。如果输入

2020-08-29 16:44:57 491

原创 顺时针报数

HW 2020.8.19笔试第一题题目描述一个公司做团建活动,排成1个M行N列的队形。左上角的同事编号为(0,0),右下角的同事编号为(M-1,N-1)。为了打散队伍重新分组。从队列左上角同事开始从1开始报数,最外圈的同事按顺时针报数。外圈同事全部报完,内圈的同事按同样规则继续报数。个位数为7且十位数为奇数被挑选出来作为特战队员。请设计一个计算的方法,入参是两个大于等于10且小于等于1000的整数,M和N。请按报数顺序输出特战队员的编号列表(N2的二维数组)非法输入请返回内容为空的数组。

2020-08-29 16:14:42 302

原创 mjpg-streamer客户端

(1).发送一个请求字符串“GET /?action=snapshot\n”“GET /?action=stream\n”“GET /?action=command\n”(2).再发送一次字符串如果我们不使用密码功能!则只需发送任意长度为小于2字节的字符串,比如:“f\n”如果发送的请求是:“GET /?action=snapshot\n”(3).需要接收一次字符串(是服务器发过来的报文)(4).接收一帧图片如果发送的请求是:“GET /?action=stream\n”(3).需要接收

2020-08-28 21:41:12 611

原创 移植mjpg-streamer

(1) libjpeg 的移植mjpg-streamer依赖库tar xzvf libjpeg-turbo-1.2.1.tar.gzcd libjpeg-turbo-1.2.1mkdir tmp./configure --prefix=/work/tools/libjpeg-turbo-1.2.1/tmp --host=arm-linuxmake    //prefix指定安装路径,tmp临时路径,host指定交叉编译make install  //安装在tmp目录sudo cp /work

2020-08-28 20:38:18 315

原创 cmos摄像头-ov7740驱动

ov7740摄像头模块cmos摄像头驱动基于I2C驱动框架实现,在probe函数里基于V4L2框架写摄像头驱动程序。dev函数设备地址:写 – 0x42(01000010)读 – 0x43(01000011)8bit的地址 = 7bit设备地址 + 1bit的读/写控制位设备地址 = 0100001 = 0x21static struct i2c_board_info cmos_ov7740_info = { I2C_BOARD_INFO("cmos_ov7740", 0x21),

2020-08-28 14:33:37 1472

原创 ov7740摄像头模块

目的: 将摄像头采集到的数据实时的在LCD上进行显示自然景观->摄像头模块->接口->S3C2440的摄像头控制器->LCDov7740(摄像头模块)看模组手册1). 常用参数输入信号: 自然景观等的模拟信号输出信号:RAW RGB、YUV格式的数字信号输出格式为:RAW RGB、YUV输出分辨率为:VGA(640480)、QVGA(240320)、CIF(352288)、更小的任意大小问:RAW RGB与RGB的区别是什么?答:RAW RGB就是只有红绿蓝三种

2020-08-28 09:55:11 2681

原创 IIC驱动3.4.2

IIC硬件原理

2020-08-27 11:02:51 233

原创 UART

概念通用异步收发器简称UART( Universal Asynchronous Receiver and Transmitter),它用来传输串行数据。UART之间以全双工方式传输数据,最精简的连接方式只有3根线:TxD用于发送数据,RxD用于接收数据,Gnd用于给双方提供参考电平。UART使用标准的TTL/CMOS逻辑电平(0-3.3V,0-5V等)来表示数据,高电平表示1,低电平表示0.对于远距离传输,通常转换为RS-232电平,3-12V表示0,-3 - -12V表示1。TxD和RxD数据线以

2020-08-25 17:18:20 290

原创 剑指 Offer 25. 合并两个排序的链表

参考

2020-08-23 15:51:40 106

原创 剑指 Offer 24. 反转链表

参考

2020-08-23 15:36:48 85

原创 剑指 Offer 22. 链表中倒数第k个节点

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* getKthFromEnd(ListNode* head, int k) { ListNode*p.

2020-08-23 15:23:05 88

原创 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

class Solution {public: vector<int> exchange(vector<int>& nums) { vector<int> res; vector<int> ou; for(int i=0;i<nums.size();i++){ if(nums[i]%2==1) res.push_back(num.

2020-08-23 15:18:34 129

原创 剑指 Offer 20. 表示数值的字符串

class Solution {public: bool sacnUnsigned(string s,int& index){ //扫描无符号整数 int start=index; while(index<s.size() && s[index]>='0' && s[index]<='9') ++index; return index > start; .

2020-08-23 15:04:49 97

原创 剑指 Offer 19. 正则表达式匹配

参考

2020-08-22 21:33:58 88

原创 剑指 Offer 18. 删除链表的节点

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* deleteNode(ListNode* head, int val) { if(head-&gt.

2020-08-22 21:31:18 121

原创 剑指 Offer 17. 打印从1到最大的n位数

class Solution {public: vector<int> printNumbers(int n) { vector<int> res; int max=1; for(int i=0;i<n;i++){ max*=10; } for(int i=1;i<max;i++){ res.push_back(i); .

2020-08-22 21:05:50 95

空空如也

空空如也

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

TA关注的人

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