设计模式之单例模式

2014年11月16日 1 条评论

在程序设计中,单例模式是非常常用的一个设计模式,至于有点老夫就不用多说了,肯定有一点比较省内存,但什么的类适合于设置成单例呢?一言以蔽之:

在程序设计中,无状态的类都可以设置成单例。

那么问题来了,什么样的类是无状态的,什么样的类是有状态的呢?其实很简单:

没有数据,也就是说这个类只有方法,没有成员变量。

举个例子:
User类是否可以设置成单例呢?肯定不行,因为User类每一个对应的Id肯定是不同的人,如果设置成单例,数据就乱了;但一般Service层、DAO层的方法呢?这个一般都是一些业务逻辑,只有一些方法,没有数据,所以肯定可以设置成单例,事实上我们这些类如果有[……]

Read more

Windows下SVN服务器的搭建

2014年11月8日 没有评论

作为一个软件开发人员,关于scm的重要性和必要性,相信我不用说了,目前最流行的的两个版本控制工具svn和git,关于这两个区别还是很大的,而git功能更强大,猜测以后会越来流行,在svn作为打败众多SCM工具的一个版本控制系统,他目前的使用还是非常多的,而且操作也非常简单,所以这一节就写一下svn服务器的搭建,有机会将来在写一篇关于git烦人使用的文章。好了,下面进入今天的正题:

首先推荐大家下载Subversion,随便哪个版本都行,安装过程就不说了,可以说是一路next,那么服务器就转好了,下面经过一些设置就可以使用了。
注:可以再cmd中敲一下 svn,看是否安装好了

第一步:在服务[……]

Read more

分类: SCM 标签: ,

全文检索工具-Lucene(solr)入门

2014年11月2日 没有评论

最近闲着没事在写微信公众号,其中一个是聊天机器人,和网上的众多机器人原理一样,但是功能没那么强大(主要是只是库不够强大),但是怎么解决“如何根据用户的问题从回答库中找出最匹配的答案呢?”,大家最先想到的也许是数据库的 LIKE 就好了嘛,但是 LIKE 存在如下问题:
1. 在问答库非常庞大的时候,LIKE 的效率会非常非常的慢;
2. LIKE只适用于关键字匹配,并不适合自然语言匹配。举个例子:用户的问题“河南的省会是哪个城市?”,而数据库的的记录是“河南的省会是哪”,虽然无论是从字面上还是意义上都一样,都 LIKE 却无能为力;
3. LIKE 无法计算相似度。也就是说 LIKE 返回多条[……]

Read more

分类: Java 标签:

Spring mvc中的forward和redirect以及参数传递

2014年10月24日 没有评论

1. forward和redirect
大家都知道servlet在处理完业务逻辑返回时有两种方法forward和redirect,他们的差异相信不用我再多做解释(如果不知道的请自行谷歌,哪怕是百度也可以),而Spring mvc是对servlet的一种封装,那spring mvc默认采用的是哪一种呢?我们是否可以自己选择采用哪一种方式返回呢?还有我之前在用spring mvc 都是返回到某一个view,它是否可以访问另一个controller呢?针对第一个问题,我们可以看一下spring mvc 的配置文件便知分晓:

	<property name="viewResolver[......]

Read more

分类: Java 标签:

Java中的split() replace() replaceFirst() replaceAll()四个函数分析

2014年10月20日 没有评论

前几天在公司分割一个很简单字符串,结果却怎么测都不对,最后查了一下资料,终于发现了端倪:
split(regex);

replace(target, replacement);
replace(oldChar, newChar);

replaceFirst(regex, replacement);

replaceAll(regex, replacement)

仔细看一下,你会发现split()、replaceFirst()、replaceAll()的参数都是Regular Expression,也就是正则表达式,只有replace()的参数是字符或者字符串,由于这些参数类型的差异,[……]

Read more

分类: Java 标签:

怎么在maven项目中引用本地Java类库

2014年10月14日 没有评论

去年实习的时候听说过maven,听说功能特别强大,后来就抽时间自学了一下,尤其感叹于其自动引入jar包的功能,真是太棒了,终于某种程度上把程序猿从classnotfoundexception中解脱出来了,也一定程度上解决了jar包冲突以及版本的问题,但在这几天玩微信开发的时候遇到了一个问题:
我的微信后台是托管到SAE上的,但SAE官方处于安全考虑,把XStream中sun.misc.Unsafe类禁用掉了,这就导致了一个问题XStream不能用了,CSDN知名博主刘峰老师发现了这个问题,于是柳峰老师修改了一下这个类库,其实很简单也即在XStream官方网站http://xstream.cod[……]

Read more

分类: Maven 标签:

长链接(URL)转短链接(URL)

2014年10月9日 没有评论

现在微博越来越流行,大家有事没事都喜欢在微博上说两句,但由于140字的限制,给我们在分析一些长链接的时候,带来了诸多不便,好在微博有自动缩短URL的功能,那我们是否可以自己缩短一个URL呢?答案是肯定的,下面就给出利用百度的API缩短URL的简单例子


package cn.bridgeli.longurl2short;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.n[......]

Read more

分类: Java 标签:

Jsoup在简单防御XSS攻击和网络爬虫的简单应用

2014年9月30日 没有评论

跨站攻击一直是web安全的一大问题,稍有不慎就会中招,各种防不胜防,今天在网上闲逛,发现一个第三方JAR不仅可以简单防御还可以爬取网页,所以写一篇小文以记之,也供有需要的人参考。
预防跨站攻击代码如下:


    @Test
    public void testJsoup() {
        String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link,<alert>0</alert></a></p>&q[......]

Read more

分类: Java 标签:

如何用https协议发起一个post请求

2014年9月29日 没有评论

这两天研究了微信公众号的开发,发现微信做的太好了,前景太可怕了,如果按照这个趋势,那么将来手机上也许只装一个微信客户端也许就可以做任何事了,其中微信公众号开发自定义菜单时,微信要求用https协议post到微信服务器一个JSON字符串,这里面有两个难点:1. https协议,2. 如何post数据到微信服务器。刚好csdn博主柳峰,有一篇文章是讲解这个的,所以就拿来参考一下,具体代码如下:


import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import j[......]

Read more

分类: Java 标签:

如何配置一个一键启动的绿色Java web项目

2014年9月20日 没有评论

我们知道部署J2EE项目,要首先安装JDK,配环境变量,在安装tomcat,然后MySQL数据库(当然也可以是其他任何你喜欢的数据库),把项目打一个war包放到tomcat的webapps包下面,启动tomcat就可以了,但在某些情况下,例如测试美工等,尤其是美工他们的电脑很多时候没必要安装这些乱七八糟的东西,那么我们是否可以不安装这些东西,而让让美工们的电脑跑项目呢?答案是可以的,我们只需要拷贝一个JDK、MySQL、tomcat到美工的电脑,再把项目拷到tomcat的webapps下,写一个bat的文件,让bat文件设置JDK目录、安装MySQL的服务,调用tomcat启动的命令就可以了,[……]

Read more

分类: Java 标签: