成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

SAP成都研究院李三郎:SCP Application Router簡(jiǎn)介

summerpxy / 2353人閱讀

摘要:今天的文章來(lái)自李貝寧,成都研究院的資深程序猿和架構(gòu)師。是研究院內(nèi)部的教練,也是成都研究院若干內(nèi)部培訓(xùn)課程的講師。而李貝寧,在成都研究院三支分別使用和的開(kāi)發(fā)團(tuán)隊(duì)里都被任命為架構(gòu)師,技術(shù)的全面性不輸于史大郎。

今天的文章來(lái)自李貝寧(Ben),SAP成都研究院的資深程序猿和架構(gòu)師。

作為成都研究院里同時(shí)精通Java, JavaScript和ABAP這三門(mén)編程語(yǔ)言的數(shù)位同事之一,Ben曾經(jīng)先后擔(dān)任了成都CRM Fiori開(kāi)發(fā)團(tuán)隊(duì),S4CRM開(kāi)發(fā)團(tuán)隊(duì)和尚未發(fā)布的某款云產(chǎn)品開(kāi)發(fā)團(tuán)隊(duì)的架構(gòu)師。

Ben在這三個(gè)團(tuán)隊(duì)的職責(zé)都是產(chǎn)品架構(gòu)設(shè)計(jì)和部分功能代碼的編寫(xiě),以及組內(nèi)其他同事的代碼審查。

除了自身架構(gòu)設(shè)計(jì)和編程相關(guān)的技能過(guò)硬之外,Ben在傳業(yè)授道解惑方面也很有心得。Ben是SAP研究院內(nèi)部的Agile Software Enginnering教練,也是SAP成都研究院若干內(nèi)部培訓(xùn)課程的講師。他的課程幫助了很多剛剛走出大學(xué)校園的年輕同事們從在學(xué)校書(shū)寫(xiě)玩具代碼到走向真正的企業(yè)軟件開(kāi)發(fā)的專(zhuān)業(yè)之路。

每位同時(shí)精通數(shù)門(mén)風(fēng)格截然不同的編程語(yǔ)言的開(kāi)發(fā)人員,總有自己的一套心得和辦法,把這些語(yǔ)言融為一體,為自己所用。那么Ben又是如何做到的呢?或許可以從Ben的業(yè)余愛(ài)好看出點(diǎn)端倪。Ben喜歡足球和圍棋,并且水平在業(yè)余愛(ài)好者里不算太差。能同時(shí)駕馭這一動(dòng)一靜,一剛一柔,一陽(yáng)一陰的兩個(gè)愛(ài)好,除了Ben以外,我能想到的也就只有這幾位高手了:

1. 人到中年,把降龍十八掌練到超過(guò)洪七公造詣的大俠郭靖。

豈知郭靖近二十年來(lái)勤練九陰真經(jīng),初時(shí)真力還不顯露,數(shù)十招后,降龍十八掌的勁力忽強(qiáng)忽弱,忽吞忽吐,從至剛之中竟生出至柔的妙用,那已是洪七公當(dāng)年所領(lǐng)悟不到的神功?

2. 左手短刀,右手長(zhǎng)鞭的峨眉美女掌門(mén)周芷若。

周芷若取出軟鞭,右手一抖,鞭子登時(shí)卷成十多個(gè)大大小小的圈子,好看已極,左手翻處,青光閃動(dòng),露出了一柄短刀。群雄昨日已見(jiàn)識(shí)了她軟鞭的威力,不意她左手尚能同時(shí)用刀,一長(zhǎng)一短,一柔一剛,那是兩般截然相異的兵刃。群雄驚佩之下,精神都為之一振。

3.?天微星九紋龍史進(jìn)。

水滸傳里雖然有幾位武力值爆表的好漢,比如盧俊義,史文恭,林沖這些,但是書(shū)中他們從始至終都只使用一種武器。而史大郎在戰(zhàn)場(chǎng)上和別人拼命時(shí),曾先后使用了三種不同的武器,其中還包含中國(guó)古代武將很少有敢嘗試的高難度武器——流星錘。

史進(jìn)大怒道:“賊回子敢如此猖獗!”便輪著三尖兩刃四竅八環(huán)刀,直取蘭生。蘭生急舉獨(dú)足銅人,敵住史進(jìn)。兩下各顯武藝,奮勇大斗。

史進(jìn)換了一支點(diǎn)鋼丈八蛇矛,驟馬出來(lái)。哈蕓生見(jiàn)了,便挺著手中五股托天叉,一馬沖來(lái),直取史進(jìn)。二人也不打話(huà),兩馬相交,叉矛并舉,一來(lái)一去。只見(jiàn)史進(jìn)那枝矛,忽高忽低,忽前忽后,忽左沖,忽右掠,揮身上下,盡是一片矛影。

說(shuō)時(shí)遲,那時(shí)快,史進(jìn)早已手提流星錘,換了一匹高頭大馬,趕到陣前。蘭生飛起銅人打去,沙冕二人一齊攢上。史進(jìn)耍圓那顆流星錘,擋住三人。

書(shū)中提到的史大郎在八十萬(wàn)禁軍教頭王進(jìn)的指導(dǎo)下,十八般武藝樣樣精通,果然名不虛傳。

而李貝寧,在SAP成都研究院三支分別使用Java, JavaScript和ABAP的開(kāi)發(fā)團(tuán)隊(duì)里都被任命為架構(gòu)師,技術(shù)的全面性不輸于史大郎。

據(jù)我所知李貝寧喜歡的球星是被球迷冠以“拼命三郎”,“鐵人”稱(chēng)號(hào)的內(nèi)德維德,喜歡他在球場(chǎng)上不惜體力奔跑那種鐵血作風(fēng)。李貝寧希望自己在球場(chǎng)上也能做一個(gè)像內(nèi)德維德那樣的拼命三郎。

Jerry不是球迷,只知道咱歷史上也有一位拼命三郎:

作為一個(gè)八零后,Jerry幼年在這些卡片上沒(méi)少花錢(qián)。如果您有同樣的收藏愛(ài)好,歡迎后臺(tái)交流。

下面是李貝寧的正文。

*

大家好,我叫李貝寧,也可以叫我Ben, 目前在SAP成都研究院某云產(chǎn)品項(xiàng)目組擔(dān)任高級(jí)開(kāi)發(fā)工程師和架構(gòu)師。

我是09年加入SAP的, 之前在上海花旗集團(tuán)軟件中心做了4年銀行系統(tǒng)開(kāi)發(fā), 進(jìn)到SAP之后先在SAP上海研究院工作了兩年,于11年底轉(zhuǎn)到了SAP成都研究院直至現(xiàn)在,算起來(lái)在成都呆了快七年了。

除了編程之外,我還有兩個(gè)鐵打不動(dòng)的愛(ài)好,足球和圍棋,水平嘛分別算得上小區(qū)球星級(jí)和街道業(yè)余高手級(jí)... 我認(rèn)為這兩件事一個(gè)可以保持身體上的活力,一個(gè)可以保持頭腦上的活力,所以至今一直堅(jiān)持每周踢一場(chǎng)球和下幾盤(pán)棋的節(jié)奏,當(dāng)然同時(shí)也作為工作之余的放松。

*

這篇文章就SAP Hybris某款正在開(kāi)發(fā)的云產(chǎn)品在SAP云平臺(tái)上用到的一個(gè)組件Application Router(以下簡(jiǎn)稱(chēng)App Router)做一個(gè)介紹。

SCP App Router是SAP云平臺(tái)(以下簡(jiǎn)稱(chēng)SCP)上的核心模塊之一,作為獨(dú)立運(yùn)行在SCP Cloud Foundry環(huán)境中的一個(gè)應(yīng)用程序,它主要支持以下兩大核心功能:

反向代理:將外部請(qǐng)求分發(fā)給SCP Cloud Foundry環(huán)境內(nèi)不同的應(yīng)用程序。

安全集成:和SCP Cloud Foundry上的核心安全組件UAA無(wú)縫集成,提供了用戶(hù)認(rèn)證,會(huì)話(huà)管理等安全相關(guān)的功能。

說(shuō)到這里您也許馬上會(huì)想到Nginx,一款優(yōu)秀的開(kāi)源Web服務(wù)器,用來(lái)做類(lèi)似反向代理的功能。如果我的應(yīng)用程序想要用Nginx,可不可以呢?其實(shí)SCP并沒(méi)有限制只能用App Router——它是一個(gè)完全開(kāi)放的平臺(tái),您可以部署任意你想要的組件為應(yīng)用程序服務(wù),只是SAP在上面已經(jīng)提供了一系列的基礎(chǔ)設(shè)施組件,這套SAP原生組件之間提供了更佳的集成和協(xié)同,App Router就是其中之一。

理解App Router的技術(shù)選型

App Router是一個(gè)用Node.js構(gòu)建的標(biāo)準(zhǔn)的Web應(yīng)用。

眾所周知Node.js作為一門(mén)開(kāi)放的技術(shù)環(huán)境,在構(gòu)建基于HTTP的Web應(yīng)用上有先天的優(yōu)勢(shì):?簡(jiǎn)單,高效。并且Node.js經(jīng)過(guò)近幾年的快速迭代和發(fā)展,已經(jīng)非常成熟和穩(wěn)定,再加上開(kāi)源社區(qū)提供了豐富的庫(kù),Node.js已經(jīng)成為了服務(wù)器端強(qiáng)大的應(yīng)用開(kāi)發(fā)環(huán)境。SAP選擇Node.js作為其云戰(zhàn)略平臺(tái)上的核心組件的技術(shù)棧,從這個(gè)選擇我們也能看出SAP在云戰(zhàn)略上的思路是逐步走向開(kāi)放。

您或許會(huì)問(wèn),Node.js是單線(xiàn)程模型,根據(jù)上面的示例圖,所有對(duì)于部署在SCP Cloud Foundry上的后端訪(fǎng)問(wèn)都通過(guò)App Router,這會(huì)帶來(lái)性能問(wèn)題嗎?其實(shí)這是對(duì)于Node.js運(yùn)行時(shí)模型的一個(gè)誤解,參考一張Node.js的運(yùn)行時(shí)架構(gòu)圖:

Node.js對(duì)于應(yīng)用程序端只提供了單線(xiàn)程的編程模型,但是其底層的運(yùn)行架構(gòu)并非是單線(xiàn)程模型。在Node.js中各種HTTP訪(fǎng)問(wèn),數(shù)據(jù)庫(kù)的讀寫(xiě),文件IO的訪(fǎng)問(wèn)都是以異步的方式代理給了底層的V8引擎,主線(xiàn)程不會(huì)被阻塞,而底層V8引擎具備非常強(qiáng)大的并發(fā)處理能力,會(huì)迅速將各個(gè)事件并發(fā)的處理結(jié)果通過(guò)事件輪詢(xún)的方式返回給主線(xiàn)程。只要在Node.js的主線(xiàn)程中不做大量的CPU運(yùn)算(比如大規(guī)模業(yè)務(wù)邏輯運(yùn)算,科學(xué)計(jì)算等),這樣的Node.js應(yīng)用程序是可以具備良好的性能的。

而App Router恰好具有上述所說(shuō)的那些一典型特征:在用戶(hù)認(rèn)證中將識(shí)別用戶(hù)身份和權(quán)限的工作代理給Cloud Foundry UAA來(lái)做,業(yè)務(wù)請(qǐng)求轉(zhuǎn)發(fā)給各個(gè)獨(dú)立的部署Cloud Foundry應(yīng)用,自己僅僅做一些簡(jiǎn)單的HTTP參數(shù)的轉(zhuǎn)換和校驗(yàn),請(qǐng)求的轉(zhuǎn)發(fā),以及請(qǐng)求響應(yīng)的返回。

App Router上的routing(路由)

在A(yíng)pp Router上路由的實(shí)現(xiàn)是通過(guò)定義一系列destination來(lái)實(shí)現(xiàn)的,具體來(lái)說(shuō)就是在A(yíng)pp Router的xs-app.json中配置route和destination,以及在manifest.yml中配置對(duì)應(yīng)destination的url:

manifest.yml:

簡(jiǎn)單解釋一下主要的參數(shù):

Routes

source:可以是一個(gè)URL,也可以是一個(gè)正則表達(dá)式,定義了當(dāng)前的route是匹配什么樣的請(qǐng)求路徑

target:??當(dāng)前請(qǐng)求如何被重寫(xiě)到目標(biāo)地址

destination:?當(dāng)前請(qǐng)求路由到manifest中的哪個(gè)目標(biāo)地址

authenticationType:?有三種選擇,xsuaa, none和basic,xsuaa和none分別代表了是否對(duì)當(dāng)前請(qǐng)求在A(yíng)pp Router上做用戶(hù)安全認(rèn)證,下一節(jié)會(huì)具體介紹。Basic是和SAP HANA集成的時(shí)候提供默認(rèn)的安全驗(yàn)證支持。

Destination

Name:用來(lái)跟xs-app.json中的destination配置相匹配

URL:目標(biāo)應(yīng)用程序真實(shí)的Clould Foundry地址

ForwardAuthToken:??如果請(qǐng)求中帶有oauth token,是否將oauth token轉(zhuǎn)發(fā)給目標(biāo)應(yīng)用程序. App Router也支持oauth token的部分校驗(yàn)功能,所以用戶(hù)也可以根據(jù)具體情況選擇不轉(zhuǎn)發(fā)oauth?token,就在A(yíng)pp Router端校驗(yàn)

除了基本的路由功能,App Router還提供了豐富的Web應(yīng)用程序相關(guān)的功能支持,比如連接管理,session管理,擴(kuò)展http頭,跨域,Web Socket等等。?

App Router和SCP UAA的安全集成

如上一節(jié)提到的,App Router在路由的時(shí)候提供了用戶(hù)的安全認(rèn)證支持。將路由的Authentication Type配置為xsuaa,App Router則會(huì)檢查前端發(fā)過(guò)來(lái)的請(qǐng)求是否帶有合法的session。如果沒(méi)有,App Router會(huì)將用戶(hù)導(dǎo)向SCP UAA的用戶(hù)認(rèn)證界面,當(dāng)用戶(hù)重新認(rèn)證成功之后,會(huì)生成新的合法session,并將此session返回給前端應(yīng)用程序。

整個(gè)認(rèn)證的流程是是SCP App Router和SCP UAA協(xié)同完成的,SCP UAA是SAP對(duì)Cloud Foundry上提供的安全組件UAA (User Account and Authentication Service)的一個(gè)封裝,Cloud Foundry UAA是一個(gè)實(shí)現(xiàn)了標(biāo)準(zhǔn)Oauth 2.0協(xié)議的authorization server,SAP在此基礎(chǔ)上做了一些自定義的增強(qiáng),但是在接口上和原生的UAA保持了一致,這樣可以盡可能的對(duì)OAuth Client端程序提供兼容性。

Cloud Foundry UAA官方文檔:

https://docs.cloudfoundry.org...

SCP標(biāo)準(zhǔn)的OAuth2.0流程:

如果熟悉OAuth2.0協(xié)議,從這張流程圖上很快就能看出App Router和UAA之間是通過(guò)Authorization Code Grant Flow來(lái)交互的,在交互過(guò)程中它們分別充當(dāng)了OAuth Client和OAuth Server的角色。

關(guān)于OAuth2.0,請(qǐng)參見(jiàn):?https://oauth.net/2/

看到這里您也許會(huì)問(wèn),為什么不是前端瀏覽器作為OAuth Client?除了安全性的考慮,?App Router將OAuth流程對(duì)前端隱藏的另一個(gè)好處是,各種前端應(yīng)用程序不需要知道UAA上諸如Client ID, Client Secret的細(xì)節(jié),提供了更好的安全性。

其次還有SAP在產(chǎn)品層面的考量,為了其標(biāo)準(zhǔn)的產(chǎn)品在UI技術(shù)上的一致性,包括SCP上的產(chǎn)品在內(nèi)大多數(shù)都是基于SAP UI5來(lái)構(gòu)建前端UI,而UI5又是基于HTML5技術(shù)而來(lái),即這些產(chǎn)品都是基于瀏覽器的富客戶(hù)端應(yīng)用。如此一來(lái),在標(biāo)準(zhǔn)的App Router里面實(shí)現(xiàn)OAuth2.0流程可以使SAP的各種前端應(yīng)用并不需要關(guān)注認(rèn)證流程的細(xì)節(jié)。如上圖所示,App Router在完成了認(rèn)證流程并最終拿到token之后,并沒(méi)有將token返回給瀏覽器端,而是在A(yíng)pp Router上生成一個(gè)session,并且將session和token關(guān)聯(lián)起來(lái),App Router在這里起到一個(gè)中介者的角色,對(duì)于前端統(tǒng)一用session進(jìn)行交互,對(duì)于后端統(tǒng)一用token進(jìn)行交互。

SCP除了將標(biāo)準(zhǔn)的實(shí)現(xiàn)默認(rèn)支持瀏覽器端應(yīng)用程序外,作為一個(gè)開(kāi)放的平臺(tái),當(dāng)然也支持移動(dòng)端原生應(yīng)用程序的集成,這里不作贅述,具體細(xì)節(jié)可以參考SCP的開(kāi)發(fā)文檔。

App Router上的session管理

App Router上的session管理利用了Node.js的session-express框架,默認(rèn)將session緩存在instance memory中(下圖第79行):

然后采用session stickiness策略來(lái)保證在多實(shí)例部署的情況下,相同會(huì)話(huà)的請(qǐng)求會(huì)被發(fā)送到同一個(gè)實(shí)例上以保證會(huì)話(huà)能繼續(xù)進(jìn)行。

Session Stickiness:

https://stackoverflow.com/que...

這樣做的好處是既利用了instance memory的高性能,也可以在一定程度上保證高可靠性。不過(guò)代價(jià)是犧牲了動(dòng)態(tài)伸縮的能力,一旦某個(gè)App Router實(shí)例上還有正在使用中的session,這個(gè)實(shí)例就不能被關(guān)閉。

好在A(yíng)pp Router使用的是開(kāi)源的express-session框架,該框架并非只能將session存儲(chǔ)在instance memory中,在Node.js開(kāi)源社區(qū)已經(jīng)提供了多種express-session的外部存儲(chǔ)方案。至少在技術(shù)上,可以將App Router提供的instance memory存儲(chǔ)替換為外部存儲(chǔ),而不需要做太多的定制化開(kāi)發(fā),這樣一來(lái)多個(gè)App Router實(shí)例就可以共享同一套session存儲(chǔ)。

App Router的可擴(kuò)展性

只要說(shuō)到SAP的產(chǎn)品,extensibility是一個(gè)不可避免的話(huà)題,這是由SAP的業(yè)務(wù)是面向企業(yè)級(jí)客戶(hù)這一特質(zhì)決定的。SAP也一直致力于從平臺(tái)到框架,再到上層的產(chǎn)品,盡可能多的給SAP客戶(hù)提供良好的可擴(kuò)展性。App Router同樣也不例外,因?yàn)橹苯邮褂昧薔ode.js的connect框架,這是一款本身就提供了豐富擴(kuò)展的中間件框架,可以通過(guò)可插拔的方式對(duì)Node.js的請(qǐng)求和響應(yīng)提供過(guò)濾和攔截,具體大家可以參考connect的主頁(yè)。

App Router基于connect,當(dāng)然App Router的用戶(hù)就可以直接獲得connect提供的各種中間件,除此之外App Router還提供了自己的一些中間件:

是不是非常簡(jiǎn)單和直接?使用這些中間件而不需要修改原生App Router里面的代碼。

這里不再對(duì)App Router上的各種中間件一一贅述,具體細(xì)節(jié)可以參考App Router的Github文檔。

總結(jié)說(shuō)來(lái),App Router是一款設(shè)計(jì)簡(jiǎn)單,使用方便,提供了良好可擴(kuò)展性的反向代理組件,為廣大SAP用戶(hù)在SCP上開(kāi)發(fā)應(yīng)用程序提供了更多的選擇和方便。

感謝大家閱讀。

要獲取更多Jerry的原創(chuàng)技術(shù)文章,請(qǐng)關(guān)注微信公眾號(hào)"汪子熙"。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69193.html

相關(guān)文章

  • ABAP Netweaver, Hybris Commerce和SAP 云平臺(tái)的登錄認(rèn)證

    摘要:通過(guò)這個(gè)鏈接打開(kāi)對(duì)應(yīng)的幫助文檔,可以看到下列七種登錄手段。上圖的圖例描述了部署在云平臺(tái)環(huán)境上的應(yīng)用是如何通過(guò)訪(fǎng)問(wèn)系統(tǒng)上的服務(wù)。用戶(hù)完成登錄操作后,一個(gè)簡(jiǎn)稱(chēng)為被創(chuàng)建,發(fā)送給,并緩存于內(nèi)。將請(qǐng)求通過(guò)轉(zhuǎn)發(fā)給。 ABAP Netweaver 在事務(wù)碼SICF里選擇一個(gè)服務(wù),在明細(xì)頁(yè)面對(duì)Procedure字段點(diǎn)擊F1,查看Logon Procedure的幫助文檔。showImg(https://...

    blastz 評(píng)論0 收藏0
  • ABAP Netweaver, Hybris Commerce和SAP 云平臺(tái)的登錄認(rèn)證

    摘要:通過(guò)這個(gè)鏈接打開(kāi)對(duì)應(yīng)的幫助文檔,可以看到下列七種登錄手段。上圖的圖例描述了部署在云平臺(tái)環(huán)境上的應(yīng)用是如何通過(guò)訪(fǎng)問(wèn)系統(tǒng)上的服務(wù)。用戶(hù)完成登錄操作后,一個(gè)簡(jiǎn)稱(chēng)為被創(chuàng)建,發(fā)送給,并緩存于內(nèi)。將請(qǐng)求通過(guò)轉(zhuǎn)發(fā)給。 ABAP Netweaver 在事務(wù)碼SICF里選擇一個(gè)服務(wù),在明細(xì)頁(yè)面對(duì)Procedure字段點(diǎn)擊F1,查看Logon Procedure的幫助文檔。showImg(https://...

    yuanzhanghu 評(píng)論0 收藏0
  • 一個(gè)SAP顧問(wèn)在美國(guó)的這些年

    摘要:在美國(guó)除開(kāi)城市里的居民區(qū)道路,其他道路上基本默認(rèn)你可以超,超過(guò)這個(gè)數(shù)你得看警察當(dāng)天的心情了。警察基本只抓第一個(gè)帶頭超速的。一般來(lái)講美國(guó)的警察還是很公正很的。 珍重過(guò)去,你好明天 曾經(jīng)有人問(wèn)我,這些年在外面值嗎?值不值我很難去回答,我是失去很多,但我同樣得到了很多。失去的同時(shí)你一定是在得到的,相反得到的同時(shí)你一定也在失去著。所以我認(rèn)為沒(méi)有必要太過(guò)于糾結(jié)這種問(wèn)題,我們需要一直向前看。 即將...

    wyk1184 評(píng)論0 收藏0
  • 一個(gè)SAP顧問(wèn)在美國(guó)的這些年

    摘要:在美國(guó)除開(kāi)城市里的居民區(qū)道路,其他道路上基本默認(rèn)你可以超,超過(guò)這個(gè)數(shù)你得看警察當(dāng)天的心情了。警察基本只抓第一個(gè)帶頭超速的。一般來(lái)講美國(guó)的警察還是很公正很的。 珍重過(guò)去,你好明天 曾經(jīng)有人問(wèn)我,這些年在外面值嗎?值不值我很難去回答,我是失去很多,但我同樣得到了很多。失去的同時(shí)你一定是在得到的,相反得到的同時(shí)你一定也在失去著。所以我認(rèn)為沒(méi)有必要太過(guò)于糾結(jié)這種問(wèn)題,我們需要一直向前看。 即將...

    airborne007 評(píng)論0 收藏0
  • 一個(gè)SAP顧問(wèn)在美國(guó)的這些年

    摘要:在美國(guó)除開(kāi)城市里的居民區(qū)道路,其他道路上基本默認(rèn)你可以超,超過(guò)這個(gè)數(shù)你得看警察當(dāng)天的心情了。警察基本只抓第一個(gè)帶頭超速的。一般來(lái)講美國(guó)的警察還是很公正很的。 珍重過(guò)去,你好明天 曾經(jīng)有人問(wèn)我,這些年在外面值嗎?值不值我很難去回答,我是失去很多,但我同樣得到了很多。失去的同時(shí)你一定是在得到的,相反得到的同時(shí)你一定也在失去著。所以我認(rèn)為沒(méi)有必要太過(guò)于糾結(jié)這種問(wèn)題,我們需要一直向前看。 即將...

    Rainie 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<