- 浏览: 391733 次
- 性别:
- 来自: 上海
-
最新评论
文章列表
map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。
HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度。HashMap最多只允许一条记录的key值为Null(多条会覆盖);允许多条记录的Value为 Null。非同步的。
TreeMap: 基于红黑树(Red-Black tree)的 NavigableMap 实现,能够把它保存的记录根据key排序,默认是按升序排序,也可以指定排序的比较器。TreeMap不允许key ...
MessageFormat用来格式化一个消息,通常为一个字符串。如:
String str = "I'm not a {0}, age is {1,number,short}", height is {2,number,#.#};
可以将str中的{0}用"pig"替换,{1,number,short}用数字8替换,{2,number,#.#}用数字1.2替换。
这样,我们将得到一个格式化好的字符串:I'm not a pig, age is 8, height is 1.2。
MessageFormat本身与语言环境无关,而与用户提供给Me ...
HTTPs链接比不加密的HTTP链接慢很多。
HTTPs链接和HTTP链接都建立在TCP协议之上。HTTP链接比较单纯,使用三个握手数据包建立连接之后,就可以发送内容数据了。
客户端首先发送SYN数据包,然后服务器发送SYN+ACK数据包,最后客户端发送ACK数据包,接下来就可以发送内容了。这三个数据包的发送过程,叫做TCP握手。
再来看HTTPs链接,它也采用TCP协议发送数据,所以它也需要上面的这三步握手过程。而且,在这三步结束以后,它还有一个SSL握手。
HTTP耗时 = TCP握手
HTTPs耗时 = TCP握手 + SSL握手
所以,HTTPs肯定比HTTP耗时 ...
LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)。
mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15
//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last ...
private String getValueByReflet(Object model, String paraName) throws Exception{
// 返回值
String value = "";
// 获取属性值
Field[] fields = model.getClass().getDeclaredFields();
for (Field field : fields) {
// 属性名称
String name ...
1 、 查看当天日期
select current_date();
2、 查看当天时间
select current_time();
3、查看当天时间日期
select current_timestamp();
4、查询当天记录
select * from 表名 where to_days(时间字段名) = to_days(now());
5、查询昨天记录
示例:
将 production 数据库中的 mytbl 表快速复制为 mytbl_new,2个命令如下:
CREATE TABLE mytbl_new LIKE production.mytbl;
INSERT mytbl_new SELECT * FROM production.mytbl;
第一个命令是创建新的数据表 mytbl_new , 并复制 mytbl 的数据表结构。
第二个命令是将数据表 mytbl 中的数据复制到新表 mytbl_new。
注:production.mytbl是指定要复制表的数据库名称为 production 。它是可选的。
...
lambda表达式可以这样定义:一段带有输入参数的可执行语句块。
Lambda语法详解
lambda表达式的一般语法:
(Type1 param1, Type2 param2, ..., TypeN paramN) -> {
statment1;
statment2;
//.............
return statmentM;
}
lambda表达式的各种简化版:
1. 参数类型省略–绝大多数情况,编译器都可以从上下文环境中推断出lambda表达式的参数类型。
(param1,param ...
Callable 和 Runnable 的使用方法大同小异, 区别在于: 1.Callable 使用 call()方法, Runnable 使用 run() 方法 2.call() 可以返回值, 而 run()方法不能返回。 3.call() 可以抛出受检查的异常,比如ClassNotFoundException, 而run()不能抛出受检查的异常。
Callable与Runnable
java.lang.Runnable,它是一个接口,在它里面只声明了一个run()方法:
public interface Runnable {
public abstract voi ...
视图的好处,可以主要分为四点:
第一点:使用视图,可以定制用户数据,聚焦特定的数据。
解释:
在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话,采购人员,可以需要一些与其有关的数据,而与他无关的数据,对他没有任何意义,我们可以根据这一实际情况,专门为采购人员创建一个视图,以后他在查询数据时,只需select * from view_caigou 就可以。
第二点:使用视图,可以简化数据操作。
解释:我们在使用查询时,在很多时候我们要使用聚合函数,同时还要显示其它字段的信息,可能还会需要关联到其它表,这时写的语句可能会很长,如果这个动作频繁发生的话,我们可以创建视图 ...
一、序列化和反序列化的概念
把对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为对象的过程称为对象的反序列化。
对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。
在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。
当 ...
使用log4j 2基本只需导入两个jar包:
log4j-core-xx.jar log4j-api-xx.jar
log4j 2.0与以往的1.x有一个明显的不同,其配置文件只能采用.xml, .json或者 .jsn。在默认情况下,系统选择configuration文件的优先级如下:(classpath为scr文件夹)
1.classpath下名为 log4j-test.json 或者log4j-test.jsn文件
2.classpath下名为 log4j2-test.xml
3.classpath下名为 log4j.json 或者 log4j.jsn文件
4 ...
解压war包可以使用unzip命令:
unzip project.war -d project
这样就在当前目录下解压project.war到project目录里面,参数-d的意思是创建project目录。
附:unzip其它参数说明
-x "文件列表" 解压文件,但不包含文件列表中指定的文件 ...
1.Stream初体验
Java中是这样定义Stream的:
Stream是元素的集合,这点让Stream看起来用些类似Iterator;
可以支持顺序和并行的对原Stream进行汇聚的操作;
可以把Stream当成一个高级版本的Iterator。原始版本的Iterator,用户只能一个一个的遍历元素并对其执行某些操作; 高级版本的Stream,用户只要给出需要对其包含的元素执行什么操作,比如“过滤掉长度大于10的字符串”、“获取每个字符串的首字母”等,具体这些操作如何应用到每个元素上,就给Stream就好了!
List<Integer> nums = Lists ...
命令式编程:命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现。
声明式编程:告诉“机器”你想要的是什么(what),让机器想出如何去做(how)。
如果我们花时间去学习(或发现)声明式的可以归纳抽离的部分,它们能为我们的编程带来巨大的便捷。首先,我可以少写代码,这就是通往成功的捷径。而且它们能让我们站在更高的层面是思考,站在云端思考我们想要的是什么,而不是站在泥里思考事情该如何去做。
SQL就是一种声明式编程。
转:http://kb.cnblogs.com/page/181030/