亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: pacman2000
打印 上一主題 下一主題

一個程序員在AS400銀行核心系統(tǒng)開發(fā)中的技術(shù)總結(jié) [復制鏈接]

論壇徽章:
5
2015亞冠之阿爾艾因
日期:2015-08-10 02:23:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-08-13 06:20:002015七夕節(jié)徽章
日期:2015-08-21 11:06:1715-16賽季CBA聯(lián)賽之山西
日期:2016-04-13 02:36:59操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-04-14 06:20:00
11 [報告]
發(fā)表于 2015-07-03 01:04 |只看該作者
本帖最后由 pacman2000 于 2015-07-03 01:06 編輯

*性能加速之加載內(nèi)存

對于AS400系統(tǒng)來說,有一個提升性能的利器,利用系統(tǒng)的內(nèi)存加載技術(shù),將需要的表或者程序,預先加載到內(nèi)存中,使用的時候,大大提高了操作速度。

具體的使用上,系統(tǒng)提供的一個CL命令,SETOBJACC。以下是IBM官方資料《i5OS Commands》里關(guān)于這個命令的用法。
命令描述:
這個命令通過將對象加載到系統(tǒng)的內(nèi)存池或者從內(nèi)存池中去除,可以臨時性的改變操作對象的速度。如果選擇加載到一個有空余空間,并且沒有進程關(guān)聯(lián)的內(nèi)存池,那么對象可以一直在內(nèi)存池中保留。重復使用這個命令,可以將一系列對象加載到一個內(nèi)存池中。
參數(shù):
OBJ:必輸項,指定需要操作的對象。
OBJTYPE:可選項,可以是*FILE或者*PGM。
POOL:關(guān)聯(lián)的內(nèi)存池,第一項是內(nèi)存池名或者子系統(tǒng)名。如果是子系統(tǒng)名,第二項是子系統(tǒng)定義的內(nèi)存池編號。如果名字為*JOB,表示當前JOB使用的內(nèi)存池。如果名字為*PURGE,則從所有內(nèi)存池清除該對象。
MBR:要加載的FILE的MEMBER名,或者*FIRST表示第一個MEMBER。
MBRDATA:MEMBER要加載的內(nèi)容,可以是數(shù)據(jù),訪問路徑,或者兩個都加載。

要了解背后的原理,就得從AS400系統(tǒng)的內(nèi)存使用模式說起。AS400內(nèi)存使用機制,和現(xiàn)在linux系統(tǒng)的文件內(nèi)存緩存機制是差不多的。當用到執(zhí)行的程序和數(shù)據(jù)時,先要將文件系統(tǒng)上的對象,加載到內(nèi)存中,然后才能執(zhí)行。但是AS400系統(tǒng)的內(nèi)存是劃分若干內(nèi)存池管理的,系統(tǒng)預設了4個,分別是MACHINE,BASE,INTERACT,SPOOL,另外還可以定義共享內(nèi)存池SHRPOOL1到60,以及子系統(tǒng)私有內(nèi)存池,通過CL命令WRKSYSSTS可以看到系統(tǒng)各內(nèi)存池狀況。系統(tǒng)內(nèi)存池和共享內(nèi)存池是所有子系統(tǒng)共享使用,私有內(nèi)存池只供定義的子系統(tǒng)專用。在定義子系統(tǒng)描述時,可以指定子系統(tǒng)可使用的內(nèi)存池分配方案。而在子系統(tǒng)route定義時,又限定了job將使用的是子系統(tǒng)關(guān)聯(lián)的哪一個內(nèi)存池。于是,在job執(zhí)行時,就明確知道是與哪個內(nèi)存池交互。如果沒有SETOBJACC時,執(zhí)行程序或訪問數(shù)據(jù)文件,操作系統(tǒng)就會先判斷job內(nèi)存池內(nèi)是否已經(jīng)加載相應的PGM或MEMBER,沒有的話先從硬盤加載到job內(nèi)存池再使用,有的話直接使用。從而可以發(fā)現(xiàn),job第二次訪問文件比第一次要快很多。但是內(nèi)存池大小是有限的,如果內(nèi)存池剩余大小不夠加載時,就會把舊的對象清理出去,形成換頁。
那么,當使用了SETOBJACC時,又會發(fā)生什么呢?如果不是*PURGE,系統(tǒng)將對象提前加載進指定的內(nèi)存池,否則將對象從內(nèi)存池中清除。猜測系統(tǒng)會登記對象已加載的內(nèi)存池,當有讀取請求時,直接從內(nèi)存池中讀,當有寫請求時,內(nèi)存池和硬盤都會寫入。于是,大大加速了讀取性能(不用真的從硬盤讀入內(nèi)存池),也稍微加速了寫的性能(正常的寫,也首先要從硬盤加載進內(nèi)存池,再更新內(nèi)存池中的對象,最后從內(nèi)存池寫回硬盤,節(jié)省了第一步)。但是,如果SETOBJACC后由于內(nèi)存池的使用,導致對象被擠出,那么就起不到加速效果了,這對關(guān)聯(lián)了job的內(nèi)存池很常見。為了解決這個問題,可以用CHGSHRPOOL命令設置專門用于存放數(shù)據(jù)的共享內(nèi)存池,不與任何job關(guān)聯(lián),以保證對象不會擠出。

在核心系統(tǒng)中,我們對系統(tǒng)的數(shù)據(jù)表做了區(qū)分,以C開頭的為參數(shù)表,這部分會全部加載到共享內(nèi)存池中。下面是核心系統(tǒng)設置內(nèi)存池及使用的例子。
CHGSHRPOOL POOL(*SHRPOOL1) SIZE(8388608) ACTLVL(999) TEXT('核心系統(tǒng)內(nèi)存池')
CHGSHRPOOL POOL(*SHRPOOL2) SIZE(262144) ACTLVL(*DATA) TEXT('參數(shù)表加載內(nèi)存池')
設置2個共享內(nèi)存池,SHRPOOL1為核心系統(tǒng)job使用,大小8G,同時訪問數(shù)量為999。SHRPOOL2為參數(shù)表加載專用,大小為256M,建立后調(diào)用SETOBJACC將所有參數(shù)表加載進去。

CRTSBSD SBSD(XXXSYSCRE/XXXONLSBS) POOLS((1 *BASE) (2 *SHRPOOL1)) TEXT('聯(lián)機子系統(tǒng)描述')
CRTSBSD SBSD(XXXSYSCRE/XXXON2SBS) POOLS((1 *BASE) (2 *SHRPOOL1)) TEXT('聯(lián)機子系統(tǒng)描述')
CRTSBSD SBSD(XXXSYSCRE/XXXBATSBS) POOLS((1 *BASE) (2 *SHRPOOL1)) TEXT('批量子系統(tǒng)描述')
CRTSBSD SBSD(XXXSYSCRE/XXXAMBSBS) POOLS((1 *BASE) (2 *SHRPOOL1)) TEXT('異步子系統(tǒng)描述')
核心系統(tǒng)的各子系統(tǒng),可使用的內(nèi)存池為1-BASE,2-SHRPOOL1。job使用的通過下面指定。這里不能肯定是否要將SHRPOOL2關(guān)聯(lián)編號,才能起效果。有了解的請補充介紹。

ADDRTGE SBSD(XXXSYSCRE/XXXONLSBS) SEQNBR(10) CMPVAL(*ANY) PGM(QSYS/QCMD) CLS(XXXSYSCRE/XXXONLCLS) POOLID(2)
ADDRTGE SBSD(XXXSYSCRE/XXXON2SBS) SEQNBR(10) CMPVAL(*ANY) PGM(QSYS/QCMD) CLS(XXXSYSCRE/XXXON2CLS) POOLID(2)
ADDRTGE SBSD(XXXSYSCRE/XXXBATSBS) SEQNBR(10) CMPVAL(*ANY) PGM(QSYS/QCMD) CLS(XXXSYSCRE/XXXBATCLS) POOLID(2)
ADDRTGE SBSD(XXXSYSCRE/XXXAMBSBS) SEQNBR(10) CMPVAL(*ANY) PGM(QSYS/QCMD) CLS(XXXSYSCRE/XXXAMBCLS) POOLID(2)
定義了各子系統(tǒng)job執(zhí)行時,都會使用子系統(tǒng)2號內(nèi)存池,即SHRPOOL1。



下一集介紹性能加速的另一重要寫法--激活組。

論壇徽章:
0
12 [報告]
發(fā)表于 2015-07-04 13:00 |只看該作者
回復 11# pacman2000

期待樓主持續(xù)連載,激活組一直想用一直不清楚啊,大神加油
   

論壇徽章:
0
13 [報告]
發(fā)表于 2015-07-17 13:48 |只看該作者
唉,不要傷心了,哈哈哈,IBM自己也不搞了,哈哈哈。!

論壇徽章:
5
2015亞冠之阿爾艾因
日期:2015-08-10 02:23:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-08-13 06:20:002015七夕節(jié)徽章
日期:2015-08-21 11:06:1715-16賽季CBA聯(lián)賽之山西
日期:2016-04-13 02:36:59操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-04-14 06:20:00
14 [報告]
發(fā)表于 2015-07-27 02:51 |只看該作者
本帖最后由 pacman2000 于 2015-07-27 02:58 編輯

*激活組

隨著AS400的程序模型從OPM發(fā)展到ILE,寫法上有了巨大的提升。激活組的引入,作為ILE最重要的變化,影響到整個系統(tǒng)程序的組織和性能。可是目前,仍然有很多系統(tǒng),沿用著老式的OPM寫法和程序組織,沒有對激活組做好規(guī)劃,只是使用缺省激活組管理,從而失去了ILE激活組帶來的可控資源管理和性能提升,頗為可惜。因此,我介紹一下在Firebird核心系統(tǒng)中,對ILE激活組的使用方式,作為參考。更詳細的信息,可以查看IBM官方手冊的《ILE Concepts》文檔。

隨著從RPG升級到RPGLE,CL升級到CLLE,當前的程序,已經(jīng)都是ILE程序了。ILE程序的運行,首先要進行程序的激活。ILE通過激活組來管理程序的運行和靜態(tài)存儲區(qū)域。激活組是比job粒度更小的單位,不同job之間互不影響,即使不同job存在同名的激活組,系統(tǒng)也是分開獨立管理的。一旦程序加載進激活組激活,靜態(tài)存儲區(qū)域就會被初始化(包含F(xiàn)表文件的打開,D表定義的變量INZ初始化,以及執(zhí)行*INZSR過程)。如果程序沒有被激活組清除,并且激活組也沒有被刪除,那么下次運行程序時,將會直接用已加載的程序和存儲區(qū)域執(zhí)行。這時注意三點。一,已加載的程序不受文件系統(tǒng)上的程序目標更改的影響,即改變了程序目標,但執(zhí)行的仍是老代碼。二,F(xiàn)表打開的文件,以及訪問的文件位置,均會保留上次執(zhí)行結(jié)束時的狀態(tài),這個效果對性能加速非常有用。三,D表的INZ和*INZSR不會再次執(zhí)行,全局變量會保留上次執(zhí)行結(jié)束時的殘留值,因此程序在開始處需要執(zhí)行RESET(設置成初始化數(shù)據(jù)),或者CLEAR(根據(jù)數(shù)據(jù)類型清空內(nèi)容)。在實際使用中,程序不設置INZ和*INZSR,將所有獨立變量統(tǒng)一定義在D_VARS結(jié)構(gòu)下,在*ENTRY后,首先執(zhí)行CLEAR的動作。

ILE程序必須加載到激活組運行,而運行在哪個激活組,是在編譯程序時指定的。通過CRTPGM或者CRTSRVPGM命令,包括衍生的CRTBNDRPG,CRTBNDCL,CRTSQLRPGI,可以用DFTACTGRP和ACTGRP參數(shù)選擇激活組的屬性。可以選擇的方式有:DFTACTGRP默認為*YES,表示使用系統(tǒng)默認的激活組,系統(tǒng)默認激活組是不會被刪除的;DFTACTGRP為*NO,ACTGRP為*CALLER,表示與調(diào)用者在同一個激活組;DFTACTGRP為*NO,ACTGRP為*NEW,表示讓系統(tǒng)自動新增一個系統(tǒng)命名的激活組,系統(tǒng)保證激活組一定是與已有激活組不同的名字,因此一定是新建立;DFTACTGRP為*NO,ACTGRP為用戶自定義名稱,表示使用用戶命名的激活組,如果激活組不存在則建立,已存在則直接使用。
激活組可以解決一個很特殊的問題。我們知道有一種程序?qū)懛ń凶鲞f歸調(diào)用,即程序調(diào)用自身執(zhí)行。缺省情況下,這種調(diào)用AS400會報錯。這是因為程序調(diào)用自身時,激活組內(nèi)已經(jīng)存在一份正在運行的程序目標和存儲區(qū)域,未執(zhí)行完時必須保留,再調(diào)用自身時就產(chǎn)生了沖突。那么如何實現(xiàn)遞歸呢?我們可以把程序編譯成*NEW激活組,這樣調(diào)用自身也是在另外一份激活組內(nèi)加載獨立的目標和存儲區(qū)域,不會再報錯。
激活組是用來管理程序資源的,激活組刪除時程序資源會自動釋放。那么,激活組會出現(xiàn)哪些情況呢?RPG程序中的LR資源釋放指示器會產(chǎn)生什么影響呢?我們依次進行分析說明。
一,系統(tǒng)默認激活組是從不刪除的,一直到job結(jié)束,隨著job的釋放而釋放。因此,在默認激活組執(zhí)行的程序,有兩種方式釋放資源。第一種是在RPG程序中SETON LR指示器,那么在程序RETURN后就會被清理。第二種是不做SETON LR,加載的程序下次調(diào)用仍可使用,直到調(diào)用了RCLRSC命令。RCLRSC命令只對缺省激活組有效,調(diào)用后,在缺省激活組的已執(zhí)行結(jié)束但未釋放的程序,將被清理。
二,用*NEW系統(tǒng)自動建立的激活組,當建立程序執(zhí)行結(jié)束RETURN時,系統(tǒng)自動進行刪除激活組,也就自動釋放所有組內(nèi)程序資源,因此不需要程序設置LR。
三,用ACTGRP指定用戶自定義名稱的激活組,不會自動刪除,當組內(nèi)所有程序均不在運行狀態(tài)時,使用RCLACTGRP命令,指定名稱或者ACTGRP(*ELIGIBLE)刪除。刪除后,釋放所有組內(nèi)程序資源。既然使用了自定義的激活組,就是為了利用激活組的性能加速,因此我們也不用再設置LR了。

充分使用激活組的功能,對應用系統(tǒng)有著重要的意義。在核心系統(tǒng)中,聯(lián)機和批處理主控程序運行于*NEW激活組,交易程序運行于CORE激活組,交易調(diào)用的各級模塊程序均指定為*CALLER,可以由主控控制何時執(zhí)行RCLACTGRP。
首先,可以用激活組的目標加載,實現(xiàn)應用程序版本更新。程序上線時,更新了新的目標,不會對已經(jīng)調(diào)用過此目標的job產(chǎn)生影響,而只要觸發(fā)主控的激活組回收,即可實現(xiàn)新目標的運行切換。
其次,保留的程序資源,可以實現(xiàn)極大的性能加速。批處理往往是循環(huán)重復調(diào)用模塊組件訪問相同的表,節(jié)省了文件的打開關(guān)閉動作,加速效果非常顯著。聯(lián)機交易結(jié)合同一環(huán)境啟用多套聯(lián)機主控子系統(tǒng)的支持,一樣能達到很好的效果。銀行交易有特殊性,交易量排名前幾的交易,往往占比很大,因此考慮對這些交易各自啟動專用主控子系統(tǒng),就可以達到同樣的交易程序重復執(zhí)行最大加速的效果。

曾幾何時,RPG程序開發(fā)規(guī)范上,寫著在RETURN前必須SETON LR指示器。而現(xiàn)在,到了拋棄指示器,擁抱ILE新環(huán)境的時候了。

論壇徽章:
0
15 [報告]
發(fā)表于 2015-08-06 16:05 |只看該作者
“隨著國家的自主安全可控號召,AS400系統(tǒng)看來在銀行IT逐漸退出了。”   --- AS400要從銀行退出了???

論壇徽章:
5
2015亞冠之阿爾艾因
日期:2015-08-10 02:23:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-08-13 06:20:002015七夕節(jié)徽章
日期:2015-08-21 11:06:1715-16賽季CBA聯(lián)賽之山西
日期:2016-04-13 02:36:59操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-04-14 06:20:00
16 [報告]
發(fā)表于 2015-08-07 21:49 |只看該作者
iCloud400 發(fā)表于 2015-08-06 16:05
“隨著國家的自主安全可控號召,AS400系統(tǒng)看來在銀行IT逐漸退出了。”   --- AS400要從銀行退出了???



差不多,雖然老系統(tǒng)還在用,但換系統(tǒng)的話都在考慮換平臺了。

論壇徽章:
5
2015亞冠之阿爾艾因
日期:2015-08-10 02:23:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-08-13 06:20:002015七夕節(jié)徽章
日期:2015-08-21 11:06:1715-16賽季CBA聯(lián)賽之山西
日期:2016-04-13 02:36:59操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-04-14 06:20:00
17 [報告]
發(fā)表于 2015-08-10 02:21 |只看該作者
本帖最后由 pacman2000 于 2015-08-10 02:23 編輯

*性能加速之批處理事務提交

在核心系統(tǒng)中,對性能要求最高的,就是批處理程序了。那么,對批處理提升性能,有哪些技術(shù)方法呢?下面介紹一下在Firebird系統(tǒng)中的做法。

首先,前面介紹的SETOBJACC加載內(nèi)存,同樣適用于批處理。除了與聯(lián)機處理一樣,加載系統(tǒng)參數(shù)表外,還可以新開一個專用SHRPOOL,加載批處理中會重復用到的表,然后在批處理結(jié)束后釋放這個SHRPOOL。
其次,激活組的加速也能起到很大效果。批處理程序同樣由總控調(diào)度任務,每個任務再按照分段不分段,啟動不同的job執(zhí)行。每一個job都是多次循環(huán)處理相同的程序邏輯,操作相同的表,恰好是激活組最能發(fā)揮作用的場景。按照系統(tǒng)的規(guī)劃,交易程序使用命名激活組CORE,各模塊組件使用激活組*CALLER,批處理也遵循這一規(guī)則即可,完美達到模塊組件重用的效果。
然而本次主要介紹的,是另外一種性能加速的方法。我們知道批處理程序耗時最多的,是在數(shù)據(jù)表文件的操作和事務日志處理上。由于數(shù)據(jù)庫事務的ACID特性,因此每次事務處理都會落實到磁盤的寫JRN日志記錄上。如果去翻看關(guān)聯(lián)的JRN文件記錄,會發(fā)現(xiàn)里面記錄的內(nèi)容非常多,通常包含開始事務,打開關(guān)閉文件,讀寫文件記錄數(shù)據(jù),事務提交或者回滾等。如果每條日志記錄產(chǎn)生時都寫磁盤,顯然性能就會受到影響。于是,在這方面就有了優(yōu)化的空間。

我們先看看STRJRNPF的參數(shù)能調(diào)整什么。STRJRNPF有幾個選項,一個是IMAGES,如果是*AFTER,則在記錄變更時只在JRN中登記變更后數(shù)據(jù),如果是*BOTH,那么變更時會登記BEFORE和AFTER兩條數(shù)據(jù)。另一個是OMTJRNE,如果是*OPNCLO,表示省略掉打開關(guān)閉文件的記錄不登記。通過這兩個選項,在把PF加進事務處理,可以稍微省一點事務日志產(chǎn)生的數(shù)量。然后我們再看看CRTJRN或者CHGJRN的一個選項,JRNCACHE選擇*YES。這個選項可以讓事務日志累積在內(nèi)存CACHE中,再成批寫進磁盤。但是值得注意的是,IBM官方文檔沒有說明,這個CACHE仍然需要保證數(shù)據(jù)庫事務的ACID性質(zhì),因此只能對事務緩存到COMMIT或者ROLLBACK為止。對于批處理循環(huán)每筆COMMIT來說,其實并沒有想象中那么好的提升效果。那有沒有其他辦法呢?有,而且是一個有爭議的大招,叫做soft commit。具體做法是,設置環(huán)境變量,ADDENVVAR ENVVAR(QIBM_TN_COMMIT_DURABLE) VALUE(*NO)。當這個環(huán)境變量與JRNCACHE同時使用時,事務日志的CACHE將不顧COMMIT和ROLLBACK一直緩存,直到緩存滿后才一次性寫入磁盤。用這樣的方法,大大減少了寫磁盤的次數(shù)。但是這是有爭議的,即要承受風險,如果系統(tǒng)崩潰或者斷電導致緩存丟失,那么未寫入磁盤的已完成事務將永久丟失,造成數(shù)據(jù)丟失的嚴重后果。以銀行系統(tǒng)來說,恐怕這種風險是很難接受的。

操作系統(tǒng)提供的技術(shù)方法,沒有找到其他手段了。但是,作為應用系統(tǒng),可以調(diào)整應用程序的設計,達到既能加速,又不會丟失數(shù)據(jù)的效果。既然通過JRNCACHE緩存一筆COMMIT事務還是比較有保障的,那批處理程序可以循環(huán)若干條再做一次COMMIT提交,使CACHE的日志數(shù)量盡可能接近填滿CACHE大小?墒沁@種批量方式有一個缺陷,當一批若干條中有一條出現(xiàn)錯誤導致事務需要回滾,那么同一批內(nèi)其他成功記錄都會受影響被回滾。這必須得想辦法克服?紤]過每一筆設置SAVEPOINT,發(fā)生錯誤回滾到上個SAVEPOINT,但SAVEPOINT性能損失的代價很大,小概率才會發(fā)生的錯誤導致所有正常處理也要付出代價,得不償失。思考良久之后,最終通過調(diào)整批處理程序的寫法達到效果。
批處理程序的機制先要支持斷點續(xù)跑。即每段事務中,都記錄目前已處理到的位置。這樣當發(fā)生錯誤ROLLBACK,主控重新調(diào)起任務時,程序會定位到上次成功的位置后開始接著執(zhí)行。這個不難實現(xiàn),大多數(shù)現(xiàn)有系統(tǒng)也都支持。單筆事務處理的程序沒有問題,但為了性能使用多筆一次事務提交時,就需要改變寫法了。程序開始時處于多筆模式,記錄好起始位置和一批數(shù)量,先按多筆方式正常處理。當某一批中出現(xiàn)錯誤時,整批事務回滾,并切換成單筆模式,從本批開始的位置重新執(zhí)行,當本批數(shù)量的記錄處理完需要進入下一批時,重新切回多筆模式正常執(zhí)行。即出現(xiàn)錯誤的這一小段單筆執(zhí)行,過了這一段又多筆執(zhí)行,從而達到性能加速和控制錯誤粒度的完美結(jié)合。

通過最近幾篇介紹的方法,F(xiàn)irebird系統(tǒng)性能相對現(xiàn)有系統(tǒng),不論是聯(lián)機交易還是批處理交易,都有好幾倍的提升,效果十分顯著。性能部分就告一段落了,再下來會介紹程序上用到的新寫法,敬請期待。

論壇徽章:
0
18 [報告]
發(fā)表于 2015-08-12 16:49 |只看該作者
開放平臺和分布式總歸是趨勢的,過去的經(jīng)歷總是難忘,能與400結(jié)緣或是命中注定,正所謂英雄不提當年之勇,往前看吧

論壇徽章:
5
2015亞冠之阿爾艾因
日期:2015-08-10 02:23:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-08-13 06:20:002015七夕節(jié)徽章
日期:2015-08-21 11:06:1715-16賽季CBA聯(lián)賽之山西
日期:2016-04-13 02:36:59操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-04-14 06:20:00
19 [報告]
發(fā)表于 2015-08-13 08:23 來自手機 |只看該作者
且行且珍惜,哈哈

論壇徽章:
1
操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-02-18 06:20:00
20 [報告]
發(fā)表于 2015-08-19 17:45 |只看該作者
然并卵……
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP