201871010126 王亞濤 《面向對象程序設計(java)》 第一週學習總結

 

項目javascript

內容java

這個做業屬於哪一個課程c++

https://www.cnblogs.com/nwnu-daizh/web

這個做業的要求在哪裏數據庫

https://www.cnblogs.com/wyt0455820/編程

做業學習目標瀏覽器

  1. 瞭解課程上課方式及老師教學要求,掌握課程學習必要的軟件工具;
  2. 理解JVMJREJDK等概念,學會下載、安裝、測試JDK
  3. 掌握PATHCLASSPATH的系統變量做用並會設置;
  4. 掌握命令行編譯並運行Java程序的步驟;
  5. 掌握Java Application 程序結構特色;
  6. 掌握JDK命令行方式下開發運行Java程序的步驟。
  7. 初步使用Elipse,學會編譯、運行、調試簡單的Java Application程序。

隨筆博文正文內容包括:安全

第一部分:課程學習平臺註冊帳號(20分,每項4分)服務器

平臺名稱網絡

註冊帳號或者我的博客園地址

博客園:www.cnblogs.com

 https://www.cnblogs.com/wyt0455820/

程序設計評測:https://pintia.cn/

 1778183526@qq.com

中國大學MOOC: https://www.icourse163.org/

 15352021749

如下回答是或否

是否加入課程班級博客羣

 

是否加入課程QQ討論羣

 

 

第二部分:理論知識學習部分

第一章  Java程序設計概述

一:Java"白皮書「的關鍵術語

1.簡單性  

人們但願構建一個無須深奧的專業訓練就能夠進行編程的系統,而且要符合當今的標準慣例。所以,儘管人們發現C++不太適合,但在設計java的時候仍是儘量地接近C++,以便系統更易於理解。Java挑剔了C++中許多不多使用、難以理解、易混淆的特性。在目前看來,這些新特性帶來的麻煩遠遠多於其帶來的好處

的確,Java語言是C++語法的一個純淨版本。這裏沒有頭文件、指針運算(甚至指針語法)、結構、聯合、操做符重載、虛基類等。然而設計者並無試圖清除C++中全部不適當的特性。例如,switch語句在Java中就沒有改變。若是你瞭解C++你就會發現能夠垂手可得地轉換到Java語法。之前,Java剛發佈時,許多開發人員確定以爲Java並不簡單。不少年之後Java的開發環境才迎頭而上。現在,Java發開環境已經遠遠超過了大多數其餘編程語言的開發環境。簡單的另外一方面是小。可以在小型機器上獨立運行的軟件。隨着時代的發展,如今已經適用於嵌入式設備。

2.面向對象性 

簡單來講,面向對象設計是一種程序設計技術。它的重點在於對象。舉一個例子:有一個木匠想作一把椅子,一個有面向對象特色的木匠,他始終關注的是所製造的椅子,而後再關注所使用的工具;一個不具備面向對象特色的木匠,他首先考慮的是所用的工具。在本質上,Java的面向對象能力和C++是同樣的。主要不一樣點在於,C++能夠多重繼承,在Java中取而代之的是更簡單的接口概念。總的來講,就是Java先考慮的是結果,再考慮怎麼實現它。

3.分佈式

Java有一個豐富的例程庫,到這裏是否是想問例程庫 是什麼? 有什麼用? 它是用於處理像HTTP和FTP之類的TCP/IP協議。Java應用程序能經過URL打開和訪問網絡上的對象,它的編寫程度就至關於咱們訪問本地同樣。

4.健壯性 

Java的設計目標之一就在於Java編寫的程序能夠具備多方面的可靠性。Java編譯器可以檢測許多在其餘語言中僅在運行時才能檢測出來的問題。至於第二點,對於之前須要花費幾個小時才能檢查出指針bug而引發的內存衝突的人來講,必定會愛上Java的這一特性。簡單來講,健壯性是指出錯了也能繼續運行的能力。

5.安全性

Java適用於網絡/分佈式環境。爲了達到這個目標,在安全方面投入了很大精力。使用Java能夠構建防病毒、防篡改的系統。從一開始,Java就設計成可以防範各類攻擊,其中包括:* 運行時堆棧溢出時。如蠕蟲和病毒經常使用的攻擊手段。*破壞本身的進程空間以外的內存。*未經受權讀寫文件。 不過黑客已經擅長找出全體系結構實現中的小漏洞,Java安全模型沒有原先預想的那麼成功,不過我相信早晚有一天,它會出現奇蹟的。

6.體系結構中立

編譯器生成一個體繫結構中立的目標文件格式,這是一種編譯過的代碼,只要有Java運行時系統,這些編譯後的代碼能夠在許多處理器上運行。Java編譯器經過生成與特定的計算機體系結構無關的字節碼指令來實現這一特性。精心設計的字節碼不只能夠很容易地在任何機器上解釋執行,並且還能夠迅速地翻譯成本地機器的代碼。字節碼能夠實現告終構中立。

7.可移植性

由於Java有一個JVM(Java Virtual Machine)Java虛擬機,源程序*.java被編譯成字節碼文件,字節碼是與平臺無關的,是面向jvm編寫的,而Jvm又有本身的一套指令系統,在不一樣的平臺上jvm的指令也是不同的,也就是說不一樣操做平臺有本身的Jvm可是Jvm向上的字節碼接口是與平臺無關的,Jvm接口向下是與硬件有關的,jvm是個中間件,這樣只要有字節碼和Jvm,無論在任何平臺均可以運行Java程序。全靠的是Jvm虛擬機,能夠跨平臺,這就是可移植性。

8.解釋型

Java解釋器能夠在任何移植解釋器的機器上執行Java字節碼。因爲連接是一個輕量級的過程,因此,開發過程也變得更加敏捷,更加具備探索性。它其實就是把作好的源程序翻譯一句,而後執行一句,直至結束。特色:執行速度慢、效率低;依靠解釋器、跨平臺性好。javascript語言也是解釋型的。

9.高性能

儘管如今咱們對解釋後的字節碼的性能已經比較滿意了,但在有些場合還須要更高的性能,這時候咱們該怎麼辦呢?字節碼能夠在運行時刻 動態地 翻譯成對應這個應用的特定CPU的機器碼。

10.多線程

多線程能夠帶來更好的交互響應和實時行爲。現在,咱們很是關注併發性,如今咱們再也不追求更快的處理器,而是得到更多的處理器,並且要讓它們一直保持工做。併發程序設計絕非易事,不過Java在這方面表現很出色,能夠很好地管理這個工做;web編程由於時間不是很長,處理器則要花很長時間來等待服務器響應,須要併發程序設計來確保用戶界面不會被凍住。

11.動態性

從各類角度看,Java與C或C++相比更加具備動態性。由於它可以適應不斷髮展的環境。庫中能夠自由地添加新方法和實例變量,而客戶端卻沒有任何影響。在Java中找出運行時類型信息十分簡單。

當須要將某些代碼添加到正在運行的程序中時,動態性將是一個很是重要的特性。好比說:從網上下載代碼,而後在瀏覽器上運行。若是使用C或C++,這確實難度很大,不過Java能夠很容易實現程序的推演。(C#與Java有不少相同之處,不過使用的虛擬機倒是徹底不一樣的)。

二:Java applet

1:Applet基礎
 在網頁中嵌入Applet程序:
<applet codebase= "." 
code= "com.webtec.graph.TopGraphApplet.class" 
archive="topview20111202.jar"
width=800 height=600> 
<param name=width value="800">
<param name=height value="600">
</applet>
 Codebase: applet程序位置(.表示頁面和applet在同一位置)
 Code: applet類的全名
Archive:引入的jar包,多個用","隔開
 <param name=width value="800">指定向applet傳入的參數

 Applet程序:
getParameter("width"), 從Apple獲取參數對應值,未設置返回null
 getCodeBase (),返回當前applet的路徑,即applet的目錄的URL。
這裏犯了個錯誤,想要從properties文件中讀取服務器配置,在applet中配置鏈接服務器的路徑,可是applet是服務器端下載的,不能訪問客戶端的文件系統,不可能讀到properties文件,最後用getCodeBase()方法替代了。要配置用戶屬性,能夠在param標籤配置。
 Validate(),在applet中動態添加組件,不顯示,調用了一下Validate()方法,而後圖形出來了,repaint()、doLayout()都不得行。

2. Applet與服務器交互
準備在applet程序中繪製圖形,圖形數據從數據庫中獲取出來的,開發的時候直接訪問了數據庫,還用了JPA,在Eclipse裏面發現運行起來很正常,很強大,發佈的時候發現又作錯了。
Applet是運行在客戶端的,須要客戶端的java類庫支持,開發的時候直接把不少包放到了類路徑下,發現用戶要從網頁運行不可能下載全部的jar包支持運行,因此不要把applet功能作得太過強大,主要是用來展現的。
Applet能夠直接訪問數據庫,可是須要JDBC的支持,可是最好不要這樣作。一方面客戶端是沒有jdbc包的,直接放到applet一塊兒會增長用戶訪問時的網絡負擔;另外一方面,數據庫服務器不必定可以從客戶端直接連通,主要是網絡問題,可能數據庫位於內外或者其餘安全考慮。
最終不得不考慮從遠程Http服務器獲取圖形數據,代碼以下:
/**
* 從服務器讀取數據繪製TOP圖的數據
* */
public static String getGraphicData() {
String graphicData = "";
//服務器servlet或Action請求路徑(絕對路徑)
String urlString = Common.ActionAddress.getGraphDataUrl();
byte buffer[] = new byte[4096];
StringBuffer data = new StringBuffer();
HttpURLConnection conn = null;
try {
URL url = new URL(urlString);
conn = (HttpURLConnection) url.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
int len = 0;
while((len = is.read(buffer))>0){
data.append(new String(buffer, 0, len));
}
is.close();
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, 
"Error: " + "Error occurs when request to : \n" + 
urlString + "\nReason: " + e.getLocalizedMessage(), 
"Applet Message", JOptionPane.ERROR_MESSAGE);
}
return graphicData;
}
在開發環境中測試一切正常,可是發佈到網頁中沒法執行。上面的代碼表面上看只有IOException,因此一開始只捕獲了IO異常,開發環境中運行正常,可是網頁加載後執行正常,Java控制檯無任何異常信息,調了好久不知道爲何。後來只好將IOException改爲Exception,捕獲到了java.net.SocketPermission,提示Access Denied,發現是applet沒法使用網絡資源,是java security機制的緣由,applet沒法訪問客戶端的網絡、文件等資源,因此只好在客戶端修改配置了,配置方法在下一節。
網絡異常解決了,程序仍是沒法執行,檢查到java.lang.reflect.ReflectPermission異常,多是在給Filed設置值是設置了私有成員,最終沒有解決,網上查不到資料,本身改不來,只好吧那部分代碼換了,用了點低級的代碼先把功能實現了再說。
還有一個問題不能解決的是Applet的字符編碼問題,服務器端用的是UTF-8的編碼格式,在頁面測試正常,開發環境中的Applet測試正常,可是發佈到網頁測試不正常,說是Applet運行的時候用的是操做系統的默認字符集,最後只好把它從GBK轉了一遍,勉強湊合,可是沒有徹底去除亂碼,GBK2312和GBK18030直接拋異常,沒搞懂爲何,期待高手指點。

3. Applet安全設置
 Applet訪問網絡,拋出異常: 
java.security.AccessControlException: access denied (java.net.SocketPermission server1 resolve)
這個錯誤的通知你訪問被拒絕。這就是說,因爲 applet 程序試圖在沒有得到正確的權限的狀況下訪問系統資源,括號中代碼表示,若要糾正這種狀況,您須要一個向數據庫所在計算機(主機名爲server1) 授予 applet 訪問權限的 SocketPermission。
 解決辦法:
建立policy策略文件,內容以下:
grant {
permission java.net.SocketPermission "server1", "resolve";
permission java.net.SocketPermission "127.0.0.1:8080", "connect, resolve";
};
將該文件保存成ASCII文件,命名爲netconnect.policy,存於${JRE_HOME}/lib/security/目錄下(主要是爲方便後面路徑填寫)。

 修改Java安全配置:
建立了策略文件後,修改${JRE_HOME}/lib/security/java.security文件,在
policy.url.1=file:${java.home}/lib/security/java.policy 
policy.url.2=file:${user.home}/.java.policy
下添加一行
policy.url.3= file: ${java.home}/lib/security/netconnect.policy
再次訪問頁面的applet,又捕獲到以下異常:
java.security.AccessControlException: access denied(java.net.SocketPermission 127.0.0.1:8080 connect,resolve)
網絡訪問仍受限,不能訪問服務器127.0.0.1:8080,在前面生成的策略文件中加入 
permission java.net.SocketPermission "10.6.1.16:1521", "connect, resolve";
再次訪問,運行成功。

三:關於Java的常見誤解

1:Java是HTML的擴展。

Java是一種程序設計語言;HTML是一種描述網頁結構的方式。除了用於在網頁上放置Javaapplet的HTML擴展以外,二者沒有任何共同之處。既然說到了HTML就不得不提一下JSP了,JSP全名爲Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,他是一個動態網頁設計。咱們能夠把JSP理解爲是Java Servlet的擴展;

2使用XML,就不須要Java。

Java是一種程序設計語言;XML是一種描述數據的方式,可使用任何一種程序設計語言處理XML數據,而Java API對XML處理提供了很好的支持。此外,許多重要的第三方XML工具採用Java編寫。

3Java是一種很是容易學習的程序設計語言。

像Java這種功能強大的語言大都不太容易學習。首先,必須將編寫玩具式程序,或者模仿他人的增刪改與實際項目是的艱難區分開來。Java類庫包含了數千種類和接口與幾萬個方法,要解決Java的實際問題,咱們仍是要了解很多內容的;

4.Java將成爲使用與全部平臺的通用性編程語言。

從理論上講,這是徹底有可能的。的確,除了微軟以外的每個廠商都但願如此。然而,有不少在桌面計算機上已經徹底工做良好的應用程序,在其餘設備上或瀏覽器中或許不能正常地工做。同時,在編寫這些應用程序時,利用了相應處理器的速度和本地的用戶接口庫,並且他們已經移植到全部重要的平臺上。這類應用程序包括:字處理程序,圖片編輯器以及Web瀏覽器。他們一般是用C編寫的,採用Java語言從新編寫彷佛對最終的用戶不會帶來什麼特別的好處。

5Java只不過是另一種程序設計語言。

Java是一種很好的程序設計語言,不少程序設計人員喜歡Java賽過C,有上百種好的程序語言沒有普遍的流行,而帶有明顯缺陷的語言,而Java和C卻大行其道。這是由於程序設計語言的的成功更多的取決於其支撐系統的能力,而不是優美的語法。人們主要關注:是否提供了易於實現某些功能的易用,

便捷和標準的庫。是否擁有強大的程序設計能力與調試工具,語言和工具是否可以與計算器的其餘基礎結構整合在一塊兒Java的成功源於其類庫可以讓人們輕鬆的完成本來有必定難度的事情。

6.Java是解釋型語言,所以對於關鍵的應用程序速度太慢了。

早起的Java是解釋型的,如今除了像手機這樣的微型平臺以外。Java虛擬機使用了即時編譯器,所以採用Java編寫的熱點代碼其運行速度與c++相差無幾。

如今今天的計算機速度遠比人們發出抱怨的時候快了不少。一個較慢的Java程序與幾年前至關快的C++程序還要快一些。如今的人們已經不抱怨Java程序慢了,而去抱怨Java的界面太醜了。

7.JavaScript是Java的簡易版。

JavaScript是一種在網頁中使用的腳本語言。它是由Netscape發明的,原來的名字叫作LiveScript.JavaScript的語法相似於Java,除此以外。二者無任何關係。固然名字有些想象。
第二章  Java程序設計環境及實驗內容說明

主要學習了Java程序開發過程。和如何分析Java應用程序。

1:源程序的編輯:Java源程序是以•Java爲後綴的文本文件,能夠用各類Java集成 開發環境中的源代碼編輯器來編寫,也能夠用文本編輯工具來編寫。

2:源文件的命名:若是源文件中有多個類,那麼只能有一個類是public類。 若是有一個類是public類,那麼源文件的名字必須與這個類的名字徹底相同 。源程序文件的擴展名是.java 。若是源文件沒有public類,那麼源文件的名字只要和某個類的名字相同,而且擴展名是.java就能夠。 源程序名必定爲MyJavaApplication.java

第三部分:實驗部分

一、實驗名稱:實驗一 Java程序設計環境

2.  實驗目的:

(1)掌握JDK的安裝與配置;

(2)掌握使用JDK開發Java程序的基本命令及步驟;

(3)熟練運用Elipse集成開發環境開發java程序的基本步驟

(4)掌握Java程序的基本語法。

3. 實驗步驟與內容:

實驗1  JDK的安裝與配置

1):下載jdk10.0.2文件並進行安裝,安裝路徑不會改變。

安裝後的文件夾截圖以下

 

 

 2):進行環境變量的設置

步驟:此電腦-計算機-屬性-高級系統設置-環境變量-path-新建文件夾-將如圖所示的變量名粘貼

 

 

 3):window+R

 

4):輸入java

 

 

 

 

 

 5):輸入javac

 

 

 

 6):下載安裝eclipse軟件包,頁面以下

 

 

 7):安裝後設置工做空間後,截圖以下

 

 

 8):建立Java文件,截圖以下

 

 

 9):利用eclipse輸出九九乘法表

 

 

 10):代碼以下:

package cfb.java;

public class welcome {
public static void main(String[] args) {
int sum;
for(int i=1;i<=9;i++) {
for(int j=1;j<=i;j++) {
sum=i*j;
System.out.print(j+"*"+i+"="+sum+" ");
}
System.out.println();
}
}
}

4:實驗總結以下:

1):經過本次課程的學習讓咱們對Java程序設計這們課程有了初步的瞭解;學習了Java的發展史及Java程序設計環境等知識。

2):學會了如何去安裝JDK及Elipse,在安裝的過程當中,出現了許多問題,如環境變量的調試等,經過問助教及同窗都一一解決了;掌握了一些基礎的實驗知識。

3):最後經過本身安裝的JDK及Elipse運行了welcome.java及九九乘法表的命令,掌握了運行的步驟及過程。

4):經過此次的實驗使我學到了很多實用的知識,而且鍛鍊了本身的動手能力;相信在之後的學習中,在助教和老師帶領下,我能夠學到更多的關於編程的相關知識。

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package  project3;
 
public  class  test {
     public  static  void  main(String[] args) {
         int  sum;
         for ( int  i= 1 ;i<= 9 ;i++) {
         for ( int  j= 1 ;j<=i;j++) {
         sum=i*j;
         System.out.print(j+ "*" +i+ "=" +sum+ " " );
         }
         System.out.println();
         }
     }
 
}
相關文章
相關標籤/搜索