軟件151 韓闖 1531610115前端
2016年12月23日java
List集合特徵:mysql
1.存取數據有順序web
2.能夠出現重複值算法
List的四個實現類(子類)sql
1.ArrayList 線程不一樣步 查詢速度最快數據庫
2.LinkedList 線程不一樣步 增刪速度最快編程
3.Vector 線程同步 又稱爲向量 先進先出數組
4.Stack 線程同步 棧 後進先出瀏覽器
線程不一樣步 處理速度快,可是不安全
線程同步 處理速度慢,可是安全
2016年12月27日
JavaEE 和javaSE不一樣步
Enumeration 枚舉對象 對集合當中的數據元素進行遍歷
Map 是對一組具備 鍵值對 映像關係的數據進行管理的集合
HashTable
HashMap
TreeMap
Properties 本地資源處理類
2017年2月6日
最經常使用的建模方法:
1.生命週期法
階段:
1)需求分析: 找對象(需求)
用戶的要求(需求)可分爲性能的要求,環境/技術的要求,功能上的要求.
性能要求指標:時間,空間,安全係數
環境/技術要求: 環境就是指軟件(操做系統,IDE(集成開發工具),中間件,數據庫服務器)和硬件
功能的要求:功能可分爲3類:傳統功能,創意功能,特點功能
2)系統設計: 找類
類分爲:
1)邊界類:描述屬性的類型
用例圖中有多少個用例就有多少個邊界類
2)實體類:描述對象的類型
用例圖中有多少個用戶就有多少個實體類
3)控制類:使用對象的類型
業務模型生成用例圖(UML統一建模語言,圖符式語言)
業務模型中心思想 以用戶的視角出發,來認定系統當中全部的東西
1)找用戶
用戶:存在與系統外部,和系統直接進行交互,用戶能夠是人也能夠是外部系統
2)找用例
用例:存在與系統內部,相似於系統當中的功能
3)創建用戶與用例關係
2.原型法
適合於對時間要求很是苛刻的軟件,在開發的過程當中不斷地與用戶進行交流來完善系統當中全部的功能
多線程
操做系統中每個應用程序都是一個進程
進程與進程之間不共享資源\數據
一個進程下的多個線程是共享數據的
線程是進程的最小單位
Runnable 是爲了進程之間實現」多實現」.
多線程的生命週期:
1)建立
2)就緒
1.可運行 線程對象.start()
2.運行 run()
3)阻塞
Sleep()
4)銷燬
2017年2月8日
泛型(genric):
即類型佔位符,幫助開發人員解決類型任意化的問題
在設計程序時,不知道所要操做數據類型的狀況下使用泛型
優勢:
1.在編譯期檢查類型安全
2.全部強制類型轉換都是隱式的,使得開發者對於形參的類型能夠在不預知的狀況下進行
*泛型中沒法使用基本數據類型
*泛型通配符: <?>
* extends 在泛型中是一個範圍,表示只能是該類或該類的子類.
Arrays 是對數組進行操做的類
Collections是對Map,Set,List進行操做的類
對日期時間封裝的類:
1.java.lang.System
2.Java.util.Date
Java.sql.Date(對日期封裝的類)
Java.sql.Time(對時間封裝的類)
Java.sql.TimeStamp(時間戳,是對日期和時間封裝的類)
3.Java.util.Calendar
TimeZone 時間區
GregorianCalendar 格林尼治時間
4.java.text.DateFormat
Java.text.SimpleDateFormat
2017年2月9日
JDBC:java database connectivity 即java數據庫鏈接.提供了一種與平臺無關的用於執行SQL語句的標準的java API,能夠實現多種關係型數據庫的統一操做,它由一組由java語言編寫的類和接口組成
數據庫驅動程序: 即數據庫廠商按照sun公司的JDBC所指定的標準來給出的代碼的具體實現細節的應用程序
JDBC驅動方式:
1.JDBC-ODBC橋驅動
2.JDBC本地驅動 又稱JDBC直連
3.JDBC網絡驅動
JDBC驅動操做的步驟
1.加載數據庫驅動程序(java.sql.DriverManger)
a) 下載驅動程序
b) 裝載至IDE的類路徑下
c) 實例化驅動程序的對象
做用:通知應用程序加載的是哪一款數據庫產品
2.鏈接數據庫(得到數據源)(java.sql.Connection)
DriverManger.getConnection(鏈接地址,用戶名,密碼);
GetConnection常見異常:
1.TCP/IP異常 解決方法:SQL配置程序,將TCP/IP更改成啓用狀態,或打開TCP/IP服務,將該服務當中的TCP端口所有設置爲1433
2.底層協議異常socketException
鏈接地址是由數據庫廠商提供的 構成爲:主協議(JDBC),子協議,IP,端口,數據庫名稱
Oracle地址:
Jdbc:oracle:thin:@localhost:1521:數據庫名稱
MySql地址
Jdbc:mysql://localhost:3306/數據庫名稱
SQLServer 地址
Jdbc:sqlserver://localhost:1433;DataBaseName=數據庫名稱
3.向數據庫中發送SQL語句
Statement s=Connection.createStatement();
executeUpdate(「更新語句」)
ExecuteQuery(「查詢語句」)
ResultSet 結果集,對查詢語句返回出來的集合進行封裝的接口
4.處理結果集
5.釋放資源
Statement.close();
Connection.close();
配置文件中鍵對象提供給外部使用者,而值對象是系統須要得到的
SQLBean
JTabel 表格
2017年2月13日
Statement 在進行大量查詢時速度較慢 運行期綁定 程序在運行時效率較慢
PreparedStatement 預編譯對象\參數化處理對象(該對象是對數據庫服務器發送指令的,和java語言所支持的編譯期綁定沒有衝突)\ 編譯期綁定 , 建立時向數據庫服務器當中發送SQL指令,目的是通知數據庫服務器來編譯SQL語句,SQL語句當中若是存在某字段對應的值,則有佔位符」?」代替,這樣就不會影響數據庫服務器來編譯SQL語句
PreparedStatement使用步驟:
1.建立預編譯對象 c.preparedStatement() //編譯
2.向對象傳參 p.setXXX(index,value)
3.執行SQL語句 p.executeXXX(); //無需傳參
preparedStatement的優勢:
1.運行速度快
2.字段的值之間能夠進行參數化傳遞
CallableStatement 調用存儲過程
1.建立對象
2.傳參(與preparedStatement雷同)
事務
保持邏輯數據一致性與可恢復性,必不可少的工具
事務提交的方式
1.自動提交
2.顯示提交
3.隱式提交(不推薦使用)
事務的類型
1.JDBC事務
只能在同一個數據庫下面
流程:
1)開始事務,首先應將提交狀態由默認提交轉換爲顯示提交 c.setAutoCommit(false);
2)執行SQL語句
3)產生異常則進行事務回滾 c.rollback();
4)沒有異常提交事務 c.commit();
5)將提交狀態轉換爲默認提交 c.setAutoCommit(true);
2.JTA事務
多個數據庫之間
3.容器事務
通常狀況下事務與存儲過程一塊兒使用
數據庫/數據結構/字符串處理/日期時間
Final 修飾類的時候禁止繼承,修飾方法禁止多態,修飾變量禁止修改
Switch 後可接byte,short,int,char,枚舉類型
2017年2月17日
桌面程序:
全部的數據都保存在本地的計算機當中,運行效率高,可是存儲容量有限制,數據不能共享
網絡編程:
計算機的網絡是由一組通訊信道相互鏈接的機器組成.咱們把這些機器稱之爲主機和路由器
主機:
指運行應用程序的計算機
路由器:
將信息從一個通訊信道傳遞或轉發到另外一個信息信道
信息:
指字節序列也稱之爲報文(有用的數據的集合)
通訊信道:
將字節序列從一個主機傳遞到另外一個主機實現的手段(有線電纜,以太網)
協議:
至關於通信的程序間達成的一種約定
TCP/IP協議
1.IP協議(Internet Protocol) 互聯網協議
統一了數據傳遞的格式,將各類類型數據轉換成字節序列即打包;指定接收方的地址(主機地址)
會存在 錯發/漏發/順序顛倒的問題,從而致使數據不安全
解決了格式和傳輸的問題
2.TCP協議(Transmission Control Protocol)傳輸控制協議
有自動尋址(應用程序的具體地址即端口)功能,不能獨立存在,必須和IP協議一塊兒使用,面向鏈接的協議,發送方和接收方必須同時在線才能發送數據
3.UDP協議(User DataGram Protocol) 用戶數據報協議
也有自動尋址功能,非面向鏈接的協議,容許接收方不在線也能進行數據傳輸,當接收方上線以後,再去接收數據
Java.net包
對IP地址的支持:
InetAddress類
IP地址的兩種形式
IPV4:該地址長32位能區分大約四十個億的獨立地址
IPV6:該地址長128位能容納更多的地址
Socket 客戶端套接字對象
ServerSocket 服務器套接字對象
網絡應用程序的會話流程:
1.建立服務器對象
Ss=New ServerSocket(int port)
2.服務器處於阻塞狀態等待客戶端的鏈接
Socket s=ss.accept();(是在服務器中的代碼)
3.建立客戶端套接字對象
Socket s=new Socket(String IP,int port);
4.向服務器發送請求
OutputStream os=s.getOutputStream();
Os.write();
5.服務器接收請求
6.處理請求並生成應答結果
7.服務器返回應答結果
Ss.getOutPunStream
8.客戶端接收應答
S.getInputStream()
9.客戶端處理應答
10.客戶端/服務器 釋放資源
分佈式運算:部署在不一樣結點的組件相互通信而完成的一次運算任務
分佈式運算的三層結構:
1.表示層(客戶端)
2.邏輯層(服務器端)
3.數據層(數據庫)
這三層將部署於不用物理地址的結點上
所遵循的數據傳輸協議爲TCP/IP協議
2017年2月20日
*前端產生的任何不正常的現象都由前端本身去解決;
*能由客戶端解決的問題不建議提交給服務器解決(服務器接收到的數據必須是精確的,其目的是減輕網絡服務器的壓力);
對象化的需求分析叫作業務模型,
業務模型
1.找用戶羣體
2.找用例(功能)
3.創建關係
工程:
工程結構
每張表要有一個與其業務無關的id字段
租車管理:
1.車輛信息管理
2.司機信息管理
3.訂單信息管理
4.調度管理
用戶:
1.車輛信息管理員
a) 錄入車輛信息
b) 維護車輛信息
c) 查看車輛信息
d) 登陸
i. 用戶名
1. 前三個字段是部門代碼
2. 第四第五字段是權限代碼
3. 後面有相應的ID
ii. 密碼
2.司機信息管理員
a)
設計實體類
汽車 陳宣超
司機 徐娜
調度 李泰然
訂單 薛志鵬
建表
設計邊界類
JComboBox 下拉列表
JFileChooser 文件選擇對話框
項目總結:
服務器端分爲兩類程序
1.管理程序
處理服務器併發問題,利用線程池
2.服務程序
TDD原理及應用
TDD:測試驅動開發,是敏捷開發中的一項核心實踐和技術.
TDD 以測試用例爲指導,要求開發人員開發出符合測試用例的程序,而後經過測試用例對程序進行驗收,也叫作」測試現行的開發」;
測試用例:指定的集合,經過這個集合來驗證是否知足用戶的需求,集合中有三個元素:測試輸入/執行條件/預期結果.
測試驅動開發的基本過程:
1.明確當前要完成的功能(能夠記錄成一個TODO列表)
2.快速完成針對此功能的測試用例編寫
3.測試不經過(紅色)
4.編寫對應的功能代碼
5.測試經過(綠色)
6.對代碼進行重構,並保證測試經過
7.循環完成全部功能的開發
歸納整個過程 紅色-綠色-重構的過程
測試報告內容列表
1.項目簡介:羅列須要介紹的內容.如項目簡稱的解釋,項目背景
2.測試內容:測試模塊的大綱
3.測試環境:測試環境的描述,包括客戶端和網絡環境
4.測試的數據:bug數,解決數,遺留數
5.羅列比較重要的bug並作簡短的描述
6.測試數據分析,對於整個過程測試的一個分析,得出結論
7.遺留問題:對軟件遺留問題有詳細說明
前四位數字是城市
公司名稱 四位
部門名稱 四位
權限 四位
1000 司機
1001 汽車
1002 訂單
1003 調度
用戶ID 四位
2017年3月20日
HTTP傳輸協議: 超文本傳輸協議,是一種基於請求和應答的協議
XHTML 可擴展的超文本標記語言
HTML 超文本標記語言 用來設計網頁即UI界面
XML 可擴展標記語言 能夠解決標籤自定義問題和標籤任意嵌套問題即由最簡單的語法格式來表達極其複雜的數據 做用:用來存儲和傳輸數據
XML 特色
1)簡單易用的標記語言
2)嚴格的格式
3)數據處理邏輯與顯示邏輯分離
XML + java 語言能夠實現雲 XML能夠跨語言,java能夠跨平臺
Java語言當中提供的對XML文檔進行解析(讀寫)的兩個組件是
1.DOM
2.SAX
第三方插件:
JDOM DOM4J
什麼是協議?
相似於一個羣體達成的共識
IP,TCP,HTTP 協議分別解決了什麼問題?
2017年3月21日
JavaEE 企業級開發版本
服務器中全部的數據及信息都是以文檔的格式來存儲--標記文檔
服務器端保存的文檔分爲靜態頁面和動態頁面兩種,靜態頁面是純HTML,而動態頁面是通過人機交互才能生成的頁面(經過程序生成的頁面),JavaEE當中實現動態頁面的兩個組件是Servlet 和 jsp,因此咱們也能夠將這兩個組件稱之爲是web服務器的組件
HTML: 超文本標記語言,用來制定網頁,被保存在服務器
瀏覽器: 做用是經過URL向服務器請求資源,服務器將資源返回給瀏覽器之後,瀏覽器負責顯示網頁
URL : 統一資源定位符
URL格式:
協議://IP:端口/文件夾/文件名稱
http 超文本傳輸協議
Web 全稱world wide web 縮寫www,中文稱萬維網.web是一種體系結構,經過它能夠訪問遍及於因特網主機上的連接文檔,符合以上特徵的應用程序稱之爲web應用程序
Servlet的工做流程:
1)客戶端向服務器發送請求
2)Web服務器將請求發送給Servlet
3)Servlet容器會產生一個servlet實例
4)Servlet構建一個響應並將其傳給web服務器
5)web服務器將響應結果返回給客戶端
在web應用程序當中對容器組件進行配置和管理的文檔叫作web.xml
Servlet接口定義了servlet生命週期的相關方法
ServletConfig 接口是對定製於用戶的信息被servlet所使用時建議經過servletConfig進行配置
GenericServlet :將servlet 和servletConfig整合在一塊兒
HttpServlet:支持http傳輸協議的servlet類
Servlet的生命週期:
1)初始化 init() 由容器回調的方法;
2)Service() servlet程序執行入口,一個用來接收請求處理應答的方法,該方法也是由容器回調的方法;
3)Destroy() 當Servlet對象被銷燬時由容器回調的方法
什麼是Servlet
是一個java 類,能夠將其理解爲是嵌入了HTML代碼的java類,做用是生成動態網頁(經過流來生成)
手工部署一個web工程
1)建立一個文件夾,做爲工程名稱
2)在工程文件裏面建立WEB-INF文件夾
3)打開WEB-INF文件夾,在裏面建立classes和lib文件夾和web.xml文檔,classes裏面保存的是java類,lib裏面保存的是資源庫,例如:j2ee.jar;
4)編寫Servlet並配置web.xml
5)將該文件夾存儲到Tomcat服務器根目錄下的webapp裏面
6)啓動服務器,啓動方式--打開bin文件夾裏startup.bat文件
7)打開瀏覽器,輸入URL
2017年3月22日
基於B/S結構下的網絡應用程序所使用的服務器叫作web服務器
Web服務器:
1.管理程序
2.服務程序:根據用戶發送的請求生成動態頁面,返回給客戶端
部署web工程時,搭建環境以前必需要的工具:jdk;支持servlet容器的web服務器(eg:Tomcat);集成開發工具
Eclipse:
集成了JDK,能夠集成web服務器,能夠集成瀏覽器
HttpServlet:
Http請求:HttpServletRequest 組成:
1.請求方法get/delete/options/post/put/trace
2.請求頭
3.請求正文
2017年3月23日
請求方法:
Get(): 查詢
Post():更新
Delete():刪除
Put(): 增長
Options:
Trace:
Get和Post之間的區別:
Get請求方法對應的是查詢的功能,採用的是比較安全的冪等運算,請求數據經過url來傳遞,數據訪問不安全,相似於具備保密信息的數據須要經過post來傳遞,get參數的最大容量爲1024字節,request對象能夠調用getQueryString()來得到請求參數;
Post對應的是更新的功能,提交數據時經過表單元素來提交,安全係數比較高,請求數據容量沒有限制,若是由於容量過大致使異常,並非Post自己的事情,而是服務器對請求數據的容量作了限制,request對象能夠調用getParameter()等一系列方法得到請求參數
採集表單數據
Map
SQLBean
表單對用戶來說是表單,對系統來說就是數據庫當中的表
2017年3月25日
應答包括:
1.應答方法
2.應答頭
3.應答正文
Selvlet 生命週期:
Init()
Service()
Destroy()
Web容器裝在web組件的流程(時序圖):
1)當web容器加載時,首先會尋找Servlet容器(即web.xml文件)
2)建立Servlet類型的對象(構造方法)
3)Servlet容器調用init()方法對Servlet當中的配置信息進行初始化(由ServletConfig進行初始化)
4)容器建立HttpServletRequest和HttpServletResponse對象,Servlet容器回調service()方法
5)銷燬Servlet對象,由容器回調Destroy()方法;
ServletConfig:對配置信息進行管理的對象
如何配置?
配置信息都是定製與用戶的信息
<servlet>
<description></description>
<display-name>MyConfigDemo</display-name>
<servlet-name>MyConfigDemo</servlet-name>
<servlet-class>jq.servlet.MyConfigDemo</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>lx</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
1.表的設計
2.登陸功能的實現(自動登陸 調通便可)
3.商品搜索(分頁算法)
3月30日
系統中集成的數據在ServletContext中進行配置
WEB工程中定製於Servlet用戶的資源在ServletConfig中進行配置
配置數據信息時使用ServletContext、ServletConfig
系統集成的共享對象 ServletContext
】
在兩個不一樣的Servlet類中進行數據傳遞的時候能夠將數據轉發給servletDispatcher:類進行處理
servletDispatcher:
include():包含。在JSP中被常用
forward():轉發。能夠將當前的請求以及請求當中的信息轉發給另一個Servlet進行處理。
注意:
1.RequestDispatcher能夠將當前Servlet中的求情信息轉發個另一個Servlet進行處理,從而實現了多個Servlet之間信息傳遞的功能,但不管轉發給多少個Serrvlet,請求和應答讓然是瀏覽器發送過來的請求和應答。
2.RequestDispatcher在進行轉發時地址欄中的URL不會發生改變。
3.RequestDispatcher能夠實現Servlet和Servlet間的跳轉,也能夠實現Servlet和HTMl之間的跳轉。
4.靜態網頁和動態網頁之間的跳轉request.reDirect();
轉發和重定向之間的區別:重定向會改變地址欄中的url,表明的時新一輪的請求和應答,而轉發不會改變地址欄的URL表明的時原來的請求和應答。
5.若是請求不發生改變,使用requestDispatcher來實現。(若是不須要會話跟蹤,可使用重定向完成頁面的跳轉,若是須要會話跟蹤,必須選擇requestDispatcher中的forward()方法進行轉發)
3月31日
會話跟蹤:會話時訪問特定web站點時用戶執行的一組活動,記住不一樣會話過程成爲會話跟蹤。
方式:
1.隱藏表單字段:
缺點:代碼不重用,生產力降低。程序中產生大量的冗餘數據。能夠在瀏覽器中直接看到源碼,數據不安全。
2.Cookie的使用:cookies爲一下小文本文件,目的用於Web服務器記錄用戶信息。Cookies用鍵值對的形式存儲,是實現會話跟蹤的方法之一。
運行原理:
a.瀏覽器向服務器發送請求時,若是須要進行會話跟蹤,能夠在服務器端建立一個Cookies對象,用來存儲會話跟蹤信息
b.服務器向客戶端發送響應時,能夠以應答的形式返回給客戶端
c.客戶端接受了帶有cookies類型對象的應答之後能夠將cookieis下載到本機當中對cookies進行存儲。
d.當客戶端再次請求服務器是,cookies對象會以請求的方式提交給服務器,使得服務器能夠輕鬆的得到上一次會話的記錄。
注意:
(1)在應用addcookie()函數建立Cookie以前不能有任何HTML輸出
(2)瀏覽器建立一個cookie後,對於每個針對這個網站的請求,都會在Header中帶着這個cookie,不過對於其餘網站的Cookie請求時絕對不會跟着發送的,並且瀏覽器會這樣一直髮送,知道Coolie到期爲止
(3)使用CooKie的限制,若是cookie不設定過時時間,name它的生命週期爲瀏覽器會話的期間只要關閉瀏覽器,cookie就會消失,這種Cookie被稱爲會話Cookie,通常不保存在硬盤上,而是保存在內存當中,
(4)服務器能夠利用Cookie找出計算機名,ip地址或計算機的其餘資料,多以存在不安全等因素。因此有些瀏覽器是禁止Cookie的寫入的,遇到這種狀況可使用Session
3.URL的重寫:所謂URL重寫就是get請求參數的應用,當服務器響應瀏覽器的上一次請求時將某些信息以超連接的方式響應給瀏覽器,超連接中包含請求信息。
4.HttpSession會話管理
HttpSession hs=new request.getSession();
若是以前服務器沒有建立Session對象,則返回爲null
HttpSession hs=new request.getSession(true);
若是以前服務器沒有建立Session對象,則建立一個新的Session對象
Session的使用:
Hs.setAttribute(String key,Object object);
Hs.getAttribute(String key);
Cookiet與Session之間的區別:
1.Cookie的數據是保存在客戶端、Session的數據是保存在服務器
2.Cookie不安全
3.Session會在必定的時間內保存在服務器上,當訪問增可能是,會佔用服務器的性能
4.單個Cookie保存的數據不能超過4k。不少瀏覽器都限制一個站點最多保存20個Cookie
5.Cookie保存的時文本,Session保存的是對象
Session對象的銷燬:
服務器關閉的時候有可能銷燬Session
Web工程被從新裝載的時候有肯能銷燬Session
setMaxInactiveInterval設置Session對象的存活時間
配置web.xml文件
<session-config>
<session-timeout>30</session-timeout>
</session-config>
電商平臺任務:
1.註冊登陸
2.自動登陸
4月6日
JavaEE架構
客戶端
Web服務器(支持Servlet容器的服務器)
容器管理的共享對象:
HttpServletRequest 、ServltContext、Session、pageContext
共享範圍:一次會話、整個項目運行期間、經過程序控制存活時間、單個頁面(jsp)
Servlet過濾器
做用:在Servlet容器處理請求以前能夠改寫request對象當中的信息以及在Servlet生成應答之後沒有返回個客戶端以前能夠改寫response信息。
特色:
使用過濾器的狀況:
1.針對全部的Servlet,產品經理想了解從請求到響應之間的運行性能(性能測量)
2.針對某些特定的頁面,客戶但願只有特定的用戶來訪問(用戶驗證)
3.出於安全性能的考慮用戶輸入的字符必須進行過濾並替換成無害字符(字符校驗、轉換)
4.某些頁面輸出內容太多、但願壓縮後再發送給瀏覽器或服務器(壓縮)