Java
孙彦辉
站在巨人的肩膀上
展开
-
关于Java权限控制算法
向大家介绍一种很不错,也是Linux中的权限管理算法。 定义a^b为:a的b次方 假如,我们为每一个操作设定一个唯一的整数值,比如: 删除A---0 修改A---1 添加A---2 删除B---3 修改B---4 添加B---5 。。。 理论上可以有N个操作,这取决于你用于储存用户权限值的数据类型了。 这样,如果用户有权限:添加A---2;删除B---3;修改B---4 那用户的权限值 purview =2^2+2^3+2^4=28,也就是2的权的和了 化成二进制可以表示为1110转载 2010-08-02 15:41:00 · 618 阅读 · 0 评论 -
struts2 ongl的理解以及struts2标签详解
OGNL表达式语言很抽象,按下面的方式应该很好理解,解释了我们为什么在struts2的action中能为复合类型的属性赋值,以及我们为什么可以在jsp页面里使用ongl表达式(从request,session,application中取值等) Struts2的OGNL表达式语言是基于Xwork的OGNL的,它在Xwork的基础上对OGNL进行了一些封装,因此先了解Xwork转载 2012-09-26 10:28:17 · 1121 阅读 · 0 评论 -
java调用短信猫源码
package com.util.sms;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.Reader;import java.net.HttpURLConnection;import java.net.URL;import原创 2013-01-26 15:41:00 · 1451 阅读 · 1 评论 -
Java调用dll库源码
/** * * Java 通过 JNI(Java Native Interface,Java本地调用接口)调用 C++ DLL(动态链接库) * * @author SunYanhui * */public class JavaCall { // 加载动态库,写在静态代码块中. // 可以这样理解:下边的两个方法 ChooseStk()和 // UpdateStkData()没有原创 2013-01-26 15:29:02 · 777 阅读 · 0 评论 -
Java Map 的三种遍历方式
第一种是遍历 map中键所对应的值public static void work(Map map) { Collection c = map.values(); Iterator it = c.iterator(); for (; it.hasNext();) { System.out.println(it.nex原创 2013-08-29 13:37:20 · 662 阅读 · 0 评论 -
servlet让spring自动注入解决方法
在应用中一般普通的JavaPojo都是由Spring来管理的,所以使用autowire注解来进行注入不会产生问题,但是有两个东西是例外的,一个是 Filter,一个是Servlet,这两样东西都是由Servlet容器来维护管理的,所以如果想和其他的Bean一样使用Autowire来注入的 话,是需要做一些额外的功夫的。对于Filter,Spring提供了DelegatingFilt转载 2014-03-14 09:58:35 · 1336 阅读 · 0 评论 -
Spring Bean 注入 Servlet 的方法
不使用任何知名MVC框架,仅用Servlet+jsp完成View层的开发。基于接口开发测试,要集成Spring+Hibernate,遇到Spring Bean注入Servlet的问题。在applicationContext.xml中定义数据层访问Bean:[html] view plaincopybean id="userDao"转载 2014-03-18 16:27:41 · 756 阅读 · 0 评论 -
JavaMail API – Sending Email Via Gmail SMTP Example
原文 http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/Here are two examples to show you how to use JavaMail API method to send an email via Gmail SMTP server, using both转载 2013-07-23 11:22:29 · 4141 阅读 · 0 评论 -
Spring MongoDB集成
Java端要向mongoDB插入java对象时,我用了到morphia开源组件。官网:code.google.com/p/morphia只写了DAO层的java代码,能够满足常用的增、删、改、查、分页等操作。db.properties配置文件:db.host=localhost //主机地址db.port=27017 //端口(默认)app.db.name=app //数据转载 2012-02-02 13:38:02 · 2740 阅读 · 0 评论 -
庖丁解牛 dic home should not be a file, but a directory!
最近一个项目,用到了paoding分词器。在开发阶段我将词库放到了src目录,配置文件使用了classpath:dic,目的是为了增加可移植性。发现问题:在启动服务器的时候抛出 net.paoding.analysis.exception.PaodingAnalysisException: dic home should not be a file, but a directory! 分析问题:这是因为PaodingMaker.getFile()方法中采用了老版本的java.net.URL.getFile(原创 2010-08-22 18:01:00 · 1282 阅读 · 9 评论 -
三个线程轮流执行顺序打印ABC(三):使用Lock实现
需求:有三个线程轮流执行,第一个线程打印A,第二个线程打印B,第三个线程打印C……循环10次。 思路:三个线程共享同一把锁、一个线程轮流状态state。线程拿到锁之后,通过state进行判断,如果轮到当前线程打印,则执行打印、更改state状态。每个线程都不停的循环,获取锁、判断state,执行打印,并……直到每个线程打印10次。 效率:由于三个线程不停的抢占锁,但是获取锁后不一定具备打印条件,所以原创 2017-12-10 16:26:47 · 3599 阅读 · 1 评论 -
三个线程轮流执行顺序打印ABC(二):使用Lock+Condition实现
需求:有三个线程轮流执行,第一个线程打印A,第二个线程打印B,第三个线程打印C……循环10次。 思路:三个线程对应三个Condition,三个Condition共享一个Lock,一个线程轮流状态state。线程拿到锁之后,通过state进行判断,如果轮到当前线程打印,则执行打印、更改state状态以及通过下一个线程对应的Condition唤醒下一个线程;如果没有轮到当前线程打印,则通过当前线程对应原创 2017-12-07 16:23:19 · 3260 阅读 · 0 评论 -
STRUTS2标签中符号#,$,%的用法示例
取Session中的值 ${session.user.userId} ${sessionScope.user.userId} 基本语法一、EL简介1.语法结构${expression}2.[]与.运算符EL 提供.和[]两种运算符来存取数据。当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字转载 2012-09-26 10:26:04 · 724 阅读 · 0 评论 -
mongodb的java驱动与spring的整合
见蛮多人搜java和Mongodb,那就再写点java操作Mongodb的项目心得。Mongodb的java驱动基本操作可看这里。其实Mongodb的java驱动可以完成大部分的操作和需求。但是当你的document有N多的“字段”需要不断的put的时候 ,是否觉得代码太过琐碎太过凌乱和不够优雅?如果做的是web工程,而工程整合了spring,不妨把spring和mongodb做下整合。转载 2012-08-11 10:08:39 · 1701 阅读 · 0 评论 -
Java实现IP地址字符串与整数之间的转换
<br />一、应用范围 <br /> 一般用在登录限制、查找IP所在城市等需求中,windows的ping命令也支持整数形式的IP。 <br /><br />二、关键技术点 <br /> 将IP地址转化成整数的方法如下: <br /> 1、通过String的indexOf方法找出IP字符串中的点"."的位置。 <br /> 2、根据点的位置,使用String的substring方法把IP字符串分成4段。 <br /> 3、使用Long的parseLong方法把子段转化成一个3转载 2010-08-18 09:53:00 · 1783 阅读 · 0 评论 -
当前几个主要的Lucene中文分词器的比较
1. 基本介绍:paoding :Lucene中文分词“庖丁解牛” Paoding Analysisimdict :imdict智能词典所采用的智能中文分词程序mmseg4j : 用 Chih-Hao Tsai 的 MMSeg 算法 实现的中文分词器ik :采用了特有的“正向迭代最细粒度切分算法“,多子处理器分析模式2. 开发者及开发活跃度:paoding :qieqie.wang, google code 上最后一次代码提交:2008-06-12,svn 版本号 132imdict :XiaoPingGa转载 2010-08-20 15:35:00 · 627 阅读 · 0 评论 -
Lucene+HighLighter高亮显示实例
今天搞了一个关于Lucene的例子,权当入门教程。网上有很多资料,但是要么不全、要么不好用,所以这里把全部代码以及依赖的包贴上来了。功能包括:创建索引、检索索引、高亮显示查询结果。分词使用的庖丁解牛。使用前先下载相关的LuceneCore jar包、LuceneHighLighter jar包、庖丁解牛分分词jar包、庖丁解牛词典。并设定环境变量PAODING_DIC_HOME指向词典位置。前两个可以到官方网站找,庖丁去http://code.google.com/p/paoding/downloads/l转载 2010-08-20 15:43:00 · 2680 阅读 · 2 评论 -
JavaWeb应用下实现定时任务
<br />在WEB应用下实现定时任务的简便方法 <br /> 在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务:<br />第一步:创建一个任务管理类,实现ServletContextListener 接口<br /> JAVA代码<br /> <br /> 以下是引用片段: <br /> public class TaskManager implements Servle转载 2010-09-21 13:17:00 · 676 阅读 · 0 评论 -
Dom4j 写文件编码问题
网上有很多介绍dom4j的使用的文章,包括官方自己的举例。但是在写或者修改xml文件时,如果直接按教程方法写,就会遭遇编码问题,往往会报遇到不可识别的符号的错误。而在windows系统下,用记事本打开可能看起来很正常似的,比如看到xml编码标签那写的<?xmlversion="1.0"encoding="UTF-8"?>这样的格式。细心的人用EditPlus打开,就会发现编码实际上并非utf-8,可能是gbk。我们来看写文件时用到的XMLWriter,他提供以下几种构造方法:XMLWri转载 2010-10-08 14:16:00 · 928 阅读 · 0 评论 -
JSP文件下载的几种方式
<br />1。最直接最简单的,方式是把文件地址直接放到html页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。这个就不写示例了。<br />2。在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。(示例如下)<br /><%<br /> response.setContentType(fileminitype);<br /> response.setH原创 2010-10-08 14:18:00 · 483 阅读 · 0 评论 -
Spring+Hibernate:在applicationContext.xml中配置C3P0参数说明
背景:在项目中遇到下面这个exceptionException occurred while logging onHibernate operation: Cannot open connection; uncategorized SQLException for SQL [???];SQL state [null]; error code [0]; An SQLExc转载 2012-01-30 15:03:27 · 1384 阅读 · 0 评论 -
JAVA WEB 异常处理原则
最近写JAVA WEB的一个项目,发现项目的异常处理机制很混乱,不知道是该捕获还是该抛出,所以仔细想了想,总结了一下,不知道是不是完全对。什么样的异常应该捕获,什么样的异常应该抛出?1.如果开发的系统正式上线运营,而这时系统里的某些异常可能导致服务器down掉或者有影响,就应该对异常进行捕获处理。2.在该throw的时候你catch了,那么它上一层的方法原本需要遇异常就要停止的,你再里原创 2011-12-30 21:29:06 · 1171 阅读 · 0 评论 -
MongoDB连接池
2012-04-10 16:29:05| 分类:mongodb| 标签:|字号大中小订阅from:http://www.cnblogs.com/huangfox/archive/2012/04/01/2428947.html一.mongoDB中的连接池刚上手MongoDB,在做应用时,受以前使用关系型数据库的影响,会考虑数据库连接池的问题!关系型数据库中转载 2012-05-24 18:20:12 · 2724 阅读 · 0 评论 -
Java中使用MongoDB连接池的注意事项
1.Mongo对象内部实现了一个连接池。Mongo对象是线程安全的,因此可以只创建一个,在多线程环境下安全使用。因此,我们可以用将Mongo变量作为一个Singleton类的成员变量,从而保证只创建一个连接池。Mongo.close方法将关闭当前所有活跃的连接。所以要在web工程被从Tomcat或者GlassFish容器中注销的时候确保调用close方法。2.DB对象D转载 2012-08-09 21:08:29 · 2414 阅读 · 0 评论 -
Morphia 成功支持 GridFS
I know this question has been asked on the forums before so I wanted to contribute an example that I just completed. I am using Spring to inject everything into my constructor and using Mule t翻译 2012-08-09 23:37:20 · 1611 阅读 · 0 评论 -
三个线程轮流执行顺序打印ABC(一):使用Semaphore实现
需求:有三个线程轮流执行,第一个线程打印A,第二个线程打印B,第三个线程打印C……循环10次。思路:三个线程对应三个Semaphore,三个Semaphore维护一个Permit。当前线程通过对应的Semaphore获取Permit,执行打印,并通过下一个线程对应的Semaphore释放Permit。类似于Permit在当前的线程对应的Semaphore中,传递到了下一个线程对应的Semaphore原创 2017-12-07 15:18:46 · 5028 阅读 · 2 评论