1. 選擇一個演算法(提供選擇見下),利用各種方法(圖形、動畫等)演示演算法的演示過程。
2. 可以進行手動演示,也可以自動步進式演示。
3. 允許用戶設置演算法的各個輸入參數,以及自動步進式演示中的時間間隔。
4. 不同的演算法輸入要求見下。
界面要求:
1. 盡量使用圖形界面實現,要符合日常軟體使用規范來設計菜單和界面。
2. 如果無法實現圖形界面,則在命令行方式下也需要提供菜單,方便用戶操作。
其他要求:
1. 標識符命名遵循Windows命名規范。
2. 能夠注意各種異常處理,注重提高程序運行效率。
提交內容:
1. 全部源代碼。
2. 軟體設計和使用說明書(UML類圖;實現的功能、主要技術;使用幫助文檔)
參考演算法:
1. 最小生成樹演算法:Prim演算法、Kruskal演算法。允許以下方式輸入一個圖形:繪制圖形、輸入鄰接矩陣、輸入邊及其關聯的頂點。要求在圖形方式下進行演示演算法執行步驟。
2. 單源最短路演算法:Dijkstra演算法。允許以下方式輸入一個圖形:繪制圖形、輸入鄰接矩陣、輸入邊及其關聯的頂點。要求在圖形方式下進行演示演算法執行步驟。
3. 最優編碼演算法:Huffman編碼演算法。允許用戶輸入一段英文文字,或者打開一個txt文檔(英文內容),據此文檔內容進行編碼。要求動態列出每個字元的出現概率統計結果以及對應編碼。
4. 其他可供演示的具有一定難度的演算法,如關鍵路徑問題、有向圖的極大連通分支等。
㈡ 想要系統學習java到底要學習哪些知識
一、java基礎
學習任何一門編程語言,首先要學習的是基礎語法,開啟Java學習的第一步,當然就是深入掌握計算機基礎、編程基礎語法,面向對象,集合、IO流、線程、並發、異常及網路編程,這些我們稱之為JavaSE基礎。當你掌握了這些內容之後,你就可以做出諸如:電腦上安裝的迅雷下載軟體、QQ聊天客戶端、考勤管理系統等桌面端軟體。
java學習路線大陸傳送門
㈢ java學習線路是怎樣的
要學習Java,你首先得了解一下什麼是java:
Javaweb是用Java技術來解決相關web互聯網領域的技術總和。說的簡單的就是寫網站的一種語言。一般分為前端和後端兩種方向,前端所做的東西就像幕前表演的演員,所做的就是讓網頁看起來順眼,用起來順心,而後端則屬於處理數據,讓程序處理速度、能力不斷優化,屬於幕後。前後端的配合才能是一個網站正式投入使用。
接下來就是關於java體系主要涉及的三個方面——J2SE/J2EE/J2ME(KJAVA)
0.J2SE
新手最初學習的時候先要從J2SE開始學起,所包含的內容前端的學習都是需要不斷的學習,學一天停一停相當於白學,學習效果很差,如果你想有人一起學習可以來這個扣裙,首先是132 中間是667最後是127 都是零基礎的同學,大家相互鼓勵 共同努力 只是學著玩就不建議來了!!!主要分為:面向對象概念的理解、Java基本語法的學習,Java桌面圖形界面應用程序的開發,掌握常用的Java API等(關鍵是要學會怎樣查閱)。
重點:Java基本語法(循環結構,數據類型,數組,運算符等)、Swing,awt,事件機制、文件輸入輸出流處理等
難點:面向對象思想的理解(介面、類等)、線程、socket網路編程等
1.J2EE
J2SE之後,便可以開始慢慢過渡到J2EE。要學習J2EE除了java之外,還得學習比如資料庫技術,網頁編程技術等等。
J2EE有三個必學的框架,分別是Struts、spring和hibernate。他們之間的關系,簡單來說這三個框架=J2EE,而J2EE≠這三個框架。那麼J2EE都包含了哪些技術呢?就先給大家簡單介紹幾個吧:
JDBC:Java資料庫連接對象,基礎中的基礎,Hibernate也只是對它的封裝而已 JNDI: Java 命名與目錄介面,J2EE重要規范之一
EJBS: 上面已經提到過了
RMI: 提供遠程調用方法的支持,主要用於程序分布式開發
JMS: Java消息服務,中間件技術
JAVA IDL: 提供J2EE平台與CORBA交互能力和互聯能力的技術
JTS: 組件事務監視器
JTA: 事務劃分的一個技術
JAVAMAIL: Java中的郵件技術
JAF: Java啟動框架,沒研究過
Log4j,一款日誌處理的框架應用
Junit:單元測試的好幫手
freemarker、velocity:兩款不錯的模板引擎
與Flash的交互Flex:目前很多的SNS應用就是使用到了這個技術
Web services:例如天氣預報的製作,就靠它。
SOA:面向服務架構,未來技術發展的趨勢之一
……
雖然羅列了很多,但最核心也是最需要學習的只有:JDBC、jsP、servlet和JavaBean,後面三個也是學習SSH的基礎(StrutsSpringHibernate的簡稱).
當然,找工作的前提除了把Java學習好,還會有一些其他的技術也是必須要掌握的。
除了這些技術的東西,在這階段,大家更多的是會接觸到比如設計模式的東西,比如工廠模式、橋梁模式、單例模式等等,還要學習建模思想和軟體生命周期等等。
這些是升華大家編程思想的手段和途徑。
2.J2ME
最後就是第三階段——手機程序的開發。
開發手機程序技術其實蠻簡單的,難點在於優化,比如怎麼讓你寫的程序盡量的節約手機資源,「代碼誠可貴,手機價更高「,所以不得不比PC機多考慮很多成本和實用性問題。.
J2ME的學習,不僅僅是在模擬器上測試,若有條件真機測試才是最佳方式,畢竟真機和模擬器的效果之間差別是很大的。
最後再給大家提供一個開發工具——eclipse
功能很強大,也很好拓展其他的功能。當然也可以選擇JCreator,或者最好就直接用記事本。等你熟悉了Java代碼之後,就可以使用JBuilder、eclispe或者netbeans這一類的工具了。
㈣ Java學習路線是怎樣的
Java環境搭建、流程式控制制語句-for循環、switch選擇判斷、循環嵌套、數組拷貝、多維數組、final關鍵字、構造函數的調用、類的訪問許可權和路徑、面向對象高級特性、Java異常處理、Set,Map,List介面及介面實現類、Java線程、同步阻塞、JavaIO流、文件的操作,復制,讀寫,刪除等。
MySQL安裝、管理、創建資料庫、MySQLUPDATE
查詢、Mysql高級操作、JDBC、JDBC資料庫連接操作,JDBC動態Sql處理、Servlet3.0 網頁重定向、Servlet3.0
新增的註解支持、AJAX、responseText屬性詳解等。
Struts2異常處理、Struts2+Log4j集成、Struts2和JSON實例、Hibernate5、Hibernate集合映射、Hibernate組件映射、Spring4.0、SpringAOP+
AspectJ框架、Spring 與其它Web框架集成、Spring Hibernate支持等。
SpringMVC、Spring MVC生成JSON數據、MyBatis、MyBatis 環境配置及入門、Mybatis set標簽、Mybatis trim標簽、Shiro、Shiro快速入門教程、Shiro Web應用等。
SpringBoot、全局異常處理、過濾器監聽器、EHCache緩存、SpringBoot Quartz定時任務、Vue、Vue.js 安裝、模板語法、計算屬性、事件處理器、Vue.js 自定義指令、Vue.js 路由等
ActiveM環境搭建、生產者和消費者、消息持久化操作、RSA數字加密演算法、Codebar條形碼生成器、zxing二維碼生成器、HighCharts統計圖、Echarts統計圖、網路播放器ckplayer、嵌入式網路播放器,可以瀏覽器和移動端隨意使用
分布式服務框架的理解,Dubbo架構設計詳解及其核心要點,框架運行原理分析、SpringData數據訪問、Lucene搜索引擎、Lucene的全文搜索伺服器介紹、索引建立方式、Solr海量數據搜索引擎、Socket網路通信、實現RMI遠程對象通訊、使用JMS消息服務、Kafka分布式消息系統、WebService與RestfulWS等
Spring Security安全框架、實現Web應用安全控制、緩存應用與EhCache框架、OSCache與JBossCache框架、MyBatis與Hibernate緩存機制、NoSQL應用與SQL調優、MongoDB
NoSQL資料庫、Redis內存資料庫、實現RedisSession共享、SQL語句的優化、實現資料庫讀寫分離、WEB應用集群及性能優化、Maven項目管理工具、Web伺服器負載均衡、實現Nginx與Tomcat集群、使用LoadRunner測試工具、性能優化之內存調優、代碼優化與重構的方法等。
㈤ 關鍵路徑怎麼求求詳解。
關鍵路徑的演算法是建立在拓撲排序的基礎之上的,這個演算法中用到了拓撲排序。
1. 什麼是拓撲排序?
舉個例子先:一個軟體專業的學生學習一系列的課程,其中一些課程必須再學完它的基礎的先修課程才能開始。如:在《程序設計基礎》和《離散數學》學完之前就不能開始學習《數據結構》。這些先決條件定義了課程之間的領先(優先)關系。這個關系可以用有向圖更清楚地表示。圖中頂點表示課程,有向邊表示先決條件。若課程i是課程j的先決條件,則圖中有弧<i,j>。若要對這個圖中的頂點所表示的課程進行拓撲排序的話,那麼排序後得到的序列,必須是按照先後關系進行排序,具有領先關系的課程必然排在以它為基礎的課程之前,若上例中的《程序設計基礎》和《離散數學》必須排在《數據結構》之前。進行了拓撲排序之後的序列,稱之為拓撲序列。
2. 如何實現拓撲排序?
很簡單,兩個步驟:
1. 在有向圖中選一個沒有前驅的頂點且輸出。
2. 從圖中刪除該頂點和以它為尾的弧。
重復上述兩步,直至全部頂點均已輸出,或者當前圖中不存在無前驅的頂點為止。後一種情況則說明有向圖中存在環。
3. 什麼是關鍵路徑?
例子開頭仍然,圖1是一個假想的有11項活動的A0E-網。其中有9個事件v1,v2......,v9,每個事件表示在它之前的活動一完成,在它之後的活動可以開始。如v1表示整個工程的開始,v9表示整個工程結束,v5表示a4和a5已完成,a7和a8可以開始。與每個活動相聯系的數是執行該活動所需的時間。比如,活動a1需要6天,a2需要4天。
packagegraph;
importjava.util.*;
publicclassGrph_CriticalPath
{
Graph_AdjListadjList;
Stack<Integer>T=newStack<Integer>();
intve[];
intvl[];
finalintmax=10000;
publicGrph_CriticalPath(Graph_AdjListadjList)//圖的存儲結構是用的鄰接表
{
this.adjList=adjList;
intlength=adjList.vetexValue.length;
ve=newint[length];
vl=newint[length];
for(inti=0;i<length;i++)
{
ve[i]=0;
vl[i]=max;
}
}
publicvoidgetCriticalPath()
{
topologicalOrder();
intt=T.pop();
T.push(t);
vl[t]=ve[t];
while(!T.isEmpty())
{
intj=T.pop();
for(Graph_AdjList.ArcNodep=adjList.vetex[j].firstArc;p!=null;p=p.next)
{
intk=p.adjvex;
if(vl[k]-p.weight<vl[j])
{
vl[j]=vl[k]-p.weight;
}
}
}
for(inti=0;i<ve.length;i++)
{
for(Graph_AdjList.ArcNodep=adjList.vetex[i].firstArc;p!=null;p=p.next)
{
intk=p.adjvex;
intee=ve[i];
intel=vl[k]-p.weight;
if(ee==el)
{
System.out.print(i+","+k+"");
}
}
}
}
publicvoidtopologicalOrder()
{
Stack<Integer>S=newStack<Integer>();
S.push(0);
intcount=0;
while(!S.isEmpty())
{
intj=S.pop();
T.push(j);
count++;
Graph_AdjList.ArcNodep=null;
for(p=adjList.vetex[j].firstArc;p!=null;p=p.next)
{
intk=p.adjvex;
if(--adjList.degree[k]==0)
{
S.push(k);
}
if(ve[j]+p.weight>ve[k])
{
ve[k]=ve[j]+p.weight;
}
}
}
if(count<adjList.vetexValue.length)
{
System.out.println("圖中存在環路!");
return;
}
}
publicvoidprint()
{
while(!T.isEmpty())
{
System.out.print(T.pop()+"");
}
}
publicvoidprintVel()
{
System.out.println();
for(inti=0;i<ve.length;i++)
{
System.out.print(ve[i]+"");
}
System.out.println();
for(inti=0;i<vl.length;i++)
{
System.out.print(vl[i]+"");
}
}
}
轉自:http://blog.csdn.net/pigli/article/details/5777048
㈥ java主要是學習什麼啊
掌握java基礎是大前提;
開始企業級應用,提供介面,核心其實就是增刪改查;專
進階了就是聯通各大主屬流企業框架,比如redis kafka springcloud nginx docker mysql等等;
再高階就是設計架構,整合這些東西,對企業應用的整個生態體系有一個完整的認識,比如並發量、設計思路、消息系統、日誌系統、微服務等等,看作者當前的階段了