guqing

毕生所求无它,爱与自由而已

如何使用js实现哈希表

百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换

亲测好用,精度高,用了很久,特地分享出来,原文连接没有了

一文搞懂反射泛型和反射注解以及通过注解方式写一个BaseDao

定义注解类(框架的工作) 使用注解(我们的工作) 读取注解(反射读取注解)(框架的工作) 注解其实也是一个类 如何定义注解类 class A{}定义类 interface A{}定义接口 @interface A{} 定义注解 天下所有的注解都是Annotation的子类 不用特意标记默认就是 如何使用注解 首先自定义一个注解: 使用自定义MyAnnotation注解 注解的作用目标 由上述使用注解的例子可以看出,注解的作用目标有一下几种: 类 方法 构造器 参数 局部变量 包 注解的属性(依赖文档了解) 定义属性 格式:类型 属性名() 例如: 使用注解时给属性赋值 注解属性的默认值 名为value的属性的特权 注解属性的类型 注解的作用目标限定以及保存策略限定 让一个注解他的作用目标只能在类上不能在方法上,这就叫做目标的限定 在定义注解时给注解添加注解叫做@Target 保留策略 源代码文件(SOURCE):注解只在源代码中存在,在编译时就别忽略了(无法反射) 字节码文件(CLASS):注解在源代码中存在,编译时会把注解信息放到class中存在,但JVM在类时会被忽略加载注解(无法反射) JVM中(RUNTIME):注解在源代码,字节码文件中存在,并且在JVM加载类时会把注解加载到JVM内存中(它是唯一可以反射的注解) 限定注解的而保留策略 读取注解 反射泛型信息: 通过上述描述的步骤既可以获的类型参数 反射注解 上面讲述了如何通过反射来得到类的类型,那么要通过反射得到注解,要求注解的保留策略必须是RUNTIME 反射注解需要从作用目标开始反射 类上的注解,需要使用Class来获取 方法上的注解需要Method来获取 构造器上的注解需要Constructor来获取 成员山谷的需要使用Field来获取 一下拥有可以获取注解的方法: Class: Method、Constructor、Field有共同的父类:AccessibleObject 它们都有一个方法: Annotation getAnnotation(Class),返回目标上指定类型的注解 Annotation[] getAnnoations(),返回目标注解上所有的注解 定义一个注解MyAnno1 ,在定义一个类A来使用注解 通过下面的代码来演示如何获得作用在A类上的注解 通过上述内容,我们了解了什么是如何通过反射获取类型参数,以及什么是注解,注解该如何通过反射获取,那么作为练习,下面就完成通过注解来写一个BaseDao的实验 完成注解案例 首先我们根据实验的分析,创建注解类 为什么没有数据库名的注解呢,众所周知,连接数据库需要指定库名,用户名和密码才能访问,这些信息都是配置在外部的配置文件中的,比如JDBC、Hibernate或者其他,于此同时还会使用数据库连接池比如DBCP、C3P0连接池等,那么数据库名及用户名密码就会配置在这些的配置文件当中,比如可以写一个jdbc.properties,所以是不需要指定库名的注解的而且这中信息还是多个对象公用的。

如和让微信小程序实现对象属性双向数据绑定

核心方法 写一个下面的js方法,名称可以任意取,用于绑定input输入 其中需要更改的地方只有applyFormObject,这是一个在data中定义的对象 通过dataset获取到自定义的data-xxx属性值,该属性值就是input绑定的属性名称,比如data-name="phone"就等同于<input type="text" name="phone">中的name属性,var name = dataset.name;获取到属性的值以后在拼接对象名称,通过that.setData方法完成对象属性赋值,便实现了对象属性的双向数据绑定。

ArcGIS 10.2 安装与破解

进入ArcGIS安装界面之后,点击“Setup”安装ArcGIS License Manager项,如下图所示。 在弹出的安装向导中一直点击“Next”安钮进行ArcGIS License Manager安装,如下图所示。 安装 ArcGIS Desktop 10.2 在安装界面中点击“Setup”安装ArcGIS for Desktop项,如下图所示。 在弹出的安装向导中一直点击“Next”安钮进行ArcGIS 10.2安装,如下图所示。

Java 二维码生成工具类

首先导入maven依赖,这里使用的是google的一个多种格式的1D/2D条码图像处理库zxing 然后写一个BufferedImageLuminanceSource 类 在写一个QRCodeUtil类,二维码的尺寸大小变量为QRCODE_SIZE根据自己的需要更改,宽高为QRCODE_SIZE * QRCODE_SIZE,其中encode的重载方法是将字符串编码为二维码的方法,decode的一系列重载方法则是解析二维码内容的方法 至于以上两个工具类代码并非本人所写,用了好久,已经不知道是谁写的了找不到了,感谢这位朋友

设计模式之工厂模式

如何实现工厂模式 还是上面的例子,StudentDao: 创建StudentDao接口 创建StudentDao接口的实现类 写一个beans.properties配置文件,里面包含着具体创建哪一个实现类 首先我们需要造一个工厂,BeanFactory用于生产对象 根据工厂获取实例对象 输出结果: 假设现在需要更改StudentDaoImpl的实现逻辑,那么我们不需要去改它,重新创建一个StudentDaoImpl2 然后在beans.properties的配置文件中更换实现类为StudentDaoImpl2 这样就可以了,其他的我们什么都不需要改变,再次执行测试类,可以看到 这就是工厂模式。

Git 基础使用

分支的重要操作 删除分支 git不允许删除当前所处的分支 如果要删除的分支并没有完全被合并那么要删除就需要使用 -D选项 创建分支并切换的简写命令为: 使用git checkout -可以回退切换分支,例如: 使用git merge 分支名可以将指定的分支合并到当前分支上 例如我在master分支上创建了一个文件名叫test_branch.txt内容为: 然后再创建了一个叫test_branch2的分支在此分支上创建一个相同名称的test_branch.txt内容为: 此时切换回master分支使用git merge test_branch2 如果此时发生冲突,需要手动解决然后用 git add 冲突的文件名告诉git冲突已经解决了然乎使用git commit完成最终合并 分支中的HEAD 使用 可以将已经在暂存区中的文件挪出来即从暂存区删除恢复原来的状态 在只有一个分支的情况下HEAD指向的是当前分支而master指向提交 如果此时在master分支上在创建一个dev分支并切换到dev分支上 如果此时在dev分支上做一次提交那么状态又如下所示: 总结而言就是HEAD是指向当前分支的,而当前分支指向提交 如果将dev分支合并到master在没有任何冲突的情况下的状态如下图: 产生冲突后分支合并冲突: 分支进阶与版本回退 fast-forward 如果可能,合并分支时Git会使用fast-forward模式 在这种模式下,删除分支时会丢掉分支信息 合并时加上--no-ff参数会禁用fast-forward,这样会多出一个commit id 查看log git add .和git commit -m的简写形式 版本回退 回退到上一版本 如果想回退两个版本 回退之后还可以通过commitId前进,通过commitId可以回退到任何提交例如: 返回到某一个版本 例如: 然后就可以通过cmmitId进行版本切换 checkout进阶与stash 使用下面的命令,可以丢弃修改(未添加到暂存区的修改) checkout进行版本切换 但是使用checkout切换版本属于游离状态与之前的版本切换是不一样的。