如果你发现打开JSP页面非常非常慢,而JSP页面中又用到了EL技术
如果你发现打开JSP页面非常非常慢,而JSP页面中又用到了EL技术(如 displayTag, extremeTable),则原因十之八九是:用EL要求获取一个对象中的XX属性值,而实际上这个对象中根本没有XX属性 如“chick.hands”:Chick类中并没有“hands”这个属性
如果你发现打开JSP页面非常非常慢,而JSP页面中又用到了EL技术(如 displayTag, extremeTable),则原因十之八九是:用EL要求获取一个对象中的XX属性值,而实际上这个对象中根本没有XX属性 如“chick.hands”:Chick类中并没有“hands”这个属性
按线程对象的生命周期来分,似乎有两种模式: 1.任务批次一开始就启动一批线程对象,等批次下的所有任务都完成后,线程集体死亡 优点:程序简单明了,对象数固定,性能稳定 缺点:随着任务的减少,空转的线程会越来越多,浪费系统开销 2.任务批次启动后,取一个任务,生成一个线程,这个线程只处理该任务,任务完成后即死亡。当然线程数也不是无限的,到了一定数目后,如果还有新的任务,只能等别的线程死亡、线程总数小于上限后、再孵化出新线程处理新任务。 优点:典型的“池”机制。当任务数少时,线程也少,不存在空转的线程,不浪费CPU 缺点:频繁起线程、杀线程,对CPU也有压力;这种代码编起来也麻烦。
刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程 序,据此一些人可能会认为TCP/IP编程很简单。其实不然, TCP/IP编程具有较为丰富的内容。其编程的丰富性主要体现在 通信方式和报文格式的多样性上。 一。通信方式 主要有以下三大类: (一)SERVER/CLIENT方式 1.一个Client方连接一个Server方,或称点对点(peer to peer): 2.多个Client方连接一个Server方,这也是通常的并发服务器方式。 3.一个Client方连接多个Server方,这种方式很少见,主要 用于一个客户向多个服务器发送请求情况。 (二)连接方式 1.长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。这种方式下由于通讯连接一直 存在,可以用下面命令查看连接是否建立: netstat –f inet|grep 端口号(如5678)。 此种方式常用于点对点通讯。 2.短连接 Client方与Server每进行一次报文收发交易时才进行通讯连 接,交易完毕后立即断开连接。此种方式常用于一点对多点 通讯,比如多个Client连接一个Server. (三)发送接收方式 1.异步 报文发送和接收是分开的,相互独立的,互不影响。这种方 式又分两种情况: (1)异步双工:接收和发送在同一个程序中,有两个不同的 子进程分别负责发送和接收 (2)异步单工:接收和发送是用两个不同的程序来完成。 2.同步 报文发送和接收是同步进行,既报文发送后等待接收返回报文。 同步方式一般需要考虑超时问题,即报文发上去后不能无限等 待,需要设定超时时间,超过该时间发送方不再等待读返回报 文,直接通知超时返回。 实际通信方式是这三类通信方式的组合。比如一般书上提供的 TCP/IP范例程序大都是同步短连接的SERVER/CLIENT程序。有的 组合是基本不用的,比较常用的有价值的组合是以下几种: 同步短连接Server/Client 同步长连接Server/Client 异步短连接Server/Client 异步长连接双工Server/Client 异步长连接单工Server/Client 其中异步长连接双工是最为复杂的一种通信方式,有时候经 常会出现在不同银行或不同城市之间的两套系统之间的通信。 比如金卡工程。由于这几种通信方式比较固定,所以可以预 先编制这几种通信方式的模板程序。 二.报文格式 通信报文格式多样性更多,相应地就必须设计对应的读写报文的接 收和发送报文函数。 (一)阻塞与非阻塞方式 …
BufferedReader consoleInput = new BufferedReader( new InputStreamReader(System.in)); System.out.print("输入XX的ID:"); if(consoleInput.readLine().equals("")){ return; }else{ …… }
如果文件名过长,浏览器就会用URL当文件名(如 /hi.jsp)提示用户下载。因此,在提供下载前,最好截一下文件名。
AppFuse提供的事务管理器在发生DataAccessException异常时不会发生回滚,因此需要调整: 在spring配置文件中修改txProxyTemplate 和 userManager的bean定义(userManager在action-servlet和applicationContext中各有一个),将DataAccessException设置为 remove和save方法的回滚条件
注意:ftpClient.login(), ftpClient.changeWorkingDirectory()都会返回boolean结果 如果用户名密码错误,ftpClient.login()并不会报异常,只是返回false 如果指定目录不存在,ftpClient.changeWorkingDirectory()不会报异常,只是返回false
这个方法是会抛出IOException的。 我们写代码调用这个方法时,调用者往往本身也是throws IOException,因此IDE不会提醒我们处理sendClientMsg()引起的异常,结果一旦sendClientMsg()出错,调用方法也整个地出错
如果用了sitemesh,那么在它的decorator:body 中再次使用 jsp:include 时要注意 1.如果再次被包含的页面内容很大,而且放在最后,可能会导致浏览器中的整个页面坍塌 1.如果在decorator:body 中使用了两次 jsp:include ,也可能会导致浏览器中的整个页面坍塌 页面坍塌 就是 页面的布局混乱、而且内容残缺,有的地方会出现html源码 以上问题是在将sitemesh与tomcat一起使用时发现的
某些配置文件应该在src下修改,然后在编译时复制到classes下;而不是直接放在classes下,让人很不习惯。具体有: 1.把classes下的properties.*文件、vm文件、xml文件 都转移到src目录下 2.利用ANT进行编译时应对*.properties.zh_cn文件进行native2ascii