Java堂  


彻底拒绝Realplayer漏洞

归档在: Tools — Jet @ 1:18 下午
原文出处: http://www.javatang.com/archives/2008/03/06/1822262.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

首先引用一段关于Realplayer漏洞的内容:

RealPlayer的MPAMedia.dll库所提供的RealPlayer数据库组件在处理播放列表名时存在栈溢出漏洞,远程攻击者可能利用此漏洞控制用户系统。由于可使用ierpplug.dll所提供的IERPCtl ActiveX控件将本地文件导入到RealPlayer中指定的播放列表,因此如果用户受骗访问了恶意网页并导入了恶意文件的话,就可以触发这个溢出,导致拒绝服务或执行任意指令。

说的直白一些,这个溢出漏洞主要借助于Realplayer内置的一个浏览器进行木马传播,虽然可以将软件更新到最新的版本,但是对于后面是否还会依赖于此产生新的漏洞依然很是担心.所以最干脆的方法就是不使用Realplayer内嵌的这个浏览器.可以将Realplayer安装目录下的 RealPlayer\rpplugins 目录中 rpwe3260.dll 删除或改名,这样虽然启动软件的时候会有两个对话框,但是不影响软件的正常使用,而从根部避免了此漏洞.

给Windows Live Mail一个安全的存放邮件的地方

归档在: Tools — Jet @ 2:02 上午
Tags:
原文出处: http://www.javatang.com/archives/2008/01/16/0229257.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

wlmail_overview.gif

Windows Live Mail,一个微软开发的电子邮件客户端,以其华丽的外表吸引了很多人去使用,我也是其中一员。

不过在使用的过程中,一个微软长期以来坚持不懈的习惯依然被完整的保持在最新的Windows Live Mail上面,那就是默认将所有的邮件等资料存放在系统目录下面。或许微软对于自己的操作系统太过于自信了,但是在我使用的时候却是战战兢兢,时刻祈祷系统不要崩溃。

但是最根本的办法就是将邮件等资料存放在非系统盘,比如D盘。最后参考着Outlooks Express的设置方法,终于找到了修改的地方(属于深度隐藏,好像微软不想让你发现似的):打开”Option”对话框,依次选择”Advanced” - “Maintenace…”按钮 - “Store Folder…”按钮,然后点”Change…”按钮选择新的文件夹。选择好之后需要重新启动一下Live Mail,这个时候程序会自动将资料复制到新的位置。

这下,世界变得如此美好了~~

MyEcliplse性能优化

归档在: Tools — Jet @ 11:31 上午
原文出处: http://www.javatang.com/archives/2007/12/06/3154252.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

MyEclipse功能非常的强大,现在基本是使用Eclipse开发JavaEE的必备插件了。但是巨大的MyEclipse也导致Eclipse启动的速度加慢,另外开发的过程中有时候容易造成界面“假死”的状况。

今天介绍几个优化MyEclipse的方法

1. 加大JVM的非堆内存,具体的做法和原因参考我前一篇文章《由MyEclipse内存不足谈谈JVM内存》

2. 去除不需要加载的模块
一个系统20%的功能往往能够满足80%的需求,MyEclipse也不例外,我们在大多数时候只需要20%的系统功能,所以可以将一些不使用的模块禁止加载启动。通过Windows - Preferences打开配置窗口,依次选择左侧的General - Startup and Shutdown,这个时候在右侧就显示出了Eclipse启动时加载的模块,可以根据自己的实际情况去除一些模块。

3. 取消MyEclipse在启动时自动验证项目配置文件
默认情况下MyEclipse在启动的时候会自动验证每个项目的配置文件,这是一个非常耗时的过程,可以在Preferences窗口依次选择MyEclipse - Validation,然后在右侧的Validator列表中只保留 Manual 项就可以了。如果需要验证的时候只需要选中文件,然后右键选择 MyEclipse - Run Validation就可以了。

通过上面的几个步骤可以有效优化MyEclipse的启动速度和运行效率,如果你还有新的方法可以回复 :)

参考资料:
让Eclipse快速启动的方法

由MyEclipse内存不足谈谈JVM内存

归档在: JavaPlateform, Tools — Jet @ 3:16 下午
原文出处: http://www.javatang.com/archives/2007/12/03/1653250.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

如果没有进行设置的话,在使用MyEclipse的经常出现如下图所示内存不足的提示。
myeclipse.png
提示中说的很明白:“MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains.”意思是说当前只有小于5%的非堆内存是空闲的。所以我们只要将这个值设置大一些就可以了。

提示中给出了设置的参数:

  1. -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M

这里有几个问题:
1. 各个参数的含义什么?
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?

下面我们一一进行回答

1. 各个参数的含义什么?

参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。

  • 堆(Heap)和非堆(Non-heap)内存
    按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
  • 堆内存分配
    JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
  • 非堆内存分配
    JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
  • JVM内存限制(最大值)
    首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。
  • 2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?

    通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因:

    1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;

    2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

    3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?

    那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则:

    参数形如“项 值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。比如我们使用-vm C:\Java\jre1.6.0\bin\javaw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:

    1. -vm
    2. C:\Java\jre1.6.0\bin\javaw.exe

    按照上面所说的,最后参数在eclipse.ini中可以写成这个样子:

    1. -vmargs
    2. -Xms128M
    3. -Xmx512M
    4. -XX:PermSize=64M
    5. -XX:MaxPermSize=128M

    实际运行的结果可以通过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按钮进行查看。

    另外需要说明的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:

    1. -showsplash
    2. org.eclipse.platform
    3. --launcher.XXMaxPermSize
    4. 256m
    5. -vmargs
    6. -Xms40m
    7. -Xmx256m

    其中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以这里可以把–launcher.XXMaxPermSize和下一行使用#注释掉。

    参考资料:
    JDK5.0垃圾收集优化之–Don’t Pause
    提问:如何超越JVM内存限制?
    MemoryMXBean (Java 2 Platform SE 5.0)
    MyEclipse/Eclipse的内存优化与内存不足的解决办法
    eclipse.ini文件的问题
    eclipse 为什么报错

    让WindowsXP中的IIS支持多站点的工具

    归档在: OS, Tools — Jet @ 4:48 下午
    Tags: ,
    原文出处: http://www.javatang.com/archives/2007/11/19/4845244.html
    作者: Jet Mah from Java堂
    声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

    众所周知,在XP professional中使用IIS不能创建多个站点,虽然我们可以使用“虚拟目录”来调试程序,但有很多时候并不方便。今天无意中发现一个可以创建多站点的工具-IISAdmin,下载地址:http://www.firstserved.net/download/iisadmin.zip

    程序非常简单,界面如下:
    iisadminfull.gif
    使用“create”创建一个新的站点,可以设置站点描述、端口号以及站点的位置。软件没有设置“编辑”功能,如果需要对站点进行编辑处理的话可以使用IIS进行编辑,这个时候打开IIS之后会发现刚才创建的所有的站点都已经显示在列表中了。

    点击软件中的“start”可以启动选中的站点,细心的朋友可以注意到的是每次只能启动一个站点。如果我们在IIS中同时启动两个站点的话会出现一个“不支持请求”的错误提示。所以这个软件很巧妙的解决了在XP中IIS不能创建多个站点的问题(这一点应该是被IIS所屏蔽了),但没有从根本上解决同时启动多个站点的问题,我想这个应该是XP系统底层对IIS进行的限制,基本无法突破。不过这样对于我们调试程序来说已经足够了。

    软件同时还可以了重新启动IIS的功能,其实是调用了软件中所包含的iisreset程序,类似于iis6中自带的功能,非常的方便。软件还支持Windows 2000 Professional和Windows Vista Business系统。

    最后需要注意的一点是如果使用IISAdmin删除一个正在运行的站点,则如果再启动另外一个站点的时候会出现如下的错误:
    iisadmin_error.png
    这个时候IIS中所有站点也会出现红色的图标,无论做任何操作都是提示“不支持请求”。这个应该是软件的一个bug,解决的办法是重启一下IIS就可以了。

    非常好的服务器备份软件 - Acronis True Image Server

    归档在: Tools, Web&Server — Jet @ 4:58 上午
    原文出处: http://www.javatang.com/archives/2007/11/16/5809241.html
    作者: Jet Mah from Java堂
    声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

    服务器备份是非常重要的,特别对于应用于商用的数据。当然备份的方式有很多种,但是我觉得最简单而且有效的一种方式就是增加一块新的硬盘最为备份硬盘,然后使用程序将特定的数据根据频率备份到该硬盘上面,这样即使其中有一块硬盘出现问题依然可以保证数据的完整性。

    上面的方案中一款优秀的备份软件是非常重要的,Acronis True Image Server是一个非常棒的选择。这款软件不仅仅可以备份某个磁盘分区,而且还可以备份指定的文件或目录,另外最主要的是它还支持备份任务功能,这样可以设定某个频率来备份指定的数据,非常的强大和方便。

    acronis_true_image.png

    软件的使用也非常简单,全部采用向导式的操作方式。另外软件有Windows和Linux两个版本,可以在http://www.verycd.com/topics/78520/下载。

    乱码造成本站之前数据破坏,借此谈谈MySQL的乱码问题

    归档在: Database, Life, Tools — Jet @ 3:18 上午
    原文出处: http://www.javatang.com/archives/2007/10/23/1847217.html
    作者: Jet Mah from Java堂
    声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

    为了防止升级失败我特意用sqlYog将数据备份了一下,然后升级的过程中没有任何问题,因为我发现原来的栏目排列有些改变,于是就直接清空数据然后再导入备份过的数据重新安装一下系统。当前清空数据库的时候没有多想,反正之前有备份。这个时候问题出现了:导入备份后的数据全部变成了乱码!确切的应该说是错码才对,因为出现的不是问号而是一些错误的中文字。

    乱码

    反复试了很多种方法依然是无效,后来从sqlYog官方网站上查到sqlYog从6.0开始每次生成的sql文件编码都是utf-8格式的,另外在操作数据之前都使用

    1. set names "utf8";

    将所有的环境都设置为utf8编码,你可以在sqlYog的查询窗口中使用

    1. SHOW VARIABLES LIKE 'character_set_%';

    查看一下语言环境。sqlYog在查看数据的时候首先查看原来数据库设置的编码格式,然后将其转换为utf8格式的数据,最后输出出来;如果修改数据则相反。上次我在博文中提到使用sqlYog6.03可以直接查看gbk编码的数据,但是查看utf8格式的编码是乱码,我觉得这应该是sqlYog6.03版本中转换编码算法的一个bug,果然在最新发布的6.10rc版本中就修复了这个错误;另外一个就是根数据库默认设置的编码也有很大的关系,因为MySQL使用的默认编码是latin1,正是这样一个非常具有历史原因的设置成为了造成乱码的最直接的原因。这里可能有人会说不是sqlYog操作之前都已经将环境设置为utf8格式了吗?这个时候应该跟MySQL本身的编码没有任何关系了呀。sqlYog操作的时候是不会有关系,但是其他进程(比如php、java等)操作的时候呢?数据写入的时候已经出现乱码了,问题就出在这里。所以为了完全杜绝MySQL的乱码问题,建议将MySQL的默认编码设置为utf8格式。

    因为wordpress数据库中的编码都是utf8格式的,我又使用的sqlYog6.03版本,所以无论查看还是备份utf8的数据都是乱码。最后只能是逐一从百度快照中将数据找出来添加到数据库中,因为我在wordpress中设置的remark规则跟时间和最后的数据id号有关系,为了不至于造成在百度中搜索出来的结果失效,所以首先先将原来数据库中的这些数据导入到新的数据中。当然这个时候wordpress已经升级成2.3了,呵呵(苦笑中…)

    目前在2006年8月份之前的数据还没有恢复,将近有80条。我会在最近这段时间将他升级完成的。

    参考资料:Which MySQL Character Sets are supported by SQLyog?

    SWT Ribbon - 基于SWT开发的美丽界面

    归档在: JavaPlateform, Tools — Jet @ 1:56 下午
    Tags: ,
    原文出处: http://www.javatang.com/archives/2007/10/16/5646211.html
    作者: Jet Mah from Java堂
    声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

    下面是官方说明的翻译文本:

    尽管有些简陋,但SWF Ribbon的界面看上去有种似曾相识的感觉。该项目的目的是创建一个类似于Office2007的标签式工具栏,它是基于SWT的。因为受到跨系统的限制,它只能是最大限度地来模拟。

    程序现在只发布了用于测试的alpha版本,你可以下载jar文件源代码。请记住目前的版本很可能有很多bug!源代码中提供了一个例子用来演示组件的使用方法,我对此不再提供额外的帮助,如有问题请使用Nebula新闻组。

    关于组件运行中的截屏和信息请查看这里

    根据官方的说明,这个很漂亮的界面组件目前仅仅发布了测试版本,但是抵挡不住美丽的诱惑,建议大家先尝试一下,呵呵。

    ribbon_ss1.gif

    Apache中显示PHP源代码的原因

    归档在: DynamicLanguage, Tools, Web&Server — Jet @ 10:53 上午
    Tags: ,
    原文出处: http://www.javatang.com/archives/2007/10/05/5331208.html
    作者: Jet Mah from Java堂
    声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

    通常来说如果Apache显示PHP源代码的主要原因是因为没有正确配置好PHP加载模块,最多的错误就是加载的php5_module文件位置错误,通常这种错误会导致Apache无法正常启动;另外最容易犯的就是没有增加php的文件头类型:

    1. AddType application/x-httpd-php .php .php3

    但是今天我确遇到一件非常奇怪的事情,上面说的两种情况都不存在但是依然显示php源代码。后来经过长时间的排查终于发现误将放置在 VirtualHost 标签内的

    1. php_flag engine off

    放到了外面,这种情况下使得针对某个站点不执行php解析的配置被设置为了全局配置了,估计这种失误比较少见,故写出来共享。

    Maxthon中ViewPage插件与卡巴斯基冲突的解决办法

    归档在: Tools — Jet @ 1:14 上午
    原文出处: http://www.javatang.com/archives/2007/09/20/1422202.html
    作者: Jet Mah from Java堂
    声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

    Maxthon中的ViewPage插件可以说是插件只的极品,用于查看网页信息非常的强大和方便。但是用过一段时间之后发现无法查看当前网页资源内容了。搜索了一下原来是被卡巴斯基的弹窗过滤掉了。

    ViewPage是弹出一个新窗口,而KIS有一个组件就是阻止网页弹出窗口。由于ViewPage是网页插件,基于网页运行,因此KIS认为造成弹出的是你运行这个插件的所在的网页,所以每次认出的弹出源都不同。建议楼主直接关掉这个组件。

    关闭方法:卡巴斯基设置-“保护”-“反间谍保护”,右边去掉“启用阻止弹出窗口”选项即可。

    参考资料:如何正确导入卡巴斯基使得ViewPage工具生效?

    下一页 »