2017年5月9日 星期二

Introduction to USB



◎ HOST是怎麼知道一個USB裝置插上來了呢?
絕對不是看VBUS訊號。
其實它是偵測D+D-,如果D+有被PULL-UP,就表示有個Full Speed 裝置插入,如果是D-PULL-UP,那就是Low Speed


   High Speed裝置其實也是先進Full Speed,然後HOST會再透過一些協定(chirp)跟這個Full Speed裝置溝通,如果成功,雙方就會進High Speed模式。如果失敗,那就維持在Full Speed。很詭異是吧?其實這就是為了向下相容的緣故,因為只有兩根線,沒辦法生出第三種辨識方式了。



※ 有幾個Controller就有幾個Root Hub



※  USB Composite Device

 USB Composite Device意思是複合式裝置,它一定有兩個以上的 Interface。






◎  ResetSuspend、跟Resume是硬體訊號。要如何偵測跟應對,請看規格書。
Suspend模式下,一般狀況下,裝置是不能吃HOST超過500uA的電。這個規定很嚴格,基本上就是叫你把整個裝置都斷電的意思。如果你的裝置沒辦法整個斷電,就不要從HOST吃電,改吃電池即可。

◎  eye-pattern(眼圖),做USB裝置一定得通過眼圖測試。要讓USB裝置進入一個叫測試模式的狀態,不然沒辦法量測。一般的USB裝置一定支援測試模式,如果沒有,那就換一家chip。然後結果不能碰到灰色六角形。









2016年2月11日 星期四

JAVA SL-314_01/31

過濾器

JSP可以完成的servlet都可以完成,但是servlet具備的有很多事JSP所沒有的。

Servlet 可以分成簡單Servlet,過濾Servlet監聽Servlet

Filter 是 2.3 版之後新增的用意是在限制使用者存取某些資源或處理請求時先處理某些資源,他是用來 "鏈" 的形式進行綁定。

客戶端 → Filter → Filter → Filter → Web資源
                   |______________|
       可以定義數個Filter

doFilter() 方法中定義了3個參數:

ServletRequest

ServletResponse

FilterChain → 介面

將使用者請求向下傳遞給其他的Filter或Servlet
        ↓
取得session
        ↓
        ↓    false
屬性存在     →     跳躍到登入頁
        ↓                         ↓
傳送請求   ← ← ← ←

/=================================================================/

監聽器

負責監聽Web的各種操作,當相關的事件觸發後,將產生的事件,並對此事件進行處理,在web中可以對application,session,resquest 三種進行監聽。

applicatic 實際上是針對ServletContext(Servlet 上、下文)監聽,使用的是ServletContextListener和ServletContextAttributeLister介面。

session 主要是HttpSessionListener.HttpSessionAttributeListener.HttpSessionBindingListener介面。

request 針對使用者每次使用時都進行監聽,2.4版之後新增ServletRequestListener.ServletRequestAttributeListener介面。

JAVA SL-314_01/10

Servlet的週期
他是執行在伺服器端的一段程式
其生命週期受到web伺服器的控制
生命週期包括載入程式,初始化,服務,
銷毀,移除5個部分

Servlet只執行一次
會有一個web.xml

/===============================================================/

1. 載入
web容器負責載入servlet,建立實作會進行web.xml佈署。

2. 初始化
會執行init()初始化物件,例如資料庫連接,讀取資源檔。//init初始化一次

3. 處理服務
當有請求時,呼叫service()方法常用的是doGet() or doPass(),透過ServletRequest接受請求
ServletRequest設定回應資訊。

4. 銷毀
呼叫destory(),釋放所占用的資源。

5. 移除
執行destory()後會被丟到GC,如果要再使用,則需要重新初始化init()。
//GC=>資源回收機制

/===============================================================/

伺服器跳躍
在Servlet沒有<jsp:forward>的跳躍指令
必須使用RequestDispatcher介面,他提位了以下兩種方法:

public void forward (ServletRequest request, ServletResponse response)throws ServletException,IOException

public void include( 同上)

/===============================================================/
MVC登入流程

2015年12月21日 星期一

JAVA SL-314_12/20

Date: 12/20
/================================================/

DAO(Data Access Object)資料存取物件
主要的功能是資料操作,屬於資料層的操作

client   →  JSP/Servlet  →  BO  →  DAO  →  Database
客戶層        顯示層          業務層     資料層       資源層

client →  B/S開發架構,大都以Browser進行存取
顯示層 → 以JSP/Servlet進行頁面效果的顯示
Business Object→ 將多個最小的DAO進行組合變成一個業務邏輯--> BO
DAO→ 提拱多個最小性的DAO操作,例如新增刪除、修改

/================================================/

DAO → 由以下幾個部分組成:

Database Connection → 負責資料庫的開啟與關閉 (xxx.dbc.DatabaseConnection)
VO → 主要是屬性,setter、getter方法組成,與欄位相對應,每一個VO的組成都對應到一條記錄 (like JavaBean)
DAO → 定義操作的介面,新增、刪除、修改、按ID查詢等 (xxx.dao.ImplDAO)
Impl → DAO介面的真實實歸類別,完成實際的資料庫操作不負責開啟和關閉(xxx.dao.xxxImplDAO)
Proxy →  代理實現類別,完成資料庫的開啟和關閉 (xxx.dao.xxxDAOProxy)
Factory → 工廠類別,透過他取得一個DAO產生的實體物件 (xxx.factor.DAOFactory)

/================================================/
組成: 註冊系統 --> 將資料存到架設好的mySQL建表
1. index.jsp、emp_list.jsp、insert_success.jsp
2. com.demo => DatabaseConnection.java、Emp.java、IEmpDAO.java、IEmpDAOImpl.java、EmpDAOProxy.java、DAOFactory.java
3. com.dome.dbc => DatabaseConnection.java、MySQLDatabaseConnection.java

2015年12月17日 星期四

JAVA SL-314_12/13

JAVA SL-314_12/13

Date: 12/13

/======================================================/

<jsp:useBean>
與 import 功能相同
<jsp:useBean id=”產生的實體物件” scope="儲存範圍" class=”套件.class name” />

※ scope => 表示這個物件的儲存範圍,一共有四個屬性: page, request, session, application

/======================================================/

<jsp: setProerty>
可以透過 * 的形式完成屬性的自動設定
一其有4種方法

自動比對: <jsp: setProperty name=”實體的名稱(id)” property=”*” />
指定屬性: <jsp: setProperty name=”實體的名稱(id)” property=”屬性明稱” />
指定參數: <jsp: setProperty name=”實體的名稱(id)” property=”屬性明稱” param=”參數名稱” />
指定內容: <jsp: setProperty name=”實體的名稱(id)” property=”屬性明稱” value=”內容” />

/======================================================/

2015年12月6日 星期日

JAVA SL-314_12/06

Date: 12/06

/========================================================/
session物件

session的用處就是完成使用者的login logout
等常見功能,每一個session都表示不同的存取
使用者,其為javax.servlet.http.HttpSesion介面
所產生的實體物件

HttpSession介面中存在以下4種屬性操作方法:
1. 設定屬性 public void patValue(String name, Object value)
2. 取得屬性 public Object getValue(String name)
3. 刪除屬性 public void removeValue(String name)
4. 取得全部性屬性名稱 public String[ ] getValueNames()
/========================================================/
※ 作業系統伺服器+web伺服器(mysql+tomcat)
web伺服器是用來解譯web程式語言

※ JSP是一個很嚴謹的程式語言,因此相對的比較不容易被駭客入侵。
/========================================================/

三種工程師——Coder, Hacker and Architect


三種工程師——Coder, Hacker and Architect


Reference:http://www.inside.com.tw/2015/01/13/coder-hacker-and-architect