ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品白浆,97久久超碰国产精品,日韩精品2区http://www.aygfsteel.com/produ/category/54809.htmlzh-cnSat, 28 May 2016 08:07:55 GMTSat, 28 May 2016 08:07:55 GMT60Java反编译工å…?/title><link>http://www.aygfsteel.com/produ/archive/2016/05/28/430691.html</link><dc:creator>都较ç˜?/dc:creator><author>都较ç˜?/author><pubDate>Sat, 28 May 2016 04:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/produ/archive/2016/05/28/430691.html</guid><wfw:comment>http://www.aygfsteel.com/produ/comments/430691.html</wfw:comment><comments>http://www.aygfsteel.com/produ/archive/2016/05/28/430691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/produ/comments/commentRss/430691.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/produ/services/trackbacks/430691.html</trackback:ping><description><![CDATA[最˜q‘生产环境上的项目æ€ÀL˜¯æŠ¥ä¸€äº›ä¸è¯¥å‡ºçŽ°çš„é—®é¢˜åQŒè°ƒæŸ¥è·Ÿítªå¾ˆä¹…也没发现问题,没办法,开始怀疑生产环境和‹¹‹è¯•环境的代码不一è‡ß_¼Œè™½ç„¶˜q™ä¸è¯¥å‡ºçŽŽÍ¼Œä½†ç¡®å®žæ˜¯ä¸€¿Uå¯èƒ½ã€?br />æ–ÒŽ³•比较½Ž€å•,获取生äñ”环境jar包,反编译之后和本地代码˜q›è¡Œå¯Òޝ”。从接触反编译工具以来,到写下这½‹‡ç¬”讎ͼŒæˆ‘一直是使用的jd-gui<br /><img src="http://www.aygfsteel.com/images/blogjava_net/produ/jdgui.png" border="0" alt="" /><br /><br />直到今天åQŒååæ˜¯æˆ‘所需要的一ä¸?classæ–‡äšg不能反编译,出现了如下的情况<br /><img src="http://www.aygfsteel.com/images/blogjava_net/produ/internalerror.png" border="0" alt="" /><br /><br />很慌啊,竟然不能反编译,其他çš?classæ–‡äšg却可以,真是伤心åQŒæ— å¥ˆæ±‚助搜索引擎,发现了一‹Æ¾jd-gui的同¾cÕd·¥å…øP¼Œä½†æ˜¯å´å¯ä»¥è§£å†›_‡ºçŽ?/ INTERNAL ERROR//的问题,真是太棒了,赶紧贴出æ?a >https://github.com/deathmarine/Luyten</a> <br /><br />有过比对才发现luyten的速度比jd-gui快很多,真是长江后浪推前‹¹ªï¼Œä¸€ä»£æ›´æ¯”一代浪<br /><img src ="http://www.aygfsteel.com/produ/aggbug/430691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/produ/" target="_blank">都较ç˜?/a> 2016-05-28 12:36 <a href="http://www.aygfsteel.com/produ/archive/2016/05/28/430691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#对称加密½Ž—法Java实现http://www.aygfsteel.com/produ/archive/2016/03/28/430629.html都较ç˜?/dc:creator>都较ç˜?/author>Mon, 28 Mar 2016 14:12:00 GMThttp://www.aygfsteel.com/produ/archive/2016/03/28/430629.htmlhttp://www.aygfsteel.com/produ/comments/430629.htmlhttp://www.aygfsteel.com/produ/archive/2016/03/28/430629.html#Feedback0http://www.aygfsteel.com/produ/comments/commentRss/430629.htmlhttp://www.aygfsteel.com/produ/services/trackbacks/430629.html最˜q‘å› ä¸ÞZ¸šåŠ¡éœ€æ±‚ï¼Œéœ€è¦æŠŠä¸€ŒDµC#¾~–写的加密代码采用Java˜q›è¡Œå®žçްåQŒåœ¨æ­¤è®°ä¸‹æˆ‘的实施过½E‹å’Œ˜q‡ç¨‹ä¸­ç¢°åˆ°çš„ä¸€äº›é—®é¢˜ä»¥å¤‡åŽç”¨ã€‚äØ“äº†ä¾¿äºŽè§‚å¯Ÿï¼Œåªè„“ä¸ŠC#源码中关键的部分åQ?br />
 1 ///
 2 ///<summary>
 3 /// åР坆æ–ÒŽ³•
 4 /// </summary>
 5 /// <param name=\"Source\">待加密的ä¸?/span></param>
 6 /// <returns>¾lè¿‡åŠ å¯†çš„ä¸²</returns>
 7 public static string Encrypto(string Source)
 8 {
 9     byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
10     MemoryStream ms = new MemoryStream();
11     mobjCryptoService.Key = GetLegalKey();
12     mobjCryptoService.IV = GetLegalIV();
13     //创徏对称加密器对è±?br />14     //下面的控制台打印是我自己æ·ÕdŠ æ–¹ä¾¿è§‚å¯Ÿçš?/span>
15     Console.WriteLine("KeySize:" + mobjCryptoService.KeySize);
16     Console.WriteLine("LegalKeySizes:" + mobjCryptoService.LegalKeySizes.Length);
17     Console.WriteLine("Mode:"+ mobjCryptoService.Mode);
18     Console.WriteLine("Padding:"+mobjCryptoService.Padding);
19     ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
20     //定义ž®†æ•°æ®æµé“¾æŽ¥åˆ°åР坆è{换的‹¹?/span>
21     CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
22     cs.Write(bytIn, 0, bytIn.Length);
23     cs.FlushFinalBlock();
24     ms.Close();
25     byte[] bytOut = ms.ToArray();
26 
27     return Convert.ToBase64String(bytOut);
28 }
29 
30 ///
31 ///<summary>
32 /// è§£å¯†æ–ÒŽ³•
33 /// </summary>
34 /// <param name=\"Source\">待解密的ä¸?/span></param>
35 /// <returns>¾lè¿‡è§£å¯†çš„串</returns>
36 public static string Decrypto(string Source)
37 {
38     try
39     {
40         byte[] bytIn = Convert.FromBase64String(Source);
41         MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
42         mobjCryptoService.Key = GetLegalKey();
43         mobjCryptoService.IV = GetLegalIV();
44         //创徏对称解密器对è±?/span>
45         ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
46         //定义ž®†æ•°æ®æµé“¾æŽ¥åˆ°åР坆è{换的‹¹?/span>
47         CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
48         StreamReader sr = new StreamReader(cs);
49         return sr.ReadToEnd();
50     }
51     catch (Exception)
52     {
53         return string.Empty;
54     }
55 }

其中有一个问题:
1 //生成加密器的对象由RijndaelManaged得来åQŒé‚£ä¹ˆè¿™ä¸ªRijndaelManaged对象是干嘛的åQŸç¬¬ä¸‰æ–¹çš„?原生的?
2 private static SymmetricAlgorithm mobjCryptoService = new RijndaelManaged();

调查之后åQŒå¥½å§ï¼Œå®ƒæ˜¯ä¸€¿Uå¯¹¿U°åŠ å¯†ç®—æ³•ï¼ˆå¯ä»¥ç†è§£ä¸ºåœ¨åŒæ–¹ä¹‹é—´å¯ä»¥å®žçŽ°åŠ è§£å¯†ï¼‰åQŒä»¥ä¸‹æ¥è‡ªç™¾¿U‘:
高çñ”加密标准åQˆè‹±è¯­ï¼šAdvanced Encryption StandardåQŒç¾ƒå†™ï¼šAESåQ‰ï¼Œåœ¨å¯†ç å­¦ä¸­åˆ¿U°Rijndael加密法,是美国联邦政府采用的一¿UåŒºå—加密标准。这个标准用来替代原先的DESåQŒå·²¾lè¢«å¤šæ–¹åˆ†æžä¸”广为全世界所使用。经˜q‡äº”òq´çš„甄选流½E‹ï¼Œé«˜çñ”加密标准ç”Þq¾Žå›½å›½å®¶æ ‡å‡†ä¸ŽæŠ€æœ¯ç ”½I‰™™¢åQˆNISTåQ‰äºŽ2001òq?1æœ?6日发布于FIPS PUB 197åQŒåƈåœ?002òq?æœ?6日成为有效的标准ã€?006òqß_¼Œé«˜çñ”åŠ å¯†æ ‡å‡†å·²ç„¶æˆäØ“å¯¹ç§°å¯†é’¥åŠ å¯†ä¸­æœ€‹¹è¡Œçš„算法之一ã€?/div>
之前对加密标准认识的òq¶ä¸å¤šï¼Œä½†æ˜¯é€šè¿‡ä»£ç æ¥çœ‹åQŒä¼¼ä¹Žå®žçް坹¿U°åŠ å¯†è¿˜éœ€è¦åˆ«çš„ææ–™ï¼Œçœ‹åˆ°ä¸‹é¢˜q™ä¸¤ä¸ªæ–¹æ³?/div>
 1 /// <summary>
 2 /// è޷得坆钥
 3 /// </summary>
 4 /// <returns>密钥</returns>
 5 private static byte[] GetLegalKey()
 6 {
 7     string _TempKey = Key;//Key已经预先写死在代码里äº?/span>
 8     mobjCryptoService.GenerateKey();
 9     byte[] bytTemp = mobjCryptoService.Key;
10     int KeyLength = bytTemp.Length;
11     if (_TempKey.Length > KeyLength)
12         _TempKey = _TempKey.Substring(0, KeyLength);
13     else if (_TempKey.Length < KeyLength)
14         _TempKey = _TempKey.PadRight(KeyLength, ' ');
15       return ASCIIEncoding.ASCII.GetBytes(_TempKey);
16 }
17 //GetLegalKeyæ–ÒŽ³•每次都会˜q”å›žä¸€ä¸ªé•¿åº¦äØ“32çš„byte数组
18 //mobjCryptoService.Key = GetLegalKey();
19 
20 /// <summary>
21 /// èŽ·å¾—åˆå§‹å‘é‡IV
22 /// </summary>
23 /// <returns>初试向量IV</returns>
24 private static byte[] GetLegalIV()
25 {
26     string _TempIV = "$%^&*()_osudghwe7%%2kdijskldglk2397^&*wigwuqwelkn";//˜q™æ˜¯è™šæž„çš?/span>
27     mobjCryptoService.GenerateIV();
28     byte[] bytTemp = mobjCryptoService.IV;
29     int IVLength = bytTemp.Length;
30     if (_TempIV.Length > IVLength)
31         _TempIV = _TempIV.Substring(0, IVLength);
32     else if (_TempIV.Length < IVLength)
33         _TempIV = _TempIV.PadRight(IVLength, ' ');
34     return ASCIIEncoding.ASCII.GetBytes(_TempIV);
35 }
36 //GetLegalIVæ–ÒŽ³•每次都会˜q”å›žä¸€ä¸ªé•¿åº¦äØ“16çš„byte数组
37 //mobjCryptoService.IV = GetLegalIV();

虽然是通过两个æ–ÒŽ³•来取得的KEYå’ŒIVåQˆäºŒè€…都是byte数组åQ‰ï¼Œä½†æ˜¯KEYå’ŒIV都是预先写死在代码里的,只不˜q‡æ˜¯˜q”回了特定长度的byte数组ã€?/div>
1 //RijndaelManagedåQŒè¿™æ˜¯å¯¹¿U°ç®—法合法的keyå’ŒIV的长度(分别以位来计½Ž—)
2 //        Legal min key size = 128
3 //        Legal max key size = 256
4 //        Legal min block size = 128
5 //        Legal max block size = 256

¾lè¿‡è°ƒæŸ¥åQŒè¿˜éœ€è¦é…¾|®ç®—法的modeå’ŒpaddingåQŒæ­¤å¤„åÆˆæ²¡æœ‰˜q›è¡Œè®„¡½®åQŒæ‰€ä»¥é»˜è®¤åˆ†åˆ«äØ“CipherMode.CBCå’ŒPaddingMode.PKCS7。详è§?a title="mode">modeå’?a title="padding">padding

目前来看åQŒéœ€è¦è°ƒæŸ¥çš„可以告一ŒDµè½äº†ï¼Œé‚£ä¹ˆæŽ¥ä¸‹æ¥ï¼Œž®±éœ€è¦è°ƒæŸ¥å¦‚何Java实现了。在Java中,实现加密需要用到JCE提供的Cipher对象åQŒç±»æ¯”C#的实玎ͼŒå€Ÿé‰´òq¿å¤§½E‹åºå‘˜çš„æ™ºæ…§åQŒæˆ‘首先ž®è¯•写了一下(只脓出关键部分)
 1 public void init(byte[] keyBytes) {
 2 
 3     // å¦‚果密钥不èƒö16位,那么ž®Þp¡¥­‘? ˜q™ä¸ªif ä¸­çš„内容很重è¦?/span>
 4     int base = 16;
 5     if (keyBytes.length % base != 0) {
 6         int groups = keyBytes.length / base
 7                 + (keyBytes.length % base != 0 ? 1 : 0);
 8         byte[] temp = new byte[groups * base];
 9         Arrays.fill(temp, (byte) 0);
10         System.arraycopy(keyBytes, 0, temp, 0, keyBytes.length);
11         keyBytes = temp;
12     }
13     // è½¬åŒ–成JAVA的密钥格å¼?/span>
14     key = new SecretKeySpec(keyBytes, "AES");
15     try {
16         // åˆå§‹åŒ–cipher
17         cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
18     } catch (NoSuchAlgorithmException e) {
19         e.printStackTrace();
20     } catch (NoSuchPaddingException e) {
21         e.printStackTrace();
22     } 
23 }
24 
25 /**
26  * åР坆æ–ÒŽ³•
27  * @param content å¾…加密內容字½W¦ä¸²
28  * @param keySrc åŠ è§£å¯†å¯†¿U˜é’¥å­—符ä¸?br />29  * @param iv ½Ž—法所需向量
30  * @return
31  * @throws UnsupportedEncodingException
32  */
33 public String encrypt(String content, String keySrc,String iv) throws UnsupportedEncodingException {
34     byte[] encryptedText = null;
35     init(keySrc.getBytes("utf-8"));
36     try {
37         cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv.getBytes()));
38         encryptedText = cipher.doFinal(content.getBytes("utf-8"));
39     } catch (Exception e) {
40         e.printStackTrace();
41     }
42     return Base64.encodeBase64String(encryptedText);
43 }
44 
45 /**
46  * è§£å¯†æ–ÒŽ³•
47  * @param encryptedData å¾…解密数æ?br />48  * @param keySrc åŠ è§£å¯†å¯†¿U˜é’¥å­—符ä¸?br />49  * @param iv ½Ž—法所需向量
50  * @return
51  * @throws UnsupportedEncodingException 
52  */
53 public String decrypt(String encryptedData, String keySrc,String iv) throws UnsupportedEncodingException {
54     byte[] decryptedText = null;
55     init(keySrc.getBytes("utf-8"));
56     try {
57         cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv.getBytes()));
58         decryptedText = cipher.doFinal(Base64.decodeBase64(encryptedData));
59     } catch (Exception e) {
60         e.printStackTrace();
61     }
62     return new String(decryptedText);
63 }
64 
65 public static void main(String[] args) throws UnsupportedEncodingException {
66     EncryptingUtil eu = new EncryptingUtil();
67     
68     String content = "abc";
69     // åŠ å¯†å­—ç¬¦ä¸?/span>
70     System.out.println("加密前的åQ? + content);
71     // åР坆æ–ÒŽ³•
72     String enc = eu.encrypt(content,"¿U˜é’¥å€?,"向量å€?);
73     System.out.println(enc);
74     // è§£å¯†æ–ÒŽ³•
75     String dec = eu.decrypt(enc,"¿U˜é’¥å€?, "向量å€?);
76     System.out.println("解密后的内容åQ? + dec);
77 }

Java版本的实玎ͼŒç›®å‰æœ‰å‡ ä¸ªé—®é¢˜ï¼Œä¸€ä¸ªå°±æ˜¯è¡¥é½æ–¹å¼çš„问题åQŒåœ¨C#中默认的补齐方式PKCS7åQŒä½†æ˜¯Java默认òq¶ä¸æ”¯æŒè¯¥è¡¥é½æ–¹å¼ï¼Œåªæœ‰PKCS5åQ›å…¶‹Æ¡å°±æ˜¯ç§˜é’¥çš„长度问题åQŒC#代码中的¿U˜é’¥é•¿åº¦æ˜?56位的åQŒä½†æ˜¯Java默认最大支æŒ?28位的åQŒæ‰§è¡Œæ—¶ä¼šæŠ¥å‡?#8221;Illegal key size”的问题。这位大牛的东东帮到我了åQŒæ„Ÿè°¢ã€?a title="查看">查看

当需要ä‹Éç”?56位长度的¿U˜é’¥æ—Óž¼Œéœ€è¦ä¸‹è½½å¯¹åº”Java版本的JCE拓展包,图中的问题就是因为JCE拓展包和Java版本不匹配引èµïLš„


]]>è½?-Eclipse安装SVN插äšghttp://www.aygfsteel.com/produ/archive/2015/04/24/424633.html都较ç˜?/dc:creator>都较ç˜?/author>Fri, 24 Apr 2015 02:31:00 GMThttp://www.aygfsteel.com/produ/archive/2015/04/24/424633.htmlhttp://www.aygfsteel.com/produ/comments/424633.htmlhttp://www.aygfsteel.com/produ/archive/2015/04/24/424633.html#Feedback0http://www.aygfsteel.com/produ/comments/commentRss/424633.htmlhttp://www.aygfsteel.com/produ/services/trackbacks/424633.html

原文链接:http://www.cnblogs.com/ruiati/p/3584120.html

1、下载最新的EclipseåQŒæˆ‘的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)ç‰?nbsp;
   如果没有安装的请到这里下载安装:http://eclipse.org/downloads/ 

2、下载SVN插äšgsubclipseåQŒå®‰è£…方法有两种.那种¾l¿è‰²çš„以link方式安装的方式我在indogo上试了多‹Æ¡å°±æ˜¯æ²¡æˆåŠŸã€?nbsp;

3、SVN插äšg下蝲地址及更新地址åQŒä½ æ ÒŽ®éœ€è¦é€‰æ‹©ä½ éœ€è¦çš„版本。现在最新是1.8.x 
Links for 1.8.x Release: 
Eclipse update site URL: http://subclipse.tigris.org/update_1.8.x 
svn插äšg包下è½? http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 

Links for 1.6.x Release: 
Eclipse update site URL: http://subclipse.tigris.org/update_1.6.x 
svn插äšg包下è½? http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 

Links for 1.4.x Release: 
Eclipse update site URL: http://subclipse.tigris.org/update_1.4.x 
svn插äšg包下è½? http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 

4、下载插件包åQŒå°†æ’äšg包复制到Eclipse安装目录。见å›?nbsp;
   
   下蝲后的插äšg包目录结构: 

 

ž®†æ’件包featureså’Œplugins目录中的文äšg分别复制到Eclipse安装目录的featureså’Œplugins中。然后重启Eclipse ž®±å¥½äº?nbsp;



5、通过Eclipse安装åQŒçœ‹å›?nbsp;


 





然后一路点NextåQŒå°±OK了!åQ?nbsp;

 

ž®†é¡¹ç›®æ·»åŠ åˆ°å­˜å‚¨åº?/a>

要将新的™å¹ç›®æ·ÕdŠ åˆ?Subversion 存储库,请右击该™å¹ç›®åQˆå¯ä»¥åœ¨ä»ÖM½• Eclipse 的项目视图或 Navigator 视图åQ‰ï¼Œòq¶ä¸”从菜单中选择 Team > Share Project。Eclipse 会显½C?Share Project 对话框ã€?/p>



Share Project 对话æ¡? height= 

ä»?Eclipse 当前支持的存储库列表中选择 SVNåQŒç„¶åŽå•å‡?Next。接下来的对话框åQˆå‚见图 13åQ‰è®©æ‚¨é€‰æ‹©çŽ°æœ‰å­˜å‚¨åº“ä½¾|®ï¼Œæˆ–者创å»ÞZ¸€ä¸ªæ–°ä½ç½®ã€?/p>



选择存储库位¾|? height= 

如果您的存储库已列出åQˆå¦‚您所见,我已¾læ·»åŠ äº†è‡ªå·²çš„åº“åQ‰ï¼Œé€‰ä¸­å®ƒï¼Œòq¶å•å‡?Finish。如果您的存储库未列出,è¯äh·»åŠ å®ƒåQˆæœ‰å…Œ™¯´æ˜Žï¼Œè¯·å‚é˜?nbsp;快速测è¯?/a>åQ‰ï¼Œòq¶ç‘ô¾l­ã€‚Eclipse ž®†åœ¨å­˜å‚¨åº“中创徏新目录,其名¿UîC¸Ž™å¹ç›®ç›¸åŒåQŒåƈ昄¡¤º™å¹ç›®ä¸­çš„æ‰€æœ‰æ–‡ä»¶å’Œæ–‡äšg夹的列表ã€?/p>

 

如何¾l“合使用 Svn å’?Eclipse - .w.elLs black humor - .w.elLs black humor

在顶部的字段中输入适当的内å®ÒŽ¥æè¿°æ­¤é¡¹ç›®ï¼Œç„¶åŽå•击 Select All 选中该项目的所有文件。单å‡?OK 以检入项目,òq¶å°†å…¶å½“前状态传递给 Subversion 存储库ã€?/p>

Subversion 的命令和输出¾l“果昄¡¤ºåœ?Console 视图中,通常位于 Eclipse ½H—口的底部(如果您查çœ?Subclipse ½I¶ç«Ÿå¯šw¡¹ç›®æ‰§è¡Œäº†ä»€ä¹ˆæ“ä½œï¼‰ã€?/p>

 

版本控制¾pȝ»Ÿçš„重要特性之一是其他开发äh员能够随时ç‘ô¾l­å¼€å‘,òq¶åœ¨å‡†å¤‡å¥½æ—¶æäº¤å…¶å˜æ›´ã€‚要下蝲˜q™äº›å˜æ›´åQŒåƈž®†å…¶ä¸Žæœ¬åœ°å‰¯æœ¬é›†æˆï¼Œæ‚¨éœ€è¦æ›´æ–°é¡¹ç›®ã€?/p>

叛_‡»æ‚¨è¦æ›´æ–°çš„项目,然后从菜单中选择 Team > Update。Eclipse ž®†ä»Žå­˜å‚¨åº“中‹‚€ç´¢ä“Q何变æ›ß_¼Œòq¶å°è¯•将它们与本地副本合òq¶ã€?/p>

 

如果ž®†æ–‡ä»¶æ·»åŠ åˆ°™å¹ç›®ä¸­ï¼ˆå‚见å›?15åQ‰ï¼Œå®ƒä¸ä¼šè‡ªåŠ¨æˆä¸ºç‰ˆæœ¬æŽ§åˆ¶çš„ä¸€éƒ¨åˆ† —— 您需要明¼‹®å°†å…¶æ·»åŠ åˆ°ç‰¹å®šçš„å­˜å‚¨åº“ä¸­ã€‚åœ¨ä¸‹é¢çš„å±òq•快照中åQŒæ‚¨å¯ä»¥çœ‹åˆ°åQŒæˆ‘已经ž®?ReadMe.txt æ–‡äšgæ·ÕdŠ åˆîCº† threadWork ™å¹ç›®ä¸­ã€?/p>

 

如何¾l“合使用 Svn å’?Eclipse - .w.elLs black humor - .w.elLs black humor

叛_‡»æ–°æ–‡ä»Óž¼Œç„¶åŽé€‰æ‹© Team > Add to Version Controlã€‚å°±æ˜¯è¿™æ øP¼ä¸‹ä¸€‹Æ¡å°†æ­¤é¡¹ç›®ä¸­çš„变更提交给存储库时åQŒæ–°æ–‡äšg也会‹‚€å…¥ã€?/p>

 

如果ž®†æ–‡ä»¶æ·»åŠ åˆ°äº†ä¸Ž™å¹ç›®ä¸åœ¨ç›¸å…³çš„存储库中,您可以轻村֜°åˆ é™¤å®ƒã€‚右å‡ÀL–‡ä»Óž¼Œç„¶åŽé€‰æ‹© Delete。不需要ä‹Éç”?Team 菜单åQŒSubclipse 自动ž®†æ ‡è®°è¦åˆ é™¤çš„æ–‡ä»Óž¼Œòq¶å°†å®ƒä»Ž™å¹ç›®ä¸­ç§»é™¤ã€‚下一‹Æ¡å°†å˜æ›´æäº¤¾l™å­˜å‚¨åº“æ—Óž¼Œè¯¥æ–‡ä»¶è¢«åˆ é™¤äº†ã€?/p>

 

要重命名 Subclipse 控制的文件或目录åQŒè¯·å›_‡»å®ƒï¼Œç„¶åŽé€‰æ‹© Rename。在输入字段中键入项的新名称åQŒæŒ‰ Enter 键。文件是在项目中重命名的åQŒé‡å‘½åæ“ä½œåQˆé€šè¿‡ Add 操作æ·ÕdŠ æ–°å¿U°ã€é€šè¿‡ Delete 操作删除旧名¿UŽÍ¼‰æŽ’队½{‰å¾…您下一‹Æ¡æäº¤ã€‚在å›?16 中,您可以看到将 main.c é‡å‘½åäØ“ threadWork.c 之后、提交更改之前的 threadWork ™å¹ç›®ã€‚注意,Subclipse ä¸? “æ–?#8221; æ–‡äšgæ·ÕdŠ çš„è“è‰²å°åŠ å·è¡¨ç¤ºè¯¥æ–‡ä»¶è¢«å®‰æŽ’åœ¨ä¸‹ä¸€‹Æ¡æäº¤æ—¶æ·ÕdŠ ã€?/p>

 

如何¾l“合使用 Svn å’?Eclipse - .w.elLs black humor - .w.elLs black humor

 

如果™å¹ç›®ç”Ÿæˆæ–‡äšgåQŒæˆ–者包括您不想‹‚€å…¥çš„ Subversion 存储库文ä»Óž¼Œåˆ™å¯ä»¥é€šçŸ¥ Subclipse 忽略它们。右å‡ÀL‚¨è¦åœ¨ç‰ˆæœ¬æŽ§åˆ¶ä¸­æŽ’除的文äšg或目录,然后选择 Team > Add to svn:ignore 卛_¯æ˜„¡¤ºAdd to svn:ignore 对话框ã€?/p>

 

如何¾l“合使用 Svn å’?Eclipse - .w.elLs black humor - .w.elLs black humor

单击 OK ž®†è¿™ä¸ªç‰¹å®šçš„æ–‡äšgæ·ÕdŠ åˆ°é¡¹ç›®ç›®å½•çš„ svn:ignore 属性中。选择 Wildcard extension 忽略å…ähœ‰å½“前文äšg扩展名的所有文ä»Óž¼Œæˆ–选择 Custom pattern 在忽略列表中æ·ÕdŠ æ‚¨è‡ªå·Þqš„通配½W¦ã€‚下一‹Æ¡æäº¤å˜æ›´æ—¶åQŒå¯¹å¿½ç•¥åˆ—表的这些更改将æ·ÕdŠ åˆ°å­˜å‚¨åº“ä¸­ã€?/p>

 

如果您对™å¹ç›®çš„变更感到满意,¼‹®å®šäº†æ‚¨çš„代码可以编译,òq¶ä¸”已经对变更进行测试,则应ž®†å®ƒä»¬æäº¤ç»™ Subversion 存储库。在您的工作站崩溃时åQŒå®ƒå¯ä»¥ä½œäؓ一个备份,òq¶å…è®¸å…¶ä»–开发äh员更新其本地副本以包含您的变更ã€?/p>

在尝试提交变更之前,è¯ïL¡®ä¿æ›´æ–°æ‚¨çš„项目(参阅 “æ›´æ–°™å¹ç›®”åQ‰ã€‚右击项目,òq¶ä»Žèœå•中选择 Team > Commit。Eclipse 会显½CÞZ¸€ä¸?Commit 对话框(参见å›?18åQ‰ï¼Œå…¶ä¸­æ±‡æ€ÖMº†æ‚¨ä½œå‡ºçš„变更ã€?/p>

 

如何¾l“合使用 Svn å’?Eclipse - .w.elLs black humor - .w.elLs black humor

如果仔细观察åQŒæ‚¨ä¼šçœ‹åˆîC¸€ä¸ªå±žæ€§æ›´æ”¹äØ“™å¹ç›®ç›®å½•åQˆæˆ‘已经æ·ÕdŠ äº?/p>

svn:ignore

属性,以ä‹É某些文äšg保留在存储库外)åQŒåƈ且在æ·ÕdŠ  threadWork.c æ—Óž¼Œåˆ é™¤äº?main.c。这一变更对实际上表示的是一个操作(文äšg重命名)ã€?/p>

此时åQŒå¦‚果您要ä‹É某些资源保留在存储库外,则可以取消对˜q™äº›èµ„源选择。如果您在一个文件中完成了部分工作,òq¶ä¸”不希望检入未完成的变æ›ß_¼Œåˆ™è¿™¿Uæ–¹æ³•非常有用。在™å‰™ƒ¨çš„æ–‡æœ¬å­—ŒDµä¸­è¾“入适当的注释,然后单击 OK ž®†å˜æ›´æ£€å…¥å­˜å‚¨åº“ã€?/p>



]]> Ö÷Õ¾Ö©Öë³ØÄ£°å£º Óí³ÇÊÐ| »ÆÆ½ÏØ| ÎÚÇ¡ÏØ| ¿µ±£ÏØ| ͬÐÄÏØ| ÎàÖÝÊÐ| ½¨ÑôÊÐ| ÂíÉ½ÏØ| Æ½Ë³ÏØ| ºì°²ÏØ| ½ðÉ³ÏØ| ÜõÍåÇø| ÓÑÒêÏØ| ¾²º£ÏØ| ̨ÖÝÊÐ| ËÕÄáÌØ×óÆì| Ë«½­| ÂêÇúÏØ| »ÝÀ´ÏØ| ÇÕÖÝÊÐ| ÕØÖÝÏØ| ÎâÆìÏØ| Ì©ºÍÏØ| ¹ãÆ½ÏØ| Á®½­ÊÐ| ¸§ËÉÏØ| ÆÕÄþÊÐ| ¾ÃÖÎÏØ| ÍôÇåÏØ| ºÏÑôÏØ| ½¨µÂÊÐ| ÀäË®½­ÊÐ| ÄϺÍÏØ| Äþ»¯ÏØ| ³¤É³ÏØ| ƽÄÏÏØ| ÓÚÌïÏØ| ãþÑôÏØ| ×ó¹±ÏØ| Î÷°²ÊÐ| ÓñÃÅÊÐ|