fastjson对Date的处理
fastjson对日期的序列化方式:
一种方法是通过注解
1 2 |
|
另一种是通过SerializeConfig:
1 2 3 4 5 6 |
|
json字符串中使用单引号:
1
|
|
fastjson对日期的序列化方式:
一种方法是通过注解
1 2 |
|
另一种是通过SerializeConfig:
1 2 3 4 5 6 |
|
json字符串中使用单引号:
1
|
|
2014年3月18日,Oracle终于发布Java8正式版。在新的版本里面加入了很多特性, 总共增加了55个新特性,其中最最吸引人的就是Lambdas表达式和Stream函数式编程,本文详细讲解这两个特性。
其他特性比如日期API,泛型,反射,注解,集合框架,并发,Nashorn引擎等等这里暂时就不详细介绍了。 具体可以参考:http://openjdk.java.net/projects/jdk8/features
昨天参加了Oracle的Java8宣讲活动,有幸目睹了Simon Ritter的风采,写个总结来分享下。
Java并发编程演变:
版本 | 发布年份 | 并发技术 |
1.4 | 2002 | java.lang.Thread |
5 | 2004 | java.util.concurrent(jsr166) |
6 | 2006 | Phasers, etc(jsr166) |
7 | 2011 | Fork/Join Framework(jsr166y) |
8 | 2014 | Project Lambda |
先来一个小例子见识下Java8的威力! Read on →
Xmemcached是基于java nio实现的高性能可扩展的memcached客户端。它的主要特点:
等等,更多信息请见wiki文档。废话不多讲,先上代码: Read on →
算法主要分为排序算法、搜索算法、图算法。图算法我用得不多,没有发言权,本文就不说了。
排序算法中最快的是快速排序算法,搜索算法中最快的是二分搜索算法。我也最喜欢这2 个算法。 因为它们是使用递归实现的,代码简洁清晰,效率又非常高。
根据我的理解,算法的本质就是数学。根据输入和设定的目标,采用有限的步骤实现输出。通常,使用计算机实现的算法,都会用到循环,这样才能发挥计算机高速运算的优势。
循环和递归是等效的,这已经被科学家所证明。数学上没有循环,只有递归的概念,因此使用递归代替循环表示算法有很多好处:
很多函数式语言甚至没有循环的概念和关键字,强迫你使用递归来实现循环。如,ErLang 。 递归也有一些缺点,递归使用栈来保存函数地址和参数、返回值,而栈是有一定大小的,过多的递归调用可能会造成栈溢出。但是,递归算法会容易转变为循环。我更欣赏递归的简洁,除非真的出现栈溢出的问题,我是不会使用循环的。
二分搜索算法
理论:
二分搜索算法用于针对已排序的集合进行搜索。
它的原理是:
经过上述的递归过程,最终将返回匹配元素的索引,或者是-1 ,表示找不到。 Read on →
一 准备安装文件
下载memcached与libevent的安装文件:
memcached下载地址:memcached-1.4.15.tar.gz
libevent下载地址:libevent-2.0.21-stable.tar.gz
二 具体安装步骤
1
|
|
1 2 |
|
我们将谜题定义为:包含一个初始位置,一个目标位置,以及用于判断是否是有效移动的规则集。
规则集包含两部分:计算从指定位置开始的所有合法移动,以及每次移动的结果位置。
下面先给出表示谜题的抽象类,其中的类型参数P和M表示位置类和移动类。根据这个接口,我们可以写一个简单的串行求解程序,该程序将在谜题空间Puzzle Space中查找,直到找到一个解答或者找遍了整个空间都没有发现答案。注:一个移动M代表一步
1 2 3 4 5 6 7 8 9 10 |
|
下面的PuzzleNode代表通过一系列的移动到达的一个位置,其中保存了到达该位置的移动以及前一个Node。只要沿着PuzzleNode链接逐步回溯,就可以重新构建出达到当前位置的移动序列。 Read on →
nginx在工作中已经有好几个环境在使用了, 今天自己也整理一份安装文档和nginx.conf配置选项的说明,留作以后参考。
负载均衡配置(包括健康检查)、缓存(包括清空缓存)配置实例,请参考:http://seanlook.com/2015/06/02/nginx-cache-check/
ssl加密请参考:http://seanlook.com/2015/05/28/nginx-ssl/
操作系统:CentOS 6.5_x86_64
我们编译安装nginx来定制自己的模块,首先安装缺少的依赖包:
1
|
|
这些软件包如果yum上没有的话可以下载源码来编译安装,只是要注意编译时默认安装的目录, 确保下面在安装nginx时能够找到这些动态库文件(ldconfig)。
从 http://nginx.org/en/download.html 下载稳定版nginx-1.8.0.tar.gz到/usr/local/src下解压。
为了后续准备我们另外下载2个插件模块: https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz —— 检查后端服务器的状态, https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/c78b7dd79d0d.zip (建议在/usr/local/src下解压后将目录重命名为nginx-sticky-module-ng-1.2.6) —— 后端做负载均衡解决session sticky问题。
Read on →操作系统:CentOS 6.5_x86_64
前提:提前准备好编译环境,防火墙和selinux都关闭
主机IP:两台机器,192.168.203.103、192.168.203.104
安装软件:jdk-8u51-linux-x64, apache-tomcat-8.0.24, tomcat-connectors-1.2.41, httpd-2.2.15, httpd-devel-2.2.15
1 2 3 |
|
下载JDK8的包
1
|
|
如果上述链接失效,请去官网下载最新的源码包。
1 2 3 4 5 6 |
|
得到以下输出,选择刚刚安装的jdk8即可: Read on →
python有着强大的表达式语法和函数特性,其中一个我的最爱便是装饰器。 在设计模式中,装饰器能够在不使用子类的情况下动态的修改函数、方法或类的功能。
当你需要扩展某个函数的功能却不想直接修改这个函数的时候,装饰器就可以派上用场了。 实现装饰器模式有很多种方法,但是python通过强大的语法支持来让这个变得相当容易。
在这篇文章中我将深入讲解Python的函数装饰器,并通过一系列的源码示例来彻底讲清楚这个东西。 所有例子都在Python2.7下运行通过,不过只需要稍作改变就可以运行在Python3上了, 甚至我猜测什么都不用改变都可以的,读者可以自己去试试。
本质上来讲,装饰器是以包装器形式工作的,其实就是在执行目标函数之前或之后加入自己的逻辑, 而不需要改变目标函数本身就可以增强它的功能,也就是说装饰了它。 Read on →
操作系统:CentOS 6.5 64位
在linux环境安装Hadoop之前,我们需要使用到ssh,所以要先安装ssh,并且创建一个hadoop用户
备注: 下面所有的命令中,以#开头的表示是root用户,以$开头的是普通用户
先切换到root用户,执行下列步骤
1 2 3 4 5 |
|