摘要: 过年回家看到母亲十几年的类风湿越来越严重了,心里真是很难受,很想为她治疗好病,但是又没有好的医院和大夫,所以朋友们如果知道哪里有好的医院请留言告诉我,不胜感激!!!(拒绝广告)阅读全文
posted @ 2007-03-01 10:03 樊凯 阅读(448) 评论(8) 编辑

在Weblogic10.3这个版本中并没有提供客户端jar文件供我们使用,所以我们需要自己去打包客户端jar文件,打包步骤如下:

1. 假设Weblogic安装在C盘的根目录下,在MS-DOS下将路径切换到C:\Oracle\Middleware\wlserver_10.3\server\lib目录下。

然后运行java –jar ..\..\..\modules\com.bea.core.jarbuilder_1.3.0.0.jar命令。该命令会在C:\Oracle\Middleware\wlserver_10.3\server\lib目录下生成一个名为wlfullclient.jar的文件,该文件就是Weblogic容器的客户端文件。

注意com.bea.core.jarbuilder_1.3.0.0.jar文件的后面版本不一定是1.3.0.0,具体版本到modules文件夹中去查找。

posted @ 2009-09-25 10:23 樊凯 阅读(505) 评论(0) 编辑
摘要: 1. 建立数据库连接 <?php $mysqli=newmysqli("localhost","root","","mydb"); ?> 建立一个数据库连接需要四个参数,分别为数据库地址、数据库访问用户名、数据库访问密码、数据库名称。除了使用上面的mysqli对象的构造方法建立数据库连接外,还可以调用其connect方法建立数据库的连接。 <?php $mysqli=newmys...阅读全文
posted @ 2009-09-19 23:39 樊凯 阅读(505) 评论(2) 编辑

拦截器(interceptor)是Struts2最强大的特性之一,拦截器可以让你在Action和result被执行之前或之后进行一些处理。同时,拦截器也可以让你将通用的代码模块化并作为可重用的类。Struts2中的很多特性都是由拦截器来完成的。例如params拦截器将HTTP请求中的参数解析出来,并设置为Action的属性。servlet-config拦截器直接将HTTP请求中的HttpServletRequest对象化HttpServletResponse对象传给Action。

image

Struts2中内置类许多的拦截器,它们提供了许多Struts2的核心功能和可选的高级特性。这些内置的拦截器在struts-default.xml中配置。只有配置了拦截器,拦截器才可以正常的工作和运行。在struts-default.xml中拦截器的配置片段为:

<package name="struts-default" abstract="true"><interceptors>
        <interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/><interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>
        //…其他拦截器配置
        <interceptor-stack name="defaultStack"><interceptor-ref name="exception"/>
              <interceptor-ref name="alias"/>
                <interceptor-ref name="servletConfig"/>
                <interceptor-ref name="i18n"/>
                //…其他拦截器的引用
          </interceptor-stack>    
    </interceptors>
    <default-interceptor-ref name="defaultStack"/></package>

① package将属性abstract设置为true,代表此package为一个抽象的package。抽象package和非抽象package的区别在于抽象的package中不能配置action。

② name属性指定拦截器的名字,class属性指定拦截器的完全限定名。

③ 多个拦截器可以组成拦截器栈。name属性为拦截器栈的名字。

④ 指定当前package的默认拦截器(栈)。当前指定的默认拦截器栈为defaultStack,该拦截器栈是Struts2运行的一个基本拦截器栈,一般我们不用在自己配置它,因为在大多数情况下,我们自定义的package是继承自struts-default这个package的。

我们以Struts2内置的timer拦截器为例,来学习如何在我们的应用中添加其他的拦截器。timer拦截器可以统计action执行的时间。我们可以修改package中默认的拦截器,那么将替换掉struts-default中配置的defaultStack拦截器栈,导致Struts2无法正常运行,比如无法获取表单的值等等。那么该如何正确的配置呢?可以在添加新的拦截器的基础上加入defaultStack拦截器栈,这样就可以保证defaultStack拦截器栈的存在。

<package name="myStruts" extends="struts-default">
	<interceptors>
		<interceptor-stack name="myInterceptor"><interceptor-ref name="timer"/>  
			<interceptor-ref name="defaultStack"/>  
		</interceptor-stack>
	</interceptors>
	<default-interceptor-ref name="myInterceptor"/><action name="userAction"
		class="com.kay.action.UserAction">
		<result name="success">suc.jsp</result>
		<result name="input">index.jsp</result>
		<result name="error">err.jsp</result>
	</action>
</package>

① 添加一个自定义的拦截器栈,并在其中包含time拦截器和defaultStack拦截器栈。

② 设置当前的package的默认拦截器栈为自定义的拦截器栈。

 

修改package的默认拦截器会应用的package中的所有Action中,如果只想给其中一个Action添加拦截器,则可以这样来做:

<package name="myStruts" extends="struts-default">
	<interceptors>
		<interceptor-stack name="myInterceptor">
			<interceptor-ref name="timer"/>
			<interceptor-ref name="defaultStack"/>
		</interceptor-stack>
	</interceptors>
	<action name="userAction"
		class="com.kay.action.UserAction">
		<interceptor-ref name="myInterceptor"/><result name="success">suc.jsp</result>
		<result name="input">index.jsp</result>
		<result name="error">err.jsp</result>
	</action>
</package>

 

① 给UserAction添加拦截器。

 

如果要创建自己的拦截器,只需要实现Interceptor接口,该接口中定义了以下三个方法:

void init():

在拦截器初始化之后,在执行拦截之前,系统调用该方法。对于一个拦截器而言,init方法只会被调用一次。

String intercept(ActionInvocation invocation) throws Exception:

该方法是拦截器的拦截方法,返回一个字符串,系统将会跳转到该字符串对应的视图资源。该方法的ActionInvocation参数包含了被拦截的Action的引用,可以通过该对象的invoke方法,将控制权转给下一个拦截器或者转给Action的execute方法。

void destroy():

该方法与init方法对应,在拦截器示例被销毁之前,系统将会调用该方法。

除了Interceptor接口外,Struts2中还提供了一个AbStractInterceptor类,该类提供了一个init和destroy方法的空实现。如果不需要就不用重写这两个方法,可见继承自AbstractInterceptor类可以让我们构建拦截器时变得简单。

下面我们构建自己的拦截器,实现timer拦截器的效果。

public class MyInterceptor extends AbstractInterceptor {
	public String intercept(ActionInvocation invocation) throws Exception {
		long startTime = System.currentTimeMillis();  ①
		String result = invocation.invoke();  ②
		long endTime = System.currentTimeMillis();  ③
		System.out.println("Action执行共需要" + (endTime - startTime) + "毫秒");
		return result; 
	}
}

① 获得Action执行的开始时间。

② 将控制权交给下一个拦截器,如果该拦截器是最后一个拦截器,则调用Action的execute方法。

③ 获得Action执行的结束时间。

 

在配置文件struts.xml中配置拦截器:

<package name="myStruts" extends="struts-default">
	<interceptors>
		<interceptor name="myTimer" class="com.kay.interceptor.MyInterceptor"></interceptor><interceptor-stack name="myInterceptor">
			<interceptor-ref name="myTimer"/><interceptor-ref name="defaultStack"/>
		</interceptor-stack>
	</interceptors>
	<action name="userAction"
		class="com.kay.action.UserAction">
		<interceptor-ref name="myInterceptor"/>
		<result name="success">suc.jsp</result>
		<result name="input">index.jsp</result>
		<result name="error">err.jsp</result>
	</action>
</package>

 

① 定义一个新的拦截器,name属性为拦截器的名字,class属性为拦截器的完全限定名。

② 在拦截器栈中加入新的拦截器。

 

从拦截器的运行原理上和我们以前学习的Servlet中的过滤器是不是很相像呢?其实它们只有一个重要的区别,就是拦截器的工作是不依赖容器的,这会在进行单元测试时变得简单。

posted @ 2009-09-15 10:42 樊凯 阅读(2016) 评论(0) 编辑
摘要:   对于像我一样的初学php的人来说,php的运行环境的搭建一定是一个难关。那么我们使用AppServ这样一个集成环境来帮助我们快速搭建php的运行环境。AppSer中包含了Apache服...阅读全文
posted @ 2009-09-13 15:44 樊凯 阅读(1201) 评论(0) 编辑

在Hibernate中提供了两种缓存来提升程序的性能,分别为一级缓存和二级缓存,也称为内置缓存和外置缓存。

一级缓存在Session中实现,当Session关闭时一级缓存就失效了。我们来看一个使用了来一级缓存的示例:

Session session = factory.openSession();
Student stu = (Student) session.get(Student.class, 21L);
Student stu2 = (Student) session.get(Student.class, 21L);
session.close();
 

我们在同一个Session中使用get方法获取同一个对象两次,当代码运行时,控制台只输出一条SQL语句,这就证明了一级缓存的作用,通过Session对象的contains方法来判断一个对象是否在一级缓存中。

Session session = factory.openSession();
Student stu = (Student) session.get(Student.class, 21L);
System.out.println(session.contains(stu));
Student stu2 = (Student) session.get(Student.class, 21L);
System.out.println(session.contains(stu2));
session.close();
 
在Session中还提供了clear方法,用于将一级缓存中的所有对象进行清除。使用evict方法将指定的对象从一级缓存中清除。
 
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Student stu = (Student) session.get(Student.class, 21L);
session.evict(stu);  //将stu从一级缓存中清除
Student stu2 = (Student) session.get(Student.class, 21L);
session.close();
 

上面的代码中由于将stu从一级缓存中清除,所以在控制台中会产生两条SQL语句。一级缓存由Hibernate来进行维护,一般不需要我们使用手工干预。

在Hibernate中二级缓存在SessionFactory中实现,由一个SessionFactory的所有Session实例所共享。Session在查找一个对象时,会首先在自己的一级缓存中进行查找,如果没有找到,则进入二级缓存中进行查找,如果二级缓存中存在,则将对象返回,如果二级缓存中也不存在,则从数据库中获得。

Hibernate并未提供对二级缓存的产品化实现,而是为第三方缓存组件的使用提供了接口,当前Hibernate支持的第三方二级缓存的实现如下:

EHCache

OSCache

SwarmCache

JBossTreeCache

在使用二级缓存之前需要进行一些配置(以EHCache为例)。首先将Hibernate开发包中lib目录下的ehcache-1.2.jar放到工程的build Path中。然后在Hibernate的配置文件hibernate.cfg.xml中添加如下配置项:

<property name="hibernate.cache.provider_class">
	net.sf.ehcache.hibernate.EhCacheProvider
</property>
 

在工程的classPath中建立EHCache的配置文件ehcache.xml。

<ehcache>
    <diskStore path="java.io.tmpdir"/>
    <defaultCache
        maxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"/>
</ehcache>

① 缓存中最大允许保存的对象数量。

② 缓存中数据是否为常量。

③ 缓存数据钝化时间,单位为秒。

④ 缓存数据生存时间,单位为秒。

⑤ 内存不足时,是否启用磁盘缓存。

 

在需要进行二级缓存的持久化对象的映射文件中指定缓存的同步策略。

<hibernate-mapping>
<class name="com.zhaolongedu.vo.Student" table="t_student">
	<cache usage="read-only"/>  ①
		…
</class>
</hibernate-mapping>

① 指定缓存的同步策略。不同的缓存实现,对缓存的同步策略的支持也是不相同的。EHCache支持以下三种同步策略:

1. read-only:只读。对于不会发生改变的数据,可以使用只读性缓存。

2. read-write:可读写缓存。用于对数据同步要求严格的情况。

3. nonstrict-read-write:如果程序对并发访问下的数据同步要求不是很严格,且数据更新操作不频繁时可采用该缓存策略。

用下面的示例演示二级缓存的作用:

public static void main(String[] args) {
	Configuration config = new Configuration();
	config.configure();
	SessionFactory factory = config.buildSessionFactory();
	Session session = factory.openSession();
	Student stu = (Student) session.get(Student.class, 21L);
	session.close();
		
	Session session2 = factory.openSession();
	Student stu2 = (Student) session2.get(Student.class, 21L);
	session2.close();
}

程序的运行结果是输出一条SQL语句,说明二级缓存设置生效。SessionFactory对象中的evict用于将指定对象从二级缓存中删除。

Session session = factory.openSession();
Student stu = (Student) session.get(Student.class, 21L);
session.close();

factory.evict(Student.class);
		
Session session2 = factory.openSession();
Student stu2 = (Student) session2.get(Student.class, 21L);
session2.close();

此时上面的代码执行结果为输出两条SQL语句。

posted @ 2009-09-13 08:48 樊凯 阅读(422) 评论(0) 编辑

链接地址如下:

http://family168.com/oa/springsecurity/html/index.html

大家可以学习完Spring2.x后研究下!

posted @ 2009-07-29 11:12 樊凯 阅读(291) 评论(3) 编辑
摘要: 首先来看需要的jar包: 在web.xml中的配置: <?xml version="1.0" encoding="UTF-8"?><web-...阅读全文
posted @ 2009-07-07 11:44 樊凯 阅读(5605) 评论(3) 编辑
摘要: 首先说下使用的框架和插件: struts1.3   jQuery1.3   ajaxupload.3.2.js(一个JQuery的插件,实现Ajax上传的效果...阅读全文
posted @ 2009-06-17 15:55 樊凯 阅读(3663) 评论(3) 编辑
摘要: 1.在web.xml中加入如下配置 <!-- 配置Struts ActionServlet --> <servlet> <servlet-name>ActionServlet</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </se...阅读全文
posted @ 2009-06-16 13:15 樊凯 阅读(1532) 评论(0) 编辑
摘要:     /**      * MD5加密      * @param password &...阅读全文
posted @ 2009-05-21 17:56 樊凯 阅读(306) 评论(0) 编辑
摘要: 在Spring2.5中使用Annotation注解进行注入: 在使用注解进行注入的时候需要设置配置文件的schema: <?xml version="1.0" encodi...阅读全文
posted @ 2009-05-14 12:02 樊凯 阅读(285) 评论(0) 编辑
摘要: 依赖注入(IOC DI)依赖注入的两种方式:1. set注入Spring要求使用set注入方式的时候,Bean需要提供一个无参数的构造方法。并提供一个属性的setter方法。例如: package com.kay.bean; public class UserServices { private UserBean ub; public void setUb(UserBean ub) { this....阅读全文
posted @ 2009-05-14 12:00 樊凯 阅读(364) 评论(0) 编辑
摘要: bean的作用域 作用域 描述 singleton 在每个Spring IoC容器中一个bean定义对应一个对象实例。 prototype 一个bean定义对应多个对象实例。 request 在一次H...阅读全文
posted @ 2009-05-11 18:41 樊凯 阅读(471) 评论(0) 编辑
摘要: 通过alias节点为bean指定一个别名在spring中通过alias节点可以为一个bean指定别名: <bean name="userDao,user" class="com.kay.dao.impl.UserDAOImpl"></bean> <alias name="userDao" alias="toUserDao"/> 那么在获取该bean的时候,通过u...阅读全文
posted @ 2009-05-11 18:39 樊凯 阅读(614) 评论(0) 编辑
摘要: BeanFactory & ApplicationContext 在spring中容器分为两类: n BeanFactory n ApplicationContext BeanFact...阅读全文
posted @ 2009-05-11 18:38 樊凯 阅读(385) 评论(0) 编辑
摘要: 错误1:在运行新立得软件包管理器的时候,报如下错误:E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem. E: _cache->open() failed, please report.解决方案:在终端中输入:sudo dpkg --configure -a 进...阅读全文
posted @ 2009-04-28 02:05 樊凯 阅读(111) 评论(0) 编辑
摘要: 使用ADSL拨号:sudo pppoeconf安装nvidia显卡驱动:ubuntu默认使用的受限驱动,无法开启3D等特效,所以必须安装Nvidia的官方驱动,到www.nvidia.com下载需要的驱动,下载好的驱动为.run文件,该类型文件必须使用sh命令进行编译后再执行。步骤如下:1。在系统中启用root用户;2。重启系统后在系统登录的窗口中按下ctrl+alt+F1,使用文本界面进行登录;...阅读全文
posted @ 2009-04-28 01:55 樊凯 阅读(254) 评论(0) 编辑
摘要: 昨天在中心建立了一个非常简单的struts1.x的工程,但是今天到家里怎么都打不开,一直报这样的错误: 严重: Begin event threw exception java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.re...阅读全文
posted @ 2009-04-14 11:19 樊凯 阅读(10802) 评论(1) 编辑
摘要: 数据库脚本:[代码]由于没有映射文件,所以要求pojo中的属性必须和数据表中的列名相同:[代码]获得唯一的pojo方法:[代码]获得集合方法:[代码]测试:[代码]阅读全文
posted @ 2009-03-22 12:02 樊凯 阅读(435) 评论(2) 编辑
摘要:   今天两个班的同学一起考试,希望一切顺利!阅读全文
posted @ 2009-02-22 22:29 樊凯 阅读(66) 评论(1) 编辑
摘要: SSL简介 SSL, 或者Secure Socket Layer,是一种允许web浏览器和web服务器通过一个安全的连接进行交流的技术。这意味着将被发送的数据在一端被翻译成密码,传送出去,然后在另一端阅读全文
posted @ 2009-02-21 00:06 樊凯 阅读(303) 评论(0) 编辑
摘要: 1.从http://subversion.tigris.org/files/documents/15/44102/svn-win32-1.5.4.zip下载subversion; 2.将下载好的zip包进行解压,例如解压到:E:\svn-win32-1.5.4; 3.在MS-DOS中切换到E:\svn-win32-1.5.4\bin中; 4.创建版本库: 1: svnadmin create...阅读全文
posted @ 2009-02-09 14:40 樊凯 阅读(2139) 评论(1) 编辑
摘要: 通过第二节中的helloworld实例,会发现Struts2中的Action会比Struts1.x中的Action简练了许多,只需要在熟悉的JavaBean中加入execute方法即可,这样做的好处是阅读全文
posted @ 2009-02-07 11:34 樊凯 阅读(2081) 评论(0) 编辑
摘要: 现在以Struts2的方式来做一个Hello,world的实例程序。创建这样一个程序,至少需要下面这些元素: 1. 创建一个Action类:HelloAction.java 2. 创建一个jsp页阅读全文
posted @ 2009-02-07 11:28 樊凯 阅读(526) 评论(0) 编辑
摘要: 关于Struts2的前世今生在网上有很多的资料,同学们可以自己到网络搜集这段历史,需要提到的是如果你以前使用过WebWork,那么Struts2就应该可以很快上手,通过下面这个图可以清楚的知道两者之间的关系。Struts2 = WebWork + Struts 首先从http://struts.apache.org/2.x/index.html上下载Struts2,我们使用的版本是最新的Strut...阅读全文
posted @ 2009-02-07 11:22 樊凯 阅读(1000) 评论(0) 编辑
摘要: 作者:江南白衣    除开五大或者ThoughtWorks这种要什么有什么,进去做打字也能光耀门楣的不谈。如果是嫁到一个普通软件公司,怎样的环境才能最快的成长呢?    首先基本的公司项目管理水平是必要的;其次是稳健而不保守的公司技术选型和一班能沟通的同事。     更重要的,是要有一个严苛的环境,那些古训说的都没错,越是严苛,...阅读全文
posted @ 2009-02-05 12:36 樊凯 阅读(326) 评论(0) 编辑
摘要: 昨天无意间发现网上一篇文章,就是一双解放鞋在欧洲竟然卖的$76,一时间惹得中国很多的网友都想拥有一双这样的解放鞋,但是淘宝上竟然把它卖到了¥100元一双,为这样的价格我感到很是惊讶,因为所谓的Ospop解放鞋的产地就是在我老家,厂家距离我们家的距离也不到2000米,这种鞋至少在5-6年前都有了,不过都是卖到南方、东北等一些省份,大部分都是农民工兄弟穿的,价格也就5-6元之间,但是被老外发现了,加上...阅读全文
posted @ 2009-02-05 10:48 樊凯 阅读(877) 评论(9) 编辑
摘要: SQL漏洞注入是常见的一种攻击方式,我们可以通过一些简单的方式来预防。看一下我们经常写的代码: 1: /// <summary> 2: /// 不安全的登录代码 3: /// </summary> 4: /// <param name="sender"></param> 5: /// <param name="e&...阅读全文
posted @ 2009-01-07 23:37 樊凯 阅读(635) 评论(2) 编辑
摘要: 关于数据库连接池,MSDN有如下文字: 连接到数据库服务器通常由几个需要很长时间的步骤组成。 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次阅读全文
posted @ 2009-01-07 22:52 樊凯 阅读(1322) 评论(2) 编辑
摘要: 几个小时后2008年就结束了,回忆2008:1.让自己的开发基础更加稳固了;2.结识了一群非常好的学生,好兄弟;3.认识了几个好的朋友;4.基本回归.net;5.有了更多的时间考虑软件架构;6.见识了更多恶心的事…… NND7.幸福的事:三个挚友相继结婚,祝福他们!!!兄弟们,朋友们,元旦快乐!有你们我很幸福和开心!阅读全文
posted @ 2008-12-31 18:41 樊凯 阅读(101) 评论(2) 编辑
摘要: 一个关于老外使用电子邮件诈骗的案例,昨天我亲历了。 第一封: FROM JUSTINE NFAH. PLOT 124 RUE 19 COCODY 01. ABIDJAN COTE D阅读全文
posted @ 2008-12-30 23:35 樊凯 阅读(237) 评论(2) 编辑
摘要: 好久没有做一个完整的项目了,有时候很多细小的知识点都陌生了,所以今天打算开发一个公司内部的邮件系统,打算使用Jsp+Servlet+JavaBean开发,以后可以供二年的同学学习Servlet时作为项目案例。现在已经把项目在Google Code上托管了,开发到一定阶段会告诉大家地址,让更多的同学可以加入开发。 准备使用的技术: JSP Servlet JQuery XFire JMS…… ...阅读全文
posted @ 2008-12-28 16:16 樊凯 阅读(107) 评论(1) 编辑
摘要: 1: public string CreateMD5(string inputStr) 2: { 3: MD5 md5 = MD5.Create(); 4: byte[] byteChar = md5.ComputeHash(Encoding.Default.GetBytes(inputStr)); 5:  6: StringBuilder sb = new StringBuilder(...阅读全文
posted @ 2008-12-27 18:53 樊凯 阅读(333) 评论(3) 编辑
摘要: 祝各位平安夜快乐!阅读全文
posted @ 2008-12-24 10:48 樊凯 阅读(75) 评论(1) 编辑
摘要: Process类的作用是对系统进程进行管理,我们使用Process类中的一些方法结合Winform开发个简单的进程管理器: 在使用Process类的时候,先导入命名空间System.Diagnostics。 使用Winform画出如上的界面,数据显示使用的是Listview。 在窗体的Load事件中写出如下代码: 1: private void Form1_Load(object sender...阅读全文
posted @ 2008-11-25 09:42 樊凯 阅读(6482) 评论(0) 编辑
摘要: 和81的同学们一起去了爬山,整个过程让我收获很多,分享一部分照片,下次继续!    阅读全文
posted @ 2008-11-13 18:34 樊凯 阅读(113) 评论(0) 编辑
摘要: 找了个简洁的风格皮肤,写了一篇告示,诞生了QZone……阅读全文
posted @ 2008-10-11 17:36 樊凯 阅读(96) 评论(0) 编辑
摘要: 各位同学、各位领导: 大家上午好!(掌声) 非常高兴许校长给我这么崇高的荣誉,谈一谈我在北大的体会。(掌声) 可以说,北大是改变了我一生的地方,是提升了我自己的地方,使我从一个农村孩子最后走向了阅读全文
posted @ 2008-10-06 09:56 樊凯 阅读(564) 评论(0) 编辑
摘要: 从西安回来了,现在在焦作,好熟悉的地方,清新的泥土味,很蓝的天,特别是熟悉的饭菜,太爽了!阅读全文
posted @ 2008-09-29 23:31 樊凯 阅读(104) 评论(0) 编辑
摘要: 昨天51班的学生二期毕业了,不免一顿腐败,但是在饭桌上,我感受到了他们很多我平时一直没有感受到的东西。和这个班很有缘,所以我在教他们的时候我尽力了,而且是很尽力了,但是最后的结果总不是那么的好,我知道,自己有责任,但是昨天他们都说没有我的问题,都是一部分人的问题……不知说到什么,好多的男生都落泪,甚至痛哭,我就陪着他们喝酒,一杯接着一杯,长这么大,我没有喝醉的记录,昨天依然...阅读全文
posted @ 2008-09-26 00:52 樊凯 阅读(144) 评论(1) 编辑