摘要:本文首先會解釋一下到底什么是"冠狀病毒",以及殺死"冠狀病毒"的方法。然后會利用Python實現(xiàn)一個"冠狀病毒"傳播仿真器,來演示一下為何“不出門“ +“瘋狂建醫(yī)院”會間接殺死病毒(動態(tài)模擬了從發(fā)生疫情,到疫情結束的整個過程)。以及如果控制不好,會有什么后果(一定是很嚴重的)。
相信大家現(xiàn)在一定和我一樣,無比郁悶。好不容易盼到過年了,買了一大堆好吃的,結果哪也去不了,只能在家消耗這些美食了。而且很多人宅在家里的每一天都會做同一個偉大的計劃??!
那么我們?yōu)槭裁床荒艹鲩T呢?答案大家都已經(jīng)知道了,這就是一種被稱為“冠狀病毒”的東西在搗亂。據(jù)鐘南山院士和其他一些專家推測,這種“冠狀病毒”的潛伏期是14天左右,所以需要盡可能避免在14天內(nèi)接觸更多的人。而宅在家里是最好的選擇。不過這是頭一次放這么長的假,而且還必須呆在家里,也是相當郁悶,恍惚間竟想起了猴哥,500年你是怎么熬過來的呢!
下面就先來了解下到底什么是冠狀病毒!
1. 什么是冠狀病毒
如果詳細解釋什么是冠狀病毒,先要從病毒講起,估計要寫一本書了,不過完全沒有必要。大家只要知道一點就好。病毒不是生物(類生物,有生物的部分特征),不能獨立生存,需要依賴于宿主,也就是人體的細胞。換句話說,病毒需要***人體的細胞才能生存。病毒可以利用細胞中的成分復制自身,從而達到繁殖的目的。如果受到感染的細胞過多,人體就會生病。
那么"冠狀病毒"呢?當然也屬于病毒的一種,不過它不是普通的病毒。首先看看"冠狀病毒"的樣子,病毒表面有很多凸起的冠(看起來還挺漂亮的),所以稱為"冠狀病毒"。
"冠狀病毒"除了外形上與普通病毒有差異,在本質上與普通病毒也是不同的。普通病毒通常都是DNA病毒,也就是雙螺旋結構。而"冠狀病毒"屬于RNA病毒,也就是單螺旋結構。雙螺旋結構的DNA病毒更穩(wěn)定,不容易變異。但RNA病毒只有一個鏈,非常不穩(wěn)定,容易變異。這才是"冠狀病毒"的殺手锏,通過變異抵抗人類的反擊。目前"冠狀病毒"是否變異,還很難說。
2. 如何殺死"冠狀病毒"
現(xiàn)在的問題是,如何殺死"冠狀病毒"。當然,最直接的方法是將"冠狀病毒"趕出細胞,或直接從細胞中清除,不過目前人類的技術還做不到這一點。這應該屬于比細胞醫(yī)學更高端的醫(yī)學:分子醫(yī)學或原子醫(yī)學。目前人類的科技水平甚至還沒完全達到細胞醫(yī)學的高度(最多0.7個細胞醫(yī)學),因為癌癥等細胞疾病還無法完全治愈。
既然病毒目前還無法直接殺死,那么這么多痊愈的病人是如何做到的呢?其實可以采用如下兩種方法間接殺死"冠狀病毒",也包括其他大多數(shù)病毒。
1.? 利用人體內(nèi)的抗體細胞(如T細胞),將被感染的細胞連同"冠狀病毒"一起消滅
2. 干擾"冠狀病毒"在細胞內(nèi)的復制過程(例如,RNA干擾),讓"冠狀病毒"無法正常復制自身,也就是讓"冠狀病毒"沒有后代,這樣"冠狀病毒"就會由于自身的生命終結而死亡。
目前絕大多數(shù)痊愈的病人屬于第一種情況,也就是通過自身的抗體細胞(如T細胞)檢測人體內(nèi)被感染的細胞,然后通知這些被感染的細胞啟動自毀程序,當這些細胞被銷毀后,那么病毒也就被消滅了。
不過可能有的同學會問,既然病毒可以被抗體細胞消滅,那么這么多醫(yī)護人員和醫(yī)療設備豈不是多余了。其實并不是多于的,而是非常必要。這是因為病毒在***正常細胞的同時,也讓人體的抵抗力開始下降,人體內(nèi)的抗體細胞是有限的,這些抗體細胞會到處救火,顧不上對付"冠狀病毒"了。正是由于這些醫(yī)療器械(如呼吸機),盡可能讓人體機能恢復到接近正常人的水平,這樣各種抗體細胞就可以集中力量對付"冠狀病毒"了。所以說,這些痊愈的病人其實是通過自身的抗體細胞消滅了"冠狀病毒",而醫(yī)療器械、各種藥物,醫(yī)務人員的護理,其實是抗體細胞的援軍。另外,由于不同人的體質不同。極個別的個體,抗體細胞非常強大,造成了"冠狀病毒"無法快速復制(但仍然在復制,只是增速變慢),這也是為什么有的個體的潛伏期會超過14天的原因,但這畢竟是極少數(shù)。潛伏期是被病毒感染的細胞數(shù)量達到足以致病的時間(人體內(nèi)如果只有少量的被病毒感染的細胞,是不會表現(xiàn)出任何癥狀的)。
還有就是,為什么"冠狀病毒"感染者在發(fā)病時大多會有肺炎的癥狀,而且伴隨著發(fā)燒呢?其實這就是抗體細胞在和"冠狀病毒"進行較量呢!進醫(yī)院隔離,是為了增強抗體細胞對抗"冠狀病毒"的籌碼。不過由于一些人的抗體細胞的戰(zhàn)斗力實在太差(可能有部分人是因為年齡太大的原因),所以就算抗體細胞等來了援軍,也于事無補,這些就是已經(jīng)死亡的被感染者(大多是60歲以上的老年人)。所以等疫情結束后,好好鍛煉身體吧,擁有強壯的身體,不能保證你不得病,但至少可以增加得病后活下來的幾率。
對于目前正在研發(fā)的抗"冠狀病毒"的藥物主要是通過第2種方式消滅病毒的。也就是干擾病毒的復制過程,不過很遺憾,到現(xiàn)在為止,還沒有被證明非常有效的藥物可以做到這一點。
3. 對付"冠狀病毒"的手段
從生物學角度,我們已經(jīng)了解了"冠狀病毒"的發(fā)病原理,但在現(xiàn)實中,如何操作呢?
其實對付"冠狀病毒"以及其他大多數(shù)病毒,基本上就是基于12個字: 有癥狀趕快治,沒癥狀要隔離。這也是國際上通用的原則。
前6個字容易理解,有癥狀了,就直接進醫(yī)院了。如果沒癥狀呢?沒癥狀有兩種情況:疑似和正常人。疑似主要是指與被感染者近距離接觸,或從外地來本地的人員(輸入者),由于"冠狀病毒"的潛伏期是14天左右,所以這些疑似者至少需要被隔離14天才會確定是否真的被感染。而正常人只要沒和被感染者近距離接觸,就不會被感染。這些人之所以也需要隔離,是因為怕被別人感染。不過這里的隔離通常是在自己的家中,不出門。通過隔離,可以大幅度減少病毒感染新的人群,也就是讓存量不再增加或少增加。而還有很多被感染者,這些人就需要在醫(yī)院里接受治療了。不過由于被感染者太多,所以武漢等地區(qū)快速建起了很多臨時醫(yī)院。 這是用來減少存量的。 當存量不但不會增加、而且在不斷減少,直到被感染者為0,疑似者為0時,疫情才會徹底結束,這也是本文要介紹的病毒擴散仿真器的基本原理。
4. 用病毒擴散仿真器來演示病毒擴散和疫情結束的全過程
在實現(xiàn)這個仿真器之前,先來演示下這個仿真器。
仿真器可以對多個數(shù)據(jù)進行模擬,包括健康者人數(shù)、潛伏期人數(shù)、發(fā)病者人數(shù)、已經(jīng)隔離的人數(shù)、已經(jīng)死亡的人數(shù)、空余床位、繼續(xù)床位、病毒傳播率、病毒潛伏期、醫(yī)院收治響應時間、醫(yī)院當前床位、安全距離、平均流動意向。
啟動程序,會利用初始值進行模擬,初始發(fā)病人數(shù)為50人,市民總數(shù)為5000人。如下圖所示。
中間區(qū)域的若干個點表示各種狀態(tài)的市民。白色的表示健康市民、黃色表示潛伏期市民、紅色表示發(fā)病市民、黑色表示死亡的市民。右側的豎條表示醫(yī)院的床位,初始值是100。如果用參數(shù)值進行模擬,100張床位很快就會被填滿,然后病毒在人群中就會大爆發(fā),很快紅點就會遍布人群,如下圖所示:
當前天數(shù)已經(jīng)顯示過了31天(耽誤了一個月),感染者已經(jīng)接近1000了,這時政府開始采取緊急措施。主要有兩個:封城和關閉場所、增加醫(yī)院的床位。前者是為了避免感染更多的人,后者是為了消耗被感染者的存量。所以通過下面的設置來調(diào)整參數(shù)。例如,將流動意向調(diào)整為-1.71。并且增加床位323個。
這時總床位數(shù)變成了423。這里的流動意向在-3和3之間,如果是3,表示市民的活動意愿非常強烈,例如,正好是春節(jié)時期,市民逛商場,聚會非常頻繁。流動意愿越小,流動意愿就越低。這里調(diào)成-1.76,表示市民不能參加聚會、不能出城、出門需要戴口罩,但市民仍然可以在市內(nèi)流動。 流動意愿遠低于春節(jié)正常的值。不過盡管政府采取了一定的措施,但由于是在疫情開始后一個月才采取了緊急措施,所以病毒已經(jīng)擴散了,因此,疫情并沒有得到非常明顯的緩解。如下圖所示。 主要表現(xiàn)為市民仍然可以自由活動(盡管不能參加聚會),仍然存在一定的感染風險。 而且醫(yī)院床位明顯不足。
為了更進一步控制疫情,政府開始封閉小區(qū),更進一步限制人員的活動,以及軍方開始干預,派出了大量的醫(yī)護人員以及各種醫(yī)療設備,并且建立的多個方艙醫(yī)院。醫(yī)院床位得到了很大的緩解。這里將參數(shù)設置成大值來模擬這一過程,增加床位1200個,流動意向設置為-3.0,也就是說基本上市民不流動了。如下圖所示。
這時看到床位已經(jīng)增加到了1623,比急需的床位多了不少,而且人員趨于不流動,發(fā)病人數(shù)不斷減少(都被送進了醫(yī)院),而且潛伏期人數(shù)逐漸轉換為發(fā)病人數(shù),也被送進了醫(yī)院,最終,潛伏期人數(shù)和發(fā)病者人數(shù)都是0,疫情結束,如下圖所示。共耗費了60天。當然,實際情況沒這么順利。仿真器可以立刻增加醫(yī)院床位數(shù),可以立刻隔離人員,但在實際操作中,建立醫(yī)院需要時間,隔離也需要協(xié)調(diào),尤其是上千萬人的大城市。
不過只要能做到隔離和及時就醫(yī),冠狀病毒疫情結束也只是時間問題。當然,這要在這兩點做的比較好的情況下,如果處理失當,那么仿真器就會呈現(xiàn)下圖的狀態(tài),完全失控,人類將面臨一場浩劫。
5. 病毒傳播仿真器的實現(xiàn)
現(xiàn)在來談談仿真器實現(xiàn)的原理。仿真器使用Python和PyQt5實現(xiàn)。PyQt5是封裝了Qt library的跨平臺GUI開發(fā)庫,基于Python語言。
這里主要涉及到仿真器效果繪制,以及如何模擬多個參數(shù)。先來說一下繪制市民的狀態(tài)。繪制的工作通過drawing.py文件的Drawing類來完成。該類是QWidget的子類,這也就意味著Drawing類本身是PyQt5的一個組件。與按鈕、標簽類似。只是并不需要往Drawing上放置任何子組件。只要在Drawing上繪制各種圖形即可。
在PyQt5中,任何一個QWidget的子類,都可以實現(xiàn)一個paintEvent方法,當組件每次刷新時,就會調(diào)用paintEvent方法重新繪制組件的內(nèi)容。Drawing類中paintEvent方法的代碼如下:
def?paintEvent(self,?event): ????????qp?=?QPainter() ????????qp.begin(self) ????????#?繪制城市的各種狀態(tài)的市民 ????????self.drawing(qp) ????????qp.end()
在繪制圖像前,需要創(chuàng)建QPainter對象,然后調(diào)用QPainter對象的begin方法,結束繪制后,需要調(diào)用QPainter對象的end方法。上面代碼中的drawing方法用于完成具體的繪制工作。
仿真器可以模擬5000個市民的狀態(tài),所以需要用5000個小矩形來表示這5000個市民。也就是在drawing方法中需要繪制這5000個表示市民的小矩形。代碼如下:
def?drawing(self,?event): ???????...?... ????????#?繪制代表市民的小矩形 ????????persons?=?Persons().persons ????????if?persons?==?None: ????????????return ????????normal_person_count?=?0 ????????latency_person_count?=?0 ????????confirmed_person_count?=?0 ????????freeze_person_count?=?0 ????????death_person_count?=?0 ??????????????#?掃描內(nèi)一個人的狀態(tài) ????????for?person?in?persons: ????????????if?person.state?==?NORMAL: ????????????????#?健康人 ????????????????qp.setPen(Qt.white) ????????????????normal_person_count?+=?1 ????????????elif?person.state?==?LATENCY: ????????????????#?潛伏期感染者 ????????????????qp.setPen(QColor(255,238,0)) ????????????????latency_person_count?+=?1 ????????????elif?person.state?==?CONFIRMED: ????????????????#?確診患者 ????????????????qp.setPen(Qt.red) ????????????????confirmed_person_count?+=?1 ????????????elif?person.state?==?FREEZE: ????????????????#?已隔離者 ????????????????qp.setPen(QColor(72,?255,?252)) ????????????????freeze_person_count?+=?1 ????????????elif?person.state?==?DEATH: ????????????????#?死亡患者 ????????????????qp.setPen(Qt.black) ????????????????death_person_count?+=?1 ????????????person.update()???#?更新每一個人的狀態(tài) ????????????bed_half_size?=?Hospital().bed_size?//?2 ????????????rect?=?QRect(person.x?-?bed_half_size,?person.y?-?bed_half_size,Hospital().bed_size//2,?Hospital().bed_size//2) ????????????brush?=?QBrush(Qt.SolidPattern) ????????????brush.setColor(qp.pen().color()) ????????????qp.setBrush(brush) ????????????qp.drawRect(rect) ????????????...?...
在上面的代碼中,通過 Persons對象的persons屬性獲取表示市民的對象(Person對象)列表。并在循環(huán)中根據(jù)Person對象的狀態(tài)設置小矩形的顏色,以及分別統(tǒng)計不同人群的數(shù)量,這些數(shù)量會顯示在仿真器右側的組件中。最后,使用drawRect方法繪制表示每一個市民的小矩形。這樣就繪制了當前狀態(tài)的5000個市民。
當然,這些狀態(tài)要不斷更新。這里使用線程每100毫秒刷新一次,這些功能在refresh.py文件的Refresh類中,代碼如下:
from?PyQt5.QtCore?import?* from?params?import??* class?Refresh(QThread): ????def?__init__(self,?drawing): ????????super(Refresh,?self).__init__() ????????self.drawing?=?drawing ????def?run(self): ????????while?not?Params.success: ????????????try: ????????????????QThread.msleep(100) ????????????????#?刷新Drawing ????????????????self.drawing.update() ????????????????Params.current_time?+=?1 ????????????except: ????????????????pass
每次刷新Drawing,需要調(diào)用update方法,調(diào)用該方法后,Drawing就會調(diào)用自身的paintEvent方法重新繪制整個組件的內(nèi)容。
在paintEvent方法中,還調(diào)用了Person對象的update方法,該方法是我們自己編寫的,用于不斷更新每一個人的狀態(tài),這些狀態(tài)會根據(jù)多個參數(shù)進行協(xié)調(diào)。該方法屬于Person類,代碼如下:
def?update(self): ????????#?如果已經(jīng)隔離或者死亡了,就不需要處理了 ????????if?self.state?==?FREEZE?or?self.state?==?DEATH: ????????????return ????????#?處理已經(jīng)確診的感染者(即患者) ????????if?self.state?==?CONFIRMED?and?self.dead_time?==?0: ????????????destiny?=?random.randrange(1,10001)??#?幸運數(shù)字,[1,10000]隨機數(shù) ????????????if?destiny?>=?1?and?destiny?<=?int(Params.fatality_rate?*?10000): ????????????????#?幸運數(shù)字落在死亡區(qū)間 ????????????????dt?=?int(sp.random.normal(Params.dead_time,Params.dead_variance)) ????????????????self.dead_time?=?self.confirmed_time?+?self.dead_time ????????????else: ????????????????self.dead_time?=?-1???#?逃過了死神的魔爪 ????????if?self.state?==?CONFIRMED?and?Params.current_time?-?self.confirmed_time?>=?Params.hospital_receive_time: ????????????#?如果患者已經(jīng)確診,且(世界時刻-確診時刻)大于醫(yī)院響應時間,即醫(yī)院準備好病床了,可以抬走了 ????????????bed?=?Hospital().pick_bed()??#?查找空床位 ????????????if?bed?==?None: ????????????????#?沒有空床位,報告需求床位數(shù) ????????????????if?not?self.need_bed: ????????????????????Hospital().need_bed_count?+=?1 ????????????????????self.need_bed?=?True ????????????else: ????????????????#?安置病人 ????????????????self.used_bed?=?bed ????????????????self.state?=?FREEZE ????????????????self.x?=?bed.x?+?Hospital().bed_size?//?2 ????????????????self.y?=?bed.y?+??Hospital().bed_size?//?2 ????????????????if?self.need_bed?and?Hospital().need_bed_count?>?0: ????????????????????Hospital().need_bed_count?-=?1 ????????????????bed.is_empty?=?False ????????#?處理病死者 ????????if?(self.state?==?CONFIRMED?or?self.state?==?FREEZE)?and?Params.current_time?>=?self.dead_time?and?self.dead_time?>?0: ????????????self.state?=?DEATH??????????????????????????#?患者死亡 ????????????personpool.Persons().latency_persons.remove(self)??????#?已經(jīng)死亡,無法傳染別人,需要從確診者中刪除 ????????????Hospital().empty_bed(self.used_bed)?????????#?騰出床位 ????????????if?Hospital().need_bed_count?>?0: ????????????????Hospital().need_bed_count?-=?1 ????????#?增加一個正態(tài)分布用于潛伏期內(nèi)隨機發(fā)病時間 ????????latency_symptom_time?=?sp.random.normal(Params.virus_latency?/?2,25) ????????#?處理發(fā)病的潛伏期感染者 ????????if?Params.current_time?-?self.infected_time?>?latency_symptom_time?and?self.state?==?LATENCY: ????????????self.state?=?CONFIRMED??????????????????????????????????#?潛伏者發(fā)病 ????????????self.confirmed_time?=?Params.current_time??????????????#?刷新確診時間 ????????#?處理未隔離者的移動問題 ????????self.action() ????????#?處理健康人被感染的問題 ????????persons?=?personpool.Persons().persons ????????#?不是健康人,返回 ????????if?self.state?>=?LATENCY: ????????????return ????????#?通過一個隨機幸運值和安全距離決定感染其他人 ????????latency_persons?=?personpool.Persons().latency_persons.copy() ????????for?person?in?latency_persons: ????????????random_value?=?random.random() ????????????if?random_value?<?Params.broad_rate?and?self.distance(person)?<?Params.safe_distance: ????????????????self.be_infected() ????????????????break
update方法主要就是根據(jù)在params.py中的各種參數(shù)變量,以及隨機值,計算下一次狀態(tài)中潛伏期人數(shù)、感染人數(shù)、被隔離人數(shù)等數(shù)據(jù),并且在每次刷新頁面時更新這些數(shù)據(jù)。
以上的描述就是如何繪制表示5000個市民的狀態(tài)。右側各種數(shù)據(jù)并不是繪制在頁面上的,而是通過QtDesigner設計的右側的界面,然后將Drawing對象作為標準的組件放在了主界面的左側。設計界面如下圖所示:
然后通過pyuic將.ui文件生成.py文件,在程序中調(diào)用即可。這些組件的更新同樣是在前面給出的drawing方法中。
另外,這個仿真器還提供了動態(tài)設置參數(shù)的功能。這是通過另外一個程序實現(xiàn)的,兩個程序通過socket通訊。這個設置程序同樣是通過QtDesigner設計的,設計界面如下圖所示。
在設置程序中,通過Transmission類的send_command方法向仿真器發(fā)布命令,例如,更新床位數(shù)的代碼如下:
from?PyQt5.QtWidgets?import?* from?socket?import?* class?Transmission: ????def?__init__(self,ui): ????????self.ui?=?ui ????????self.host?=?'localhost' ????????self.port?=?5678 ????????self.addr?=?(self.host,?self.port) ??????#?向仿真器發(fā)布命令 ????def?send_command(self,?command,?value?=?None): ????????tcp_client_socket?=?socket(AF_INET,?SOCK_STREAM) ????????tcp_client_socket.connect(self.addr) ????????if?value?==?None: ????????????value?=?0 ????????data?=?command?+?':'?+?str(value) ????????tcp_client_socket.send(('%s\r\n'?%?data).encode(encoding='utf-8')) ????????data?=?tcp_client_socket.recv(1024) ????????result?=?data.decode('utf-8').strip() ????????tcp_client_socket.close() ????????return?result ?????#?更新床位數(shù) ????def?update_bed_count(self): ????????print(self.ui.horizontalSliderBedCount.value()) ????????result?=?self.send_command('add_bed_count',self.ui.horizontalSliderBedCount.value()) ????????if?result?==?'ok': ????????????QMessageBox.information(self.ui.centralwidget,?'消息',?f'成功添加了{self.ui.horizontalSliderBedCount.value()}張床位',?QMessageBox.Ok)
在仿真器端,通過Receiver以及TCPServer來接收設置程序發(fā)過來的命令,如果成功設置,返回ok。Receiver類以及相關的代碼如下:
以上就是這個病毒傳播仿真器的基本實現(xiàn)方法,其中涉及到了大量PyQt5的知識,如果大家想詳細了解PyQt5技術,可以參考我的《PyQt5(Python)開發(fā)與實戰(zhàn)視頻課程》課程。另外,《冠狀病毒傳播仿真器的原理和實現(xiàn)(Python版)》視頻課程即將推出,歡迎關注。
from?socketserver?import?(TCPServer?as?TCP,StreamRequestHandler?as?SRH) from?common?import?* from?params?import?* from?hospital?import?* from?PyQt5.QtCore?import?* import?sys #?響應客戶端請求事件的類 class?MyRequestHandler(SRH): ????def?handle(self): ???????#?讀取客戶端發(fā)送的數(shù)據(jù) ????????data?=?str(self.rfile.readline(),'utf-8') ????????index?=?data.find(':') ????????command?=?data[:index] ????????value?=?data[index?+?1:] ????????value?=?int(value) ?????????????#?執(zhí)行具體的命令 ????????if?command?==?'add_bed_count': ????????????Params.hospital_bed_count?+=??value ????????????Hospital().free_bed_count?=?Hospital().free_bed_count?+?value ????????????Hospital().compute(value) ????????elif?command?==?'set_flow_intention': ????????????Params.average_flow_intention?=?value?/?100 ????????elif?command?==?'set_broad_rate': ????????????Params.broad_rate?=?value?/?100 ????????elif?command?==?'set_latency': ????????????Params.virus_latency?=?value?*?10 ????????elif?command?==?'close': ????????????Params.app.quit() ????????self.wfile.write(b'ok\r\n') #?在線程中監(jiān)聽客戶端的請求 class?Receiver(QThread): ????tcp_server?=?None ????def?__init__(self): ????????super(Receiver,self).__init__() ????????self.host?=?'' ????????self.port?=?5678 ????????self.addr?=?(self.host,self.port) ????????Receiver.tcp_server?=?TCP(self.addr,?MyRequestHandler) ????def?run(self): ????????Receiver.tcp_server.serve_forever()
個人簡介
李寧,沈陽歐瑞科技創(chuàng)始人,寧哥教育創(chuàng)始人,暢銷書作家,51CTO金牌講師,企業(yè)內(nèi)訓講師,擁有超過20年軟件開發(fā)和培訓經(jīng)驗。曾經(jīng)出版超過40本IT暢銷書,代表作有《Python爬蟲技術:深入理解原理、技術與開發(fā)》、《Python從菜鳥到高手》,制作視頻課程超過1000小時,擁有學員和讀者數(shù)百萬。 主要使用的技術包括Python、Go、JavaScript、Java、Flutter等。目前正在帶領團隊開發(fā)超平臺開發(fā)工具UnityMarvey,使用自研發(fā)的Ori語言,可以同時跨操作系統(tǒng)、數(shù)據(jù)庫、云平臺等多個平臺,通過超布局技術實現(xiàn)可視化UI設計,支持客戶端服務端一體化技術。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
新聞標題:冠狀病毒傳播仿真器的原理和實現(xiàn)(Python版)-創(chuàng)新互聯(lián)
文章位置:http://chinadenli.net/article24/desije.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、網(wǎng)站改版、全網(wǎng)營銷推廣、App開發(fā)、品牌網(wǎng)站制作、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)