-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
bilibili歷史版本(豌豆莢bilibili歷史版本)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于bilibili歷史版本的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務客戶遍布全球各地,如需了解相關業(yè)務請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、b站歷史記錄能保存多久
根據(jù)情況而定。b站即嗶哩嗶哩,其中的歷史記錄理論上可以一直保存,因為嗶哩嗶哩的歷史記錄是云存儲的,但根據(jù)bilibili規(guī)則保存上限為100條,超過100條的內(nèi)容會往前覆蓋。
演示機型:Iphone 12&&華為P40&&小米11 系統(tǒng)版本:iOS14.4&&EMUI11&&MIUI12.0.7 APP版本:bilibili 6.24.0
根據(jù)情況而定。b站即嗶哩嗶哩,其中的歷史記錄理論上可以一直保存,因為嗶哩嗶哩的歷史記錄是云存儲的,但根據(jù)bilibili規(guī)則保存上限為100條,超過100條的內(nèi)容會往前覆蓋。
二、bilibili歷史紀錄在哪個系統(tǒng)文件里
在內(nèi)部儲存的文件夾里。
打開文件管理,點擊【內(nèi)部儲存】-【Android】-【data】-【tv.danmaku.bili】-【download】,接著連續(xù)點擊進入三個文件夾,找到【video.m4s】文件,該文件就是緩存的視頻。
三、可持久化數(shù)據(jù)結(jié)構(gòu)
最近在刷MIT 6.851,記錄下筆記。
可持久化數(shù)據(jù)結(jié)構(gòu)就是能存儲、查詢數(shù)據(jù)的歷史版本的數(shù)據(jù)結(jié)構(gòu)。
http://hypirion.com/musings/understanding-persistent-vector-pt-1
https://www.geeksforgeeks.org/persistent-data-structures/?ref=lbp
可持久化數(shù)據(jù)結(jié)構(gòu)簡介
MIT 6.854j-advanced-algorithms
很贊!!可惜沒video。
Making Data Structures Persistent
太長沒看
總結(jié)了下大致包括如下領域應用:
并發(fā)事務的原子性(便于Rollback)、隔離性。
https://io-meter.com/2016/09/03/Functional-Go-persist-datastructure-intro/
同上。
便于實現(xiàn)diff,rollback
可持久化數(shù)據(jù)結(jié)構(gòu)最初設計出來的目的是為了在高維查詢中降維,把其中一個維度當做時間,用可持久化數(shù)據(jù)結(jié)構(gòu)處理效率更高
可以看下MIT 6.851老師的介紹。
這種思想在高維處理中很常見,比如求二維range sum query時候,把其中一個維度當時間、拿來做掃描線也是這種降維思路(見《算法競賽進階指南》):
可持久化數(shù)據(jù)結(jié)構(gòu)簡介
自己輪一個.net可持久化庫 Persistent Data Structures 下面有討論use case
中文翻譯見 可持久化數(shù)據(jù)結(jié)構(gòu)
Functional Go: 持久化數(shù)據(jù)結(jié)構(gòu)簡介
這部分可以看6.851視頻
6.851把鏈式數(shù)據(jù)結(jié)構(gòu)的模型叫pointer machine model。對于基于pointer machine model的數(shù)據(jù)結(jié)構(gòu),有沒有通用的方法將他們改造成persistent?
note see https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-854j-advanced-algorithms-fall-2005/lecture-notes/persistent.pdf
video see https://www.bilibili.com/video/BV1iE411n7yJ
O(1)寫,讀時對于每個點都要執(zhí)行O(logm)的查詢。假設一次查詢要讀v個點,時間復雜度O(vlogm)
所以對寫友好,對讀不友好
看到這里有個問題:每個點的history放hashmap里不就行了?讀時也只需要O(1)的查找
但這樣做的話,hashmap不支持ceil操作,因此要支持ceil沒辦法只能用有序結(jié)構(gòu)、log級別查詢
(這里的假設是有個全局時間戳,而不是每個key對應一個自己的自增時間戳)
個人理解,想做可持久化key/value Map的話即可按這種方法,每個key對應的entry存放所有歷史值,這也可以看成是鄰接表。
說白了就是寫時分裂節(jié)點,從root開始分裂到要寫的點。將所有version的root存到字典里
上面兩個要么對寫不好,要么對讀不好,能否兼得?
難以置信,說白了就是給path copying方法中每個node加一個log cache,最后算出來的寫時amortized time complexity就是O(1)了。
What about non-tree data structures?
平衡樹怎么處理?
平衡樹要旋轉(zhuǎn),想想就感覺很難改造成持久化。6.854課件講的很粗沒懂。 算法競賽中常用的可持久化平衡樹一般就是 可持久化無旋轉(zhuǎn) Treap ,省去了旋轉(zhuǎn)可持久化的復雜。
a. fat nodes
每個點存的log從version queue變成version tree,查詢每個點時要從樹中找到最近祖先
b. path copying
沒區(qū)別
c. modification box
怎么找根節(jié)點?
i. pointer per version,可能多個pointer指向一個root
ii.存root tree,查詢時先找最近祖先
怎么修改old version
i. 修改時放box,滿了就分裂出來一個新節(jié)點
但這樣有問題:分裂出來的還是滿的,如果整條鏈都是滿的,每次修改復制全部,下次修改還得復制全部。而且這樣還不好存root,比如最右邊圖,代表0的root有倆
ii. 修改時放box,滿了就分裂出來一個新節(jié)點,但分裂時自動apply有用的log、丟棄沒用的log
What about non-tree data structures?
6.851有講,分裂成兩個節(jié)點,log分成兩部分,新節(jié)點拿一個子樹的log,新節(jié)點apply log直到自己的子樹,每部分丟棄自己用不到的。
6.851講了 太復雜沒聽懂。
網(wǎng)上關于可持久化數(shù)據(jù)結(jié)構(gòu)的優(yōu)質(zhì)資料都是算法競賽的,因此收集總結(jié)了下競賽常用的??戳讼禄径际莗artial persistent,有的是fully persistent,都沒用到modification box技術。
https://github.com/Misaka233/algorithm/blob/master/%E9%99%88%E7%AB%8B%E6%9D%B0%EF%BC%9A%E5%8F%AF%E6%8C%81%E4%B9%85%E5%8C%96%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E7%A0%94%E7%A9%B6.pdf
https://www.bilibili.com/video/BV1C4411u7rK?p=1
https://www.geeksforgeeks.org/persistent-trie-set-1-introduction/
和可持久化線段樹類似的方法,基于path copy實現(xiàn)partial persistence。
問題是每個點在拷貝時都要復制O(R)個指針,插入的時間復雜度為O(len*R)
查詢時先從字典(數(shù)組/哈希表)里找到指定version的root,然后訪問,O(len)
在競賽中常用的是可持久化01字典樹,比如xor問題,見 https://oi-wiki.org/ds/persistent-trie/ ,沒看懂
算法競賽中常用的可持久化平衡樹一般就是 可持久化無旋轉(zhuǎn) Treap ,省去了旋轉(zhuǎn)可持久化的復雜。
【AgOHの數(shù)據(jù)結(jié)構(gòu)】可持久化數(shù)組
https://www.luogu.com.cn/problem/P3919
方案:
a. fat nodes
每個節(jié)點放所有歷史,查詢時在所有歷史版本中找最近祖先版本
b. path copying
存到可持久化線段樹里。
為什么好好的線性結(jié)構(gòu)要樹化?直覺上理解,是為了分裂新版本時減少指針復制。
如果是稀疏數(shù)組,樸素方法太浪費空間了,可以基于動態(tài)開點來優(yōu)化空間存儲,見 https://io-meter.com/2016/11/06/functional-go-intro-to-hamt/
【AgOHの數(shù)據(jù)結(jié)構(gòu)】可持久化并查集
并查集基于數(shù)組,可持久化并查集就基于可持久化數(shù)組??沙志没瘮?shù)組用可持久化線段樹實現(xiàn),因此可持久化并查集用可持久化線段樹實現(xiàn)
《 可持久化數(shù)據(jù)結(jié)構(gòu)研究 》
不過文中寫的太簡略了,個人推測的維護方法為:
https://io-meter.com/2016/09/03/Functional-Go-persist-datastructure-intro/
討論支持如下操作的抽象數(shù)據(jù)結(jié)構(gòu)(ADT)如何可持久化:
a. 基于普通數(shù)組
只能copy on write
b. 基于可持久化數(shù)組/可持久化線段樹
問題是怎么處理新增節(jié)點、刪除節(jié)點?得想辦法魔改線段樹
c. 可持久化鏈表
d. 可持久化塊狀鏈表
e. 可持久化平衡樹
f. 文中提到的vector trie
名字挺騷的沒反應過來,看了一會發(fā)現(xiàn):這玩意就是可持久化數(shù)組(可持久化線段樹),只不過是多叉樹,叫“可持久化多叉線段樹”比較形象。文章也沒提怎么處理新增節(jié)點、刪除節(jié)點。
persistent-hash-table-implementation
a. 可持久化平衡樹
b. 還用hashmap,但是每個entry改造成fat node(存放所有l(wèi)og),查詢時先找到entry,再在所有l(wèi)og 中找最近祖先版本
c. 可持久化數(shù)組。
考慮到HashMap本來就能只用一個數(shù)組實現(xiàn)(解決沖突時用open addressing方法,不用Chaining),那么實現(xiàn)了可持久化數(shù)組就相當于實現(xiàn)了可持久化HashMap
d. Hash_trie
hash(key)的值存在trie里,value放到trie的葉子節(jié)點。優(yōu)化版本包括 Hash array mapped tries and Ctries
HAMT這名字起的很奇怪。原理就是塊狀hash trie(所謂塊狀是我自己起的名,指每個節(jié)點區(qū)分兒子時不是單純的比較某1位,而是比較某2位甚至多位)(或者理解成hash trie+動態(tài)開點多叉線段樹也行)(反正就是bitwise hash trie加上一堆優(yōu)化,懶得記就記hash trie就行了,真要自己實現(xiàn)的時候這些優(yōu)化trick也能想到)
文中講hamt的碰撞處理有點扯,個人理解可以chaining,可以open addressing。細節(jié)沒深究,可以看 論文 和 討論 。按作者的意思AMT是之前他提出的一種Trie的優(yōu)化,比Tenary search trie要好。
https://www.cnblogs.com/tedzhao/archive/2008/11/12/1332112.html
// TOOD
https://www.cnblogs.com/zinthos/p/3899565.html
Planar Point Location問題見
https://courses.csail.mit.edu/6.851/spring12/scribe/lec3.pdf
https://www.bilibili.com/video/BV1iE411n7yJ?p=3
http://acrossthesky.logdown.com/posts/712254-some-basic-data-structures
https://github.com/Misaka233/algorithm/blob/master/%E9%99%88%E7%AB%8B%E6%9D%B0%EF%BC%9A%E5%8F%AF%E6%8C%81%E4%B9%85%E5%8C%96%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E7%A0%94%E7%A9%B6.pdf
https://download.csdn.net/download/u011808175/6477705
樸素的方法是線段樹套線段樹,以便支持二維RMQ,時間復雜度O(logN*logN)。
個人理解,最優(yōu)的二維RMQ數(shù)據(jù)結(jié)構(gòu)應該是用modification box實現(xiàn)的可持久化值域線段樹,O(N)的構(gòu)造時間、空間,O(logN)的查詢。
如果統(tǒng)計操作具有“區(qū)間可加性”、“區(qū)間可減性”,那么該操作二維統(tǒng)計問題可以使用可持久化線段樹。
range minimum query中的min()操作其實不具有區(qū)間可減性,但是range minimum query問題可以歸約成range select query問題,進而可以歸約成range count query問題,而count()操作具有區(qū)間可加減性,因此也能用可持久化線段樹。
所以我們得到了一類二維統(tǒng)計問題的通用數(shù)據(jù)結(jié)構(gòu):對于可歸約成具有“區(qū)間可加性”、“區(qū)間可減性”統(tǒng)計操作的二維統(tǒng)計問題,可以使用可持久化線段樹存儲,以便支持快速查詢(統(tǒng)計)。
能否找到一類高維統(tǒng)計問題,具有通用的logN級別解?個人理解可以借鑒代數(shù)的思想,只要有區(qū)間可加減性的都能歸約成K維RMQ問題,用modification box實現(xiàn)的可持久化值域線段樹解決。
// TOOD 只是個人暢想,沒細想。
bigtable(hbase)可以看成外存模型下的可持久化map:
但需要注意的是刪除操作會真的刪掉之前的老版本數(shù)據(jù):
其實任何支持前綴匹配的db都能作為可持久化map,你只需要把rowkey設計成"key@@timestamp"即可
http://hbase.apache.org/book.html#reverse.timestamp
四、bilibili關閉歷史播放怎么開啟
bilibili關閉歷史播放開啟,步驟如下:
1. 第一步,點擊手機中的嗶哩嗶哩圖標,輸入賬號密碼登陸進入主頁后,點擊左上角的頭像圖標。
2.第二步,在彈出菜單中選擇歷史紀錄按鈕。
3.第三步,進入歷史記錄頁面后,點擊右上角的編輯按鈕。
4. 第四步,可以一個個勾選記錄,也可以直接點擊左下方的全選按鈕。
5. 第五步,點擊清除后,在彈出窗口中點擊確定按鈕。
6. 第六步,點擊確定后即可刪除記錄。
以上就是關于bilibili歷史版本相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
hobbies怎么讀音發(fā)音英語怎么讀(hobbies怎么讀英文發(fā)音)