Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 久久国产精品久久,亚洲一区二区免费看,国内精品一区二区三区αv

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          開發(fā)環(huán)境整理

          開發(fā)環(huán)境整理

          、JDK1.8

          • 環(huán)境變量配置

          變量名:JAVA_HOME ,變量值:C:\Program Files\Java\jdk1.8.0_171(這里填你自己選擇的安裝路徑!!!)

          變量名:CLASSPATH , 變量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一點(diǎn))。

          配置系統(tǒng)環(huán)境變量Path 雙擊Path-->新建-->添加“%JAVA_HOME%\bin”-->將這一行變量上移到最頂端-->完成

          2、navicat破解版

          鏈接:https://pan.baidu.com/s/1TAAWObIqxHjVzxdE3D66lQ 提取碼:8drs

          3、Xhell&Xftp破解版

          鏈接:https://pan.baidu.com/s/1omBtBs-RxmVIcX0AmEdMWw 提取碼:ikwv

          4、IDEA2019破解版

          鏈接:https://pan.baidu.com/s/1tObVs9gn4NNAEVjh29cT1Q 提取碼:x89j

          5、VS code

          https://code.visualstudio.com/Download

          微軟提供的前端開發(fā)工具,我用來代替notpad++,對(duì)文件格式化支持比較好

          插件安裝:

          1. auto close tag自動(dòng)關(guān)閉標(biāo)簽,在開始標(biāo)記的結(jié)束括號(hào)中鍵入后,將自動(dòng)插入結(jié)束標(biāo)記
          2. Auto Comment Blocks自動(dòng)插入注釋行
          3. Auto Rename Tag自動(dòng)重命名配對(duì)的HTML / XML標(biāo)記
          4. Auto Complete Tag結(jié)合了自動(dòng)關(guān)閉標(biāo)簽與同時(shí)修改同步標(biāo)簽
          5. Beautify美化代碼參考資料
          6. Code Runner可以直接運(yùn)行多種語言的代碼片段和文件
          7. Code Spell Checker代碼拼寫檢查工具
          8. Drat支持 Dart編程語言,并提供有效編輯,重構(gòu),運(yùn)行和重新加載Flutter 移動(dòng)應(yīng)用程序和AngularDartWeb應(yīng)用程序的工具。
          9. Debugger for Chrome從VS Code調(diào)試在Google Chrome中運(yùn)行的JavaScript代碼。
          10. EditorConfig for VS Code

          EditorConfig幫助開發(fā)人員定義和維護(hù)一致的編碼風(fēng)格在不同的編輯器和IDE。 EditorConfig項(xiàng)目包含一個(gè)文件格式定義編碼風(fēng)格和文本編輯器插件的集合。 EditorConfig文件易于閱讀并且他們與版本控制器很好地合作。

          1. ESLint

          代碼檢查工具

          1. filesize

          實(shí)時(shí)查看當(dāng)前文件的大小

          1. Flutter

          Flutter移動(dòng)應(yīng)用程序的支持,以及對(duì)Dart編程語言的支持。

          1. Git History

          查看git歷史與log,搜索等(包括git log)

          1. GitLens — Git supercharged

          GitLens只是幫助您更好地理解代碼。快速瀏覽一下,為什么以及何時(shí)更改了行或代碼塊。跳過歷史記錄,以獲得有關(guān)代碼演變的方式和原因的進(jìn)一步見解

          1. IntelliSense for CSS class names in HTML

          CSS 類名智能提示,可以在html與css中進(jìn)行智能提示

          1. HTMLHint

          HTML 靜態(tài)檢查規(guī)則

          1. Image preview

          在左側(cè)可以預(yù)覽圖片和懸停中顯示圖片

          1. Import Cost

          在VS代碼編輯器中導(dǎo)入的程序包的大小

          1. JavaScript (ES6) code snippets

          ES6的代碼片段

          1. JavaScript Snippet Pack

          JS代碼片段補(bǔ)全

          1. language-stylus

          Stylus文件添加語法高亮

          1. stylelint

          格式化css代碼 配置參考https://stylelint.io/user-guide/configuration/

          1. minapp

          微信小程序標(biāo)簽、屬性的智能補(bǔ)全(同時(shí)支持原生小程序、mpvue 和 wepy 框架,并提供 snippets)

          1. Node.js Modules Intellisense

          在import語句中自動(dòng)完成Node.js模塊

          1. Open in Browser

          在vscode中打開瀏覽器訪問

          1. Path Intellisense

          自動(dòng)路徑補(bǔ)全

          1. Prettier - Code formatter

          格式化代碼

          1. Pug (Jade) snippets

          pug語法提示

          1. Scss

          縮進(jìn)Sass語法高亮

          1. TypeScript Importer

          自動(dòng)搜索工作空間文件中的TypeScript定義,并將所有已知符號(hào)作為完成項(xiàng)提供,以允許代碼完成。

          1. Vetur

          代碼格式化

          1. vscode-element-helper

          用element的就知道它的好,支持element代碼自動(dòng)補(bǔ)全

          1. vscode-icons

          在vscode顯示文件圖標(biāo)

          1. vue 2 Snippets

          vue 代碼提示

          1. Vue/Vuex TypeScript Snippets

          支持typescript的代碼提示與生成片段

          1. VueHelper

          vue 代碼提示

          6、Maven

          https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip

          • 環(huán)境變量配置

          在“新建系統(tǒng)變量”中輸入變量名MAVEN_HOME,并將變量值設(shè)置為安裝路徑,在這里為D:\apache-maven-3.3.9

          在“系統(tǒng)變量(S)”中,選中“Path變量”,在其變量值的末尾加上%MAVEN_HOME%\bin(注意:跟前面變量值要以英文分號(hào)間隔)。

          在windows上按快捷鍵Win+R,在命令行窗口中輸入mvn -v,如果顯示maven基本信息,則表示maven環(huán)境變量搭建成功。

          • 配置文件修改

          1、設(shè)置國(guó)內(nèi)阿里云鏡像

          mirrors節(jié)點(diǎn)內(nèi)添加

              <mirror>
                <id>nexus-aliyun</id>
                <mirrorOf>*</mirrorOf>
                <name>Nexus aliyun</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public</url>
              </mirror>

          2、默認(rèn)采用jdk1.8編譯

          profiles節(jié)點(diǎn)內(nèi)添加

          <profile>
                <id>jdk-1.8</id>
                <activation>
                  <activeByDefault>true</activeByDefault>
                  <jdk>1.8</jdk>
                </activation>
                <properties>
                  <maven.compiler.source>1.8</maven.compiler.source>
                  <maven.compiler.target>1.8</maven.compiler.target>
                  <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
                </properties>
              </profile>

          7、Git

          8、node.js

          相當(dāng)于前端的maven,下載地址:https://nodejs.org/en/

          cmd 配置鏡像

          npm config set registry https://registry.nmp.taobao.org/

          器之心整理

          參與:思源、一鳴

          在項(xiàng)目開發(fā)中,優(yōu)秀的代碼自動(dòng)補(bǔ)全工具可以提升工作效率。然而,近來的 IDE 基本都使用搜索方法進(jìn)行補(bǔ)全,在一些場(chǎng)景下效果不佳。近日,有開源項(xiàng)目用深度學(xué)習(xí)模型進(jìn)行代碼補(bǔ)全,顯示出非常有潛力的效果。

          近日,Reddit 上的一篇帖子引起了網(wǎng)友的熱議。帖子作者「mlvpj」稱:

          「我們使用深度學(xué)習(xí)完成了一個(gè)簡(jiǎn)單的項(xiàng)目,可以自動(dòng)進(jìn)行 Python 代碼補(bǔ)全。」

          根據(jù)介紹,該項(xiàng)目基于 LSTM 模型,訓(xùn)練后,負(fù)責(zé)對(duì)代碼的缺失部分進(jìn)行補(bǔ)全。評(píng)價(jià)模型的方法是判斷節(jié)省了多少的按鍵信息——即模型給出長(zhǎng)度為 L 的代碼建議,如果和真實(shí)的代碼匹配,則節(jié)省 L - 1 個(gè)鍵入操作。實(shí)驗(yàn)結(jié)果說明,大約有 30%-50% 的鍵入成本可以節(jié)省下來。

          作者在帖子中表示,他們接下來會(huì)嘗試不同的架構(gòu),并提高推斷的表現(xiàn)。而現(xiàn)在的模型推斷很慢,不能實(shí)際使用。作者已在 GitHub 開源了項(xiàng)目代碼:

          鏈接地址: https://github.com/vpj/python_autocomplete

          和 IDE 的自動(dòng)補(bǔ)全有什么區(qū)別

          該項(xiàng)目對(duì) Python 代碼的自動(dòng)補(bǔ)全與傳統(tǒng) IDE(如 PyCharm)等不同。IDE 補(bǔ)全基于檢索方法,需要從已有代碼中進(jìn)行搜索。

          以 PyCharm 中的基本補(bǔ)全(Basic Completion)方法為例。基本補(bǔ)全可幫助補(bǔ)全可見區(qū)域的類、方法、關(guān)鍵詞代碼。使用時(shí),PyCharm 會(huì)分析補(bǔ)全使用情況,并提供當(dāng)前位置可能的選擇。如果是對(duì)空間、參數(shù)或變量聲明進(jìn)行補(bǔ)全,則 PyCharm 會(huì)基于類別提供一系列可能的命名。

          當(dāng)出現(xiàn)已定義的類、函數(shù)、模塊和變量時(shí),基本補(bǔ)全就會(huì)啟動(dòng)。

          此外,PyCharm 也提供智能補(bǔ)全等其他補(bǔ)全功能,但基本上都需要對(duì)已有文本進(jìn)行搜索,根據(jù)位置和類型判斷補(bǔ)全的方法。這些方法都沒有配置機(jī)器學(xué)習(xí)模型。

          Pycharm 的自動(dòng)補(bǔ)全介紹:https://www.jetbrains.com/help/pycharm/auto-completing-code.html

          深度學(xué)習(xí)怎樣腦補(bǔ)缺失 TF 代碼

          最常用的 PyCharm 自動(dòng)補(bǔ)全也能省很多功夫,但它需要 IDE 能檢索到你的代碼文件或庫,而且補(bǔ)全會(huì)提供多個(gè)可能的選項(xiàng)。但是在本項(xiàng)目實(shí)驗(yàn)的工具中,LSTM 會(huì)根據(jù)上下文語義確定最可能調(diào)用的函數(shù),因此它能節(jié)省更多的成本。作者表示如果使用束搜索,那么一次能預(yù)測(cè) 10 多個(gè)字符,不過這樣對(duì)于實(shí)際使用還是有點(diǎn)低效。

          在訓(xùn)練深度補(bǔ)全模型前,我們需要先建立訓(xùn)練集。開發(fā)者會(huì)在清洗評(píng)論、標(biāo)注和空行后,構(gòu)建比較干凈的 Python 代碼。然后,模型會(huì)在這些數(shù)據(jù)上進(jìn)行訓(xùn)練與預(yù)測(cè)。在數(shù)據(jù)預(yù)處理上,開發(fā)者發(fā)現(xiàn)通過 tokenizing Python 代碼,模型效果比通過 BPE 編碼的字符級(jí)預(yù)測(cè)效果還要好。作者提供了一個(gè)簡(jiǎn)單的預(yù)訓(xùn)練模型,它是在整個(gè) TensorFlow 項(xiàng)目的 models 代碼中訓(xùn)練的。

          下圖就是作者在驗(yàn)證集中測(cè)試的驗(yàn)證樣本。綠色的字符表示自動(dòng)補(bǔ)全的起始位置,用戶需要按下 Tab 鍵選擇開始補(bǔ)全。綠色及后面高亮的灰色字符是自動(dòng)補(bǔ)全的結(jié)果。

          如上所示為驗(yàn)證樣本中的自動(dòng)補(bǔ)全效果。與代碼生成類似,粗略看起來,似乎效果非常不錯(cuò),但實(shí)際上會(huì)有很多不合理的地方。不過有意思的是,自動(dòng)補(bǔ)全中所有字符串都只有一個(gè)占位操作,這也是非常合理的處理方法。

          樣本中自動(dòng)補(bǔ)全的起始和結(jié)束位置都是隨機(jī)的,也就是說代碼可能補(bǔ)全到「tensorfl」就結(jié)束了,并不會(huì)補(bǔ)全完整的標(biāo)識(shí)符「tensorflow」。這在實(shí)際場(chǎng)景中用處非常有限,因此作者將生成結(jié)束位置限制為終止 token 而修復(fù)問題。目前自動(dòng)補(bǔ)全能完成多種 operator,且當(dāng)我們?cè)黾邮阉鞯拈L(zhǎng)度時(shí),它完成的代碼長(zhǎng)度會(huì)更多。

          整個(gè)模型的主體都是 LSTM,它在 TensorFlow 模型代碼庫訓(xùn)練后能捕捉非常豐富的 TensorFlow API。如下所示為自動(dòng)補(bǔ)全模型的主體代碼,基本上簡(jiǎn)單的一個(gè) LSTM 就能搞定:

          網(wǎng)友評(píng)價(jià)

          項(xiàng)目開源后,有些網(wǎng)友對(duì)作者提出了質(zhì)疑:

          「我們已經(jīng)有很多很好用的自動(dòng)補(bǔ)全工具了,比如 kite(一個(gè)可以在 IDE 上使用的插件),為什么還要費(fèi)心搞個(gè)機(jī)器學(xué)習(xí)模型?」

          在討論中,有人提出,一些無良的自動(dòng)補(bǔ)全工具會(huì)悄悄上傳代碼到他們的服務(wù)器中,(而自行訓(xùn)練的深度學(xué)習(xí)模型不存在這個(gè)問題)。

          也有人提出,其實(shí)不一定要用 LSTM 模型,隱馬爾科夫模型在處理序列數(shù)據(jù)上效果也很好。

          此外,也有網(wǎng)友建議使用 CuDNN 加速 LSTM 的推斷過程。這樣能大大提升推斷速度,集成到 IDE 中也就有了可能。

          對(duì)于使用深度學(xué)習(xí)自動(dòng)補(bǔ)全代碼,機(jī)器之心的讀者們有什么想法呢?歡迎留言討論。

          擊上方“java進(jìn)階架構(gòu)師”,選擇右上角“置頂公眾號(hào)

          20大進(jìn)階架構(gòu)專題每日送達(dá)

          進(jìn)階架構(gòu)精品專題

          • Mysql優(yōu)化專題(★★★★)
          • 網(wǎng)絡(luò)協(xié)議專題(★★★★)
          • 其余18大專題,請(qǐng)?jiān)谥黜摬藛螜诓榭?/strong>
          • 后臺(tái)回復(fù)【加群】,獲取BAT真實(shí)面經(jīng)

          忘了redis從哪個(gè)版本開啟,能夠根據(jù)輸入的部分命令前綴給出提示,即自動(dòng)補(bǔ)全。接下來筆者介紹基于redis實(shí)現(xiàn)這個(gè)很酷的功能。

          about sorted set

          假設(shè)結(jié)果中有mara,marabel,marcela。現(xiàn)在我們輸入mar,就能得到這三個(gè)名字,并且輸出結(jié)果按照字典排序。在實(shí)現(xiàn)這個(gè)需求之間,我們先簡(jiǎn)單介紹sorted set。

          大家都知道sorted set是按照score排序的:

          127.0.0.1:6380> zadd test 85 sida
          127.0.0.1:6380> zadd test 80 xiaolang
          127.0.0.1:6380> zadd test 60 afei
          127.0.0.1:6380> zadd test 90 chenssy
          127.0.0.1:6380> zadd test 98 yunaiv
          127.0.0.1:6380> zrange test 0 -1
          1) "afei"
          2) "xiaolang"
          3) "sida"
          4) "chenssy"
          5) "yunaiv"
          

          但是如果score都一樣,sorted set是按照什么排序的呢?是按照字典排序的:

          127.0.0.1:6380> zadd exam 0 sida
          127.0.0.1:6380> zadd exam 0 xiaolang
          127.0.0.1:6380> zadd exam 0 chenssy
          127.0.0.1:6380> zadd exam 0 yunaiv
          127.0.0.1:6380> zadd exam 0 afei
          127.0.0.1:6380> zrange exam 0 -1
          1) "afei"
          2) "chenssy"
          3) "sida"
          4) "xiaolang"
          5) "yunaiv"
          

          這是sorted set一個(gè)非常重要的特性,也是我們自動(dòng)補(bǔ)全需求的一個(gè)要點(diǎn)。但是這還不夠,離我們的最終需求還有一段路要走。幸運(yùn)的是sorted set還有另一個(gè)很酷的命令:ZRANK。這個(gè)命令能知道你要查詢的key在sorted set中的位置:

          127.0.0.1:6380> zrank exam sida
          (integer) 2
          127.0.0.1:6380> zrank exam yunaiv
          (integer) 4
          127.0.0.1:6380> zrange exam 2 4
          1) "sida"
          2) "xiaolang"
          3) "yunaiv"
          

          到這里感覺離我們實(shí)現(xiàn)自動(dòng)補(bǔ)全的第一個(gè)版本非常接近了,我們能得到sorted set中按照字典排序后任意一個(gè)member及其后面N個(gè)member。

          簡(jiǎn)單實(shí)現(xiàn)

          為了實(shí)現(xiàn)最終的自動(dòng)補(bǔ)全,我們需要付出一些代價(jià):空間

          意思是,對(duì)于某個(gè)準(zhǔn)備添加到sorted set中的member,例如afei,我們不僅要把完整的詞(afei)添加到sorted set中,而且還要添加所有可能的前綴(a, af, afe, afei)。這里為了解決某個(gè)詞是真正的member還是某個(gè)member的前綴(例如bar既是一個(gè)完整的詞,也是某個(gè)member例如bark的可能前綴),我們加了一個(gè)小把戲,即在真正member的后面增加一個(gè)特殊字符,例如"$",那么afei這個(gè)member就會(huì)添加下列這些詞:

          a, af, afe, afei, afei$
          

          現(xiàn)在假設(shè)我們需要添加三個(gè)詞:foo, bar, foobar 來進(jìn)行一些測(cè)試, 那么sorted set中就會(huì)有如下這些詞:

          127.0.0.1:6380> zrange autoc 0 -1
           1) "b"
           2) "ba"
           3) "bar"
           4) "bar$"
           5) "f"
           6) "fo"
           7) "foo"
           8) "foo$"
           9) "foob"
          10) "fooba"
          11) "foobar"
          12) "foobar$"
          

          離我們最終的目標(biāo)又要近了很多。現(xiàn)在假設(shè)用戶輸入"fo",那么為了實(shí)現(xiàn)自動(dòng)補(bǔ)全,我們需要執(zhí)行如下命令,仔細(xì)查看結(jié)果,foo$和foobar$就是我們需要的結(jié)果,只需要將特殊后綴$去掉即可(其他沒有以$結(jié)尾的詞全部忽略):

          127.0.0.1:6380> zrank autoc fo
          (integer) 5
          127.0.0.1:6380> zrange autoc 5 -1
          1) "fo"
          2) "foo"
          3) "foo$"
          4) "foob"
          5) "fooba"
          6) "foobar"
          7) "foobar$"
          

          更多詞的測(cè)試

          網(wǎng)址http://antirez.com/misc/female-names.txt 提供了近5000個(gè)名字。按照前面說的規(guī)則,將所有名字的所有可能前綴全部添加到sorted set中。假定用戶輸入member,那么只需要通過如下兩個(gè)命令,得到字典排序后用戶輸入的member后面的50個(gè)詞,然后只取$結(jié)尾的詞:

          127.0.0.1:6380> zrank autoc member
          (integer) 8
          127.0.0.1:6380> zrange autoc 8 50
          

          時(shí)間&空間復(fù)雜度

          根據(jù)官方文檔可知,zrank和zrange的事件復(fù)雜度都是O(log(N))。因此,即使數(shù)據(jù)量比較大,這種方案也是可行的。

          ZRANK key member
          起始版本:2.0.0
          時(shí)間復(fù)雜度:O(log(N))
          ZRANGE key start stop [WITHSCORES]
          起始版本:1.2.0
          時(shí)間復(fù)雜度:O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.
          

          那么需要多少內(nèi)存呢?

          假設(shè)在最糟糕的情況下,一個(gè)長(zhǎng)度為M的詞需要添加M+1個(gè)詞到sorted set中。那么如果有N個(gè)詞,總計(jì)需要添加N*(Ma+1)個(gè)詞到sorted set中,Ma是這N個(gè)詞的平均長(zhǎng)度。

          幸運(yùn)的是,實(shí)際情況遠(yuǎn)比這個(gè)要好得多,以近5000個(gè)名字為例,只需要添加大約15000個(gè)詞到sorted set中,因?yàn)檫@些名詞存在大量重復(fù)的前綴。以3個(gè)名字為例:marci,marcia,marcile。如果按照最糟糕的情況,需要添加3*(6+1)=21個(gè)詞到sorted set中,然而實(shí)際情況呢,只需要添加11個(gè)詞到sorted set中即可:

          m, ma , mar, marc, marci, marci$, marcia, marcia$, marcil, marcile, marcile$。
          

          而且,隨著樣本越來越大,重復(fù)的前綴會(huì)越大越多。

          所以,需要的內(nèi)存也還OK。是不是覺得美滋滋?哈

          查詢預(yù)測(cè)

          我們這次的自動(dòng)補(bǔ)全是按照字典排序,很多時(shí)候,這是我們需要的。但是也有一些情況,我們希望按照相似度來排序。例如google搜索那樣,搜索結(jié)果按照頻率和熱度等維度進(jìn)行排序。例如,當(dāng)用戶輸入ne,用戶應(yīng)該希望看到Netflix,news,new york times等這些熱門關(guān)鍵詞。

          這樣做起來就不那么容易了,如果要能達(dá)到根據(jù)頻率排序,我們需要一個(gè)特別的sorted set能以非阻塞的方式實(shí)時(shí)更新每個(gè)前綴的頻率:

          當(dāng)用戶輸入一個(gè)例如"foo"這種查詢,由于它的所有前綴為:"f", "fo", "foo"。那么對(duì)每個(gè)前綴都執(zhí)行命令:ZINCRBY <prefix> 1 foo ;如果用戶輸入"foobar",那么對(duì)每個(gè)前綴都執(zhí)行:ZINCRBY <prefix> 1 foobar;

          這種方法還有一個(gè)問題,許多自動(dòng)補(bǔ)全系統(tǒng)只需要展示TOP N個(gè)關(guān)鍵詞,假設(shè)N為10。但是我們這種方法,如果要計(jì)算TOP 10,我們需要取得關(guān)鍵詞遠(yuǎn)不止10個(gè),理論上我們要這個(gè)前綴作為key的sorted set中所有member都取出來。

          幸運(yùn)的是,從統(tǒng)計(jì)學(xué)上來講,每個(gè)對(duì)于sorted set中有300個(gè)member的前綴,就能得到TOP 5關(guān)鍵詞。如果查詢?cè)筋l繁,它的得分越高,它最終被選中的概率也就越高。因此,我們要做的就是對(duì)搜索字符串的每個(gè)前綴:

          • 如果前綴作為key的sorted set中member數(shù)量還沒有達(dá)到300,那么只需要簡(jiǎn)單的對(duì)其zincrby即可;
          • 如果前綴作為key的sorted set中member數(shù)量已經(jīng)達(dá)到了300,我們將那些得分比較低的member刪除,增加新的member進(jìn)來,從而達(dá)到關(guān)鍵詞頻率不斷迭代的效果。

          這個(gè)方法一下子可能理解不過來,沒關(guān)系,舉個(gè)栗子。假設(shè)現(xiàn)在用戶輸入了next,其前綴n為key的sorted set中已經(jīng)有netflix(100), news(120), new york(80), near(23), nequ(1)。由于這個(gè)前綴對(duì)應(yīng)的sorted set中的member數(shù)量還沒有300,所以,執(zhí)行:zincrby n 1 next。其中n是前綴,next是用戶輸入的關(guān)鍵詞。假設(shè)現(xiàn)在用戶輸入了next,其前綴n為key的sorted set中已經(jīng)有netflix(100), news(120), new york(80), near(23), 省略295個(gè)score大于1的關(guān)鍵詞, nequ(1)。由于這個(gè)前綴對(duì)應(yīng)的sorted set中的member數(shù)量達(dá)到了300,所以,先刪除得分比較低的nequ,再執(zhí)行:zincrby n 1 next。

          這個(gè)方法跟用戶輸入關(guān)鍵詞分布有很大的關(guān)聯(lián)性,如果用戶輸入的所有關(guān)鍵詞頻率比較接近,那么這個(gè)方法得到的數(shù)據(jù)并不是很可靠。但是我們知道這不是問題,因?yàn)樗阉骶褪墙^大部分人在搜索那一小部分關(guān)鍵詞集合。

          清理階段

          由于上面提到的搜索長(zhǎng)尾效應(yīng),我們可以講那些得分為1的member清理掉,因?yàn)橛脩魧?duì)這些關(guān)鍵詞幾乎沒有任何關(guān)注度。清理操作還能夠減少使用內(nèi)存,從而讓redis保存更多更有用的數(shù)據(jù)。

          知識(shí)總結(jié)

          • sorted set數(shù)據(jù)結(jié)構(gòu)中,如果member的score一樣,那么按照字典排序。
          • zrank命令能得到指定member在結(jié)果中的位置,并可以取排在它后面N個(gè)member。
          • zincrby能給指定的sorted set中的member加分。

          參考:http://oldblog.antirez.com/post/autocomplete-with-redis.html

          來源:轉(zhuǎn)載自阿飛的博客


          主站蜘蛛池模板: 亚洲成在人天堂一区二区| 精品女同一区二区| 精品乱人伦一区二区三区| 波多野结衣一区二区三区 | 久久久久人妻一区精品色| 国产成人综合亚洲一区| 精品无码人妻一区二区三区18| 国产成人AV一区二区三区无码| 亚洲国产成人久久一区WWW | 国产免费一区二区三区| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 香蕉在线精品一区二区| 精品一区二区高清在线观看| 午夜性色一区二区三区不卡视频| 国产伦精品一区二区三区女| 人妻aⅴ无码一区二区三区| 久久国产视频一区| 少妇人妻精品一区二区三区| 无码日韩精品一区二区三区免费 | 午夜精品一区二区三区在线观看| 影音先锋中文无码一区| 亚洲国产美女福利直播秀一区二区| 国产一区二区三区久久| 色欲精品国产一区二区三区AV| 亚洲线精品一区二区三区| 久久久精品人妻一区二区三区 | 国产精品99无码一区二区| 精品国产亚洲一区二区在线观看| 一区二区三区免费高清视频| 人妻无码一区二区三区| 亚洲第一区精品日韩在线播放| 鲁大师成人一区二区三区| 精品国产一区二区22| 好看的电影网站亚洲一区| 日韩内射美女人妻一区二区三区| 3D动漫精品一区二区三区| 怡红院AV一区二区三区| 视频一区二区在线观看| 久久婷婷久久一区二区三区| 无码av免费毛片一区二区| 国产一区二区三区不卡在线观看|