空间数据

V4L2视频应用程序编程架构

人盡茶涼 提交于 2020-02-25 02:02:02
V4L2视频应用程序编程架构 V4L(video4linux是一些视频系统,视频软件、音频软件的基础,经常时候在需要采集图像的场合,如视频监控,webcam,可视电话,经常使用在embedded linux中是linux嵌入式开发中经常使用的系统接口。它是linux内核提供给用户空间的编程接口,各种的视频和音频设备开发相应的驱动程序后,就可以通过v4l提供的系统API来控制视频和音频设备,也就是说v4l分为两层,底层为音视频设备在内核中的驱动,上层为系统提供的API,而对于我们来说需要的就是使用这些系统API。 V4L2较V4L1有较大的改动,并已成为2.6的标准接口。下边先就V4L2在视频捕捉或camera方面的应用框架。 V4L2采用流水线的方式,操作更简单直观,基本遵循打开视频设备、设置格式、处理数据、关闭设备,更多的具体操作通过ioctl函数来实现。 1、打开视频设备 在V4L2中,视频设备被看做一个文件。使用open函数打开这个设备: int cameraFd; cameraFd = open("/dev/video0", O_RDWR, 0); //用阻塞模式打开摄像头设备 2、设定属性及采集方式 打开视频设备后,可以设置该视频设备的属性,例如裁剪、缩放等。这一步是可选的。在Linux编程中,一般使用ioctl函数来对设备的I/O通道进行管理: int ioctl

数据结构与算法常见面试题1

烈酒焚心 提交于 2020-02-24 20:22:00
1.八大数据结构及其应用场景(数组、栈、链表、树、图、堆、散列表) 1.数组 数据结构中最基本的一个结构就是线性结构,而线性结构又分为连续存储结构和离散存储结构。连续存储结构其实就是数组。 在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。 使用场景 数组在以下三个情形下很有用: 1)数据量较小。 2)数据规模已知。 3)随机访问,修改元素值。 如果插入速度很重要,选择无序数组。如果查找速度很重要,选择有序数组,并使用二分查找。 缺点 1)需要预先知道数据规模 2)插入效率低,因为需要移动大量元素。 2.栈 是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。 使用场景 1.十进制与其它进制间的转换 125→1111111 2.行编辑器 #退格 @清除 3.平衡符号的判断 {[()()]} 4.中缀表达式转后缀表达式 顺序栈 优点 1)在输入数据量可预知的情形下,可以使用数组实现栈,并且数组实现的栈效率更高

架构笔记

非 Y 不嫁゛ 提交于 2020-02-23 03:10:27
高可用设计手段 无状态化–服务冗余 负载均衡–幂等设计 异步化设计–超时机制 服务限流降级熔断–数据复制/缓存 架构拆分、服务治理–sharding 高可用案例 网关层具备热切换能力 高并发设计手段 缩短响应时间 提高并发数(增加吞吐量) 让系统处于合理状态 高并发优化手段 空间换时间/时间换空间/找到系统瓶颈 调用了多少RPC接口? 载入多少数据? 使用什么算法? 非核心流程能否异步化? 没有数据依赖的逻辑能到否并行执行? 高并发优化层次 来源: CSDN 作者: 琅天溪 链接: https://blog.csdn.net/qq_28089993/article/details/104447627

机器学习-周志华-第一章

我怕爱的太早我们不能终老 提交于 2020-02-23 01:38:28
绪论 1.1 引言 什么是机器学习? 它是一门致力于研究如何通过计算的手段,利用经验来改善系统自身性能的一门学科。所研究的主要内容是计算机如何通过数据产生模型,即学习算法。有了学习算法后,当我们给它提供经验数据时就能基于这些数据产生模型。在面对新数据时学习算法会给我们相应的判断。经验通常以数据的形式存在 名词理解 模型:一类问题的解题步骤 算法:一个问题的解题步骤 学习算法:由数据产生的一类问题的解题步骤。通过学习算法从数据中获得模型 ps:阿尔法狗零自学三天以100:0战胜阿尔法狗。这里阿尔法狗零利用人类经验提升自身能力,这就是机器学习 1.2 基本术语 数据集 示例 属性、特征 属性空间、样本空间、输入空间:数据的维度空间 特征向量: 学习、训练:从数据中学得模型的过程 训练数据:训练过程中使用的数据 训练样本: 训练集:多个训练样本的集合 假设:学到的模型 真相:数据某种潜在的规律 标记:示例的结果信息 样例:有标记信息的示例 标记空间、输出空间:(x,y),y:所有标记的集合 分类:预测值是离散的学习任务 二分类:只涉及两个类别的分类 多分类: 回归:预测值是连续的学习任务 聚类:将训练集中的示例分组 监督学习:训练数据中拥有标记信息的学习任务 。如分类和回归 无监督学习:训练数据中不包含标记信息的雪人任务;如聚类 泛化能力:学得模型适用于新样本的能力 1.3 假设空间

存储管理(4)

六月ゝ 毕业季﹏ 提交于 2020-02-21 05:43:37
存储管理 存储管理的主要模式 逻辑地址 逻辑地址:又称相对地址,即用户编程所使用的地址空间 逻辑地址从0开始编号,有两种形式: 一维逻辑地址(地址) 二维逻辑地址(段号:段内地址) 段式程序设计 把一个程序设计成多个段 代码段、数据段、堆栈段等等 用户可以自己应用 段覆盖技术 扩充内存空间使用量 这一技术是程序设计技术,不是OS存储管理的功能 物理地址 物理地址:又称绝对地址,即程序执行所使用的地址空间 处理器执行指令时按照物理地址进行 主存储器的复用 多道程序设计需要复用主存 按照分区复用: 主存划分为多个固定/可变尺寸的分区 一个程序/程序段占用一个分区 按照页架复用: 主存划分为多个固定大小的页架 一个程序/程序段占用多个页架 存储管理的基本模式 单连续存储管理:一维逻辑地址空间的程序占用一个主存固定分区或可变分区 段式存储管理:段式二维逻辑地址空间的程序占用多个主存可变分区 页式存储管理:一维逻辑地址空间的程序占用多个主存页架区 段页式存储管理:段式二维逻辑地址空间的程序占用多个主存页架区 存储管理的功能 地址转换 地址转换:又称重定位,即把逻辑地址转换成绝对地址 静态重定位:在程序装入内存时进行地址转换 由装入程序执行,早期小型OS使用 动态重定位:在CPU执行程序时进行地址转换 从效率出发,依赖硬件地址转换机构 主存储器空间的分配与去配 分配:进程装入主存时

SQL Server DBA日常检查常用SQL

风流意气都作罢 提交于 2020-02-21 04:41:31
1、数据库 --所有数据库的大小 exec sp_helpdb --所有数据库的状态 select name, user_access_desc, --用户访问模式 state_desc, --数据库状态 recovery_model_desc, --恢复模式 page_verify_option_desc, --页检测选项 log_reuse_wait_desc --日志重用等待 from sys.databases --某个数据库的大小:按页面计算空间,有性能影响,基本准确,有时不准确 use test go exec sp_spaceused go --可以@updateusage = 'true',会运行dbcc updateusage exec sp_spaceused @updateusage = 'true' --对某个数据库,显示目录视图中的页数和行数错误并更正 DBCC UPDATEUSAGE('test') 2、数据文件 复制代码 代码如下: --查看某个数据库中的所有文件及大小 sp_helpfile --查看所有文件所在数据库、路径、状态、大小 select db_name(database_id) dbname, type_desc, --数据还是日志 name, --文件的逻辑名称 physical_name, --文件的物理路径 state_desc,

C语言内存小结

人盡茶涼 提交于 2020-02-20 13:05:12
学习C语言是了解内存布局的最简单、最直接、最有效的途径, 它比任何一门高级编程语言都贴近内存。以前学习C语言内存也有一段时间,却也是零零散散,于是打算写一篇博客,整理一下关于内存的内容。 内存优化小结: 计算机内存是以字节(Byte)为单位划分的,理论上CPU可以访问任意编号的字节,但是由于内存对齐(编译器的优化),情况就有所不同; CPU 通过地址总线来访问内存,一次能处理几个字节的数据,就命令地址总线读取几个字节的数据。32 位的 CPU 一次可以处理4个字节的数据,那么每次就从内存读取4个字节的数据,这就是意味着CPU读取的内存单元的标号一定是4的倍数;对于程序来说,一个变量最好位于一个寻址步长的范围内,这样一次就可以读取到变量的值;如果跨步长存储,就需要读取两次,然后再拼接数据,效率显然降低了。 例如一个 int 类型的数据,如果地址为 8,那么很好办,对编号为 8 的内存寻址一次就可以。如果编号为 10,就比较麻烦,CPU需要先对编号为 8 的内存寻址,读取4个字节,得到该数据的前半部分,然后再对编号为 12 的内存寻址,读取4个字节,得到该数据的后半部分,再将这两部分拼接起来,才能取得数据的值。 64位的处理器也是这个道理,同样的分析。 虚拟地址小结: 虚拟地址在寄存器层面是段地址+偏移地址,这两个地址通过内部总线传输到CPU的内部结构—

深入程序编译链接和装载过程

僤鯓⒐⒋嵵緔 提交于 2020-02-20 02:29:27
文章目录 预编译 编译 汇编 链接 基础先知 指令和数据 分析二进制可重定位目标文件 main.o 的组成 强符号和弱符号 符号表 链接过程分析 运行 提问:一个源文件是如何变成可执行文件的? 在linux中,使用GCC来编译程序,我们逐步来分析: 预编译 gcc -E hello.c hello.i 编译 gcc -S hello.i -o hello.s 汇编 gcc -c hello.s -o hello.o 链接 gcc hello.o -o hello 运行 ./hello 预编译 预编译阶段主要处理以"#"开头的预编译指令。 删除宏定义并作文本替换 递归展开头文件“#include” 处理#if、#ifdef、#elif、#else、#endif等 删除注释“//”和 “/* */” 添加行号和文件标识,以便编译器产生编译调试时的行号信息,以及产生错误或警号时能够显示行号 保留所有的#pragma指令 编译 词法分析 语法分析 语义分析 代码优化 生成汇编指令 汇编 将汇编指令转换成机器指令 链接 基础先知 指令和数据 局部变量属于指令,静态变量和全局变量属于数据。 int gdata1 = 10; //数据 int gdata2 = 0; //数据 强符号 int gdata3;//数据 static int gdata4 = 11; //数据 static int

(数据库)12_创建和管理表

喜夏-厌秋 提交于 2020-02-19 05:15:59
12_创建和管理表 一、常见的数据库对象 二、Oracle 数据库中的表 1.查询数据字典 三、表的命名规则 四、表空间 五、CREATE TABLE 语句 1.创建表 2.数据类型 3.使用子查询创建表 六、ALTER TABLE 语句 1.使用 ALTER TABLE 语句追加, 修改, 或删除列的语法 2.实例 七、删除表 八、清空表 九、改变对象的名称 总 结 目标 描述主要的数据库对象 创建表 描述各种数据类型 修改表的定义 删除,重命名和清空表 一、常见的数据库对象 二、Oracle 数据库中的表 ①用户定义的表: 用户自己创建并维护的一组表 包含了用户所需的信息 如:SELECT * FROM user_tables;查看用户创建的表 ②数据字典: 由 Oracle Server 自动创建的一组表 包含数据库信息 1.查询数据字典 查看当前用户的所定义的表: SELECT * FROM user_tables 查看用户定义的各种数据库对象: --查询用户所定义的数据库对象类型 SELECT DISTINCT object_type FROM user_objects ; 查看用户定义的表, 视图, 同义词和序列: --查看用户定义的表, 视图, 同义词和序列 SELECT * FROM user_catalog 三、表的命名规则 表名和列名: 必须以 字母开头 必须在

了解mongodb

回眸只為那壹抹淺笑 提交于 2020-02-17 20:18:47
本文大纲 基础了解mongodb(mongodb介绍,跟其他nosql区别,跟内存服务器区别等,使用场景) 在使用前,强力建议看哈http://wenku.baidu.com /link?url=luqHFDarGTCW5KgDl1eHs8oF9LSbobshfqmvcASYvj-AdluLtiQ3ZKduduEl2M_6GGJb8zfORDyERdquE33W6WzVMN2OiYtwifKbBOXWudK 一、前言   做个日志服务器,多台服务器通过log4j配置,把日志以json格式输入到mongodb服务器,每日大概1000万日志量,然后后台提供接口供日志查询。 为什么选择mongodb: 1:是因为他的访问速度很快,尤其是在创建了索引下比mysql,oracle都快。 2:支持log4J直接入库,支持json格式入库等等 3:mongodb的聚合框架支持所有类似sql的查询 4:参考下面的 二、MongoDB简介   MongoDB是一个高性能,开源,无模式的文档型数据库,是当前 NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发。Mongo的官方网站地址是:http://www.mongodb.org/,读者可以在此获得更详细的信息。 小插曲:什么是NoSql?   NoSql,全称是 Not Only