日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
RxJava優(yōu)化數(shù)據(jù)庫(kù)操作的實(shí)現(xiàn)方式(rxjava操作數(shù)據(jù)庫(kù))

隨著移動(dòng)設(shè)備和Web應(yīng)用的普及,許多應(yīng)用程序都需要快速讀取和處理大量數(shù)據(jù),并且需要在保存數(shù)據(jù)時(shí)提供快速和可靠的響應(yīng)時(shí)間。數(shù)據(jù)庫(kù)已經(jīng)成為許多應(yīng)用程序中不可或缺的一部分。然而,數(shù)據(jù)庫(kù)操作是一個(gè)復(fù)雜的任務(wù),需要花費(fèi)大量的時(shí)間和資源,特別是在處理大量數(shù)據(jù)時(shí),因此很容易出現(xiàn)性能問(wèn)題。

為了優(yōu)化數(shù)據(jù)庫(kù)操作,許多應(yīng)用程序都使用異步任務(wù)來(lái)執(zhí)行數(shù)據(jù)庫(kù)操作。然而,使用異步任務(wù)的方式雖然可以提高數(shù)據(jù)庫(kù)操作的執(zhí)行效率,但也會(huì)增加代碼的復(fù)雜度。RxJava可以為數(shù)據(jù)庫(kù)操作提供一種更加簡(jiǎn)潔、方便和易于維護(hù)的實(shí)現(xiàn)方式。RxJava是一個(gè)用于使用Java 8 Lambda表達(dá)式編寫(xiě)異步和基于事件驅(qū)動(dòng)的程序的庫(kù)。

RxJava的優(yōu)點(diǎn)

RxJava通過(guò)使用觀察者模式和函數(shù)式編程的原則來(lái)簡(jiǎn)化異步操作和事件驅(qū)動(dòng)的程序。

RxJava的優(yōu)點(diǎn)如下:

可組合性:RxJava提供了操作符和過(guò)濾器來(lái)處理數(shù)據(jù)流,并能夠輕松地將多個(gè)數(shù)據(jù)流合并成單個(gè)數(shù)據(jù)流。

可重用性:RxJava可以將異步任務(wù)組合成一個(gè)可重用的任務(wù)塊,并且這些任務(wù)塊可以針對(duì)不同的數(shù)據(jù)源進(jìn)行調(diào)整。

易于擴(kuò)展:RxJava可以輕松地添加新的操作符和過(guò)濾器來(lái)處理數(shù)據(jù)流。

優(yōu)化數(shù)據(jù)庫(kù)操作的實(shí)現(xiàn)方式

RxJava可以實(shí)現(xiàn)以下方式來(lái)優(yōu)化數(shù)據(jù)庫(kù)操作:

1.將查詢操作轉(zhuǎn)換為Observable

通過(guò)將查詢操作轉(zhuǎn)換為Observable,可以將查詢作為一個(gè)數(shù)據(jù)流來(lái)處理,并使用RxJava的操作符來(lái)處理這個(gè)數(shù)據(jù)流。這樣可以使用RxJava的組合性和重用性來(lái)更為有效地處理查詢操作。

例子:

“`

Observable> usersObservable =

Observable.defer(() -> {

List users = userManager.getAllUsers();

return Observable.just(users);

}).subscribeOn(Schedulers.io());

“`

在這個(gè)例子中,用戶查詢操作被轉(zhuǎn)換為一個(gè)名為usersObservable的Observable。用戶查詢操作在后臺(tái)線程中執(zhí)行,以避免阻塞UI線程。

2.使用操作符來(lái)處理數(shù)據(jù)流

RxJava提供了許多操作符來(lái)處理數(shù)據(jù)流,例如map、filter、flatmap、reduce等等??梢允褂眠@些操作符來(lái)過(guò)濾、轉(zhuǎn)換和處理數(shù)據(jù)流。例如,可以使用map操作符將User對(duì)象轉(zhuǎn)換為對(duì)應(yīng)的用戶名字:

“`

Observable> usernamesObservable = usersObservable.map(users -> {

List usernames = new ArrayList();

for (User user : users) {

usernames.add(user.getName());

}

return usernames;

});

“`

在這個(gè)例子中,使用了RxJava的map操作符來(lái)將每個(gè)User對(duì)象轉(zhuǎn)換為其對(duì)應(yīng)的用戶名。

3.使用線程池來(lái)執(zhí)行數(shù)據(jù)庫(kù)操作

使用RxJava的線程池來(lái)執(zhí)行數(shù)據(jù)庫(kù)操作可以提高執(zhí)行效率,并避免阻塞UI線程。RxJava提供了許多線程池實(shí)現(xiàn),包括Schedulers.io()和Schedulers.computation()。例如,可以使用Schedulers.io()來(lái)執(zhí)行I/O操作:

“`

Observable> usersObservable = Observable.defer(() -> {

List users = userManager.getAllUsers();

return Observable.just(users);

}).subscribeOn(Schedulers.io());

“`

在這個(gè)例子中,用戶查詢操作被放置在Schedulers.io()線程池中,使其在后臺(tái)線程中執(zhí)行。

4.使用CompositeDisposable來(lái)管理訂閱

當(dāng)使用RxJava時(shí),訂閱操作會(huì)產(chǎn)生Disposable對(duì)象,這些對(duì)象必須被正確地處理,以避免內(nèi)存泄漏??梢允褂肅ompositeDisposable來(lái)管理這些Disposable對(duì)象,以避免內(nèi)存泄漏。例如,可以使用CompositeDisposable來(lái)管理所有查詢Subscription:

“`

private CompositeDisposable disposable;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

disposable = new CompositeDisposable();

Observable> usersObservable = Observable.defer(() -> {

List users = userManager.getAllUsers();

return Observable.just(users);

}).subscribeOn(Schedulers.io());

disposable.add(usersObservable.subscribe(users -> {

// do something with users

}));

}

@Override

public void onDestroy() {

super.onDestroy();

disposable.dispose();

}

“`

在這個(gè)例子中,CompositeDisposable對(duì)象被用來(lái)管理usersObservable對(duì)象。當(dāng)Activity被銷(xiāo)毀時(shí),CompositeDisposable對(duì)象也會(huì)被銷(xiāo)毀,以避免內(nèi)存泄漏。

結(jié)論

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!

2023年,Web 后端出現(xiàn)了哪些新的思想和技術(shù)

我學(xué)習(xí)前端一年多了,感覺(jué)前巖洞端還是很值得研究的!應(yīng)用方向大概就是粗叢枯兩個(gè)方面:數(shù)據(jù)處理和用戶體驗(yàn)。數(shù)據(jù)處理方面大概就是和后端打交道,有模板引擎,json,xml,websoket等等。我個(gè)人是比較偏向設(shè)計(jì)這方面的用戶體驗(yàn),像css這塊就要好好深入的研究一下!比如css預(yù)處理器之類(lèi)的,他很強(qiáng)大,推薦看看大漠的w3cplus。另外,需要注意一些什么緩存機(jī)制,性能鄭猛優(yōu)化等等! 有用的話希望~~一下

1. 網(wǎng)絡(luò)交互的多樣性

1.1 Http1.1協(xié)議日漸式微,Http2和websocket,以及更多的自定義協(xié)議將會(huì)成為主流。

Web后端將不僅僅是一個(gè)web后端,而變成一個(gè)大后端,或者叫 中端+后端(這個(gè)概念阿里巴巴很早就有了)。隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,以及物聯(lián)網(wǎng)的興起(在這里我把mobike的單車(chē)看作是物聯(lián)網(wǎng)的一個(gè)終端),用戶的接入方式由單純的瀏覽禪游賀器,向著多種接入設(shè)備進(jìn)行演進(jìn)。 在這個(gè)概念之下,用戶的定義會(huì)更廣泛,站在后端的角度看來(lái),連接上服務(wù)器的不再是一個(gè)個(gè)的用戶,而是一個(gè)個(gè)的終端,并存在多個(gè)終端同享一個(gè)用戶的情況(多端登錄)。 因此在這個(gè)趨勢(shì)之下,整個(gè)后端的接入層(比如nginx之于web)將會(huì)走向更廣闊的天地,對(duì)于任意一個(gè)設(shè)備來(lái)說(shuō),他將同時(shí)利用多種協(xié)議和多種方式連接到不同的接入點(diǎn)來(lái)達(dá)成自身的功能。

1.2 網(wǎng)絡(luò)協(xié)議與網(wǎng)絡(luò)信息交互的樣式多樣性

從最早的webService,到后來(lái)的json-rpc,和thrift再到如今的 protobuf(grpc)等等,我們開(kāi)始為不同的數(shù)據(jù)交互設(shè)計(jì)了不同的序列化協(xié)議和調(diào)用協(xié)議,然而受到環(huán)境(移動(dòng)終端的弱網(wǎng)絡(luò)狀態(tài)),性能(網(wǎng)關(guān)服務(wù),與網(wǎng)絡(luò)調(diào)用)的影響,我們開(kāi)始使用大量容錯(cuò)性更強(qiáng),數(shù)據(jù)量更小的數(shù)據(jù)傳輸方式,來(lái)滿足我們的需求。

在早先的web中,http+from表單的提交成為我們的標(biāo)配,然而在今天,TCP都不一定成為必選項(xiàng),UDP和UDP的改進(jìn)協(xié)議都在被不同的公司進(jìn)行嘗試,甚至于KCP都有可能成為大家考慮的方案之一。

2.數(shù)據(jù)多樣性開(kāi)始成為設(shè)計(jì)的焦點(diǎn)。

2.1 在早先的web后端中,表設(shè)計(jì)和功能開(kāi)發(fā)構(gòu)成了日常工作的絕大部分,所有的后端人員都在試圖讓一切的用戶操作落入CRUD的抽象范疇里(比如 Restful),然而CRUD怎么會(huì)滿足我們的抽象需求呢。

自從memcached和redis在被大量引入后端開(kāi)發(fā)之后,我們可以看到,后端人員在對(duì)數(shù)據(jù)的理解上有了大量的改變,我們不再單單把數(shù)據(jù)視為RDBMS里面的一行,而是圍繞著業(yè)務(wù)本身對(duì)數(shù)據(jù)進(jìn)行了分類(lèi)。最明顯的是,狀態(tài)數(shù)據(jù)的引入,在開(kāi)發(fā)中,我們將用戶的部分信息,視為一個(gè)用戶的狀態(tài),在狀態(tài)數(shù)據(jù)的基礎(chǔ)上,讓用戶的行為變成狀態(tài)遷移的觸發(fā),在表現(xiàn)上看我們讓用戶的信息存儲(chǔ)到redis和memcached 里就是最RDMBS不能有效滿足我們的抽象需求的一次改進(jìn)。

2.2 從賀派狂熱的Nosql到Nosql和RDBMS的共存,代表了后端開(kāi)發(fā)人員對(duì)數(shù)據(jù)這一個(gè)方式的新理解,而傳統(tǒng)的行存儲(chǔ)到列存儲(chǔ),到監(jiān)控常用的基于時(shí)間序列的數(shù)據(jù)庫(kù)都開(kāi)始進(jìn)入了我們的視野。

幾年來(lái),大量的開(kāi)發(fā)者,開(kāi)始將用戶產(chǎn)生的數(shù)據(jù)進(jìn)行了更詳細(xì)的歸類(lèi),不再是rdbms一刀切的方式, 我們會(huì)詳細(xì)地劃分出用戶的狀態(tài)數(shù)據(jù)落入到Nosql,將用戶的操作數(shù)據(jù)落入到RDBMS(表述不一定全,但在類(lèi)似于訂單支付之類(lèi)的具有冪等性要求的操作中要求事務(wù)的完備等),將用戶的行為統(tǒng)計(jì)落入時(shí)間序列數(shù)據(jù)庫(kù), 將用戶的大量相關(guān)資源(如頭像圖片)將會(huì)落入到我們的對(duì)象存儲(chǔ)中。在后端開(kāi)發(fā)的手冊(cè)里,數(shù)據(jù)格式的多樣性成為了必須考慮的問(wèn)題。

3.圍繞著數(shù)據(jù)的收集,存儲(chǔ),計(jì)算磨和,索引查詢,分析 成為后端的常態(tài)

3.1 后端角色的含義,在人手不足的公司里,很難存在一個(gè)專(zhuān)注于后端業(yè)務(wù)開(kāi)發(fā)的開(kāi)發(fā)人員了,在大數(shù)據(jù)的浪潮下,后端開(kāi)發(fā)人員開(kāi)始起了數(shù)據(jù)系統(tǒng)的開(kāi)發(fā)工程師。 隨著互聯(lián)網(wǎng)大量技術(shù)的演進(jìn)和發(fā)展,任何一個(gè)職業(yè)都很難找到一個(gè)明確的界限,因此圍繞著數(shù)據(jù)的收集,存儲(chǔ),計(jì)算,分析,和索引查詢都會(huì)成為后端開(kāi)發(fā)人員的必備技能。

3.2 數(shù)據(jù)收集

(1) 隨著分布式,集群化,多IDC的發(fā)展,不同于運(yùn)維的系統(tǒng)性能收集,后端開(kāi)發(fā)開(kāi)始著重于收集與應(yīng)用運(yùn)營(yíng)過(guò)程相關(guān)的各類(lèi)指標(biāo)和數(shù)據(jù),

除了日常的業(yè)務(wù)開(kāi)發(fā),同時(shí)還會(huì)伴隨著應(yīng)用調(diào)用過(guò)程的耗時(shí),目標(biāo)服務(wù)可用性等數(shù)據(jù)的收集,常見(jiàn)的如java的 metrics,zipkin等開(kāi)源第三方的工具開(kāi)始被廣泛借鑒和引用。

(2) 用戶行為和終端信息的上報(bào)收集,隨著大數(shù)據(jù)的開(kāi)展,以及精細(xì)化運(yùn)營(yíng)的要求,后端逐漸開(kāi)始接觸到用戶相關(guān)信息和終端運(yùn)行狀態(tài)的信息上報(bào),

收集上來(lái)的數(shù)據(jù)不僅用于用戶的畫(huà)像分析,同時(shí)也為客服的用戶追蹤,用戶的操作行為做出決策,通常表現(xiàn)在當(dāng)用戶投訴某一筆業(yè)務(wù)的失敗時(shí),便于開(kāi)發(fā)人員的快速定位和排錯(cuò)。

3.3 數(shù)據(jù)存儲(chǔ)

接著上面的數(shù)據(jù)收集,數(shù)據(jù)的傳輸和存儲(chǔ)成為了繞不開(kāi)的功能,kafka的大規(guī)模運(yùn)用,HDFS,HBase等工具也開(kāi)始成為了后端開(kāi)發(fā)日常的一部分。

3.4 數(shù)據(jù)計(jì)算

然而存儲(chǔ)的原始數(shù)據(jù)是沒(méi)有價(jià)值的,后端又開(kāi)始了他們的數(shù)據(jù)清洗和數(shù)據(jù)處理的道路,storm,spark成為了后端的新秀,與用戶運(yùn)營(yíng)統(tǒng)計(jì)分析(俗稱跑策略跑算法)不同,當(dāng)前語(yǔ)境下的后端數(shù)據(jù)計(jì)算,更多是一個(gè)短耗時(shí),小規(guī)模的計(jì)算,典型的則比如風(fēng)控系統(tǒng),和預(yù)警系統(tǒng),針對(duì)用戶的行為和流量的多少,對(duì)惡意用戶進(jìn)行甄別和快速干預(yù)。

3.5 數(shù)據(jù)索引查詢

(1) 隨著業(yè)務(wù)的擴(kuò)充,任意一個(gè)app幾乎都內(nèi)置了相應(yīng)的搜索引擎,Lucene,solr也成為了后端程序員必備的技能之一,不管是精確搜索,還是模糊匹配,后端身上背負(fù)的業(yè)務(wù)也越來(lái)越多。

(2) 準(zhǔn)實(shí)時(shí)數(shù)據(jù)的搜索也將成為常態(tài),在近幾年的發(fā)展中,如何快速地在一個(gè)巨量的數(shù)據(jù)中,完成RDBMS中的 join,distinct統(tǒng)計(jì)等成為后端工程師不得不面對(duì)的問(wèn)題

3.6 數(shù)據(jù)分析查詢

AI和深度學(xué)習(xí)已經(jīng)拉開(kāi)了序幕,圍繞著數(shù)據(jù)本身的挖掘,學(xué)習(xí),也開(kāi)始成為了產(chǎn)品側(cè)的需求,但理想歸理想,現(xiàn)實(shí)歸現(xiàn)實(shí),后端的同學(xué)們?cè)谶@個(gè)方向上仍然還是摸索狀態(tài),但長(zhǎng)遠(yuǎn)來(lái)說(shuō)跑不了了。

4.架構(gòu)設(shè)計(jì)的更進(jìn)一步

2023年里,SOA的名詞正在淡出視野,微服務(wù)成了替代SOA的高頻詞,Serverless也開(kāi)始走向了廣大后端的知識(shí)技能圖譜,不管是追新也好,滿足需求也罷,我也向諸位舉例一些常見(jiàn)的單詞,然而掛一漏萬(wàn)請(qǐng)諸位擔(dān)待

4.1 CQRS(命令查詢職責(zé)分離模式)

將傳統(tǒng)CRUD的寫(xiě)操作,進(jìn)行異步化,后端配合讀寫(xiě)數(shù)據(jù)庫(kù)的分離。以及消息隊(duì)列的引入,將寫(xiě)操作相關(guān)的一些耗時(shí)操作(驗(yàn)證,走流程)等進(jìn)行異步化,常見(jiàn)的如電商中的訂單。

4.2 actor

Erlang的actor的興起,不管是golang Goroutine,還是scala/java的akka,都在深刻地影響著后端系統(tǒng)的架構(gòu)設(shè)計(jì)。

4.3 CRDT和最終一致性

分布式系統(tǒng)的興起,也帶來(lái)了可用性和一致性的矛盾問(wèn)題,協(xié)同兩個(gè)進(jìn)程間的數(shù)據(jù)成為了每一個(gè)后端繞不過(guò)去的坎,為了達(dá)成最終一致性,各類(lèi)方案如雨后春筍般冒出。

4.4 reactive

當(dāng)android上的流行庫(kù)Rxjava,從前端走向后臺(tái)的時(shí)候,也意味著后端也開(kāi)始進(jìn)入了響應(yīng)式編程的時(shí)代,java的 vert.x就是其中的例子,那種request-response一招破萬(wàn)法的時(shí)光不再有了。

5. 運(yùn)維和devops對(duì)后端的要求

5.1 安全,穩(wěn)定,高效,經(jīng)濟(jì)

(1) 隨著業(yè)務(wù)走向穩(wěn)定,以及互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)服務(wù)的安全性開(kāi)始成為了后端的核心之一,由于法律的不健全,對(duì)違法分子的追責(zé)難度大,違法成本低,網(wǎng)絡(luò)安全攻擊將會(huì)在將來(lái)的一段時(shí)間內(nèi)成為常態(tài),這就對(duì)后端的程序特別是對(duì)外的接口設(shè)計(jì)提出了更高的要求。

(2) 多機(jī)房,異地容災(zāi),數(shù)據(jù)備份。健壯的后端一直是后端應(yīng)用的要求之一。新的時(shí)間里,后端的可用性,穩(wěn)定性依然是每一個(gè)后端都要面對(duì)的問(wèn)題。

(3) 以前一個(gè)用戶只有一個(gè)電腦,瀏覽網(wǎng)站的時(shí)候,只在獲取數(shù)據(jù)的時(shí)候與站點(diǎn)有交互。現(xiàn)在隨著電子設(shè)備,智能設(shè)備的增多,一個(gè)用戶能夠接入網(wǎng)絡(luò)的設(shè)備也在增多,同時(shí)長(zhǎng)連接和并發(fā)數(shù)也會(huì)增多,因此高性能的接入網(wǎng)關(guān)開(kāi)始成為了后端人員關(guān)注的焦點(diǎn),比如圍繞著intel的dpdk各類(lèi)應(yīng)用也是紛至沓來(lái)。

(4) 經(jīng)濟(jì),利用云服務(wù)的即買(mǎi)即用,用完即退的特點(diǎn),使得在開(kāi)展運(yùn)營(yíng)活動(dòng)的時(shí)候,后端不用向運(yùn)維征求和購(gòu)買(mǎi)大量的機(jī)器。 然而為了在運(yùn)營(yíng)活動(dòng)的短時(shí)沖擊和突增流量的情況下后端應(yīng)用能夠平穩(wěn)地運(yùn)行,對(duì)后端人員的部署和調(diào)度能力提出了更高的要求。

5.2 更規(guī)范的軟件開(kāi)發(fā)流程

git+jenkins+ansible的開(kāi)源組合,開(kāi)始無(wú)法滿足開(kāi)發(fā)和運(yùn)維的需求,項(xiàng)目管理的集成,測(cè)試人員的介入,都要求后端的軟件工程工具從各自為陣的開(kāi)源工具,走向一個(gè)大一統(tǒng)的系統(tǒng),需要我們將 需求,BUG管理,迭代版本,開(kāi)發(fā),測(cè)試,灰度,藍(lán)綠部署流程都進(jìn)行集成。

5.3 云服務(wù),容器化之爭(zhēng)

公有云,私有云,混合云,以及容器等相關(guān)的云計(jì)算技術(shù),也在推動(dòng)者后端的技術(shù)改革,后端面對(duì)的不再僅僅是一個(gè)物理機(jī)器,或者虛擬機(jī),而是一個(gè)更復(fù)雜更多樣性的環(huán)境,對(duì)后端業(yè)務(wù)之外的技術(shù)和調(diào)度要求將越來(lái)越高。

相對(duì)于前端,后端實(shí)在是一個(gè)特別籠統(tǒng)的說(shuō)法,正如上面提出的觀點(diǎn),很多的技術(shù)其實(shí)并不屬于后端工程師,他們有的時(shí)候叫 運(yùn)營(yíng)開(kāi)發(fā)工程師,有的叫大數(shù)據(jù)工程師,但為了相對(duì)于前端的劃分,因此我把他們的工作內(nèi)容都劃到了后端里面去,畢竟相對(duì)于技術(shù)研究,他們面對(duì)的都是一些技術(shù)應(yīng)用的場(chǎng)合,很多的開(kāi)源軟件只要達(dá)到了理解原理如何使用的水平就已經(jīng)足夠應(yīng)付日常工作了。

rxjava操作數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于rxjava操作數(shù)據(jù)庫(kù),RxJava優(yōu)化數(shù)據(jù)庫(kù)操作的實(shí)現(xiàn)方式,2023年,Web 后端出現(xiàn)了哪些新的思想和技術(shù)的信息別忘了在本站進(jìn)行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機(jī)被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡(jiǎn)稱香港主機(jī)/香港空間。香港虛擬主機(jī)特點(diǎn)是免備案空間開(kāi)通就用, 創(chuàng)新互聯(lián)香港主機(jī)精選cn2+bgp線路訪問(wèn)快、穩(wěn)定!


網(wǎng)站名稱:RxJava優(yōu)化數(shù)據(jù)庫(kù)操作的實(shí)現(xiàn)方式(rxjava操作數(shù)據(jù)庫(kù))
鏈接URL:http://m.5511xx.com/article/cdpidos.html