Ⅰ 參加Java培訓一般每天的學習時間有多長
java培訓一般每天的學習時間正常是在10個小時左右,其他的時間自己可以自由安排。一周學習通常也都是五天,其中有兩天是自習或者是休息。不同的java培訓機構安排的學習時間也是有所差別的,實際情況是怎麼樣的需要具體去咨詢才能夠了解。
首先,Java課程的學習時長是根據諸多因素而整體設定的。其中,比較關鍵的一個因素就是課程內容的量,如果課程包含的內容比較多,技術范圍比較廣的話,在一定的學習周期之內,每天安排學習的內容就會比較多,學習時間也就相對來說比較長。如果是內容比較少的話,可能每天安排的學習時間就比較短,可能就是課程學習一天,然後自習一天這樣的方式。
其次,根據學習效果安排每天的學習時間,這樣每天就需要留有足夠的時間讓學員實操練習,更好地鞏固所學習到的內容。為了讓學員盡可能真正吸收老師課上講解的知識,一些java培訓機構也會專門設置晚自習,讓學員鞏固一天學習的知識,所以一天下來學習的時間就比較長。
最後,就是對於一些理解能力比較差的同學需要即使的輔導跟進,有些時候如果大家對某一個知識點都不太明白的話,老師也會加時進行講解。這樣一來一天的學習時間也同樣會延長,所以對於java培訓每天的學習時長也是需要根據實際情況決定的。
綜上考慮,不管是怎麼樣安排學習,最後的學習時長一般都是處於5-6個月之間,這中間也會根據學員的實際學習情況進行時間的延長,縮短。
Ⅱ 計算機專業有哪些就業方向
計算機專業有以下幾個方面的就業方向:
1設計方向:這個專業包括了計算機圖形學Computer Graphics,主要研究圖像的表達、處理等。計算機成像、三維動畫、網路影像傳播都屬於這個方向的范疇。現在的生活離不開圖形圖像的數字表達處理,也就離不開學多媒體,計算機圖形學的同學。
2網路程序員:網路程序員這個群體應該能佔到計算機領域70%以上的研發人員。
前端開發:廣義的前端就是指呈現在用戶視覺的領域,直接可以讓用戶感受到的開發,往下會細分為Web,Andoroid,iOS等。
後端開發:後端開發指的是,在為前端提供數據支撐的一個大的總類,包括資料庫,業務邏輯處理,數據處理等。主要的開發語言分兩個方向:編譯型語言,如Java,C/C++等,特點就是運行效率高,相同機器配置的情況下能支撐更大的訪問量,適用於超高並發度。另一種就是以PHP、Python等解釋性語言,他們的特點就是開發效率高,無需編譯,寫完就能運行,主要針對一些運算量不大的中小型網站,比如說你的個人博客,管理後台。
3運維工程師:主要是他的開發任務比較少,當數量達到一定程度,資料庫伺服器都有上千台的時候,就需要專業的人士做做數據維護的工作了,如性能調優、容災備份,熱替換等。而且目前的趨勢都是服務化,組件化,虛擬化。而一般小型創業公司都是託管到各種雲,然後由後台工程師兼任。
4測試工程師:產品測試工程師:一個產品或者一個新的功能需要上線,必須要經過完備的測試,測試工程師目前其實有兩種,一種是純測試,另一種是他的升級版測試開發工程師,它能在測試的過程的順手把小bug改了而不需要返工。好的測試開發工程師工資也可以比做開發的工資高。
安全測試工程師:同樣一個產品或者一個新的功能需要上線,不僅需要經過完備的功能測試,還有一向就是安全性測試。或者你們也許更喜歡叫他們黑客(壞孩子),白帽子(好孩子)。
5架構師:已經算是程序員界的高富帥了,可以稱的上是半個科學家。架構師的工作差不多已經基本脫離代碼了,他的主要工具從VIM,EClipse變成了Word,PPT。他主要負責技術選型,針對大容量高並發的問題制定解決方案。基本上他們都是由後台工程師升級打怪升上來的。
6演算法工程師:這類人,基本都是中學參加NOI奧賽,或大學參加ACM競賽拿過獎,或者本身思維邏輯嚴密性高,數學基礎扎實,演算法牛逼。如果你是一個數學系或者物理系的優秀畢業生想轉IT,這個可以作為你的主要方向。這個算是建築系裡的學院派,從學校畢業之後就直接達到了這個等級,起薪很高。
6數據分析師:作用就是從一堆數據中挖去你你想要的信息,一般分三步走:爬數據,建模,寫演算法驗證。
爬蟲工程師,就是從各種國家統計局網站,電子商務網站去爬數據,存儲為結構化的數據。數學建模,建立各種數據之間的影響關系,影響因子。寫演算法驗證,大部分數據挖掘工程師好像都是用Python或R,工具比較多,語法簡單。
難點其實不是在寫代碼部分,而在於建模,如何設計一個有效的模型來量化這些數據間的聯系。他們一般自稱「調參俠」,顧名思義,就是天天調整參數,讓模型運算結果來匹配實際情況。
7硬體工程師:計算機硬體工程師的工作范圍在弱電,工作內容主要有PCB設計(印製電路板),IC(晶元)設計,FPGA工程師,還有針對特定硬體做系統開發維護的嵌入式工程師。硬體工程師有一定的市場需求,但是也不多。從技能需求來看,要求數學知識扎實,邏輯嚴密,電子電路知識更多。從未來的發展前景來看,隨著智能硬體物聯網的推廣,會有一波大紅利。
8人工智慧與人機交互方向:人工智慧是很綜合的學科,裡面涵蓋了計算機專業的很多小方向。比如機器學習系統,計算機語言,圖像處理,語音識別,機器人,人機交互等等。一般對計算機科學背景要求較高,包括數據結構、演算法之類純計算機專業的課程,都有一定要求。人工智慧的產品包括機器人、語言識別、圖像識別、自然語言處理和專家系統等。這個方向最近很熱,憑借著扎實的計算機科學相關專業功底,可以在大量工作機會中尋找突破口。
Ⅲ 大展信息科技有限公司怎麼樣啊。我指做java開發這方面。
大展信息科技有限公司做java開發還可以。學習java推薦千鋒教育。千鋒教育採用全程面授高品質、高體驗培養模式,學科大綱緊跟企業需求,擁有國內一體化教學管理及學員服務,在職業教育發展道路上不斷探索前行。
學習Java應該掌握的技巧:
1.JVM
三年開發面試必問,這是你編好的程序如何在計算機內存中操作數據的重要知識模塊,jvm內存模型,類載入機制,垃圾回收機制,內存調優理解越深你的段位越高!
2.Linux命令
mkdir,rm-rf(這個不能瞎整),free,top,tail等等一大堆哈哈
3.主流開發框架
開發框架:spring,MVC模式,springboot,springcloud等等。持久層框架:ibatis,struts,hibernate,mybatis等等(ibatis和struts了解發展歷史即可)工作流框架:activiti等等
4.資料庫
主流的幾種:Oracle,Mysql,SqlServer,MongoDB,Redis。要掌握:sql語法基礎,sql優化方案,存儲過程基本讀寫,索引原理及優化,底層讀寫原理等等。
想要了解更多有關Java開發的相關信息,推薦咨詢千鋒教育。千鋒教育成立教研學科中心,推出貼近企業需求的線下技能培訓課程。課程包含HTML5大前端培訓、JavaEE+分布式開發培訓、Python人工智慧+數據分析培訓、全鏈路UI/UE設計培訓、雲計算培訓、全棧軟體測試培訓、大數據+人工智慧培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、網路安全培訓、區塊鏈培訓、影視剪輯包裝培訓、游戲原畫培訓、全媒體運營培訓。採用全程面授高品質、高體驗培養模式,非常值得選擇。
Ⅳ 暑假到電腦公司去打短工,一般需要什麼技能
暑假到電腦公司去打短工,一般需要什麼技能?
3.游戲開發可以說是多種技術的結合,尤其是在圖形技術方面,比其他大多數產品都需要更多的技術。除了編寫游戲邏輯和網路游戲的交流,越來越多的工程師開始致力於游戲AI、游戲引擎和圖形引擎的研發。大部分PC游戲都要求特別熟悉C++,因為大部分終端游戲都是基於C++開發的,畢竟windows。而隨著手機游戲時代的到來,越來越多使用Java、Python等語言的公司出現。當然,我們也可以使用基於unity的開發方法,用C#和lua等語言。騰訊網易級別的公司需要你懂圖形和腳本語言。同時,越來越多的公司要求學生了解分布式和Linux操作系統。
Ⅳ unityecs沒有繪制
性能;
減少不必要的內存使用
放一張圖,之前寫了demo測試,對於使用ecs,不使用ecs,做instancing優化3中情況下,性能的差別。
可以看到如果你渲染的object在500以內,ecs性能並沒有顯著提升,當超過1000後,ecs性能有顯著的優勢,在10000obj下,差不多100的性能差距。
所以對於200內obj的游戲,是不是用ecs差別不大。
另外ecs這是unity提出的一個系統化的方案和標准,我們自己也可以或多或少使用傳統方法做出類似的結果,沒必要非ecs不可。
demo是如下圖(Instancing),根據自帶的rotate demo完成對應的instancing和傳統方法版本,這個demo是1000個cube,有一個sphere旋轉,撞到cube後,cube會自轉一段時間,逐漸停止,所以需要1001個物體不停的update:
=========補充公司內分享的完整文章:
不再需要MonoBehaviour、Component和GameObject
以前MonoBehaviour承載了游戲邏輯和數據兩部分功能,我們通過創建GameObject然後添加MB(MonoBehaviour,下同)然後通過Update來更新游戲邏輯,往往我們Update里就是更新一些數據,而MB的實現非常復雜,有很多不需要的功能都一股腦的被繼承下來,這導致我們一個非常簡單的任務可能需要浪費很多內存去應付那些不需要的功能,如果再無節制的使用MB,那基本就是游戲運行效率的噩夢。
之前的Component是繼承自MB,大部分時候Component的作用就是提供數據,但是通過Component組織的數組是對CPU cache不夠友好的,因為它並沒有把需要多次重復計算更新的數據組織到一起,使得CPU在做計算時可能cache miss,如果游戲邏輯需要大量對象需要更新數據,可能這部分消耗是非常大的。
同時MB不能很好的解決執行順序問題,對於動態創建的GameObject,MB的更新順序是不確定的,我們往往系統某些MB的Update和Destroy在某些MB之後,以保證相互的依賴關系,但Unity的MB設計上沒有更好的解決這個問題,通過調整Script Execution Order既麻煩也沒啥卵用(之前測試對於動態創建的MB毫無作用,只能用於場景中靜態的MB)。
還有,如果游戲中存在大量的GameObject,上面綁定大量的Component,那麼執行大量的Update是非常耗時的,而且這些Update只能運行在主線程,無法並行。
為此,Unity 2018.2 引入了全新的ECS系統,用於解決上面提到的問題。
全數據化驅動
ECS的核心設計目標就是去掉傳統的MB,GameObject,Component對象結構,而改為全數據化驅動的代碼組織方式,通過這樣的改變,可以解決2個問題:
1)將數據更有效的組織,提高CPU cache利用率;
2)並行化。
先簡單看一個例子,這個是ECS sample自帶的例子:
這個例子可以看到,雖然畫面里有超過1000個物體,但並沒有對應1000個GameObject,當球體碰到方塊的時候,會產生自轉後衰減,同時可以保持在300-600的fps運行幀率。這在以前,我們要實現類似的效果需要創建1000個GameObject,然後有1000個MB負責更新GameObject的transform信息,我按照這樣的方法來實現,那麼這個demo大概只有1/3的fps。
注意到上圖會創建更多的GameObject,fps大概100-200fps之間,當然這么實現並不是最優化的,我們還可以使用Instancing優化drawcall,為了對比我又實現了Instancing的版本,對比如下:
fps大概150-300fps,可以看到instancing大概提高了1倍的fps,在1000 objs測試下,不同實現方法之間差別大概1-2倍,貌似差別不是很大,於是我又測試了更高obj數量的fps,在更高的objs測試下,得到如下圖表:
可以看到在更高的obj數量下,ECS方法的優勢就體現出來了,在10000 obj下,ECS任然可以做到350的高fps,而即便Instance優化,也只剩下4fps,差距幾乎100倍。
現在我們回到開頭,ECS解決了如下2個問題:
1)將數據更有效的組織,提高CPU cache利用率;
2)並行化。
但是如何解決的呢?
將數據更有效的組織,提高CPU cache利用率
傳統的方法是將gameobject的數據放在Components上,比如可能是這樣(參考1):
using Unity.Mathematics;
class PlayerData// 48 bytes
{
public string public int[]
public quaternion
public float3
string name; // 8 bytes
someValues; // 8 bytes
}
PlayerData players[];
他的內存布局是這樣:
而這樣的設計對cpu cache是極度不友好的,當你試圖批量更新float3數據時,cpu cache預測總是失敗的,因為他們被分配到了內存中不連續的區域,cpu需要幾次定址跳轉才能找到對應的數據並操作,如果我們能夠將需要批量更新的數據連續的存放到一起,這將大大提高cpu cache的命中率,提升計算速度。
按ECS設計規范,就是將批量的更新的數據抽取出來,在內存中連續排列,從而在cache預讀中能夠將後續的數據一次性讀取進來,提高cpu操作的效率,
在實際計算的時候,通過間接索引,來更新全部entity的各個類型的數據,而不是更新每個entity的全部數據,如圖:
可以看到這里,最大的變化是:
在一個system(相當於以前的component)更新計算中,是將所有的entity的position放在一起批量更新的,因為這些position的float3數據在內中是連續的,cpu操作起來是最快的。
並行化
將數據單獨提取出來後,接下來的任務就是將這些數據計算並行化,充分利用多核。在以前,幾乎邏輯代碼都是跑在主線程,當然也有項目組意識到了這個問題,會將一些和顯示無關的邏輯放入多線程中並行,但都沒有徹底的在數據上抽象形成一套完整的開發框架,而ECS解決了這個問題。
ECS開放了底層的job system系統,在上層提供了c# job system,它是一套多線程調度系統。如果不同的數據是無相互依賴的,僅需要將這些數據通過c# job system放入多個線程並行化計算就可以了,如:
public class RotationSpeedSystem : JobComponentSystem
{
struct RotationSpeedRotation : IJobProcessComponentData<Rotation, RotationSpeed>
{
public float dt;
public void Execute(ref Rotation rotation, [ReadOnly]ref RotationSpeed speed)
{
rotation.Value = math.mul(math.normalize(rotation.Value), quaternion.axisAngle(math.up(), speed.Value * dt));
}
}
protected override JobHandle OnUpdate(JobHandle inputDeps)
{
var job = new RotationSpeedRotation() { dt = Time.deltaTime };
return job.Schele(this, 64, inputDeps);
}
}
如果不同的數據有依賴,需要其他的數據計算完才能完整計算,則可以設置任務依賴,c# job system會自動完成這樣任務的調用和依賴關系排序。
混合模式
目前已經存在大量的傳統方式開發的代碼,如果想享受到ECS帶來的高效,勢必要將現有代碼大幅改造,有沒有相對簡單的方法既能保持現有代碼沒有太大變動,又可以提高效率呢,答案是ECS提供一種兼容的混合模式。
例如如下代碼(參考2):
using Unity.Entities;using UnityEngine;
class Rotator : MonoBehaviour{
// The data - editable in the inspector public float Speed;
}
class RotatorSystem : ComponentSystem{
struct Group
{
// Define what components are required for this // ComponentSystem to handle them. public Transform Transform;
public Rotator Rotator;
}
override protected void OnUpdate()
{
float deltaTime = Time.deltaTime;
// ComponentSystem.GetEntities<Group> // lets us efficiently iterate over all GameObjects // that have both a Transform & Rotator component // (as defined above in Group struct). foreach (var e in GetEntities<Group>())
{
e.Transform.rotation *= Quaternion.AngleAxis(e.Rotator.Speed * deltaTime, Vector3.up);
}
}
}
主要的修改是把MB的Update函數移到了ComponentSystem的OnUpdate函數中,同時增加了一個Group的struct,用於在MB和ComponentSystem之間交換數據,同時在原GameObject上添加一個GameObjectEntity組件,這個組件的用途是將GameObject其他全部的Component抽取出來並創建一個Entity,這樣就可以通過GetEntities函數在ComponentSystem中遍歷對應的GameObject了。
Unity會在啟動的時候,把所有掛載了GameObjectEntity組件的GameObject,都創建對應ComponentSystem,這樣你任然可是使用以前的GameObject.Instantiate方法來創建GameObject。只是原本MB的Update函數被替換到了ComponentSystem的OnUpdate函數中。
通過這樣的修改,你可以混合ECS的部分能力又相對保持原本的代碼結果,總結來說:
混合模式可以分離數據和行為,可以批量化更新對象的數據,避免每個對象的virtual方法調用(抽象到了一個函數中),任然可以繼續使用inspector來觀察GameObject的屬性和數據。
但是這樣修改並沒有徹底改善什麼,創建、載入的時間沒有改善,數據的訪問任然是cache不友好的,並沒有把數據在內存中連續排布,也沒有並行化。
只能說這樣修改是為了進一步靠近純ECS做的階段性代碼重構,最終還是要完全使用純ECS才能獲得最大的性能提升。
Ⅵ 計算機學院畢業論文題目
我建議你選擇:
3.基於SEAM的醫院統計分析系統
4.基於FLEX的出生缺陷數據挖掘系統WebGIS系統的設計與實現
其中之一,上面2個太注重於研究,後面2個更重於實際應用,這樣的題目不僅更容易找到實際的資料,而且你做的課題更適合你找工作寫到簡歷里去。
第三個題目我覺得對於計算機專業的人來說比第4個更簡單一點,這個的難點主要在你對於醫院統計分析的功能設計上,這方面的源碼你很容易找到,你可以去:http://www.csdn.net里找,實在不願意費時,你找個進銷存的軟體功能改改也能湊合及格,而且這樣題目的畢業論文很多,你寫論文的參考資料也多。
第四個題目涉及到了webgis系統,這個的難點是你不太容易找到嵌入的平台,因為很多該類的都是商用的,我以前接觸過一個開源的軟體叫mapapi0.4alpha,你網路一下,很多地方有下載,如果這個課題做好了,以後面向的企業又會多很多。
呵呵,課題主要還是看自己興趣了,你可以針對你自己以後想切入的行業去想畢業題目,做好的畢業設計可以當做你的作品,這樣給你的幫助更大,而且興趣高的話你的畢業設計才會做得更棒,如果有啥可以給我留言
Ⅶ 有哪些比較好的大數據培訓機構
大數據培訓機構推薦:北京千鋒教育、光環大數據、江蘇萬和計算機培訓中心、千鋒教育、煙台大數據培訓。
1、北京千鋒教育
千鋒教育開設HTML5前端、Java、Python、全鏈路設計、雲計算、軟體測試、大數據、智能物聯網、Unity游戲開發、Go語言開發、網路安全、互聯網營銷學科,並推出軟考、Adobe認證、PMP認證、紅帽RHCE認證課程,千鋒年培養優質人才20000餘人,全國同期在校學員8000餘人。
5、煙台大數據培訓
依託於大數據世界論壇(BDWF | Big Data World Forum),大數據培訓學院擁有豐富的師資資源、國際同步的課程體系與優質的服務流程。大數據學院教育培訓項目的服務人群包括:希望事業和職務發展中更進一步的高級技術人才;未來希望以大數據技術、營銷、市場、管理、研究等為事業和職業目標為相關人員等。
Ⅷ 現地控制單元的主要辦法
在水電廠計算機監控系統中LCU直接與電廠的生產過程介面,是系統中最具面向對象分布特徵的控制設備。現地控制單元的控制對象主要包括以下幾個部分:
(1)電廠發電設備,主要有水輪機、發電機、輔機、變壓器等;
(2)開關站,主要有母線、斷路器、隔離開關、接地刀閘等;
(3)公用設備,主要有廠用電系統、油系統、水系統、直流系統等;
(4)閘門,主要有進水口閘門、泄洪閘門等。
LCU一般布置在電站生產設備附近,就地對被控對象的運行工況進行實時監視和控制,是電站計算機監控系統的較底層控制部分。原始數據在此進行採集和預處理,各種控制調節命令都通過它發出和完成控制閉環,它是整個監控系統中很重要、對可靠性要求很高的控制設備。用於水電廠的LCU按監控對象和安裝的位置可分為機組LCU、公用LCU、開關站LCU等。而按照LCU本身的結構和配置來分,則可以分為單板機——線型結構的LCU、以可編程式控制制器(PLC)為基礎的LCU、智能現地控制器等三種。第一種LCU多為水電廠自動化初期的產品,目前已基本不再在新系統中採用。另外尚有極少數的小型水電廠採用基於工業PC機(又稱工控機IPC)的控制系統,下面僅討論處於主流地位的PLC和智能現地控制器(最近幾年尚有稱為PCC()、PAC()的產品,應該也可以歸類其中)。
2.1可編程式控制制器(PLC)
PLC的定義有許多種。國際電工委員會(IEC)對PLC的定義是:可編程式控制制器是一種數字運算操作的電子系統,專為在工業環境應用而設計的。它採用可編程序的存貯器,用於其內部存儲程序,執行邏輯運算 , 順序控制,定時,計數與算術操作等面向用戶的指令,並通過數字的、模擬的輸入和輸出,控制各種類型的機械或生產過程。可編程序控制器及其有關設備,都應按易於與工業控制系統形成一個整體,易於擴充其功能的原則設計。
最初,由於美國汽車工業的需要而產生了可以說是原始的PLC。雖然PLC問世時間不算太長,但是隨著微處理器的出現,大規模、超大規模集成電路製造技術和數據通訊技術的迅速發展,PLC的應用和技術也得到了飛速的發展,其發展過程大致可分三個階段:
(1) 早期的PLC(60年代末-70年代中期): 早期的PLC一般稱為可編程邏輯控制器。
(2) 中期的PLC(70年代中期-80年代中,後期): 在70年代開始採用微處理器作為PLC的中央處理單元(CPU)。 這樣,使PLC得功能大大增強。在軟體方面,在原有的邏輯運算、定時、計數等功能的基礎上增加了算術運算、數據處理和數據通訊、自診斷等功能。在硬體方面,開發了模擬量模塊、遠程I/O模塊以及各種特殊功能模塊,使PLC的應用范圍得以迅速擴大到需要自動控制的很多行業。
(3) 近期的PLC(80年代中、後期至今) 進入80年代中、後期,由於微處理器硬體製造技術迅速發展,同時市場價格大幅度下降,使得各PLC生產廠家可以採用更高檔次的微處理器。為了進一步提高PLC的處理速度,很多製造廠商還研製開發了專用邏輯處理晶元。後來PLC還融入了Ethernet、Web Server等技術,提供了功能豐富的配套軟體,使廣大用戶使用起來更加得心應手。
上世紀80年代至90年代中期,是PLC發展最快的時期,年增長率一直保持為30%~40%。在這時期,PLC的數據採集處理能力、數字運算能力、人機介面和網路通信能力都得到大幅度提高,PLC逐漸進入過程式控制制領域,與部分工業控制設備相結合後在某些應用上逐漸取代了在過程式控制制領域處於統治地位的DCS系統。由於PLC具有通用性強、可靠性高、使用方便、編程簡單、適應面廣等特點,使它在工業自動化控制特別是順序控制中的得到了非常廣泛的應用。
我國將PLC應用於水電廠生產設備的監控始於上世紀80年代,由於PLC一般按照工業使用環境的標准進行設計,可靠性高、抗干擾能力強、編程簡單實用、接插性能好很快被電站用戶和系統集成商接受,得到了較好的應用。目前在我國水電廠使用較廣泛的PLC有:GE Fanuc公司的GE Fanuc 90系列,德國Siemens公司的S5、S7系列,法國Schneider公司的Modicon Premium、Atrium 和Quantum,美國Rockwell公司 PLC5、Control Logix,日本OMRON公司的SU-5、SU-6、SU-8,日本MITSUBISHI公司的FX2系列等。由於各種PLC的設計原理差異較大,產品的功能、性能以及可以構成現地系統的規模有很大的不同。一般來說,根據不同電站在安全性能(包括可靠性、可維護性等)、應用功能、控制規模、系統結構等方面的實際需求進行選擇,還是可以找到合適的PLC的。目前我國很大一部分電站的自動化系統都是採用PLC構成現地控制部分的,通過合理的配置和搭配,它們基本上都能在 系統中擔負起相應責任,完成相應的功能。
但PLC作為一種通用的自動化裝置,並非是為水電廠自動化而專門設計的,在水電自動化這一有著特殊要求的行業應用中不可避免地也會有一些不適合的地方,現列出以下幾點:
(1) PLC以「掃描」的方式工作,不能滿足事件解析度和系統時鍾同步的要求。水電廠計算機監控系統都是多機系統,為了保證事件解析度除了PLC本身應具有一定的事件響應能力和高精度時鍾外,還要求整個系統內各部分主要設備之間的時鍾綜合精度也必須保證在毫秒級以內。而以PLC為基礎的現地控制裝置如果不採取特殊措施,就無法保證水電廠安全運行對事件解析度和系統時鍾同步的要求。
(2) 通用型PLC的起源主要針對機械加工行業,以後逐步擴展到各行各業。現在的PLC雖然具有較強的自診斷功能,但對於輸入、輸出部分,它只自診斷到模件級。這對於我國電力生產這樣一個強調「安全第一」的行業來說,有一定的欠缺,往往需要另加特殊的安全措施。
(3) 通用型PLC一般都具有一定的浪涌抑制能力,基本上可以適合大部分行業應用。但對於水電廠自動化系統來講,由於設備工作環境的特殊性,通用型PLC的浪涌抑制能力與技術規范所要求的三級浪涌抑制能力還有一些差距。
2.2 智能現地控制器
在我國水電廠自動化系統中應用較多的另一類現地控制單元應該就是智能現地控制器,如ABB公司AC450,南瑞集團的SJ-600系列,Elin公司的SAT1703等。
其中AC450是ABB公司生產的適用於工業環境的Advant Controller系列現地控制單元中的一種,主要應用於其它行業的DCS中。它包括了以Motorola 68040為主處理器的CPU模件和I/O、MasterBus等多種可選的模件,支持集中的I/O和分布式I/O,可根據不同的應用需求採用不同的模件來構成適用的現地子系統。
SAT1703是奧地利Elin公司生產的多處理器系統,它包括3個裝有不同介面處理器的子系統AK1703、AME1703和AM1703。每個子系統由主處理器、介面模板(模塊)、通信模塊等構成,能實現數據處理、控制和通信功能,在LCU內部採用SMI(Serial Mole Interconnector)進行通信。SAT1703現地控制單元採用OS/2操作系統,運行的控制軟體為ToolBox。
SJ-600系列是國電自動化研究院上世紀九十年代末為在惡劣工業環境下運行而生產的國產智能分布式現地控制單元,由主控模件、智能I/O模件、電源模件以及連接各模件與主控模件的現場匯流排網組成。已在全國數十個大中型水電廠可靠地運行。SJ-600具有以下主要特點:
(1) 其中,主控模件採用符合IEEE1996.1的嵌入式模塊標准PC104,具有可靠性高、現場環境適應性強等特點。使用低功耗嵌入式CPU,可選CPU型號從486至Pentium系列。
(2) 32位智能I/O模件。所有模件採用32位嵌入式CPU,該CPU專門為嵌入式控制而設計,軟體上採用板級實時操作系統和統一的程序代碼,只是按模件的不同而運行相應的任務。採用了大規模可編程邏輯晶元(EPLD)及Flash存儲器,簡化了系統設計,提高了可靠性。智能化的I/O模件除了可獨立完成數據採集和預處理,還具備很強的自診斷功能,提供了可靠的控制安全性和方便的故障定位能力。
(3) 具有現場匯流排網路的體系結構,系統採用兩層網路結構,第一層是廠級控制網,連接LCU和廠級計算機,構成分布式計算機監控系統;第二層是I/O匯流排網路,連接主控模件和智能I/O模件(現地或遠程),構成分布式現地控制子系統。所有I/O模件均配備兩個現場匯流排網路介面,這些模件都可以分散布置,形成高可靠性的分布式冗餘系統。
(4) LCU直接連接高速網。網路已成為計算機監控系統中的重要部分,它涉及到電站控制策略和運行方式。以前現地控制器多是使用專用網路與上位機系統進行連接,而不是符合開放性標準的網路。如AC450採用MB300網路與上位機系統連接,而與採用TCP/IP協議的系統連接只能通過專用模件以VIP的方式進行受限制的數據傳輸。
(5) 提供了直接的GPS同步時鍾介面,無需編程和設置。GPS對時可直達模件級,滿足了對時鍾有特殊要求的場合,如SOE等。
(6) 提供基於IEC61131-3標準的控制語言,在保留了梯形圖、結構文本、指令表等編程語言的基礎上,開發了採用「所見即所得」技術設計的可視化流程圖編程語言。支持控制流程的在線調試和回放,非常適合復雜的控制流程的生成和維護。
(7) 針對水電廠自動化專業應用開發的專用功能模塊。
3. LCU的發展趨勢
在全球計算機工業控制領域圍繞著計算機和控制系統硬體/軟體、網路技術、通信技術、自動控制技術等方面都在迅速地發展,同時,我國水電自動化領域的技術也不斷取得長足的發展。隨著全國水電廠」無人值班」(少人值守)工作的推進,以及多個單機容量700MW的特大型水電廠的建設,要求水電廠自動化系統及其自動控制裝置應具備高度可靠性、自治性、開放性,發展成為一個集計算機、控制、通信、網路、電力電子等新技術為一體的綜合系統,LCU應具備完備可靠的硬體結構,開放的軟硬體平台和強大的應用系統。完成對電廠生產設備有效的安全監控和經濟運行。
PLC和智能現地控制器都在朝著適應新的應用需求的方向發展,如PLC根據傳統PLC的不足,開發新的功能模件或者結合PLC技術和IPC技術開發出相當於智能現地控制器的新產品。Schneider公司開發了ERT模件,GE公司融入了第三方的產品以滿足水電自動化對SOE的要求,GE Fanuc 2003年推出了新產品PACSystem,分別為90-70的升級產品RX7i和90-30的升級產品RX3i兩個系列。與以前的GE PLC相比,最主要的是CPU部分徹底更換了。RX7i系列仍然採用VME64匯流排機架方式安裝,CPU採用Intel PIII-700處理器,集成2個10/100M自適應乙太網卡,不需要另配乙太網模件。主機架採用新型17槽VME機架,而擴展機架、I/O模塊、Genius網路仍採用原90-70產品。從而使其在兼容以前產品的同時,性能得到了很大地提高。可以看出自動化設備生產商都在不斷努力開發新的產品,但有些改進並不是針對水電自動化這個有一定特殊性的行業的,對水電自動化來說重要的幾點是:
(1) CPU模件宜採用符合IEEE1996.1的嵌入式模塊標準的低功耗CPU,或符合工業環境使用的通用型低功耗CPU。運行實時多任務的操作系統,以利於提高現地控制單元對實時事件的即時響應和處理能力,方便增加、集成水電行業的專用模塊和特殊需求的功能。傳統的PLC由於受其運行模式的限制,在測點數量大量增加、邏輯任務處理量或任務數增加的時候,會對運行處理周期產生較大影響;對現場的實時事件的響應也不夠即時。這對實現大容量特別是單機容量700MW的大型水輪發電機組的高質量現地實時監控有著一定的欠缺。
(2) 採用智能化的I/O模件,它除了可獨立完成數據採集和預處理,方便分散布置,還可具備很強的自診斷功能,提供了可靠的控制安全性和方便的故障定位能力。
(3) 標准化的網路連接,這里包括現場匯流排網和常用的乙太網。LCU往往通過現場匯流排(常用的有CAN、ProfiBus-DP等)向下連接著各種智能儀表、智能感測器和分級監控的子系統(如大型機組的溫度、水系統等),通過高速網路(TCP/IP、工業乙太網)連接廠級計算機監控系統
。所以LCU必須遵循嚴格的國際開放標准(如IEC 61158等),對這兩種網路提供有效的支持,提高現場不同廠家設備的組網能力、方便性和可維護性。
(4) 提供對SOE既方便又有良好性價比的支持,提高現場事件信號解析度,以滿足水電廠「無人值班(少人值守)管理模式下對故障的產生原因進行准確分析的需求。目前大部分傳統PLC對此需求還有所欠缺。
(5)提高控制安全性,應在LCU軟硬體故障或異常的任何情況下,都不會有錯誤的控制信號輸出。否則,就會造成電廠生產設備損壞,甚至會造成電力系統事故。這是至關重要的一點,一般LCU對此尚無足夠的重視。
(6) 網路安全性,隨著對通過Ethernet進行數據交換的需求日益提高,很多LCU廠家已經提供或正在開發LCU的Ethernet模件或者在LCU中內嵌Ethernet功能和Web服務。無論外掛或內嵌式的Ethernet功能和Web支持都為應用提供了極大的便利,但是在用戶得到應用便利的同時也受到網路安全的極大危險。攻擊、入侵、病毒等都可能對控制系統造成致命的危害,所以,必須按照國家相關部委關於「電力二次系統安全防護「的規定認真執行。
(7) 提高可靠性和可用性,由於水電廠的特殊應用環境,要求LCU應具有很強的抗電磁干擾能力、抗浪涌能力和一定的抗振動能力。可以按要求組成冗餘的熱備系統,確保在監控系統中,無論是不相同的單部件故障還是主機和備機的切換都不會對控製造成影響。部分廠家的LCU還無法滿足這些要求或指標太低。
(8) 提高易用性,這也是用戶考慮的一個重要方面。南瑞自控公司的SJ-600提供了功能強大的可視化交換式組態工具軟體MBPro,可以幫助用戶方便的進行生產控制應用的生成、調試和維護。Schneider公司的也提供了支持Modicon Premium、Atrium 和Quantum PLC系列產品完全重新設計的自動化軟體Unity。其他LCU廠家也提供了或正在開發不同功能的非常有用工具軟體,用戶在使用LCU方面將越來越方便。
現在我們可以確信的是,在各LCU生產廠家全面透徹地理解我國水電自動化領域對LCU的真正需求以後,都會認真的進行新產品開發。無論PLC、智能現地控制器,還是PCC、PAC盡管它們在硬體結構、系統構成、工作原理、系統軟體、應用功能等方面都存在大大小小的差異,它們都可能在廣泛的水電自動化應用中找到不同的定位(如一些LCU可以在要求比較低的小水電中得到應用)。但是,要在大型、超大型電站得到很好的應用,則必須結合計算機技術、工業控制技術、通信技術、工業網路技術等方面的發展,不斷進行LCU軟硬體的技術更新。在未來幾年內,對標准化、安全性、可靠性、開放性、可互操作性、可移植性的要求將是水電用戶至為關心的自動化產品的重要特徵。我們相信自動化產品生產商在最近幾年將會推出更多適合各領域個性化應用的控制器及新的功能,以滿足不同用戶廣泛和不斷增長的需求。
Ⅸ 超融合一體機的機器性能如何,好用嗎
性能如何?
超融合在性能方面的架構優勢也非常明顯,當然代價就是消耗計算資源,所以計算資源的消耗是檢驗超融合專業性的一個重要因素。以下給出詳細的性能機制對比。
超融合架構與傳統IT架構性能對比分析
性能相關的特性中,多節點並發和性能擴展依舊是分布式存儲帶來的。而數據本地化是超融合架構獨有的,分離式的架構無法實現,當然代價就是計算資源的佔用。SSD是即使傳統架構存儲都會使用的,但雙控無法發揮SSD的性能。
比如EMC Unity 650F,8:2 8K混合隨機讀寫性能最大27萬IOPS,而對於類似Nutanix、SmartX等性能比較好的超融合產品,一個節點8:2 8K混合隨機讀寫很容易達到3萬以上IOPS,通過線性擴展,10個左右節點就可以達到EMC Unity 650F的最大性能。而10個節點只是非常小的用戶規模。
2.好用嗎?
超融合一體機是指廠商根據客戶的需求,和自身的產品策略,為用戶提供的開箱即用,一體機化的交付方式,一體機包含了軟體和 廠商選定並適配的 x86 伺服器。可見開箱即用,一體化交付是其最大優勢。在簡化部署、維護,以及可用性,可靠性等方面優勢更明顯。具體如下:
簡化了部署,加快了業務上線時間
降低了運維難度和成本
提高了設備的可靠性和可用性
以前企業在部署自己的IT系統時,往往需要采購不同的設備,安裝調試過程比較長,甚至會影響業務的上線時間。有了超融合一體機,企業只需要購買一台這樣的產品即可,安裝和調試過程非常方便,大大簡化了部署難度,加快了業務的上線時間。
以前公司有多少種不同的硬體設備,就需要多少個不同專業的技術人員,採用超融合一體機後,系統管理難度降低,一個技術人員就可以輕松搞定,降低了運維的難度和成本。
超融合一體機在設備故障方面要低很多,即使出現問題,解決起來也相對比較簡單和快速,這就很好的提高了它的可靠性和可用性。
Ⅹ 如何在Visual Studio中配置git
用 Visual Studio 可以配合 Git 工具做版本管理。也可以直接將工程同步到 GitHub 上。配置過程非常簡單。
首先你要安裝 GIt,安裝和配置步驟見 安裝 Git,Windows 上只要替換其中的安裝步驟,其他類似。
在 Visual Studio 安裝插件 Git Source Control Provider
然後在 tools->options->source control 中配置源代碼管理,將默認的修改為 Git Source Control Provider
配置好後會彈出選擇 Git 的 bin 目錄,將安裝目錄填上即可,以後也可以在選項中再次填上
因為用戶名,還有 GItHub 的 ssh key 已經在 安裝 Git 中完成了,這里不需要再做一邊。
我們新建一個工程,然後可以在解決方案的右鍵菜單中看到多出來的一項。這里如果你選擇 TortoiseGit 的話,彈出的菜單是不一樣的,會比較豐富。我安裝的是最簡單的。
選擇 Pending Changes 就可以 commit changes 了,這里要勾選改變的源文件,相當於 git add ....
如果要 push 到 GitHub 的遠程倉庫 ,我還沒找到選項,還是只能用 Git Bash 命令行。不過,push 不是經常做的,所以影響不大。如果嫌煩的話,可以裝 TortoiseGit,在 Visual Studio 中就能有相應的選項,完全不要命令行啦。
1. VS2015在對Git的支持
VS2015是微軟IDE集成開發環境的重量級升級,微軟除了將觸角延伸至iOS和Android平台以及Unity,Unreal和Cocos等游戲開發領域中。而且在進一步集成Git。
可以說在不需要第三方插件的前提下,就可以使用Git來進行團隊開發。
2. 在VS2015中使用Git
下面介紹如何在VS2015中使用Git進行團隊開發。
2.1 在Git伺服器上新建版本庫
在使用VS2015進行團隊開發前,我們先在Git伺服器上創建新的版本庫。
打開我們已經安裝好的GitStack(如查直接看本篇的同學,可以先看一下服務端環境搭建一文URL:使用GitStack+TortoiseGit 圖形界面搭建Git環境)
在GitStack中創建新的版本庫,名為「MyGitForVsObject」,並新建兩個用戶"yubinfeng"和「zhangsan」,再新建一個組"MyGitGroup",將這兩個用戶加入到該組,並給版本庫授權該組。具體操作這里不再贅述,不了解的朋友請看上面的URL.
完成後如下所示:
2.2 在VS2015中克隆遠程版本庫
我們先在VS2015中新建一個解決方案,在工具欄,點「團隊」=》「管理連接」
按上圖所示,右打開的 團隊資源管理器中,輸入遠程Git URL,點擊克隆按鈕,即可完成在VS2015中克隆遠程版本庫了
克隆成功後,可以在 本地Git存儲庫 中看到 本地版本庫已經 從伺服器上克隆下來了。
2.3 Git全局設置
完成版本庫克隆後,我們需要在Git中進行一次全局設置。
工具欄 - 團隊 - 管理連接,打開團隊資源管理器
點擊主頁按鈕,如下圖
點擊設置,選擇全局設置,完成如下三項更改,點更新
用戶名:將作為你以後版本提交後日誌顯示的名稱
電子郵件:團隊聯系使用
默認存儲庫位置:最好進行一下改動,默認在C盤,防止丟失
2.4 Git存儲庫設置
存儲庫設置和全局設置類同,如下
工具欄 - 團隊 - 管理連接,打開團隊資源管理器
點擊主頁按鈕,選擇 設置 - 存儲庫設置
如上圖,其他內容不需要設置,主要 添加一下遠程 。這將是以後獲取新版本和推送到伺服器的地址
此時,我們可以看到項目文件前面有一個小鎖,並且代碼中已經有了Git的信息,表示項目已經已經受到Git控制
2.5 第一次向Git伺服器發布項目
我們上面看到的所有Git的受控信息,只是相對於克隆到本地的版本庫,此時Git伺服器並沒有接收到這些工程文件,下面我們要做的將是第一次將本地版本庫中的工程文件同步到Git伺服器,即項目發布
工具欄 - 團隊 - 管理連接,打開團隊資源管理器
點擊小房子,回到Git主頁,點擊同步
此時,出現如下界面
+
我們第一次將本地分支發布到遠程伺服器,點擊發布
輸入遠程URL,發布,即可發布到遠程庫
我們可以打開GitStack查看日誌,如下:
上面顯示的時間,為你在本地操作的時間。我們可以看到Git作為分布式版本控制系統,你在離線進行操作,在推送時,顯示的均為你操作時間,而非推送時間。
2.6 拉取、獲取、合並、提交、推送、同步
項目開發過程中,我們通常進行下面幾種操作,我一次性介紹,這個和上篇TortoiseGit類似,直接看本篇的同學,可以參考上篇,URL:圖形化Git客戶端工具TortoiseGit
拉取(Pull):將遠程版本庫合並到本地版本庫; 相當於(Fetch+Meger)
獲取(Fetch):從遠程版本庫獲得最新版本
合並(Meger):將兩個版本庫進行合並操作
提交(Commit):將所做的更改,存入本地暫存庫
推送(Push):將所做的更改,存入遠程版本庫
同步(Pull+Push):先將遠程庫拉取,再將本地庫推送到遠程庫 注意這個順序; 相當於(Pull+Push)
我們對文件進行修改後,文件前有一個小對號,右擊,點提交
我們在提交文件時,記得填寫備注,在團隊開發中,保持一個良好的習慣
提交在這里有三種:
提交:即將文件存入本地版本庫
提交和推送:即將文件更改同時存入本地版本庫和遠程版本庫
提交和同步:將文件更改提交到本地庫的,再從遠程版本庫拉取新版本到本地,再推本地庫到遠程版本庫
注意:
這里的操作,不針對當前文件,而是對所有變更進行提交、推送或同步。
2.7 創建分支
對於創建分支在上篇(URL:圖形化Git客戶端工具TortoiseGit)中已經介紹過了,這里主要介紹一下如何基於Vs2015創建Git分支
工具欄 - 團隊 - 管理連接,打開團隊資源管理器
點擊小房子,回到Git主頁,點擊分支
打開分支界面,在master分支上右擊,選擇 "從選定項創建本地分支"
在這里需要注意我們創建分支,有兩種:
(1)創建本地分支
(2)創建遠程會支
本地分支有創建前,一定要獲取最新版本;遠程分支,則要求所有成員最好能推送更改。
至於分支的創建是基於遠程還是本地,最好能在團隊成員之間達成一致。
下面介紹兩種分支的創建方法
先看創建本地分支
輸入一個分支名稱,創建即可。
遠程分支,我們需要選擇如下
在創建遠程分支時,一定要把跟蹤遠程分支,這個取消選擇,否則將創建了一個跟蹤分支,我們就不能發布了。
創建完成後,如下:
分支創建成功,接下就是發布到伺服器
右擊,點發布分支,即可。
可以看到,分支已經發布到伺服器上了。
在伺服器上通過GitStack也可以看到,多了一個分支。
2.8 切換和合並分支
在VS2015中切換分支非常簡單,只要在分支名稱上雙擊,就可以了,項目資源管理器中的文件隨之變化。
這里主要看一下合並,
我們先切換到新建的分支"2016-2-7",在分支名稱右擊,選擇 合並自...
選擇master ,點擊合並,即可完成將master合並到新分支了。
2.9 刪除分支
刪除分支,首先要從遠端刪除,如下:
注意,如果要刪除剛才新建的分支,和上篇TortoiseGit一樣,要切換到另一分支操作。
遠端刪除後,伺服器上的分支就被刪除了,本地的分支,直接刪除即可。
3. 使用VS2015+HubGit創建開源項目
前面我們介紹了Git作為一個分布式版本控制系統,其最大的優勢就是適合開源項目管理。如果你還沒有託管一個開源項目,那麼你Out了。
目前即於Git開源項目託管平台非常多,Hubgit.com可以說非常知名,只是免費用戶,只能託管開源項目。
本篇我介紹一下如何在VS2015中創建並開發自己的開源項目,以Hubgit為例,其他平台使用都差不多。
3.1 創建Github用戶
創建完成後,點右上角Sign in進入Github
3.2 在Github上創建版本庫
進入GitHub主頁,點右上的 + 創建一個版本庫
打開以後,如下
按圖示完成,就可以了。
點右上角按鈕,」your profile「查看你創建的版本庫 test,點擊進入
接下來的操作,我們已經很熟悉了,就是在VS2015中打開GitHub版本庫,進入開源項目的世界了。。。
3.3 在VS2015上發布自己的開源項目
這一步相信,大家一定非常熟悉了,對,就和上面介紹的克隆自己伺服器上的版本庫一樣。
然後,我們新建一個解決方案或打開一個已有的解決方案
創建完成後,
工具欄 - 團隊 - 管理連接,打開團隊資源管理器
點擊小房子,回到Git主頁,點擊 更改
點擊 提交和推送,這時提示一個身份驗證,這是必須的,使用 前面注冊的用戶名和密碼即可,當然這是開源項目,只要有Github用戶,都可以進行版本克隆和提交代碼
推送完成後,我們可以在github上查看
沒問題,剛才推送的解決方案已經更新到github伺服器了。
提交、獲取、推送、分支,這些我就不用再說了吧,和上面介紹的完全一樣了
3.4 如何加入別人的開源項目?
如何加入別人的開源項目?也就是別人如何參與你的開源項目,意思是一樣的,就是除原創建者之外的人,要如何克隆版本庫?
比如比較著名的開源項目Jquery,你如何開發他的項目呢?
你又不能直接在VS 2015中克隆人家的庫,其實這個並不難辦,看下面的圖:
先進入Jquery的項目URL,然後點 右上的 Fork ,就將這個項目加入到你的庫里了,相當於直接克隆了一個副本到你的GitHub上。
這下,你就可以用自己的帳號,在VS上克隆你的GitHub中的Jquery項目了,你可以加入自己的idear,如果你希望jquery的官方庫能接受你的修改,你就可以在GitHub上發起一個pull request。當然,官方是否接受你的pull request就不一定了。
最後,我忘記說一件事了,我們剛才建的版本庫test,別人也可以用同樣的方法進行參與,只是你一定要記得,將初始庫設為只讀。
3.5 如何刪除創建的版本庫
先進入你的版本庫,點右邊的setting,進入設置頁,拉到最底下
點擊 刪除該版本庫,再輸一次版本庫名稱,即可。
3.6 桌面版的GitHub
如果你在網站上看項目進度等信息,感覺不方便 ,你可以下載安裝桌面版的Github
有windows和mac版本,可以通過桌面版完成網站上的所有功能。
使用GitHub進行團隊協作的流程,可以參考這個視頻,感覺非常好,推薦一下,
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElementwww.huashijixun.com?else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
4. 本節要點:
本篇主要介紹了如何在Visual Studio 2015中使用Git,然後介紹了目前流行的一些開源託管平台,最後以GitHub為例,介紹了如何創建自己的開源項目和參與別人的開源項目。
如果你還沒有自己的開源項目,快點動手申請一個Github帳號,共享出你的項目吧~開源需要每個人的努力~