初始化

FFMPEG录屏(1)----录制桌面

≡放荡痞女 提交于 2020-03-11 16:56:23
https://blog.csdn.net/peilinok/article/details/102981560 首先录制桌面有很多种方法,原生windows api进行GDI抓屏,Mirror,Direct等,本文针对ffmpeg gdi抓屏进行介绍,也开始录屏软件开发之旅。 准备ffmpeg,无所谓是动态库、静态库,请自行前往下载并引入工程。 在本系列文章中,一些FFMPEG的结构、函数并不会做过多说明,请自行了解,重点放在了桌面录制的整体流程。 参考资料: ffmpeg 源代码简单分析 初始化FFMPEG av_register_all(); avdevice_register_all(); 准备屏幕参数,包含了帧率、录制区域的起始坐标、大小、是否绘制鼠标等参数。 char buff_video_size[50] = { 0 }; sprintf_s(buff_video_size, 50, "%dx%d", rect.right - rect.left, rect.bottom - rect.top); AVDictionary *options = NULL; av_dict_set_int(&options, "framerate", fps, AV_DICT_MATCH_CASE); av_dict_set_int(&options, "offset_x", rect

大航海时代2 全村落 探索 MD ROM 静态 HACKER

只愿长相守 提交于 2020-03-11 15:07:02
开篇 - 来个低级语言的 MC68000汇编 大航海时代2 全村落 MD ROM的 HACKER 最近心血来潮,看到MD的大航海时代2 ROM,勾起了很多记忆。一直想要周游全世界,仗剑走天涯,看一看世界的繁华,只奈没钱,没时间。 只能回忆当年玩MD大航海时代2的时候的美好时光,因为当年一心想要发现全世界的发现物,但是后来发现是不可能的,开局随机的,一直想要解决这个问题,今天决定HACKER一下这个ROM。 目标:大航海时代2 全村落 探索 MD ROM 静态 HACKER 工具:IDA ,REGEN,MESSUI 要求技术:懂一点摩托罗拉MC68000的汇编 找到ROM,大航海时代2纯中文版原版.smd ROM ,感觉这个比较纯,虽然当年玩的都是日文版,那就以这个开始吧。 接下来咋整? 直接运行ROM? 找初始化代码? 没有思路? 看来要找到初始化村落的内存地址,地址怎么找? EC代码呀,去看看有没有,果然发现了 EC代码,说 5C25=64 ?啥意思呢 就是说把内存地址: 5C25 SET 为64(16进制),那么说干就干 下断点: messui 工具下断点: wp ff5C25,2,w 查看一下内存的内容: 注意内存查看要加上 ff5c25 注意看内存: ff5c15 都FFFF 的,大胆猜测: ff5c1E 为村落内存开始数据: ff5c1E 刚才运行系统运行到2个断点:

蓝桥杯嵌入式第十届省赛程序

最后都变了- 提交于 2020-03-11 14:00:34
第十届赛题程序部分较为简单,客观题相对较难。主要会用adc+led即可ok,本科组甚至没有用到EEPROM(本代码加入此功能将led灯信息,上下阈值存入EEPROM,reset后数据不丢失) 先看目录 初始化函数 头文件: 初始化程序 #include "stm32f10x.h" #include "lcd.h" #include "init.h" #include "i2c.h" void GPIO_Int(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC| RCC_APB2Periph_GPIOD, ENABLE); //led GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10| GPIO_Pin_11 | GPIO_Pin_12| GPIO_Pin_13 | GPIO_Pin_14| GPIO_Pin

C++11就地初始化与列表初始化

可紊 提交于 2020-03-11 12:06:32
C++11就地初始化与列表初始化 1.就地初始化 1.1 简介 在C++11之前,只能对结构体或类的静态常量成员就行就地初始化,其他的不行。如下代码所示: class Test { private: static const int a=10; //yes int a=10; //no } 在C++11中,结构体或类的数据成员在申明时可以直接赋予一个默认值,初始化的方式有两种,一是使用等号“=”,二是使用大括号列表初始化的方式。注意,使用参考如下代码: class C { private: int a=7; //C++11 only int b{7}; //或int b={7}; C++11 only int c(7); //error }; 注意 :小括号初始化方式不能应用于就地初始化。 1.2 就地初始化与初始化列表的先后顺序 C++11标准支持了就地初始化非静态数据成员的同时,初始化列表的方式也被保留下来,也就是说既可以使用就地初始化,也可以使用初始化列表来完成数据成员的初始化工作。当二者同时使用时,并不冲突,初始化列表发生在就地初始化之后,即最终的初始化结果以初始化列表为准。参考如下代码: #include <iostream> using namespace std; class Mem { public: Mem(int i,int j):m1(i),m2(j) {}

数组的定义

旧巷老猫 提交于 2020-03-11 10:56:53
其实所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。数组本身属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配,而数组的定义语法有如下两类。 一 数组动态初始化:动态初始化之后是其对应的默认值,可以通过下标为内容设值 声明并开辟数组: 数据类型 [] 数组名称 = new 数据类型[长度]; int [] a=new int [10] 数据类型 数组名称 [] = new 数据类型[长度]; int a [] = new int [10] 数组下标是从0开始到数组长度-1这个范围, 超出后报异常数组下标越界:ArrayIndexOutOfBoundsException 数组的操作一般与for循环结合使用,也就是数组喜欢被for循环操作 日后的开发中用的最多的数组处理形式就是 数组的for循环 那么当数组开辟空间之后,就可以采用如下的方式的操作: 1 数组的访问通过索引完成,即:“数组名称[索引]”,但是需要注意的是,数组的索引从0开始,所以索引的范围就是0 ~ 数组长度-1,例如开辟了3个空间的数组,所以可以使用的索引是:0,1,2,如果此时访问的时候超过了数组的索引范围,会产生java.lang.ArrayIndexOutOfBoundsException 异常信息; 2 当我们数组采用动态初始化开辟空间后

android ListView 在初始化时多次调用getView()原因分析

余生颓废 提交于 2020-03-11 07:58:27
今天在做一个功能:在初始化ListView时,把第一行背景置为黄色,同时保存第一行对象,用于在点击其他行时将该行重新置为白色。 if(position==0){ convertView.setBackgroundColor(Color.YELLOW); lastconvertView=convertView; } 结果运行时发现第一行的颜色一直会是黄色而无法改变。调试了之后发现getView中 if(position==0) 居然会多次进入,最终导致的结果便是我最后一次取得的lastconvertView并非listview上面的第一行。网上查了之后发现原因是因为未固定listview的高度导致的,但是root cause却找不到说明。于是去翻阅了源码+大量调试,大概推算出了原因,在此记录。 首先是说明下ListView的显示机制,listview的机制是这样子的: 假如你有1000条数据,但是屏幕只能显示10条,那么当你第一次加载显示的时候,会先创建10个View,1-10,当你拖动Listview,使1隐藏而11显示的时候,系统会自动把填充1的View传递过来,注意看代码Adapter的getView方法 @Override public View getView(final int position, View convertView, ViewGroup parent)

ptmalloc一些细节流程

孤人 提交于 2020-03-11 05:14:19
chunk 容器 Bins ptmalloc统一管理heap和mmap区的chunk,避免了频繁的系统调用,一共维护了128个bin,使用数组来存储,所有的bin都是双向链表。   2 .Fast Bins 对于不大于max_fast的chunk加入fast bins,标志位P不改变(为了不使其合并),在认为内存碎片太多时会将其合并加入unsorted bin。   3. Unsorted Bin 对于回收的chunk大于max_fast或合并完的 fast bin 会加在这里,在fast bin中没有找到合适的chunk后,会在这里找,如果没有将其加入到合适的bin中,相当于其他bin的高速缓存。   4 . Top chunk 在sub_heap的最高处不属于任何chunk,总是在small bin 和large bin 后考虑,与收缩条件息息相关。   5 .mmap chunk 申请的内存足够大时,直接使用mmap向系统申请资源,同时释放时也是直接解除映射。   6 .Last remainder 一种特殊的chunk,不属于任何bin,当需要分配一个small chunk时,没有相应的chunk,last remainder chunk会分裂成两个,一个返回给用户,另一个变成新的last remainder chunk。 核心结构 对于主分配区,使用了静态全局的结构体定义

GMM算法应用实例介绍及参数详解

坚强是说给别人听的谎言 提交于 2020-03-10 19:30:26
GMM,高斯混合模型,也可以简写为MOG。高斯模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。 高斯混合模型(CMMs)是统计学习理论的基本模型,在可视媒体领域应用广泛。近些年来,随着可视媒体信息的增长和分析技术的深入,GMMs在(纹理)图像分割、视频分析、图像配准、聚类等领域有了进一步的发展。从GMMs的基本模型出发,从理论和应用的角度讨论和分析了GMMs的求解算法,包括EM算法、变化形式等,论述了GMMs的模型选择问题:在线学习和模型约简。在视觉应用领域,介绍了GMMs在图像分段、视频分析、图像配准、图像降噪等领域的扩展模型与方法,详细地阐述了一些最新的典型模型的原理与过程,如用于图像分段的空间约束CMMs、图像配准中的关联点漂移算法。最后,讨论了一些潜在的发展方向与存在的困难问题。 GMM在视觉分析中的应用 1. 图像分段 高斯混合模型在图像分割领域应用广泛,在一般图像上经典过程是将像素映射到特征空间,然后假设特征空间的点由待定参数的GMMs生成,使用EM等算法计算最优的参数值以确定像素的类别。实际上,在图像分割应用中GMMs被看做是一个聚类模型,与特征选择、聚类分析、模型选择、EM算法设计紧密相关。 2. 视频分析 CMMs和相关的统计方法广泛应用于视频分段、目标识别和跟踪、错误消除,为手势识别

HashMap源码分析(jdk12)

房东的猫 提交于 2020-03-10 15:06:41
1. 初始化 ,hashMap初始化容量默认大小为16,默认负载因子为0.75F 一共有3个构造器 无参 带初始化容量 带初始化容量和初始化加载因子 前两个构造器都是调用第三个构造器。如果没有设置初始化容量或负载因子,以默认值创建。值得一提的是: 在调用构造器创建HashMap时不会立即创建容器,(在jdk1.8之后为 Node<K,V>[] table 用于存储键值对)。而是会在你第一次put元素的时候调用resize方法创建。 容器的大小必须为2的倍数。你在设置初始化容器大小时,如果输入的不是2的倍数,那会自动调整为最接近的大于输入值的2的倍数。主要在tableSizeFor这个方法实现。 该方法,先获取 输入数-1 的32位二进制前导零数目(这里-1理解一下就好了,不-1那对于恰好是2的倍数的,会扩大一倍)。-1无符号右移前导零数目位,这样就得到了最接近 输入数 的 2的倍数-1。最后判断n的大小, 如果n=-1表示cap=1,那就设置容量为1; 如果n>0,如果大于最大容量,那就设置为最大容量,否则设置为n+1。 hashMap有最大容量。2^30 链表长度阈值 当长度大于8时,会从链表转化为红黑树。至于为什么设置为8主要是理想状态下,设置合理的HashMap,根据泊松分布计算得到链表长度达到8的概率极低( 0.00000006)

页面初始化时datatable不显示数据

大憨熊 提交于 2020-03-10 14:45:42
有一个查询页面使用了datatable,但要求初始化时不显示数据,而datatable默认是自动查询数据的。在网上没有找到比较好的解决办法,于是使用了一个比较不正规的办法,就是在点击“查询”按钮后再初始化datatable控件。 首先,将datatable初始化代码封装到一个方法内, function initTable(){ oTable = $('#taskList').DataTable({ "processing": true, "serverSide": true, "bFilter": false, "ajax": { 'url' : '', 'method':'POST', "data": }, ...其它datatable属性 }); } 其次,在查询方法中判断datatable是否已经初始化,如果没有初始化则先初始化datatable $("#querySubmit").click(function(){ if(oTable == null){ initTable();//初始化datatable时会自动查询数据 }else{ loadData();//如果已经初始化datatable则直接重新加载数据 } }); 如此就能实现datatable的“懒加载”。 来源: CSDN 作者: huangjianwei79 链接: https://blog.csdn