曾经我们都是被雷锋包围的人,小时候,听到最多的就是雷锋、赖宁……现在雷锋再次响起来了,靠一个口号,还能干什么啊!原文:三月里有这么一天,属于一个死去多年的人。三月五日,因为毛泽东的题词而被官方钦定为一个盛大节日。这个“节日”,在大陆中国人的生活中一直是一个坎儿,总要“跨一下”才能迈过去。雷锋,在22岁那年死于意外伤害,如果活到现在,已经是72岁高龄的老人了。他也确实老了,进京领受光荣的雷锋班班长抱怨:孩子们已经不认识雷锋了。作为一个神圣的精神符号,雷锋一直搅动着许多人的神经。当好人,做好事,他们理解的雷锋便是这样。问题在于,这样的理解绝非官方所乐见,他们总要加一个不容置疑的定语在前头:永远跟党走,把党的温暖送到千家万户。听党的话的人,才叫好人;做为党争光的事,才能叫好事。雷锋的解释权在意识形态掌控者手里,他们绝不会放任他被矮化为一个泛爱志愿者。真假难辨的“雷锋日记”以及诸多“平凡而伟大”的英雄事迹,塑造的就是一个具有高度党性原则的“毛泽东的好战士”,无条件听从党的指令,以为党献身为最高目的的“革命烈士”。雷锋显得非常纯粹,因平凡而有说服力,因忠诚而令人自惭形秽。在他面前,每个人都很纠结:既膜拜又嫉妒。我们为什么不能心无杂念,把自己锻造成为坚定的共产主义战士,毛主席的好学生?这是一道考题,给予人无限的憧憬:如果你愿意,你也能。雷锋可以无穷地复制下去。这是文宣操盘手最得意的阳谋:让你误以为够得着,你就会模仿去做。孤儿雷锋,在新政权启发下,迅速完成了革命化的进程,他接受了阶级社会和阶级斗争的概念,爱憎分明:将亲人之死怪罪于以前的社会,不幸的根源在于存在一个“剥削阶级”,他们的本质是吸血鬼,只有将他们铲除干净,才有好日子过;带给穷苦大众好日子和奔头的,是共产党和毛主席——在当时的宣传语境里,共产党其实就是毛主席的党,毛主席就是全能的神祗,他创造了万物,又被万物所感恩。感恩,然后奉献生命,就是人民中国主人翁们的天职和使命。通过否定历史和宗教,也借助血腥的祭祀,新政权把寄生麾下的人民变成了精神孤儿。他给予他们一个崭新的主:革命领袖毛主席。膜拜,服从,牺牲,信众前面只有华山一条路。一个渴望向上爬的人必然走到雷锋那一步。所以,雷锋是自我趋附与政权塑造的产物,不存在一个赤子雷锋。他所做的一切都是规定动作,不过他做得更可爱些罢了。读“雷锋日记”,我看到的是一个极度自虐和受虐者的表白,他的人生就是用来证明忠诚的。在一次次被组织确认的过程中,他获得了极大的快感。他得到了自我实现,书写那些多情的文字,一点也不会痛苦,反而充满了莫名的快乐。向组织交心是痛苦的,但交出去之后却是兴奋。因为能被信任而得到交心的机会,这才是归属感的获得。自己人,同志,获得这样的认可,意味着一个年轻人不可限量的前途。雷锋正在向风光无限好的高处攀去。写日记就是给组织看。整个社会处于“做好事表忠心”的全面竞争状态,谁做得极端谁就有机会。写日记就是自我表现,准备被伯乐“发现”。那时的英雄都有一本日记:记录自己学习毛泽东思想狠斗私字,灵魂深处爆发革命,脱离低级趣味,成为革命战士的过程。那样做,是怀有出人头地的梦想:期待出现奇迹,从而改变命运。“雷锋日记”既出,一个私密的文体便沦落为一个无耻的婊子,人们被迫泯灭自己的内心生活,把一颗扭曲的心交给了魔鬼。当时,人群被强行分成两类:地富反坏右牛鬼蛇神和贫下中农革命后代。不甘于灭亡的坏人得有“表现”,才能免于更残酷的命运;革命后代,谁能出类拔萃,引人注目,就能有机会步步高升。异常策略才能获胜,所以,大家挖空心思,制造奇迹,在为新时代制造祥瑞,人伦惨剧骇人听闻,自镇压反革命、批判胡适、反右到大跃进以后的中国大陆,基本上处于不可理喻的癔症状态。雷锋的出现毫不奇怪。他只是恰巧被看中了。他的死本是一场事故,中止了沈阳军区培养长线大英雄的计划,只得将错就错,提前让“英雄”出笼。他们费心揣摩:一个平凡的士兵应该更合上面胃口。他们押对了宝。这个恭顺、热情,一心向党的战士,得到了毛泽东们的首肯。通过题词,年轻的雷锋被纳入共产主义英雄的谱系之中,而且后来者居上,成为一尊老少皆宜的菩萨英雄。在雷锋身上,完全消灭了欲望,向上爬成为红色接班人的欲望除外。一个二十岁左右的青年,“纯洁”地生活着,令有私欲的人无地自容。他从不会有寂寞、无聊的时候,反省、学习、做好事,我们看到的就是这么一个无欲的英雄,犹如一团烈火,除了燃烧还是燃烧。他的所有缺点都是可爱前提下的瑕疵,甚至因为瑕疵的存在而更显高尚。在他心里有一个光明的世界,被毛泽东思想照耀而自足的世界。生命的摸索,性的尝试,对死亡的恐惧,这些内容一概失踪了。更不存在对未知的探求,真理就是毛主席,每个人所需要的就是相信,无须费力去寻找。一个明亮得单纯得令人窒息的世界:不存在未知,无须知道未知,一切都是已知,是信服。在这样的精神空间里,思想停止发育,人变得“单纯”,实则是愚笨和呆滞。人们那股玩命的工作热情,除了出于表现不得不之外,恐怕也是一种宣泄——压抑的精神总归要有自己的出口。反右,大跃进,疯狂的饥饿,在他身上无一丝痕迹。他永远生活得光明灿烂,还有捐不完的余钱。温柔的温暖的雷锋,抹去了专制黑暗年代的残酷底色,为其涂抹上厚厚一层胭脂,让处于痛苦和饥饿的人望梅止渴,让后来者产生伟大的错觉,以为存在过一个春风般温暖的和谐社会。雷锋和他的缔造者,虚构了一种梦幻般的同志式人际关系。这就是为什么有不少过来人不愿意推倒偶像。雷锋存在的前提是,懒汉辈出,人人不能自立,政府完全失职。在他死后50年后,当局高调重振学雷锋运动,是企图用“雷锋精神”替代信仰缺失,安慰感觉冰冷的人群,让他们重新回到感恩的戏剧情境中去,舍不得离开即将倾覆的泰坦尼克号巨轮。你可以通过行政指令逼迫学生学雷锋,也会有轰轰烈烈的喧闹效果,但最终会激起强烈的厌恶感,他们不可能认同一个虚假的偶像。我读“雷锋日记”时,体验到非常可怕的荒谬感。强行推行学雷锋,必然造成青少年人格分裂,强化整个社会的伪饰作假风气。解决政权合法性危机,正途是还政于民,真心建设公民社会,而非回到愚昧的感恩社会。执政者要下决心剥离祖国和政权的畸形捆绑关系,从自我神化和强迫国民畏惧自己的状态中解脱出来,你只是一届政府,不是祖国的化身,更不可能是上帝。政治不文明,则社会无道德。即使退一万步,雷锋式的“做好事”绝不是行善。爱人之善发自内心,鼓励人向善的宗教信仰是其源泉,他不为外在目的而生。心端正了,无道德社会才有可能逐步转向道德社会。毫无疑问,雷锋是黑暗专制时代的病态样本,是一个主体性丧失的悲剧人物。在这个甘于做驯服工具和螺丝钉的人身上,不会存在什么道德富矿。在薄熙来的“唱红打黑”破产之后,彻底抛弃那个年代的“政治遗产”,切断与毛泽东时代脐带联系,已经成为考验当权者有无勇气前行的试金石。一个人人渴慕的新新中国,容不得任何一尊愚民之神。来源:FT中文网链接:http://www.ftchinese.com/story/001043439
soapUI相当不错的测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。我现在用的还是2.0的版本,官网已经到了4.0了。推荐每个JAVA程序员必备的软件!一、去http://www.soapui.org/下载soapui的安装包,当前最新的是soapUI Pro 4.0.1(专业版)二、去http://download.csdn.net/detail/shishaomeng/3857655下载破解补丁三、破解步骤(可以破解4.0.0,4.0.1的pro版本及普通版本)1、拷贝license4j-1.3.jar到soapui安装的lib目录下替换原来的文件2、运行程序,导入license到目录binlisteners下即可3、运行程序binsoapui-pro.bat
以8.0的汉化版本为例,不同版本些许差异可以忽略,总体设置雷同!以下都是开发中常用的方便设置,有助于提高工作效率!设置1:记住登录Oracle的用户名和密码设置2:一次执行一条SQL语句在使用PL/SQL的SQL Window时,按F8键,默认是执行该窗口的所有SQL语句,需要设置为鼠标所在的那条SQL语句,即执行当前SQL语句;设置3:格式化SQL语句在使用PL/SQL Developer的SQL Window时,有时候输入的SQL语句太长或太乱,希望美化一下;格式化的规则等都是可以配置的设置3:关键词自动大小写有时希望关键字能够自动大写或首字母大写来跟其他单词区分开来;
java代码效率优化1、 尽量指定类的final修饰符 带有final修饰符的类是不可派生的。如果指定一个类为final,则该类所有的方法都是final。Java编译器会寻找机会内联(inline)所有的 final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50% 。2、 尽量重用对象。特别是String 对象的使用中,出现字符串连接情况时应用StringBuffer 代替。由于系统不仅要花时间生成对象,以后可能还需花时间对这些对象进行垃圾回收和处理。因此,生成过多的对象将会给程序的性能带来很大的影响。3、 尽量使用局部变量,调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。另外,依赖于具体的编译器/JVM,局部变量还可能得到进一步优化。请参见《尽 可能使用堆栈变量》。4、 不要重复初始化变量默认情况下,调用类的构造函数时, Java会把变量初始化成确定的值:所有的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和 double变量设置成0.0,逻辑值设置成false。当一个类从另一个类派生时,这一点尤其应该注意,因为用new关键词创建一个对象时,构造函数链 中的所有构造函数都会被自动调用。5、 在JAVA + ORACLE 的应用系统开发中,java中内嵌的SQL语句尽量使用大写的形式,以减轻ORACLE解析器的解析负担。6、 Java 编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,即使关闭以释放资源。因为对这些大对象的操作会造成系统大的开销,稍有不慎,会导致严重的后果。7、 由于JVM的有其自身的GC机制,不需要程序开发者的过多考虑,从一定程度上减轻了开发者负担,但同时也遗漏了隐患,过分的创建对象会消耗系统的大量内 存,严重时会导致内存泄露,因此,保证过期对象的及时回收具有重要意义。JVM回收垃圾的条件是:对象不在被引用;然而,JVM的GC并非十分的机智,即使对象满足了垃圾回收的条件也不一定会被立即回收。所以,建议我们在对象 使用完毕,应手动置成null。8、 在使用同步机制时,应尽量使用方法同步代替代码块同步。9、 尽量减少对变量的重复计算10、尽量采用lazy loading 的策略,即在需要的时候才开始创建。11、慎用异常异常对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为fillInStackTrace()的本地 (Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM就必须调整调用堆栈,因为在处理过 程中创建了一个新的对象。 异常只能用于错误处理,不应该用来控制程序流程。12、不要在循环中使用:Try {} catch() {}应把其放置在最外层。13、StringBuffer 的使用:StringBuffer表示了可变的、可写的字符串。有三个构造方法 :StringBuffer (); //默认分配16个字符的空间StringBuffer (int size); //分配size个字符的空间StringBuffer (String str); //分配16个字符+str.length()个字符空间你可以通过StringBuffer的构造函数来设定它的初始化容量,这样可以明显地提升性能。这里提到的构造函数是StringBuffer(int length),length参数表示当前的StringBuffer能保持的字符数量。你也可以使用ensureCapacity(int minimumcapacity)方法在StringBuffer对象创建之后设置它的容量。首先我们看看StringBuffer的缺省行为,然后再找 出一条更好的提升性能的途径。StringBuffer在内部维护一个字符数组,当你使用缺省的构造函数来创建StringBuffer对象的时候,因为没有设置初始化字符长 度,StringBuffer的容量被初始化为16个字符,也就是说缺省容量就是16个字符。当StringBuffer达到最大容量的时候,它会将自身 容量增加到当前的2倍再加2,也就是(2旧值+2)。如果你使用缺省值,初始化之后接着往里面追加字符,在你追加到第16个字符的时候它会将容量增加到 34(216+2),当追加到34个字符的时候就会将容量增加到70(2*34+2)。无论何事只要StringBuffer到达它的最大容量它就不得 不创建一个新的字符数组然后重新将旧字符和新字符都拷贝一遍――这也太昂贵了点。所以总是给StringBuffer设置一个合理的初始化容量值是错不了 的,这样会带来立竿见影的性能增益。StringBuffer初始化过程的调整的作用由此可见一斑。所以,使用一个合适的容量值来初始化 StringBuffer永远都是一个最佳的建议。14、合理的使用Java类 java.util.Vector。简单地说,一个Vector就是一个java.lang.Object实例的数组。Vector与数组相似,它的元素可以通过整数形式的索引访问。但 是,Vector类型的对象在创建之后,对象的大小能够根据元素的增加或者删除而扩展、缩小。请考虑下面这个向Vector加入元素的例子:Object bj = new Object();Vector v = new Vector(100000);for(int I=0;I<100000; I++) { v.add(0,obj); }除非有绝对充足的理由要求每次都把新元素插入到Vector的前面,否则上面的代码对性能不利。在默认构造函数中,Vector的初始存储能力 是10个元素,如果新元素加入时存储能力不足,则以后存储能力每次加倍。Vector类就对象StringBuffer类一样,每次扩展存储能力时,所有 现有的元素都要复制到新的存储空间之中。下面的代码片段要比前面的例子快几个数量级:Object bj = new Object();Vector v = new Vector(100000);for(int I=0; I<100000; I++) { v.add(obj); }同样的规则也适用于Vector类的remove()方法。由于Vector中各个元素之间不能含有“空隙”,删除除最后一个元素之外的任意其 他元素都导致被删除元素之后的元素向前移动。也就是说,从Vector删除最后一个元素要比删除第一个元素“开销”低好几倍。假设要从前面的Vector删除所有元素,我们可以使用这种代码:for(int I=0; I<100000; I++){v.remove(0);}但是,与下面的代码相比,前面的代码要慢几个数量级:for(int I=0; I<100000; I++){v.remove(v.size()-1);}从Vector类型的对象v删除所有元素的最好方法是:v.removeAllElements();假设Vector类型的对象v包含字符串“Hello”。考虑下面的代码,它要从这个Vector中删除“Hello”字符串:String…
密码问题现在紧急问题,当CSDN的密码被曝光以后,数据文件里面我也很容易的找到了我的密码。选择一个安全策略很重要!转一篇很有指导的文章。个人密码安全策略 我们现在处于网络时代,时常要登录各种网站、论坛、邮箱、网上银行等等,这些访问常需要帐户+密码的身份认证,因此我们不断地注册用户,就有了数不清的网络帐户和密码。大多数人为了便于记忆,习惯只用一个常用的网络用户名、邮箱和密码,这是非常危险的。那么,网上的密码我们应该怎么设置,才能相对安全一些呢? 总的来说,个人密码安全需要遵循如下几个简单的要求:对于不同的网络系统使用不同的密码,对于重要的系统使用更为安全的密码。绝对不要所有系统使用同一个密码。对于那些偶尔登录的论坛,可以设置简单的密码;对于重要的信息、电子邮件、网上银行之类,必需设置为复杂的密码。永远也不要把论坛、电子邮箱和银行账户设置成同一个密码。具体的设置策略如下:一、将自己常用的网站分类:大网站、小网站、重要网站、普通网站1、大网站 大网站为可以信任的、安全的网站,例如用户为数亿的几个门户网站(腾讯、谷歌等),这类网站理论上安全性较好,常规情况下用户密码不易泄漏,并且都会提供绑定手机号功能,这类网站应该不超过十个。2、小网站 大网站之外的网站都算小网站,是不可信任的网站,在上面保存的密码随时可能泄漏,并且可能是密码明文泄漏。3、重要网站 涉及到网络使用的核心网站,例如主要的电子邮件、网银、网上支付、域名管理等,这类网站如果被黑客攻破,则会引起个人资产损失或者相关其他网站服务被攻击,损失巨大。4、普通网站 重要网站之外的网站。二、将自己的常用密码分类:弱密码、中密码、强密码1、弱密码 最容易记忆的,且默认是可以丢失的密码。 各类中小网站、论坛、社区、个人网站等使用。 原因:这些网站的安全性可能都不太好,有些只是将密码MD5一下存储,有些可能还会明文存储密码。黑客很容易从这些网站盗窃用户的密码。2、中密码 中等强度密码,8个字符以上,有一定抗穷举能力的。 中等密码主要在国内门户网站、大型网站、门户微博、社交网站等使用,但不要在主要邮箱里使用。门户网站最好绑定手机号码。 原因:大网站的安全性较好,通常被破解的可能性低,在大网站使用的密码要强度可以稍强。 需要注意的是,有些门户网站(例如新浪、搜狐等)即提供微博,又提供邮件系统,如果系统默认建立了这些邮箱,那建议不要在任何地方使用这些邮箱,如果要使用邮箱,最好确认该邮箱具有独立密码功能。 其中有一个例外是腾讯邮箱,腾讯邮箱支持邮箱的单独密码,设置好了以后,用户需要输入QQ密码和邮箱密码两个之后才能使用。 所有游戏帐号使用单独的密码。3、强密码 强密码要求至少8个字符以上,不包含用户名、真实姓名或公司名称,不包含完整的单词,包含字母、数字、特殊符号在内。 强密码主要用于邮箱、网银、支付系统等。 这类网站是最核心最重要的网站,网银涉及到用户的财产安全,邮箱则可以重置用户所有注册过的网站密码,因此这类网站一定要用强密码,保证其绝对安全性。 密码穷举对于简单的长度较少的密码非常有效,但是如果网络用户把密码设的较长一些而且没有明显规律特征(如用一些特殊字符和数字字母组合),那么穷举破解工具的破解过程就变得非常困难,破解者往往会对长时间的穷举失去耐性。通常认为,密码长度应该大于8位,密码中最好包含字母数字和符号,不要使用纯数字的密码,不要使用常用英文单词的组合,不要使用自己的姓名做密码,不要使用生日做密码。三、电子邮件使用规范1、邮箱类型 个人邮箱并非越多越好,只要两个个人邮箱即可(工作邮箱除外),关闭那些没用的邮箱,或者清除其内的所有内容,不在任何地方使用这个邮箱。 邮箱分为两个类型,主要邮箱和次要邮箱,重要服务用主要邮箱来申请,一般服务用次要邮箱来申请。 主要邮箱建议使用Gmail建立,绑定用户的手机,并设置二步验证的手机动态密码,目前世界上只有Gmail信箱支持手机动态密码,增加手机动态密码之后,黑客即使重置了用户的Gmail密码,依旧无法登录该帐号,除非用户手机同时也被盗。有了动态密码,一旦用户信箱被攻击,用户有足够的时间通过手机修复密码。 Gmail的辅助邮箱可以不使用,或者用一个可以,辅助邮箱的安全性一定要高,不容易被攻破。 对于Gmail的访问还有一点,就是不要用Hosts来访问Gmail,不要把www.google.com放入到Hosts文件中,否则将对Gmail的安全性产生极大的威胁。2、动态密码设置 对于经常受到攻击的Gmail用户,强烈推荐使用Gmail的“两步验证”功能,具体方法是,先登录Gmail,然后访问这个地址,之后根据提示安装一个iPhone或Android应用,即可实现动态口令,极大增强了Gmail的安全性。 Gmail的“两步验证”支持iPhone和Android手机,实际上属于动态密码的一种类型。动态密码(Dynamic Password)也称一次性密码,它指用户的密码按照时间或使用次数不断动态变化,每个密码只使用一次。由于每次使用的密码必须由动态令牌来产生,而用户每次使用的密码都不相同,因此黑客很难计算出下一次出现的动态密码。不过动态密码对手机要求较高,需要iPhone或Android这样的智能手机。 除了Gmail邮箱之外,腾讯QQ邮箱也是国内使用较为广泛的邮箱,使用腾讯QQ邮箱时需要注意,一定要设置双密码(邮箱单独密码),如有需要则打开腾讯的QQ手机令牌,QQ手机令牌是腾讯公司的一款QQ安全软件,通过验证30秒动态密码来保护QQ帐号、Q币Q点和游戏装备等,不过目前QQ邮箱还不支持手机令牌方式登录。 很多人觉得动态密码不方便,不愿意使用,这是不对的。方便性固然是好的,安全性是更重要的,重视用户密码的管理,虽然增加了一点点不便,但是你可能将会因此避免极大损失。3、邮箱密码 邮箱的密码绝对不要和其他任何网站的密码相同,要使用8位以上的强密码。 邮箱是密码管理中的核心和关键,通过邮件重置密码功能,可以获得用户大部分网站的密码,因此一旦邮箱密码被黑,会导致用户全部密码体系失控,Gmail动态密码虽然看起来麻烦一些,其实也并非每次都输入,在单台电脑可以三十天再输入一次。QQ的手机令牌也可以设置各种方法来减少输入动态密码的次数。 在邮箱使用过程中要注意,使用主要信箱和次要邮箱注册不同的网站,重要服务用主要邮箱来申请,一般服务用次要邮箱来申请。大网站用复杂的密码,小网站和论坛使用简单的密码。如果注册的网站被盗,需要尽快通过电子邮件进行重置密码。 对于那些小网站,在里面设置密码只能当没有,因为我们不知道这些网站是怎么保存密码的,其网站也随时可能被黑,因此只能保证注册邮件不被黑,可以用其重置密码。4、“找回密码”设置 “找回密码”是一个关键的邮箱安全设置,很多黑客破解邮箱是通过“找回密码”进行破解的,因此如何设置“找回密码”的安全问题是一个很重要的环节。 什么是“找回密码”中不安全的问题,主要有“你的生日?”(你会在其他社交网站录入自己的生日);“你的姓名?”(熟悉你的人都知道你的姓名);“你的出生地?”(通过身份证号码可以算出你的出生地);“你的手机号码?”(太多的地方容易泄漏你的手机号码);等等。 这样,通过一些毫无技术含量的操作,别人就很可能重置你的邮箱密码。 所以,“找回密码”应该设置为一个只有你自己知道答案的问题,自己不会轻易告诉他人,别人通过正常方法很难知道,例如“你中学时候暗恋的人叫什么”、“你初三时的同桌叫什么”、“你小学时最好的朋友叫什么”、“你第一个初恋情人叫什么”等等,这些问题通常别人很难猜到。 归纳:1、核心邮箱可选用Gmail,启用其两步认证,因此密码被盗黑客也进不去,除非手机同时也被盗。2、用这个信箱注册其他网站,用不同的密码,大网站用复杂的密码,小网站和论坛使用简单的密码。3、邮箱使用单独的复杂密码,不要和其他网站密码相同。四、网银使用规范 尽量少开通网上银行,如有必要,则开通那些口碑较好,较少发生过安全事故的网银,例如招商银行的网银。开通网银后使用数字证书,最好申请USB Key,USB Key使用了双钥加密,私钥安全地保存在Key中,在网络应用的环境下,可以更安全,弥补了动态密码锁单钥加密的一些缺陷。由于用户私钥保存在USB Key密码锁中,理论上使用任何方式都无法读取,因此保证了用户认证的安全性。除非黑客获取到用户USB Key的物理硬件,否则很难攻破用户的网银。 银行取款密码不要和任何其他密码相同。网上银行密码不要和取款密码相同,也不和其他网站密码相同。 对于支付宝来说,一定要安装数字证书,支付密码和登录密码不要一样,把支付宝帐户认定为实名,同时开通手机、邮箱绑定,如果还想更安全一点再申请个支付盾。 归纳:少开通网上银行,网银申请USB Key配合使用。支付密码和登录密码不同。银行、网银、主要电子邮件的密码安全最为重要,需要重点保护。网银使用单独的复杂密码,不要和邮箱及其他网站相同。五、总结 密码是个人网络信息安全的钥匙。在网络非常发达的今天,网上木马病毒横行,我们应该好好设计一下密码安全,才能保障网上银行安全、网上信息安全、网上交易安全,遵循上面介绍的个人密码安全策略,可以较为有效地提高用户个人密码的安全性,防止自己的个人信息遭受威胁和攻击。原文网址:http://www.williamlong.info/archives/2937.html
导语:数据库设计是整个程序的重点之一,为了支持相关程序运行,最佳的数据库设计往往不可能一蹴而就,只能反复探寻并逐步求精,这是一个复杂的过程,也是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。下面给出了20个数据库设计最佳实践,当然,所谓最佳,还是要看它是否适合你的程序。一起来了解了解吧。1. 使用明确、统一的标明和列名,例如 School, SchoolCourse, CourceID。2. 数据表名使用单数而不是复数,例如 StudentCourse,而不是StudentCourses。3. 数据表名不要使用空格。4. 数据表名不要使用不必要的前缀或者后缀,例如使用School,而不是TblSchool,或者SchoolTable等等。5. 数据库中的密码要加密,到应用中再解密。 (其实就是散列存储、单向加密)6. 使用整数作为ID字段,也许现在没有这个必要,但是将来需要,例如关联表,索引等等。7. 使用整数字段做索引,否则会带来很大的性能问题 。8. 使用 bit 作为布尔字段,使用整数或者varcha是浪费。同时,这类字段应该以“Is”开头。9. 要经过认证才能访问数据库,不要给每一个用户管理员权限。10. 尽量避免使用“select *”,而使用“select [required_column_list]”以获得更好的性能。11. 假如程序代码比较复杂,使用ORM框架,例如hibernate,iBatis。ORM框架的性能问题可以通过详细的配置去解决。12. 分割不常使用的数据表到不同的物理存储以获得更好的性能。13. 对于关键数据库,使用安全备份系统,例如集群,同步等等。14. 使用外键,非空等限制来保证数据的完整性,不要把所有的东西都扔给程序。15. 缺乏数据库文档是致命的。你应该为你的数据库设计写文档,包括触发器、存储过程和其他脚本。16. 对于经常使用的查询和大型数据表,要使用索引。数据分析工具可以帮助你决定如何建立索引。17. 数据库服务器和网页服务器应该放在不同的机器上。这回提高安全性,并减轻CPU压力。18. Image和blob字段不应该定义在常用的数据表中,否则会影响性能。19. 范式(Normalization)要按照要求使用以提高性能。Normalization做的不够会导致数据冗余,而过度Normalization 会导致太多的join和数据表,这两种情况都会影响性能。20. 多花点时间在数据库设计上,否则你将来会付出加倍的时间来偿还。来源:http://www.cnblogs.com/gaolonglong/archive/2012/02/07/2341004.html
总结起来还是要有规范,规范到习惯。 代码易于维护,分为两个方面:容易阅读理解;容易修改扩展。一、如何写出容易被阅读和理解的代码1. 最根本的一条,要向写文章学习,有目录,有大纲,有标题,有段落,有适当的提示。1.1. 首先是目录结构,这个在一些比较好的实践中,有约定俗成,比如Rails应用,app目录下一定分controllers、models、views、helpers四个目录。再加上config、lib、vender,大致的代码在哪个位置,不用猜都知道。越是常见的项目类型,越是应该按照约定俗成来构建项目的目录结构,不要别出新裁。对于没有业内参考的项目,目录结构也尽可能采用简单、易懂、含义固定明确的单词,比如:core、config、test这样的命名。1.2. 包名与文件名,在这方面,java语言的规范非常值得其他语言参考和借鉴,分层组织,合理命名。是最重要的。1.3.一个源代码文件里,要不要有注释?我认为,尽可能不要,还是要像写文章一样,让人阅读起来,有感觉。比如:文件名,类名,方法/函数名。如果将所有的实际代码全部折叠起来,顺序的阅读这些名字,能不能让阅读者,对于这一个源文件的内容和目的,有大概的了解?再强调一次顺序阅读,一个 源程序文件内有很多个函数/方法,这些方法的排列次序,是有意义的。仅仅依靠调整次序,比如:构造函数,扩展构造函数,简单的读写函数,业务相关的函数。以这样的次序来排列,会更加便于阅读。在必须写注释的地方,也不要写得太多,言简意赅,把要点用1.2.3.讲清楚。1.4. 变量名,常数名,我们必须一再一再的强调命名的重要性,可以说,命名是软件开发中,头等重要的大事。要简洁、清晰、全英文(决定不要汉语拼音、任意缩写)、尽可能不要夹杂数字,比如var1、var2这样的变量名,就是最糟糕的。2. readme在项目开发的过程中,定期整理一份readme,放在项目的根目录,主要包含两部分内容:我们的代码做了些什么?如何查找我们写的代码。3. wiki团队开发,尽可能维护一份wiki,自己架一个mediawiki或者其他wiki,都是很简单的。或者自己架一个redmine这样的集成项目管理工具,该有的就都有了。wiki的管理维护是一个很大的话题,这里就不再展开了。4. 单元测试@李楠 和@KevinWei 已经提到了。 这个办法,既方便阅读理解代码,也方便修改代码。非常重要。5. Code Review@KevinWei 也已经提到了。二、如何写出容易被改写和扩展的代码1. 单元测试,最好全过程采用TDD(测试驱动开发)这样才能让人有信心修改你的代码。2. 参考业内成熟实践与设计模式这个事情,要多讲一句,千万不能过头。为了追求可扩展性,可重用性,甚至仅仅是为了玩弄设计模式,会让一个项目成为过度设计的牺牲品,千万不能过头。3. 定期重构一上来就向设计模式靠拢是很危险的,重构时以设计模式为参考会好一些。但是,大多时候,我们没时间重构。。。所以,还是TDD最实在,按照TDD的工作模式,你的项目几乎每天都有大大小小的重构。4. 结对编程这个@李楠 已经提到了。让知识在团队中不只是一个人掌握,很重要。大概就是这些吧。。。来源:http://www.zhuangbiaowei.com/blog/?p=449
git服务器最大的特点是分布式版本控制,而且更为强大的是合并功能,这点也是常用的。就抛弃svn了。在windows上面搭建svn很容易,下次再说。在windows上面搭建git版本服务器,常用msysGit +Cygwin来搭建,曾经用此种方法搭建过一次,繁琐的很,这次用git+apache来搭建,搭建很容易的。准备软件msysgit http://code.google.com/p/msysgit/downloads/listapache serverhttp://httpd.apache.org/download.cgi 下载包含OpenSSL的版本tortoisegit http://code.google.com/p/tortoisegit/downloads/list 和tortoisesvn一样的客户端工具,操作方便,推荐使用操作步骤1.安装msysGit 我安装在D:serverGit 注:图中请选择Run git from the Windows Command prompt 2.复制dll文件 在git中的D:serverGitlibexecgit-coregit-http-backend.exe是用来处理HTTP 请求的,直接运行会出现错误。 缺少libiconv-2.dll,libiconv-2.dll位于D:serverGitbinlibiconv-2.dll,将D:serverGitbinlibiconv-2.dll复制到D:serverGitlibexecgit-core,再次运行git-http-backend.exe就不会出现错误。 git分就算是完成了。3.安装apache服务器 我安装在D:serverApache2.2,正常完成后,apache会自动启动,并且占用80端口,打开浏览器,进入http://localhost ,如果出现“It works!”,就说明apache服务器安装成功了。4.配置用户帐号 使用命令提示符进入D:serverApache2.2bin目录,输入命令:htpasswd -cmb htpassword dapeng dapeng 执行成功后,就会在当前目录下生成htpassword 文件,内容如下,用户名 :dapeng 密码:dapeng,密码是加密过的。dapeng:$apr1$uF7Kv.a9$iHcUdyOeGA7GnWWWjkd3T/ 复制htpassword到D:GitRepos,D:GitRepos是作为版本库的地方。5.配置Apache服务器 进入D:serverApache2.2conf,用文本编辑器打开httpd.conf,找到 <directory />,修改如下:<directory />Options FollowSymLinksAllowOverride NoneOrder deny,allowAllow from all</directory>然后在 httpd.conf 文件末尾追加:# Set this to the root folder containing your Git repositories.# 指定 Git 版本库的位置SetEnv GIT_PROJECT_ROOT C:/workspace# Set this to export all projects by default (by default,# git will only publish those repositories that contain a# file named “git-daemon-export-ok”# 该目录下的所有版本库都可以透过 HTTP(S) 的方式存取SetEnv GIT_HTTP_EXPORT_ALL# Route specific URLS matching this regular expression to the git http server.# 令 Apache 把 Git 相关 URL 导向给 Git 的 http 处理程序ScriptAliasMatch"(?x)^/(.*/(HEAD |info/refs |objects/(info/[^/]+ |[0-9a-f]{2}/[0-9a-f]{38} |pack/pack-[0-9a-f]{40}.(pack|idx)) |git-(upload|receive)-pack))$""D:/server/Git/libexec/git-core/git-http-backend.exe/$1"<Location />AuthType BasicAuthName "GIT Repository"AuthUserFile "D:/GitRepos/htpasswd"Require valid-user</Location>上面修改内容中,第一个指令设置 Git 的版本库位置;第二个指令表示,该目录下的所有版本库都可以通过 HTTP(S) 的方式存取;第三个指令则是让 Apache 把 Git 相关 URL 导向给 Git 的 HTTP 处理程序,也就是我们前面提到的 git-http-backend.exe。最后的 <Location /> 区段设定了虚拟根路径 "/" 的验证规则;D:/GitRepos/htpasswd 是账号密码文件,该文件可以在任何位置,也可以使任何名字,只要在这里指定即可。在httpd.conf大概46行,配置Apache的端口,默认是80,我修改为801完成上述修改之后,重启 Apache 服务。如果你希望将来透过远端存取版本库时,一律使用 http://my-server/git/* 开头的 URL,则可将 ScriptAliasMatch 指令改为 "(?x)^/git/(.*/(HEAD | ……." 6.初始化版本库…
工作中需要进行数据迁移,使用expdp做的,做个记录。expdp是oracle10g中提出来的,比exp的速度高的不是一般,这个是体验过的。和DBA在做数据迁移的时候,开始用的exp,超过半个小时后,我们就忍受不了了,太慢了,就改成了expdb,4分钟,8个G,速度不错吧!看下我们使用 脚本 1: expdp dbusername/dbpassword dumpfile=dmpfilename.dmpdirectory=DMPDIRECTORY tables=tablename:partname exclude=index; 分析一下 expdp 导出命令 dbusername/dbpassword 数据库用户名和密码(注:要有执行expdp命令的权利) dumpfile=dmpfilename.dmp 导出的数据文件 logfile=dmpfilelog.log 导出时的日志文件 directory=DMPDIRECTORY 数据文件的保存位置(需要提前创建) tables=tablename:partname 按表分区导出,tablename是表名,partname是分区名 exclude=index 不导出索引详细介绍下expdp1. 执行expdp之前必须创建directory对象,并且分配权限,如: connect system/admin createor replace directory expdir as'e:dmpfile'; grantread,writeon directory expdir topublic;2. 常见用法:(我这里直接用命令行的方式,还有使用配置文件的方式)2.1 导出scott整个schema expdp system/admin@dapengdb DIRECTORY=expdir DUMPFILE=scott_full.dmp LOGFILE=scott_full.log SCHEMAS=SCOTT配置文件的方式 expdp system/admin@dapengdb parfile=c:exp.par exp.par内容: DIRECTORY=expdir DUMPFILE=scott_full.dmp LOGFILE=scott_full.log SCHEMAS=SCOTT2.2 导出scott下的dept,emp表 expdp scott/tiger@dapengdb DIRECTORY=expdir DUMPFILE=scott.dmp LOGFILE=scott.log TABLES=DEPT,EMP2.4 导出scott下的存储过程 expdp scott/tiger@bright DIRECTORY=expdir DUMPFILE=scott.dmp LOGFILE=scott.log INCLUDE=PROCEDURE2.5 导出scott下以’E’开头的表expdp scott/tiger@bright DIRECTORY=expdir DUMPFILE=scott.dmp LOGFILE=scott.log INCLUDE=TABLE:"LIKE'E%'" –可以改成 NOTLIKE,就导出不以E开头的表2.6 带QUERY导出expdp scott/tiger@bright DIRECTORY=expdir DUMPFILE=scott.dmp LOGFILE=scott.log TABLES=EMP,DEPT QUERY=EMP:"where empno >=8000″ QUERY=DEPT:"where deptno >=10 and deptno <=40″注:处理这样带查询的多表导出,如果多表之间有外健关联,可能需要注意查询条件所筛选的数据是否符合这样的外健约束,比如:EMP中有一栏位是deptno,是关联dept中的主键,如果”where empno >=8000″中得出的deptno=50的话,那么,你的dept的条件”where deptno >=10 and deptno <=40″就不包含deptno=50的数据,那么在导入的时候就会出现错误! 摘抄网址:[http://www.dbifan.com/200802/common-usage-of-expdp.html](http://www.dbifan.com/200802/common-usage-of-expdp.html "http://www.dbifan.com/200802/common-usage-of-expdp.html")原文采用配置文件的方式。