- 浏览: 164762 次
- 性别:
- 来自: 杭州
-
最新评论
-
di1984HIT:
学习了~~~~~~~~
mysql 序列号生成办法 -
jahu:
废话,,,,,,
java线程与协程效果对比 -
edua:
谢谢。
购物车实现原理 -
hotsmile:
我咋看不到后台的调用呀?
使用jmeter测试java程序 -
xiaokang1582830:
api/rest这样的定义如果项目中不存在此路径则会是404错 ...
strurts2 中的 ActionMapper的 作用
文章列表
今天在调试一web应用,spring+webwork ,mvn 管理,
启动tomcat 报 error:filterStart 错误
造成任何访问都报404错误,而控制台没有任何具体错误信息。
找了好久,在%Tomcat_home%\logs\下 localhost.2010-11-01.log (具体名称因时间和域名不同)发现具体错误
严重: Exception starting filter webwork
java.lang.NoClassDefFoundError: freemarker/template/Configuration
at com.opensymphony ...
HTTP头中一般断点下载时才用到Range和Content-Range实体头,Range用户请求头中,指定第一个字节的位置和最后一个字节的位置,如(Range:200-300)Content-Range用于响应头请求下载整个文件: ***********************************GET /test.rar HTTP/1.1 Connection: close Host: 116.1.219.219 Range: bytes=0-100 ***********************************Range头域可以请求实体的一个或者多个子范围,Range的 ...
回调机制运用什么场景?
1、当你正在做事,但有个信息需要别人通知你,那个人很忙说你留个电话我,有消息我就通知你,你继续干你的事,两不误。可以解决阻塞问题。
2、在某个条件满足后去执行未知的逻辑,因为未知,所以预留接口待外界传入类,有点模板方法的意思。这个可以解耦。
写一个例子:
场景:某员工正在拍卖现场出价,老板说:你按我的指示出价,如果我有变动会通知你,你再改变出价。
分析:员工要不停的出价,不能因为等待老板的电话而停止出价。我们将员工实现callback接口,注入另外个线程,当老板有电话时将信息传入员工,这样不会影响员工工作。
代码:
package m ...
web层编码中action的处理比较麻烦,特别是代码量变大,多应用,多人维护等情况下特别困难。
如何摸索下维护简单,复用性强的代码方式很重要。
上次写了一篇文章:http://guoba6688-sina-com.iteye.com/blog/747756,简单的处理。
这几天和同事讨论,他们提出更优雅的方式,我试着写了下,希望大家指教。
解决目标:
1、action层代码简单
2、复杂逻辑维护简单,可复用。
思路:
1、action层将数据封装为DTO
2、调有DTOUtil,传入DTO,DTOUtil会找到配置好的对应handler来处理 ...
今天在项目中配置404页面,最开始的配置是这样的,在web.xml中加入
<error-page>
<error-code>404</error-code>
<location>/notfound.jsp</location>
</error-page>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8&q ...
我非常欣赏这10点,努力做到。
让自己进步的十个习惯:
⒈永远不说不可能。
⒉凡事第一反应找方法,不是找借口。
⒊养成记录习惯,不太依赖脑袋。
⒋每天出门照镜子,给自己自信的微笑。
⒌每天自我反省。
⒍用心倾听,不打断别人的话,作个倾听高手。
⒎节俭定期存钱。
⒏遵守诚信,说到做到。
⒐时刻微笑待人处事。
⒑开会坐前排。
今天要查多张表count数据,表结构相同,要汇总结果。
我最初的写法是
select count(*) ,sum(c) from (
select 1+2 as c union
select 1+2 as c union
select 1+2 as c union
select 1+2 as c) as a
结果
count(*), c
1, 3
结果明显不对,我找了好半天最终找到原因,union会消除重复结果
改进后sql
select count(*) ,sum(c) from (
sel ...
项目越做越大,代码越来越多。陆续出了一些问题。
1、action层代码过多,复用性不强。往往多个应用要使用同一个功能。如A应用中有发布感受,B应用中也需要,这时B就把A中action的代码复制过来。
2、一个功能比较复杂,调用service比较多。发布文章前要判断是否黑名单,是否有违禁词,然后持久化,然后发积分和站内信等。现在全部写在一起,修改困难,不灵活。
重构目标:
1、新建Biz层,该层负责调用各单一小模块实现一个复杂功能。该层可打成jar包或发布成SOA,供其他方调用。
2、其他应用中如果也要发感受功能,但需要改一个小位置。如发积分策略,将新增自己 ...
最近项目中为解决性能问题使用了线程,但不是很理想。线程是个双刃剑,适当的线程可以加快速度,多了会让CPU压力直线上升,操作系统频繁切换,TPS反而降低。
一般的惯例是线程数是CPU数量的2倍以下比较好。
这里有篇介绍协程很好的文章,http://bluedavy.com/?p=4,该篇文章中有代码下载。
协程避免了操作系统切换线程的工作,用任务代替了线程。
我用下载的代码做了实验,我的机器是2CPU
java 结果:
=========Java Version========= Receive Thread Count: 2 Requests P ...
最近在项目中运用多线程比较多,对synchronized,wait(),notify(),做了一些实验。
1、针对方法的synchronized实际上是对该对象加锁。
package com.test.wait_notify;
/**
* 锅巴
* 描述
* @version 1.0 2010-8-10
*/
public class Main {
public static void main(String[] args) throws InterruptedException {
Main main = new Main(); ...
昨天在项目中需要将某字段变成自增的,并且该字段不是主键。
之前的印像是自增的一定是主键。
我用的是mysql 5.0.51
CREATE TABLE `message` (
`id` int(8) NOT NULL,
`username` varchar(30) default NULL,
`num` int(8) default NULL,
PRIMARY KEY (`id`)
...
在前面一篇博文http://guoba6688-sina-com.iteye.com/blog/724536中提出如何更方便的等待多线程执行结果,该篇博文的做法是
//等待线程执行完毕
while(threadPool.getActiveCount() > 0){
try{
Thread.sleep(1000);
}catch(Exception e){
e.printStackTrace();
...
之前看了程序员杂志上关于spring 定时任务实现异步任务的文章,自己架了一套帮助实现一些费时的操作。
在实现中发现几个问题
1、定时任务中时间设置是这样的
<property name="delay" value="1000" />
<!-- 每次任务间隔 5秒-->
<property name="period" value="5000" />
在某些配置下某任务开始后还没执行完过了5秒,第二个任务又起来了。
这与我的设计冲突。我希望任务是执行完后等5 ...
最近做一个项目,需要插入数万行数据,要尽快完成。
原来的时间,插入10万条,需要30分钟,单线程,逐条插入
改动后,插入10万条,只需1到2分钟
改动思路:
1、机器CPU是4核的,把串行的变成多线程的,4-6个线程,一般不超过CPU数量的2倍。
2、逐条插入变成1000条批量插入
3、由于是多线程,原有程序要修改,因为可能有键冲突,造成插入异常及其他不一致情况。
看了N个贴子,ThreadLocal讲得都不是很清楚,纠缠与synchronized的区别。直到看了http://qqdwll.iteye.com/blog/685586 才清晰了ThreadLocal的作用。
ThreadLocal可以为每个线程维护自己的变量,对于多线程使用同一对象可以起到管理作用。
先看个例子:
package com.koubei.Observable;
import com.sun.org.apache.xalan.internal.xsltc.compiler.sym;
public class UserProcess imp ...