2015-09-30
Google Java编程风格指南

前言这份文档是GoogleJava编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则,我们才认为它符合Google的Java编程风格。与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题,同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则,对于那些不是明确...

Read More
 2015-08-09
Project Manage Experience Summery

近期,好屋中国官网app项目(下称“官网app”)如期上线,项目一期正式告一段落。这一期官网app项目核心是一个面向C端用户的新房二手房交易app,工作量也主要集中在app及其后台服务。但这一期项目相关联的系统及业务却非常广泛,包括HOSS、合伙人app、内部合伙人、外部合伙人、助理宝、抢钱宝,基本上关于新房二手房各个产品线上的产品和系统都有新增需求和业务变更,整个工程的复杂度可想而知。系统的设计开发测试及上线准备持续大约一个月,执行过程也遇到了大大小小的包括技术、业务、管理等等各种问题,但总的来说比较顺利,产品质量也比较高。这与各个小组成员的辛勤劳动和密切配合是密不可分。这期项目中,我带领官网app和合伙人app(包括助理宝、抢钱宝等)团队,主要完成了官网app后台(包括官网app运营)及合伙人(包括内部合伙人 外部合伙人)、助理宝、抢钱宝和抢客宝的新系统研发及已有系统的变更和维护。团队人数12个人以上,其中有一半以上成员是刚加入的新员工,时间紧,任务重;另外,第一次集成单点登录,第一次通过公共服务集成在线支付;再加上,项目过程中,合伙人及助理宝业务需求并行开发和上线。团队大,业务复杂,对我来说都是第一次,因此,要管理好团队按时保质保量按时上线,对我也是不小的挑战。在此,我对这次项目做一个小小的总结,总结经验,以为下一次项目执行更臻完善;吸取教训,以防再犯同样的错误。

Read More
 2015-07-19
Redis Learning

Redis 是一个 Key-Value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)和 zset(有序集合)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从)同步。

Read More
 2015-06-27
Linux Learning

这是一篇关于linux常用命令的博文,主要记录我在学习中遇到的一些容易忘记的linux命令、用法以及注意点。不过,这里需要说明的是,我并不是一个linux的初学者。那么,为什么会有这篇博客呢?原因自己的linux学习基础不扎实,在有了几年linux系统使用经验后,仍然觉得力不从心。然而linux是一个优秀的且免费自由的操作系统这一点是毋庸置疑的,我当然希望自己能够更熟练、更高效的使用linux。所以,从今天开始,重新启程,从linux基础起,对linux的基础知识和用法作进一步的学习和研究,使基础的知识更扎实,同时捡起自己遗漏的知识点,并一一记录。所谓“学而时习之,不亦说乎”!

Read More
 2015-06-20
code quality improve

坏的代码重复的代码(Duplicated Code)改善方法Extract MethodPull Up MethodTemplate MehtodExtract Class过滤器面向切面统一的异常处理过长的函数(Long Method)每当感觉需要以注释说明点什么的时候,可以把需要说明的东西写进一个独立的函数,并...

Read More
 2015-04-22
设计模式与原则

设计模式的定义:在某情境下,针对某问题的某种解决方案。但是满足此定义的方案并不一定是设计模式,设计模式要求解决方案必须是可复用的。 设计模式的作用大体上是:优化结构,消除依赖,将面向过程转为面向对象。按照功能,一般可以将设计模式分为创建型行为型结构型三大类。 本文将列举这些设计模式,并对每个设计模式进行简要描述,描述格式为:名称,定义,案例,适用性,结构,效果,应用,相关。

Read More
 2015-04-09
RMI

Java RMI 指的是远程方法调用 (Remote Method Invocation)。RMI能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法, 其威力体现在它强大的开发分布式网络应用的能力上,它可以被看作是RPC的Java版本。

Read More
 2015-01-22
shell

Shell有两种执行命令的方式:交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。几种shell:bash(默认),sh,...

Read More
 2015-01-11
make

代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)指定规则进行编译,默认为当前目录下的Makefile文件$ make -f rules.txt或者make --file=rules.txtMakefile 文件结构Makefile文件由一系列规则(...

Read More
 2014-12-21
WebService

WSDLdefinitions 为根节点,属性为name:WS 名称,默认为“实现类 + Service”targetNamespace:WS 目标命名空间,默认为“WS 实现类对应包名倒排后构成的地址”definitions的5个子节点types:描述了 WS 中所涉及的数据类型portType:定义了 WS ...

Read More
 2014-11-18
Java Concurrent

线程拥有通过程序运行的独立的并发路径,并且每个线程都有自己的程序计数器,称为堆栈和本地变量。线程存在于进程中,它们与同一进程内的其他线程共享内存、文件句柄以及进程状态。JDK 5.0 中的并发改进可以分为三组:JVM 级别更改。大多数现代处理器对并发对某一硬件级别提供支持,通常以 compare-and-swap...

Read More
 2014-10-09
Bitmap

bitmap所谓bitmap就是用一个bit位来标记某个元素对应的value,而key即是这个元素。由于采用bit为单位来存储数据,因此在可以大大的节省存储空间算法思想32位机器上,一个整形,比如 int a; 在内存中占32bit,可以用对应的32个bit位来表示十进制的0-31个数,bitmap算法利用这种思...

Read More
 2014-09-19
八种排序

1.直接插入排序基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。/** * 形象描述:踢馆 * 直接插入排序(从小到大) * @param src 待排序的数组 */pub...

Read More
 2014-08-20
Java虚拟机

一、走近JAVA第一章、走近JAVAjava技术体系1.1 jdk1.7的主要特性G1收集器JSR-292对非JAVA语言的调用支持ARM指令集?Sparc指令集?新语法:原生二进制(0b开头),switch支持字符串,操作符,异常处理改进,简化变长参数方法调用,面向资源的try-catch-finally多核并...

Read More
 2014-06-26
Effective Java

一 创建和销毁对象1.考虑用静态工厂方法代替构造器静态工厂方法的优势:1.有名称,可以见名知义了解获取对象的特点2.不必每次调用时都创建一个对象3.可以返回原类型的任何子类型对象4.创建参数化类型实例时,可以使代码更简洁(右边无需再写一遍)5.不可变对象可以进行缓存,以提升性能2.遇到多个构造器参数时要考虑用构建...

Read More
 2014-06-10
SSH

登陆-p指定主机的端口 $ ssh -p port user@host默认端口为22$ ssh user@host默认使用本机用户名$ ssh host过程远程主机接收到用户的登陆请求,把自己的公钥发给用户用户使用这个公钥,将密码加密后发回来远程主机用自己的私钥,解密登陆密码,如果密码正确,就同意用户登陆此处如...

Read More
 2014-05-07
Linux计划任务

atat 是个可以处理仅运行一次就结束计划任务的命令,不过要运行 at 时, 必须要有 atd 这个服务的支持才行。[root@www ~]# /etc/init.d/atd restart使用 at 这个命令来产生所要运行的任务,并将任务以文件的方式写入 /var/spool/at 目录内,该任务便能被 atd...

Read More
 2014-04-15
Custom Fileupload

本文的目的是简要说明如何编写一个文件上传组件,使他的功能类似 commons-fileupload, 并在结尾处提供了完整代码的获取方式。HTTP本文讨论的是基于 HTTP 协议的文件上传,下面先来看看 HTTP 请求的真面目。首先,用 JavaSe 类库中的 Socket 搭建一个超简单的服务器,这个服务器只有...

Read More
 2014-04-09
算法小汇

三色旗问题描述:一条绳子上悬挂了一组旗帜,旗帜分为三种颜色,现在需要把旗帜按顺序将相同的颜色的放在一起,没有旗帜的临时存放点,只能在绳子上操作,每次只能交换两个旗帜例如:原本旗帜的顺序为rwbrbwwrbwbrbwrbrw需要变成bbbbbbwwwwwwrrrrrr解决思路:遍历元素,如果元素该放到左边就与左边交...

Read More
 2014-02-23
IP 类型

分类IP通过地址开头判断类型,将以 0,10,110 开头的地址分为ABC三类将ip转换成十进制后A类地址第一个字节在 0 - 127 之间,B类地址第一个字节在 128 - 191 之间C类地址第一个字节在 192 - 223 之间然后剩下的位被分为网络号与主机号,主机有两个特殊的值:主机号全部为0的ip代表一...

Read More
 2014-02-20
Linux启动流程

1.加载内核操作系统接管硬件以后,首先读入/boot目录下的内核文件。2.启动初始化进程内核文件加载以后,就开始运行第一个程序/sbin/init,它的作用是初始化系统环境。3.确定运行级别许多程序需要开机启动。它们在Windows叫做服务(service),在Linux就叫做守护进程(daemon)。init进...

Read More
 2014-02-13
Linux进程管理

&将命令放在后台运行command &此时将会产生1个任务编号与一个PID,命令执行完成后将会在前台出现提示后台执行的任务如果存在信息输出,最好将其写入到文件,否则将会在前台显示,影响操作[ctrl]-z将命令放在后台暂停此时将会产生1个任务编号及其命令jobs查看后台任务状态[root@www ...

Read More
 2014-02-08
Linux权限管理

chmod改变权限数字法root@www ~]# chmod [-R] xyz 文件或目录选项与参数:xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更符号法chmodugoa+(加入) -(除去) =(...

Read More
 2014-01-25
Linux目录与文件

.代表此层目录..代表上一层目录-代表前一个工作目录~代表『目前使用者身份』所在的家目录~account代表 account 这个使用者的家目录(account是个帐号名称)cd变换目录pwd显示目前所在的目录[root@www ~]# pwd [-Pl]选项与参数:-P:显示出真实的路径,而非使用连结 (lin...

Read More
 2014-01-16
XML

XML 文档可以包含非 ASCII 字符,为了避免错误,需要规定 XML 编码,或者将 XML 文档存为 Unicode,两者需要保持一致。必须包含根元素,该元素是所有其他元素的父元素。所有元素都必须有关闭标签对大小写敏感属性值须加引号,如果属性本身包含引号,就用单引号包围属性< 和 & 是非法的,...

Read More
 2014-01-05
VIM

1.切换模式i → Insert 模式,在光标前插入ESC → 回到 Normal 模式,Normal 模式下,所有键都是功能键:help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(退出帮助需要输入:q)2.存盘 & 退出:e file → 打开一个...

Read More
 2014-01-02
Linux打印

echoecho是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。参数-n 不要在最后自动换行-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\a 发出警告声;\b 删除前一个字符;\c 最后不加上换行符号;\f 换行但光标仍旧停留在原来的位置;\n 换行且光标移至行首;\r ...

Read More
 2013-12-19
Java NIO

核心ChannelsBuffersSelectors概述Channel 和 Buffer基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。这里有个图示:Channel和Buffer有好...

Read More
 2013-12-07
Java IO

IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根...

Read More
 2013-11-17
为什么要用补码表示负数

抛开二进制不谈,我们先来看看10进制假设世界上没有负号且数字最大只有3位,我们要把 0~999 分成两部分,一部分表示负数,一部分表示正数,而且不影响他们的运算规律,应当如何去做?首先,最大的负数加上一等于零,那么用999表示最大的负数再合适不过,现在需要正负数各一半,那么正数部分应当为 0 ~ 499,负数部分...

Read More
 2015-04-22
设计模式与原则

设计模式的定义:在某情境下,针对某问题的某种解决方案。但是满足此定义的方案并不一定是设计模式,设计模式要求解决方案必须是可复用的。 设计模式的作用大体上是:优化结构,消除依赖,将面向过程转为面向对象。按照功能,一般可以将设计模式分为创建型行为型结构型三大类。 本文将列举这些设计模式,并对每个设计模式进行简要描述,描述格式为:名称,定义,案例,适用性,结构,效果,应用,相关。

Read More
 2014-01-16
XML

XML 文档可以包含非 ASCII 字符,为了避免错误,需要规定 XML 编码,或者将 XML 文档存为 Unicode,两者需要保持一致。必须包含根元素,该元素是所有其他元素的父元素。所有元素都必须有关闭标签对大小写敏感属性值须加引号,如果属性本身包含引号,就用单引号包围属性< 和 & 是非法的,...

Read More
 2013-11-17
为什么要用补码表示负数

抛开二进制不谈,我们先来看看10进制假设世界上没有负号且数字最大只有3位,我们要把 0~999 分成两部分,一部分表示负数,一部分表示正数,而且不影响他们的运算规律,应当如何去做?首先,最大的负数加上一等于零,那么用999表示最大的负数再合适不过,现在需要正负数各一半,那么正数部分应当为 0 ~ 499,负数部分...

Read More
 2015-04-09
RMI

Java RMI 指的是远程方法调用 (Remote Method Invocation)。RMI能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法, 其威力体现在它强大的开发分布式网络应用的能力上,它可以被看作是RPC的Java版本。

Read More
 2014-11-18
Java Concurrent

线程拥有通过程序运行的独立的并发路径,并且每个线程都有自己的程序计数器,称为堆栈和本地变量。线程存在于进程中,它们与同一进程内的其他线程共享内存、文件句柄以及进程状态。JDK 5.0 中的并发改进可以分为三组:JVM 级别更改。大多数现代处理器对并发对某一硬件级别提供支持,通常以 compare-and-swap...

Read More
 2014-08-20
Java虚拟机

一、走近JAVA第一章、走近JAVAjava技术体系1.1 jdk1.7的主要特性G1收集器JSR-292对非JAVA语言的调用支持ARM指令集?Sparc指令集?新语法:原生二进制(0b开头),switch支持字符串,操作符,异常处理改进,简化变长参数方法调用,面向资源的try-catch-finally多核并...

Read More
 2014-06-26
Effective Java

一 创建和销毁对象1.考虑用静态工厂方法代替构造器静态工厂方法的优势:1.有名称,可以见名知义了解获取对象的特点2.不必每次调用时都创建一个对象3.可以返回原类型的任何子类型对象4.创建参数化类型实例时,可以使代码更简洁(右边无需再写一遍)5.不可变对象可以进行缓存,以提升性能2.遇到多个构造器参数时要考虑用构建...

Read More
 2013-12-19
Java NIO

核心ChannelsBuffersSelectors概述Channel 和 Buffer基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。这里有个图示:Channel和Buffer有好...

Read More
 2013-12-07
Java IO

IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根...

Read More
 2015-01-22
shell

Shell有两种执行命令的方式:交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。几种shell:bash(默认),sh,...

Read More
 2015-01-11
make

代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)指定规则进行编译,默认为当前目录下的Makefile文件$ make -f rules.txt或者make --file=rules.txtMakefile 文件结构Makefile文件由一系列规则(...

Read More
 2014-06-10
SSH

登陆-p指定主机的端口 $ ssh -p port user@host默认端口为22$ ssh user@host默认使用本机用户名$ ssh host过程远程主机接收到用户的登陆请求,把自己的公钥发给用户用户使用这个公钥,将密码加密后发回来远程主机用自己的私钥,解密登陆密码,如果密码正确,就同意用户登陆此处如...

Read More
 2014-05-07
Linux计划任务

atat 是个可以处理仅运行一次就结束计划任务的命令,不过要运行 at 时, 必须要有 atd 这个服务的支持才行。[root@www ~]# /etc/init.d/atd restart使用 at 这个命令来产生所要运行的任务,并将任务以文件的方式写入 /var/spool/at 目录内,该任务便能被 atd...

Read More
 2014-02-20
Linux启动流程

1.加载内核操作系统接管硬件以后,首先读入/boot目录下的内核文件。2.启动初始化进程内核文件加载以后,就开始运行第一个程序/sbin/init,它的作用是初始化系统环境。3.确定运行级别许多程序需要开机启动。它们在Windows叫做服务(service),在Linux就叫做守护进程(daemon)。init进...

Read More
 2014-02-13
Linux进程管理

&将命令放在后台运行command &此时将会产生1个任务编号与一个PID,命令执行完成后将会在前台出现提示后台执行的任务如果存在信息输出,最好将其写入到文件,否则将会在前台显示,影响操作[ctrl]-z将命令放在后台暂停此时将会产生1个任务编号及其命令jobs查看后台任务状态[root@www ...

Read More
 2014-02-08
Linux权限管理

chmod改变权限数字法root@www ~]# chmod [-R] xyz 文件或目录选项与参数:xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更符号法chmodugoa+(加入) -(除去) =(...

Read More
 2014-01-25
Linux目录与文件

.代表此层目录..代表上一层目录-代表前一个工作目录~代表『目前使用者身份』所在的家目录~account代表 account 这个使用者的家目录(account是个帐号名称)cd变换目录pwd显示目前所在的目录[root@www ~]# pwd [-Pl]选项与参数:-P:显示出真实的路径,而非使用连结 (lin...

Read More
 2014-01-02
Linux打印

echoecho是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。参数-n 不要在最后自动换行-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\a 发出警告声;\b 删除前一个字符;\c 最后不加上换行符号;\f 换行但光标仍旧停留在原来的位置;\n 换行且光标移至行首;\r ...

Read More
 2014-01-05
VIM

1.切换模式i → Insert 模式,在光标前插入ESC → 回到 Normal 模式,Normal 模式下,所有键都是功能键:help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(退出帮助需要输入:q)2.存盘 & 退出:e file → 打开一个...

Read More
 2014-02-23
IP 类型

分类IP通过地址开头判断类型,将以 0,10,110 开头的地址分为ABC三类将ip转换成十进制后A类地址第一个字节在 0 - 127 之间,B类地址第一个字节在 128 - 191 之间C类地址第一个字节在 192 - 223 之间然后剩下的位被分为网络号与主机号,主机有两个特殊的值:主机号全部为0的ip代表一...

Read More
 2014-12-21
WebService

WSDLdefinitions 为根节点,属性为name:WS 名称,默认为“实现类 + Service”targetNamespace:WS 目标命名空间,默认为“WS 实现类对应包名倒排后构成的地址”definitions的5个子节点types:描述了 WS 中所涉及的数据类型portType:定义了 WS ...

Read More
 2014-04-15
Custom Fileupload

本文的目的是简要说明如何编写一个文件上传组件,使他的功能类似 commons-fileupload, 并在结尾处提供了完整代码的获取方式。HTTP本文讨论的是基于 HTTP 协议的文件上传,下面先来看看 HTTP 请求的真面目。首先,用 JavaSe 类库中的 Socket 搭建一个超简单的服务器,这个服务器只有...

Read More
 2014-10-09
Bitmap

bitmap所谓bitmap就是用一个bit位来标记某个元素对应的value,而key即是这个元素。由于采用bit为单位来存储数据,因此在可以大大的节省存储空间算法思想32位机器上,一个整形,比如 int a; 在内存中占32bit,可以用对应的32个bit位来表示十进制的0-31个数,bitmap算法利用这种思...

Read More
 2014-09-19
八种排序

1.直接插入排序基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。/** * 形象描述:踢馆 * 直接插入排序(从小到大) * @param src 待排序的数组 */pub...

Read More
 2014-04-09
算法小汇

三色旗问题描述:一条绳子上悬挂了一组旗帜,旗帜分为三种颜色,现在需要把旗帜按顺序将相同的颜色的放在一起,没有旗帜的临时存放点,只能在绳子上操作,每次只能交换两个旗帜例如:原本旗帜的顺序为rwbrbwwrbwbrbwrbrw需要变成bbbbbbwwwwwwrrrrrr解决思路:遍历元素,如果元素该放到左边就与左边交...

Read More