随笔分类 -  读书笔记

养生之道
摘要:第一章 加载和运行这一章的知识点,就是加载js脚步时,不会影响页面其它元素加载。1.把<script>放在</body>前面。2.打包js脚本,把几个js脚本合并成一个,为了减少http请求。3.给<script>标签加defer属性,这个属性指明脚本要在dom加载后执行。第二章 数据访问变量缓存。就是如果访问一些数据,其实js内部里面因为作用域链之类,要拐好几个弯。所以,拐弯的数据先缓存下,以后访问就快多了。闭包,这个就是说消耗更多内存空间了。建议是,能缓存还是缓存。第三章 DOM编程在反复访问的地方使用局部变量存放DOM引用,因为访问DOM有代价。如果总 阅读全文
posted @ 2012-08-20 15:26 草珊瑚 阅读(336) 评论(0) 推荐(0) 编辑
摘要:话说面向对象开发有三大原则,单一职责原则,开放-封闭原则,依赖倒转原则。什么是单一职责原则,对一个类来说,或者对一个函数来说,应该仅有一个能引起它变化的原因。也就是说,每个函数只做一件事情。 在我的理解里,用面向函数式开发的思路来说,就是一个函数不能改变全局变量,而只是运算,返回结果。什么是开发-封闭原则, 就是函数的扩展是开发的,对函数的修改是封闭的。需求一定会变化,但我们不能预测其变化。所以等到变化一发生我们就采取行动。对那个变化进行抽象。举个例子,本来是叫你写个加法程序,你写了个类实现加法功能。后来要你加个减法功能,你重构这个类,增加一个抽象的运算类,加法类继承运算类,减法类也继承运算类 阅读全文
posted @ 2012-07-29 13:52 草珊瑚 阅读(171) 评论(0) 推荐(0) 编辑
摘要:线性递归:functionfactorial(n){returnn==1?1:n*factorial(n-1);}线性迭代:functionfactorial(n){returnfact_iter(1,1,n);}functionfact_iter(product,counter,max_count){returncounter>max_count?product:fact_iter((counter*product),(counter+1),max_count);}线性递归的计算过程形状,是先扩张后收缩状。解释器还要保存,线性递归的计算步骤。线性迭代保存计算结果,无需解释期保存计算步骤 阅读全文
posted @ 2012-04-22 14:45 草珊瑚 阅读(262) 评论(0) 推荐(0) 编辑
摘要:将所有盘子从木桩1移到木桩3,移动规则如下:1、每次只能移动一个盘子,而且只能从最上面的盘子搬动。2、任何盘子可以搬到任何一根木桩。3、必须维持盘子的大小是由上而下依次递增。解决思路:数学归纳法,即盘子n=1,n=2,n=3情况下的盘运过程。从中你可以总结出一个数学公式或通用搬运过程。使用数学公式,你会直接得出次数。这和老老实实去搬相比得出搬运次数。是一个捷径。最后结果是殊路同归,但缺少愚公移山的过程。所以,通用搬运过程,可以展示具体的搬运过程,可以从过程得出结果。这就是算法,也就是计算机科学与数学的区别。通用搬运过程:Step1.将上面n-1个盘子从木桩1搬移到木桩2.Step2.将盘子从木 阅读全文
posted @ 2011-11-29 22:45 草珊瑚 阅读(1310) 评论(0) 推荐(1) 编辑
摘要:C#中常数的关键字是const,只有那些基元类型,比如整数类型和String类型可以被声明为常数。常数会有版本问题。静态只读字段可以解决常数的版本问题。语法上,字段可以内联初始化,实际上它们的初始化还是在构造器中完成。 阅读全文
posted @ 2011-11-06 16:09 草珊瑚 阅读(115) 评论(0) 推荐(0) 编辑
摘要:所有对象通用的操作:对象等值,唯一,散列码,克隆。6.1 对象的等值性和唯一性System.Object的Equals方法是,如果两个引用指向同一个对象,返回true,否则返回false。6.1.1 为基类没有重写Object.Equals方法的引用类型实现Equals首先判断,两个对象是否null;其次判断两个对象的类型相同与否;然后进行类型转化,判断两个对象的字段相等与否;最后高兴的话,重载==和!=操作符。这里的类型转化,不可能抛出异常,因为前面比较过两个对象的类型。6.1.2 为基类重写了Object.Equals方法的引用类型实现Equals这里的判断思路和上一节相同,唯一差别是要. 阅读全文
posted @ 2011-10-07 21:32 草珊瑚 阅读(219) 评论(0) 推荐(0) 编辑
摘要:5.1 基元类型基元类型可以用快捷语法。比如int a=0;等同于System.Int32 a=new System.Int32();建议,使用全名,为了代码含义看起来更清晰。5.1.1 Checked与Unchecked基元类型操作默认情况下,编译器溢出检查是关闭。使用/checked+命令开启溢出检查。数值运算溢出会抛出OverflowException异常。使用/checked-命令关闭溢出检查,使用checked关键字检查溢出,如有溢出抛出。如果没用关键字,有溢出仍然执行程序。建议,开发程序时开启溢出检查,发布程序时关闭溢出检查。5.2 引用类型和值类型值类型从内存栈上分配内存。值类型 阅读全文
posted @ 2011-10-06 08:13 草珊瑚 阅读(204) 评论(0) 推荐(0) 编辑
摘要:4.1所有类型的基类型:System.Object所有类型继承自System.Object,所以System.Object的public方法和protected方法,所有类型也有。new操作符干了这些事。从托管堆分内存,初始化附加成员(方法表和线程同步控制表),调用构造函数,返回新建对象的引用。 4.2类型转换CLR运行时总能知道一个对象的类型。也就是说,编译能通过,运行的时候不一定通过。 子类转基类可显式,可隐式,不出错。基类转子类,必须显式,可能出错。类型转换出错,报InvalidCastException异常。 4.2.1 is与as操作is操作符,判断类型是否兼容。兼容返回true,不 阅读全文
posted @ 2011-10-04 09:55 草珊瑚 阅读(171) 评论(0) 推荐(0) 编辑
摘要:第2章 生成、打包、部署、及管理应用程序与类型当你写好了代码,点生成。.NET框架做了哪些事。我只能说很多事,很多事我了解不了。但看懂一点,Windows的不稳定来源于,不断的软件更新。一旦软件更新,一些其它软件也依靠的dll,可能被替换掉。也就是说,程序外部引用异常了。所以,版本管理很重要。如何版本管理,再说。 第3章 共享程序集.NET框架程序集,也就是我们平常使用的System.Object就是共享程序集。介绍好多,但我直接跳过。细节好多,心又急躁,所以跳过。书接下来的内容就是类型时代了。类型基础和通用方法,类型内部的组成设计,各种基本类型, 以及类型管理。弄成一个整体吧。类型从何而来. 阅读全文
posted @ 2011-10-02 18:08 草珊瑚 阅读(206) 评论(0) 推荐(0) 编辑
摘要:第1章 .NET开发平台体系架构1.1将源代码编译为托管模块托管模块由PE表头,CLR表头,元数据,中间语言(IL) 组成。这句话思路是,托管模块首先要Windows能执行,然后是.NET Framework能执行,接着是CPU能执行了。元数据是,描述托管模块所定义的内容(比如所定义的类型和它们的成员)和所引用的内容。这句话思路是,元数据就是托管模块一个说明文件,说明它有哪些类,方法等等。1.2将托管模块组合为程序集CLR并不和托管模块打交道,和程序集打交道。程序集是由一个或多个托管模块,以及一些资源文件的逻辑组合。这句话思路是, 托管模块是程序集的基础,托管模块才是重点。1.3加载通用语言. 阅读全文
posted @ 2011-09-30 23:52 草珊瑚 阅读(288) 评论(0) 推荐(0) 编辑
摘要:上古天真论上古时代的人,年龄均超百岁,为什么?因为,他们适应于天地自然变化规律,明白术数,饮食有一定的节制,作息有一定的常规,不做过度的劳动。上古时代深懂养生道理的人,经常教导人们什么?对外界的虚邪贼风的侵袭,应适时回避,思想要安定清静,排除杂念妄想,体内真气和顺,精神内守而不耗散,这样的话,就不会产生疾病了。上古时代的四类人有,真人,至人,圣人,贤人。寿命造诣,真人,至人>圣人>大于... 阅读全文
posted @ 2010-08-08 23:25 草珊瑚 阅读(498) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示