java内部重定向死循环检测详解【附源码】
最近听到一个消息,据说腾讯的财付通在招聘 Java 方面的高手,"参与系统架构选型",要把底层架构从 C/C++ 迁移到 Java 架构上来。其实当你的项目到一定规模之后更多需要考虑的是多人协作开发的问题,可能当初财付通的核心代码也就是一两个人用C/C++搞定的,可是当业务扩大、复杂之后,发现多人C/C++来并行发开变的不是那么靠谱。于是乎java这种近乎工业标准的东西出来了。。。有点扯远了。引出我们今天的话题,java多人并行开发是很出色,但是只要是并行的那么就会存在一些问题。
比如:A程序员在A页面写了以个逻辑,当逻辑判断满足就内部重定向到B程序员写的B页面,但是刚好B程序员在B页面中的逻辑是满足某些条件就跳转到A页面,于是乎当某些特定条件下,两个页面就在不停的重定向一直到jvm的溢出。
平时我们遇到这种问题可能找一会就找到了,也基本上没有什么影响。但是在一个成熟的业务系统中遇到这样的问题就是致命的。可能会导致服务器挂掉。。或者整个集群的连锁反应(集体挂掉)。当然你的用户也就访问不到你的站点了,在工业标准中我们考虑更多的就是怎么让系统更稳定。比如:淘宝一天都宕机了,该有多少商家要发疯。
再次进入正题,如何来解决这种问题保证系统的绝对稳定呢?很简单一个fielter就搞定了
package org.fielter.test;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 过滤形成环路的fielter <p>
*
* @author yuezhen
*/
public class CircleFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try{
HttpServletRequest req = (HttpServletRequest) request;
String original="";
相关文档:
java的范型机制看起来有点像C++的模版,但相比较C++的模版类,java中的范型没有关键字template,并且有着不同的实现机制(本质区别)。
范型类
先看一个范型类的例子:
public class Demo1<T> {
private T value;
public Demo1(T value) {
&n ......
许多时候我们需要用到线程 比如希望一个附加的功能 不要影响整个流程的功能,比如某个流程需要加入日志,但是不希望记录日志的功能影响整个流程的性能,不能因为记录日志把整个流程给卡住了。在这个种情况下,我们需要使用线程。让记录日志在单独一个线程里面跑,就不会影响都其他流程了。
  ......
1. MySQL(http://www.mysql.com)mm.mysql-2.0.2-bin.jar ;
Class.forName( "org.gjt.mm.mysql.Driver" );
cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd );
2. PostgreSQL(http://www.de.postgresql.org)pgjdbc2.jar ;
Class.forName( "org.postgresql. ......
谈谈Java继承中的重载,覆盖和隐藏
好久不写博客了,距离上一篇已经过了两年多了。这两年在干嘛,总之一年难尽!
前一段时间忙了两个月,忙着研究和做一些SSH架构的东西,两个月下来,收获颇丰,最近闲下来了,于是就痛快的开始玩游戏,但是不知怎么地,怎么玩都没意思,于是决定开始再好好研究研究Java吧。于是大概翻了翻 ......
切记:无论hibernate还是jdbc的事务控制都应在service层!
jdbc事务管理要保证service 层与dao层是基于同一个Connection;
也就是说在service层里得到Connection ,DAO中方法以参数的形式得到这个实例。。
未完待续。。。 ......