JAVA中的notify和notifyAll

翻阅JDK的文档,对这两个方法都有大段的描述。总结起来notify()用来唤醒正在waiting的任意单个线程,notifyAll()则用来唤醒所有waiting的线程。

在分析这两个方法可能遇到的问题之前,先记录一些基本的概念。线程在进入waiting状态时,对于对象的锁是释放掉的。同时要区分waiting状态和blocked状态,waiting状态是指线程被挂起需要被动唤醒;blocked状态则是线程阻塞状态,在傻傻的主动排队等待轮到自己去做事儿。

Read More

设计模式之代理模式

代理模式是设计模式中很重要的一个,看似平时好像很少应用到。如果理解了它,就会发现在开发当中,有很多地方是用代理模式可以很好的解决问题。并且很多现在的JAVA框架也用到了代理模式,最著名的莫过于Spring了。

首先,代理模式可分为静态代理和动态代理两种。代理的意义在于代理对象可以对被代理对象的行为发生之前或之后做一些其他的事情,这样可以让被代理对象专心的处理它的事情,对于其他的一些额外的行为可以交给代理对象来处理。

Read More

设计模式之单列模式

单列模式是Java常见的一种设计模式,很多书上或者网上的资料里都会有提到这种设计模式。但是这种设计模式也有五种不同的实现方法,下面的代码列举了五种实现方式,并且分别里除了其优缺点:

package singleton;

Read More

我眼里的Full Stack Developer

全栈工程师——在技术圈很火的一个词,在知乎上搜索能看到很多相关的问题。怎样成为全栈工程师(Full Stack Developer)?,这个问题下前几名的讨论我也觉得非常赞同。全栈工程师从字面意思上看,栈为一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。全栈工程师意味着从栈顶到栈底都能做的开发工程师。

Read More

由JAVA GC垃圾收集算法联想到应该避免的编码

如今现在大部分的商业JAVA虚拟机都是用的是分代收集算法,也就是说通过分为新生代和老年代分,根据其不同的特点使用不同的收集算法。目前新生代都采用的是复制算法来清理内存,因为其要copy对象到另一块儿内存,如果量大了自然也是不小的一个开销。

在编码当中应该尽量去减少GC copy的次数,而实际开发当中其实有很多情况是自己去可以去避免的。例如对于经常会说的String,对于它的“+”操作符就是我们应该去避免的。举两个例子:

Read More

关于OS X的环境变量

对于Windows的环境变量,由于Windows系统是用的时间长,对其环境变量的配置也算比较了解。Windows的环境变量也分系统级别和用户级别的,并且是可视化的操作,因此也相对简单很多。

而在Linux、OS X这些系统来说,环境变量的配置都是直接操作文件,以前在使用Linux的时候,总有一种印象觉着比较麻烦,所以也一直都不怎么去详细了解。最近配置自己电脑OS X的环境变量,做了一些详细的了解,在这里记录一下。

Read More

Linux+Windows双系统重装Linux之后导致Windows无法启动的解决办法

电脑上本来装的是Windows7和Ubuntu双系统,今天有时间就把上次下载的Fedora16刻盘,想把Ubuntu换成Fedora16。

岂料在装Fedora的过程中,在选择存储设备时误选了“替换本机上已有Linux”的选项。将错就错继续,进行到映像文件复制到磁盘阶段,就是提示“检测已有Linux分区的文件系统失败”,没仔细看就点选择返回进行重新安装。

Read More

使用Jquery的Ajax时当传递到后台的参数为数组时的处理

当我们在使用JQuery的Ajax时,通常传递到后台的数据的格式都是JSON格式,但有时可能遇到传递的JSON参数中的V包含有JS的数组,如:

var params = {a:[1,2,2,2],c:d}

Read More

Apache2.x启用gzip压缩

最近公司作为供应商为去哪儿提供酒店预订,需要开发酒店的接口,其中有要求这边服务器需要开启gzip压缩。以前倒腾过nginx,知道它的gzip怎么启用,但对apache真是一无所知。在网上搜索了大半天,很多文章都是大同小异,根本在配置文件找不到所说的配置选项。不过最终经过英文搜索,再加上官方的文档,总结一下开启的过程。

Read More

Mysql中LOCATE函数的使用

最近再做和去哪儿的一个酒店对接接口,其中涉及到在传递酒店城市时需要使用去哪儿标准的城市名称,并且对方也提供了所有的城市列表。

其中有一个问题就是我们这边的城市存储的名称还加上了省份前缀,所以再匹配时导致很多匹配不上。经过大脑的扫描,忽然想到了Mysql中的LOCATE函数。

Read More