山那边是海 发表于 2015-1-18 11:16:23

JAVA教程之JSP高会见量下的计数程序

C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.js|程序|会见  偶然要为每篇文章统计其点击次数,假如每次扫瞄都要更新一次库的话,那功能在会见量很年夜的情形下,服务器的压力就会很年夜了,对照好一点的办法就是先将要更新的数据缓存起来,然后每隔一段工夫再使用数据库的批量处置,批量更新库。源码以下:

  CountBean.java

/*
*CountData.java
*
*Createdon2006年10月18日,下战书4:44
*
*Tochangethistemplate,chooseTools|Optionsandlocatethetemplateunder
*theSourceCreationandManagementnode.Right-clickthetemplateandchoose
*Open.YoucanthenmakechangestothetemplateintheSourceEditor.
*/
  packagecom.tot.count;

/**
*
*@authorhttp://www.tot.name
*/
publicclassCountBean{
 privateStringcountType;
 intcountId;
 /**CreatesanewinstanceofCountData*/
 publicCountBean(){}
 publicvoidsetCountType(StringcountTypes){
  this.countType=countTypes;
 }
 publicvoidsetCountId(intcountIds){
  this.countId=countIds;
 }
 publicStringgetCountType(){
  returncountType;
 }
 publicintgetCountId(){
  returncountId;
 }
}
  CountCache.java

/*
*CountCache.java
*
*Createdon2006年10月18日,下战书5:01
*
*Tochangethistemplate,chooseTools|Optionsandlocatethetemplateunder
*theSourceCreationandManagementnode.Right-clickthetemplateandchoose
*Open.YoucanthenmakechangestothetemplateintheSourceEditor.
*/

packagecom.tot.count;
importjava.util.*;
/**
*
*@authorhttp://www.tot.name
*/
publicclassCountCache{
 publicstaticLinkedListlist=newLinkedList();
 /**CreatesanewinstanceofCountCache*/
 publicCountCache(){}
 publicstaticvoidadd(CountBeancb){
  if(cb!=null){
   list.add(cb);
  }
 }
}

 CountControl.java

 /*
 *CountThread.java
 *
 *Createdon2006年10月18日,下战书4:57
 *
 *Tochangethistemplate,chooseTools|Optionsandlocatethetemplateunder
 *theSourceCreationandManagementnode.Right-clickthetemplateandchoose
 *Open.YoucanthenmakechangestothetemplateintheSourceEditor.
 */

packagecom.tot.count;
importtot.db.DBUtils;
importjava.sql.*;
/**
*
*@authorhttp://www.tot.name
*/
publicclassCountControl{
 privatestaticlonglastExecuteTime=0;//前次更新工夫 
 privatestaticlongexecuteSep=60000;//界说更新距离工夫,单元毫秒
 /**CreatesanewinstanceofCountThread*/
 publicCountControl(){}
 publicsynchronizedvoidexecuteUpdate(){
  Connectionconn=null;
  PreparedStatementps=null;
  try{
   conn=DBUtils.getConnection();
   conn.setAutoCommit(false);
   ps=conn.prepareStatement("updatet_newssethits=hits+1whereid=?");
   for(inti=0;i<CountCache.list.size();i++){
    CountBeancb=(CountBean)CountCache.list.getFirst();
    CountCache.list.removeFirst();
    ps.setInt(1,cb.getCountId());
    ps.executeUpdate();⑴
    //ps.addBatch();⑵
   }
   //int[]counts=ps.executeBatch();⑶
   conn.commit();
  }catch(Exceptione){
   e.printStackTrace();
  }finally{
  try{
   if(ps!=null){
    ps.clearParameters();
ps.close();
ps=null;
  }
 }catch(SQLExceptione){}
 DBUtils.closeConnection(conn);
 }
}
publiclonggetLast(){
 returnlastExecuteTime;
}
publicvoidrun(){
 longnow=System.currentTimeMillis();
 if((now-lastExecuteTime)>executeSep){
  //System.out.print("lastExecuteTime:"+lastExecuteTime);
  //System.out.print("now:"+now+"
");
  //System.out.print("sep="+(now-lastExecuteTime)+"
");
  lastExecuteTime=now;
  executeUpdate();
 }
 else{
  //System.out.print("waitfor"+(now-lastExecuteTime)+"seconds:"+"
");
 }
}
}
//注:假如你的数据库驱动撑持批处置,那末能够将⑵,⑶标志的代码前的正文往失落,同时在代码⑴前加上正文
  类写好了,上面是在JSP中以下挪用。

<%
CountBeancb=newCountBean();
cb.setCountId(Integer.parseInt(request.getParameter("cid")));
CountCache.add(cb);
out.print(CountCache.list.size()+"<br>");
CountControlc=newCountControl();
c.run();
out.print(CountCache.list.size()+"<br>");
%>
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。

只想知道 发表于 2015-1-19 19:30:51

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

小女巫 发表于 2015-1-24 15:39:44

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

莫相离 发表于 2015-1-28 16:45:44

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

飘灵儿 发表于 2015-2-5 15:01:16

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

透明 发表于 2015-2-12 06:51:32

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

admin 发表于 2015-3-1 22:30:22

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

再现理想 发表于 2015-3-3 00:38:50

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

第二个灵魂 发表于 2015-3-6 19:57:10

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

若天明 发表于 2015-3-12 14:30:14

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

精灵巫婆 发表于 2015-3-19 22:50:58

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
页: [1]
查看完整版本: JAVA教程之JSP高会见量下的计数程序