自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (18)
  • 收藏
  • 关注

原创 《JAVA与模式》之责任链模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的:  责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配

2014-02-28 16:22:24 1232

原创 面向对象的基本概念与设计模式的基本原则

面向对象的基本概念与设计模式的基本原则教材《软件工程导论》中的权威定义:0.对象:对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务(即共有的操作)。1.类(class):在面向对象的软件技术中,“类”就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对相同属性和行为的一个或多个对象的描述。2.实例

2014-02-27 21:55:54 1627

原创 MVC与开源框架

MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工作原理,如下图1所示: Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的工作

2014-02-27 20:40:18 1411

原创 工厂模式

一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 适用场合:7.3 工厂模式的适用场合创建新对象最简单的办法是使用new关键字和具体类。只有在某些场合下,创建和维护对象工厂所带来的额外复杂性才是物有所值。本节概括了这些场合。7.3.1 动态实现如果需要像前面自行车的例子一样,创建一些用不同方式实现同一接口的对

2014-02-27 20:35:15 650

原创 Java中Runnable和Thread的区别

在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。下面看例子:package org.thread.demo; class MyThread extends Thre

2014-02-27 20:22:00 1214

原创 aop的实现原理

1 AOP各种的实现AOP就是面向切面编程,我们可以从几个层面来实现AOP。在编译器修改源代码,在运行期字节码加载前修改字节码或字节码加载后动态创建代理类的字节码,以下是各种实现机制的比较。  类别机制原理优点缺点静态AOP静态织入在编译期,切面直接以字节码的形式编译到目

2014-02-26 19:37:05 777

原创 数据库事务隔离级别

事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度。两个并发事务同时访问数据库表相同的行时,可能存在以下三个问题:1、幻想读:事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想。2、不可重复读取:事务T1读取一行记录,紧接着事务T

2014-02-26 19:24:06 725

原创 group by与partition by用法

group by与partition by用法详解

2014-02-25 20:25:27 15139

原创 宇信易诚 两季度亏损与高管出走的背后

上市之初的宇信易诚(NASDAQ:YTEC),曾经连续两年业绩增长速度超过40%。那个一度产品线最全、品牌影响力最大、资金最雄厚的金融行业方案商——宇信易诚,近两个季度却出现了业绩的连续亏损。这在宇信易诚、乃至其前身宇信鸿泰的发展史上前所未有。而上市数年间,多位高管离职,带走了业务团队,带走了客户,这一切的背后到底发生了什么?又是什么成为矛盾激化的导火索?  两季度亏损359万美元

2014-02-12 23:09:42 5397 2

原创 软件行业薪酬待遇调查:涨薪不给力致员工跳槽

“在软件企业的跳槽里,薪资待遇是最主要的离职原因,近70%的员工是因为待遇或主动离职,或被挖角。”一位在软件企业工作多年的人力资源经理告诉记者,跳槽是员工快速提高薪资的最有效手段,“特别是对那些初级、中级员工来说,有两年工作经历的初级员工,一般跳槽都能够涨薪30%。这也导致很多初级员工缺乏职业忠诚度,稍有不满立刻跳槽。”  图表1 不同工作年限员工入职时薪水对比  图表2 过去一年的薪酬涨

2014-02-12 22:40:41 4324

DroolsEclipse插件包

Drools是用Java编写的一个BRMS(业务规则管理系统),本资源为drools插件,可以很方便地集成到Eclipse中使用。 安装步骤参见:http://www.yiibai.com/drools/drools_eclipse_plugin.html

2017-03-19

EditPlus编辑器

≡≡≡≡≡≡≡≡≡≡≡≡≡『软件信息』≡≡≡≡≡≡≡≡≡≡≡≡≡ 软件名称: EditPlus v2.31 Build 524 汉化版 软件语言: 中文 软件类型: 文本编辑 授权方式: 共享软件 运行环境: Win2003, WinXP, Win2000, WinNT, WinME, Win9X 软件大小: 1.79 MB 开 发 商: http://www.editplus.com/ 软件汉化: tracky([email protected]) ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ ≡≡≡≡≡≡≡≡≡≡≡≡≡『软件简介』≡≡≡≡≡≡≡≡≡≡≡≡≡ 一套功能强大,可取代记事本的文字编辑器,拥有无限制的撤消与重做、 英文拼字检查、自动换行、列数标记、搜寻取代、同时编辑多文件、全屏 幕浏览功能。而它还有一个好用的功能,就是它有监视剪贴板的功能,能 够同步于剪贴板自动将文字粘贴进 EditPlus 的编辑窗口中,让你省去粘 贴的步骤。另外它也是一个非常好用的 HTML 编辑器,它除了支持颜色标 记、HTML 标记,同时支持 C、C++、Perl、Java,另外,它还内建完整的 HTML & CSS1 指令功能,对于习惯用记事本编辑网页的朋友,它可帮你节 省一半以上的网页制作时间,若你有安装 IE 3.0 以上版本,它还会结合 IE 浏览器于 EditPlus 窗口中,让你可以直接预览编辑好的网页(若没安 装IE,也可指定浏览器路径)。 ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ ≡≡≡≡≡≡≡≡≡≡≡≡≡『汉化说明』≡≡≡≡≡≡≡≡≡≡≡≡≡ 1.这是汉化完全版,无序安装原版! 2.汉化了关于和注册对话框,并修改了这两处对话框的字体,感谢阳光灿 烂提供修改方法! 3.汉化了部分非标资源,基本上不会出现什么英文了,部分剩下的部分英 文汉化后会导致程序出现异常,所以没有进行汉化!请用户见谅! 4.集成了 liangjihua 的使用技巧集萃,感谢 liangjihua! 5.如果遇到问题请先使用原版进行测试,如果的确属于汉化版的问题,请 与我取得联系,谢谢! ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ tracky 2015.01.22 Name: crsky Code: 7879E-5BF58-7DR23-DAOB2-7DR30

2015-01-22

OSGi实战/(美)RichardS.Hall

OSGi是一种标准技术,用于创建高度模块化的Java应用。利用OSGi,无需停止运行整个系统就可以安装、启动、停止、更新或卸载组件。Oracle、BEA和IBM都在积极推动OSGi技术的采用。   《OSGi实战》作者既来自开发一线,又参与了OSGi规范的制定,这就保障了全书内容的权威性。《OSGi实战》全书历时两年多方才完成,凝聚了作者们多年来的宝贵经验和辛勤汗水。内容分三部分,涵盖OSGi核心规范解读、OSGi规范的实际应用及相关高级主题,系统、全面、深入地阐述OSGi的重要特性,揭示了大量鲜为人知的技术细节。此外,本书还通过极具实用价值的实例示范了OSGi的各种应用,能够满足各个层次读者的需求。通过大师的指引,相信读者一定可以轻松实现“入门-进阶-精通”三级跳,在OSGi世界里创造出无限可能。 本书为PDF格式英文原版 第一部分  OSGi:模块化、生命周期和服务 第1章  揭开OSGi的面纱 1.1  OSGi的定义和目标 1.1.1  Java模块化的不足 1.1.2  OSGi能帮助你吗 1.2  OSGi架构概览 1.2.1  OSGi框架 1.2.2  将它们结合起来 1.3  Hello, world! 1.3.1  模块层示例 1.3.2  生命周期层示例 1.3.3  服务层示例 1.3.4  场景设置 1.4  OSGi的相关技术 1.4.1  Java EE 1.4.2  Jini 1.4.3  NetBeans 1.4.4  JMX 1.4.5  轻量级容器 1.4.6  Java 业务集成 1.4.7  JSR 277 1.4.8  JSR 294 1.4.9  SCA 1.4.10  .NET 1.5  小结 第2章  精通模块化 2.1  什么是模块化 2.2  为什么使用模块化 2.3  模块化绘图程序 2.4  bundle 2.4.1  bundle在物理模块化中扮演的角色 2.4.2  bundle在逻辑模块化中扮演的角色 2.5  使用元数据定义bundle 2.5.1  可读信息 2.5.2  bundle标识 2.5.3  代码可见性 2.5.4  类搜索顺序 2.6  完成绘图程序设计 2.6.1  提高绘图程序的模块化 2.6.2  启动新的绘图程序 2.7  OSGi依赖解析 2.7.1  自动解析依赖 2.7.2  使用约束保证一致性 2.8  回顾模块化绘图程序的好处 2.9  小结 第3章  生命周期 3.1  生命周期管理 3.1.1  什么是生命周期管理 3.1.2  为什么需要生命周期管理 3.2  OSGi bundle的生命周期 3.2.1  将生命周期引入绘图程序 3.2.2  OSGi框架在生命周期中的作用 3.2.3  bundles激活器的清单文件条目 3.2.4  生命周期API 3.2.5  生命周期状态图 3.2.6  bundle缓存和框架重启 3.3  在bundle中使用生命周期API 3.3.1  配置bundle 3.3.2  部署bundle 3.3.3  检查框架状态 3.3.4  持久化bundle状态 3.3.5  事件监听 3.3.6  bundle自我销毁 3.4  动态扩展绘图程序 3.5  生命周期与模块化 3.5.1  解析bundle 3.5.2  刷新bundle 3.5.3  当更新操作没有完成更新 3.6  小结 第4章  学习服务 4.1  什么是服务、为什么使用服务、什么时候用服务 4.1.1  什么是服务 4.1.2  为什么使用服务 4.1.3  什么时候应该使用服务 4.1.4  什么时候不应该使用服务 4.1.5  仍然不确定 4.2  OSGi服务实战 4.2.1  发布服务 4.2.2  查找并绑定服务 4.3  处理动态性 4.3.1  避免常见的陷阱 4.3.2  监听服务 4.3.3  服务跟踪 4.4  在绘图示例中使用服务 4.4.1  定义图形服务 4.4.2  发布图形服务 4.4.3  跟踪图形服务 4.5  将服务关联到模块层和生命周期层 4.5.1  为什么不能看到我的服务 4.5.2  能否提供一个bundle特有的服务 4.5.3  应该在何时释放服务 4.5.4  何时注销服务 4.5.5  应该将接口分开打包吗 4.6  标准服务 4.6.1  核心服务 4.6.2  compendium服务 4.7  小结 第5章  深入分析模块化特性 5.1  管理导出 5.1.1  导入导出包 5.1.2  隐式导出属性 5.1.3  强制导出属性 5.1.4  导出过滤 5.1.5  复制导出 5.2  导入解耦 5.2.1  可选导入 5.2.2  动态导入 5.2.3  可选导入与动态导入的比较 5.2.4  日志示例 5.3  需要的bundle 5.3.1  声明bundle依赖关系 5.3.2  聚合分割包 5.3.3  bundle依赖的相关问题 5.4  将bundle划分为片段 5.4.1  片段 5.4.2  本地化中使用片段 5.5  处理与环境相关的问题 5.5.1  依赖执行环境 5.5.2  构建本地库 5.6  小结 第二部分  OSGi实践 第6章  走近bundle 6.1  将JAR转换成bundle 6.1.1  选取bundle标识 6.1.2  导出包 6.1.3  发现需要导入的包 6.1.4  嵌入与导入 6.1.5  增加对生命周期的支持 6.1.6  JAR文件转换为bundle的简要说明 6.2  分割一个应用到多个bundle 6.2.1  创建一个大型bundle 6.2.2  将代码拆分到多个bundle中 6.2.3  降低模块耦合 6.2.4  是否要转换成bundle 6.3  小结 第7章  测试应用程序 7.1  迁移测试到OSGi 7.1.1  容器内测试 7.1.2  创建测试bundle 7.1.3  覆盖所有基础 7.2  模拟OSGi 7.2.1  测试期望的行为 7.2.2  模拟实战 7.2.3  模拟意外情景 7.2.4  处理多线程测试 7.2.5  暴露竞态条件 7.3  OSGi高级测试 7.3.1  OSGi测试工具 7.3.2  在多个框架中运行测试 7.3.3  单元测试 7.3.4  集成测试 7.3.5  管理测试 7.4  小结 第8章  调试应用 8.1  调试bundle 8.1.1  调试实战 8.1.2  使用HotSwap解决问题 8.2  解决类加载相关问题 8.2.1  ClassNotFoundException与NoClassDefFoundError 8.2.2  类型转换问题 8.2.3  使用uses约束 8.2.4  同Class.forName()划清界限 8.2.5  线程上下文类加载器 8.3  追踪内存泄漏 8.4  悬挂服务 8.4.1  查找悬挂服务 8.4.2  防止悬挂服务 8.5  小结 第9章  管理bundle 9.1  包和bundle的版本控制 9.1.1  有效的版本控制 9.1.2  包的版本控制 9.1.3  bundle的版本控制 9.2  配置bundle 9.2.1  配置管理服务 9.2.2  元类型服务 9.2.3  首选项服务 9.3  延迟启动bundle 9.3.1  激活策略 9.3.2  使用激活策略 9.4  小结 第10章  管理应用 10.1  部署bundle 10.1.1  管理代理 10.1.2  OSGi bundle仓库 10.1.3  部署管理服务 10.2  指定bundle激活顺序 10.2.1  介绍启动级别服务 10.2.2  使用启动级别服务 10.3  小结 第三部分  高级主题 第11章  组件模型和框架 11.1  面向组件 11.1.1  什么是组件 11.1.2  为什么需要组件 11.2  OSGi与组件 11.2.1  OSGi面向服务的组件模型 11.2.2  改进OSGi组件模型 11.2.3  使用组件的绘图示例 11.3  声明式服务 11.3.1  构建声明式服务组件 11.3.2  使用声明式服务提供服务 11.3.3  利用声明式服务使用服务 11.3.4  声明式服务组件生命周期 11.4  小结 第12章  高级组件框架 12.1  Blueprint容器 12.1.1  Blueprint架构 12.1.2  用Blueprint提供服务 12.1.3  通过Blueprint使用服务 12.1.4  Blueprint组件生命周期 12.1.5  Blueprint高级特性 12.2  Apache Felix iPOJO 12.2.1  构建iPOJO组件 12.2.2  通过iPOJO提供服务 12.2.3  通过iPOJO使用服务 12.2.4  iPOJO组件生命周期 12.2.5  使用iPOJO实例化组件 12.3  混合和匹配 12.4  小结 第13章  启动和嵌入OSGi框架 13.1  标准启动和嵌入 13.1.1  框架API概览 13.1.2  创建框架实例 13.1.3  配置框架 13.1.4  启动框架实例 13.1.5  停止框架实例 13.2  启动框架 13.2.1  确定安装哪些bundle 13.2.2  干净地关闭 13.2.3  配置、创建和启动框架 13.2.4  安装bundle 13.2.5  启动bundle 13.2.6  启动主bundle 13.2.7  等待关闭 13.3  嵌入框架 13.3.1  内部还是外部 13.3.2  谁在控制 13.3.3  嵌入式框架示例 13.4  小结 第14章  确保应用程序的安全 14.1  使用安全或者不使用安全 14.2  安全:努力尝试使用 14.3  OSGi特定的权限 14.3.1  PackagePermission 14.3.2  BundlePermission 14.3.3  AdminPermission 14.3.4  ServicePermission 14.3.5  相对文件权限 14.4  使用条件权限管理服务管理权限 14.4.1  条件权限 14.4.2  条件权限管理服务 14.4.3  bundle 位置条件 14.4.4  使用Conditional- Permission Admin 14.4.5  实现一个策略文件读取器 14.5  数字签名的bundle 14.5.1  学习术语 14.5.2  创建证书和签名bundle 14.5.3  BundleSignerCondition 14.6  本地权限 14.7  高级权限管理 14.7.1  自定义条件概览 14.7.2  基于日期的条件 14.7.3  用户输入条件 14.8  汇总 14.9  小结 第15章  Web应用和Web服务 15.1  创建Web应用 15.1.1  使用HTTP服务规范 15.1.2  使用Web应用规范 15.1.3  标准WAR:Web URL处理程序 15.2  提供和使用Web服务 15.2.1  提供一个Web服务 15.2.2  使用Web服务 15.2.3  发布服务 15.3  小结 附录A  构建 bundle 附录B  OSGi标准服务 目    录 第一部分  OSGi:模块化、生命周期和服务 第1章  揭开OSGi的面纱 1.1  OSGi的定义和目标 1.1.1  Java模块化的不足 1.1.2  OSGi能帮助你吗 1.2  OSGi架构概览 1.2.1  OSGi框架 1.2.2  将它们结合起来 1.3  Hello, world! 1.3.1  模块层示例 1.3.2  生命周期层示例 1.3.3  服务层示例 1.3.4  场景设置 1.4  OSGi的相关技术 1.4.1  Java EE 1.4.2  Jini 1.4.3  NetBeans 1.4.4  JMX 1.4.5  轻量级容器 1.4.6  Java 业务集成 1.4.7  JSR 277 1.4.8  JSR 294 1.4.9  SCA 1.4.10  .NET 1.5  小结 第2章  精通模块化 2.1  什么是模块化 2.2  为什么使用模块化 2.3  模块化绘图程序 2.4  bundle 2.4.1  bundle在物理模块化中扮演的角色 2.4.2  bundle在逻辑模块化中扮演的角色 2.5  使用元数据定义bundle 2.5.1  可读信息 2.5.2  bundle标识 2.5.3  代码可见性 2.5.4  类搜索顺序 2.6  完成绘图程序设计 2.6.1  提高绘图程序的模块化 2.6.2  启动新的绘图程序 2.7  OSGi依赖解析 2.7.1  自动解析依赖 2.7.2  使用约束保证一致性 2.8  回顾模块化绘图程序的好处 2.9  小结 第3章  生命周期 3.1  生命周期管理 3.1.1  什么是生命周期管理 3.1.2  为什么需要生命周期管理 3.2  OSGi bundle的生命周期 3.2.1  将生命周期引入绘图程序 3.2.2  OSGi框架在生命周期中的作用 3.2.3  bundles激活器的清单文件条目 3.2.4  生命周期API 3.2.5  生命周期状态图 3.2.6  bundle缓存和框架重启 3.3  在bundle中使用生命周期API 3.3.1  配置bundle 3.3.2  部署bundle 3.3.3  检查框架状态 3.3.4  持久化bundle状态 3.3.5  事件监听 3.3.6  bundle自我销毁 3.4  动态扩展绘图程序 3.5  生命周期与模块化 3.5.1  解析bundle 3.5.2  刷新bundle 3.5.3  当更新操作没有完成更新 3.6  小结 第4章  学习服务 4.1  什么是服务、为什么使用服务、什么时候用服务 4.1.1  什么是服务 4.1.2  为什么使用服务 4.1.3  什么时候应该使用服务 4.1.4  什么时候不应该使用服务 4.1.5  仍然不确定 4.2  OSGi服务实战 4.2.1  发布服务 4.2.2  查找并绑定服务 4.3  处理动态性 4.3.1  避免常见的陷阱 4.3.2  监听服务 4.3.3  服务跟踪 4.4  在绘图示例中使用服务 4.4.1  定义图形服务 4.4.2  发布图形服务 4.4.3  跟踪图形服务 4.5  将服务关联到模块层和生命周期层 4.5.1  为什么不能看到我的服务 4.5.2  能否提供一个bundle特有的服务 4.5.3  应该在何时释放服务 4.5.4  何时注销服务 4.5.5  应该将接口分开打包吗 4.6  标准服务 4.6.1  核心服务 4.6.2  compendium服务 4.7  小结 第5章  深入分析模块化特性 5.1  管理导出 5.1.1  导入导出包 5.1.2  隐式导出属性 5.1.3  强制导出属性 5.1.4  导出过滤 5.1.5  复制导出 5.2  导入解耦 5.2.1  可选导入 5.2.2  动态导入 5.2.3  可选导入与动态导入的比较 5.2.4  日志示例 5.3  需要的bundle 5.3.1  声明bundle依赖关系 5.3.2  聚合分割包 5.3.3  bundle依赖的相关问题 5.4  将bundle划分为片段 5.4.1  片段 5.4.2  本地化中使用片段 5.5  处理与环境相关的问题 5.5.1  依赖执行环境 5.5.2  构建本地库 5.6  小结 第二部分  OSGi实践 第6章  走近bundle 6.1  将JAR转换成bundle 6.1.1  选取bundle标识 6.1.2  导出包 6.1.3  发现需要导入的包 6.1.4  嵌入与导入 6.1.5  增加对生命周期的支持 6.1.6  JAR文件转换为bundle的简要说明 6.2  分割一个应用到多个bundle 6.2.1  创建一个大型bundle 6.2.2  将代码拆分到多个bundle中 6.2.3  降低模块耦合 6.2.4  是否要转换成bundle 6.3  小结 第7章  测试应用程序 7.1  迁移测试到OSGi 7.1.1  容器内测试 7.1.2  创建测试bundle 7.1.3  覆盖所有基础 7.2  模拟OSGi 7.2.1  测试期望的行为 7.2.2  模拟实战 7.2.3  模拟意外情景 7.2.4  处理多线程测试 7.2.5  暴露竞态条件 7.3  OSGi高级测试 7.3.1  OSGi测试工具 7.3.2  在多个框架中运行测试 7.3.3  单元测试 7.3.4  集成测试 7.3.5  管理测试 7.4  小结 第8章  调试应用 8.1  调试bundle 8.1.1  调试实战 8.1.2  使用HotSwap解决问题 8.2  解决类加载相关问题 8.2.1  ClassNotFoundException与NoClassDefFoundError 8.2.2  类型转换问题 8.2.3  使用uses约束 8.2.4  同Class.forName()划清界限 8.2.5  线程上下文类加载器 8.3  追踪内存泄漏 8.4  悬挂服务 8.4.1  查找悬挂服务 8.4.2  防止悬挂服务 8.5  小结 第9章  管理bundle 9.1  包和bundle的版本控制 9.1.1  有效的版本控制 9.1.2  包的版本控制 9.1.3  bundle的版本控制 9.2  配置bundle 9.2.1  配置管理服务 9.2.2  元类型服务 9.2.3  首选项服务 9.3  延迟启动bundle 9.3.1  激活策略 9.3.2  使用激活策略 9.4  小结 第10章  管理应用 10.1  部署bundle 10.1.1  管理代理 10.1.2  OSGi bundle仓库 10.1.3  部署管理服务 10.2  指定bundle激活顺序 10.2.1  介绍启动级别服务 10.2.2  使用启动级别服务 10.3  小结 第三部分  高级主题 第11章  组件模型和框架 11.1  面向组件 11.1.1  什么是组件 11.1.2  为什么需要组件 11.2  OSGi与组件 11.2.1  OSGi面向服务的组件模型 11.2.2  改进OSGi组件模型 11.2.3  使用组件的绘图示例 11.3  声明式服务 11.3.1  构建声明式服务组件 11.3.2  使用声明式服务提供服务 11.3.3  利用声明式服务使用服务 11.3.4  声明式服务组件生命周期 11.4  小结 第12章  高级组件框架 12.1  Blueprint容器 12.1.1  Blueprint架构 12.1.2  用Blueprint提供服务 12.1.3  通过Blueprint使用服务 12.1.4  Blueprint组件生命周期 12.1.5  Blueprint高级特性 12.2  Apache Felix iPOJO 12.2.1  构建iPOJO组件 12.2.2  通过iPOJO提供服务 12.2.3  通过iPOJO使用服务 12.2.4  iPOJO组件生命周期 12.2.5  使用iPOJO实例化组件 12.3  混合和匹配 12.4  小结 第13章  启动和嵌入OSGi框架 13.1  标准启动和嵌入 13.1.1  框架API概览 13.1.2  创建框架实例 13.1.3  配置框架 13.1.4  启动框架实例 13.1.5  停止框架实例 13.2  启动框架 13.2.1  确定安装哪些bundle 13.2.2  干净地关闭 13.2.3  配置、创建和启动框架 13.2.4  安装bundle 13.2.5  启动bundle 13.2.6  启动主bundle 13.2.7  等待关闭 13.3  嵌入框架 13.3.1  内部还是外部 13.3.2  谁在控制 13.3.3  嵌入式框架示例 13.4  小结 第14章  确保应用程序的安全 14.1  使用安全或者不使用安全 14.2  安全:努力尝试使用 14.3  OSGi特定的权限 14.3.1  PackagePermission 14.3.2  BundlePermission 14.3.3  AdminPermission 14.3.4  ServicePermission 14.3.5  相对文件权限 14.4  使用条件权限管理服务管理权限 14.4.1  条件权限 14.4.2  条件权限管理服务 14.4.3  bundle 位置条件 14.4.4  使用Conditional- Permission Admin 14.4.5  实现一个策略文件读取器 14.5  数字签名的bundle 14.5.1  学习术语 14.5.2  创建证书和签名bundle 14.5.3  BundleSignerCondition 14.6  本地权限 14.7  高级权限管理 14.7.1  自定义条件概览 14.7.2  基于日期的条件 14.7.3  用户输入条件 14.8  汇总 14.9  小结 第15章  Web应用和Web服务 15.1  创建Web应用 15.1.1  使用HTTP服务规范 15.1.2  使用Web应用规范 15.1.3  标准WAR:Web URL处理程序 15.2  提供和使用Web服务 15.2.1  提供一个Web服务 15.2.2  使用Web服务 15.2.3  发布服务 15.3  小结 附录A  构建 bundle 附录B  OSGi标准服务 作者介绍   Richard S. Hall,是Apache Felix框架开发组重要成员。2000年以后Richard参与了OSGi的开源工作并于2004年加入OSGi联盟。Richard还是Apache软件组织成员,目前在Oracle的GlassFish项目组工作,帮助解决OSGi的相关问题。   Karl Pauls,是Apache Felix Framework Security Provider项目的实现者,Apache Felix框架开发组的核心成员。Karl还是Apache软件组织成员,参与开发过多个Apache项目以及其他的开源项目。目前Karl是Luminis的一位研究员。

2014-08-18

svn服务器搭建步骤详解(word文档)

该文档详细讲解了SVN服务器的搭建步骤并配有相应截图 文档包含svn服务器的安装、使用、权限设置

2013-09-21

Java SSL安全通讯

javax.net.ssl.SSLSocket类的使用。 下载cer.zip文件后解压,得到cer文件夹,该目录下有运行脚本,其中Test文件夹为java项目源码,直接导出到Eclipse。 SSLServer主类在com.csii.ssl包下,其它pack下的内容都用不到。 cer目录下除server.sh,client.sh,Test外,其余文件为安全证书

2013-08-24

java zip文件压缩与解压缩

java zip文件的压缩与解压缩,支持中文 使用apache的工具包可设置字符编码

2013-07-10

java反射(reflect)

java反射(reflect)

2013-07-07

dom4j生成xml

该项目采用dom4j从数据库表中生成xml数据 项目文档、数据库建表语句均已放置在项目中。 关键代码如下: public String getXml(Connection conn, int rm_id, String path) { //声明xml字符串 String fileString = ""; //创建DAO对象 MachineroomDao machineroom_dao = new MachineroomDao(); Cab_equipmentDao cab_equipment_dao = new Cab_equipmentDao(); Equip_configDao equip_config_dao = new Equip_configDao(); EquipmentDao equipment_dao = new EquipmentDao(); //添加room,第一层 Machineroom machineroom_dto = machineroom_dao.findById(conn, rm_id);//设置房间号 //获取个属性的值.如果为null,将属性设为"" String getMr_id = new Integer(machineroom_dto.getMr_id()).toString(); String getMr_name = machineroom_dto.getMr_name(); if(getMr_id == null) getMr_id = ""; if(getMr_name == null) getMr_name = ""; Document document = DocumentHelper.createDocument(); Element rooms_racks = document.addElement("rooms-racks"); Element room = rooms_racks.addElement("room"); room.addAttribute("id", getMr_id); room.addAttribute("name", getMr_name); room.addAttribute("isSelected", "true"); //添加rack,第二层 List<Cab_equipment> cab_equipment_list = cab_equipment_dao.findById(conn, path, machineroom_dto.getMr_id()); for (int i = 0; i < cab_equipment_list.size(); i++) { Cab_equipment cab_equipment_dto = cab_equipment_list.get(i); //获取个属性的值.如果为null,将属性设为"" String getE_id = cab_equipment_dto.getE_id(); String getEqucab_name = cab_equipment_dto.getEqucab_name(); String getX = cab_equipment_dto.getX() + ""; String getY = cab_equipment_dto.getY() + ""; String getZ = cab_equipment_dto.getZ() + ""; String getLongs = cab_equipment_dto.getLongs() + ""; String getWidth = cab_equipment_dto.getWidth() + ""; String getHighs = cab_equipment_dto.getHighs() + ""; String getRotate_angle = cab_equipment_dto.getRotate_angle(); if(getE_id == null) getE_id = ""; if(getEqucab_name == null) getEqucab_name = ""; if(getRotate_angle == null) getRotate_angle = ""; //将float后的".0"去掉 if(cab_equipment_dto.getX()%1 == 0) getX = (int)cab_equipment_dto.getX()+""; if(cab_equipment_dto.getY()%1 == 0) getY = (int)cab_equipment_dto.getY()+""; if(cab_equipment_dto.getZ()%1 == 0) getZ = (int)cab_equipment_dto.getZ()+""; if(cab_equipment_dto.getHighs()%1 == 0) getHighs = (int)cab_equipment_dto.getHighs()+""; Element rack = room.addElement("rack"); rack.addAttribute("id", getE_id); rack.addAttribute("name", getEqucab_name); rack.addAttribute("x", getX); rack.addAttribute("y", getY); rack.addAttribute("z", getZ); rack.addAttribute("lengthX", getLongs); rack.addAttribute("lengthY", getWidth); rack.addAttribute("lengthZ", getHighs); rack.addAttribute("rotation", getRotate_angle); //添加device,第三层 int u = 0;//表示需要计算的u高,其xml的属性为uplace int count = 0;//计数器,临时变量 int count2 = 0; List<Equip_config> equip_config_list = equip_config_dao.findByLocation(conn, cab_equipment_dto.getE_id()); for (int j = 0; j < equip_config_list.size(); j++) { Equip_config equip_config_dto = equip_config_list.get(j); Equipment equipment_dto = equipment_dao.findBySerial(conn, equip_config_dto.getSerial()); //获取个属性的值.如果为null,将属性设为"" String getSerial = equip_config_dto.getSerial(); String getEquipmentname = equip_config_dto.getEquipmentname(); String getEq_typecn = equipment_dto.getEq_typecn(); String getImagepath = equip_config_dto.getImagepath(); String getStorey = equip_config_dto.getStorey(); //String getU = equip_config_dto.getU() + ""; if(getSerial == null) getSerial = ""; if(getEquipmentname == null) getEquipmentname = ""; if(getEq_typecn == null) getEq_typecn = ""; if(getImagepath == null) getImagepath = ""; if(getStorey == null) getStorey = ""; int getU = equip_config_dto.getU(); //处理u高 if(getU != 0){ count++; } if(count2==0){ if(count == 1){ u = 2; } }else{ Equip_config equip_config_dto_temp = equip_config_list.get(count2 - 1); Equipment equipment_dto_temp = equipment_dao.findBySerial(conn, equip_config_dto_temp.getSerial()); int getU_temp = equip_config_dto_temp.getU(); if(count == 1){ u = 2; }else { if(getU_temp == 0){ u = u + getU_temp/10 + 0; } else { if(getU_temp == 0){ u = u + getU_temp/10 +2; }else { u = u + getU_temp/10 + 1 + 2; } } } } count2++; String uplace = u + ""; String GetU = getU + ""; if(getU == 0) { uplace = "0"; }//u高处理完毕 Element device = rack.addElement("device"); device.addAttribute("num", getSerial); device.addAttribute("name", getEquipmentname); device.addAttribute("type", getEq_typecn); device.addAttribute("image", getImagepath); //device.addAttribute("storey", getStorey);//设备所在的层数,该属性不在xml中展示 device.addAttribute("uplace", uplace);//计算得来的u高 device.addAttribute("uheight", GetU);//图片的高度 } } //设置xml输出格式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); StringWriter out = new StringWriter(); XMLWriter xmlWriter = new XMLWriter(out, format); try { xmlWriter.write(document); fileString = out.toString(); xmlWriter.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return fileString; }

2013-05-05

json的解析

该小项目完整全面整理了java解析json各中写法,以及json的生成、遍历。 该项目收集整理json所需的jar包,使用文档。 /** * json的生成、遍历 */ import java.util.*; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** * 该类演示的java数组、字符串、List生成json数组 * Map生成json * 嵌套生成json * json的遍历 * 递归遍历json所有子条目 * @author Administrator * */ public class Test3 { public static void main(String[] args) { String str="{ \"head\":{\"snd_time\":\"20151020234832\",\"snder\":\"S\"} ,\"body\":{\"app_id\":\"APP002\",\"records\":[{\"excp_stat\":\"0\",\"fields\":[{\"req_time\":\"20140828000312\",\"tran_date\":\"121226\"}]}]} }"; System.out.println(str); /*普通数据生成json数组*/ boolean[] boolArray = new boolean[]{true,false,true}; JSONArray jsonArray1 = JSONArray.fromObject( boolArray ); System.out.println( jsonArray1 ); // prints [true,false,true] /*List生成json数组*/ List list = new ArrayList(); list.add( "first" ); list.add( "second" ); JSONArray jsonArray2 = JSONArray.fromObject( list ); System.out.println( jsonArray2 ); // prints ["first","second"] /*String生成json数组*/ JSONArray jsonArray3 = JSONArray.fromObject( "['json','is','easy']" ); System.out.println( jsonArray3 ); // prints ["json","is","easy"] /*Map生成json*/ Map<Object, Object> map = new HashMap<Object, Object>(); map.put("name", "Ren"); map.put("sex", "man"); map.put("age", 24); JSONObject obj = JSONObject.fromObject(map); System.out.println(obj); //输出结果{"sex":"man","age":24,"name":"Ren"} /*嵌套生成json*/ JSONArray jsonArr = new JSONArray(); JSONObject jsonObj = new JSONObject(); for (int i = 1; i <= 3; i++) { JSONObject tjo = new JSONObject(); tjo.put("optValue", i+""); tjo.put("optText", i+"Text"); jsonArr.add(tjo); } jsonObj.put("options", jsonArr); System.out.println(jsonObj); //输出结果 {"options":[{"optValue":"1","optText":"1Text"},{"optValue":"2","optText":"2Text"},{"optValue":"3","optText":"3Text"}]} /*嵌套生成json*/ JSONObject tobj = new JSONObject(); JSONArray tarr = new JSONArray(); tobj.put("name", "zhangsan"); tobj.put("age", 29); tarr.add(tobj); tarr.add(obj); System.out.println(tarr); //[{"name":"zhangsan","age":29},{"sex":"man","age":24,"name":"Ren"}] tobj.put("other", tarr); System.out.println(tobj); //输出结果 {"name":"zhangsan","age":29,"123":[{"name":"zhangsan","age":29},{"sex":"man","age":24,"name":"Ren"}]} /*json的遍历(单层)*/ String jsonString = tobj.toString(); JSONObject jsonObject = JSONObject.fromObject(str); Iterator keyIter = jsonObject.keys(); while( keyIter.hasNext()) { String key = (String)keyIter.next(); Object value = jsonObject.get(key); System.out.println(key + "--==" + value); } /*测试递归遍历json(多层)*/ System.out.println("---------------------------------------------------------"); getJsonValue(str); } /* * 递归遍历json所有子条目 */ public static String getJsonValue(String json) { if(!json.contains("{") && !json.contains("[") && json.contains(":")) { return json; } else if(json.equals("")){ return json; } else if(json.trim().charAt(0) == '{'){ String value = null; JSONObject jsonObject = JSONObject.fromObject(json); Iterator keyIter = jsonObject.keys(); while( keyIter.hasNext()) { String key = (String)keyIter.next(); value = jsonObject.get(key).toString(); getJsonValue(value); if(!value.contains("{") && !value.contains("[")) { System.out.println(key + " = " + value); } } return value; } else if(json.trim().charAt(0) == '[') { String value = null; JSONArray jsonArr = JSONArray.fromObject(json); for (int i = 0; i < jsonArr.size(); i++) { value = jsonArr.getJSONObject(i).toString(); getJsonValue(value); if(!value.contains("{") && !value.contains("[")) { System.out.println("----"+value); } } return value; } else { return "error"; } } }

2013-05-05

svn插件(集成Eclipse或MyEclipse)

svn插件包,可集成到Eclipse、MyEclipse. 集成方法: 将解压出来的dropins文件夹和myPlugin文件夹放到Eclipse或MyEclipse的安装目录下即可。 将dropins文件夹下的svn.link文件的内容修改Eclise的安装路径,如 path=E:\\eclipse\\myPlugin\\svn

2013-05-05

svn安装包(完整)

svn安装所需的所有文件,以及安装步骤详解

2013-05-05

oracle存储过程、游标、函数、PL/SQL块

包含oracle存储过程的增、删、查、改 %type、%rowtype的使用 自定义函数 PL/SQL块

2013-03-31

TCP-IP详解(完整版,共3卷)

TCP/IP详解 (中文完整版,共3卷),网络书籍中的九阴真经。 《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也适用于研究网络的技术人员。 《TCP/IP详解,卷2:实现》本书完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15 000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点,如多播、长肥管道支持、窗口缩放、时间戳选项以及其他主题等等。读者阅读本书时,应当具备卷1中阐述的关于TCP/IP的基本知识。本书适用于希望理解TCP/TP协议如何实现的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。 《TCP/IP详解,卷3:TCP事物..》第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握的四个基本方面: T/TCP (TCP事务协议),这是对TCP的扩展,使客户--服务器间的事务传输更快更有效和更可靠; HTTP (超文本传送协议),这是飞速扩展中的万维网的基础; NNTP (网络新闻传送协议),这是Usennet新闻系统的基础; UNIX域协议,这是在UNIX实现中应用非常广泛的一套协议。 与前面两卷一样,本书有丰富的例子和实现的细节,他们都是4.4BSD-Lite中的网络代码。 目录 ······ 第一章 概述 第二章 链路层 第三章 IP:网际协议 第四章 ARP:地址解析协议 第五章 RARP:逆地址解析协议 第六章 ICMP:Internet控制报文协议 · · · · · · (更多)

2013-01-20

ssh ,log4j实例

SSH框架整合实战项目,log4j完整的配置文件(log4j.perproties,log4j.xml),日志可输出到控制台、本地文件、数据库,提供多种配置方法,项目可直接运行,SQL语句在项目中。该项目对学习spring,struts2,hibernate,log4j框架有很大的帮助

2012-12-23

flex柱状图动态切换数据源实例

该flex应用程序演示了柱状图动态切换数据源 <mx:ColumnChart x="6" y="65" id="columnchart1" showDataTips="true" dataProvider="{list}" height="390" itemClick="onItemClick(event)"> <mx:horizontalAxis> <mx:CategoryAxis categoryField="Time"/> </mx:horizontalAxis> <mx:series> <mx:ColumnSeries displayName="苹果" yField="apple" click="columnseries1_clickHandler(event)"/> <mx:ColumnSeries displayName="桔子" yField="orange" /> &lt;!--<mx:ColumnSeries displayName="梨" yField="pear"/>--&gt; </mx:series> </mx:ColumnChart> <mx:Legend dataProvider="{columnchart1}" direction="horizontal"/>

2012-12-15

flex4.0继承实例代码

flash build4.0继承实例源代码,该例子演示了flex中类的继承关系,应用程序还演示了is 和as 关键字的用法 备注:1.该项目名为Ztest6, 2.mxml应用程序为t1_extends.mxml,

2012-12-15

jquery1.7中文API

Jquery1.7中文API,CHM格式,中文版,绝对好用,强力推荐

2012-12-02

java源代码几种常见的排序方法

java源代码几种常见的排序方法,冒泡排序,选择排序,插入排序,shell排序,归并排序,快速排序等

2012-12-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除