PMBOK项目管理知识体系指南
PMP考试专用。PMBOK 第五版 中文 PDF版。作为PMP考试专用资料书
软件项目管理资料
该资料包含以下几个
1、敏捷管理scrum-and-xp-chinese-version;
2、项目管理知识体系指南 (第4版).pdf
3、项目管理成功案例精选.pdf
《Groovy入门经典》
Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。
Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。[1]
flex 3D pie 饼图效果
Flex代码实现的 3D饼图效果;本示例是我按自己的思路实现的饼状3D图,并没有完成所有的Chart功能,因为涉及到的零碎内容较多,例如tip文本等等,
所以,这个示例仅仅只是做为 实现3D饼状图形的一个代码参考。
本示例为 优快云帐户 xuefeimengli2007 原创
weblogic 破解和说明
weblogic 破解文件
破解说明
weblogic 9.2破解版
破解者:daxia2002[DFCG] web:http://www.chinadfcg.com e-mail:daxia2002@126.com
win下的使用方法
1.将license.bea和weblog_crack.jar拷贝到bea安装目录下,例如d:\bea
2.修改d:\bea\user_projects\domains\odpsdomain(你建立的域)\bin\startWeblogic.cmd
修改
set CLASSPATH=%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSP
为
set CLASSPATH=d:\bea\weblogic_crack.jar;%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSP
3. 重启weblogic
linux下使用方法:
1.将license.bea和weblog_crack.jar拷贝到bea安装目录下,例如:/opt/bea
2.修改/opt/bea/user_projects/domains/你自己定义的域/bin/startWebLogic.sh
修改
CLASSPATH="${CLASSPATH}${CLASSPATHSEP}${MEDREC_WEBLOGIC_CLASSPATH}"
为
CLASSPATH="/opt/bea/weblogic_crack.jar:${CLASSPATH}${CLASSPATHSEP}${MEDREC_WEBLOGIC_CLASSPATH}"
3. 重启weblogic
重构-改善既有代码的设计【PDF清晰版】
本资料仅供个人学习参考,请勿用于商业用途,如有能力请尽量购买正版图书,也是对作者的支持。
重构:改善既有代码的设计 中文版 软件开发的不朽经典
2010年人民邮电再版中文版(清晰PDF)
本书提供作译者介绍
Martin Fowler世界软件开发大师,在面向对象分析设计、UML、模式、XP和重构等领域都有卓越贡献,现为著名软件开发咨询公司ThoughtWorks的首席科学家。他的多部著作《分析模式》、《UML精粹》和《企业应用架构模式》等都已经成为脍炙人口的经典。
熊节 ThoughtWorks中国公司的高级咨询师、架构师和项目经理,在大型企业应用及互联网应用的架构和管理方面拥有丰富经验。作为敏捷方法学顾问和重构专家,他拥有在各种技术平台、编程语言、软件形态的项目中实施重构的丰富经验,并曾主持极具挑战性的超大规..
目录回到顶部↑第1章 重构,第一个案例 1
1.1 起点 1
1.2 重构的第一步 7
1.3 分解并重组statement() 8
1.4 运用多态取代与价格相关的条件逻辑 34
1.5 结语 52
第2章 重构原则 53
2.1 何谓重构 53
2.2 为何重构 55
2.3 何时重构 57
2.4 怎么对经理说 60
2.5 重构的难题 62
2.6 重构与设计 66
2.7 重构与性能 69
2.8 重构起源何处 71
第3章 代码的坏味道 75
3.1 duplicated code(重复代码) 76
3.2 long method(过长函数) 76
3.3 large class(过大的类) 78
3.4 long parameter list(过长参数列) 78
.3.5 divergent change(发散式变化) 79
3.6 shotgun surgery(霰弹式修改) 80
3.7 feature envy(依恋情结) 80
3.8 data clumps(数据泥团) 81
3.9 primitive obsession(基本类型偏执) 81
3.10 switch statements(switch惊悚现身) 82
3.11 parallel inheritancehierarchies(平行继承体系) 83
3.12 lazy class(冗赘类) 83
3.13 speculative generality(夸夸其谈未来性) 83
3.14 temporary field(令人迷惑的暂时字段) 84
3.15 message chains(过度耦合的消息链) 84
3.16 middle man(中间人) 85
3.17 inappropriate intimacy(狎昵关系) 85
3.18 alternative classes with different interfaces(异曲同工的类) 85
3.19 incomplete library class(不完美的库类) 86
3.20 data class(纯稚的数据类) 86
3.21 refused bequest(被拒绝的遗赠) 87
3.22 comments(过多的注释) 87
第4章 构筑测试体系 89
4.1 自测试代码的价值 89
4.2 junit测试框架 91
4.3 添加更多测试 97
第5章 重构列表 103
5.1 重构的记录格式 103
5.2 寻找引用点 105
5.3 这些重构手法有多成熟 106
第6章 重新组织函数 109
6.1 extract method(提炼函数) 110
6.2 inline method(内联函数) 117
6.3 inline temp(内联临时变量) 119
6.4 replace temp with query(以查询取代临时变量) 120
6.5 introduce explaining variable(引入解释性变量) 124
6.6 split temporary variable(分解临时变量) 128
6.7 remove assignments to parameters(移除对参数的赋值) 131
6.8 replace method with method object(以函数对象取代函数) 135
6.9 substitute algorithm(替换算法) 139
第7章 在对象之间搬移特性 141
7.1 move method(搬移函数) 142
7.2 move field(搬移字段) 146
7.3 extract class(提炼类) 149
7.4 inline class(将类内联化) 154
7.5 hide delegate(隐藏“委托关系”) 157
7.6 remove middle man(移除中间人) 160
7.7 introduce foreign method(引入外加函数) 162
7.8 introduce local extension(引入本地扩展) 164
第8章 重新组织数据 169
8.1 self encapsulate field(自封装字段) 171
8.2 replace data value with object(以对象取代数据值) 175
8.3 change value to reference(将值对象改为引用对象) 179
8.4 change reference to value(将引用对象改为值对象) 183
8.5 replace array with object(以对象取代数组) 186
8.6 duplicate observed data(复制“被监视数据”) 189
8.7 change unidirectional association to bidirectional(将单向关联改为双向关联) 197
8.8 change bidirectional association to unidirectional(将双向关联改为单向关联) 200
8.9 replace magic number with symbolic constant(以字面常量取代魔法数) 204
8.10 encapsulate field(封装字段) 206
8.11 encapsulate collection(封装集合) 208
8.12 replace record with data class(以数据类取代记录) 217
8.13 replace type code with class(以类取代类型码) 218
8.14 replace type code with subclasses(以子类取代类型码) 223
8.15 replace type code with state/strategy(以state/strategy取代类型码) 227
8.16 replace subclass with fields(以字段取代子类) 232
第9章 简化条件表达式 237
9.1 decompose conditional(分解条件表达式) 238
9.2 consolidate conditional expression(合并条件表达式) 240
9.3 consolidate duplicate conditional fragments(合并重复的条件片段) 243
9.4 remove control flag(移除控制标记) 245
9.5 replace nested conditional with guard clauses(以卫语句取代嵌套条件表达式) 250
9.6 replace conditional with polymorphism(以多态取代条件表达式) 255
9.7 introduce null object(引入null对象) 260
9.8 introduce assertion(引入断言) 267
第10章 简化函数调用 271
10.1 rename method(函数改名) 273
10.2 add parameter(添加参数) 275
10.3 remove parameter(移除参数) 277
10.4 separate query from modifier(将查询函数和修改函数分离) 279
10.5 parameterize method(令函数携带参数) 283
10.6 replace parameter with explicit methods(以明确函数取代参数) 285
10.7 preserve whole object(保持对象完整) 288
10.8 replace parameter with methods(以函数取代参数) 292
10.9 introduce parameter object(引入参数对象) 295
10.10 remove setting method(移除设值函数) 300
10.11 hide method(隐藏函数) 303
10.12 replace constructor with factory method(以工厂函数取代构造函数) 304
10.13 encapsulate downcast(封装向下转型) 308
10.14 replace error code with exception(以异常取代错误码) 310
10.15 replace exception with test(以测试取代异常) 315
第11章 处理概括关系 319
11.1 pull up field(字段上移) 320
11.2 pull up method(函数上移) 322
11.3 pull up constructor body(构造函数本体上移) 325
11.4 push down method(函数下移) 328
11.5 push down field(字段下移) 329
11.6 extract subclass(提炼子类) 330
11.7 extract superclass(提炼超类) 336
11.8 extract interface(提炼接口) 341
11.9 collapse hierarchy(折叠继承体系) 344
11.10 form tem plate method(塑造模板函数) 345
11.11 replace inheritance with delegation(以委托取代继承) 352
11.12 replace delegation with inheritance(以继承取代委托) 355
第12章 大型重构 359
12.1 tease apart inheritance(梳理并分解继承体系) 362
12.2 convert procedural design to objects(将过程化设计转化为对象设计) 368
12.3 separate domain from presentation(将领域和表述/显示分离) 370
12.4 extract hierarchy(提炼继承体系) 375
第13章 重构,复用与现实 379
13.1 现实的检验 380
13.2 为什么开发者不愿意重构他们的程序 381
13.3 再论现实的检验 394
13.4 重构的资源和参考资料 394
13.5 从重构联想到软件复用和技术传播 395
13.6 小结 397
13.7 参考文献 397
第14章 重构工具 401
14.1 使用工具进行重构 401
14.2 重构工具的技术标准 403
14.3 重构工具的实用标准 405
14.4 小结 407
第15章 总结 409
参考书目 413
要点列表 417
索引 419
Struts1详解
Struts1 基础知识的详细介绍
通俗易懂,又简练,是学习struts1入门时 很好的参考资料。
struts 1源码(包含jar包)
struts-1.3.10-all.zip
该文件包含struts1应用时需要使用的jar包、源码。
在eclipse中,需要查看struts对应的类,可以在查看源代码时导入该zip包,即可加载并显示出struts1源代码。
struts1学习的必须品!
Junit 4 jar包和源码包
Junit单元测试所需的junit jar包、查看源码所用的jar。
JUnit 是JAVA语言事实上的标准测试库。
JUnit 4是三年以来最具里程碑意义的一次发布。它的新特性主要是针对JAVA5中的标记(annotation)来简化测试,而不是利用子类、反射或命名机制。
可以通过导入source查看其源码,了解更深入更全面的信息。
Apache-ant-1.7.1-bin.zip
ant 是 apache 组织的一个子项目,可以从 http://ant.apache.org 下载得到,Windows 平台的可以下载 ZIP 格式的安装文件,下载完成后解压缩到某个目录,建议使用根目录下的直接子目录作为 ant 解压缩以后目录,ant 无需安装,解压缩文件以后就算安装完成。
但要 ant 工作,需要对它进行配置:
打开系统环境变量设置窗口,增加 ANT_HOME 环境变量,变量值为解压缩后的 ant 所在目录,比如:
变量名:ANT_HOME
变量值:E:\bak\apache-ant-1.7.1-bin\apache-ant-1.7.1
然后在系统环境变量 Path 中增加 %ANT_HOME%\bin 目录,然后打开一个命令行窗口,输入 ant 后如果出现以下内容即算正确完成 ant 的配置:
C:\Documents and Settings\Administrator>ant
Buildfile: build.xml does not exist!
Build failed
C:\Documents and Settings\Administrator>
Java线程池文档
Java 线程池学习
Reference: 《创建Java线程池》[1],《Java线程:新特征-线程池》[2], 《Java线程池学习》[3],《线程池ThreadPoolExecutor使用简介》[4],《Java5中的线程池实例讲解》[5],《ThreadPoolExecutor使用和思考》[6]
[1]中博主自己通过ThreadGroup实现一个线程池(挺方便理解的),使用的是jdk1.4版本,Jdk1.5版本以上提供了现成的线程池。
[2]中介绍了java.util.concurrent.Executors类的API。
[3]中介绍了Java中线程池的类体系结构。
[4]中有ThreadPoolExecutor的实例应用。
[5]中有线程池的实例讲解,实现了一个基于线程池的端口监听服务器。★
[6]中有对源码比较细致的分析
深入Java虚拟机(中文版)第二版.pdf
第1章 Java体系结构介绍
1.1 为什么使用Java
1.2 网络带来的挑战和机遇
1.3 体系结构
1.3.1 Java虚拟机
1.3.2 类装载器的体系结构
1.3.3 Java class文件
1.3.4 Java API
1.3.5 Java程序设计语言
1.4 Java体系结构的代价
1.5 结论
1.6 资源页
第2章 平台无关
2.1 为什么要平台无关
2.2 Java的体系结构对平台无关的支持
2.2.1 Java平台
2.2.2 Java语言
2.3.3 Java class文件
. 2.2.4 可伸缩性
2.3 影响平台无关性的因素
2.3.1 Java平台的部署
2.3.2 Java平台的版本
2.3.3 本地方法
2.3.4 非标准运行时库
2.3.5 对虚拟机的依赖
2.3.6 对用户界面的依赖
2.3.7 Java平台实现中的bug
2.3.8 测试
2.4 平台无关的七个步骤
2.5 平台无关性的策略
2.6 平台无关性和网络移动对象
2.7 资源页
第3章 安全
3.1 为什么需要安全性
3.2 基本沙箱
3.3 类装载器体系结构
3.4 class文件检验器
3.4.1 第一趟:class文件的结构检查
3.4.2 第二趟:类型数据的语义检查
3.4.3 第三趟:字节码验证
3.4.4 第四趟:符号引用的验证
3.4.5 二进制兼容
3.5 Java虚拟机中内置的安全特性
3.6 安全管理器和Java API
3.7 代码签名和认证
3.8 一个代码签名示例
3.9 策略
3.10 保护域
3.11 访问控制器
3.11.1 implies()方法
3.11.2 栈检查示例
3.11.3 一个回答“是”的栈检查
3.11.4 一个回答“不”的栈检查
3.11.5 doPrivileged()方法
3.11.6 doPrivileged()的一个无效使用
3.12 Java安全模型的不足和今后的发展
方向
3.13 和体系结构无关的安全性
3.14 资源页
第4章 网络移动性
4.1 为什么需要网络移动性
4.2 一种新的软件模式
4.3 Java体系结构对网络移动性的支持
4.4 applet:网络移动性代码的示例
4.5 Jini服务对象:网络移动对象的示例
4.5.1 Jini是什么
4.5.2 Jini如何工作
4.5.3 服务对象的优点
4.6 网络移动性:Java设计的中心
4.7 资源页
第5章 Java虚拟机
5.1 Java虚拟机是什么
5.2 Java虚拟机的生命周期
5.3 Java虚拟机的体系结构
5.3.1 数据类型
5.3.2 字长的考量
5.3.3 类装载器子系统
5.3.4 方法区
5.3.5 堆
5.3.6 程序计数器
5.3.7 Java栈
5.3.8 栈帧
5.3.9 本地方法栈
5.3.10 执行引擎
5.3.11 本地方法接口
5.4 真实机器
5.5 一个模拟:“Eternal Math”
5.6 随书光盘
5.7 资源页
第6章 Java class文件
6.1 Java class文件是什么
6.2 class文件的内容
6.3 特殊字符串
6.3.1 全限定名
6.3.2 简单名称
6.3.3 描述符
6.4 常量池
6.4.1 CONSTANT_Utf8_info表
6.4.2 CONSTANT_Integer_info表
6.4.3 CONSTANT_Float_info表
6.4.4 CONSTANT_Long_info表
6.4.5 CONSTANT_Double_info表
6.4.6 CONSTANT_Class_info表
6.4.7 CONSTANT_String_info表
6.4.8 CONSTANT_Fieldref_info表
6.4.9 CONSTANT_Methodref_info表
6.4.10 CONSTANT_InterfaceMethodref_
info表
6.4.11 CONSTANT_NameAndType_info
表
6.5 字段
6.6 方法
6.7 属性
6.7.1 属性格式
6.7.2 Code属性
6.7.3 ConstantValue属性
6.7.4 Deprecated属性
6.7.5 Exceptions属性
6.7.6 InnerClasses属性
6.7.7 LineNumberTable属性
6.7.8 LocalVariableTable属性
6.7.9 SourceFile属性
6.7.10 Synthetic属性
6.8 一个模拟:“Getting Loaded”
6.9 随书光盘
6.10 资源页
第7章 类型的生命周期
7.1 类型装载、连接与初始化
7.1.1 装载
7.1.2 验证
7.1.3 准备
7.1.4 解析
7.1.5 初始化
7.2 对象的生命周期
7.2.1 类实例化
7.2.2 垃圾收集和对象的终结
7.3 卸载类型
7.4 随书光盘
7.5 资源页
第8章 连接模型
8.1 动态连接和解析
8.1.1 解析和动态扩展
8.1.2 类装载器与双亲委派模型
8.1.3 常量池解析
8.1.4 解析CONSTANT_Class_info入口
8.1.5 解析CONSTANT_Fieldref_info
入口
S.1.6 解析CONSTANT_Methodref_info
入口
8.1.7 解析CONSTANT_Interface-
Methodref_info入口
8.1.8 解析CONSTANT_String_info入口
8.1.9 解析其他类型的入口
8.1.10 装载约束
8.1.11 编译时常量解析
8.1.12 直接引用
8.1.13 _quick指令
8.1.14 示例:Salutation程序的连接
8.1.15 示例:Greet程序的动态扩展
8.1.16 使用1.1版本的用户自定义类装
载器
8.1.17 使用1.2版本的用户自定义类装
载器
8.1.18 示例:使用forName()的动态扩展
8.1.19 示例:卸载无法触及的greeter类
8.1.20 示例:类型安全性与装载约束
8.2 随书光盘
8.3 资源页
第9章 垃圾收集
9.1 为什么要使用垃圾收集
9.2 垃圾收集算法
9.3 引用计数收集器
9.4 跟踪收集器
9.5 压缩收集器
9.6 拷贝收集器
9.7 按代收集的收集器
9.8 自适应收集器
9.9 火车算法
9.9.1 车厢、火车和火车站
9.9.2 车厢收集
9.9.3 记忆集合和流行对象
9.10 终结
9.11 对象可触及性的生命周期
9.11.1 引用对象
9.11.2 可触及性状态的变化
9.11.3 缓存、规范映射和临终清理
9.12 一个模拟:“Heap of Fish”
9.12.1 分配鱼
9.12.2 设置引用
9.12.3 垃圾收集
9.12.4 压缩堆
9.13 随书光盘
9.14 资源页
第10章 栈和局部变量操作
10.1 常量入栈操作
10.2 通用栈操作
10.3 把局部变量压入栈
10.4 弹出栈顶部元素,将其赋给局部变量
10.5 wide指令
10.6 一个模拟:“Fibonacci Forever”
10.7 随书光盘
10.8 资源页
第11章 类型转换
11.1 转换操作码
11.2 一个模拟:“Conversion Diversion”
11.3 随书光盘
11.4 资源页
第12章 整数运算
12.1 二进制补码运算
12.2 Inner Int:揭示Java int类型内部性质
的applet
12.3 运算操作码
12.4 一个模拟:“Prime Time”
12.5 随书光盘
12.6 资源页
第13章 逻辑运算
13.1 逻辑操作码
13.2 一个模拟:“Logical Results”
13.3 随书光盘
13.4 资源页
第14章 浮点运算
第15章 对象和数组
第16章 控制流
第17章 异常
第18章 finally子句
第19章 方法的调用与返回
第20章 线程同步
20.1 监视器
20.2 对象锁
20.3 指令集中对同步的支持
20.3.1 同步语句
20.3.2 同步方法
20.4 Object类中的协调支持
20.5 随书光盘
20.6 资源页
附录A 按操作码助记符排列的指令集
附录B 按功能排列的操作码助记符
附录C 按操作码字节值排列的操作码助
记符 附录D Java虚拟机的一个模拟:“Slices of Pi”
【jquery 图表插件】jqplot,highchart,jschart,flot
众所周知,通过jquery可以实现很好的图表效果,并且代码易懂,容易扩展,这里提供有jqplot中文API:http://www.jqplot.com/;其次,这里提供常用的插件如highchart,这里提供有详细的API文档和示例,不用再去官网上搜集啦。 另外,还有jschart和flot,虽然不常用,但是可以作为学习参考使用。
【mock】打桩说明文档及Jar包
在java web应用中,进行用例实现时,很多情况难以模拟,比如数据库用例,如果直接通过连接数据库进行测试,导致用例对环境依赖很大,这时,可以通过mock技术可以模拟构造数据环境,从而进行单元测试,这里提供有实现示例说明文档。
使用mock时,需要对应的jar包,这里是EasyMock(EaskMock 3.1) 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。
jqplot所用相关资料
jqPlot是一个jQuery绘图插件,可以利用它制作漂亮的线状图和柱状图。jqPlot支持为图表设置各种不同的样式。提供Tooltips,数据点高亮显示等功能。
柱状图可以提供坐标轴定制,柱条宽度、颜色定制,阴影设置等等。
这里提供jqplot官网示例,可以很快入手,写出自己的成果。
另外,还提供有帮助文档,可以自主设计图表样式和效果。
jquery各种图表源码示例
jquery 曲线图、折线图、饼图。。。。各种图像实现
credits:{
href:'',
text:'bits'
},
title: {
text: 'Monthly Average Temperature',
x: -20 //center
},
subtitle: {
text: 'Source: WorldClimate.com',
x: -20
},
jfreechart
整合Struts2跟JFreeChart生成折线图显示在jsp页面
首先,还是看下工程目录:
目录就是一般的web project目录,主要是看下所要导入的架包。JFreeChart的架包可在其官网下载最新版本(官网地址:http://sourceforge.net/projects/jfreechart/files/1.JFreeChart/)。这里除了JFreeChart架包以外还要导入Struts2中跟JFreeChart交互的插件包:struts2-jfreechart-plugin-2.0.11.jar,还有一开始的几个commons-xx的几个架包貌似也不能少,当在配置的时候发现这几个少了部署的时候也会报错,具体是哪个我也没有深入研究。
其次,就是web.xml的配置了,以前我配置struts2的web.xml直接就是这样:
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
可跟JFreeChart整合在后面配置Strtus.xml的时候再部署还是会报错,具体什么原因我也不知道,后来在网上看了这种配置方式:
<filter>
<filter-name>struts-prepare</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
</filter>
<filter>
<filter-name>struts-execute</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-execute</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样配置就没有问题了,神马原因我也不知道。
然后,就是写后台方法了:
1.写一个生成折线图的工具类:
package cn.infocore.www;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
public class CreateLinechart {
/**
* 图片保存的根目录
* @param filename
* @return
*/
public String Savepath(){
String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
String testpath = path.substring(0,path.lastIndexOf("WEB-INF"));
String filepath = testpath+"images/";
System.out.println(filepath);
return filepath;//Tomcat的中webapps目录下项目的images文件夹
}
/**
* 柱状图,折线图 数据集 方法
*/
public CategoryDataset getBarData(double[][] data, String[] rowKeys,
String[] columnKeys) {
return DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
}
private void isChartPathExist(String chartPath) {
File file = new File(chartPath);
if (!file.exists()) {
file.mkdirs();
// log.info("CHART_PATH="+CHART_PATH+"create.");
}
}
/**
* 折线图样式
* @param chartTitle
* @param x
* @param y
* @param xyDataset
* @param charName
* @return
*/
public JFreeChart createTimeXYChar(String chartTitle, String x, String y,
CategoryDataset xyDataset, String charName) {
JFreeChart chart = ChartFactory.createLineChart(chartTitle, x, y,
xyDataset, PlotOrientation.VERTICAL, true, true, false);
chart.setTextAntiAlias(false);
chart.setBackgroundPaint(Color.RED);
// 设置图标题的字体重新设置title
Font font = new Font("宋体", Font.BOLD, 20);
TextTitle title = new TextTitle(chartTitle);
title.setFont(font);
chart.setTitle(title);
// 设置面板字体
Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);
chart.setBackgroundPaint(Color.WHITE);
CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
// x轴 // 分类轴网格是否可见
categoryplot.setDomainGridlinesVisible(true);
// y轴 //数据轴网格是否可见
categoryplot.setRangeGridlinesVisible(true);
categoryplot.setRangeGridlinePaint(Color.WHITE);// 虚线色彩
categoryplot.setDomainGridlinePaint(Color.WHITE);// 虚线色彩
categoryplot.setBackgroundPaint(Color.lightGray);
// 设置轴和面板之间的距离
// categoryplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
CategoryAxis domainAxis = categoryplot.getDomainAxis();
domainAxis.setLabelFont(labelFont);// 轴标题
domainAxis.setTickLabelFont(labelFont);// 轴数值
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD); // 横轴上的
// Lable
// 45度倾斜
// 设置距离图片左端距离
domainAxis.setLowerMargin(0.0);
// 设置距离图片右端距离
domainAxis.setUpperMargin(0.0);
NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
numberaxis.setAutoRangeIncludesZero(true);
// 获得renderer 注意这里是下嗍造型到lineandshaperenderer!!
LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot.getRenderer();
//XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) categoryplot
// .getRenderer();//改变曲线颜色
lineandshaperenderer.setBaseShapesVisible(true); // series 点(即数据点)可见
lineandshaperenderer.setBaseLinesVisible(true); // series 点(即数据点)间有连线可见
// 显示折点数据
/* lineandshaperenderer.setBaseItemLabelGenerator(new
StandardCategoryItemLabelGenerator());
lineandshaperenderer.setBaseItemLabelsVisible(true); */
//图片路径
FileOutputStream fos_jpg = null;
try {
isChartPathExist(Savepath());
String chartName = Savepath() + charName;
fos_jpg = new FileOutputStream(chartName);
// 将报表保存为JPG文件
ChartUtilities.writeChartAsJPEG(fos_jpg, chart, 500, 510);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
try {
fos_jpg.close();
System.out.println("create time-createTimeXYChar.");
} catch (Exception e) {
e.printStackTrace();
}
}
return chart;
}
}
2.编写jsp页面需要调用的Action控制器
package cn.infocore.www;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LineChartView extends ActionSupport{
private static final long serialVersionUID = 1L;
private JFreeChart chart;
public String LineChartView() {
double[][] data = new double[][]{
{372, 766, 223, 540, 126},
{325, 521, 210, 340, 106},
{332, 256, 523, 240, 526}
};
String[] rowKeys = {"葡萄", "梨子", "苹果"};
String[] columnKeys = {"北京", "上海", "广州", "成都", "深圳"};
try {
//zlist,dlist, nlist赋值到HorizontalItemLabelDome里 这个jfreechart中的一个dome
CreateLinechart demo = new CreateLinechart();
HttpServletResponse response = (HttpServletResponse) ActionContext
.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
response.setContentType("image/jpg");
chart = demo.createTimeXYChar("折线图数据分析", "城市", "品种", demo.getBarData(data, rowKeys, columnKeys), "lineAndShap.jpg");
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), chart,
500, 400, null);
} catch (Exception e) {
e.printStackTrace();
}
//return "horizontalItemLabelView";
return "success";
}
public JFreeChart getChart() {
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}
}
接着,就是配置Struts.xml和折线图的xml文件了,
1.Struts.xml文件的配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-jfreechart.xml"></include>
<package name="redarmy" namespace="/csdn" extends="struts-default">
<global-results>
<result name="input">/index.jsp</result>
</global-results>
</package>
</struts>
2.在src目录下再新建一个struts-jfreechart.xml文件,用于配置JFreechart:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="lineChart" extends="jfreechart-default,struts-default"
namespace="/lineChart">
<result-types>
<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type>
</result-types>
<action name="lineChart" class="cn.infocore.www.LineChartView">
<result type="chart">
<param name="width">400</param>
<param name="height">700</param>
</result>
</action>
</package>
</struts>
最后,在index.jsp页面里编写调用action的代码:
<img src="${pageContext.request.contextPath}/lineChart/lineChart!LineChartView.action"/>
至此,所有的准备工作都完成了,将项目部署到Tomcat里面发布之后输入url:
http://192.168.1.196:8080/JFreeChart/index.jsp就能在jsp页面显示出所对应的折线图:
Fences桌面图标管理软件(桌面图标再多也不乱)
栅栏桌面(fences)是著名的Stardock公司推出的一款软件,由该公司的首席技术构架师Jeff Bargmann开发的,用来分类和组织桌面上的图标一款软件。它可以将不同的图标放到不同的“容器”当中,使用者还可以移动和拉伸这个“容器”。这样将图标分类以后,桌面再也不会看起来一团糟了。它还提供了一个有趣的功能:双击桌面,隐藏所有图标;再次双击桌面,显示所有图标。 Fences
Fences™ is a program that helps you organize your desktop, and can hide your icons when they're not in use. A "Fence", a term coined by this program, is an icon group on your desktop. Fences is an add-on to your desktop, not a replacement.Your desktop by creating shaded areas which become movable and sizable containers for your icons. Double click blank spaces on your desktop and all your fences will fade out, and back.
基本功能
1)对你的桌面分块 fence允许你在您的桌面上创建阴影区,你可以阴影区放置图标。你可以标上你喜欢的标签,在桌面上任意的移动调整它们。对于新用户Pre-included布局可以帮助他们快速的布局。 2)重新全显你的壁纸!双击可以快速轻松的显示和隐藏桌面图标 在桌面空白处双击来隐藏你的桌面图标。 再次双击时显示桌面图标。我们认为这是一个非常有用的特点,我们已经申请了专利。你甚至可以挑出图标或fence以排除! 3)创建快照,并具有自动缩放功能(屏幕尺寸变化) 快照(备份)功能可以截取你使用前和第一次使用时的快照,同时你可以在任何时间截取当前桌面的快照以保证不会丢失布局。
如果安装过程中出现
安装fences过程中出现“应用程序正常初始化0xc000135失败”的提示 ...
请先安装.net 3.x
如果安装过程中出现
安装fences过程中出现“应用程序正常初始化0xc000135失败”的提示 ...
请先安装.net 3.x
.NET Framework 3.5安装
Microsoft .NET Framework 3.5的安装程序。
X86指的是适用于32位操作系统 XP指的是适用于XP的系统。
了解了吗?
Microsoft .NET Framework 3.5 版提供了一个可再发行的安装程序,该安装程序中还包含用于 .NET Framework 2.0 版和 .NET Framework 3.0 版的 Service Pack 和累积更新。
.NET Framework 3.5 可再发行组件包以两种格式提供:
dotnetfx35.exe 这是一个独立的可执行文件,它包含将应用程序部署到 32 位和 64 位平台的所有支持的操作系统上所需的全部组件。此可执行文件不包含语言包。.NET Framework 3.5 版语言包为每种语言单独提供独立的可执行文件。
dotnetfx35setup.exe 这是一个轻量引导程序,它在安装期间从网站上下载所需的组件。该引导程序不在组件包中提供任何 .NET Framework 3.5 版组件,而是仅仅检测、下载和安装所需的组件。该引导程序将下载并安装与用户操作系统的语言匹配的语言包。可以使用独立的语言包安装其他语言支持。
可以在 32 位和 64 位平台上所有支持的操作系统上使用两个组件包中的任何一个。
spring加载restful(文档+程序源码)
spring加载restful(文档+程序源码)
通过REST风格体系架构,请求和响应都是基于资源表示的传输来构建的。资源是通过全局ID来标识的,这些ID一般使用的是一个统一资源标识符(URI)。客户端应用使用HTTP方法(如,GET、POST、PUT或DELETE)来操作一个或多个资源。通常,GET是用于获取或列出一个或多个资源,POST用于创建,PUT用于更新或替换,而DELETE则用于删除资源。
例如,GET http://host/context/employees/12345将获取ID为12345的员工的表示。这个响应表示可以是包含详细的员工信息的XML或ATOM,或者是具有更好UI的JSP/HTML页面。您看到哪种表示方式取决于服务器端实现和您的客户端请求的MIME类型。
RESTful Web Service是一个使用HTTP和REST原理实现的Web Service。通常,一个RESTful Web Service将定义基本资源URI、它所支持的表示/响应MIME,以及它所支持的操作。
本文将介绍如何使用Spring创建Java实现的服务器端RESTful Web Services。这个例子将使用浏览器、curl和Firefox插件RESTClient作为发出请求的客户端。
本文假定您是熟悉REST基本知识的。
Spring 3的REST支持
在Spring框架支持REST之前,人们会使用其他几种实现技术来创建Java RESTful Web Services,如Restlet、RestEasy和Jersey。Jersey是其中最值得注意的,它是JAX-RS(JSR 311)的参考实现。
Spring是一个得到广泛应用的Java EE框架,它在版本3以后就增加了RESTful Web Services开发的支持。虽然,对REST的支持并不是JAX-RS的一种实现,但是它具有比标准定义更多的特性。REST支持被无缝整合到Spring的MVC层,它可以很容易应用到使用Spring构建的应用中。
Spring REST支持的主要特性包括:
注释,如@RequestMapping 和 @PathVariable,支持资源标识和URL映射
ContentNegotiatingViewResolver支持为不同的MIME/内容类型使用不同的表示方式
使用相似的编程模型无缝地整合到原始的 MVC 层
创建一个示例RESTful Web Service
本节中的例子将演示Spring 3环境的创建过程,并创建一个可以部署到Tomcat中的“Hello World”应用。然后我们再完成一个更复杂的应用来了解Spring 3 REST支持的重要概念,如多种MIME类型表示支持和JAXB支持。另外,本文还使用一些代码片断来帮助理解这些概念。
《企业应用架构模式》PDF中文清晰版
-
英文原版下载:Patterns of Enterprise Application Architecture
内容简介
《企业应用架构模式》作者是当今面向对象软件开发的权威,他在一组专家级合作者的帮助下,将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的手册。《企业应用架构模式》获得了2003年度美国软件开发杂志图书类的生产效率奖和读者选择奖。《企业应用架构模式》分为两大部分。第一部分是关于如何开发企业应用的简单介绍。第二部分是《企业应用架构模式》的主体,是关于模式的详细参考手册,每个模式都给出使用方法和实现信息,并配以详细的Java代码或C#代码示例。此外,整《企业应用架构模式》中还用了大量UML图来进一步阐明有关概念。
《企业应用架构模式》涉及两部分内容。第一部分是关于如何开发企业应用的简单介绍。在阅读这部分时.读者可以从头到尾通读,以掌握《企业应用架构模式》的范围。第二部分是《企业应用架构模式》的主体,是关于模式的详细参考手册.每个模式都给出使用方法和实现信息,并配有详细的Java代码或C#代码的示例。此外,整《企业应用架构模式》中还用了大量UML图来进一步阐明有关概念。
《企业应用架构模式》主要内容:
将企业应用分层
组织企业业务逻辑的主要方法
在对象和关系数据库之间进行映射的深层次解决方案
通过模型一视图一控制器来组织Web表现
处理跨多事务的数据的并发问题
设计分布式对象接口
目录
模式列表
引言 1
0.1 架构 1
0.2 企业应用 2
0.3 企业应用的种类 3
0.4 关于性能的考虑 4
0.5 模式 6
0.5.1 模式的结构 7
0.5.2 模式的局限性 9
第一部分 表述
第1章 分层 12
1.1 企业应用中层次的演化 13
1.2 三个基本层次 14
1.3 为各层选择运行环境 15
第2章 组织领域逻辑 19
2.1 抉择 22
2.2 服务层 23
第3章 映射到关系数据库 25
.3.1 架构模式 25
3.2 行为问题 28
3.3 读取数据 29
3.4 结构映射模式 30
3.4.1 关系的映射 30
3.4.2 继承 33
3.5 建立映射 34
3.6 使用元数据 35
3.7 数据库连接 36
3.8 其他问题 38
3.9 进一步阅读 38
第4章 Web表现层 39
4.1 视图模式 41
4.2 输入控制器模式 43
4.3 进一步阅读 43
第5章 并发 45
5.1 并发问题 45
5.2 执行语境 46
5.3 隔离与不变性 47
5.4 乐观并发控制和悲观并发控制 48
5.4.1 避免不一致读 49
5.4.2 死锁 49
5.5 事务 50
5.5.1 ACID 51
5.5.2 事务资源 51
5.5.3 减少事务隔离以提高灵活性 52
5.5.4 业务事务和系统事务 53
5.6 离线并发控制的模式 54
5.7 应用服务器并发 55
5.8 进一步阅读 56
第6章 会话状态 57
6.1 无状态的价值 57
6.2 会话状态 58
6.3 存储会话状态的方法 59
第7章 分布策略 61
7.1 分布对象的诱惑 61
7.2 远程接口和本地接口 62
7.3 必须使用分布的情况 63
7.4 关于分布边界 64
7.5 分布接口 64
第8章 通盘考虑 67
8.1 从领域层开始 67
8.2 深入到数据源层 68
8.2.1 事务脚本的数据源 68
8.2.2 表模块的数据源 69
8.2.3 领域模型的数据源 69
8.3 表现层 69
8.4 一些关于具体技术的建议 70
8.4.1 Java和J2EE 70
8.4.2 .NET 71
8.4.3 存储过程 71
8.4.4 Web Services 72
8.5 其他分层方式 72
第二部分 模 式
第9章 领域逻辑模式 76
9.1 事务脚本(Transaction Script) 76
9.1.1 运行机制 76
9.1.2 使用时机 77
9.1.3 收入确认问题 78
9.1.4 例:收入确认(Java) 78
9.2 领域模型(Domain Model) 81
9.2.1 运行机制 81
9.2.2 使用时机 83
9.2.3 进一步阅读 83
9.2.4 例:收入确认(Java) 84
9.3 表模块(Table Module) 87
9.3.1 运行机制 88
9.3.2 使用时机 90
9.3.3 例:基于表模块的收入确认(C#) 90
9.4 服务层(Service Layer) 93
9.4.1 运行机制 94
9.4.2 使用时机 96
9.4.3 进一步阅读 96
9.4.4 例:收入确认(Java) 96
第10章 数据源架构模式 101
10.1 表数据入口(Table Data Gateway) 101
10.1.1 运行机制 101
10.1.2 使用时机 102
10.1.3 进一步阅读 102
10.1.4 例:人员入口(C#) 103
10.1.5 例:使用ADO.NET数据集(C#) 104
10.2 行数据入口(Row Data Gateway) 106
10.2.1 运行机制 107
10.2.2 使用时机 108
10.2.3 例:人员记录(Java) 108
10.2.4 例:领域对象的数据保持器(Java) 111
10.3 活动记录(Active Record) 112
10.3.1 运行机制 112
10.3.2 使用时机 113
10.3.3 例:一个简单的Person类(Java) 113
10.4 数据映射器(Data Mapper) 115
10.4.1 运行机制 116
10.4.2 使用时机 119
10.4.3 例:一个简单的数据映射器(Java) 119
10.4.4 例:分离查找方法(Java) 123
10.4.5 例:创建一个空对象(Java) 126
第11章 对象-关系行为模式 129
11.1 工作单元(Unit of Work) 129
11.1.1 运行机制 129
11.1.2 使用时机 133
11.1.3 例:使用对象注册的工作单元(Java) 134
11.2 标识映射(Identity Map) 137
11.2.1 运行机制 137
11.2.2 使用时机 139
11.2.3 例:标识映射中的方法(Java) 139
11.3 延迟加载(Lazy Load) 140
11.3.1 运作机制 140
11.3.2 使用时机 142
11.3.3 例:延迟初始化(Java) 142
11.3.4 例:虚代理(Java) 142
11.3.5 例:使用值保持器(Java) 144
11.3.6 例:使用重影(C#) 144
第12章 对象-关系结构模式 151
12.1 标识域(Identity Field) 151
12.1.1 工作机制 151
12.1.2 使用时机 154
12.1.3 进一步阅读 154
12.1.4 例:整型键(C#) 154
12.1.5 例:使用键表(Java) 155
12.1.6 例:使用组合键(Java) 157
12.2 外键映射(Foreign Key Mapping) 166
12.2.1 运行机制 167
12.2.2 使用时机 169
12.2.3 例:单值引用(Java) 169
12.2.4 例:多表查询(Java) 172
12.2.5 例:引用集合(C#) 173
12.3 关联表映射(Association Table Mapping) 175
12.3.1 运行机制 176
12.3.2 使用时机 176
12.3.3 例:雇员和技能(C#) 177
12.3.4 例:使用直接的SQL(Java) 179
12.3.5 例:用一次查询查多个雇员(Java) 182
12.4 依赖映射(Dependent Mapping) 186
12.4.1 运行机制 186
12.4.2 使用时机 187
12.4.3 例:唱片和曲目(Java) 188
12.5 嵌入值(Embedded Value) 190
12.5.1 运行机制 190
12.5.2 使用时机 190
12.5.3 进一步阅读 191
12.5.4 例:简单值对象(Java) 191
12.6 序列化LOB(Serialized LOB) 192
12.6.1 运行机制 193
12.6.2 使用时机 194
12.6.3 例:在XML中序列化一个部门层级(Java) 194
12.7 单表继承(Single Table Inheritance) 196
12.7.1 运行机制 197
12.7.2 使用时机 197
12.7.3 例:运动员的单表(C#) 198
12.7.4 从数据库中加载对象 199
12.8 类表继承(Class Table Inheritance) 202
12.8.1 运行机制 202
12.8.2 使用时机 203
12.8.3 进一步阅读 203
12.8.4 例:运动员和他们的家属(C#) 203
12.9 具体表继承(Concrete Table Inheritance) 208
12.9.1 运行机制 209
12.9.2 使用时机 210
12.9.3 例:具体运动员(C#) 210
12.10 继承映射器(Inheritance Mappers) 214
12.10.1 运行机制 215
12.10.2 使用时机 216
第13章 对象-关系元数据映射模式 217
13.1 元数据映射(Metadata Mapping) 217
13.1.1 运行机制 217
13.1.2 使用时机 218
13.1.3 例:使用元数据和反射(Java) 219
13.2 查询对象(Query Object) 224
13.2.1 运行机制 225
13.2.2 使用时机 225
13.2.3 进一步阅读 226
13.2.4 例:简单的查询对象(Java) 226
13.3 资源库(Repository) 228
13.3.1 运行机制 229
13.3.2 使用时机 230
13.3.3 进一步阅读 231
13.3.4 例:查找一个人所在的部门(Java) 231
13.3.5 例:资源库交换策略(Java) 231
第14章 Web表现模式 233
14.1 模型-视图-控制器(Model View Controller) 233
14.1.1 运行机制 233
14.1.2 使用时机 234
14.2 页面控制器(Page Controller) 235
14.2.1 运行机制 235
14.2.2 使用时机 236
14.2.3 例:Servlet控制器和JSP视图的简单演示(Java) 236
14.2.4 例:使用JSP充当处理程序(Java) 238
14.2.5 例:代码隐藏的页面控制器(C#) 241
14.3 前端控制器(Front Controller) 243
14.3.1 运行机制 244
14.3.2 使用时机 245
14.3.3 进一步阅读 246
14.3.4 例:简单的显示(Java) 246
14.4 模板视图(Template View) 248
14.4.1 运行机制 249
14.4.2 使用时机 251
14.4.3 例:分离的控制器,使用JSP充当视图(Java) 252
14.4.4 例:ASP.NET服务器页面(C#) 253
14.5 转换视图(Transform View) 256
14.5.1 运行机制 256
14.5.2 使用时机 257
14.5.3 例:简单的转换(Java) 257
14.6 两步视图(Two Step View) 259
14.6.1 运行机制 259
14.6.2 使用时机 260
14.6.3 例:两阶XSLT(XSLT) 264
14.6.4 例:JSP和定制标记(Java) 266
14.7 应用控制器(Application Controller) 269
14.7.1 运行机制 270
14.7.2 使用时机 271
14.7.3 进一步阅读 271
14.7.4 例:状态模型应用控制器(Java) 271
第15章 分布模式 275
15.1 远程外观(Remote Facade) 275
15.1.1 运行机制 276
15.1.2 使用时机 278
15.1.3 例:使用Java语言的会话bean来作为远程外观(Java) 278
15.1.4 例:Web Service(C#) 281
15.2 数据传输对象(Data Transfer Object) 285
15.2.1 运行机制 285
15.2.2 使用时机 288
15.2.3 进一步阅读 289
15.2.4 例:传输唱片信息(Java) 289
15.2.5 例:使用XML实现序列化(Java) 293
第16章 离线并发模式 295
16.1 乐观离线锁(Optimistic Offline Lock) 295
16.1.1 运行机制 296
16.1.2 使用时机 298
16.1.3 例:领域层与数据映射器(Java) 298
16.2 悲观离线锁(Pessimistic Offline Lock) 302
16.2.1 运行机制 303
16.2.2 使用时机 305
16.2.3 例:简单锁管理对象(Java) 305
16.3 粗粒度锁(Coarse-Grained Lock) 310
16.3.1 运行机制 310
16.3.2 使用时机 312
16.3.3 例:共享的乐观离线锁(Java) 312
16.3.4 例:共享的悲观离线锁(Java) 316
16.3.5 例:根对象乐观离线锁(Java) 317
16.4 隐含锁(Implicit Lock) 318
16.4.1 运行机制 318
16.4.2 使用时机 319
16.4.3 例:隐含的悲观离线锁(Java) 319
第17章 会话状态模式 321
17.1 客户会话状态(Client Session State) 321
17.1.1 运行机制 321
17.1.2 使用时机 322
17.2 服务器会话状态(Server Session State) 322
17.2.1 运行机制 322
17.2.2 使用时机 324
17.3 数据库会话状态(Database Session State) 324
17.3.1 运行机制 324
17.3.2 使用时机 325
第18章 基本模式 327
18.1 入口(Gateway) 327
18.1.1 运行机制 327
18.1.2 使用时机 328
18.1.3 例:私有消息服务的入口(Java) 329
18.2 映射器(Mapper) 331
18.2.1 运行机制 332
18.2.2 使用时机 332
18.3 层超类型(Layer Supertype) 332
18.3.1 运行机制 332
18.3.2 使用时机 333
18.3.3 例:领域对象(Java) 333
18.4 分离接口(Separated Interface) 333
18.4.1 运行机制 334
18.4.2 使用时机 335
18.5 注册表(Registry) 335
18.5.1 运行机制 336
18.5.2 使用时机 337
18.5.3 例:单子注册表(Java) 337
18.5.4 例:线程安全的注册表(Java) 338
18.6 值对象(Value Object) 339
18.6.1 运行机制 339
18.6.2 使用时机 340
18.7 货币(Money) 340
18.7.1 运行机制 341
18.7.2 使用时机 342
18.7.3 例:货币类(Java) 343
18.8 特殊情况(Special Case) 346
18.8.1 运行机制 347
18.8.2 使用时机 347
18.8.3 进一步阅读 347
18.8.4 例:一个简单的空对象(C#) 347
18.9 插件(Plugin) 348
18.9.1 运行机制 349
18.9.2 使用时机 350
18.9.3 例:ID生成器(Java) 350
18.10 服务桩(Service Stub) 352
18.10.1 运行机制 352
18.10.2 使用时机 353
18.10.3 例:销售税服务(Java) 353
18.11 记录集(Record Set) 355
18.11.1 运行机制 355
18.11.2 使用时机 356
参考文献 359
java基础非常典型的面试题目.wps
Java面试必备,题目非常基础,看看你能做对几道?
题目及详解示例
14. public class Test {
public static void main(String[] args) {
String s ;
Test test = new Test();
test.f(s); //error
}
public void f(String s){
s="1223";
System.out.println(s);
}
}
error: The local variable s may not have been initialized
1.成员变量的初始化
实例变量可以在定义处或者在构造方法中被显式初始化。如果在这两处都没有初始化,那么保留自动初始化时的默认值。final型的变量必须被显式初始化。
静态变量可以在定义处或者在静态代码块中被显式初始化。如果在这两处都没有初始化,那么保留自动初始化的默认值。final型的静态变量必须在定义处或者在静态代码块中被显式初始化。
2. 局部变量的初始化
局部变量必须在使用之前做显式初始化。如果编译器能够确认一个局部变量在使用之前可能没有被初始化,编译器将报错。
如果局部变量没有被初始化,并且在方法中一直没有被使用,编译和运行都会通过。
可以改正为:String s = null ;
spring-3.2.0.M1-dist.zip
spring-3.2.0.M1-dist.zip
进行spring开发必不可少的文件
该压缩包解压后的目录为:
spring-3.2.0.M1-dist
|
spring-3.2.0.M1
|
|----lib 所使用到的jar文件
|----docs 帮助文档
|----schema 结构
包含WEB开发程序所使用的spring jar文件、包含spring开发所使用到的全部jar文件。
Jquery详解-源码分析.pdf
Jquery源码分析
1、概述
第一篇 Query查询
2、构建jquery对象
2.1 jquery的设计理念
2.2 jquery对象的构建
3、构建jquery的Dom元素
3.1 生成dom元素
3.2 间接引用Dom节点
3.3 采用CSS方式查询Dom节点
4、jquery类数组分析
4.1 类数组构建
4.2 类数组操作
4.3 其他操作
第二篇 manipulate操作
5、DOM元素
5.1 dom元素的属性
5.2 dom元素的CSS
5.3 dom元素的操作
5.4 dom元素的内容
6、Event分析
6.1 event的包裹
6.2 事件的处理
6.3 domReady的处理
7、Ajax分析
7.1 jquery的ajax常用方法
7.2 jquery.ajax
8、FX分析
8.1 fx的常用方法
8.2 Fx的核心源码分析
标准Java JDK API 帮助文档
标准版Java JDK API 6.0 帮助文档 中文版
chm文档
结构清晰
适合所有Java开发人员
帮助Java开发人员入门和进阶的文档
标准版Java JDK API 6.0 帮助文档 中文版
掌握Android--Android开发之旅
android开发之旅
Android开发之旅:环境搭建及HelloWorld 1
Android开发之旅:HelloWorld项目的目录结构 2
Android开发之旅:android架构 3
Android开发之旅:应用程序基础及组件 4
Android开发之旅:应用程序基础及组件(续) 5
Android开发之旅:活动与任务 6
Android开发之旅:进程与线程 7
Android开发之旅:组件生命周期(一) 8
Android开发之旅:组件生命周期(二) 9
Android开发之旅:组件生命周期(三) 10
Android 开发之旅:又见Hello World!11
Android 开发之旅:深入分析布局文件&又是“Hello World!” 12
Android 开发之旅:view的几种布局方式及实践 13
Android 开发之旅:短信的收发及在android模拟器之间实践(一) 14
Android 开发之旅:短信的收发及在android模拟器之间实践(二) 15
Android开发之旅 Intents和Intent Filters(理论部分) 16
Android开发之旅 Intents和Intent Filters(实例部分) 17
android-sdk_r17-windows
android-sdk_r17-windows
下载好Android SDK后,开始安装,
Android SDK采用了Java语言,所以需要先安装JDK 5.0及以上版本。直接下载jdk安装文件安装,方便。
Android SDK不用安装,下载后,直接解压即可,
将下载后的SDK的压缩包解压到适当的位置,就这么简单;
SDK安装OK。
使用Eclipse进行android应用开发需要给Eclipse装adt插件,这样Eclipse就
可以和android sdk建立连接,可以在Eclipse中启动android模拟器进行程序调试等
ADT插件安装这里不再累赘,插件的安装URL为:
https://dl-ssl.google.com/android/eclipse/
也可以下载adt的zip包安装
安装完插件后,需要做一些简单的配置:
1、在Eclipse中,选择Window > Preference;
2、从左侧的菜单中,选择Android项;
3、设置SDK Location,点Browse选择SDK的安装根目录;
4、OK,完成。