(1)編碼標準
(2)Git的使用
(3)重構
(4)Java密碼學相關內容的學習java
在IDEA中使用工具(Code->Reformate Code)把下面代碼從新格式化,再研究一下Code菜單,找出一項讓本身感受最好用的功能。提交截圖,加上本身學號水印。git
public class CodeStandard { public static void main(String [] args){ StringBuffer buffer = new StringBuffer(); buffer.append('S'); buffer.append("tringBuffer"); System.out.println(buffer.charAt(1)); System.out.println(buffer.capacity()); System.out.println(buffer.indexOf("tring")); System.out.println("buffer = " + buffer.toString()); if(buffer.capacity()<20) buffer.append("1234567"); for(int i=0; i<buffer.length();i++) System.out.println(buffer.charAt(i)); } }
快捷鍵ctrl + alt + L
格式化代碼,效果以下(其實我直接粘貼複製進去Idea就自動幫我格式化了,神仙工具)
算法
在碼雲上把本身的學習搭檔加入本身的項目中,確認搭檔的項目加入本身後,下載搭檔實驗二的Complex代碼,加入很多於三個JUnit單元測試用例,測試成功後git add .; git commit -m "本身學號 添加內容";git push;
提交搭檔項目git log的截圖,包含上面git commit的信息,並加上本身的學號水印信息。編程
倉庫添加成員,同時掃碼加入搭檔的項目
app
git clone url
克隆倉庫,添加測試代碼工具
import junit.framework.TestCase; import org.junit.Test; public class ComplexTest_Pair extends TestCase { Complex a = new Complex(); Complex b = new Complex(2,-3); Complex c = new Complex(1.23,3.21); @Test public void testequals(){ assertFalse(b.equals(a)); } @Test public void testtoString(){ assertEquals("0",a.toString()); assertEquals("2.0-3.0i",b.toString()); assertEquals("1.23+3.21i",c.toString()); } @Test public void testComplexSub(){ assertEquals("-0.77+6.21i",c.complexsub(b).toString()); assertEquals("-2.0+3.0i",a.complexsub(b).toString()); } @Test public void testComplexMul(){ assertEquals("0",a.complexmulti(b).toString()); assertEquals("12.09+2.73i",b.complexmulti(c).toString()); } }
完成重構內容的練習,下載搭檔的代碼,至少進行三項重構,提交重構後代碼的截圖,加上本身的學號水印。提交搭檔的碼雲項目連接。單元測試
使用編碼規約掃描,直接點擊下面的提醒,alt+enter自動修正
學習
KeyGenerator kg=KeyGenerator.getInstance("DESede");
kg.init(168);
SecretKey k=kg.generateKey( );
FileOutputStream f=new FileOutputStream("key1.dat"); ObjectOutputStream b=new ObjectOutputStream(f); b.writeObject(k);
KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp=kpg.genKeyPair( );
PublicKey pbkey=kp.getPublic( ); PrivateKey prkey=kp.getPrivate( );生成密鑰
加密
解密
測試
無
此次試驗讓我感觸最深的是Java密碼學中關於「用」和「懂」的關係。沒想到林語堂先生還說過這麼一句話,我算是林語堂先生的小迷弟了,三觀受他影響很大。果真,個人想法又和林語堂先生同樣,我一直抱着要弄懂一個東西就要搞明白它的原理的想法。好比要研究物理現象就要知道背後的原理和公式。可是開始學習IT相關的東西后,我發現這樣的學習方法讓我愈來愈力不從心,由於我發現這方面的東西都是一層一層包裝起來的。C語言夠底層了,下面還有彙編,下面還有機器語言,再下面還有硬件,真的要從頭弄懂一臺計算機是怎麼運行的實在是一個龐大的工程。這只是舉一個例子,Java中也是這樣,有不少的庫能夠直接調用,可是有時候你沒辦法一個個搞懂它們的實現。
不得不說,先會用再去明白它的道理,雖然我以爲這樣不是最傳統的那種原理->應用的學習方法,可是平時我少不了這麼作,由於根本沒空去看一個個庫的具體實現。我想庫被建立的意義也就在於方便人們調用,而不用重複造輪子
還有,我仍是沒弄懂結對編程的好處在哪,至少就目前幾個小項目來看,徹底一我的的編程能力和思考能力是夠的,只要頭腦清晰,反而比兩我的效率高。個人結對隊友也很強,可是1+1也不過=2。可能還沒掌握精髓?可能就是不適合合做?