随笔-22  评论-8  文章-0  trackbacks-0
  2011年6月14日
     摘要: 最近给机器装上了Archlinux的操作系统,可以windows有进还不得不用,所以下载了virtualBox,准备安装个虚拟机;安装比较简单,可装好后与主系统(archlinux)如何交换数据呢?看到了数据空间,想到是用这个,可一直也没有搞清楚如可进行设置,所以就放了下来。 最近在网上看到一篇文章,对数据空间进行了说明,才搞清楚是这么回事。闲话少说,就说怎么设置吧:  阅读全文
posted @ 2011-12-29 17:21 Hukin 阅读(1968) | 评论 (1)编辑 收藏
     摘要: 每个文件系统分为3部分:超级块,i-节点表,数据区 。
超级块 :存放文件系统本身的信息,比如记录了每个区域的大小,或未被使用的磁盘块的信息。(不同版本稍有差别)
i-节点表 :每个文件都有其属性,大小,最近修改时间等等,这些被存储在ino_t 的结构体中,所有的i-节点都有一样的大小,i-节点表就是这样一些节点的列表。
(表中的每个i-节点都通过位置来标志,例如标志为2的i-节点位于文件系统i-节点表中的第3个位置 )
数据块 :存放文件内容,因为块的大小一定,所以有时一个文件会分布在多个磁盘上。
  阅读全文
posted @ 2011-12-28 11:16 Hukin 阅读(5049) | 评论 (1)编辑 收藏
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
length是属性,一般集合类对象拥有的属性,取得集合的大小。
     例如:数组.length就是取得数组的长度。
length()是方法,一般字符串类对象有该方法,也是取得字符串长度。
     例如:字符串.length();
posted @ 2011-09-03 13:39 Hukin 阅读(372) | 评论 (0)编辑 收藏
     摘要: 一、指令元素(directive elements):控制所生成的servlet结构。
JSP指令用于“转换阶段”提供整个JSP页面的相关信息,影响由JSP页面生成的Servlet的整体结构。
指令不会产生任何的输出到当前的输出流中。

1,指令元素语法:
<%@ directive {attr="value"}* %>
说明:
<和% 以及和@,%和>之间不能有任何的空格。
属性值两边的双引号可以替换为单引号。引号标记不能完全省略。
在属性中使用引号使用\进行转义。
2,指令的xml语法:


在编写XML兼容的jsp页面时,只要不在同一页面中混用xml语法和标准语法,就可以使用指令的xml兼容模式。  阅读全文
posted @ 2011-08-29 17:12 Hukin 阅读(1595) | 评论 (0)编辑 收藏
     摘要: 创建了一个名为:hbchen 密码为:hbchen (的)用户。
然后登录一下。
mysql>exit;
@>mysql -u hbchen -p
@>输入密码
mysql>登录成功   阅读全文
posted @ 2011-08-28 21:04 Hukin 阅读(21692) | 评论 (0)编辑 收藏
     摘要: jion 语句有三种,inner join, left outer join 和 right outer join 都可以简写,分别为jion,left join,right jion。

jion语句可以用来组合两个表中的记录,只要在公共字段之中有相符的值即可,该语句联合两个表查询得到的结果是可以添加新的数据,可以把它看成将两个具有相关内容的表联接在一起新生成的表,而一般的select 语句没有这个功能。  阅读全文
posted @ 2011-08-28 18:31 Hukin 阅读(16201) | 评论 (0)编辑 收藏
     摘要: mysql中的where和having子句的区别

http://hi.baidu.com/ww999/blog/item/f330c8d3073107d0a8ec9a72.htmlwwhttp://hi.baidu.com/ww999/blog/item/f330c8d3073107d0a8ec9a72.htmlmysql中的where和having子句都可以实现过滤记录的功能,但他们的用法还是有一些区别的,看一例子:
用group by和having子句联合来查出不重复的记录,sql如下:
select uid,email,count(*) as ct from `edm_user081217` GROUP BY email
然后看这个,就容易理解了
select uid,email,count(*) as ct from `edm_user081217` GROUP BY email HAVING ct > 1
先用group by 对email进行分组,在用having来过滤大于1的,这样查找出来的就是重复的记录了.  阅读全文
posted @ 2011-08-28 17:12 Hukin 阅读(32610) | 评论 (2)编辑 收藏
     摘要: 大家都知道ArrayList和LinkedList的大致区别:

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

ArrayList和LinkedList是两个集合 类,用于存储一系列的对象引用(references)。例如我们可以用ArrayList来存储一系列的String或者Integer。那么 ArrayList和LinkedList在性能上有什么差别呢?什么时候应该用ArrayList什么时候又该用LinkedList呢?  阅读全文
posted @ 2011-08-25 16:37 Hukin 阅读(243) | 评论 (0)编辑 收藏
     摘要: threadJVM
定义:守护线程--也称“服务线程”,在没有用户线程可服务时会自动离开。优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。

设置:通过setDaemon(true)来设置线程为“守护线程”;将一个用户线程设置为守护线程的方式是在 线程对象创建 之前 用线程对象的setDaemon方法。

example: 垃圾回收线程就是一个经典的守护线程,当我们的程序中不再有任何运行的Thread,程序就不会再产生垃圾,垃圾回收器也就无事可做,所以当垃圾回收线程是JVM上仅剩的线程时,垃圾回收线程会自动离开。它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。

生命周期:守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。也就是说守护线程不依赖于终端,但是依赖于系统,与系统“同生共死”。那Java的守护线程是什么样子的呢。当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则JVM不会退  阅读全文
posted @ 2011-08-14 16:01 Hukin 阅读(1487) | 评论 (1)编辑 收藏
首先,你要找到msdbg2.dll。一般就在%CommonProgramFiles%\Microsoft Shared\VS7Debug”目录下。
找找先,实在不行搜索吧;如果没有直接下载一个,有的也需要执行以下操作:
msdbg2.dll文件拷贝一份到windows/system32目录下,然后在运行中regsvr32 msdbg2.dll,重启vs即可。
posted @ 2011-07-12 20:23 Hukin 阅读(3014) | 评论 (3)编辑 收藏
     摘要: 对于SOCKET在这里我不想究其历史,我只想说其时它是一种进程通讯的方式,简言之就是调用这个网络库的一些API函数就能实现分布在不同主机的相关进程之间的数据交换.
SOCKET中首先我们要理解如下几个定义概念:

一是IP地址:IP Address我想很容易理解,就是依照TCP/IP协议分配给本地主机的网络地址,就向两个进程要通讯,任一进程要知道通讯对方的位置,位置如何来确定,就用对方的IP

二是端口号:用来标识本地通讯进程,方便OS提交数据.就是说进程指定了对方进程的网络IP,但这个IP只是用来标识进程所在的主机,如何来找到运行在这个主机的这个进程呢,就用端口号.

三是连接:指两个进程间的通讯链路.

四是半相关:网络中用一个三元组可以在全局唯一标志一个进程:
(协议,本地地址,本地端口号)这样一个三元组,叫做一个半相关,它指定连接的每半部分。   阅读全文
posted @ 2011-06-27 10:46 Hukin 阅读(193) | 评论 (0)编辑 收藏
在网页中书写相对路径: 使用被引用文档或素材相对于当前页面的相对路径,例如,在网页“/home/www/a/index.htm”引用素材“/home/www/a/images/a.jpg”,其相对路径应该是“./images/a.jpg”或“images/a.jpg”。 
在JS文件中书写相对路径:JS文件是指在页面中引用的外部JavaScript文件,其中可能采用JavaScript代码生成html代码,由于生成的html代码是嵌入在引用该JS文件的页面中,因此,在描述相对路径时,应该使用被引用的文档或素材相对于引用JS文件的页面之间的相对路径。例如,文档“/home/www/a/index.htm”中引用了JS文件“/home/www/a/js/hello.js”,而在该js中生成一段引用素材“/home/www/a/images/1.jpg”的html代码,则在这段代码中,其相对路径应该是“./images/1.jpg”或“images/1.jpg”,而不能是“../images/1.jpg”。 
在CSS文件中书写相对路径:CSS文件是指在页面中引用的外部样式定义文件,该文件通常用于定义页面中各种html标记的显示效果(例如文本的字体名称、字体大小、缩进、边距等),CSS文件中同样可以引用外部的素材或文档(例如设置某个DIV对象的背景图片)。和JS文件不同,浏览器认为CSS文件也是一个独立的文档,因此,在CSS中对素材的引用可以通过计算素材文件和该CSS文件之间的相对路径来实现,而与引用该CSS文件的页面所在的位置无关。例如,文档“/home/www/a/index.htm”中引用了CSS文件“/home/www/a/css/main.css”,而在该CSS中引用了素材“/home/www/a/images/1.jpg”,则在CSS中对于该素材引用的相对路径应该是“../images/1.jpg”,而不能是“./images/1.jpg”或“images/1.jpg”。 
在Flash中书写相对路径:Flash用于表现网页中的某些动态效果,使用Flash的网页往往更美观,交互性更强。在Flash文件中,同样可以引用外部的素材(例如,使用Flash制作一个精美的相册),那么,应该如何在Flash中使用相对路径引用外部素材呢?与JS文件类似,浏览器也不认为Flash文件是一个独立的文档,而是认为其是一个嵌入在页面内的素材,因此,在Flash文件中引用素材时,同样应该使用被引用的素材和嵌入Flash的html页面之间的相对路径。例如,文档“/home/www/a/index.htm”中引用了Flash文件“/home/www/a/swf/main.swf”,而该Flash中引用了素材“/home/www/a/images/1.jpg”,则正确的相对路径是“./images/1.jpg”或“images/1.jpg”,而不是“../images/1.jpg”。
posted @ 2011-06-24 09:30 Hukin 阅读(901) | 评论 (0)编辑 收藏
     摘要: Embed
(一)、基本语法:
embed src=url
说明:embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等等,
Netscape及新版的IE 都支持。url为音频或视频文件及其路径,可以是相对路径或绝对路径。
示例:

(二)、属性设置:
1、自动播放:
语法:autostart=true、false
说明:该属性规定音频或视频文件是否在下载完之后就自动播放。
true:音乐文件在下载完之后自动播放;
false:音乐文件在下载完之后不自动播放。
示例:


2、循环播放:  阅读全文
posted @ 2011-06-23 14:14 Hukin 阅读(163) | 评论 (0)编辑 收藏
     摘要:   阅读全文
posted @ 2011-06-16 16:45 Hukin 阅读(6719) | 评论 (0)编辑 收藏
1.将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中;

2.在server.xml中设置数据源,以MySQL数据库为例,如下:
在<GlobalNamingResources> </GlobalNamingResources>节点中加入,
      <Resource
      name="jdbc/DBPool"
      type="javax.sql.DataSource"
      password="root"
      driverClassName="com.mysql.jdbc.Driver"
      maxIdle="2"
      maxWait="5000"
      username="root"
      url="jdbc:mysql://127.0.0.1:3306/test"
      maxActive="4"/>
   属性说明:name,数据源名称,通常取”jdbc/XXX”的格式;
            type,”javax.sql.DataSource”;
            password,数据库用户密码;
            driveClassName,数据库驱动;
            maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
                     接将被标记为不可用,然后被释放。设为0表示无限制。
            MaxActive,连接池的最大数据库连接数。设为0表示无限制。
            maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示
                     无限制。

3.在你的web应用程序的web.xml中设置数据源参考,如下:
  在<web-app></web-app>节点中加入,
  <resource-ref>
    <description>MySQL DB Connection Pool</description>
    <res-ref-name>jdbc/DBPool</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
 </resource-ref>
  子节点说明: description,描述信息;
               res-ref-name,参考数据源名字,同上一步的属性name;
               res-type,资源类型,”javax.sql.DataSource”;
               res-auth,”Container”;
               res-sharing-scope,”Shareable”;

4.在web应用程序的context.xml中设置数据源链接,如下:
  在<Context></Context>节点中加入,
  <ResourceLink
   name="jdbc/DBPool" 
   type="javax.sql.DataSource" 
   global="jdbc/DBPool"/>
   属性说明:name,同第2步和第3步的属性name值,和子节点res-ref-name值;
             type,同样取”javax.sql.DataSource”;
             global,同name值。
 
至此,设置完成,下面是如何使用数据库连接池。
1.建立一个连接池类,DBPool.java,用来创建连接池,代码如下:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DBPool {
    private static DataSource pool;
    static {
         Context env = null;
          try {
              env = (Context) new InitialContext().lookup("java:comp/env");
              pool = (DataSource)env.lookup("jdbc/DBPool");
              if(pool==null) 
                  System.err.println("'DBPool' is an unknown DataSource");
               } catch(NamingException ne) {
                  ne.printStackTrace();
          }
      }
    public static DataSource getPool() {
        return pool;
    }
}

2.在要用到数据库操作的类或jsp页面中,用DBPool.getPool().getConnection(),获得一个Connection对象,就可以进行数据库操作,最后别忘了对Connection对象调用close()方法,注意:这里不会关闭这个Connection,而是将这个Connection放回数据库连接池。
posted @ 2011-06-14 15:06 Hukin 阅读(164) | 评论 (0)编辑 收藏
郁闷!为了在MyEclipse配置Tomcat 服务器,竟然弄了我几乎一个上午,也没弄成功,最后才注意到本该早注意到Tomcat 5.x还有个JDK这个东东,才成功了。一上午辛辛苦苦也没解决就是因为没注意到他害的,其实配置是很简单的。下面是其步骤:
  一、单击工具栏的的黑小三角或者单击 菜单栏窗口—>首选项,出现首选项对话框,在对话框的左边框中找到MyEclipse—>Application Servers下找到Tomcat选项,如下图,
二、根据自己的Tomcat版本选择相应的Tomcat选项(我的是5.0版本),然后在对话框右侧的Tomcat home directory选项选择Tomcat的安装目录,下面的Tomcat base directory和Tomcat temp directory系统会自动为你填上,Optional  program arguments可以不用填,我也不知道这是做什么用的,再选上Enable选项,要不然在待会儿在Server中看不到Tomcat服务器
三、千万别忘了Tomcat 选项下面的JDK,我就是因为没注意到它才一直不成功,单击JDK,弹出如下对话框,
Notes会提示你怎么做,
四、点击Tomcat JDK name旁的"Add",弹出如下对话框:
JRE名称(N)选项填上名字(可以随便取),在JRE主目录选项选择你的jdk安装目录(仅仅只是jdk,不包含jre),JRE系统库系统会自动添加,缺省JVM参数可以不用填,按“确定”回到上级再按“确定”就OK了。
如果你配置的不对的话会弹出出错提示对话框
就是Notes提示的第一条。
五、回到MyEclipse主界面,在Server下多了个Tomcat选项,右键单击Tomcat,选择Mannage Deployment(如果你不配置的话等一下你是运行不了项目的),弹出Srever Deployments对话框,在Server选项上选择你刚刚配置的Tomcat服务,点击"Add",弹出New Deployment对话框,
在Project上选择你要运行的项目,单击“完成”返回上一级按“确定”就可以了。
  最后启动Tomcat服务器,在Web Browser输入地址,到这里就大功告成了。
是不是发现原来很简单呢!
提醒一下,在New Deployment对话框中的Packaged Archive选项是把项目打包成.war形式运行的。
  刚开始是因为MyEclipse自带的Derby不会用,才去配置Tomcat的,等Tomcat配置成功后,也就明白怎么用Derby了,其实很简单,配置都不用你去配,系统已经帮你配好了,你只要启动它就行了。
只是感觉MyEclipse这方面没Lomboz—Elipse那么方便,只要在想要执行的jsp文件上选择“Run on Server”就行了,在MyEclipse下不行
posted @ 2011-06-14 14:49 Hukin 阅读(304) | 评论 (0)编辑 收藏

比如:在网上书店应用中,从一个客户开始购物,到最后结账,整个过程是一个Session.
Servlet API中定义了javax.servlet.http.HttpSession接口,Servlet容器必须实现这一接口。当一个Session开始时,Servlet容器将创建一个HttpSession对象,在HttpSession对象中可以存放客户状态的信息。Servelt容器为HttpSession分配一个唯一标识符,称为Session ID.Servlet容器把Session ID作为Cookie保存在客户的浏览器中。每次客户发出HTTP请求时,Servlet容器可以从HttpRequest对象中读取Session ID,然后根据SessionID找到相应的HttpSession对象,从而获取客户的状态信息。
HttpSession接口中的方法:
getId():返回Session的ID;
invalidate():使当前的Session失效,Servlet容器会释放HttpSession对象占用的资源。
setAttribute(String name,Object value):将一对name/Value属性保存在HttpSession对象中
getAttribut(String name):根据name参数返回保存在HttpSession对象的属性值。
getAttributeNames():以数组的方式HttpSession对象中所有的属性名。
isNew():判断是否是新创建的Session,如果是新创建的Session,返回true,否则返回false
setMaxInactiveInterval():设定一个Session可以处于不活动状态的最大时间间隔,以秒为单位。如果超过这个时间。Session自动失效,如果设置为负数,表示不限制Session付出与不活动状态的时间。
getMaxInactiveInterval()读取当前Sessions可以处于不活动状态的最大时间间隔。
在Java Servlet API中提出了跟踪Session的另一种机制,如果客户浏览器不支持Cookie,Servlet容器可以重写客户请求的URL,吧Session ID添加到URL信息中。
HttpServletResponse接口提供了重写URL的方法:
public java.lang.String encodeURL(java.lang.String url)
该方法的实现机制为:
先判断当前的Web组件是否启用Session,如果没有启用Session,例如在JSP中声明
<%@ page session="false"%>或者已经执行了session.invalidate()方法,那么直接返回参数URL
再判断客户浏览器是否支持Cookie,如果支持Cookie,就直接返回参数URL;如果不支持,就在参数URL中加入Session ID信息,然后返回修改后的URL.

String username1 = "";  (username1 为自定义的字段,从数据库中取出值后放到里面)
request.getSession().setAttribute("username",username1);            
 从request里得到session在把值传进去,不过这种方法可以将从数据库里取得的数据用session显示于页面,但当在页面点击按钮产生别的action的时候,取出来显示在页面的数据就都没了,原来是request的生命周期是一个请求,当另外一个请求发生时,原来action中的request的值没重置了,也就是说原来的数据都没了,所以在页面也不会显示.这时候要将原来action中的request.getSession().setAttribute("username",username1);  
改为HttpSession session = request.getSession();   session.setAttribute("username",username1);这时候传到页面的生命周期就是一个会话,即使你在页面有别的请求,但session中的值依然存在.

posted @ 2011-06-14 10:40 Hukin 阅读(360) | 评论 (0)编辑 收藏