| 璐莹's profileTina小路路PhotosBlogLists | Help |
|
Tina小路路爱做梦的小路路 December 15 病毒,离我远点 最近两周一直很忙,晚上总折腾到十点多回家,然后倒头就睡。其实也没干啥,趋势的工作暂时比较轻松,这学期的课程也很少,就是病毒整天缠着我。
先是自己的电脑中了木马,本不想理它,想等空下来再说。但后来小董哥哥的电脑也出现了毛病,看他这种半个残疾,电脑是他唯一的乐趣,想想自己帮他装电脑算是给残疾人事业献一份爱心吧。可他的电脑实在中毒太深,任务管理器开不了,msconfig开不了,安全模式下软件也装不了,简直一堆烂铁。请教了刘姥姥,cocoma等高人之后都说没救了,忍痛重装。装完电脑之后首先遇到得问题是得装杀毒软件啊,而要装杀毒软件就得用我得移动硬盘拷,于是autorun病毒就进入他电脑了。装上了卡巴斯基之后想上网升级的,结果不幸高中,电脑又什么软件都装不上了,于是周二,周三,周四都在忙着帮他杀毒,baidu,google中提到得修改注册表,杀进程的办法都使用过了,但还是不行。甚至连安全模式下都无法显示隐藏文件。周五终于接受了惨痛的抉择,再次重装电脑,这次是在公司,在michael,joy的帮助下完成的,没有使用任何外插硬盘,所有的软件都是从trend ftp上下的,并且刚装完机子就把所有的微软补丁都装了,还装了趋势发的pcclin,升级到了最新版本。电脑终于活了。
本以为告一段落了,谁知昨天自己趋势的电脑又中毒了,真不知道现在网上病毒怎么这么厉害的,居然能够让一个杀毒软件公司的内部电脑也中毒,在offiscan,discovery的多重保护下,电脑还是不幸高中。而且这次病毒也很厉害,它并没有修改注册表的键值,只是把键的属性改了,真狡猾,不注意还看不出来,而且每个盘中还有autorun,每次都以为杀干净病毒了,但一开机打开硬盘就扯了。michael奋战了三个多小时才全部搞定。
病毒让我身心疲惫,甚至对网络有一种恐惧,在每次点开一个网页的时候,每次按下save的时候,心总是抖抖的,不知道这是不是又是一个trap. 微软不足以信赖,趋势,卡巴斯基,买咖啡,赛门铁克,似乎这所有的公司都不足以信赖。在病毒泛滥的网络,真不知道什么才能保证电脑的真正的安全。
也许唯一能做的就是祈求病毒离我远点。 October 05 重定向技术 重定向技术可以分为两类,一类是客户端重定向,一类是服务器端重定向。客户端重定向可以通过设置特定的HTTP头,或者写JavaScript脚本实现。
客户端重定向:
可以在javascript中写window.location.href="firstPage.jsp";这样即可完成页面之间的跳转。当然如果想包含session信息也可以先使用response.encodeRedirectURL("firstPage.jsp"),然后进行跳转。
服务器端的重定向:
服务器端的重定向技术涉及到javax.servlet.ServletContext、
javax.servlet.RequestDispatcher、
javax.servlet.http.ServletRequest、
javax.servlet.http.ServletResponse等几个接口。
服务器端的重定向可以有两种方式,一是使用HttpServletResponse的sendRedirect()方法,一是使用RequestDispatcher的forward()方法。
如response.sendRedirect("http://java.sun.com")也可以使用相对的URL。如果location以“/”开头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现。
有三种方式可以获得requestDispatcher对象,其中最常用的是request.getRequestDispatcher("url");其中url为相对路径。
如何选择:
RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用Request Dispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法
August 31 JAVA的国际化机制 国际化(Internationalization)是设计一个适用于多种语言和地区的应用程序的过程。适用于多种语言和地区的含义是当使用不同语言及处于不同的地区的用户在使用这个应用程序时,应用程序必须使用他们能看懂的语言和符合他们文化习惯来显示信息。国际化有时候被简称为i18n,因为有18个字母在国际化的英文单词的字母i和n之间。 一个国际化的程序通常具有以下特征: 有一个附加的本地化数据(localized data)及拥有在全世界各个地区执行的能力。 文本的元素,比如状态信息或GUI截面的lables,不是直接写(hardcoded)在程序中,而是被存储在本地化的数据中,并且能被程序正确的动态的使用。 支持新的语言时,不需要修改程序,不需要重新编译。 文化差异的数据,比如日期和货币,必须根据拥护的语言和习惯显示不同的格式。 可以被迅速的本地化。 本地化(Localization)是指通过增加本地描述的构件(locale-specific components )和文字翻译工作来使应用程序适应于不同的语言和地区的过程。本地化有时候被简称为l10n,应为有10个字母在本地化的英文单词的字母l和n之间。通常本地化最耗时的工作应该是文字翻译。本地化工作者们要根据地区的具体需求来为日期、数字和通货等数据建立新的格式。其他类型的数据,象声音,图象等,也需要根据具体需要来决定是否本地化。 下面通过一个简单的例子来说明如何给一个程序提供国际化的特性。这个例子在不同的语言环境下显示不同的文本信息。 一个简单的例子 先看下面的一段代码: public class NotI18N { static public void main(String[] args) { System.out.println("Hello."); System.out.println("How are you?"); System.out.println("Goodbye."); } } 如果你决定在上面的程序中给德国和法国的不同用户显示同样的信息。但是你的程序员却不是个语言专家,他不懂德语和法语。所以你需要翻译人员把它翻译成德语和法语,但是你的翻译人员不懂程序,所以你可以把这些信息存到一个文本或其他格式的文件中供翻译人员使用。那么,程序必须能显示不同语言的信息,并且你并不知道你希望为这个程序提供的下一个语言支持是什么,或许是日语或许是别的什么语言。 下面的代码是一个国际化的代码的例子: import java.util.*; public class I18NSample { static public void main(String[] args) { String language; String country; if (args.length != 2) { language = new String("en"); country = new String("US"); } else { language = new String(args[0]); country = new String(args[1]); } Locale currentLocale; ResourceBundle messages; currentLocale = new Locale(language, country); messages = ResourceBundle.getBundle("MessagesBundle", currentLocale); System.out.println(messages.getString("greetings")); System.out.println(messages.getString("inquiry")); System.out.println(messages.getString("farewell")); } } 请注意:在上面的代码中,信息并没有被hardcoded在代码中! 如果想运行上面的代码,请下载下面的文件: 1、I18NSample.java 2、MessageBundle.properties 3、MessageBundle_de_DE.properties 4、MessageBundle_en_US.properties 5、MessageBundle_fr_FR.properties 下面看看这个程序的运行结果: 显示法语信息: java I18NSample fr FR Bonjour. Comment allez-vous? Au revoir. 显示英语信息: java I18NSample en US Hello. How are you? Goodbye. 从上面的代码我们可以看出,在实现了国际化的代码中,并没有将需要显示的信息直接hardcode在代码中,而是存在一个文件中供程序使用。程序根据不同的语言和国家(Local)来取得文件中不同信息显示。我们试着按一下的步骤一步一步分析这段代码如何实现了国际化: 1、建立properties文件----本地化数据 properties文件用来存储程序和环境相关的信息。必须以.properties的后缀结尾,properties文件是纯文本格式的。在上面的例子中,一共有4个properties文件。分别定义了不同语言和国家的打招呼、再见和问候时使用的语言。properties文件使用名值对(key-value)的形式,如下所示: greetings = Bonjour. farewell = Au revoir. inquiry = Comment allez-vous? properties文件的名字很重要,它的形式是basename_LL_CC.properties.LL表示语言代码,CC表示国家代码。语言代码和国家代码是Local类初始化的参数,basename是创建ResourceBundle对象的参数。 2、创建Local对象----不同语言和国家的标识 java.util.Local是JDK提供的标准API。这个类用来标识国家和语言。 我们可以创建一个local对象: aLocale = new Locale("en","US"); 这个对象标志了一个地方,这个地方是美国,并且这里的语言是英语。 这下面2个对象又表示什么呢? caLocale = new Locale("fr","CA"); frLocale = new Locale("fr","FR"); caLocale对象标志的是加拿大并且那里使用了法语,而frLocal标志的是法国而那里的语言是法语。 注意:Local对象只是一个标识类,创建了这个类的对象并不表示你的程序已经实现了国际化。这个类是给那些需要实现国际化的类使用的,它用来标识我们即将实现国际化的Local信息。 3、创建ResourceBundle对象----本例中实现国际化的主要角色 java.util.ResourceBundle是JDK提供的标准API。它实际上是个抽象类,同时它提供了创建它的子类的静态工厂方法。在例子程序中我们实际上使用的是ResourceBundle的子类PropertyResourceBundle的对象。通过它,我们可以根据Local对象来读取不同的properties文件,从而取得不同的信息。 如果local = new Locale("en","US");则读取了MessagesBundle_en_US.properties文件。 在例子中,用如下语句创建这个对象: message = ResourceBundle.getBundle("MessagesBundle", currentLocale); 4、用ResourceBundle读取信息----本地化实现了 读取了propeties文件后,我们就可以用ResourceBundle的实例通过getString(String Key)方法来取得信息了。如下的语句所示: String msg1 = messages.getString("greetings"); August 29 如何在Eclipse 3.1.1上安装jadclipse[java的反编译工具] 早上闲来无聊,在网上找了个好东东,跟大家分享一下.
jad是java的反编译工具,是命令行执行,反编译出来的源文件可读性较高。可惜用起来不太方便。还好 找到eclipse下的插件,叫jadclipse,安装好之后,只要双击.class文件,就能直接看源文件,包括jar 包中的class文件,也可以直接反编译。 1.下载jad1.5.8e 2.下载 jadclipse_3.1.0.jar link方式安装插件的)。 3.启动Eclipse后,在Windows-->Perference-->Java下面应该会多出一个JadClipse目录,相关的设置可 以在此修改 ,在Directory for temporary files中指定临时文件的路径,如:G:\Java\eclipse-SDK-3.0-win32\temp 认关联的编辑器为“JadClipse Class File Viewer” ps:http://www.bczs.net/xml/2005/9/8/4257873.xml一个讲jar挺不错的网址. August 25 MD5加密MD5加密算法简单介绍
在现阶段,我们一般认为存在两种加密方式,单向加密和双向加密。双向加密是加密算法中最常用的,它将我们可以直接理解的明文数据加密为我们不可直接理解的密文数据,然后,在需要的时候,可以使用一定的算法将这些加密以后的密文解密为原来可以理解的明文。双向加密适合于隐秘通讯,比如,我们在网上购物的时候,需要向网站提交信用卡密码,我们当然不希望我们的数据直接在网上明文传送,因为这样很可能被别的用户“偷听”,我们希望我们的信用卡密码是通过加密以后,再在网络传送,这样,网站接受到我们的数据以后,通过解密算法就可以得到准确的信用卡账号。 单向加密刚好相反,只能对数据进行加密,也就是说,没有办法对加密以后的数据进行解密。可能我们立即就会想,这样的加密有什么用处?不能解密的加密算法有什么作用呢?在实际中的一个应用就是数据库中的用户信息加密,当用户创建一个新的账号或者密码,他的信息不是直接保存到数据库,而是经过一次加密以后再保存,这样,即使这些信息被泄露,也不能立即理解这些信息的真正含义。 MD5就是采用单向加密的加密算法,对于MD5而言,有两个特性是很重要的,第一是任意两段明文数据,加密以后的密文不能是相同的;第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。前者的意思是不可能有任意两段明文加密以后得到相同的密文,后者的意思是如果我们加密特定的数据,得到的密文一定是相同的。 MD5CyptoServiceProvider类是.NET中System.Security.Cryptography名字空间的一个类,提供专门用于MD5单向数据加密的解决方法,也是本文中我们用来加密数据库中密码的类。在真正进行数据加密之前,我们首先来了解MD5CyptoServiceProvider类中的主要方法:ComputeHash,它将输入的明文数据数组使用MD5加密以后输出加密后的密文数据数组。现在,我们就来看一个具体的实例:
'要加密的明文字符串 Dim strPlainText as String = "Encrypt me!"
Dim hashedDataBytes as Byte()
Dim md5Hasher as New MD5CryptoServiceProvider()
hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(strPlainText))
使用加密方式保存密码到数据库的限制 在决定是否使用加密方式保存密码以前,我们还需要考虑一些问题。因为MD5是单次加密算法,加密以后的信息不可以解密,所以,如果用户丢失密码,任何人都很难找到用户原来的密码,这时候,网站也就相应的失去一个很重要的功能,那就是用户提供其他信息来取得忘记的密码的功能,这不能不说是网站的一个大缺陷。另外,采用这样的加密方式,必须完全修改以前的用户资料,要求用户完全重新注册,这也是这种方法比较困难的一个地方。 August 10 随笔 转眼又到周末了,时间过得真快,这周去江心洲摘葡萄,还是第一次去摘呢,有点兴奋.
熊熊和老三都是这周过生日,本想去看他们的,可熊熊不让,不去也好,距离产生美,让他们多思恋我一点吧.相信他们会喜欢我的礼物的,那些图片可是我花了一个下午偷偷跑到公司打印的.也想下次见到三儿的时候她能有点小变化.
这周事没干什么会倒是没少开,我对项目也没什么了解,所以每次抢个后面的位子坐着.看着组员们为了一些技术问题争吵不息,倒觉得像自己这样当个事外的人也挺好.听不懂就不听,船到桥头自然直,等让我干事的时候会跟我讲的.
我们组的其他人到现在还在加班呢,为了让他们心里不平衡我也加班,不过事加班玩,也算给同志们一点支持吧.
August 04 明天考语文 明天参加一场特殊的考试,考试内容是语文和英语,今晚临时抱佛脚,看了看模拟题.英语就看了开始的十道,错了一题,感觉还不错,就没再往下看,对自己英语还是有信心的.这种考试对我而言,小case.
倒是语文考试有点怕,最近一次就是高考,而且是很多年以前的事情.题目中涉及的知识点在高中都学过,虽是选择题,基本不会.
11.“祸起萧墙”这个成语出自 。 A.〈〈道德经〉〉 B.〈〈庄子〉〉 C.〈〈论语〉〉 D.〈〈孟子〉〉 12.《史记》是我国第一部 。 A.断代史 B.纪传体通史 C.编年史 D.国别史 13.《茶馆》是现代著名剧作家 的作品。 A.曹禺 B.郭沫若 C.老舍 D.夏衍 14.《再别康桥》是著名诗人 的代表作。 A.海子 B.舒婷 C.徐志摩 D.顾城 15. “安能摧眉折腰事权贵,使我不得开心颜”是 的诗句。 A.屈原 B.陶渊明 C.李白 D.杜甫
突然觉得自己有点文盲,中文水平也就小学毕业吧.god bless me明天考试及格. |
|
|||
|
|