日韩精品亚洲精品中文字幕乱伦AV|曰韩区二区三区日韩中文字幕五码|ady99久久人人看人人摸人人|动漫一区二区黄99精品视频在线|AV片在线观看亚洲中文国产精品|伦乱在线VA欧美性爱一二区|亚洲无码mv91热色视频|激情六月综合欧美精品中文

當前位置:首頁 > 軟件開放 > 正文內容

怎么看懂java代碼電子書下載(怎么看懂java代碼電子書下載的文件)

軟件開放2年前 (2023-01-30)883

本篇文章給大家談談怎么看懂java代碼電子書下載,以及怎么看懂java代碼電子書下載的文件對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。

本文目錄一覽:

求一份完整的java自學學習方法?

java自學網Java從入門到精通(第3版)PDF電子書.zip? ?免費下載

鏈接:? ?

提取碼: wut5

?Java是一門面向對象的編程語言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優(yōu)雅的思維方式進行復雜的編程。 ?

怎么讀懂JAVA和C++代碼??

簡介

我聽很多人和我說他們擅長C++或Java但是完全搞不懂Smalltalk。按他們的說法Smalltalk有若天書!我想了一下,覺得他們說的或許非常在理。假如我只懂Java,如果我從多年以來寫的代碼里隨便挑一段我肯定看不懂它。在理解Smalltalk之前必須要澄清一些很簡單的概念連帶一些細微詭異的語法概念。要是“老王不懂Smalltalk”,也許我能對他的狀況進行改善。我希望能讓讀者快速上手。我假設讀者懂面向對象編程。如果你已經會Smalltalk了就請恕我班門弄斧一下。

噢詞法細節(jié)真簡單

初讀 Smalltalk遇見的一些協定和慣用法細節(jié)可能與其它語言大相徑庭從而把你搞暈,像雙引號括注釋,單引號括字符串,還有字符的特殊語法表示(例:$x代表“x”)。還有symbol的概念,symbol是在內存中僅有唯一實例的字符串;例如,當一個symbol被構造時(通常是編譯期),先從內存里查找是否相同的實例,如果有則直接使用。這樣做目的不是節(jié)省內存而是優(yōu)化比較效率(下文詳述):

"this is a comment"

'this is a string'

#'this is a symbol'

#thisIsASymbolToo

賦值和比較運算符有細微差別:

:= // 賦值

= // 內容相等比較,深比較

== // 唯一性比較,淺比較

如果你給我兩個被不同變量“a”和“b”引用的不同對象,我就能告訴你它們是不是相同對象(通過a == b進行)或者只是看起來相同的不同對象(通過a = b進行)。直白的說,==比較兩個指針而=比較對象的整個內容。

Smalltalk中很少出現逗號,因為它不充當語法要素。這就是為什么數組直接明了,例如下面沒有冗余逗號的數組:

#(1 2 3 4 5)

盡管如此逗號還是有意義的,它是一個運算符。你偶爾能看到它被用來連接兩個字符串,例如:

'string1','string2'

關鍵字無孔不入

在Smalltalk中關鍵字無處不在。但它們有益于可讀性而不是擾亂。想知道為什么,讓我們從一個C++和Java片斷入手。例如你可能對下面的寫法再熟悉不過了:

t-rotate(a, v); // C++

t.rotate(a, v); // Java

t對象被夾帶著參數a和v發(fā)送了rotate消息。讀者想理解這樣的代碼通常需要找到變量的聲明處并判斷出類型。我們假定聲明如下:

Transformation t;

float a;

Vector v;

在Smalltalk中變量可以引用任意類型的對象。所以類型說明不需要,但是我們還是要聲明一下變量,例如:

|t a v|

在不看聲明的情況下,好的Smalltalk程序員會通過變量顧名思義判斷其類型。那么我們換一種寫法如下:

|aTransformation angle aVector|

但請允許我繼續(xù)沿用最初的短命名來避免示例代碼太長影響閱讀。我們來通過去除不必要的因素來“改進”C++和Java的語法。例如,下面的代碼仍然明了:

t.rotate(a, v); // 原始寫法

t rotate(a, v); // 誰需要點號?

t rotate a, v; // 誰需要括號?

為了進一步改進語法我們需要知道參數a和v代表什么。我們假定整個示例意為“繞向量v旋轉角度a(譯注:rotate by angle a around vector v)”。則進一步改進為:

t rotate by a around v; // 誰需要逗號?

我們能明確每個成分是什么嗎?沒問題,因為在我們改進的這個示例中,“t”是一個變量,“rotate”是方法名,“by”是分隔符,“a”是變量,“around”是分隔符,最后的“v”也是一個變量。為了消除潛在歧義我們設立一個規(guī)定:分隔符后面緊跟一個冒號。我們得到:

t rotate by: a around: v; // 誰需要模棱兩可?

最后我們強調一下分隔符是方法名的一部分;例如我們假定需要一個形如“rotate by: around:”的函數,去掉空格我們得到“rotateby: around”作為最終命名,再將非首單詞首字母大寫來提高可讀性得到“rotateBy: around”。那么我們的示例可以寫為:

t rotateBy: a around: v // 這才是Smalltalk

方法名被打碎成幾部分。幸運的是聚攏這些碎片成一個完整的名字很容易。當在類中時我們如下定義方法名:

self rotateBy: angle around: vector

|result|

result := COMPUTE ANSWER.

^result

在運行時,“t”和“self”,“a”和“angle”,“v”和“vector”之間有著一對一的關系。注意“^”意味著結果被返回了;這是 Smalltalk中“return”關鍵字的寫法。變量“self”是“this”的同意字,如果方法結束沒有返回語句則“^self”被當作隱含語句執(zhí)行;你可能完結一個方法時忘記添加返回語句,但沒事。這也意味著即使消息發(fā)送者不需要返回值,方法也會返回它。

實際上被慣用的地道Smalltalk語法要求“self”不顯式的出現在方法頭(但必隱含),例如:

rotateBy: angle around: vector

|result|

result := COMPUTE ANSWER.

^result

關鍵字語法的精妙之處在于我們可以為不同的方法定義不同的關鍵字。例如我們可以如下定義第二個方法:

t rotateAround: vector by: angle

不必死記硬背參數順序。關鍵字提示我們順序。當然程序員有濫用關鍵字的能力,例如如果我們如下定義關鍵字:

t rotate: angle and: vector

讀者很難弄清參數正確的順序。這就是個極差的編程風格,如果只有一個參數還好辦。只有一個參數時我們仍然需要方法名;例如:

t rotateAroundXBy: angle

t rotateAroundYBy: angle

我們希望關鍵字(因冒號而易區(qū)分)成為參數的說明。但方法沒有參數時怎么辦:

t makeIdentity: // 結尾的冒號有意義嗎?

如果關鍵字代表參數的說明,那我們在沒有參數的情況就用不到關鍵字。所以零參數的消息應為:

t makeIdentity // 這才是Smalltalk

當然二元操作符同理,但一元操作符(makeIdentity是一元消息但不是一元操作符)并非如此。當多種消息一起出現時我們的表達式也許形如:

a negative | (b between: c and: d)

ifTrue: [a := c negated]

作為讀者應該知道“a”被發(fā)送了一個返回true或者false的名為“negative”(零參數)的消息;“b”也被發(fā)送了一個返回true或者 false的為“between: c and: d”的消息。兩項的結果or到一起成為消息“ifTrue: [a := c negated]”的接收者。這就是if-then控制結構的地道寫法而不是特殊語法。僅是以布爾值作為接收者,以“ifTrue”作為關鍵字,并且以“[a := c negated]”(我們稱其block)作為參數的標準關鍵字語法。在Smalltalk中你永遠遇不到“a := -c”因為不存在一元操作符,但你會看到“-5”這種常量,“-”在此充當常量的一部分。

所以如果你看到形如“-3.5 negated truncated factorial”的表達式時應該立即意識到這其中沒有關鍵字。所以“-3.5”必定是被發(fā)送了“negated”消息;執(zhí)行結果3.5被發(fā)送了“truncated”消息;然后執(zhí)行結果3被發(fā)送了“factorial”,產生最終結果6。

當然,還有諸如運算優(yōu)先級的規(guī)則(從左到右),消息優(yōu)先級(零參數最高,二元運算次之,最后關鍵字)。寫代碼時這些很重要,但讀代碼不必刻意在意這些細節(jié)。如下從左到右的表達式:

1 + 2 * 3 得 9

沒有優(yōu)先級,但是你很難遇到有Smalltalk程序員這么寫表達式,因為這會迷惑非Smalltalk讀者。一般Smalltalk程序員使用如下替代寫法:

(1 + 2) * 3

即使括號是沒必要的。

分號和句號不同

大多數非Smalltalk程序員把分號當成語句結束的標識,但在Smalltalk中使用句號表達此意。所以我們不會寫:

account deposit: 100 dollars;

collection add: transformation;

而是寫成:

account deposit: 100 dollars.

collection add: transformation.

嗯!“dollars” 消息迷惑你了嗎?不要覺得不可思議。此處必有一個在Integer類中構造一個“Dollar”對象并返回它的名為“dollars”的方法。它不是 Smalltalk標準環(huán)境中的但是我們可以擴充它?;▋冉ǎ╊惪梢栽谛枰獣r像用戶自定義類那樣被擴充。

所以,句號是語句終止符號而且在最后一條語句中是可選的(如果你愿意,可以把它當成語句終止符)。但分號仍然是合法的特殊分隔符(不是終止符)。它被用來指定接收者是可縮略的。所以,如下寫法:

|p|

p := Client new.

p name: 'Jack'.

p age: 32.

p address: 'Earth'.

可以寫為:

|p|

p := Client new.

p

name: 'Jack';

age: 32;

address: 'Earth'.

或者更好的寫法:

|p|

p := Client new

name: 'Jack';

age: 32;

address: 'Earth'.

Smalltalk對排版不敏感。我們甚至可以把所有語句放到同一行中。本質上講分號指定前一個消息被發(fā)送用來修改接收者,并且下一個消息應當被發(fā)送給相同的接收者(而不是被發(fā)送到被忽略拋棄的運算結果)。

最后的例子中,“new”被發(fā)送給一個類以獲得實例(運算結果)。然后“name: 'Jack'”被發(fā)送給那個實例。第一個分號指定“name: 'Jack'”的結果被忽略,“age: 32”應被發(fā)送給之前的接收者(相同的那個實例)。第二個分號指定“age: 32”的結果被忽略,“address: 'Earth'”應被發(fā)送給之前的接收者(仍然是那個相同的實例)。最后“address: 'Earth'”的運算結果被賦值給p。修改接收者的方法通常返回接收者本身,所以p被綁定到最近修改的Client實例上。

我們可以通過用英文詞組“AND ALSO”取代分號來簡化上面的賦值。即“new”被發(fā)送給類“Client”,并且結果實例被發(fā)送了“name: 'Jack'” AND ALSO “age: 32” AND ALSO “address: 'Earth'”消息。重復的向相同接收者發(fā)送不同的消息在Smalltalk中被稱為層疊(譯注:cascading)。分號也可以出現在子表達式中,如“p := (Client new name: 'Jack'; age: 32; address: 'Earth')”——注意圓括號。

Get/Set方法與變量實例同名

在Smalltalk中諸如name,age,address這樣的Client類實例的成員變量都是private的。但可以通過實現一定的方法訪問它們。例如在C++(Java類似)中,我們經常寫出如下訪問方法(通常被稱為get/set方法):

long getAge() { return age; }

void setAge(long newAge) { age = newAge; }

如果你在大把的類上應用這種方式,你將寫出成百個以get和set開頭的消息。如果你偶然決定通過使用精簡的命名來簡化這些方法(稍后寫出),即便Java編譯器能做出正確識別,也會給C++編譯器造成解析混亂,因為它無法區(qū)分變量和方法:

long age() { return age; }

void age(long newAge) { age = newAge; }

你能區(qū)分變量“age”和消息“age”嗎?理應區(qū)分。當你使用消息時需要帶上圓括號如“age()或age(22)”;當你使用變量時就不必帶上圓括號。Smalltalk中的等價寫法為:

age ^age

age: newAge age := newAge

我們通常使用如下分行寫法來提高可讀性:

age

^age

age: newAge

age := newAge

在Smalltalk中你不必依賴圓括號就能輕松區(qū)分變量和消息。如果你對它們的區(qū)別很明了,就能看出下面的表達式有多少個變量:

age age age: age age + age age

嗯!答案是3個;第一個和第四個age必為變量(緊跟關鍵字的子表達式和所有表達式必以一個變量開頭),第七個也必為變量(二元操作符后的子表達式也必以一個變量開頭)。再看一個更明顯的類似的典型例子:

name size // name必為變量

self name // name必為變量

廣泛使用的集合

在Smalltalk中使用最普遍的兩種集合分別是有序集合(ordered collection)和字典(dictionary)。數組的概念等效于大小不可變的有序集合。

|a b|

a := OrderedCollection new

add: #red;

add: #green;

yourself.

b := Dictionary new

at: #red put: #rouge;

at: #green put: #vert;

yourself.

上面的每個賦值中變量都被綁定到最后一條消息的執(zhí)行結果上;例如“yourself”的結果就是最后一次創(chuàng)建的集合?!皔ourself”消息被設計成返回消息接收者(像個無運算操作)但“add:”和“at: put:”并非如此(它們返回最后一個參數)。所以如果沒有“yourself”就成了“a”綁定到“#green”,“b”綁定到“#vert”。

我故意使用層疊寫法來解釋“yourself”為什么獨立的出現在內建類的方法中。

Smalltalk中集合的優(yōu)勢是你可以存任意類型的對象進去。即使是字典中的鍵都可以使任意類型;同一集合中的對象也可以是不同類型。我們不必為了在一個實例中聚集一批新的類型而重新發(fā)明新的集合類型。

可以像訪問數組一樣訪問有序集合;例如“a at: 1”索引到元素1。字典也能用相同的方式訪問;例如“b at: #red”。但很多應用場合我們不必關心鍵。如此這般,元素迭代循環(huán)很容易:

a do: [:item |

USE item FOR SOMETHING].

b do: [:item |

USE item FOR SOMETHING].

即便集合中的元素是不同類型的,“item”變量也會一個接一個的獲取到每一個元素。如果需要我們能在運行時知道一個對象是什么可以寫成“item isKindOf: Boat”,它返回true或false。同時還有許多特殊類型查詢消息,像“item isCollection”或“item isNumber”。更進一步還有很多創(chuàng)建新的集合的循環(huán)構造消息如:

c := clients select: [:client | client netWorth 500000].

d := clients collect: [:client | client name].

上例中前者我們得到大款客戶的集合。后者我們獲得客戶名字的集合(原始集合是一堆客戶的集合)。

有序抽象無需新類的構建

讀者經??吹饺缦麓a:

stuff value: x value: y value: z

此處關鍵字全是“value:”。對一個非Smalltalk程序員來說這樣寫毫無意義混亂不堪。程序員在此已經(而且經常)創(chuàng)建新的抽象。

讓我來解釋一下僅有Smalltalk支持的特性。還以我們已經多次介紹的Client類為例,假設我們有一個遍歷某個客戶所有部分的簡單需求;例如我們想先遍歷到name,然后是age,最后是address。

C++ 和Java對此需求的慣例解決方案是創(chuàng)建一個新的特殊流化(stream)類或枚舉器(enumerator)類,也許叫ClientIterator,它帶有初始化、判斷是否迭代結束、如果未結束迭代下一個對象的迭代器等方法。利用這些方法我們就能寫一個循環(huán)初始化迭代器,獲取下一個對象并處理它直到迭代結束。迭代器的優(yōu)點是在順序處理中它能提供一個單獨的變量用于跟蹤迭代到的位置;沒必要把Client類展開成用于迭代的“臨時”變量。

下面是一段刻意抽象的代碼:

aClient := CODE TO GET ONE.

aClient partsDo: [:object |

object printOn: Transcript]

注意partsDo:像一個以object為循環(huán)變量的循環(huán)。第一次遍歷我們得到name并打印到transcript(一個Smalltalk編程環(huán)境中特殊的工作區(qū))。然后第二次遍歷得到age,最后第三次遍歷得到address。同樣值得注意的是“partsDo:”是一個以“aClient”為接收者,以“[:object | object printOn: Transcript]”(一個block)為參數的關鍵字消息。

在深入之前我先給出Smalltalk的解決方案。然后我解釋一下它的工作原理并給出更多的慣用法的例子。我們要做的就是給Client添加如下方法:

partsDo: aBlock

aBlock value: self name.

aBlock value: self age.

aBlock value: self address.

要理解這段代碼要先認清這些block是匿名函數。為了更好的理解我所講,請設想我們想把一個函數賦值給一個變量但是不調用它。我來寫出它的類C語法風格寫法(我知道用C語法做這件事的確切寫法,不過那對闡述關鍵思想沒有什么幫助;所以我就不寫嚴格的C語法了):

a = f(x) { return x + 1; } // 類C風格語法

a := [:x | x + 1] // Smalltalk語法

這里變量“a”成了一個函數對象。f是一個函數,因此我們可以通過“f(10)”調用它得到11。但我們還能通用執(zhí)行“a(10)”調用它因為a的值是一個函數。通過變量“a”執(zhí)行函數不需要知曉和它原始名相關的信息。

所以在Smalltalk中我們甚至不糾結于函數的名字。我們可以輕易的把它賦給任意一個變量并通用此變量使用它。在上面簡單演示函數調用的例子中,我們設定“a value: 10”使它返回11。在執(zhí)行過程中,參數x被綁定為10,參與x + 1運算,一直執(zhí)行到block末時最終計算出的結果被返回。

通常我們極少直接執(zhí)行block。取而代之的我們寫成形如“partsDo:”,隱藏笨拙的block“調用”來提供抽象功能。

來看更多的例子。假設我們有一個維護一個旅客鏈表的Airplane類。我們嘗試一下遍歷訪問旅客中的所有兒童(假設定義12歲及以下為兒童)。實現此功能的代碼如下:

anAirplane passengers do: [: person |

person age = 12

ifTrue: [.. DO SOMETHING with person ..]]

如果我們需要在其它上下文中遍歷訪問兒童,稍作抽象會很有助于簡化代碼。我們所需要做的就是在Airplane類中實現一個名為“kidsDo:”的抽象(為便于引用說明,我為代碼加上了行號):

1. kidsDo: aBlock

2. "此處self是一個Airplane"

3. self passengers do: [:person |

4. person age = 12

5. ifTrue: [aBlock value: person]]

我們調整示例代碼如下來表述抽象:

6. anAirplane kidsDo: [:kid |

7. .. DO SOMETHING with kid ..].

8. "完成。"

你能看出第6行代碼是如何工作的嗎?當第6行的“kidsDo: ...”消息執(zhí)行時第一行的“kidsDo:”方法就被調用了。然后第1行的變量“aBlock”就被綁定了“[:kid | .. DO SOMETHING with kid ..]”(暫且稱其kid block)。kidsDo:方法中第3行的“do:”會遍歷所有旅客。第5行中aBlock僅在旅客年齡不高于12歲時才被發(fā)送一個“value:”消息。當以“person”為參數的“value:”消息執(zhí)行時,就會引發(fā)一個對kid block的函數調用并導致“kid”綁定到“person”和第7行的“.. DO SOMETHING with kid ..”。執(zhí)行到block末時執(zhí)行流程從“kidsDo:”返回到“do:”循環(huán)(第5行末),然后繼續(xù)如此處理其他kid。循環(huán)結束后執(zhí)行流程從第6行進行的“kidsDo:”方法調用返回并到達第8行。

一言以蔽之,第6行的代碼導致第1到第5行的代碼循環(huán)執(zhí)行,1到5行又會使kid block(第7行)執(zhí)行。

總體上說,block為Smalltalk提供了一種最簡潔的實現控制流抽象的手段。它也同樣被精妙的設計用來執(zhí)行語義上的返回語句,而且這是唯一可以表達此語義的方式。讓我通過給Airplane添加一個和第6到8行類似的方法來闡述這個問題:

10. findAnySickKid

11. "這里self也是一個AirPlane"

12. self kidsDo: [:kid |

13. kid isSick

14. ifTrue: [^kid]].

15. ^nil "不存在生病的"

通讀代碼,我相信你不會看出什么不尋常之處。這也是一個遍歷飛機上所有兒童的循環(huán)。如果發(fā)現了一個生病的兒童就返回。另外,更進一步的迭代下去如果沒有生病的兒童循環(huán)終止并返回nil(一個可被容易檢測的特殊對象)。那這里值得注意的是什么呢?嗯有三點重要的地方:第10行findAnySickKid方法開始處,第1行kidsDo:方法開始處,還有最后第13、14行kid block。通過執(zhí)行“anAirplane findAnySickKid”,先后調用了方法findAnySickKid,進而調用kidsDo:,進而kid block。在kid block里面執(zhí)行“^kid”并不返回給發(fā)送者(kidsDo方法)而是返回給findAnySickKid的發(fā)送者。不管從kidsDo:到kid block內部的消息鏈多長,“^kid”始終從findAnySickKid返回。恕我孤陋寡聞還沒聽說過這個特性的稱謂,我個人稱其短路返回(譯注:short circuit return)。

請問怎么快速看懂java代碼?

這代碼有兩個重點:一是entity是個什么類型,大概是數據庫映射的實體類,那么就要多看看相關的書籍了,二是業(yè)務邏輯,也就是和訂單相關的一系列流程,先自己理理。我比較熟悉C#,對java一竅不通,看著和你一樣的發(fā)暈啊。

怎么看懂java代碼電子書下載的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于怎么看懂java代碼電子書下載的文件、怎么看懂java代碼電子書下載的信息別忘了在本站進行查找喔。

掃描二維碼推送至手機訪問。

版權聲明:本文由飛速云SEO網絡優(yōu)化推廣發(fā)布,如需轉載請注明出處。

本文鏈接:http://www.atlasseeker.com/post/6247.html

分享給朋友:

“怎么看懂java代碼電子書下載(怎么看懂java代碼電子書下載的文件)” 的相關文章

河南app軟件開發(fā)(河南app軟件開發(fā)大概要多少錢)

河南app軟件開發(fā)(河南app軟件開發(fā)大概要多少錢)

本篇文章給大家談談河南app軟件開發(fā),以及河南app軟件開發(fā)大概要多少錢對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、河南鄭州有哪些比較專業(yè)的APP開發(fā)公司?急需,求推薦。 2、鄭州APP開發(fā)公司哪家好? 3、本地開發(fā)app的公司地址 4、APP開發(fā)的知名公...

油猴屏蔽網頁廣告腳本(瀏覽器去廣告腳本)

油猴屏蔽網頁廣告腳本(瀏覽器去廣告腳本)

今天給各位分享油猴屏蔽網頁廣告腳本的知識,其中也會對瀏覽器去廣告腳本進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!本文目錄一覽: 1、油猴上腳本已啟動,點開學習通視頻卻沒自動跳過怎么回事 2、如何刪除網頁中殘余的油猴腳本? 3、安卓adguard用不了油猴腳本 4...

2萬粉絲一天收入(1萬粉絲一天收入)

2萬粉絲一天收入(1萬粉絲一天收入)

本篇文章給大家談談2萬粉絲一天收入,以及1萬粉絲一天收入對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、抖音上有2千萬粉絲可以賺多少錢 2、162萬粉絲看直播2萬人,一月收入多少 3、抖音二萬多粉絲能賣多少錢 4、抖音粉絲二千萬收入多少 5、兩萬粉絲快手號...

朋友圈引流推廣文案(朋友圈引流推廣文案)

朋友圈引流推廣文案(朋友圈引流推廣文案)

今天給各位分享朋友圈引流推廣文案的知識,其中也會對朋友圈引流推廣文案進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!本文目錄一覽: 1、我想請問一下怎么做引流?有那些可以幫助推廣的平臺呢? 2、餐飲店如何引流與推廣 3、餐飲店如何引流與推廣? 4、微商引流精準 微商...

sony相機官方售后電話(sony相機客服電話)

sony相機官方售后電話(sony相機客服電話)

今天給各位分享sony相機官方售后電話的知識,其中也會對sony相機客服電話進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!本文目錄一覽: 1、索尼相機合肥售后服務在哪里 2、哈爾濱的索尼相機售后服務在哪 3、襄陽SONY相機的售后服務電話是多少?地址在哪? 索尼相機...

中臺架構與實現(中臺架構與實現基于DDD和微服務)

中臺架構與實現(中臺架構與實現基于DDD和微服務)

今天給各位分享中臺架構與實現的知識,其中也會對中臺架構與實現基于DDD和微服務進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!本文目錄一覽: 1、中臺是什么意思 2、數據中臺有什么好處? 3、業(yè)務中臺和數據中臺有什么關系? 4、百勝軟件E3全渠道中臺采用的什么底層架...