难道两年前我就预料到了Google Reader会挂么?

 我在2011年3月写过一篇: Feedly–Google Reader终结者http://www.nenew.net/feedly.html 没想到时至今日 居然变成真的了!难道我能神预测么? 哎 嘴欠啊!

已经习惯了GoogleReader,恐怕很难有代替的了。

java编程md5实现方法

 

毕业设计要做一个论文在线管理系统,所以加密这块儿呢,必不可少的,首选还是md5,md5一次加密现在也都有库可查了,所以打算采用二次加密,昨天找了下资料,发现java有专门的类可以来实现,奶牛不是搞算法那块儿料,所以算法实现的就不要看了。下面来分析下。

java.security
Class MessageDigest

java.lang.Object
  extended by java.security.MessageDigestSpi
      extended by java.security.MessageDigest

具体使用到的方法有两个:

  1. 方法:getInstance(String algorithm) 
  2. 描述:Returns a MessageDigest object that implements the specified digest algorithm.
  3. algorithm的可以使用值有:DSA, SHA-1, MD5, DES, and DES3 
  4. 详情可以看:
  5. http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#ProviderImplReq 
  6. 返回值: static MessageDigest    
  7.  
  8. 方法:digest(byte[] input) 
  9. 描述:Performs a final update on the digest using the specified array of bytes
  10. then completes the digest computation. 
  11. 返回值: byte[]  

首先用getInstance("md5")方法来选择md5加密,然后用digest(byte[] input)来得到加密后的128位密文byte数组,而我们平时看到的md5密文是32位或者是16位的,因此需要转换。直接用digest(byte[] input)就可以免去使用update(byte[] input) 的那步了。

digest(byte[] input)返回的是16组8位二进制数,需要转换为2位十六进制数,然后依次转换可以得到32位的md5密文,截取32位密文的8~24位即为16位md5密文。

具体实现代码:

 

  1. import java.security.MessageDigest; 
  2. import java.security.NoSuchAlgorithmException; 
  3.  
  4. public class md5 { 
  5.     public String str; 
  6.  
  7.     public void md5create(String input) { 
  8.         try { 
  9.             MessageDigest md = MessageDigest.getInstance("MD5"); 
  10.             byte b[] = md.digest(input.getBytes()); 
  11.  
  12.             int i; 
  13.  
  14.             StringBuffer buf = new StringBuffer(""); 
  15.             for (int offset = 0; offset < b.length; offset++) { 
  16.                 i = b[offset]; 
  17.                 if (i < 0
  18.                     i += 256
  19.                 if (i < 16
  20.                     buf.append("0"); 
  21.                 buf.append(Integer.toHexString(i)); 
  22.  
  23.             } 
  24.             str = buf.toString(); 
  25.             System.out.println("32bit result: " + buf.toString());// 32位的加密 
  26.             System.out.println("16bit result: " 
  27.                     + buf.toString().substring(824));// 16位的加密 
  28.         } catch (NoSuchAlgorithmException e) { 
  29.             // TODO Auto-generated catch block 
  30.             e.printStackTrace(); 
  31.  
  32.         } 
  33.     } 
  34.  
  35.     public static void main(String agrs[]) { 
  36.         md5 md5object = new md5(); 
  37.         md5object.md5create("nenew");// 加密nenew 
  38.     } 
  39.  

 

Google Reader还有三个半月的寿命

 

Google官方已经给出时间:2013年7月1日停止服务。

先把数据备份出来再找其它rss阅读器替代吧,真心习惯了greader了,用了快四年了,竟然忽然就告诉我们不能用了,呜呜好伤感。

这周还是要把开题弄出来,然后手动jsp写毕设吧,好多东西看似很简单,自己手写起来就各种麻烦了。

毕设来了

 

2013年的毕业设计,比以往时候来得更晚一些。认识的人早早的都拿到毕设题目神马的了,只有我们学校还迟迟的到开学才抽签选题目。学校压根儿就没安排神马实习,这是我觉得大学比较大的遗憾,哪怕实习水点儿也好哇,总比没有得强。

说说毕设,毕设选的嵌入式软件方向的宿老师,说真心话,大学里面论教学,我最喜欢宿老师的教学风格,有问题直接查官方文档,对于教学的内容也很好的把握,从基础开始,但并不缺少对于后期的一些提要,java课是我大学觉得最有意思的课。

毕设方向也是java相关的,可以选android应用开发,也可以选java web,奶牛想了不少,也开始看java web方面的书籍了,得寻思上手哇,然后js神马的后期也得学起,html5 css3的能用就用,咋说新东西还是会让人眼前一亮的吧。

只想踏踏实实的把毕设做好,大学就毕业了,总不想自己虚度最后的时光,浑浑噩噩混日子神马的是不可取的。

ASCII码介绍及ASCII码表

 

直接CP来自百科的介绍:

缩写:ASCII
英文全称:American Standard Code for Information Interchange
 
美国信息交换标准代码是一种用于信息交换的美国标准代码。7位字符集广泛用于代表标准美国键盘上的字符或符号。通过将这些字符使用的值标准化,ASCII允许计算机和计算机程序交换信息。ASCII字符集是与ANSI字符集中的前面128个(0-127)字符相同。
美国信息交换标准代码ASCII为"美国信息交换标准代码"十个字对应英文的缩写,ASCII文件是简单的无格式文本文件,可以由任何计算机所识别,Windows中的记事本及任何文字处理程序都可以阅读及创建ASCII文件。
在计算机中,所有的数据在存储和 运算时都要使用二进制数表示,同样的,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通讯而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的ASCII编码,统一规定了上述常用符号用哪个二进制数来表示。
 
八进制十六进制十进制字符八进制十六进制十进制字符
000nul1004064@
111soh1014165A
222stx1024266B
333etx1034367C
444eot1044468D
555enq1054569E
666ack1064670F
777bel1074771G
1088bs1104872H
1199ht1114973I
120a10nl1124a74J
130b11vt1134b75K
140c12ff1144c76L
150d13er1154d77M
160e14so1164e78N
170f15si1174f79O
201016dle1205080P
211117dc11215181Q
221218dc21225282R
231319dc31235383S
241420dc41245484T
251521nak1255585U
261622syn1265686V
271723etb1275787W
301824can1305888X
311925em1315989Y
321a26sub1325a90Z
331b27esc1335b91[
341c28fs1345c92\
351d29gs1355d93]
361e30re1365e94^
371f31us1375f95_
402032sp1406096
412133!1416197a
422234"1426298b
432335#1436399c
442436$14464100d
452537%14565101e
462638&14666102f
472739`14767103g
502840(15068104h
512941)15169105i
522a42*1526a106j
532b43+1536b107k
542c44,1546c108l
552d451556d109m
562e46.1566e110n
572f47/1576f111o
603048016070112p
613149116171113q
623250216272114r
633351316373115s
643452416474116t
653553516575117u
663654616676118v
673755716777119w
703856817078120x
713957917179121y
723a58:1727a122z
733b59;1737b123{
743c60<1747c124|
753d61=1757d125}
763e62>1767e126~
773f63?1777f127del

 

 

ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符
0NUT32(space)64@96
1SOH3365A97a
2STX3466B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL39,71G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR4577M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383X115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92\124|
29GS61=93]125}
30RS62>94^126~
31US63?95127DEL

 

 

NULVT 垂直制表SYN 空转同步
SOH  标题开始FF   走纸控制ETB   信息组传送结束
STX  正文开始CR   回车CAN   作废
ETX  正文结束SO   移位输出EM   纸尽
EOY  传输结束SI   移位输入SUB   换置
ENQ  询问字符DLE   空格ESC   换码
ACK  承认DC1   设备控制1FS   文字分隔符
BEL  报警DC2   设备控制2GS   组分隔符
BS  退一格DC3   设备控制3RS   记录分隔符
HT  横向列表DC4   设备控制4US   单元分隔符
LF  换行NAK   否定DEL   删除
Kernel首页换新颜

 

RT,kernel首页换了新主题,呃,从订阅里面看到的。

很多朋友可能没自己编译过内核,也对内核具体是个什么东东不是很了解。奶牛引用下wiki介绍:

内核(Kernel)在计算机科学中是操作系统最基本的部分,主要负责管理系统资源。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并由内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的。所以内核通常提供一种硬件抽象的方法,来完成这些操作。通过进程间通信机制及系统调用,应用进程可间接控制所需的硬件资源(特别是处理器及IO设备)。 

严格地说,内核并不是计算机系统中必要的组成部分。程序可以直接地被调入计算机中执行;这样的设计,说明了设计者不希望提供任何硬件抽象和操作系统的支持;它常见于早期计算机系统的设计中。最终,一些辅助性程序,例如程序加载器和调试器,被设计到机器核心当中,或者写入在只读记忆体里。这些变化发生时,操作系统内核的概念就渐渐明晰起来了。

kernel.org是linux内核的维护页面,感兴趣的朋友可以去看看,话说linux kernel就跟赶着投胎一样,竟然都飙到3.8版本了….

Steam For Linux正版游戏大促销【2.5~5折哦,速度抢购咯】

 

好机会,Linux下的正版游戏平台steam for linux今日发布促销活动哦,折扣力度相当大,可见对linux正版游戏推广的用心良苦哇。而50%~75% OFF的促销觉得应该也比较罕见吧,游戏列表还是比较丰富的,并且steam很亲民的支持支付宝付款,相当方便。在游戏方面,很多游戏都是三平台都支持的,windows linux mac都跑起,比如cs source 即cs起源,估计全球攻势cs go也快了,奶牛继续等待,最近玩儿cs go很high哇,朋友们可以先入个cs source感受下,因为引擎差别不是太大,估计cs go到达steam for linux也指日可待啦。而且steam for linux对于ubuntu等系统的支持也是很不错的。

促销活动地址:http://store.steampowered.com/sale/linux_release?snr=1_41_4__42

活动截至时间:至 2 月 21 日太平洋标准时间上午 10 点

具体促销内容看截图:

 

CS:GO入手体验篇

 

说FPS类游戏,奶牛玩过的游戏不多,就拿cs1.6跟cf与CS:GO做简单的比较吧。

首先是画面,玩儿惯了cs1.6跟cf,一上手CS:GO真心觉得不习惯,因为画面太真实。街景的布置,光线什么的都蛮好的,回头看cf感觉就像在一个玩具场景一样,体验完全不一样。而且就分辨率而言,感觉cf就是渣,永远是800×640自动换,分辨率很别扭,虽然游戏中感觉不明显,但是系统的分辨率来回切真的好烦人。CS:GO则不同,分辨率完胜,自适性相当好。

说一下重力跟移动,cs1.6感觉重力还是正常的,cf总是觉得飘,就没有那种实实在在的感觉,虽然玩儿好点儿的都听脚步,但是还是觉得真实性比较差,而且游戏节奏偏快速。CS:GO的重力不仅是正常,连奔跑中的不稳定都能提现得很好,更增加真实感,在节奏调控方面也蛮好的,游戏节奏比较适中。

再就说武器了,CS:GO的武器变化感觉还是比较大的,而且武器真的需要重新适应了,像m4a4 ak47的射速跟威力,与以前的感觉有很大不同,可能是打cf顺手了,感觉CS:GO的射速偏快,威力偏小,估计可能是cf爆头率比较高的关系,一般上半身就算不爆头掉血也很多,CS:GO还没有太熟悉过来,不过因为场景太真实了,发现我辨别敌人的能力有些差,特别是雷达,有时候敌人出来了雷达还没反应,很纠结哇,需要适应。还有闪光,闪光简直逼真的跟神马似的,全屏白,不过躲闪会比较容易,背身就搞定了,手雷炸到就是半管儿血,还有燃烧弹。

投入方面:CS 1.6的时候纯盗版,cf如果是RMB玩家的话投入绝对相当大,CS:GO奶牛个人感觉投入一次真的还算值啦,而且现在半价,机不可失哇,乌咔咔~~~~

来吧,喜欢fps滴朋友都买起啦,咱组个战队神马的,虐下棒子鬼子神马的。

CS:GO限时半价,50元就可以买正版了,求战友组队

 

购买 Counter-Strike: Global Offensive

地址:http://store.steampowered.com/app/730/

周末特惠!2月12日 截止

-50%
$7.49 USD

可以支付宝付款。

奶牛已入,求给力队友一起玩儿哇,FPS爱好者有木有有木有?

 

蛋疼的godaddy

 

好吧,说说俺曾经很喜欢的godaddy,现在各种贵+各种麻烦了。

先说续费,从前的买一个月空间可以1.99刀注册或续费的优惠没有了

正常购买,用7.99优惠码,竟然还要手动设置付款为US刀,在右下角,否则不显示支付宝付款。

估计以后transfer会成为一种热潮。

附赠godaddy的优惠码一枚,com7.99:iapdom799t