1,平台的伺服器整體架構
2,專案結構
3,業務結構
4,技術實現
5,業務舉例
登入頁:
登入:
其它的服務只是業務不同,這裡省略...
6,應用的啟動過程資源準備
7,json的封裝
8,cookie域的演算法
//構造cookie
final long time = system.currenttimemillis();
string userid = string.valueof(uid);
string userinfo = userid + "," + username + "," + time;
string u = base64.encode(userinfo + "," +
builduserinfosign(string.valueof(userid), username, string.valueof(time)));
u = urlencoder.encode(u, "utf-8");
string key = urlencoder.encode(base64.encode("userinfo"), "utf-8");
cookie cookie = new cookie(key, u);
//構造cookie加密部分
public static string builduserinfosign(string id, string name, string time) catch (exception e) ", e.getmessage());
if (cookies != null && cookies.length > 0) catch (exception e) ", e.getmessage());
string val = value.split(",");
string sign = builduserinfosign(val[0], val[1], val[2]);
if (!strings.isnullorempty(sign) && !strings.isnullorempty(val[3]) && sign.equals(val[3])) else
return "";
9,http的理解和封裝
裡面加了乙個對自定以的註解的過濾;
protected boolean filters(final headlessservletrequest request, final headlessservletresponse response) throws servletexception, ioexception finally {
if (!flag) {
response.sendinvalidparameters();
10,db設計
11,老平台小結
老平台採用的架構很簡單,乙個guice+servlet,簡單的把乙個url對映到乙個特定的servlet,
這裡借用guice-servlet,省去了原生的servlet配置檔案複雜的嫌疑,簡單的使用guice容器,
把所需資源按照分類和層級一一放到容器中初始化,簡化了例項化的過程,提高了效率;業
務也不複雜,很容易從其它的遊戲平台移植過來,業務的技術難點有兩個,乙個是跟其它服
務器的互動和通訊,另外乙個是快取的使用;對於跟其它伺服器的互動,主要是基於http
請求,如果對這一部分比較熟悉,只要文件給的比較規範,開發和除錯起來還是完全沒有問
題的;然後是快取的問題,這裡主要使用的redis,乙個key-value資料庫,通過把經常用的
資料從db中查詢出來,放到redis裡面,需要的時候從redis裡面取得,這大大提公升了效能,
如果redis不穩定,可以直接從db裡取得,保證了程式的健壯性;暫未進行過併發性測試,
目前能支撐2000w使用者的使用已經算是乙個還不錯的架構。
VCL已死,RAD已死 2
vcl已死,rad已死 sd2c中未能盡言的話題 上一節 二 分層,真的改變了你的思想了嗎?分層思想提出來了 這在作業系統的設計上可以上溯到上個世紀50年代,但在應用軟體開發上 卻並不太久。乙個比較穩定的分層系統是 互動 業務和資料 三層,當然,與實際需要相關的 還有更多層 更多更多層。分層沒有什麼...
VCL已死,RAD已死 2
vcl已死,rad已死 sd2c中未能盡言的話題 上一節 二 分層,真的改變了你的思想了嗎?分層思想提出來了 這在作業系統的設計上可以上溯到上個世紀50年代,但在應用軟體開發上 卻並不太久。乙個比較穩定的分層系統是 互動 業務和資料 三層,當然,與實際需要相關的 還有更多層 更多更多層。分層沒有什麼...
差點被OptGroup整死
正常的optgroup是這樣子的。js構造時,使用 var select1 document.getelementbyid select1 select1.options.add new option option1 1 select1.options.add new option option2 ...