读书笔记
文章平均质量分 69
塘外人
我是程序猿
展开
-
【读书笔记】HeadFirst设计模式——单件不简单:详述实现Singleton模式需要考虑的方方面面
(参考:深入浅出单实例Singleton设计模式)什么是单件?单件就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。——GOF单件模式简单吗?简单,的确简单,因为只有一个类。单件不简单!其实单件并不见得简单,而且还有点小复杂。其复杂度正是为了保证单件所要达到“仅有一个实例”的宏伟目标而引起的。当然在一般情况下,单件是简单的。但是在考虑了懒加载、并发、原创 2012-03-20 00:59:12 · 1337 阅读 · 0 评论 -
【读书笔记】usOS-II学习笔记(2008-11-1)
2008-11-1ucos-II的任务状态l 睡眠态(Dormant):指任务驻留在程序空间之中,还没有交给μC/OS-Ⅱ管理。把任务交给μC/OS-Ⅱ是通过调用下述两个函数之一:OSTaskCreate()或OSTaskCreateExt()。一个任务可以通过调用OSTaskDel()返回到睡眠态,或通过调用该函数让另一个任务进入睡眠态。l 就绪态原创 2008-11-04 21:37:00 · 1226 阅读 · 0 评论 -
【读书笔记】usOS-II学习笔记(2008-11-3)
2008-11-3就绪表及优先级相关计算任务就绪表由2个变量表示(OS_EXT INT8U OSRdyGrp; /* Ready list group */OS_EXT INT8U OSRdyTbl[OS_RDY_TBL_SIZ原创 2008-11-04 21:42:00 · 2055 阅读 · 0 评论 -
【读书笔记】usOS-II——任务管理
2008-11-6任务管理任务建立 用户可以通过传递任务地址和其它参数到以下两个函数之一来建立任务:OSTaskCreate()或 OSTaskCreateExt()。注意事项 任务可以在多任务调度开始前建立,也可以在其它任务的执行过程中被建立。在开始多任务调度(即调用OSStart())前,用户必须建立至少一个任务。任务不能由中断服务程序(ISR)来建立。原创 2008-11-09 21:13:00 · 1287 阅读 · 0 评论 -
【读书笔记】usOS-II——互斥型信号量(mutex)
2008-11-23互斥型信号量(mutex)互斥信号量功能:1) 实现对资源的独占式访问(二值信号量)。2) 降解优先级反转。优先级反转:使用实时内核,优先级反转问题是实时系统中出现得最多的问题。设,任务1优先级高于任务2,任务2优先级高于任务3。任务1和任务2处于挂起状态,等待某一事件的发生,任务3正在运行如[图2.7(1)]。此时,任务3要使用其共原创 2008-11-23 20:50:00 · 3841 阅读 · 0 评论 -
【读书笔记】TiJava——内部类
内部类•可以在任意作用域内定义内部类•在类作用域里定义–引用范围由其访问属性决定•方法内部类-引用范围只在方法内部•任意作用域类-引用范围只在该作用域内部类内部类•内部类对象包含隐式成员指向外部类对象•用OuterClass.this引用外部类对象•在外部类非静态方法外创建内部类对象,不能直接new Outer.Inner().必须先创建外部原创 2011-07-29 01:00:42 · 559 阅读 · 0 评论 -
【读书笔记】TiJava——泛型
类型参数推断•使用泛型类时,必须在创建对象时指定类型参数。•使用泛型方法时,不需要指定类型参数。•方法的泛型返回值(被认为是一个Object类型)作为参数传给另一个方法时,不会执行类型推断,不能编译,除非使用显示类型说明。擦除•ArrayList.class== ArrayList.class==ArrayList.class•在泛型代码内部,无法获得任何有原创 2011-08-20 23:44:01 · 5126 阅读 · 0 评论 -
【读书笔记】TiJava——枚举类型
枚举类型特性•继承自java.lang.Enum•values()返回枚举数组•自动提供equals和hashCode方法•自动实现Comparable和Serializable接口•可以用==比较两个枚举值•默认name()等同toString()•valueOf将字符串名称转换为枚举类型值添加方法•枚举定义必须在方法定义之前•枚举定义原创 2011-10-26 00:31:25 · 745 阅读 · 0 评论 -
【读书笔记】TiJava——注解
内置注解•内置注解–@Override–@Deprecated–@SuppressWarnings•元注解–@Target–@Retention–@Documented–@Inherited编写注解处理器•内置注解很少,打多时候,程序员自定义注解,并编写处理器处理它们•使用的反射方法:–Class.getDeclaredM原创 2011-10-27 23:57:37 · 520 阅读 · 0 评论 -
【读书笔记】c专家编程
// test_C.cpp :定义控制台应用程序的入口点。// #include"stdafx.h"#include usingnamespace std;void PrintChar(int i);constint two = 2;int order = 0; void Gen_init(char *string)//防止数原创 2008-08-04 11:09:00 · 1009 阅读 · 0 评论 -
【读书笔记】Effective C++—4 设计与声明(之1)
Effective C++读书笔记--By Nathan.Yu 2007-12-08--4 设计与声明(之一)条款18:让接口容易被正确使用,不易被误用(Make interfaces easy to use correctly and hard to use incorrectly)理想上,如果客户企图使用某个接口而却没有获得他所预期的行为,这个代码不该通过编译;如果代码通过原创 2007-12-08 23:23:00 · 734 阅读 · 0 评论 -
【读书笔记】Effective C++—3 资源管理(之2)
Effective C++读书笔记--By Nathan.Yu 2007-11-28--3 资源管理(之二)条款14:在资源管理类中小心copying行为(Think carefully about copying behavior in resource-managing classes) “当一个RAII对象被复制时,会发生什么?”这是每个RAII class作者必须面原创 2007-11-30 00:16:00 · 684 阅读 · 0 评论 -
【读书笔记】企业应用架构模式——并发、事务与锁
一、并发问题的产生多线程/进程同时操作(读/写)同一数据二、并发问题的种类丢失更新(lost update)第一类更新丢失(回滚丢失): 当2个事务更新相同的数据源,如果第一个事务被提交,而另外一个事务却被撤销,那么会连同第一个事务所做的跟新也被撤销。也就是说第一个事务做的跟新丢失了。第二类更新丢失(覆盖丢失): 第二类更新丢失实在实际应用中经常遇到的并原创 2012-08-23 00:13:53 · 2490 阅读 · 0 评论 -
【读书笔记】HeadFirst设计模式——命令模式简述
今天又复习了一遍命令模式命令模式是指,将“请求”封装成命令对象。命令对象是通过封装接收者和绑定一组动作来封装请求的。通过命令模式,将动作的请求者和动作的执行者进行解耦。即请求的调用者只接收并处理命令对象,但并不知道命令对象所封装的特定接收者。command模式的结构图:即,客户使用命令接收者(Receiver)来创建命令对象(ConcreteCommand),并将命令对象交原创 2012-03-21 00:04:32 · 1246 阅读 · 0 评论 -
【读书笔记】代码大全
1.软件构建即编程,主要包括编码与调试、详细设计、规划构建、单元测试、集成、集成测试。构建是软件开发的核心活动,主要精力集中之处,产物是源代码。2.软件的隐喻——建筑3.三思而后行:前期准备(设计蓝图和建筑许可证在软件业的等价物,包括问题/产品定义、需求分析、架构)——目的:尽早发现并处理问题,识别并降低风险3.1 前期准备的重要性:类比在一个被污染了的环境中,水虱在受到核沾染的水原创 2012-05-01 15:24:27 · 2143 阅读 · 0 评论 -
【读书笔记】AgilePPP——设计模式
Command模式Command模式的3种用法Active object模式是对Command的应用是实现多线程的基础技术Active Object 并发模式在 Java 中的应用http://www.ibm.com/developerworks/cn/java/j-lo-activeobject/index.html模板方法与策略模式为什么说组原创 2012-03-14 00:39:41 · 1081 阅读 · 0 评论 -
【读书笔记】TiJava——内部类使用范例:温室控制器
控制器抽象层,包括抽象事件的定义及控制器的定义:public abstract class Event { private long eventTime; protected final long delayTime; public Event(long delayTime) { this.delayTime = delayTime; } public void star原创 2011-11-17 23:48:02 · 496 阅读 · 0 评论 -
【读书笔记】Effective C++-1 让自己习惯C++(之三)
Effective C++读书笔记--By Nathan.Yu 2007-11-12--1 让自己习惯C++(三)条款04:确定对象被使用前已先被初始化读取未初始化的值会导致不明确的行为。最佳的处理方法:永远在使用对象之前先将它初始化。 对内置类型:手工初始化。 对自定义类型:确保每个构造函数都将对象的每一个成员初始化。 别混淆了赋值原创 2007-11-13 01:17:00 · 629 阅读 · 0 评论 -
【读书笔记】Effective C++-2 构造/析构/赋值运算(之二)
Effective C++读书笔记--By Nathan.Yu 2007-11-14--2 构造/析构/赋值运算(之二)条款06:若不想使用编译器自动生成的函数,就该明确拒绝【要点摘录】所有编译器生成的函数都是public且inline的。 如何阻止拷贝行为?将copy构造函数和copy assignment操作符声明为private,并不去定义(实现)它们。借由明原创 2007-11-15 00:42:00 · 658 阅读 · 0 评论 -
【读书笔记】Effective C++-2 构造/析构/赋值运算(之三)
Effective C++读书笔记--By Nathan.Yu 2007-11-15--2 构造/析构/赋值运算(之三)条款07:为多态基类声明virtual析构函数问题:何时该声明virtual析构函数,何时不该这样做?【要点摘录】C++明确指出,当derived class对象经由一个base class指针被删除,而该base class带着一个non-virtu原创 2007-11-16 01:22:00 · 764 阅读 · 0 评论 -
【读书笔记】AgilePPP——XP实践
完整团队•客户、管理者、开发紧密工作在一起。•客户–指定义产品特性并排列特性优先级的人或团体。–同一公司的业务分析师、质量保证专家、市场专家;用户团体的代表;支付开发费用的人。–都是能和团队一起工作的成员。•客户或能代替客户的人最好和开发在同一个房间工作。用户故事•了解需求只要做到能估算的程度就够了。•必须知道存在很多细节及细节分类,但不必知道特原创 2011-12-05 23:39:30 · 714 阅读 · 0 评论 -
【读书笔记】AgilePPP——敏捷设计
敏捷设计•全局视图和软件一起演化•设计尽可能适合当前系统,关注当前系统结构•增量地演化出系统最佳架构和设计•设计和架构过程是持续不断进行的•从根本上讲,源代码就是设计•敏捷设计是一个过程,不是一个事件,是一个持续的应用原则、模式以及实践来改进软件结构和可读性的过程•敏捷设计步骤–遵循敏捷实践去发现问题–应用设计原则去诊断问题–应用适当模式去解决问题原创 2011-12-05 23:45:23 · 724 阅读 · 0 评论 -
【读书笔记】AgilePPP——系统设计:简单设计
系统设计的本质•系统设计的本质是寻找隐藏于应用背后抽象•需求和用例不会表述或提及这些抽象,它们太过专注细节以至于不能表达底层抽象的一般性如何抽象•抽象需要根据需求的全局来展开•不能只按个别用例来展开•抽象就是归纳、总结,并提炼需求的共同逻辑关于数据库•数据库是实现细节!应该尽可能的推迟考虑数据库。有太多的应用程序之所以和数据库绑定在一起而原创 2012-03-14 00:43:36 · 1049 阅读 · 0 评论 -
【读书笔记】Effective C++-2 构造/析构/赋值运算(之一)
Effective C++读书笔记--By Nathan.Yu 2007-11-13--2 构造/析构/赋值运算(之一)条款05:了解C++默默编写并调用哪些函数如果你自己没声明,编译器就会为类声明一个copy构造函数、一个copy assignment操作符和一个析构函数。此外如果你没声明任何构造函数,编译器也会为你声明一个default构造函数。只有当这些函数被需要(被调用原创 2007-11-14 01:30:00 · 642 阅读 · 0 评论 -
【读书笔记】Effective C++-2 构造/析构/赋值运算(之四)
Effective C++读书笔记--By Nathan.Yu 2007-11-24--2 构造/析构/赋值运算(之四)条款08:别让异常逃离析构函数C++并不禁止析构函数吐出异常,但它不鼓励你这样做!理由: 设:std::vector v;假设v中有多个Widget,在销毁v的过程中,当有2个以上的Widget在销毁的时候抛出异常,对C++而言就太多了。在原创 2007-11-30 00:09:00 · 794 阅读 · 0 评论 -
【读书笔记】usOS-II学习笔记
2008-11-21(忙于论文与找工作,多日未学习usos,今日论文初稿已交,协议书给了ali,得以继续学习。。。。。。。)事件控制ECB块概述事件的类型:信号量、互斥信号量、消息邮箱、消息队列事件控制块的结构:程序清单 L6.1 ECB数据结构#if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS >原创 2008-11-21 21:21:00 · 3078 阅读 · 0 评论 -
【读书笔记】TiJava——IO系统
File•可表示文件也可表示目录•相关类:FilenameFilter•相关功能:–list–listFilesio的装饰器模式•一般先用缓冲装饰,再用其他装饰•当使用DataOutputStream时,写字符串并且让DataInputStream能够恢复它的唯一可靠做法是用UTF-8编码,即使有writeUTF和readUTF方法Inp原创 2011-09-05 00:20:35 · 1077 阅读 · 0 评论 -
【读书笔记】AgilePPP——敏捷宣言及12条原则
人的力量•过程和技术对于项目的结果只有次要的影响,首要的影响是人。•如果项目要取得成功,必须构建起具有合作精神、自组织的团队。•凝聚在一起的软件团队是最强大的软件开发力量。敏捷宣言•人和交互 > 过程和工具•可以工作的软件> 面面俱到的文档•客户合作 > 合同谈判•随时应对变化> 遵循计划人和交互 >过程和工具•沟通能力比技术能力更重要原创 2011-11-21 23:39:28 · 686 阅读 · 0 评论 -
【读书笔记】AgilePPP——咖啡的启示
按行为划分系统•程序的中心是行为•不基于行为的系统划分,基本上是严重错误的。•正是系统的行为为我们提供了第一个关于应该如何划分系统的线索水蒸气类•没有任何成员变量、状态•只是一个调用转换器•水蒸气类没有存在的必要虚拟抽象•抽象是非常微妙的•对抽象类,多问问:谁使用它们?•一个仅仅含有抽象方法并且不具有任何使用者的类,完全是一个无用的类原创 2012-01-09 00:11:41 · 950 阅读 · 0 评论 -
【读书笔记】HeadFirst设计模式——代理和装饰者
代理——控制对主题的访问,有时控制主题的创建,完全代替主题,或者什么都不做,只是简单转发装饰者——只添加新功能,不做其他控制从使用者的角度看,代理一般不改变对象行为,装饰肯定会增加对象行为。代理:装饰者:原创 2012-03-25 01:36:50 · 1466 阅读 · 2 评论 -
【读书笔记】HeadFirst设计模式——装饰者和适配器的区别
装饰者和被装饰者实现了同一个接口,给被装饰者增加功能。即装饰者和被装饰者一定是在同一继承体系的。适配器和被适配者不实现同一接口,适配器将被适配者转换成客户适用的接口暴露给客户使用。装饰者:适配器:原创 2012-03-25 01:25:08 · 1495 阅读 · 0 评论 -
【读书笔记】Effective C++-1 让自己习惯C++(之二)
Effective C++读书笔记--By Nathan.Yu 2007-11-11--1 让自己习惯C++(二)条款03:尽可能使用constconst允许你指定一个语义约束(也就是指定一个“不该被改动”的对象),而编译器会强制实施这项约束。 const的用处:修饰global或namespace作用域中的常量;或修饰文件、函数、或区块作用域中被声明为static的对象;原创 2007-11-12 00:40:00 · 677 阅读 · 0 评论 -
【读书笔记】Effective C++——0 导读
Effective C++读书笔记--By Nathan.Yu 2007-11-10--0 导读1、设计策略如何在两个不同的做法中择一完成某项任务,如该选择inheritance(继承)还是templates(模板)?该选择public继承还是private继承?该选择private继承还是composition(复合)?该选择member函数还是non-member函数?原创 2007-11-10 22:16:00 · 752 阅读 · 0 评论 -
【读书笔记】深入理解Java虚拟机——垃圾收集
Ubuntu11.10下编译 OpenJDK7http://blog.csdn.net/yhmhappy2006/article/details/7281710基本垃圾收集算法 标记-清除(Mark-Sweep)效率问题内存碎片适用于老年代复制(Copying)解决碎片问题可用内存缩小(一半)存活率高时,复制效率低用于新生代标记-整理(Mark-原创 2012-03-13 23:41:57 · 1694 阅读 · 0 评论 -
【读书笔记】Effective C++-1 让自己习惯C++(之一)
Effective C++读书笔记--By Nathan.Yu 2007-11-10--1 让自己习惯C++条款01:视C++为一个语言联邦C++最初的名称是:C with Classes今天的C++是:多重泛型编程语言(multiparadigm programming language),同时支持过程形式(procedural)、面向对象形式(object-orie原创 2007-11-11 00:23:00 · 791 阅读 · 0 评论 -
【读书笔记】Effective C++—3 资源管理(之1)
Effective C++读书笔记--By Nathan.Yu 2007-11-27--3 资源管理(之一)常见的资源:文件描述器(file descriptors)、互斥锁(mutex locks)、图形界面中的字型和笔刷、数据库连接、网络sockets。 不论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统。条款13:以对象管理资源(Use objects原创 2007-11-30 00:14:00 · 701 阅读 · 0 评论 -
【读书笔记】Effective C++—3 资源管理(之3)
Effective C++读书笔记--By Nathan.Yu 2007-11-29--3 资源管理(之三)条款15:在资源管理类中提供对原始资源的访问(Provide access to raw resources in resource-managing classes)许多APIs需要指涉指针。 将RAII class对象转换为原始资源的方法:1、 显式转换:原创 2007-11-30 00:33:00 · 632 阅读 · 0 评论 -
【读书笔记】Effective C++—3 资源管理(之4)
Effective C++读书笔记--By Nathan.Yu 2007-12-08--3 资源管理(之四)条款16:成对使用new和delete时要采取相同形式(Use the same form in corresponding uses of new and delete)使用new时发生的事情:1、 内存被分配(通过operator new函数)2、 针原创 2007-12-08 23:22:00 · 616 阅读 · 0 评论 -
【读书笔记】usOS-II学习笔记(2008-10-31)
ucosII学习笔记(By Nathan.Yu) 2008-10-31ucOS-II特性:l 可剥夺内核l 不支持同优先级的任务时间片轮转调度算法l 可避免优先级反转l 不支持优先级继承l 允许建立63个用户任务l 仅支持优先级法启动等待信号量原创 2008-11-01 18:12:00 · 1110 阅读 · 1 评论 -
【读书笔记】usOS-II学习笔记(2008-11-4)
2008-11-4ucOS-II的中断处理初始化中断向量,编写中断引导程序程序清单 L3.15μC/OS-II中的中断服务子程序.用户中断服务子程序: 保存全部CPU寄存器;原创 2008-11-04 21:50:00 · 1093 阅读 · 0 评论