函数调用

Android电源管理简介(下)

核能气质少年 提交于 2020-02-07 00:15:37
文章转载自:http://blog.csdn.net/hzdysymbol/archive/2009/03/19/4004791.aspx Kernel层 其主要代码在下列位置 : drivers/android/power.c 其对 Kernel提供的接口函数有 EXPORT_SYMBOL(android_init_suspend_lock); //初始化 Suspend lock,在使用前必须做初始化 EXPORT_SYMBOL(android_uninit_suspend_lock); //释放 suspend lock相关的资源 EXPORT_SYMBOL(android_lock_suspend); //申请 lock,必须调用相应的 unlock来释放它 EXPORT_SYMBOL(android_lock_suspend_auto_expire);//申请 partial wakelock, 定时时间到后会自动释放 EXPORT_SYMBOL(android_unlock_suspend); //释放 lock EXPORT_SYMBOL(android_power_wakeup); //唤醒系统到 on EXPORT_SYMBOL(android_register_early_suspend); //注册 early suspend的驱动 EXPORT_SYMBOL

Android PM suspend&resume

人盡茶涼 提交于 2020-02-07 00:14:29
Android PM suspend&resume 电源 管理 主要体现在以下方面: 1.低功耗模式:对于现在的嵌入式芯片,都提供了各种低功率模式,如:提供了STOP,WAIT,DEEP SLEEP等功率状态,为不同的 系统 应用 使用不同的功率模式提供了很好的 解决 方案 。同时,除DEEP SLEEP模式外,在动态电源管理中,大大提高了其他模式之间的转换速度。 2.动态电压与频率调整模式:在动态功率模式中,通过提供不同的电压,不同的系统时钟频率,芯片可以工作于不同的主频上,可以根据系统的负载情况,动态调 整芯片的工作状态,只要能满足系统运行需要即可,从而避免了系统一直高速运行下的功率浪费。 3.时钟与电源开关:对于一嵌入式系统,可能存在很多外围设备,但它们不需要同时使用,对于不需要使用的设备,可以停止给它们提供时钟与电源,或让相应的 设备进入DEEP SLEEP状态,仅仅提供最基本的时钟和电压,达到减少功耗的目的。 Android的电源管理还是比较简单的, 主要就是通过锁和定时器来切换系统的状态,使系统的功耗降至最低,整个系统的电源管理架构图如下: (注该图来自Steve Guo) Kernel层[针对Android Linux 2.6.28内核]: 1、初始化 suspend 和resume函数 static struct platform_driver mxcbl

QT学习之路2 学习笔记

跟風遠走 提交于 2020-02-07 00:02:59
QT学习之路2 学习笔记 1.Qt 是一个著名的 C++ 应用程序框架。你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件。使用 Qt,在一定程度上你获得的是一个“一站式”的解决方案:不再需要研究 STL,不再需要 C++ 的<string>,不再需要到处去找解析 XML、连接数据库、访问网络的各种第三方库,因为 Qt 自己内置了这些技术。 2.Qt 是一个跨平台的框架。跨平台 GUI 通常有三种实现策略: API 映射;API 模拟;GUI 模拟; 3.Qt 和 wxWidgets 一样,也是一个标准的 C++ 库。但是它的语法类似于 Java 的 Swing,十分清晰,而且使用信号槽(signal/slot)机制,让程序看起来很明白——这也是很多人优先选择 Qt 的一个很重要的原因。不过,所谓“成也萧何,败也萧何”。这种机制虽然很清楚,但是它所带来的后果是你需要使用 Qt 的 moc 对程序进行预处理,才能够再使用标准的 make 或者 nmake 进行正常的编译,并且信号槽的调用要比普通的函数调用慢大约一个数量级 4.main()函数一般以创建 application 对象(GUI 程序是QApplication,非 GUI 程序是QCoreApplication。QApplication实际上是QCoreApplication的子类。) 5

python基础面试集锦(51-100)

南楼画角 提交于 2020-02-06 21:32:54
目录 51、把aaabbbcccdd这种形式的字符串压缩成a3b3c3d2的形式? 52、给你一个字符串'abc',打印出该字符串的所有排列组合? 53、执行以下代码后,x的值为? 54、对于一个非空字符串,判断其是否可以有一个子字符串重复多次组成,字符串 只包含小写字母且长度不超过 10000 55、从0-99这100个数中随机取出10个不重复的值? 56、介绍一下try except的用法和作用? 57、在python中如何抛出,捕获,处理异常? 58、enumerate的作用是什么? 59、python递归最大深度? 60、列举常见的内置函数? 61、filter、map、reduce的作用? 62、一行代码实现9x9乘法表? 63、什么是闭包? 64、用装饰器,限制函数被调用的频率,如1秒一次 65、请实现一个装饰器,通过 一次调用时函数重复执行5次 66、一行代码输出1-100偶数列表。(列表推导式,filter) 67、解释生成器与函数的不同,并实现和简单使用generator 68、写出打印结果? 69、简述yield和yieldfrom关键字 70、以下代码输出的结果? 71、以下代码输出结果? 72、从一个列表中剔除重复的,然后求和 73、map(str,[1,2,3])输出是什么? 74、请简述标准库中functools.wraps的作用 75

Go 系列教程 —— 23. 缓冲信道和工作池

自闭症网瘾萝莉.ら 提交于 2020-02-06 15:59:14
什么是缓冲信道? 在上一教程里,我们讨论的主要是无缓冲信道。我们在信道的教程里详细讨论了,无缓冲信道的发送和接收过程是阻塞的。 我们还可以创建一个有缓冲(Buffer)的信道。只在缓冲已满的情况,才会阻塞向缓冲信道(Buffered Channel)发送数据。同样,只有在缓冲为空的时候,才会阻塞从缓冲信道接收数据。 通过向 make 函数再传递一个表示容量的参数(指定缓冲的大小),可以创建缓冲信道。 ch := make(chan type, capacity) 要让一个信道有缓冲,上面语法中的 capacity 应该大于 0。无缓冲信道的容量默认为 0,因此我们在上一教程创建信道时,省略了容量参数。 我们开始编写代码,创建一个缓冲信道。 示例一 package main import ( "fmt" ) func (main() { ch := make(chan string, 2) ch <- "naveen" ch <- "paul" fmt.Println(<- ch) fmt.Println(<- ch) } 在线运行程序 在上面程序里的第 9 行,我们创建了一个缓冲信道,其容量为 2。由于该信道的容量为 2,因此可向它写入两个字符串,而且不会发生阻塞。在第 10 行和第 11 行,我们向信道写入两个字符串,该信道并没有发生阻塞。我们又在第 12 行和第 13

Traceview

匆匆过客 提交于 2020-02-06 14:12:01
转: http://www.cnblogs.com/devinzhang/archive/2011/12/18/2291592.html Traceview是android平台配备的一个很好的性能分析工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。 进行Traceview的版本限制 对于 Android 1.5 及以下的版本: 不支持 。 对于 Android 1.5 以上 2.1 下(含2.1)的版本: 受限支持 。trace文件只能生成到 SD卡 ,且必须在程序中加入代码。 对于 Android 2.2 上(含2.2)的版本:全支持。可以 不用SD卡 ,不用在程序中加代码,直接自己用DDMS就可以进程Traceview。 一、Android 1.5以上2.1下(含2.1)的版本中Traceview的使用 首先,必须在程序当中加入代码,以便生成trace文件,有了这个trace文件我们才可以将其转化为图形。 1.1、 启动追踪 使用Debug的以下静态方法方法来启动: static void startMethodTracing (String traceName) Start method tracing, specifying the trace log file name. 使用指定trace文件的名字和默认最大容量(8M

智能合约常见攻击方式

人走茶凉 提交于 2020-02-06 12:59:40
准备 MetaMask ,指向 Ropsten test network , 获取测试Ether Remix-ide 普通攻击 fallback回退函数 合约可以有一个未命名函数,该函数不能有参数,也不能有返回值。fallback函数在以下情况会被调用: 一个调用中,没有其他函数与给定的函数标识符匹配(或没有提供调用数据)。由于Solidity中,Solidity提供了编译期检查,所以我们不能直接通过Solidity调用一个不存在的函数。但我们可以使用Solidity的提供的 底层函数address.call 来模拟这一行为,进行函数调用。 合约收到以太币,没有任何数据(为接受以太币,fallback函数必须标记为 payable : function() payable public{} ,否则合约无法接收,如果通过转账函数 transfer 发送到没有定义payable的合约, 会抛出错误,导致后面的代码无法执行 !但如果有合约通过 自毁 selfdestruct(address) 的方式发送,即使没有定义为payable都得收下 !)。通过MetaMask的Send向合约地址转以太币触发(ethernaut环境下可通过集成函数 contract.sendTransaction({value: 1}) 转以太币;通过 address.call.gas(1000000)

JavaScript调用函数的3种方式

我的梦境 提交于 2020-02-06 11:49:52
直接调用函数 直接调用函数是最常见、最普通的方式,这种方式直接以函数附加的对象作为调用者,在函数后括号内传入参数来调用函数 这种方式是前面最常见的调用方式 例如如下代码 //调用 window 对象的 alert 方法 window. alert ( "测试代码" ) ; //调用p对象的 walk 方法 p. walk ( ) 以 call() 方法调用函数 直接调用函数的方式简单、易用,但这种调用方式不够灵活 有些时候调用函数时需要动态地传入一个函数引用,此时为了动态地调用函数,就需要使用 call 方法来调用函数了 <scrip type "text/javascript"> //定义 each 函数 var each= function(array, fn) { for(var index in array) { //以 window 为调用者来调用 fn 函数 // index array[index] 是传给 fn 函数的参数 fn. call ( null, index, array[index] ) ; } } //调用 each 函数,第一个参数是数组,第二个参数是fn函数 each([4 , 20, 3] , function(index , ele) { documen. write ( "第" + index + "个元素是:" ele + "<br />"

C++ 谓词(predicate) 与 仿函数 ( functor (function object))

故事扮演 提交于 2020-02-06 11:27:10
谓词与函数对象 谓词 predicate C++ 标准定义谓词如下: The Predicate parameter is used whenever an algorithm expects a function object that when applied to the result of dereferencing the corresponding iterator returns a value testable as true. In other words, if an algorithm takes Predicate pred as its argument and first as its iterator argument, it should work correctly in the construct if (pred(*first)){...}. The function object pred shall not apply any non-constant function through the dereferenced iterator. This function object may be a pointer to function, or an object of a type with an appropriate function

APP测试工具之TraceView卡顿检测

心不动则不痛 提交于 2020-02-06 08:17:18
Traceview卡顿检测 Traceview是Android平台特有的数据采集和分析工具,集成在DDMS工具中,可以采集程序中的方法执行耗时、调用关系、调用次数以及资源占用等情况。 一、使用方法 1、启动虚拟机/连接手机,cmd命令输入ddms启动DDMS工具。打开手机上被测应用,在ddms上选择测试应用的进程。点击Start Method Profiling按钮,当按钮上的小红点变成黑色的时候,处于采集信息状态。 2、操作应用被测模块,操作完成后,点击Start Method Profiling结束采集信息,这时会弹出Traceview界面,显示操作过程中采集的数据信息。 Traceview界面分为时间线界面和分析界面两部分,时间界面显示线程函数的调用信息,包括函数名和函数时间,鼠标在时间线上移动,可以显示当前时间点中线程执行的信息;分析界面展示了线程中函数调用情况,包括CPU使用时间,调用次数等信息。 列名 描述 Name 该线程运行过程中所调用的函数名. Incl Cpu Time 某函数占用的CPU时间,包含内部调用其它函数的CPU时间. Excl Cpu Time 某函数占用的CPU时间,但不含内部调用其它函数所占用的CPU时间. Incl Real Time 某函数运行的真实时间(以毫秒为单位),内含调用其它函数所占用的真实时间. Excl Real Time