天下难事,必作于易;天下大事,必作于细
如果我有方向,那就是远方
posts - 11,comments - 8,trackbacks - 0
     摘要:   阅读全文
posted @ 2007-12-06 09:36 flyepp 阅读(379) | 评论 (0)编辑 收藏
     摘要:   阅读全文
posted @ 2007-12-05 20:48 flyepp 阅读(231) | 评论 (0)编辑 收藏
ssh
ssh-keygen -t rsa
scp ~/.ssh/identity.pub drobbins@remotebox
ssh drobbins@remotebox
cat identity.pub >> ~/.ssh/authorized_keys

exit
ssh drobbins@remotebox


posted @ 2007-11-29 00:46 flyepp 阅读(226) | 评论 (1)编辑 收藏

转载自http://blog.csdn.net/yuekun1172006/archive/2007/06/02/1634878.aspx

类装入器是 JVM 用来装入类的类,它对于 Java 编程是非常重要的一个概念。一般情况下,程序员在编写程序的时候都可以忽略类装入器的存在性。但是对于服务器端编程或者是一些特殊情况下时候,深入了解类装入器的机制以及其在不同情况下的实现还是非常必要的。

首先,当一个 JVM 启动的时候,Java 缺省开始使用三个类装入器。它们分别是:

  • 引导(Bootstrap)类装入器;
  • 扩展(Extension)类装入器;
  • 系统(System)类装入器;

它们分别实现如下的功能:

  • 引导类装入器是用本地代码实现的类装入器。它负责将 <Java_Runtime_Home>/lib 下面的类库加载到内存中。
  • 扩展类装入器是由 Sun 的 ExtClassLoader 实现的。它负责将 < Java_Runtime_Home >/lib/ext 或者由系统变量 java.ext.dir 指定位置中的类库加载到内存中。
  • 系统类装入器又叫应用程序类装入器,是由 Sun 的 AppClassLoader 实现的。它负责将系统类路径(CLASSPATH)中指定的类库加载到内存中。

当应用程序需要加载某个类到内存中的时候,类装入器是如何工作的呢?这就设计到类装入器的一个重要方面:代理机制。每一个类装入器,除了引导类装入器以外,都有一个父类装入器。对于系统缺省定义的三个类装入器,引导类装入器是扩展类装入器的父类装入器,而扩展类装入器是系统类装入器的父类装入器。当然,应用程序也可以使用自己的类装入器来使用特定的方法来装载类,因此,整个系统中的类装入器就形成一个树状结构。

当使用某个类装入器来试图装载某个类的时候,该类装入器会首先使用其父类装入器来试图装载该类。对于每一个装载进来的类,JVM 都会给其分配一个唯一的 ID。因此,不同类装入器可以装载同一个类到 JVM 中。例如,对于如下图结构的 ClassLoaderAClassLoaderB


图 1 类装入器的结构
图 1 类装入器的结构

假设类 C 在系统类装入器指定的类路径中,则无论是使用 ClassLoaderA 还是使用 ClassLoaderB,都只会得到同样一个类 C

但是如果类 C 分别在 ClassLoaderA 以及 ClassLoaderB 指定的类库中,则使用 ClassLoaderA 得到到类 C 实例会不同于 ClassLoaderB 得到的类 C 实例。尽管两个类装入器在同一个 JVM 中。

上面的类装入器的向上代理结构看上去很完美了,但是,当系统变得复杂的时候,就还是显得不够用了。

例如,当 Java 引入了 JNDI 以后,JNDI 核心部分是通过引导 类装入器在 JVM 启动的时候装载进入 JVM 的。而 JDNI 核心部分是通过配置信息来在运行时候装载定义在用户的类路径中的特定类来完成特定需要。而这是上面定义的类装入器的向上代理模式所不能支持的。

为了解决这个问题,Java 2 中引入了线程上下文(Thread Content)类装入器的概念,每一个线程有一个 Context 类装入器。这个 Context 类装入器是通过方法 Thread.setContextClassLoader() 设置的,如果当前线程在创建后没有调用这个方法设置 Context 类装入器,则当前线程从他的父线程继承 Context 类装入器。如果整个应用都没有设置 Context 类装入器,则系统类装入器被设置为所有线程的 Context 类装入器。

对于我们上面所说 JNDI 的情况,引导 类装入器装载进入的 JNDI 核心类会使用 Context 类装入器来装载其所需要的 JNDI 实现类,而不是将该装载任务代理给其父类装入器来完成。这样,就解决了上面的问题。可以认为 Context 类装入器在传统的 Java 向上代理机制上打开了一个后门。Context 类装入器在 J2EE 中使用的很广泛,比如 Java 命名服务(JNDI),Java API for XML Parsing(JAXP)(注:在 Java1.4 中 JAXP 才作为 Java 的核心类的一部分,它才开始使用 Context 类装入器来加载不同的实现类)等。

简单而言,Java 中的类装入器就是上面几种,但是,在具体使用中,还是有很多变化,我们下面分别对于一些情况进行说明。

posted @ 2007-11-22 10:51 flyepp 阅读(561) | 评论 (0)编辑 收藏
分析apache访问日志的项目,例如http://www.mora.cn/awstats/awstats.pl?config=www.mora.cn
经理快速讲的,简单记录一下,有空自己44
参考文章:http://www.chedong.com/tech/awstats.html
1、cd /usr/local/
2、tar -zxvf awstats6.7.tar.gz
3、rm -f awstats6.7.tar.gz
4、mv  awstats6.7 awstats
5、pert awstats/tools/awstats_configure.pl进行安装
6、vi /etc/awstats/awstats.192.168.1.20.conf    修改其中的LogFile=为对应的apache日志
7、vi /usr/local/apache2.2.4/conf/httpd.conf   
      a、修改<IfModule log_config_module>模块为LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined模式的日志记录方式
      b、加入如下内容#
         # Directives to add to your Apache conf file to allow use of AWStats as a CGI.
         # Note that path "/usr/local/awstats/" must reflect your AWStats Installation path.
         #
         Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
         Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
         Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
         ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"
          #
         # This is to permit URL access to scripts/files in AWStats directory.
         #
         <Directory "/usr/local/awstats/wwwroot">
         Options None
         AllowOverride None
         Order allow,deny
         Allow from all
         </Directory>
8、perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=192.168.1.20 -update
9、把8这行语句加入到crontab中进行定时执行
posted @ 2007-10-17 13:55 flyepp 阅读(242) | 评论 (0)编辑 收藏
查看自己机器的网关。

 第一:从配置文件
root@rman sysconfig]# pwd /etc/sysconfig
 [root@rman sysconfig]# more network
NETWORKING=yes
HOSTNAME=rman
GATEWAY=192.168.1.250

第二:从配置文件
[root@rman network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@rman network-scripts]# more ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.151
 NETMASK=255.255.255.0
GATEWAY=192.168.1.250
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet

第三:从命名 traceroute
 其中第一跳就是自己的网关
 [root@rman network-scripts]# tra
 tracepath tracepath6 traceroute traceroute6 trap
[root@rman network-scripts]# traceroute 202.96.128.68
 traceroute to 202.96.128.68 (202.96.128.6, 30 hops max, 38 byte packets
1 192.168.1.250 (192.168.1.250) 0.565 ms 0.419 ms 0.334 ms
2 61.144.23.112 (61.144.23.112) 1.110 ms 0.962 ms 0.986 ms
3 219.135.214.25 (219.135.214.25) 1.229 ms 0.843 ms 0.982 ms

第四:其他的没想到
posted @ 2007-09-28 20:31 flyepp 阅读(4224) | 评论 (5)编辑 收藏
    在自己本机1个晚上就配置好了svn+subclipse,可安装到老婆机子上足足花了3个晚上,在老婆机子上总是出现认证失败,百度了一下,最多的解决办法是存成无bom的utf-8格式,或者acsii-unicode,unicod-utf-8,照着弄了弄,还是不行,后来仔细看了看老婆的系统中运行的服务,发现ssl服务开启,因为知道subclipse不支持ssl协议,只有apache方式才支持,所以赶紧停掉服务解决,今天检查自己的系统服务,发现自己ssl协议也开着,奇怪自己为什么不受影响,看了看svnserve.conf,发现里面一行# authz-db = authz前面的#我没去掉,去掉#就认证失败了。。。
   总结一下,因为ssl关系出现认证失败的解决办法
   1、停掉ssl
   2、# authz-db = authz这行的#保留(老婆的项目组不需要配置权限组、应用内容的详细权限分配,只需要添加几个用户即可)
   3、不用subclipse,改用apache
posted @ 2007-09-10 14:28 flyepp 阅读(855) | 评论 (2)编辑 收藏

Filed under: Programming, IT — avenger @ 5:54 pm

在DRL上看到有朋友抱怨Firefox占用内容太多,经常造成内存泄漏的问题。自己在使用的过程中也有同感,开了十个左右的tab,时间一久,占用内存就会增加到500兆左右。实在是恐怖。

不过DRL上高人多多,有人给支了这招:

在about:config中

1.加入一个boolean项:config.trim_on_minimize,并设置为true,这样就可以在最小化时自动释放内存。

2.修改browser.sessionhistory.max_total_viewers修改值为5或更小{页面快进/快退功能中保存的页面总数,默认是-1(无限)}。

赶紧试了一下,乖乖,同样的页面,占用内容只有50兆左右了,而且在最小化的时候占用只有5兆。

太爽了,好东西不敢独享,有同样烦恼的朋友不妨一试。

posted @ 2007-09-05 15:35 flyepp 阅读(192) | 评论 (0)编辑 收藏

安装svn1.4 subclipse1.0

一、安装顺序svn,将svn按window服务运行的svnserve,subclipse

二、主要参考了以下文章
      1、http://dev2dev.bea.com.cn/techdoc/20060620822.html
      2、http://www.ibm.com/developerworks/cn/opensource/os-subversion/
      3、http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/
      4、http://www.iusesvn.com/html/62/t-662.html
      5、http://blog.csdn.net/slawdan/archive/2007/08/02/1722981.aspx

三、安装过程遇到的问题
      1、svnserve配置遇到1053错误
         C:\Program Files\Subversion\bin>sc create svnserve binpath= "\"c:\Program Files\Subversion\bin\svnserve.exe\" --service --root c:\svnprojects\project1" displayname= "Subversion" depend= tcpip
         a、binpath,displayname,depend几个参数后面接等号,不能有空格,而等号后面必须有空格
         b、如果binpath的目录带空格,目录前后加\"
         c、svnserve.exe的参数格式是-- ,比如--service和--root

四、SVN的其他访问方式
      1、Apache
      2、TortoiseSVN客户端
  

posted @ 2007-09-05 11:22 flyepp 阅读(699) | 评论 (0)编辑 收藏

准备研究下php论坛,下面是安装过程

一、安装顺序apache2.2 php5.2 zend3.3 mysql5.1 discuz6.0

二、主要参考了http://www.cndw.com/tech/php/200602153339.asp

三、安装过程遇到的问题
        1、apache不能启动,用netstat -ab发现迅雷占用了80端口,退出迅雷后解决
        2、apache的主目录改成别的目录,报403没有权限错误,把根用户的权限由deny from all 改为allow from all后解决
        3、apache不能加载php,提示说改版本的php不支持DSO模式,发现是apache和php的版本冲突造成的,将httpd.conf文件中的php5apache2.dll改为php5apache2_2.dll解决
        4、php无法链接mysql,发现php.ini的extension_dir目录写错了

posted @ 2007-09-04 17:12 flyepp 阅读(687) | 评论 (0)编辑 收藏

作者fbysss
msn:jameslastchina@hotmail.com 
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处
关键字:乱码

文件1:encode.jsp

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<%
    String sFileName = "中文文件名.doc";
   sFileName = java.net.URLEncoder.encode(sFileName);//代码行1
%>
 <a href="javascript:decode('<%=sFileName%>');">decode</a>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<body>
<script language="javascript">
function    decode(filename){
   location.href="decode.jsp?filename="+filename;//代码行2
}

</script>
</body>
</html>

文件2:decode.jsp

<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gbk"%>
<%
    String sFileName = request.getParameter("filename");
 sFileName = java.net.URLDecoder.decode(sFileName,"GBK");//代码行3
     out.println("filename:"+sFileName);
%>

        看上去,这样肯定可以达到要求了,但是事实不是这样,javascript并不识别jsp编码后的字符串:
用鼠标移动到链接上方时,可以看到IE状态栏上的确是正确的编码,即"%D6%D0%CE%C4%CE%C4%BC%FE%C3%FB.doc"
然而要注意的是:用鼠标右键点击链接-〉属性看到的URL是javascript:decode('ÖÐÎÄÎļþÃû.doc');后果可想而知,转向后输出的是乱码。
       弄了半天,转UTF-8也是一样,一个小问题整的很郁闷,最后想到,还得在js这里下手。
       把encode.jsp代码行1注释掉,代码行2前面加入一行:filename = encodeURI(filename);
看到一点进展:转向后的url已经很规范了:filename=%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6%E5%90%8D.doc,但是结果仍然是乱码。为啥呢?注意观察,前面的编码和后面是不一样的!
然而,javascript的EncodeURI没有提供编码参数,默然就是UTF-8.  好,那么 sFileName = java.net.URLDecoder.decode(sFileName,"UTF-8");行不行呢?答案是:不行,原因我现在还没找到,找到了会在此补充,如果哪位知道,还望指点。
解决办法:把代码行3替换成
sFileName= new String(sFileName.getBytes("ISO-8859-1"), "UTF-8");
现在再看结果,已经是正常的中文了。

补充:Ajax中,servlet输出中文之后,需要js读取,同样面临编码问题,可以采取如下方式:
在servlet中用URLEncoder编码sText = URLEncoder.encode(sText,"UTF-8");
在js中用decodeURI解码xText = decodeURI(xText);

posted @ 2007-09-04 16:34 flyepp 阅读(1205) | 评论 (0)编辑 收藏
仅列出标题