2015-09-16 Piasy
建议:函数调用的时候,调用方传给被调用方的参数,如果在调用之后还会被修改,那么调用方应该给被调用方传一个当时的拷贝,深拷贝,否则将会导致潜在的bug: 可能被调用方是异步执行的,如果调用函数之后,参数发生了修改,那么被调用方执行的时候,看到的就是被修改之后的数据,这将导致严重、隐蔽、非必现的BUG,而这种BUG是最让人头疼的 可能被调用方会修改传入的参数,这就导致函数执行完毕之后,调用方看到的数据发生了非预期的变化,这同样会导致严重、隐蔽的BUG 继续阅读 »
2016-11-07 LEo
本文简单介绍c开发中的内存泄漏和动态内存分配函数,并使用valgrind分析c程序的内存泄漏问题。 1 什么是内存泄漏 c语言中,需由开发者负责内存的申请和释放,内存泄漏是指开发者在程序中使用动态内存分配函数xxlloc在堆(heap)上申请内存,内存在使用完毕后未使用free函数释放,那么这块内存在程序退出前都不能再次使用,导致内存使用逐渐增大,直至耗尽,程序异常退出。 继续阅读 »
2016-08-10 Alex Sun
在涉及到有回调函数的情况下,回调函数可能是同步执行的,也可能是异步执行的。 例如: ```js function callback() { console.log('callback') } function syncFn(fn) { fn() } function asyncFn(fn) { setImmediate(fn) } ``` 当执行: js syncFn(callback) console.log('hello world') 输出为: js // => callback // => hello world 当执行: js asyncFn(callback) console.log( 继续阅读 »
2014-07-13 W.Y.
此文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 8. Evaluation strategy. 概述 本文将讨论在 ECMAScript 中向函数传递参数的策略。 计算机科学里对这种策略一般称为“evaluation strategy”,即在编程语言中求解或计算某些表达式的值的一系列规则。将参数传递给函数是其中的一个案例。 写这篇文章的原因是因为论坛上有一些类似的讨论,大家都呼吁给出 ECMAScript 中参数传递策略的最精确的说明。本文给出了相应的定义,希望对大家有所帮助。 很多程序员都确信在 JavaScript 中(甚至其它一些语言),对象是按引用传 继续阅读 »
2014-10-31 litaotao
写在前面   lists官方文档在此http://erlang.org/doc/man/lists.html,不知因为什么原因,官方文档中函数顺序和lists.erl源码里的顺序完全不一样。我是按照源码里的顺序来写的,目的是为了熟悉一下Erlang的编程风格和巩固基础语法。也不会所有函数都提到,挑下面一些来学习学习。 1. 属性说明 2. keyfind/3 3. suffix/2 4. seq/2, seq/3 5. sort/1 6. merge/1 7. concat/1 8. flatten/1, flatten/2 10. filter/2, map/2, filt 继续阅读 »
2017-01-19 Piasy
View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 framework 处理。 整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,该函数所做 的工作可简单概况为是否需要重新计算视图大小(measure)、是否需要重新安置视图的位置(layout)、以及是否需要重绘(draw),流程图如下: 继续阅读 »
2016-09-12 徐哲
1.Java与C++的异同 Java解释性语言:源代码-编译器(字节码)-JVM执行 C/C++编译型语言:编译链接成二进制代码 Java不存在全局变量,全局函数,没有指针,不支持多重继承,不支持运算符重载,没有预处理器,不提供goto语句(但保留关键字),不支持自动强制类型转换,必须显式强制类型转换。 Java为纯面向对象语言,所有代码包括函数,变量等都属于类 继续阅读 »
2011-05-01 Robert Zhang
lua
本文针对希望了解Lua或者迅速抓住Lua的关键概念和编程模式的有经验的程序员,因此不打算教给读者诸如条件语句的语法或者函数定义的方式等等显而易见的东西,以及一些诸如变量、函数等现代编程语言普遍的基本概念。本文只打算告诉读者Lua那些与众不同的特性以及它们实际上带来了怎样颠覆以往的、独特的编程思维方式。 继续阅读 »
2016-05-07 YongHao Hu
C++
在C++03中, 标准容器提供了begin与end函数 vector v; int a[100]; sort(v.begin(), v.end()); sort(a, a+sizeof(a)/sizeof(a[0])); 为了统一数组跟容器的语法, C++11提供了begin()函数 继续阅读 »
2007-10-23 Jamling
构造函数构建函数(Constructor)属于一种较特殊的方法类型,因为它没有返回值.这与void返回值存在着明显的区别。对于void返回值,尽管方法本身不会自动返回什么,但仍然可以让它返回另一些东西。构建器则不同,它不仅什么也不会自动返回,而且根本不能有任何选择.若创建一个没有构件器的类,则编译器会自动创建一个默认构件器. 继续阅读 »