
Java
文章平均质量分 63
sunshine716
我人很普通,喜欢交朋友。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
人在江湖:如何用代码保护自己
现在上一点规模的系统,特别是金融行业的系统,业务规则复杂,一般是将系统分割成较小的子模块,每个人开发一个或几个模块,模块开发完成后做成一个jar包,供其它的模块调用,待所有模块开发完成后再集成在一起。对于充值系统而言则更为复杂,除了要将系统分解成子模块外,还要与众多外围系统交互,如收单服务商、充值中心、银行等。程序员就是其中一个或几个模块的开发者。 本文的讨论的要点是:在系统出现问题时...2011-10-12 16:30:48 · 247 阅读 · 0 评论 -
中国联通短信网关接入程序源代码(SGIP1.2协议)
自从我发了博文“中国联通SP业务开发总结”后有很多的朋友问我开发上一些问题,开发接入程序必须有一定的socket编程基础,且必须熟悉sgip1.2协议才可以,我应一位网友的要求将我开发的短信接入程序源代码发布,希望对开发短信业务的朋友提供一些帮助,代码可自由传播。如有疑问请留言,我会尽量解答。 ps: lib.rar是短信程序所用到的jar包,有很多朋友问我要jar包,现在给补上...原创 2010-01-11 12:23:48 · 647 阅读 · 0 评论 -
对PreparedStatement、Statement的一点总结
网上有很多文章讨论PrepardStatement与Statement的区别,不过要完完全全的作出比较难度很大,因为每个数据库对底层的实现及应用场合不一样,Oracle对PrepardStatement的支持最好,Mysql对PrepardStatement支持最差。Statement执行单个sql语句速度较快而PrepardStatement执行批处理的效率较高。 以Oracle为...2009-07-24 23:34:19 · 194 阅读 · 0 评论 -
扩展Log4j级别,实现邮件提醒。
log4j想必大家都很熟了,它是apache组织旗下的一个开源项目,用于记录程序运行时的一些信息,这些信息有助于我们分析程序的性能找出bug。log4j共有六个级别,按级别升序排序分别是TRACK记录比debug级别还要详细的信息(finer-grained 细颗粒度)DEBUG记录程序运行时一些有用的信息,用来分析程序的性能,发现bug(finer-g...2009-07-22 16:10:06 · 258 阅读 · 0 评论 -
Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
原地址:http://topic.youkuaiyun.com/t/20050127/15/3758173.html我略作了下修改Class.isAssignableFrom()是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的子类或接口。 格式为: Class1.isAssignableFrom(Class2) 调用者和参数都是java.lang.Cl...原创 2009-12-24 13:14:45 · 166 阅读 · 0 评论 -
递归显示数据库目录树(html+java servlet)
应客户的要求,需要在定位平台上加多级部门的支持,可以无限分级,并将数据库中的部门及该部门下定位终端以目录树形式的显示在界面上,以数据库 目录树为关键字google了下,有参考价值的不多,大部门都是简单的显示下,格式也没有作缩进,很难看,客户肯定不满意,只能自己作了。要实现目录树肯定要用递归算法了。 要实现递归,必须得有一个父节点作为参考,如果原来的表里是没有这个字段,就...2009-06-24 16:09:44 · 411 阅读 · 0 评论 -
Cannot find ActionMappings or ActionFormBeans 错误解决
前几天部署在Tomcat 5.5容器里一个项目莫名其秒的出现错误,访问login.jsp登陆页面就会报 javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection从控制台日志发现只要服务器一启动,struts就会报两个错误 第一个错误不能连网或着找不到资源...2009-02-05 17:12:56 · 286 阅读 · 0 评论 -
单元测试覆盖率插件clover的破解及使用
公司在尝试用测序驱动开发模式开发项目,我在网上找了些资料,看到一个eclipse插件clover,用来检测单元测试的覆盖率,用了下感觉不错,不过这个插件只能试用30天。下面是破解的步骤 1.安装clover 在eclipse菜单选择 Help-->Software Updates -->Find and Install -->Search for new featu...2008-12-23 14:10:57 · 347 阅读 · 0 评论 -
Java异常处理
六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? OutputStreamWriter out = ... java.sql.Connection conn = ... try { //捕获异常 Statement stat = conn.c...原创 2009-06-08 09:23:50 · 117 阅读 · 0 评论 -
保护眼睛的豆沙色
作我们IT这行的,一天要盯着电脑看,时间长了眼睛会感觉发酸,这说明已经眼疲劳了,我无意中在网上看到了一篇文章,感觉效果不错。 保护色设置: 桌面->右键->属性->外观->高级->项目选择(窗口)、颜色1(L)选择(其它)将色调改为:85。饱和度:123。亮度:205->添加到自定义颜色->在自定义颜色选定点确定->确定 这样...2010-03-19 09:46:01 · 254 阅读 · 0 评论 -
非阻塞通信
对于用ServerSocket和Socket写的服务器程序或着客户端程序,在运行的时候常常会阻塞,如当一个线程执行ServerSocket的accept()方法,如果没有客户机连接,该线程就会一直阻塞直到有了客户机连接才从accept()方法返回,再如,当线程执行Socket的read()方法,如果输入流中没有数据,该线程就会一直等到有数据可读时才从read()方法返回。 如果...2009-12-03 11:43:41 · 251 阅读 · 0 评论 -
中国联通SP业务接入开发总结(SGIP1.2 协议)
当短信成功下发到手机终端时,一个多星期的联通业务接入程序终于完成,由于以前没有类似的开发经验,中间走了不少弯路,浪费了很多时间。总结下开发经验为下一步开发移动的业务接入打下一个基础。 开发过程遇到的几个难点:1、序列号的定义2、int转byte[]及字节序3、重复收到联通上行(MO)4、收到用户的定购命令但无法下行(MT)...2009-08-12 16:52:19 · 1644 阅读 · 0 评论 -
Junit测试private方法
package com.bill99.junit;public class ACase { private String echoRequest(String request) { return "Hello!"+request; } private String echoRequest() { return "Hello!"; }} ...2010-04-28 14:09:02 · 353 阅读 · 0 评论 -
数据漂白算法研究
你的手机是不是会经常会收到一些烦人的广告短信?垃圾邮件是不是经常会塞满你的电子信箱?如果你好奇,会问:这些人怎么会知道我的电话号码呢,怎么会知道我姓名呢?这是因为你的个人信息已经泄漏了。 个人信息的泄漏轻则会影响你的心情,重则你的存款会被骗的精光! 前段时间有一个陌生的人给我打电话,电话一接通就说:“您好,张先生,我是广东xx公证处的,三星公司为了回馈广大用户的信任与...2010-12-07 18:05:08 · 563 阅读 · 0 评论 -
理解使用static import 机制
J2SE 1.5里引入了“Static Import”机制,借助这一机制,可以用略掉所在的类或接口名的方式,来使用静态成员。本文介绍这一机制的使用方法,以及使用过程中的注意事项。 在Java程序中,是不允许定义独立的函数和常量(当然,准确的说,只是被final修饰、只能赋值一次的变量)的。即使从它们本身的功能来看,完全不需要依附于什么东西,也要找个类或接...原创 2010-11-09 08:48:23 · 161 阅读 · 0 评论 -
理解多线程设计模式
多线程设计模式:1.Single Threaded Execution Pattern [同一时刻只允许一个线程操作] 比喻:三个挑水的和尚,只能同一时间一个人过桥,不然都掉河里喂鱼了。 总结:在多个线程同时要访问的方法上加上synchronized关键字。2.Immutable Pattern [变量赋值一次后只能读取,不能改变。] 比喻:一夫多妻制,多个...2010-11-08 17:43:45 · 209 阅读 · 0 评论 -
理解ThreadLocal
ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,...原创 2010-11-03 17:04:29 · 119 阅读 · 0 评论 -
经验总结:高性能的数据同步
最近在做一个银行的生产数据脱敏系统,今天写代码时遇到了一个“瓶颈”,脱敏系统需要将生产环境上Infoxmix里的数据原封不动的Copy到另一台Oracle数据库服务器上,然后对Copy后的数据作些漂白处理。为了将人为干预的因素降到最低,在系统设计时采用Java代码对数据作Copy,思路如图 首先在代码与生产库间建立一个Connection,将读取到的数据放在ResultSet对...2010-11-03 10:03:23 · 322 阅读 · 0 评论 -
Spring freemarker页面乱码解决
在开发过程中遇到乱码十分的头痛,如果你在开发过程中也遇到了乱码,本文或许对你有些帮助。乱码场景: 项目采用Spring框架,视图层使用freemarker,当点击某个链接时redirect到某个Action作些业务逻辑处理,然后再重定向到一个html页面,但是重定向到html页面时,html里面的中文全部变成乱码,在web.xml加过滤器,html、java编码都按UTF...2011-01-13 11:56:45 · 317 阅读 · 0 评论 -
用JSSE实现网络安全通信
在网络上信息由源主机到目标主机要经过很多路由和计算机,通常这些机器不会监听路过的信息。但在使用网络银行进行网上消费时,不加以保护的账号密码很有可能被黑客截获并利用给消费者造成不可估量的损失。 Java安全套接字扩展(JSSE,Java Secure Socket Extension)为基于SSL和TLS协议的Java网络应用程序提供了Java API及参考实现。JSS...2010-06-25 15:11:21 · 219 阅读 · 0 评论 -
Java实时监控日志文件并输出
最近有一个银行数据漂白系统,要求操作人员在页面调用远端Linux服务器的shell,并将shell输出的信息保存到一个日志文件,前台页面要实时显示日志文件的内容.这个问题难点在于如何判断哪些数据是新增加的,通过查看JDK 的帮助文档, java.io.RandomAccessFile可以解决这个问题.为了模拟这个问题,编写LogSvr和 LogView类,LogSvr不断向mock.log...2010-06-19 17:21:34 · 550 阅读 · 0 评论 -
JDK6新玩具---HttpServer的使用
介绍摘自网络: JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员必须自己实现HttpHandler接口,HttpServer会调用HttpHandler实现类的回调方法来处理客户端请...2009-09-02 17:41:26 · 199 阅读 · 0 评论 -
Map排序
package com.tdt.list;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import java.util.Map;import java.util.TreeMap;public cl...原创 2009-09-01 14:20:34 · 109 阅读 · 0 评论 -
处理线程泄露
当一个单线程化的控制台程序因为未捕获的异常终止的时候,程序停止运行,并生了栈追踪,这与典型的程序输出不同,当一个程序发生了异常说明有不稳定的因素存在。如果并发程序中线程失败就没那么容易发现了。栈追踪可能会从控制台输出,但是没有人会去一直在看控制台,并且,当线程失败的时候,应用程序可能看起来仍在工作。就象程序能跑在50个线程池上,也能够跑在49个线程的线程池上,区别在于50个人干的活要比49个...2009-12-01 15:10:00 · 264 阅读 · 0 评论 -
在Timer和ScheduledExecutorService间决择
java.util.Timer计时器有管理任务延迟执行("如1000ms后执行任务")以及周期性执行("如每500ms执行一次该任务")。但是,Timer存在一些缺陷,因此你应该考虑使用ScheduledThreadPoolExecutor作为代替品,Timer对调度的支持是基于绝对时间,而不是相对时间的,由此任务对系统时钟的改变是敏感的;ScheduledThreadExecutor只支持相...2009-11-27 10:25:46 · 111 阅读 · 0 评论 -
处理超出打开游标的最大数异常
在执行如下代码时,经常会出现ora-01000: maximum open cursors exceeded异常 for(int i=0;i<balancelist.size();i++) { prepstmt = conn.prepareStatement(sql[i]); prepstmt.setBigDecimal(1,nb.getRealCost()); p...原创 2009-05-11 14:48:22 · 340 阅读 · 0 评论 -
Java Socket使用小技巧
这几天一直在写一个GPS+SMS模式的定位程序,流程大致是这样,首先接收用户的定位请求,然后把这个请求按照制定的协议用xml包装,用Socket发给短信服务器,短信服务器发送指令至终端,终端反回经续度,然后再把这个经纬度送到GIS系统,获取地理信息位置描述,最后把这个结果返回给客户端。 但是因为网络或其它的原因,短信服务器经常没有响应,因此必须不停的建接,直到这个连接被建立。cl...2009-03-03 16:19:54 · 142 阅读 · 0 评论 -
Java密码加密
package com.sunnylocus.util;import java.security.MessageDigest;/** * 对密码进行加密和验证的类 */public class CipherUtil{ //十六进制下数字到字符的映射数组 private final static String[] hexDigits = {"0", "1",...2008-08-16 12:16:35 · 664 阅读 · 0 评论 -
Java设计模式—单态模式(Singleton)
单态模式(也有叫单例模式)表示一个类只有一个实例存在,生成用单态模式设计类不能用new 关键字来获得。可用简单的一句话来概括单态模式: 构造方法私有化,通过共有的静态方法返回类的实例。 最近在项目开发中,程序用到的各个参数被单独拿出来做成一个配置文件,程序接收到用户的定位请求就从配置文件读取出对应的参数和客户端中请求的参数比对,然后把定位请求发送到不同的定位平台,但问题...2008-08-15 15:53:02 · 108 阅读 · 0 评论 -
创建Java线程池
线程池的作用: 线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行...2008-08-02 13:39:15 · 228 阅读 · 0 评论 -
synchronized方法验证,不要被谬论迷惑
以前编程没有怎么接触过synchronized方法,不太了解,今天编程遇到了多个线程访问同一个共享资源的问题,google了下synchronized使用方法,网上有二种说法,第一种说法是当一个线程访问了某个对象中的synchronzied方法,其它线程可以继续访问其它的synchronized方法,第二个说法与第一种说法相反,不能访问。搞的我也不确定,更要命的是,这两种说法在网上一...2008-08-01 13:19:32 · 193 阅读 · 0 评论 -
公司面试操作题—用webservice实现两个整数求和
刚开始找工作那段时间,每天要面试好几家单位,不停的重复着面试,机试。后来来到我现在这个公司,感觉这家公司很务实,给了我三道题目,前两道不难,第一个题目是结合Oracle数据库建立一个登陆信息表,实现ajax登陆验证功能,第二个题目是用oracle语句实现jsp分页功能。前两道题目很简单,关键是第三道题目,用webservice实现两个整数求和,看到这个题目我连webservice的基本概...2008-07-21 16:01:27 · 505 阅读 · 0 评论 -
Java设计模式—模板方法(Template Method)
模板是指在薄片塑料板上面写字后挖空,再使用毛笔或色笔涂满挖空部分,就能看到纯手工而以不失工整的字样,看到模板上的挖空形状,马上就知道最后会变出什么样子的字,不过实际上所显现出来的字样还是要依所使用的画笔种类而定.拿黑色签字笔当画笔,结果当然就是签字笔的字样;当用铅笔来画,得到的也只会是灰黑色的铅笔字;如果用五颜六色的彩色笔,自然能创出让人眼花的多色字.但是,无论使用哪种文具,制作出来...2008-07-19 14:19:01 · 161 阅读 · 0 评论 -
Java设计模式—适配器(Adapter)
如果现在有一台使用12V直流电的笔记本电脑,要将插头接到220V的交流电电源,直接接到电源我想笔记本要报销了。你需要用到一个交流电适配器(AC Adapter)。交流电适配器能够将家用的220V交流电转换成我们需要的12V直流电。适配器的功能就是介入原有电源和需要的电源之间,作为沟通的桥梁。适配器的原文是adapter,代表"适合"的意思。 在程序设计中我们也需要用到“适配器”,如果...2008-07-18 14:48:47 · 127 阅读 · 0 评论 -
MyEclipse优化技巧
第一步: 取消自动validationvalidation有一堆,什么xml、jsp、jsf、js等等,我们没有必要全部都去自动校验一下,只是需要的时候才会手工校验一下! 取消方法:windows–>perferences–>myeclipse–>validation除开Manual下面的复选框全部选中之外,其他全部不选手工验证方法:在要验证的文件上,单击鼠标右键–>...原创 2008-07-18 09:03:26 · 209 阅读 · 0 评论 -
Servlet生命周期
大多数程序员都知道Servlet的生命周期,简单的概括这就分为四步:servlet类加载--->实例化--->服务--->销毁。对这个过程只是肤浅了解下,对于servlet何时被销毁,还是不太情楚。下面我们描述一下Tomcat与Servlet是如何工作的,首先看下面的时序图.1、Web Client 向Servlet容器(Tomcat)发出Http请求2、Servl...2009-03-04 15:43:07 · 267 阅读 · 0 评论 -
Java设计模式—工厂方法(Factory Method)
Template Method Pattern是在父类建立处理逻辑的大纲骨架,而在子类补充具体的处理内容,如果把模板方法用在产生对象实例方面,就是式厂方法模式 Factory Method Pattern在父类规定对象的创建方法,但并没有深入到较具体的类名。所有具体的完整内容都放在子类,根据这个原则,我们可以大致分成产生对象实例的框架和实际产生对象实例的类两方面 1.框架类...2008-08-26 16:42:31 · 138 阅读 · 0 评论 -
Socket通信模式:收发线程互斥
有做过通信程序或着短信接入程序的程序员都知道,与之通信的每条命令都由消息头和消息尾构成,消息头一般包括整个消息体的长度、流水号、命令类型等信息,客户端向服务端发送一个请求,服务端返回一个响应,请求的流水号和返回的流水号为一一对应关系。如图: 一般我们做法是写一个同步的方法用于发送命令和接收命令,如 public synchronized String recM...2009-11-14 19:09:15 · 538 阅读 · 0 评论 -
ASCII码对照表
ASCII表ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符0NUT32(space)64@96、1SOH33!65A97a2STX34”66B98b3ETX35#67C99c...原创 2009-11-12 11:26:24 · 369 阅读 · 0 评论 -
java.net.SocketException: Software caused connection abort: recv failed 异常分析
java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java....2009-11-12 11:01:17 · 278 阅读 · 0 评论