Java关于对象的遍历,类的反射

Class类是整个Java反射机制的源头,Class类本身表示Java对象的类型,可通过一个Object对象的getClass()方法取得一个对象的类型,此函数返回的就是一个Class类。

Field提供有关类或接口的属性的信息,以及对他的动态访问权限。
Method提供关于类或接口上的方法的信息。

1
2
3
4
5
6
7
8
9
Ojbect obj = new Object();
Class<? extends Object> objClass = obj.getClass();
Field[] fields = objClass.getDeclaredFields();
for (int k = 0; k < fields.length; k++) {
String fieldName = fields[k].getName();
Method m = obj.getClass().getMethod("get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1));
Object value = m.invoke(obj);
System.out.println(fieldName + " : " + value);
}

Windows环境下mongodb配置

<1>首先安装mongodb不多说了。

<2>配置:
1.在自定义的工作空间下新建Data文件夹
2.在Data下新建db和log文件夹
3.在log文件夹下新建MongoDB.log文件

<3>开启Mongodb Service
通过cmd找到mongodb的安装路径并进入bin文件夹下

1
2
3
#".....\Data\db"为配置中第二项的路径
#".....\Data\log\MongoDB.log"为配置中第三项的路径
mongod -dbpath ".....\Data\db" -logpath ".....\Data\log\MongoDB.log" -install -serviceName "MongoDB"

开启服务 net start mongodb
关闭服务 net stop mongodb

<4>删除Mongodb Service

1
2
3
#".....\Data\db"为配置中第二项的路径
#".....\Data\log\MongoDB.log"为配置中第三项的路径
mongod -dbpath ".....\Data\db" -logpath ".....\Data\log\MongoDB.log" -remove -serviceName "MongoDB"

关于时间的处理,以及MyBatis中对时间的处理

java

1
2
3
// String -> Date
SimpleDateFormat sdf = new SimpleDateFormat("");
Date date = sdf.parse(dateString);

1
2
3
// Date -> String
Date date = new Date();
String dateString = (new SimpleDateFormat("")).format(date);
1
2
3
4
5
// 在日期上增加数个整月
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.MONTH, 1);
Date date = cal.getTime();

mysql

1
2
3
4
5
# 时间转换
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
DATE_FORMAT(NOW(),'%m-%d-%Y')
DATE_FORMAT(NOW(),'%d %b %y')
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')

mybatis

1
2
3
4
<![CDATA[>]]>
<![CDATA[>=]]>
<![CDATA[<]]>
<![CDATA[<=]]>

SQL中获取前后一个月

1
2
3
date_add(NOW(), interval 1 MONTH)
#date_add()增加
#date_sub()减少

month月份;minute分钟;second秒;

SQL中UNION和UNION ALL操作符

UNION操作符用于合并两个或多个SELECT语句的结果集。
UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。
同时,每条SELECT语句中的列的顺序必须相同。
UNION操作符选取的是不同的值。如需要重复的值,需要用UNION ALL。

1
2
3
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

Java注释@interface的用法

注解大都用在开发框架中。
Java用 @interface Annotation{} 定义一个注解 @Annotation,一个注解是一个类。
用@Retention(RetentionPolicy.CLASS)修饰的注解,表示注解的信息被保留在class文件(字节码文件)中当程序编译时,
但不会被虚拟机读取在运行的时候;
用@Retention(RetentionPolicy.SOURCE )修饰的注解,表示注解的信息会被编译器抛弃,不会留在class文件中,注解的
信息只会留在源文件中;
用@Retention(RetentionPolicy.RUNTIME )修饰的注解,表示注解的信息被保留在class文件(字节码文件)中当程序编译
时,会被虚拟机保留在运行时,所以他们可以用反射的方式读取。

定义个一注解@MyTarget,用RetentionPolicy.RUNTIME修饰;

1
2
3
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTarget{
}

注解@Target也是用来修饰注解的元注解,它有一个属性ElementType也是枚举类型,
值为:ANNOTATION_TYPE,CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PACKAGE,PARAMETER,TYPE
如@Target(ElementType.METHOD) 修饰的注解表示该注解只能用来修饰在方法上。

1
2
3
4
5
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTarget{
String value() default "val";
}

Linux中crontab定时任务

crontab命令的功能是在一定的时间间隔调度一些命令的执行

文件/etc/crontab中每行任务的描述格式如下:

1
2
3
4
5
6
7
8
9
minute - 从0到59的整数
hour - 从0到23的整数
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
command - 需要执行的命令(或执行自定义脚本的命令)
root表示以root用户身份来运行
run-parts表示后面跟着的是一个文件夹,要执行的是该文件夹下的所有脚本

crontab服务的启动关闭

1
2
3
4
sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

Java中的native关键字

Native所定义的方法不能有方法体,他所定义的方法实现是由非java语言实现,比如C语言等。

例如:

1
public native int hashCode();

标识符native可以与所有其它的java标识符连用,但是abstract除外。这是合理的,因为native暗示这些方法是有实现体的,
只不过这些实现体是非java的,但是abstract却显然的指明这些方法无实现体。
一个native方法可以返回任何java类型,包括非基本类型,而且同样可以进行异常控制。这些方法的实现体可以自制一个异常并且将其抛出,
这一点与java的方法非常相似。native的存在并不会对其他类调用这些本地方法产生任何影响,实际上调用这些方法的其他类甚至不知道它
所调用的是一个本地方法。JVM将控制调用本地方法的所有细节。

当一个类第一次被使用到时,这个类的字节码会被加载到内存,并且只会回载一次。在这个被加载的字节码的入口维持着一个该类所有方法描述
符的集合,这些方法描述符包含这样一些信息:方法代码存于何处,它有哪些参数,方法的描述符等等。
如果一个方法描述符内有native,这个描述符块将有一个指向该方法的实现的指针。这些实现在一些DLL文件内,但是它们会被操作系统加载
到java程序的地址空间。当一个带有本地方法的类被加载时,其相关的DLL并未被加载,因此指向方法实现的指针并不会被设置。
当本地方法被调用之前,这些DLL才会被加载,这是通过调用java.system.loadLibrary()实现的。

1
本文转载自:http://blog.csdn.net/jiakw_1981/article/details/3073613

Vue中Keep-Alive缓存的使用

Vue提供了一个keep-alive组件用来缓存组件。
首先在vue的主页路由上添加keep-alive,并且判断是否在路由开启keepAlive

1
2
3
4
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

在需要缓存的页面路由上添加标志位

1
keepAlive: ture

vue中生命周期相关的有:created,mounted,updated,activited,destroyed。
在页面上可以添加activited钩子函数。
针对keep-alive标签,使用keep-alive在单页中前进后退只触发activited。

1
2
3
4
5
6
created() {
method_1();
},
activited() {
method_2();
}

IDEA生成序列化ID

File -> setting -> Inspections -> Serializationissues

1
2
3
将其展开后将
serialzable class without serialVersionUID
打上勾