函数调用

Android GC 那点事

拈花ヽ惹草 提交于 2020-03-15 22:07:03
版权声明:本文由陈昱全原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/170 来源:腾云阁 https://www.qcloud.com/community 想写一篇关于Android GC的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC, GC ALLOC和GC COCURRENT有什么区别,能不能想办法扩大堆内存减少GC的频次等等。 1. JVM内存回收机制 1.1. 回收算法 标记回收算法(Mark and Sweep GC) 从"GC Roots"集合开始,将内存整个遍历一次,保留所有可以被GC Roots直接或间接引用到的对象,而剩下的对象都当作垃圾对待并回收,这个算法需要中断进程内其它组件的执行并且可能产生内存碎片。 复制算法 (Copying) 将现有的内存空间分为两快,每次只使用其中一块,在垃圾回收时将正在使用的内存中的存活对象复制到未被使用的内存块中,之后,清除正在使用的内存块中的所有对象,交换两个内存的角色,完成垃圾回收。 标记-压缩算法 (Mark-Compact) 先需要从根节点开始对所有可达对象做一次标记,但之后,它并不简单地清理未标记的对象

ASP.NET AJAX调用Web Service

你。 提交于 2020-03-15 19:44:47
原文发布日期:2007.02.08 作者: Bipin Joshi 翻译: webabcd 介绍 尽管AJAX是种客户端技术,但实际上的开发过程,它经常要调用一个服务器端的过程。通常,网站上的数据是存放在一个关系型数据库中,为了让AJAX更有用处,处理服务器端数据需要一种简单可靠的方法。幸运的是,ASP.NET AJAX提供了一种有效的基础架构来做这件事情,浏览器和服务器在Internet上可以进行AJAX通信。自然而然,Web Service在数据传输和客户端/服务器之间的一般通信方面可以扮演一个重要角色。本文就演示了如果通过ASP.NET AJAX调用ASP.NET web services。 软件需求 本文所有的范例都是使用ASP.NET AJAX RC版,而且,要在SQL Server 2005 (Express版即可)上有一个Northwind数据库。范例使用Visual Studio 2005作为开发环境。 范例场景 范例开发了一个Web页面,用于输入Northwind数据库职员表中的职员数据。页面通过ASP.NET AJAX功能,调用一个Web Service来完成职员表中的数据增、删、改、查。 创建一个Web Service 作为开始,使用Visual Studio 2005创建一个新的Web站点,注意把ASP.NET AJAX项目模板添加到新站点对话框

转:高阶函数、委托与匿名方法

半世苍凉 提交于 2020-03-15 16:34:43
因为InfoQ老是打不开,于是从转上来了。 高阶函数(higher-order function)是指把另一个函数作为参数或返回值的函数。例如在JavaScript语言中,Function是顶级类型。一个函数就是类型为 Function的顶级对象,自然就可以作为另一个函数的参数或返回值。例如在Microsoft AJAX Library(ASP.NET AJAX的客户端类库)中有一个被广泛使用的createDelegate方法。该方法接受一个对象A和一个函数F作为参数,并返回一个函数R。当调用函 数R时,F函数将被调用,并且保证无论在什么上下文中,F的this引用都会指向对象A: Function.createDelegate = function(instance, func) { return function() { return callback.apply(a, arguments); } } 委托是.NET平台中一种特殊的类型。有人说,它是一种强类型的函数指针。这种说法虽然细节上略失偏颇,但是从功能和作用上讲不无道理。有了委 托类型,一个方法就能被封装成一个对象被作为另一个方法的参数或返回值,这自然就为.NET平台上的语言(例如C#,VB.NET)引入了对高阶函数的“ 原生支持”1。例如在System.Array类中就有许多静态的高阶函数

拷贝、赋值与销毁

我只是一个虾纸丫 提交于 2020-03-15 12:21:09
一个类的拷贝控制操作包含: 拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符 析构函数 其中: 拷贝和移动构造函数定义了当用同类型的另一个对象初始化本对象时的操作。 拷贝和移动赋值运算符定义了将一个对象赋予同类型的另一个对象时的操作。 析构函数定义了当此类型对象销毁时的操作。 如果一个类没有定义所有这些拷贝控制成员,编译器会自动为它定义缺省的操作。对一些类来说,依赖于这些操作的默认定义会导致灾难。 拷贝构造函数 如果一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数: class Foo{ public: Foo(); //默认构造函数 Foo(const Foo&); //拷贝构造函数 }; 拷贝构造函数的第一个参数必须是引用类型。 虽然可以定义一个接受非 const 引用的拷贝构造函数,但是此参数几乎总是 const 的。 拷贝构造函数在一些情况下会隐式使用,因此拷贝构造函数通常不定义成 explicit 。 合成拷贝构造函数 如果没有自定义拷贝构造函数,编译器会自动生成一个,与合成默认构造函数不同,即使定义了其他构造函数,编译器也会合成一个拷贝构造函数。 一般情况,合成的拷贝构造函数会从给定对象中依次将每个非 static 成员拷贝到正在创建的对象中,每个成员的类型决定了如何拷贝: 对类类型的成员

Android—Camera Framework C/S架构服务请求

时光毁灭记忆、已成空白 提交于 2020-03-15 11:20:03
在前一篇文章 Camera Client/Server的binder IPC机制 中阐述了Android进程间通信binder IPC机制基础,Android Camera基于这个基础设计了Camera Framework Client/Server架构,文中给出了其类图设计。本文从Android 4.4 版本源码入手,分析Camera App向Camera Service请求服务与返回的过程。服务请求的过程从上到下依次要经过三个大的过程:1. Camera App调用Framework Camera类Java API;2. Camera类Java API通过JNI调用JNI层的C++接口函数;3. 基于binder通信设计的Camera IPC通信过程。下面结合代码分析整个服务请求过程。 Camera应用调用Framework Camera类API 在Android Kitkat原生Camera2应用(packages/apps/Camera2/)的PhotoModule, VideoModule, WideAnglePanoramaModule类中用CameraUtil.open()方法来打开Camera。然后依次调用:CameraHolder的open()方法,AndroidCameraManagerImpl的cameraOpen()方法

小程序

浪尽此生 提交于 2020-03-15 10:16:21
App() App()函数用来注册一个小程序。接受一个object参数,其指定小程序的生命周期函数等。 eg: PS:1.App() 必须在app.js中注册,且不能注册多个; 2.不要在定义于App()内的函数中调用getApp()。使用this就可以拿到app实例; 3.不要在 onLaunch 的时候调用 getCurrentPages() ,此时 page 还没有生成; 4.通过 getApp() 获取实例之后,不要私自调用生命周期函数。 全局方法和全局属性是可以在任何页面调用的(页面之前数据传递 公用方法调用比较方便) 2. getApp() 全局的getApp()函数可以用来获取小程序实例。 <p class="three-title">{{item.title}}</p> tabBar 窗口底部的栏目:最少2个,最多5个 是一个数组 逻辑层: getApp setData() 路由 跳转的两种方式: 。navigator-hover wx.navigaateBack 文件作用域 (如果没有安装node.js,require组件是不生效的) 来源: https://www.cnblogs.com/namehou/p/8481941.html

java 的toString()函数

安稳与你 提交于 2020-03-15 10:13:43
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法 总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法。 调用System.out.println(obj.toString()); 会得到输出:xxxx@xxxxxxx的类名加地址形式 cn.com.singleton.Singleton@14a55f2 来源: https://www.cnblogs.com/Yogurshine/archive/2013/01/10/2855511.html

009-Python-面向对象

。_饼干妹妹 提交于 2020-03-15 06:52:57
1.面向对象: 1.1什么是类? 类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念; 1.2什么是对象? 对象:就是基于类而创建的一个具体事物(具体存在的)也是特征和动作整合到一起的; 类属性包含:数据属性,函数属性; 属性分为两种:数据属性和函数属性 实例没有函数属性; 2.类属性的增删改查; 1类的查询,传参 class school: def __init__(self,name,addr,type): self.mingzi = name self.dizhi = addr self.leixing = type def kao_shi(self): print("%s 学校要考试!!" % self.mingzi) def zhao_sheng(self): print("%s%s%s 正在招生" % (self.country, self.leixing, self.dizhi)) # 传参 s1 = school("清华","清华园","国营") # 从类中取出数据属性; print("国家:", s1.country) print("校名:", s1.mingzi) # 从类中查看函数属性; s1.kao_shi() s1.zhao_sheng() 输出: 国家: China 校名: 清华 清华 学校要考试!! China国营清华园 正在招生 2

Redis源码阅读(一)事件机制

Deadly 提交于 2020-03-15 04:24:54
Redis 源码阅读(一)事件机制   Redis 作为一款 NoSQL 非关系内存数据库,具有很高的读写性能,且原生支持的数据类型丰富,被广泛的作为缓存、分布式数据库、消息队列等应用。此外 Redis 还有许多高可用特性,包括数据持久化,主从模式备份等等,可以满足对数据完整性有一定要求的场景。   Redis 的源码结构简单清晰,有大量材料可以参阅;通过阅读 Redis 源码,掌握一些常用技术在 Redis 中的实现,相信会对个人编程水平有很大帮助。这里记录下我阅读 Redis 源码的心得。从我自己比较关心的几个技术点出发,每个技术点都是来自个人使用 Redis 过程中产生的问题。这里也参考了黄建宏老师的《 Redis 设计与实现》部分内容,不得不说参考这本书再结合源码注释,看起来绝对事半功倍。   当初选用 Redis 的时候,很大程度上是由于 Redis 的并发性能很高,可以支持大量并发请求。那 Redis 是如何支持高并发请求的呢?这里就引入了第一个技术点,事件处理机制。在 Redis 中使用了单线程的 Reactor 模式,属于 I/O 多路复用的一种常见实现模式。这里简单介绍下 Reactor 模式。 1. Reactor 模式 从网上切一个类图,简单描述一下Reactor模式的主体结构 基本概念: Handle : I/O 操作的基本文件句柄,在 linux 下就是

SV通过DPI调用C

瘦欲@ 提交于 2020-03-14 15:41:24
Verilog与C之间进行程序交互,PLI(Programming Language Interface)经过了TF,ACC,VPI等模式。 使用PLI可以生成延时计算器,来连接和同步多个仿真器,并可以通过波形显示等调试工具。 通过PLI方式连接一个简单的C程序,需要编写很多代码,并理解多仿真阶段的同步,调用段,实例指针等概念。 PLI方式给仿真带来了额外的负担,为了保护Verilog的数据结构,仿真器需要不断的在Verilog和C之间复制数据。 SystemVerilog引入了DPI(Direct Programming Interface),能够更简洁的连接C,C++或者其他非Verilog的编程语言。 只要使用import声明和使用,导入一个C子程序,就可以像调用SystemVerilog中的子程序一样来调用它。 SystemVerilog和C语言之间传递的最基本的数据类型是int,双状态的32位的数据类型, 通过import声明定义C任务和函数的原型, 带有返回值的C函数被映射成一个systemverilog的函数(function), void类型的C函数被映射为一个systemverilog的任务(task)或者void 函数(function) 通过“DPI-C”引入的C函数, 可以直接在function中调用,但是只在该DPI被声明的空间内有效 ,