自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux常用命令大全

系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpui

2013-05-19 10:32:19 1214 1

转载 索引算法原理解析(B-tree以及磁盘存储原理)

刚开始学习的时候,百度去查,但发现好多说得太复杂不好理解,结合各个文章总结一下(建议大概看文字,不理解不要紧,然后再看图的执行步骤然后在结合文字,这样一切就清晰好多)B-tree,B是balance,一般用于数据库的索引。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。而B+tree是B-tree的一个变种,大名鼎鼎的MySQL就普遍使用B+tree实现其索引

2016-12-12 17:08:17 10429 1

转载 Spring整合JMS(一)——基于ActiveMQ实现

1.1     JMS简介       JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。对于消息的传递有两种类型,一种是点对点的,即一个生产者和

2016-10-26 16:06:06 629

原创 Linux命令发送Http的get或post请求(curl和wget两种方法)

Http请求指的是客户端向服务器的请求消息,Http请求主要分为get或post两种,在Linux系统下可以用curl和wget命令来模拟Http的请求。下面就来介绍一下Linux系统如何模拟Http的get或post请求。一、get请求:  1、使用curl命令:  curl “http://www.baidu.com” 如果这里的URL指向的是一个文件或者一幅图都可

2016-10-18 16:54:04 195050

原创 oracle sql loader命令与ctl写法

sql loader 的特点        oracle自己带了很多的工具可以用来进行数据的迁移、备份和恢复等工作。但是每个工具都有自己的特点。 比如说exp和imp可以对数据库中的数据进行导出和导出的工作,是一种很好的数据库备份和恢复的工具,因此主要用在数据库的热备份和恢复方面。有着速度快,使用简单,快捷的优点;同时也有一些缺点,比如在不同版本数据库之间的导出、导入的过程之中,总

2016-10-13 15:45:26 8182

转载 JMS-ActiveMQ:Java消息服务

导读:JMS:Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通.本文接受了JMS的基础知识,业务需求以及功能实现等。    JMS基础---》需求----》过程-----》安装-----》代码实现一、JMS基础:1.连接工

2016-10-12 20:46:08 537

转载 hibernate 常用方法介绍

一、hibetnateTemplate常用方法1、delete(Object entity) 删除指定的持久化实例在程序中一般先用    Assert.notNull和 Assert.isTrue断言entity是否为空 和 entity的id是否大于0若否则事务回滚。再用get(Class entityClass,Serializable id,LockMode lockMode

2016-09-26 16:34:02 3329

原创 用Map实现简单缓存

大致思路是用一个单例的Map实现,当然此Map得是线程安全的--ConcurrentHashMap

2016-07-06 16:30:37 2623

原创 java 文件压缩以及解压缩

类名:ZipUtil.javaimport java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java

2016-06-15 10:32:42 402

转载 JSON字符串转javabean,MorphDynaBean cannot be cast to ……

在json字符串转java bean时,一般的对象,可以直接转,如:一个学生类,属性有姓名、年龄等 Java代码  public class Student implements java.io.Serializable{        /**      * @Fields serialVersionUID : TODO     */

2016-03-04 15:33:02 711

转载 查询oracle表的信息(表,字段,约束,索引)

查询oracle表的信息(表,字段,约束,索引)1、查询出所有的用户表select   *   from   user_tables   可以查询出所有的用户表2、查询出用户所有表的索引select   *   from   user_indexes3、查询用户表的索引(非聚集索引): select   *   from   user_indexes where  

2016-02-17 19:24:55 1378

转载 editplus查找替换的正则表达式应用

editplus查找替换的正则表达式应用表达式        说明\t        制表符.\n        新行..        匹配任意字符.|        匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc".[]        匹配列表之中的任何单个字符. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]"

2015-10-14 14:13:33 587

原创 SVN合并(merge)的使用

使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的方法不甚了解,这才是硬伤。       分支用来维护独立的开发支线,在一些阶段,你可能需要将分支上的修改合并到最新版本,或者将最新版本的修改合并到分支。   

2015-07-15 21:02:32 1223

原创 Oracle启动/关闭 scott解锁 登录

oracle数据库安装成功后,首次使用的出现下面的问题,如图 这里只给出3种方法:l         Sql*plusl         OEM控制台l         Windows 控制台 1.以windows控制台为例   a.以管理员身份运行cmd命令   b.输入"sqlplus /nolog"   c.输入"conn/as sysdba"

2015-04-05 17:46:56 1262

原创 ssh指定登陆用户

指定登陆用户默认的,ssh 会尝试用当前用户作为用户名来连接。在上面的示例命令中,ssh 会尝试用用户名叫 pungki 的用户身份来登入服务器,这是因为用户 pungki 正在客户机上使用 ssh 客户端软件。假如目标主机上没有叫 pungki 的用户呢?这时你就必须提供一个目标主机上存在的用户名。从一开始就要指定用户名的,可以使用 -l 选项参数。$ ssh -l leni

2015-03-11 20:09:08 44963 1

原创 远程debug tomcat

如何用eclispe远程调试tomcat     tomcat是一种非常常见的java web应用服务器,有时候服务器可能并不是部署在本地,而是部署在远程其他的机器上,我们用eclispe该如何进行debug调试呢?下面小编就和大家分享一下解决的办法。        方法/步骤             1、在eclispe中新建web应用,项目名

2015-03-08 20:24:10 1164

原创 linux安装jdk以及环境变量配置

一、安装创建安装目录,在/usr/java下建立安装路径,并将文件考到该路径下: # mkdir /usr/java1、jdk-6u11-linux-i586.bin 这个是自解压的文件,在linux上安装如下: # chmod +x jdk-6u11-linux-i586.bin # ./jdk-6u11-linux-i586_rpm.bin

2015-03-04 16:36:33 748

原创 查看linux 32位还是64位

查看linux机器是32位还是64位的方法:file /sbin/init 或者 file /bin/ls/sbin/init: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped如果显

2015-03-04 15:05:45 1047

原创 详细介绍Spring事务管理

在学习spring事务管理时,我忍不住要问,spring为什么进行事务管理,spring怎么进行的事务管理?首先,为什么要进行事务,接下来说说spring是怎样进行事务管理的. 我们都知道spring提供两种管理事务的方式,一种是声明式事务,一种是编程式事务。Spring的声明式事务管理,基于Spring的AOP,不再需要不停地写commit,rollback,(但Spring仍然没有

2015-01-08 23:22:25 744

原创 DB2错误码与错误说明对照表

sqlcodesqlstate说明00000000SQL语句成功完成 01xxxSQL语句成功完成,但是有警告+01201545未限定的列名被解释为一个有相互关系的引用+09801568动态SQL语句用分号结束+10002000没有找到满足SQL语句的行+11001561

2014-12-10 14:36:11 5522

原创 DB2常用命令

DB2常用命令一、基础篇1、db2 connect to     --连接到本地数据库名db2 connect to user using --连接到远端数据库2、 db2 force application all      --强迫所有应用断开数据库连接3、db2 backup db db2name  --备份整个数据库数据,db2 restore db       

2014-12-10 14:26:26 3947

原创 java自带线程池和队列详细讲解

一:简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是限制系统中执行线程的数量

2014-11-26 22:37:53 777

原创 乐观锁与悲观锁的应用场景

锁( locking )         业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机 制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓 的

2014-11-19 21:21:03 4141

原创 DbVisualizer Personal 中文乱码问题的通用解决方法

在SQL Commander中,sql语句中如果有中文,显示是口。解决办法如下:在Tools->Tool Properties->General->Appearance->Fonts中,如下图设置。

2014-10-28 11:27:57 2469

原创 Java程序性能优化技巧

多线程、集合、网络编程、内存优化、缓冲、、spring、设计模式、软件工程、编程思想1、生成对象时,合理分配空间和大小new ArrayList(100);2、优化for循环Vector vect = new Vector(1000);for( inti=0; i<vect.size(); i++){   ...}for循环部分改写成:int size = ve

2014-10-21 00:11:28 1106

原创 Java 线程池的原理与实现

这几天主要是狂看源程序,在弥补了一些以前知识空白的同时,也学会了不少新的知识(比如 NIO),或者称为新技术吧。线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步控制等等。一提到池,我们会想到数据库连接池,但是线程池又如何呢?建议:在阅读本文前,先理一理同步的知识,特别是syncronized同步关键字的用法。关于我对同步的认识,要缘于

2014-10-20 23:48:44 839

原创 java多线程相关问题整理

ThreadLocal 是一个线程级别的局部变量,并非“本地线程”。ThreadLocal 为每个使用该变量的线程提供了一个独立的变量副本,每个线程修改副本时不影响其它线程对象的副本

2014-10-20 22:15:00 879

原创 Windows修改cmd字符集

在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。如果想正确显示UTF-8字符,可以按照以下步骤操作:1、打开CMD.exe命令行窗口2、通过 chcp命令改变代码页,UTF-8的代码页为65001ch

2014-06-12 14:06:46 11469

原创 电脑同时连接内网和外网route命令

如何让电脑同时连接多个网络呢?经常会遇到这样的情况,一台电脑如果连上了内网(局域网),外网(因特网)就不能访问了;要是连上了外网,内网就不能访问了。能否同时上内网和外网呢?答案是肯定的,其实一台可以同时连接多个网络,只需设置合理的路由。        本文将以实例的方式来讲解如何同时上内、外网。                 以本机为例,我的本机内网IP截图如下:

2014-03-16 23:48:21 20161 1

原创 java设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。只有精通了设计模式,才敢说真正理解了软件工程。可以说,设计模式是每一个架构师所必备的技能之一。作为一个面向对象设计程序员,只有精通了设计模式

2014-03-01 23:49:58 891

原创 内存溢出与垃圾回收

一、在java中如何让jvm总是内存溢出呢,之前想到的办法是不停的创建对象,由于java的垃圾回收器的作用,事实上并不能答道效果,最简单的办法是创建数组如下代码class Singleton { private byte[] a =new byte[200*1024*1024];private static Singleton singleton =new Singleto

2014-03-01 23:42:49 1537

原创 《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 651

原创 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

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关注的人

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