多线程与Android线程性能优化 线程间的共享和协作 线程间的共享 线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照既定的代码一步一步地执行,直到终止。但是,每个运行中的线程,如果仅仅是孤立地运行,那么没有一点儿价值,或者说价值很少,如果多个线程能够相互配合完成工作,包括数据之间的共享,协同处理事情。这将会带来巨大的价值。 J...
Java语言高级特性前言 多线程与Android线程性能优化 基础概念 CPU核心数和线程数的关系 多核心:也指单芯片多处理器( Chip Multiprocessors,简称CMP),CMP是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。这种依靠多个CPU同...
Java语言高级特性前言 反射原理及动态代理模式 反射(Reflect) 反射之中包含了一个「反」字,所以了解反射我们先从「正」开始。 一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。 反射则是一开始并不知道我要初始化的类对象是什么,自然也无法使用new关键字来...
Java语言高级特性前言 java知识是作为Android开发的语言基础,虽然现在我们已经推出了kotlin,但是基于以下原因我们还是需要好好牢牢掌握java: 1)SDK还是改成java,kotlin也需要编译成为java运行; 2)目前大量的第三方库和继承与前任的代码都是java所写的; 3)Java语言应用不仅仅在Android,...
ES6函数的扩展 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 function log(x, y) { y = y || 'World'; console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') //...
ES6 数值扩展 不同进制的字面量表示 Binary二进制 前缀:0b0B Octal八进制 前缀:00o0O Decimal十进制 无前缀 Hex十六进制 前缀:0x0X 常量 Number.EPLISION// 2.220446049250313e-16 EPSILON表示1与大于1的最小浮点数之间的差。 Number.MAX_SA...
ES6学习笔记(三)--字符串扩展 字符串扩展 for…of循环遍历字符串 let text = 'abc' for (let i of text) { console.log(i); } //a //b //c 新增确定一个字符串是否包含在另一个字符串中,es5中只有indexOf includes():返回布尔值,表示是否找到了参数...
深入理解ES6之《解构》 对象解构 如果使用var、let、const解析声明变量,则必须提供初始化程序(也就是等号右侧的值) 以下语句有语法错误 var { type, name }; let { type, name } const { type, name } 解构赋值表达式(也就是右侧的表达式)如果为null或undefined...
ES6学习笔记(十八)Class 的继承 1.简介 Class 可以通过 extends关键字实现继承,这比 ES5 的通过修改原型链prototype实现继承,要清晰和方便很多。 class Point { } class ColorPoint extends Point { } 上面代码定义了一个 ColorPoint类,该类通过 ...
js使用in和hasOwnProperty获取对象属性的区别 in判断的是对象的所有属性,包括对象实例及其原型的属性; 而hasOwnProperty则是判断对象实例的是否具有某个属性。 示例代码: <script type="text/javascript"> function Person(){ } ...