存档

‘高级民工’ 分类的存档

一个弱密码字典

2013年8月19日 1 条评论

这个弱密码字典收集了之前csdn、k7k等网站泄露的账号密码信息约53万,最近蹭网的时候用此密码字典秒破两个wpa热点。嘿嘿!

下载地址 <—猛击

分类: 高级民工 标签:

JAXB简介及教程

2013年6月3日 没有评论

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。JAXB 2.0是JDK 1.6的组成部分。JAXB 2.2.3是JDK 1.7的组成部分。

jaxb为了应对各种情况的bean到java类的映射定义了一套注解机制,下面简单说明几个常用的注解及其作用:

@XmlAccessorType

控制字段或属性的序列化。XmlAccessType.FIELD表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML。其他值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。一般情况如果没有指定XmlAccessType注解可能会导致一个异常的产生:

Exception in thread "main" com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
Class has two properties of the same name "nodes"
	this problem is related to the following location:
		at public java.util.Map com.zznode.e2esqm.core.diagnosis.schema.DiagnosisSchema.getNodes()
		at com.zznode.e2esqm.core.diagnosis.schema.DiagnosisSchema
	this problem is related to the following location:
		at private java.util.Map com.zznode.e2esqm.core.diagnosis.schema.DiagnosisSchema.nodes
		at com.zznode.e2esqm.core.diagnosis.schema.DiagnosisSchema

此种情况只需在类上添加注解@XmlAccessorType(XmlAccessType.FIELD)即可解决

@XmlJavaTypeAdapter

使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。需要注意的是XmlAdapter有泛型定义,其第一个泛型参数为jaxb可以直接识别的bean即由marshal()方法return的类型,第二个泛型参数为unmarshal()方法返回的类型.
@XmlElementWrapper

对于数组或集合(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。例如:
一个javabean 包含一个List属性,正常情况生成的xml片段如下,

<rs id="1"/>
<rs id="2"/>
<rs id="3"/>

如果加上本XmlElementWrapper注解则会变为如下形式

<list>
   <rs id="1"/>
   <rs id="2"/>
   <rs id="3"/>
</list>

@XmlRootElement
将Java类或枚举类型映射到XML元素。

@XmlElement
将Java类的一个属性映射到与属性同名的一个XML元素。

@XmlAttribute
将Java类的一个属性映射到与属性同名的一个XML属性。

另外默认情况jaxb下从xml解析到javabean的时候是必须要注解XmlRootElement的存在,下面提供一种方式让bean不使用XmlRootElement注解,代码片段如下:

JAXBContext context = JAXBContext.newInstance(clazz);
Unmarshaller unmarshaller = context.createUnmarshaller();
 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
ByteArrayInputStream in = new ByteArrayInputStream(xml.getBytes());//xml为对应的需要转换为bean的xml字符串
Document doc = db.parse(in);
Node fooSubtree = doc.getFirstChild();
 
JAXBElement<?> el = unmarshaller.unmarshal( fooSubtree, clazz);
el.getValue();//这个就是bean的实例

当让以上方法只能应对简单bean和xml的互转,如果有复杂的还是需要通过注解来处理才能达到预期效果.

分类: 高级民工 标签:

感知哈希算法

2013年2月9日 2 条评论

一、原理讲解
实现这种功能的关键技术叫做”感知哈希算法”(Perceptual Hash Algorithm), 意思是为图片生成一个指纹(字符串格式), 两张图片的指纹越相似, 说明两张图片就越相似. 但关键是如何根据图片计算出”指纹”呢? 下面用最简单的步骤来说明一下原理:

《1》、第一步 缩小图片尺寸
将图片缩小到8×8的尺寸, 总共64个像素. 这一步的作用是去除各种图片尺寸和图片比例的差异, 只保留结构、明暗等基本信息.

《2》、第二步 转为灰度图片
将缩小后的图片, 转为64级灰度图片.

《3》、第三步 计算灰度平均值
计算图片中所有像素的灰度平均值

《4》、第四步 比较像素的灰度
将每个像素的灰度与平均值进行比较, 如果大于或等于平均值记为1, 小于平均值记为0.

《5》、第五步 计算哈希值
将上一步的比较结果, 组合在一起, 就构成了一个64位的二进制整数, 这就是这张图片的指纹.

《6》、第六步 对比图片指纹
得到图片的指纹后, 就可以对比不同的图片的指纹, 计算出64位中有多少位是不一样的. 如果不相同的数据位数不超过5, 就说明两张图片很相似, 如果大于10, 说明它们是两张不同的图片.

分类: 高级民工 标签:

Eclipse Virgo OSGI Bundle开发环境搭建

2013年1月8日 1 条评论

  这几天在搞基于virgo的插件开发,也在整合一些基础包以及把以前自己写的代码转换成Bundle.网上对这方面的开发环境的搭建也有比较多的介绍,但根据实际使用情况来看不是很好用,这里把开发环境需要的工具,以及在开发过程中遇到的问题做一些说明介绍,所谓工欲善其事必先利其器,要有一个好的开发效率当然需要一个好用的开发环境。

   准备工具:
1.Eclipse Virgo Server
下载地址:http://www.eclipse.org/virgo/download/ 
下载最新版的就可以了.这里我选择的基于tomcat的版本..当然有需要的话可以选择其他版本。

2.Spring Tool Suite
不一定非要选择这个IDE,但是选择有要求,主要是Virgo Tool Eclipse开发插件的原因,具体要求看:http://wiki.eclipse.org/Virgo/Tooling
另外Spring Tool Suite按要求选择2.9.x别选高了,高版本的3.1用起是各种不爽,非常蛋疼。
另外根据开发插件的文档说明直接安装update site:http://download.eclipse.org/virgo/release/tooling
直接通过ide来安装就可以了,具体的可以看插件wiki.
安装之后添加一个Virgo的Server出来环境就差不多ok了。
创建项目:new project->other->virgo->bundle project.

3.问题
目前遇到的问题主要有一下几个:
1)  在virgo的repository/usr目录下加入的bundle项目中需要依赖他们,但还是找不到加入的包,这时可以尝试在server中刷新。server-config

2)通过上一步之后还是找不到bundle里的包,这个时候可以不管ide直接把jar引入到项目中让项目编译成功。
3)开发过程中发布到server中的bundle的版本号为0.0.0这个是由于编译出错导致的,原因是某个包没有加入到classpath.
4)在工作空间中的项目之间有依赖关系,而通过manifest.mf文件中import package还是找不到的情况,建议直接在Build Path中引用项目,总之首先保证项目能编译,然后再去考虑依赖关系.

通过这两天的开发感觉Bundle的开发有点烦,最主要一点就是依赖的问题,随时找不到依赖bundle或者package,以及开发工具有时候也会出现一些问题.另外就是怎么弄都有一堆红叉叉在项目上各种不爽,不过现在对bundle的开发也习惯自动屏蔽这些红色的叉叉了…..

分类: 高级民工 标签: ,

Eclipse Virgo加载OSGI Fragment的方法..

2013年1月7日 没有评论

  首先在OSGI中Fragment是没有自己的ClassLoader的,加载Fragment是需要其Fragment-Host申明的Bundle的ClassLoader去加载。而加载的机制是在Bundle加载之前Fragment已经被安装了,但是通过virgo的deploy大多数时候是没有办法保证fragment被加载了。这样的话只需要把fragment放到virgo的repository\usr目录下就可以了,具体关于这个目录的说明可以参考virgo的文档。Watched Repositories

分类: 高级民工 标签: ,