算法 自動(dòng)采集列表
解決方案:算法自動(dòng)采集列表是一種高效的大數據處理方式
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 67 次瀏覽 ? 2022-12-27 05:09
算法自動(dòng)采集列表是一種高效的大數據處理方式,在互聯(lián)網(wǎng)時(shí)代發(fā)揮了重要作用。算法自動(dòng)采集列表的功能是收集大量的網(wǎng)絡(luò )數據,并根據用戶(hù)的需要進(jìn)行處理和存儲。通過(guò)使用算法自動(dòng)采集列表,可以快速、準確地從海量的信息中抽取有價(jià)值的數據,大大降低了人工采集信息所需要花費的時(shí)間和成本。
隨著(zhù)互聯(lián)網(wǎng)應用的不斷發(fā)展,電子商務(wù)、信息服務(wù)、物流外包、供應鏈創(chuàng )新、運營(yíng)優(yōu)化、IT服務(wù)業(yè)等各個(gè)行業(yè)都需要使用到算法自動(dòng)采集列表。這就需要一套實(shí)用而又安全可靠的方案來(lái)實(shí)現大數據采集。優(yōu)采云采集器是一個(gè)專(zhuān)門(mén)為企業(yè)客戶(hù)開(kāi)發(fā)的大數據采集平臺,常用于市場(chǎng)營(yíng)銷(xiāo)、競爭對手情報分析、供應商評估、價(jià)格監測以及新聞輿情監測等各個(gè)應用場(chǎng)合。
優(yōu)采云采集器具有安全性強、易于使用、成本低廉以及優(yōu)異性能幾大特征。它能夠快速有效地對各行各業(yè)的海量信息進(jìn)行處理并提取出有價(jià)值的數據,進(jìn)而帶來(lái)前所未有的市場(chǎng)競爭優(yōu)勢。此外,優(yōu)采云采集器也能夠通過(guò)語(yǔ)義分析來(lái)進(jìn)一步實(shí)時(shí)監測輿情,從而帶來(lái)快速準確的輿情風(fēng)向標。
此外,優(yōu)采云采集器還具有易部署、易擴充性強以及易上手幾大特征:不需要對原始代理進(jìn)行單獨部署就能夠實(shí)時(shí)直觀(guān)地看到代理IP是否正常工作;不需要對原始代理進(jìn)行單獨部署就能夠方便地對代理IP進(jìn)行擴充或者減少;不需要再去學(xué)習新語(yǔ)法就能夠快速上手使用優(yōu)采云端已有API庫中的內容。
總之,作為一套高效耐用并且具有強大實(shí)時(shí)直觀(guān)性功能的大數據處理方式,優(yōu)采云采集器無(wú)疑是當前市場(chǎng)上使用者必不可少的選擇之一。 查看全部
解決方案:算法自動(dòng)采集列表是一種高效的大數據處理方式
算法自動(dòng)采集列表是一種高效的大數據處理方式,在互聯(lián)網(wǎng)時(shí)代發(fā)揮了重要作用。算法自動(dòng)采集列表的功能是收集大量的網(wǎng)絡(luò )數據,并根據用戶(hù)的需要進(jìn)行處理和存儲。通過(guò)使用算法自動(dòng)采集列表,可以快速、準確地從海量的信息中抽取有價(jià)值的數據,大大降低了人工采集信息所需要花費的時(shí)間和成本。

隨著(zhù)互聯(lián)網(wǎng)應用的不斷發(fā)展,電子商務(wù)、信息服務(wù)、物流外包、供應鏈創(chuàng )新、運營(yíng)優(yōu)化、IT服務(wù)業(yè)等各個(gè)行業(yè)都需要使用到算法自動(dòng)采集列表。這就需要一套實(shí)用而又安全可靠的方案來(lái)實(shí)現大數據采集。優(yōu)采云采集器是一個(gè)專(zhuān)門(mén)為企業(yè)客戶(hù)開(kāi)發(fā)的大數據采集平臺,常用于市場(chǎng)營(yíng)銷(xiāo)、競爭對手情報分析、供應商評估、價(jià)格監測以及新聞輿情監測等各個(gè)應用場(chǎng)合。
優(yōu)采云采集器具有安全性強、易于使用、成本低廉以及優(yōu)異性能幾大特征。它能夠快速有效地對各行各業(yè)的海量信息進(jìn)行處理并提取出有價(jià)值的數據,進(jìn)而帶來(lái)前所未有的市場(chǎng)競爭優(yōu)勢。此外,優(yōu)采云采集器也能夠通過(guò)語(yǔ)義分析來(lái)進(jìn)一步實(shí)時(shí)監測輿情,從而帶來(lái)快速準確的輿情風(fēng)向標。

此外,優(yōu)采云采集器還具有易部署、易擴充性強以及易上手幾大特征:不需要對原始代理進(jìn)行單獨部署就能夠實(shí)時(shí)直觀(guān)地看到代理IP是否正常工作;不需要對原始代理進(jìn)行單獨部署就能夠方便地對代理IP進(jìn)行擴充或者減少;不需要再去學(xué)習新語(yǔ)法就能夠快速上手使用優(yōu)采云端已有API庫中的內容。
總之,作為一套高效耐用并且具有強大實(shí)時(shí)直觀(guān)性功能的大數據處理方式,優(yōu)采云采集器無(wú)疑是當前市場(chǎng)上使用者必不可少的選擇之一。
解決方案:03 增量爬蟲(chóng)技術(shù)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 107 次瀏覽 ? 2022-12-25 22:52
01 專(zhuān)注爬蟲(chóng)技術(shù)
聚焦爬蟲(chóng)也是主題爬蟲(chóng)。 專(zhuān)注爬蟲(chóng)技術(shù)增加了鏈接評估和內容評估模塊,其爬蟲(chóng)策略的重點(diǎn)是評估頁(yè)面內容和鏈接的重要性。
基于鏈接評估的爬蟲(chóng)策略主要將網(wǎng)頁(yè)作為半結構化文檔,其中收錄大量的結構信息,可以用來(lái)評估鏈接的重要性。 另一種方法是利用Web結構來(lái)評估鏈接的價(jià)值,即HITS法,通過(guò)計算每個(gè)被訪(fǎng)問(wèn)頁(yè)面的Authority權重和Hub權重來(lái)確定鏈接訪(fǎng)問(wèn)的順序。
基于內容評價(jià)的爬蟲(chóng)策略主要是應用類(lèi)似于文本的計算方法,提出Fish-Search算法,以用戶(hù)輸入的查詢(xún)詞為主題。 隨著(zhù)算法的進(jìn)一步改進(jìn),Shark-Search算法可以使用空間向量模型來(lái)計算頁(yè)面和主題的相關(guān)性大小。
面向主題的爬蟲(chóng)、面向需求的爬蟲(chóng):它會(huì )針對特定的內容爬取信息,并會(huì )盡可能保證信息和需求的相關(guān)性。 下面顯示了一個(gè)如何使用聚焦爬蟲(chóng)的簡(jiǎn)單示例。
import?urllib.request?????#?爬蟲(chóng)專(zhuān)用的包urllib,不同版本的Python需要下載不同的爬蟲(chóng)專(zhuān)用包?import?re?????#?正則用來(lái)規律爬取?keyname=""?????#?想要爬取的內容?key=urllib.request.quote(keyname)?????#?需要將你輸入的keyname解碼,從而讓計算機讀懂?for?i?in?range(0,5):???#?(0,5)數字可以自己設置,是淘寶某產(chǎn)品的頁(yè)數?????url="https://s.taobao.com/search%3F ... 2Bstr(i*44)?#?url后面加上你想爬取的網(wǎng)站名,然后你需要多開(kāi)幾個(gè)類(lèi)似的網(wǎng)站以找到其規則?#?data是你爬取到的網(wǎng)站所有的內容要解碼要讀取內容?????pat='"pic_url":"//(.*?)"'?#?pat使用正則表達式從網(wǎng)頁(yè)爬取圖片?#?將你爬取到的內容放在一個(gè)列表里面?????print(picturelist)?????#?可以不打印,也可以打印下來(lái)看看?????for?j?in?range(0,len(picturelist)):?????????picture=picturelist[j]?????????pictureurl="http://"+picture?????????#?將列表里的內容遍歷出來(lái),并加上http://轉到高清圖片?????????file="E:/pycharm/vscode文件/圖片/"+str(i)+str(j)+".jpg"?????????#?再把圖片逐張編號,不然重復的名字將會(huì )被覆蓋掉?????????urllib.request.urlretrieve(pictureurl,filename=file)?????????#?最后保存到文件夾?
02 通用爬蟲(chóng)技術(shù)
通用網(wǎng)絡(luò )爬蟲(chóng)是整個(gè)網(wǎng)絡(luò )爬蟲(chóng)。 其實(shí)現過(guò)程如下。
第五,當滿(mǎn)足爬蟲(chóng)系統設置的停止條件時(shí),停止爬蟲(chóng)。 在寫(xiě)爬蟲(chóng)的時(shí)候,一般都會(huì )設置相應的停止條件。 如果不設置停止條件,爬蟲(chóng)會(huì )繼續爬取,直到獲取不到新的URL地址。 如果設置了停止條件,爬蟲(chóng)會(huì )在滿(mǎn)足停止條件時(shí)停止爬行。 詳見(jiàn)圖2-5右下子圖。
通用爬蟲(chóng)技術(shù)的應用有不同的爬取策略,其中廣度優(yōu)先策略和深度優(yōu)先策略更為關(guān)鍵。 例如,深度優(yōu)先策略的實(shí)現是按照深度從低到高的順序訪(fǎng)問(wèn)下一級網(wǎng)頁(yè)鏈接。
下面是一個(gè)如何使用普通爬蟲(chóng)的例子。
'''?爬取京東商品信息:?????請求url:https://www.jd.com/?????提取商品信息:?????????1.商品詳情頁(yè)?????????2.商品名稱(chēng)?????????3.商品價(jià)格?????????4.評價(jià)人數?????????5.商品商家?'''?from?selenium?import?webdriver????#?引入selenium中的webdriver?from?selenium.webdriver.common.keys?import?Keys?import?time??def?get_good(driver):?????try:??????????#?通過(guò)JS控制滾輪滑動(dòng)獲取所有商品信息?????????js_code?=?'''?????????????window.scrollTo(0,5000);?????????'''?????????driver.execute_script(js_code)??#?執行js代碼??????????#?等待數據加載?????????time.sleep(2)??????????#?查找所有商品div?????????#?good_div?=?driver.find_element_by_id('J_goodsList')?????????good_list?=?driver.find_elements_by_class_name('gl-item')?????????n?=?1?????????for?good?in?good_list:?????????????#?根據屬性選擇器查找?????????????#?商品鏈接?????????????good_url?=?good.find_element_by_css_selector(?????????????????'.p-img?a').get_attribute('href')??????????????#?商品名稱(chēng)?????????????good_name?=?good.find_element_by_css_selector(?????????????????'.p-name?em').text.replace("\n",?"--")??????????????#?商品價(jià)格?????????????good_price?=?good.find_element_by_class_name(?????????????????'p-price').text.replace("\n",?":")??????????????#?評價(jià)人數?????????????good_commit?=?good.find_element_by_class_name(?????????????????'p-commit').text.replace("\n",?"?")??????????????good_content?=?f'''?????????????????????????商品鏈接:?{good_url}?????????????????????????商品名稱(chēng):?{good_name}?????????????????????????商品價(jià)格:?{good_price}?????????????????????????評價(jià)人數:?{good_commit}?????????????????????????\n?????????????????????????'''?????????????print(good_content)?????????????with?open('jd.txt',?'a',?encoding='utf-8')?as?f:?????????????????f.write(good_content)??????????next_tag?=?driver.find_element_by_class_name('pn-next')?????????next_tag.click()??????????time.sleep(2)??????????#?遞歸調用函數?????????get_good(driver)??????????time.sleep(10)??????finally:?????????driver.close()???if?__name__?==?'__main__':??????good_name?=?input('請輸入爬取商品信息:').strip()??????driver?=?webdriver.Chrome()?????driver.implicitly_wait(10)?????#?往京東主頁(yè)發(fā)送請求?????driver.get('https://www.jd.com/')??????#?輸入商品名稱(chēng),并回車(chē)搜索?????input_tag?=?driver.find_element_by_id('key')?????input_tag.send_keys(good_name)?????input_tag.send_keys(Keys.ENTER)?????time.sleep(2)??????get_good(driver)?
03 增量爬蟲(chóng)技術(shù)
有些網(wǎng)站會(huì )在原有網(wǎng)頁(yè)數據的基礎上定期更新一批數據。 比如電影網(wǎng)站會(huì )實(shí)時(shí)更新一批近期的熱門(mén)電影,小說(shuō)網(wǎng)站會(huì )根據作者的創(chuàng )作進(jìn)度實(shí)時(shí)更新最新的章節數據。 遇到類(lèi)似的場(chǎng)景,我們可以使用增量爬蟲(chóng)。
增量爬蟲(chóng)技術(shù)(incremental Web crawler)是通過(guò)爬蟲(chóng)程序監測某個(gè)網(wǎng)站的數據更新情況,從而爬取網(wǎng)站更新后的新數據。
關(guān)于如何進(jìn)行增量爬取工作,下面給出三種檢測重復數據的思路:
發(fā)送請求前先判斷該URL是否已經(jīng)被抓??; 解析內容后判斷內容是否被爬??; 在寫(xiě)入存儲介質(zhì)時(shí)判斷該內容是否已經(jīng)存在于介質(zhì)中。
不難發(fā)現,增量爬取的核心是去重。 目前有兩種去重方法。
下面顯示了如何使用增量爬蟲(chóng)的示例。
import?scrapy?from?scrapy.linkextractors?import?LinkExtractor?from?scrapy.spiders?import?CrawlSpider,?Rule?from?redis?import?Redis?from?incrementPro.items?import?IncrementproItem?class?MovieSpider(CrawlSpider):?????name?=?'movie'?????#?allowed_domains?=?['www.xxx.com']?????start_urls?=?['http://www.4567tv.tv/frim/index7-11.html']?????rules?=?(?????????Rule(LinkExtractor(allow=r'/frim/index7-\d+\.html'),?callback='parse_item',?follow=True),?????)?????#?創(chuàng )建Redis鏈接對象?????conn?=?Redis(host='127.0.0.1',?port=6379)?????def?parse_item(self,?response):?????????li_list?=?response.xpath('//li[@class="p1?m1"]')?????????for?li?in?li_list:?????????????#?獲取詳情頁(yè)的url?????????????detail_url?=?'http://www.4567tv.tv'?+?li.xpath('./a/@href').extract_first()?????????????#?將詳情頁(yè)的url存入Redis的set中?????????????ex?=?self.conn.sadd('urls',?detail_url)?????????????if?ex?==?1:?????????????????print('該url沒(méi)有被爬取過(guò),可以進(jìn)行數據的爬取')?????????????????yield?scrapy.Request(url=detail_url,?callback=self.parst_detail)?????????????else:?????????????????print('數據還沒(méi)有更新,暫無(wú)新數據可爬??!')??????#?解析詳情頁(yè)中的電影名稱(chēng)和類(lèi)型,進(jìn)行持久化存儲?????def?parst_detail(self,?response):?????????item?=?IncrementproItem()?????????item['name']?=?response.xpath('//dt[@class="name"]/text()').extract_first()?????????item['kind']?=?response.xpath('//div[@class="ct-c"]/dl/dt[4]//text()').extract()?????????item['kind']?=?''.join(item['kind'])?????????yield?it?
管道文件:
from?redis?import?Redis?class?IncrementproPipeline(object):?????conn?=?None?????def?open_spider(self,spider):?????????self.conn?=?Redis(host='127.0.0.1',port=6379)?????def?process_item(self,?item,?spider):?????????dic?=?{?????????????'name':item['name'],?????????????'kind':item['kind']?????????????}?????????print(dic)?????????self.conn.push('movieData',dic)?????????????#?如果push不進(jìn)去,那么dic變成str(dic)或者改變r(jià)edis版本????????????pip?install?-U?redis==2.10.6?????????return?item?
04 深網(wǎng)爬蟲(chóng)技術(shù)
在互聯(lián)網(wǎng)中,網(wǎng)頁(yè)按存在方式可分為表層網(wǎng)頁(yè)和深層網(wǎng)頁(yè)。
所謂表層網(wǎng)頁(yè)是指無(wú)需提交表單,使用靜態(tài)鏈接即可到達的靜態(tài)頁(yè)面; 而深層網(wǎng)頁(yè)則隱藏在表單后面,無(wú)法通過(guò)靜態(tài)鏈接直接獲取,需要提交一定的關(guān)鍵詞才能訪(fǎng)問(wèn)。 得到的頁(yè)面中最重要的部分是表單填寫(xiě)部分。
在互聯(lián)網(wǎng)中,深層網(wǎng)頁(yè)的數量往往遠大于表層網(wǎng)頁(yè)的數量。 因此,我們需要想辦法爬取深層網(wǎng)頁(yè)。
深網(wǎng)爬蟲(chóng)的基本組成:URL列表、LVS列表(LVS是指標簽/值集合,即填寫(xiě)表單的數據源)、爬取控制器、解析器、LVS控制器、表單分析器、表單處理器、響應分析儀。
深網(wǎng)爬蟲(chóng)的填表方式有兩種:
技術(shù)和經(jīng)驗:利用cms建站有什么優(yōu)勢
使用cms建站的優(yōu)勢如下
1.網(wǎng)站線(xiàn)速度快
使用cms建站的用戶(hù)只需在網(wǎng)站模板中選擇自己喜歡的模板并部署上線(xiàn),上線(xiàn)后即可添加網(wǎng)站內容。
2.安全穩定
cms系統由于其開(kāi)源的特點(diǎn)擁有大量的用戶(hù),用戶(hù)在使用過(guò)程中發(fā)現的問(wèn)題和當前國網(wǎng)安全聯(lián)盟的白帽技術(shù)愛(ài)好者挖出的漏洞都在cms的不斷修復和升級中廠(chǎng)商,所以只要及時(shí)將網(wǎng)站的管理升級到最新版本的cms ,就可以保證網(wǎng)站的安全穩定。
3、有利于網(wǎng)站推廣
一個(gè)成熟的cms系統對于SEO有著(zhù)完整的設計理念和配置機制。 網(wǎng)站后,只要選擇合適的關(guān)鍵詞,并在后臺設置SEO參數,網(wǎng)站的關(guān)鍵詞排名比其他建站方式更容易,排名也更高。
4.方便的網(wǎng)站管理
cms功能齊全,支持可視化編輯。 網(wǎng)站上線(xiàn)后,您可以在后臺修改網(wǎng)站所有的文字、圖片、欄目等內容,還可以修改網(wǎng)站的顏色等樣式。 查看全部
解決方案:03 增量爬蟲(chóng)技術(shù)
01 專(zhuān)注爬蟲(chóng)技術(shù)
聚焦爬蟲(chóng)也是主題爬蟲(chóng)。 專(zhuān)注爬蟲(chóng)技術(shù)增加了鏈接評估和內容評估模塊,其爬蟲(chóng)策略的重點(diǎn)是評估頁(yè)面內容和鏈接的重要性。
基于鏈接評估的爬蟲(chóng)策略主要將網(wǎng)頁(yè)作為半結構化文檔,其中收錄大量的結構信息,可以用來(lái)評估鏈接的重要性。 另一種方法是利用Web結構來(lái)評估鏈接的價(jià)值,即HITS法,通過(guò)計算每個(gè)被訪(fǎng)問(wèn)頁(yè)面的Authority權重和Hub權重來(lái)確定鏈接訪(fǎng)問(wèn)的順序。
基于內容評價(jià)的爬蟲(chóng)策略主要是應用類(lèi)似于文本的計算方法,提出Fish-Search算法,以用戶(hù)輸入的查詢(xún)詞為主題。 隨著(zhù)算法的進(jìn)一步改進(jìn),Shark-Search算法可以使用空間向量模型來(lái)計算頁(yè)面和主題的相關(guān)性大小。
面向主題的爬蟲(chóng)、面向需求的爬蟲(chóng):它會(huì )針對特定的內容爬取信息,并會(huì )盡可能保證信息和需求的相關(guān)性。 下面顯示了一個(gè)如何使用聚焦爬蟲(chóng)的簡(jiǎn)單示例。
import?urllib.request?????#?爬蟲(chóng)專(zhuān)用的包urllib,不同版本的Python需要下載不同的爬蟲(chóng)專(zhuān)用包?import?re?????#?正則用來(lái)規律爬取?keyname=""?????#?想要爬取的內容?key=urllib.request.quote(keyname)?????#?需要將你輸入的keyname解碼,從而讓計算機讀懂?for?i?in?range(0,5):???#?(0,5)數字可以自己設置,是淘寶某產(chǎn)品的頁(yè)數?????url="https://s.taobao.com/search%3F ... 2Bstr(i*44)?#?url后面加上你想爬取的網(wǎng)站名,然后你需要多開(kāi)幾個(gè)類(lèi)似的網(wǎng)站以找到其規則?#?data是你爬取到的網(wǎng)站所有的內容要解碼要讀取內容?????pat='"pic_url":"//(.*?)"'?#?pat使用正則表達式從網(wǎng)頁(yè)爬取圖片?#?將你爬取到的內容放在一個(gè)列表里面?????print(picturelist)?????#?可以不打印,也可以打印下來(lái)看看?????for?j?in?range(0,len(picturelist)):?????????picture=picturelist[j]?????????pictureurl="http://"+picture?????????#?將列表里的內容遍歷出來(lái),并加上http://轉到高清圖片?????????file="E:/pycharm/vscode文件/圖片/"+str(i)+str(j)+".jpg"?????????#?再把圖片逐張編號,不然重復的名字將會(huì )被覆蓋掉?????????urllib.request.urlretrieve(pictureurl,filename=file)?????????#?最后保存到文件夾?
02 通用爬蟲(chóng)技術(shù)
通用網(wǎng)絡(luò )爬蟲(chóng)是整個(gè)網(wǎng)絡(luò )爬蟲(chóng)。 其實(shí)現過(guò)程如下。

第五,當滿(mǎn)足爬蟲(chóng)系統設置的停止條件時(shí),停止爬蟲(chóng)。 在寫(xiě)爬蟲(chóng)的時(shí)候,一般都會(huì )設置相應的停止條件。 如果不設置停止條件,爬蟲(chóng)會(huì )繼續爬取,直到獲取不到新的URL地址。 如果設置了停止條件,爬蟲(chóng)會(huì )在滿(mǎn)足停止條件時(shí)停止爬行。 詳見(jiàn)圖2-5右下子圖。
通用爬蟲(chóng)技術(shù)的應用有不同的爬取策略,其中廣度優(yōu)先策略和深度優(yōu)先策略更為關(guān)鍵。 例如,深度優(yōu)先策略的實(shí)現是按照深度從低到高的順序訪(fǎng)問(wèn)下一級網(wǎng)頁(yè)鏈接。
下面是一個(gè)如何使用普通爬蟲(chóng)的例子。
'''?爬取京東商品信息:?????請求url:https://www.jd.com/?????提取商品信息:?????????1.商品詳情頁(yè)?????????2.商品名稱(chēng)?????????3.商品價(jià)格?????????4.評價(jià)人數?????????5.商品商家?'''?from?selenium?import?webdriver????#?引入selenium中的webdriver?from?selenium.webdriver.common.keys?import?Keys?import?time??def?get_good(driver):?????try:??????????#?通過(guò)JS控制滾輪滑動(dòng)獲取所有商品信息?????????js_code?=?'''?????????????window.scrollTo(0,5000);?????????'''?????????driver.execute_script(js_code)??#?執行js代碼??????????#?等待數據加載?????????time.sleep(2)??????????#?查找所有商品div?????????#?good_div?=?driver.find_element_by_id('J_goodsList')?????????good_list?=?driver.find_elements_by_class_name('gl-item')?????????n?=?1?????????for?good?in?good_list:?????????????#?根據屬性選擇器查找?????????????#?商品鏈接?????????????good_url?=?good.find_element_by_css_selector(?????????????????'.p-img?a').get_attribute('href')??????????????#?商品名稱(chēng)?????????????good_name?=?good.find_element_by_css_selector(?????????????????'.p-name?em').text.replace("\n",?"--")??????????????#?商品價(jià)格?????????????good_price?=?good.find_element_by_class_name(?????????????????'p-price').text.replace("\n",?":")??????????????#?評價(jià)人數?????????????good_commit?=?good.find_element_by_class_name(?????????????????'p-commit').text.replace("\n",?"?")??????????????good_content?=?f'''?????????????????????????商品鏈接:?{good_url}?????????????????????????商品名稱(chēng):?{good_name}?????????????????????????商品價(jià)格:?{good_price}?????????????????????????評價(jià)人數:?{good_commit}?????????????????????????\n?????????????????????????'''?????????????print(good_content)?????????????with?open('jd.txt',?'a',?encoding='utf-8')?as?f:?????????????????f.write(good_content)??????????next_tag?=?driver.find_element_by_class_name('pn-next')?????????next_tag.click()??????????time.sleep(2)??????????#?遞歸調用函數?????????get_good(driver)??????????time.sleep(10)??????finally:?????????driver.close()???if?__name__?==?'__main__':??????good_name?=?input('請輸入爬取商品信息:').strip()??????driver?=?webdriver.Chrome()?????driver.implicitly_wait(10)?????#?往京東主頁(yè)發(fā)送請求?????driver.get('https://www.jd.com/')??????#?輸入商品名稱(chēng),并回車(chē)搜索?????input_tag?=?driver.find_element_by_id('key')?????input_tag.send_keys(good_name)?????input_tag.send_keys(Keys.ENTER)?????time.sleep(2)??????get_good(driver)?
03 增量爬蟲(chóng)技術(shù)
有些網(wǎng)站會(huì )在原有網(wǎng)頁(yè)數據的基礎上定期更新一批數據。 比如電影網(wǎng)站會(huì )實(shí)時(shí)更新一批近期的熱門(mén)電影,小說(shuō)網(wǎng)站會(huì )根據作者的創(chuàng )作進(jìn)度實(shí)時(shí)更新最新的章節數據。 遇到類(lèi)似的場(chǎng)景,我們可以使用增量爬蟲(chóng)。
增量爬蟲(chóng)技術(shù)(incremental Web crawler)是通過(guò)爬蟲(chóng)程序監測某個(gè)網(wǎng)站的數據更新情況,從而爬取網(wǎng)站更新后的新數據。
關(guān)于如何進(jìn)行增量爬取工作,下面給出三種檢測重復數據的思路:
發(fā)送請求前先判斷該URL是否已經(jīng)被抓??; 解析內容后判斷內容是否被爬??; 在寫(xiě)入存儲介質(zhì)時(shí)判斷該內容是否已經(jīng)存在于介質(zhì)中。
不難發(fā)現,增量爬取的核心是去重。 目前有兩種去重方法。

下面顯示了如何使用增量爬蟲(chóng)的示例。
import?scrapy?from?scrapy.linkextractors?import?LinkExtractor?from?scrapy.spiders?import?CrawlSpider,?Rule?from?redis?import?Redis?from?incrementPro.items?import?IncrementproItem?class?MovieSpider(CrawlSpider):?????name?=?'movie'?????#?allowed_domains?=?['www.xxx.com']?????start_urls?=?['http://www.4567tv.tv/frim/index7-11.html']?????rules?=?(?????????Rule(LinkExtractor(allow=r'/frim/index7-\d+\.html'),?callback='parse_item',?follow=True),?????)?????#?創(chuàng )建Redis鏈接對象?????conn?=?Redis(host='127.0.0.1',?port=6379)?????def?parse_item(self,?response):?????????li_list?=?response.xpath('//li[@class="p1?m1"]')?????????for?li?in?li_list:?????????????#?獲取詳情頁(yè)的url?????????????detail_url?=?'http://www.4567tv.tv'?+?li.xpath('./a/@href').extract_first()?????????????#?將詳情頁(yè)的url存入Redis的set中?????????????ex?=?self.conn.sadd('urls',?detail_url)?????????????if?ex?==?1:?????????????????print('該url沒(méi)有被爬取過(guò),可以進(jìn)行數據的爬取')?????????????????yield?scrapy.Request(url=detail_url,?callback=self.parst_detail)?????????????else:?????????????????print('數據還沒(méi)有更新,暫無(wú)新數據可爬??!')??????#?解析詳情頁(yè)中的電影名稱(chēng)和類(lèi)型,進(jìn)行持久化存儲?????def?parst_detail(self,?response):?????????item?=?IncrementproItem()?????????item['name']?=?response.xpath('//dt[@class="name"]/text()').extract_first()?????????item['kind']?=?response.xpath('//div[@class="ct-c"]/dl/dt[4]//text()').extract()?????????item['kind']?=?''.join(item['kind'])?????????yield?it?
管道文件:
from?redis?import?Redis?class?IncrementproPipeline(object):?????conn?=?None?????def?open_spider(self,spider):?????????self.conn?=?Redis(host='127.0.0.1',port=6379)?????def?process_item(self,?item,?spider):?????????dic?=?{?????????????'name':item['name'],?????????????'kind':item['kind']?????????????}?????????print(dic)?????????self.conn.push('movieData',dic)?????????????#?如果push不進(jìn)去,那么dic變成str(dic)或者改變r(jià)edis版本????????????pip?install?-U?redis==2.10.6?????????return?item?
04 深網(wǎng)爬蟲(chóng)技術(shù)
在互聯(lián)網(wǎng)中,網(wǎng)頁(yè)按存在方式可分為表層網(wǎng)頁(yè)和深層網(wǎng)頁(yè)。
所謂表層網(wǎng)頁(yè)是指無(wú)需提交表單,使用靜態(tài)鏈接即可到達的靜態(tài)頁(yè)面; 而深層網(wǎng)頁(yè)則隱藏在表單后面,無(wú)法通過(guò)靜態(tài)鏈接直接獲取,需要提交一定的關(guān)鍵詞才能訪(fǎng)問(wèn)。 得到的頁(yè)面中最重要的部分是表單填寫(xiě)部分。
在互聯(lián)網(wǎng)中,深層網(wǎng)頁(yè)的數量往往遠大于表層網(wǎng)頁(yè)的數量。 因此,我們需要想辦法爬取深層網(wǎng)頁(yè)。
深網(wǎng)爬蟲(chóng)的基本組成:URL列表、LVS列表(LVS是指標簽/值集合,即填寫(xiě)表單的數據源)、爬取控制器、解析器、LVS控制器、表單分析器、表單處理器、響應分析儀。
深網(wǎng)爬蟲(chóng)的填表方式有兩種:
技術(shù)和經(jīng)驗:利用cms建站有什么優(yōu)勢
使用cms建站的優(yōu)勢如下
1.網(wǎng)站線(xiàn)速度快

使用cms建站的用戶(hù)只需在網(wǎng)站模板中選擇自己喜歡的模板并部署上線(xiàn),上線(xiàn)后即可添加網(wǎng)站內容。
2.安全穩定
cms系統由于其開(kāi)源的特點(diǎn)擁有大量的用戶(hù),用戶(hù)在使用過(guò)程中發(fā)現的問(wèn)題和當前國網(wǎng)安全聯(lián)盟的白帽技術(shù)愛(ài)好者挖出的漏洞都在cms的不斷修復和升級中廠(chǎng)商,所以只要及時(shí)將網(wǎng)站的管理升級到最新版本的cms ,就可以保證網(wǎng)站的安全穩定。
3、有利于網(wǎng)站推廣

一個(gè)成熟的cms系統對于SEO有著(zhù)完整的設計理念和配置機制。 網(wǎng)站后,只要選擇合適的關(guān)鍵詞,并在后臺設置SEO參數,網(wǎng)站的關(guān)鍵詞排名比其他建站方式更容易,排名也更高。
4.方便的網(wǎng)站管理
cms功能齊全,支持可視化編輯。 網(wǎng)站上線(xiàn)后,您可以在后臺修改網(wǎng)站所有的文字、圖片、欄目等內容,還可以修改網(wǎng)站的顏色等樣式。
解決方案:k-近鄰算法實(shí)現手寫(xiě)數字識別系統——《機器學(xué)習實(shí)戰》
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 167 次瀏覽 ? 2022-12-24 05:59
一、實(shí)驗介紹
1.1 實(shí)驗內容
本實(shí)驗將從電影主題分類(lèi)的例子入手,詳細描述k近鄰算法的原理。 之后,我們將使用該算法實(shí)現一個(gè)手寫(xiě)數字識別系統。
完整教程及在線(xiàn)練習地址:K近鄰算法實(shí)現手寫(xiě)數字識別系統1.2實(shí)驗源碼
本實(shí)驗來(lái)源于圖靈教育授權實(shí)驗室大樓發(fā)布的《機器學(xué)習實(shí)戰》一書(shū)第2章。 如需系統學(xué)習本書(shū),請購買(mǎi)《機器學(xué)習實(shí)戰》。
為了保證本次實(shí)驗能夠在實(shí)驗室環(huán)境下完成,我們增加了實(shí)驗截圖、代碼注釋等一系列實(shí)驗指導,幫助大家更好的實(shí)踐。
1.3 實(shí)驗知識點(diǎn) 1.4 實(shí)驗環(huán)境 1.5 適合人群
本課程難度中等,適合具有基本Python知識的用戶(hù)。 如果您了解 numpy,則可以更好地入門(mén)本課程。
1.6 代碼獲取
您可以在實(shí)驗樓獲取該項目的代碼,作為參考對比學(xué)習。
2、實(shí)驗原理
眾所周知,電影可以按照題材來(lái)分類(lèi),但是題材本身是如何定義的呢? 誰(shuí)來(lái)決定一部電影屬于哪個(gè)主題? 也就是說(shuō),同一題材的電影有哪些共同特征? 這些都是電影分類(lèi)時(shí)必須要考慮的問(wèn)題。 沒(méi)有一個(gè)電影人會(huì )說(shuō)他拍的電影和以前的電影很相似,但我們知道,每一部電影確實(shí)可能在風(fēng)格上與同類(lèi)型的電影相似。 那么動(dòng)作片有哪些共同特點(diǎn),使得動(dòng)作片非常相似,卻又與愛(ài)情片有著(zhù)明顯的區別呢? 動(dòng)作片中也有吻戲,愛(ài)情片中也有打斗場(chǎng)面。 我們不能簡(jiǎn)單地以有沒(méi)有打架或有吻戲來(lái)判斷一部電影的類(lèi)型。 但愛(ài)情片中吻戲較多,動(dòng)作片中打斗場(chǎng)面較多。 根據此類(lèi)場(chǎng)景在電影中出現的次數,可以用來(lái)對電影進(jìn)行分類(lèi)。 本章第一節根據電影中出現的親吻和打斗的次數,使用k近鄰算法構建了一個(gè)自動(dòng)對電影類(lèi)型進(jìn)行分類(lèi)的程序。 我們首先用電影分類(lèi)來(lái)解釋k近鄰算法的基本概念,然后學(xué)習如何在其他系統上使用k近鄰算法。
本章介紹第一個(gè)機器學(xué)習算法:k-近鄰算法,非常有效且易于掌握。 首先,我們將探討 k 最近鄰算法的基本理論以及如何使用距離測量對項目進(jìn)行分類(lèi); 然后,我們將使用 Python 從文本文件中導入和解析數據; 然后,本書(shū)討論了當數據源較多時(shí),如何避免計算距離時(shí)可能遇到的一些常見(jiàn)錯誤; 最后用實(shí)例說(shuō)明如何使用k近鄰算法完成手寫(xiě)數字識別系統。
2.1k-最近鄰算法概述
簡(jiǎn)單的說(shuō),k近鄰算法就是利用衡量不同特征值之間距離的方法進(jìn)行分類(lèi)。
k-最近鄰算法
本書(shū)介紹的第一個(gè)機器學(xué)習算法是 k 最近鄰算法 (kNN)。 它的工作原理是:有一個(gè)樣本數據集,也叫訓練樣本集,樣本集中的每一個(gè)數據都有一個(gè)標簽,即我們知道樣本集中每一個(gè)數據與其所屬類(lèi)別的對應關(guān)系。 輸入沒(méi)有標簽的新數據后,將新數據的每個(gè)特征與樣本集中數據的相應特征進(jìn)行比較,然后算法提取樣本集中最相似數據(最近鄰)的分類(lèi)標簽。 一般來(lái)說(shuō),我們只選取樣本數據集中前k個(gè)最相似的數據,這就是k近鄰算法中k的來(lái)源,通常k是不大于20的整數。最后選擇最相似的分類(lèi)k 個(gè)最相似數據中出現的次數作為新數據的分類(lèi)。
現在讓我們回到前面電影分類(lèi)的例子,使用k近鄰算法對愛(ài)情片和動(dòng)作片進(jìn)行分類(lèi)。 曾經(jīng)有人統計過(guò)很多電影的打斗場(chǎng)面和吻戲。 圖 2-1 顯示了 6 部電影中打斗和接吻的場(chǎng)面數量。 如果有一部電影沒(méi)看過(guò),如何判斷它是愛(ài)情片還是動(dòng)作片? 我們可以使用 kNN 來(lái)解決這個(gè)問(wèn)題。
首先,我們要知道這部名不見(jiàn)經(jīng)傳的電影到底有多少打斗場(chǎng)面和吻戲。 圖 2-1 中問(wèn)號的位置是這部未知電影中鏡頭數量的圖形顯示。 具體編號見(jiàn)表2-1。
即使不知道未知電影屬于哪種類(lèi)型,我們也可以通過(guò)某種方式弄清楚。 首先計算未知電影與樣本集中其他電影的距離,如表2-2所示。 不用擔心這里如何計算這些距離值。 在使用Python實(shí)現電影分類(lèi)應用時(shí),會(huì )給出具體的計算方法。
現在我們已經(jīng)得到了樣本集中所有電影和未知電影的距離,按照距離遞增排序,我們可以找到k個(gè)最接近的電影。 假設 k=3,最接近的三部電影是 He's Not Really into Dudes、Beautiful Woman 和 California Man。 k近鄰算法根據距離最近的三部電影的類(lèi)型來(lái)判斷未知電影的類(lèi)型,而這三部電影都是言情片,所以我們判斷未知電影是言情片。
本章主要講解如何在實(shí)際環(huán)境中應用k近鄰算法,同時(shí)也涉及到如何使用Python工具和相關(guān)的機器學(xué)習術(shù)語(yǔ)。 按照1.5節開(kāi)發(fā)機器學(xué)習應用程序的一般步驟,我們使用Python語(yǔ)言開(kāi)發(fā)一個(gè)k近鄰算法的簡(jiǎn)單應用程序來(lái)驗證算法的正確性。
k近鄰算法的一般流程
數據采集:可以使用任何方法。 數據準備:距離計算所需的數值,最好是結構化的數據格式。 分析數據:可以使用任何方法。 Training Algorithm:這一步不適用于k-Nearest Neighbors算法。 測試算法:計算錯誤率。 算法使用:首先需要輸入樣本數據和結構化輸出結果,然后運行k近鄰算法判斷輸入數據屬于哪個(gè)類(lèi)別,最后對計算出的類(lèi)別進(jìn)行后續處理。 2.2 準備工作:使用Python導入數據
首先,創(chuàng )建一個(gè)名為 kNN.py 的 Python 模塊。 本章用到的所有代碼都在這個(gè)文件中。 讀者可以根據自己的習慣學(xué)習代碼,可以根據本書(shū)的學(xué)習進(jìn)度,將代碼寫(xiě)在自己創(chuàng )建的Python文件中,也可以直接從本書(shū)的源代碼中復制kNN.py文件。 我建議讀者從頭開(kāi)始創(chuàng )建模塊,邊學(xué)邊寫(xiě)代碼。
我們打開(kāi)Xfce終端,創(chuàng )建實(shí)驗文件夾KNN
cd Code
mkdir KNN
cd KNN
touch kNN.py
那我們先安裝NumPy模塊。
sudo pip install numpy
然后我們可以使用 vim 或 sublime 來(lái)編輯我們的 kNN.py 文件。 將以下代碼添加到 kNN.py 文件中:
from numpy import *
import operator
def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group, labels
在上面的代碼中,我們導入了兩個(gè)模塊:第一個(gè)是科學(xué)計算包NumPy; 第二個(gè)是operator模塊,k近鄰算法在進(jìn)行排序操作的時(shí)候會(huì )用到這個(gè)模塊提供的函數,后面會(huì )詳細介紹。
然后保存kNN.py文件,確保我們在kNN.py文件的路徑下(/home/shiyanlou/Code/KNN),在Xfce終端輸入ipython,進(jìn)入Python交互開(kāi)發(fā)環(huán)境。
進(jìn)入Python開(kāi)發(fā)環(huán)境后,輸入以下命令導入上面編輯的程序模塊:
>>> import kNN
上面的命令導入了 kNN 模塊。 為了保證輸入相同的數據集,在kNN模塊中定義了函數createDataSet,在Python命令提示符下輸入如下命令:
>>> group,labels = kNN.createDataSet()
<p>
</p>
上面的命令創(chuàng )建了變量組和標簽,在Python命令提示符下輸入以下命令,并輸入變量名來(lái)驗證變量是否定義正確:
>>> group
array([[ 1. , 1.1],
[ 1. , 1. ],
[ 0. , 0. ],
[ 0. , 0.1]])
>>> labels
['A', 'A', 'B', 'B']
這里有4組數據,每組數據有兩個(gè)已知的屬性或特征值。 上述組矩陣的每一行收錄不同的數據,我們可以將其視為日志文件中的不同測量點(diǎn)或條目。 由于人腦的局限性,我們通常只能將三維以下的事物形象化。 所以對于簡(jiǎn)單的數據可視化,我們通常只對每個(gè)數據點(diǎn)使用兩個(gè)特征。
向量標簽收錄每個(gè)數據點(diǎn)的標簽信息,標簽收錄的元素個(gè)數等于組矩陣的行數。 這里我們定義數據點(diǎn)(1, 1.1)為A類(lèi),數據點(diǎn)(0, 0.1)為B類(lèi)。為了說(shuō)明方便,例子中的值是任意取的,沒(méi)有給出坐標軸標簽. 圖 2-2 顯示了帶有類(lèi)別標簽信息的四個(gè)數據點(diǎn)。
現在我們知道了 Python 如何解析數據,如何加載數據,以及 kNN 算法的工作原理,我們將使用這些方法來(lái)完成分類(lèi)任務(wù)。
2.3 如何測試分類(lèi)器
上面我們提到使用kNN算法可以判斷一部電影是動(dòng)作片還是愛(ài)情片,也就是說(shuō)我們可以使用kNN算法實(shí)現一個(gè)分類(lèi)器。 我們需要檢查分類(lèi)器給出的答案是否符合我們的預期。 讀者可能會(huì )問(wèn):“分類(lèi)器什么時(shí)候會(huì )出錯?” 或者“答案總是正確的嗎?” 答案是否定的,分類(lèi)器不會(huì )得到100%正確的結果,我們可以使用各種方法檢查分類(lèi)器的準確率。 此外,分類(lèi)器的性能也會(huì )受到各種因素的影響,例如分類(lèi)器設置和數據集。 不同的算法在不同的數據集上的表現可能完全不同,這也是這部分的 6 章討論分類(lèi)算法的原因。
為了測試分類(lèi)器的效果,我們可以使用已知答案的數據。 當然,答案不能告訴分類(lèi)器,要檢查分類(lèi)器給出的結果是否符合預期結果。 通過(guò)大量的測試數據,我們可以得到分類(lèi)器的錯誤率——分類(lèi)器給出錯誤結果的次數除以測試執行的總數。 錯誤率是一種常用的評價(jià)方法,主要用于評價(jià)分類(lèi)器在一定數據集上的性能。 完美分類(lèi)器的錯誤率為 0,最差分類(lèi)器的錯誤率為 1.0,在這種情況下,分類(lèi)器根本無(wú)法找到一個(gè)正確的答案。 讀者可以在后面的章節中看到實(shí)際的數據示例。
上一節中介紹的示例是有效的,但實(shí)際用處不大。 接下來(lái),本書(shū)將使用手寫(xiě)識別系統的測試程序來(lái)測試k近鄰算法的效果。
三、實(shí)驗步驟
本項目詳細步驟可在實(shí)驗樓查看并在線(xiàn)完成:K近鄰算法實(shí)現手寫(xiě)數字識別系統
主要實(shí)現步驟:
1.準備數據:將圖像轉換為測試向量
2. 分析數據
3.測試算法:使用k近鄰算法識別手寫(xiě)數字
四、實(shí)驗總結
k近鄰算法是最簡(jiǎn)單有效的數據分類(lèi)算法。 k最近鄰算法是基于實(shí)例的學(xué)習。 在使用算法時(shí),我們必須要有接近實(shí)際數據的訓練樣本數據。 k近鄰算法必須保存所有數據集。 如果訓練數據集很大,則必須使用大量的存儲空間。 此外,實(shí)際使用起來(lái)可能非常耗時(shí),因為必須為數據集中的每個(gè)數據點(diǎn)計算距離值。 有沒(méi)有一種算法可以減少存儲空間和計算時(shí)間的開(kāi)銷(xiāo)? k決策樹(shù)是k近鄰算法的優(yōu)化版本,可以節省大量的計算開(kāi)銷(xiāo)。
解決方案:自建Kubernetes logtail日志采集客戶(hù)端安裝方式
【kubernetes常見(jiàn)日志采集問(wèn)題及解決方案分析】更多相關(guān)文章
kubernetes常見(jiàn)日志采集問(wèn)題分析及解決方案
與傳統日志和kubernetes日志相比,傳統服務(wù)目錄是固定的,重啟后不會(huì )丟失。 不要關(guān)注標準和錯誤日志輸出。 容器服務(wù)節點(diǎn)不固定。 重啟服務(wù)會(huì )漂移。 您需要注意標準和錯誤日志輸出。 日志文件重新啟動(dòng)后將丟失。 日志目錄不固定。 k8s中的日志處理常見(jiàn)的日志采集方案: 1、遠程日志將容器中的日志直接寫(xiě)到遠程kafka.es等,然后通過(guò)logstash等進(jìn)行處理,缺點(diǎn)是需要修改服務(wù)和傳輸到遠程存儲。 2.sidecar模式,每個(gè)pod運行一個(gè)filebeat,logstash等pod共享一個(gè)valum...
自建Kubernetes logtail日志采集客戶(hù)端安裝方法
自建Kubernetes安裝前提是Kubernetes集群1.8及以上版本。 Helm命令已安裝,版本2.6.4及以上。 安裝步驟在日志服務(wù)控制臺創(chuàng )建項目,項目名稱(chēng)以k8s-log-custom-開(kāi)頭。 將上述命令中的參數替換,并執行該命令。 嘗試 wget ...
Kubernetes Ingress 日志分析和監控最佳實(shí)踐
摘要:Ingress主要提供HTTP層(第7層)路由功能,是目前K8s中HTTP/HTTPS服務(wù)的主流暴露方式。 為了簡(jiǎn)化用戶(hù)分析和監控Ingress日志的門(mén)檻,阿里云容器服務(wù)和日志服務(wù)將Ingress日志開(kāi)放,只需要申請一個(gè)yaml資源即可完成日志采集等一整套Ingress日志解決方案的部署、分析和可視化。 越來(lái)越多的企業(yè)開(kāi)始在K8s集群上搭建服務(wù)。 在K8s中,組件通過(guò)Service暴露服務(wù),往往...
Kubernetes Ingress 日志分析入門(mén)
本文主要介紹如何搭建一個(gè)基于日志服務(wù)的Kubernetes Ingress日志分析平臺,并提供一些簡(jiǎn)單的上手實(shí)驗,幫助大家快速了解日志服務(wù)的相關(guān)功能。 部署Ingress日志方案,登錄容器服務(wù)管理控制臺。 將上述 CRD 配置保存為編排模板。 有關(guān)編排模板文檔,請參閱創(chuàng )建編排模板。 基于此模板創(chuàng )建應用程序,并選擇集群的默認命名空間。 apiVersion: /v1alpha1 kind: AliyunLogConfig metadata: # 你的配置...
SpringCloud微服務(wù)實(shí)戰——搭建企業(yè)級開(kāi)發(fā)框架(三十八):搭建ELK日志采集分析系統
一個(gè)好的日志分析系統可以詳細記錄系統的運行情況,方便我們定位分析系統性能瓶頸,定位系統問(wèn)題。 上一篇文章講解了日志的各種業(yè)務(wù)場(chǎng)景以及日志記錄的實(shí)現,所以日志記錄,相關(guān)人員需要對日志數據進(jìn)行處理和分析。 基于E(ElasticSearch)L(Logstash)K(Kibana)組合的日志分析系統可以說(shuō)是所有企業(yè)的首選方案。 Elasticsearch:分布式。 RESTful 風(fēng)格的搜索和數據分析引擎,可以快速存儲、搜索和分析海量數據。 用于存放ELK中的所有日志數據。 日志…
使用日志服務(wù)采集Kubernetes 日志
阿里云容器服務(wù) Kubernetes 集群集成日志服務(wù)(SLS)。 您可以在創(chuàng )建集群時(shí)開(kāi)啟日志服務(wù),快速采集Kubernetes集群的容器日志,包括容器的標準輸出和容器內的文本文件。 如果您還沒(méi)有創(chuàng )建一個(gè)新的Kubernetes 集群創(chuàng )建任何Kubernetes 集群,您可以按照本節中的步驟進(jìn)行操作: 登錄容器服務(wù)管理控制臺。 單擊左側導航欄中的集群,單擊右上角的創(chuàng )建 Kubernetes 集群。 進(jìn)入創(chuàng )建頁(yè)面后,參見(jiàn)創(chuàng )建Kubernetes集群進(jìn)行配置。 拖到頁(yè)面底部,勾選日志服務(wù)配置項,也就是說(shuō)在新建的...
Kubernetes 日志采集
Kubernetes日志打印方式標準輸出docker標準輸出日志stdout和stderr,使用docker logs或者kubectl logs查看最新日志(tail)。 如果想看更多的日志,可以到宿主機目錄/var/lib/docker/containers中找到所有對應的日志。 標準輸出是k8s社區推薦的日志輸出方式。 下面將從路徑和掛載介紹日志文件。 log4j在默認路徑打印日志的使用方法: 如果打印的業(yè)務(wù)日志沒(méi)有使用任何掛載方式,那么業(yè)務(wù)日志默認打在容器內部的目錄下。 根據不同...
日志采集技術(shù)分析 inode Inotify
日志采集技術(shù)淺析【阿里】-新手學(xué)習導向-紅客聯(lián)盟-Powered by HUC …
《視頻課堂》ELK與Kafka如何搭配,成為文字版的日志采集方案
視頻地址:ELK和Kafka是如何一起玩,成為日志采集方案的 視頻文字版 今天帶來(lái)了一個(gè)視頻,主要講一下ELK和Kafka的通信關(guān)系。 通過(guò)一張通信圖,以及一些操作命令,讓我們更深入的了解ELK在日志采集過(guò)程中和Kafka在消息隊列分發(fā)過(guò)程中,它們是如何配置和使用的,以及它們之間的通信機制希望它對你的學(xué)習會(huì )有幫助幫助,謝謝! 我們的目標是一個(gè)主機host上的服務(wù)會(huì )產(chǎn)生日志,比如在/var/log目錄下會(huì )不斷產(chǎn)生各種日志記錄。 我們稱(chēng)這個(gè)采集范圍為日志采集源。 這時(shí)候我們調用ELK文件采集器...
Kubernetes 通用日志采集方案
Kubernetes 常用日志采集方案 學(xué)習了 Kubernetes 集群中監控系統的搭建。 除了集群的監控告警,還有一個(gè)運維工作非常重要,那就是日志的采集。 應用程序和系統日志的引入可以幫助我們了解集群的內部運行情況,日志對于我們調試問(wèn)題和監控集群狀況也非常有用。 而且大部分應用都會(huì )有日志記錄,傳統的應用大部分都會(huì )寫(xiě)入本地的日志文件。 對于容器標準化的應用來(lái)說(shuō)就更簡(jiǎn)單了,只需要將日志信息寫(xiě)入stdout和stderr,容器默認會(huì )將這些日志輸出到宿主機上的一個(gè)服務(wù)器上。
熱點(diǎn)話(huà)題
React Hooks子組件通過(guò)props調用父組件的方法
win7激活客戶(hù)端停止運行
觀(guān)察以下網(wǎng)絡(luò )界面,盡可能列出測試
繪制DAG圖并找到優(yōu)化的4元代碼
Winform制作鍵盤(pán)
根目錄使用率為 100%
Mac根據域名查IP
系帶使用
升級openssh9.1
快速啟動(dòng)找不到系統路徑
放置網(wǎng)頁(yè)鼠標后顯示
python3 -m compilea 反編譯
如何將確認按鈕添加到 ios 數字鍵盤(pán)
DMS中如何修改數據庫用戶(hù)名
webapi上傳頭像
unittest 什么以test開(kāi)頭
serilog如何記錄空白日志,沒(méi)有日期,只記錄關(guān)鍵內容
UID卡B5FF67CBA951
jupyternotebook側邊欄無(wú)法調整
為什么eta設置為5 查看全部
解決方案:k-近鄰算法實(shí)現手寫(xiě)數字識別系統——《機器學(xué)習實(shí)戰》
一、實(shí)驗介紹
1.1 實(shí)驗內容
本實(shí)驗將從電影主題分類(lèi)的例子入手,詳細描述k近鄰算法的原理。 之后,我們將使用該算法實(shí)現一個(gè)手寫(xiě)數字識別系統。
完整教程及在線(xiàn)練習地址:K近鄰算法實(shí)現手寫(xiě)數字識別系統1.2實(shí)驗源碼
本實(shí)驗來(lái)源于圖靈教育授權實(shí)驗室大樓發(fā)布的《機器學(xué)習實(shí)戰》一書(shū)第2章。 如需系統學(xué)習本書(shū),請購買(mǎi)《機器學(xué)習實(shí)戰》。
為了保證本次實(shí)驗能夠在實(shí)驗室環(huán)境下完成,我們增加了實(shí)驗截圖、代碼注釋等一系列實(shí)驗指導,幫助大家更好的實(shí)踐。
1.3 實(shí)驗知識點(diǎn) 1.4 實(shí)驗環(huán)境 1.5 適合人群
本課程難度中等,適合具有基本Python知識的用戶(hù)。 如果您了解 numpy,則可以更好地入門(mén)本課程。
1.6 代碼獲取
您可以在實(shí)驗樓獲取該項目的代碼,作為參考對比學(xué)習。
2、實(shí)驗原理
眾所周知,電影可以按照題材來(lái)分類(lèi),但是題材本身是如何定義的呢? 誰(shuí)來(lái)決定一部電影屬于哪個(gè)主題? 也就是說(shuō),同一題材的電影有哪些共同特征? 這些都是電影分類(lèi)時(shí)必須要考慮的問(wèn)題。 沒(méi)有一個(gè)電影人會(huì )說(shuō)他拍的電影和以前的電影很相似,但我們知道,每一部電影確實(shí)可能在風(fēng)格上與同類(lèi)型的電影相似。 那么動(dòng)作片有哪些共同特點(diǎn),使得動(dòng)作片非常相似,卻又與愛(ài)情片有著(zhù)明顯的區別呢? 動(dòng)作片中也有吻戲,愛(ài)情片中也有打斗場(chǎng)面。 我們不能簡(jiǎn)單地以有沒(méi)有打架或有吻戲來(lái)判斷一部電影的類(lèi)型。 但愛(ài)情片中吻戲較多,動(dòng)作片中打斗場(chǎng)面較多。 根據此類(lèi)場(chǎng)景在電影中出現的次數,可以用來(lái)對電影進(jìn)行分類(lèi)。 本章第一節根據電影中出現的親吻和打斗的次數,使用k近鄰算法構建了一個(gè)自動(dòng)對電影類(lèi)型進(jìn)行分類(lèi)的程序。 我們首先用電影分類(lèi)來(lái)解釋k近鄰算法的基本概念,然后學(xué)習如何在其他系統上使用k近鄰算法。
本章介紹第一個(gè)機器學(xué)習算法:k-近鄰算法,非常有效且易于掌握。 首先,我們將探討 k 最近鄰算法的基本理論以及如何使用距離測量對項目進(jìn)行分類(lèi); 然后,我們將使用 Python 從文本文件中導入和解析數據; 然后,本書(shū)討論了當數據源較多時(shí),如何避免計算距離時(shí)可能遇到的一些常見(jiàn)錯誤; 最后用實(shí)例說(shuō)明如何使用k近鄰算法完成手寫(xiě)數字識別系統。
2.1k-最近鄰算法概述
簡(jiǎn)單的說(shuō),k近鄰算法就是利用衡量不同特征值之間距離的方法進(jìn)行分類(lèi)。
k-最近鄰算法
本書(shū)介紹的第一個(gè)機器學(xué)習算法是 k 最近鄰算法 (kNN)。 它的工作原理是:有一個(gè)樣本數據集,也叫訓練樣本集,樣本集中的每一個(gè)數據都有一個(gè)標簽,即我們知道樣本集中每一個(gè)數據與其所屬類(lèi)別的對應關(guān)系。 輸入沒(méi)有標簽的新數據后,將新數據的每個(gè)特征與樣本集中數據的相應特征進(jìn)行比較,然后算法提取樣本集中最相似數據(最近鄰)的分類(lèi)標簽。 一般來(lái)說(shuō),我們只選取樣本數據集中前k個(gè)最相似的數據,這就是k近鄰算法中k的來(lái)源,通常k是不大于20的整數。最后選擇最相似的分類(lèi)k 個(gè)最相似數據中出現的次數作為新數據的分類(lèi)。
現在讓我們回到前面電影分類(lèi)的例子,使用k近鄰算法對愛(ài)情片和動(dòng)作片進(jìn)行分類(lèi)。 曾經(jīng)有人統計過(guò)很多電影的打斗場(chǎng)面和吻戲。 圖 2-1 顯示了 6 部電影中打斗和接吻的場(chǎng)面數量。 如果有一部電影沒(méi)看過(guò),如何判斷它是愛(ài)情片還是動(dòng)作片? 我們可以使用 kNN 來(lái)解決這個(gè)問(wèn)題。
首先,我們要知道這部名不見(jiàn)經(jīng)傳的電影到底有多少打斗場(chǎng)面和吻戲。 圖 2-1 中問(wèn)號的位置是這部未知電影中鏡頭數量的圖形顯示。 具體編號見(jiàn)表2-1。
即使不知道未知電影屬于哪種類(lèi)型,我們也可以通過(guò)某種方式弄清楚。 首先計算未知電影與樣本集中其他電影的距離,如表2-2所示。 不用擔心這里如何計算這些距離值。 在使用Python實(shí)現電影分類(lèi)應用時(shí),會(huì )給出具體的計算方法。
現在我們已經(jīng)得到了樣本集中所有電影和未知電影的距離,按照距離遞增排序,我們可以找到k個(gè)最接近的電影。 假設 k=3,最接近的三部電影是 He's Not Really into Dudes、Beautiful Woman 和 California Man。 k近鄰算法根據距離最近的三部電影的類(lèi)型來(lái)判斷未知電影的類(lèi)型,而這三部電影都是言情片,所以我們判斷未知電影是言情片。
本章主要講解如何在實(shí)際環(huán)境中應用k近鄰算法,同時(shí)也涉及到如何使用Python工具和相關(guān)的機器學(xué)習術(shù)語(yǔ)。 按照1.5節開(kāi)發(fā)機器學(xué)習應用程序的一般步驟,我們使用Python語(yǔ)言開(kāi)發(fā)一個(gè)k近鄰算法的簡(jiǎn)單應用程序來(lái)驗證算法的正確性。
k近鄰算法的一般流程

數據采集:可以使用任何方法。 數據準備:距離計算所需的數值,最好是結構化的數據格式。 分析數據:可以使用任何方法。 Training Algorithm:這一步不適用于k-Nearest Neighbors算法。 測試算法:計算錯誤率。 算法使用:首先需要輸入樣本數據和結構化輸出結果,然后運行k近鄰算法判斷輸入數據屬于哪個(gè)類(lèi)別,最后對計算出的類(lèi)別進(jìn)行后續處理。 2.2 準備工作:使用Python導入數據
首先,創(chuàng )建一個(gè)名為 kNN.py 的 Python 模塊。 本章用到的所有代碼都在這個(gè)文件中。 讀者可以根據自己的習慣學(xué)習代碼,可以根據本書(shū)的學(xué)習進(jìn)度,將代碼寫(xiě)在自己創(chuàng )建的Python文件中,也可以直接從本書(shū)的源代碼中復制kNN.py文件。 我建議讀者從頭開(kāi)始創(chuàng )建模塊,邊學(xué)邊寫(xiě)代碼。
我們打開(kāi)Xfce終端,創(chuàng )建實(shí)驗文件夾KNN
cd Code
mkdir KNN
cd KNN
touch kNN.py
那我們先安裝NumPy模塊。
sudo pip install numpy
然后我們可以使用 vim 或 sublime 來(lái)編輯我們的 kNN.py 文件。 將以下代碼添加到 kNN.py 文件中:
from numpy import *
import operator
def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group, labels
在上面的代碼中,我們導入了兩個(gè)模塊:第一個(gè)是科學(xué)計算包NumPy; 第二個(gè)是operator模塊,k近鄰算法在進(jìn)行排序操作的時(shí)候會(huì )用到這個(gè)模塊提供的函數,后面會(huì )詳細介紹。
然后保存kNN.py文件,確保我們在kNN.py文件的路徑下(/home/shiyanlou/Code/KNN),在Xfce終端輸入ipython,進(jìn)入Python交互開(kāi)發(fā)環(huán)境。
進(jìn)入Python開(kāi)發(fā)環(huán)境后,輸入以下命令導入上面編輯的程序模塊:
>>> import kNN
上面的命令導入了 kNN 模塊。 為了保證輸入相同的數據集,在kNN模塊中定義了函數createDataSet,在Python命令提示符下輸入如下命令:
>>> group,labels = kNN.createDataSet()
<p>

</p>
上面的命令創(chuàng )建了變量組和標簽,在Python命令提示符下輸入以下命令,并輸入變量名來(lái)驗證變量是否定義正確:
>>> group
array([[ 1. , 1.1],
[ 1. , 1. ],
[ 0. , 0. ],
[ 0. , 0.1]])
>>> labels
['A', 'A', 'B', 'B']
這里有4組數據,每組數據有兩個(gè)已知的屬性或特征值。 上述組矩陣的每一行收錄不同的數據,我們可以將其視為日志文件中的不同測量點(diǎn)或條目。 由于人腦的局限性,我們通常只能將三維以下的事物形象化。 所以對于簡(jiǎn)單的數據可視化,我們通常只對每個(gè)數據點(diǎn)使用兩個(gè)特征。
向量標簽收錄每個(gè)數據點(diǎn)的標簽信息,標簽收錄的元素個(gè)數等于組矩陣的行數。 這里我們定義數據點(diǎn)(1, 1.1)為A類(lèi),數據點(diǎn)(0, 0.1)為B類(lèi)。為了說(shuō)明方便,例子中的值是任意取的,沒(méi)有給出坐標軸標簽. 圖 2-2 顯示了帶有類(lèi)別標簽信息的四個(gè)數據點(diǎn)。
現在我們知道了 Python 如何解析數據,如何加載數據,以及 kNN 算法的工作原理,我們將使用這些方法來(lái)完成分類(lèi)任務(wù)。
2.3 如何測試分類(lèi)器
上面我們提到使用kNN算法可以判斷一部電影是動(dòng)作片還是愛(ài)情片,也就是說(shuō)我們可以使用kNN算法實(shí)現一個(gè)分類(lèi)器。 我們需要檢查分類(lèi)器給出的答案是否符合我們的預期。 讀者可能會(huì )問(wèn):“分類(lèi)器什么時(shí)候會(huì )出錯?” 或者“答案總是正確的嗎?” 答案是否定的,分類(lèi)器不會(huì )得到100%正確的結果,我們可以使用各種方法檢查分類(lèi)器的準確率。 此外,分類(lèi)器的性能也會(huì )受到各種因素的影響,例如分類(lèi)器設置和數據集。 不同的算法在不同的數據集上的表現可能完全不同,這也是這部分的 6 章討論分類(lèi)算法的原因。
為了測試分類(lèi)器的效果,我們可以使用已知答案的數據。 當然,答案不能告訴分類(lèi)器,要檢查分類(lèi)器給出的結果是否符合預期結果。 通過(guò)大量的測試數據,我們可以得到分類(lèi)器的錯誤率——分類(lèi)器給出錯誤結果的次數除以測試執行的總數。 錯誤率是一種常用的評價(jià)方法,主要用于評價(jià)分類(lèi)器在一定數據集上的性能。 完美分類(lèi)器的錯誤率為 0,最差分類(lèi)器的錯誤率為 1.0,在這種情況下,分類(lèi)器根本無(wú)法找到一個(gè)正確的答案。 讀者可以在后面的章節中看到實(shí)際的數據示例。
上一節中介紹的示例是有效的,但實(shí)際用處不大。 接下來(lái),本書(shū)將使用手寫(xiě)識別系統的測試程序來(lái)測試k近鄰算法的效果。
三、實(shí)驗步驟
本項目詳細步驟可在實(shí)驗樓查看并在線(xiàn)完成:K近鄰算法實(shí)現手寫(xiě)數字識別系統
主要實(shí)現步驟:
1.準備數據:將圖像轉換為測試向量
2. 分析數據
3.測試算法:使用k近鄰算法識別手寫(xiě)數字
四、實(shí)驗總結
k近鄰算法是最簡(jiǎn)單有效的數據分類(lèi)算法。 k最近鄰算法是基于實(shí)例的學(xué)習。 在使用算法時(shí),我們必須要有接近實(shí)際數據的訓練樣本數據。 k近鄰算法必須保存所有數據集。 如果訓練數據集很大,則必須使用大量的存儲空間。 此外,實(shí)際使用起來(lái)可能非常耗時(shí),因為必須為數據集中的每個(gè)數據點(diǎn)計算距離值。 有沒(méi)有一種算法可以減少存儲空間和計算時(shí)間的開(kāi)銷(xiāo)? k決策樹(shù)是k近鄰算法的優(yōu)化版本,可以節省大量的計算開(kāi)銷(xiāo)。
解決方案:自建Kubernetes logtail日志采集客戶(hù)端安裝方式
【kubernetes常見(jiàn)日志采集問(wèn)題及解決方案分析】更多相關(guān)文章
kubernetes常見(jiàn)日志采集問(wèn)題分析及解決方案
與傳統日志和kubernetes日志相比,傳統服務(wù)目錄是固定的,重啟后不會(huì )丟失。 不要關(guān)注標準和錯誤日志輸出。 容器服務(wù)節點(diǎn)不固定。 重啟服務(wù)會(huì )漂移。 您需要注意標準和錯誤日志輸出。 日志文件重新啟動(dòng)后將丟失。 日志目錄不固定。 k8s中的日志處理常見(jiàn)的日志采集方案: 1、遠程日志將容器中的日志直接寫(xiě)到遠程kafka.es等,然后通過(guò)logstash等進(jìn)行處理,缺點(diǎn)是需要修改服務(wù)和傳輸到遠程存儲。 2.sidecar模式,每個(gè)pod運行一個(gè)filebeat,logstash等pod共享一個(gè)valum...
自建Kubernetes logtail日志采集客戶(hù)端安裝方法
自建Kubernetes安裝前提是Kubernetes集群1.8及以上版本。 Helm命令已安裝,版本2.6.4及以上。 安裝步驟在日志服務(wù)控制臺創(chuàng )建項目,項目名稱(chēng)以k8s-log-custom-開(kāi)頭。 將上述命令中的參數替換,并執行該命令。 嘗試 wget ...
Kubernetes Ingress 日志分析和監控最佳實(shí)踐
摘要:Ingress主要提供HTTP層(第7層)路由功能,是目前K8s中HTTP/HTTPS服務(wù)的主流暴露方式。 為了簡(jiǎn)化用戶(hù)分析和監控Ingress日志的門(mén)檻,阿里云容器服務(wù)和日志服務(wù)將Ingress日志開(kāi)放,只需要申請一個(gè)yaml資源即可完成日志采集等一整套Ingress日志解決方案的部署、分析和可視化。 越來(lái)越多的企業(yè)開(kāi)始在K8s集群上搭建服務(wù)。 在K8s中,組件通過(guò)Service暴露服務(wù),往往...
Kubernetes Ingress 日志分析入門(mén)
本文主要介紹如何搭建一個(gè)基于日志服務(wù)的Kubernetes Ingress日志分析平臺,并提供一些簡(jiǎn)單的上手實(shí)驗,幫助大家快速了解日志服務(wù)的相關(guān)功能。 部署Ingress日志方案,登錄容器服務(wù)管理控制臺。 將上述 CRD 配置保存為編排模板。 有關(guān)編排模板文檔,請參閱創(chuàng )建編排模板。 基于此模板創(chuàng )建應用程序,并選擇集群的默認命名空間。 apiVersion: /v1alpha1 kind: AliyunLogConfig metadata: # 你的配置...
SpringCloud微服務(wù)實(shí)戰——搭建企業(yè)級開(kāi)發(fā)框架(三十八):搭建ELK日志采集分析系統
一個(gè)好的日志分析系統可以詳細記錄系統的運行情況,方便我們定位分析系統性能瓶頸,定位系統問(wèn)題。 上一篇文章講解了日志的各種業(yè)務(wù)場(chǎng)景以及日志記錄的實(shí)現,所以日志記錄,相關(guān)人員需要對日志數據進(jìn)行處理和分析。 基于E(ElasticSearch)L(Logstash)K(Kibana)組合的日志分析系統可以說(shuō)是所有企業(yè)的首選方案。 Elasticsearch:分布式。 RESTful 風(fēng)格的搜索和數據分析引擎,可以快速存儲、搜索和分析海量數據。 用于存放ELK中的所有日志數據。 日志…
使用日志服務(wù)采集Kubernetes 日志
阿里云容器服務(wù) Kubernetes 集群集成日志服務(wù)(SLS)。 您可以在創(chuàng )建集群時(shí)開(kāi)啟日志服務(wù),快速采集Kubernetes集群的容器日志,包括容器的標準輸出和容器內的文本文件。 如果您還沒(méi)有創(chuàng )建一個(gè)新的Kubernetes 集群創(chuàng )建任何Kubernetes 集群,您可以按照本節中的步驟進(jìn)行操作: 登錄容器服務(wù)管理控制臺。 單擊左側導航欄中的集群,單擊右上角的創(chuàng )建 Kubernetes 集群。 進(jìn)入創(chuàng )建頁(yè)面后,參見(jiàn)創(chuàng )建Kubernetes集群進(jìn)行配置。 拖到頁(yè)面底部,勾選日志服務(wù)配置項,也就是說(shuō)在新建的...
Kubernetes 日志采集

Kubernetes日志打印方式標準輸出docker標準輸出日志stdout和stderr,使用docker logs或者kubectl logs查看最新日志(tail)。 如果想看更多的日志,可以到宿主機目錄/var/lib/docker/containers中找到所有對應的日志。 標準輸出是k8s社區推薦的日志輸出方式。 下面將從路徑和掛載介紹日志文件。 log4j在默認路徑打印日志的使用方法: 如果打印的業(yè)務(wù)日志沒(méi)有使用任何掛載方式,那么業(yè)務(wù)日志默認打在容器內部的目錄下。 根據不同...
日志采集技術(shù)分析 inode Inotify
日志采集技術(shù)淺析【阿里】-新手學(xué)習導向-紅客聯(lián)盟-Powered by HUC …
《視頻課堂》ELK與Kafka如何搭配,成為文字版的日志采集方案
視頻地址:ELK和Kafka是如何一起玩,成為日志采集方案的 視頻文字版 今天帶來(lái)了一個(gè)視頻,主要講一下ELK和Kafka的通信關(guān)系。 通過(guò)一張通信圖,以及一些操作命令,讓我們更深入的了解ELK在日志采集過(guò)程中和Kafka在消息隊列分發(fā)過(guò)程中,它們是如何配置和使用的,以及它們之間的通信機制希望它對你的學(xué)習會(huì )有幫助幫助,謝謝! 我們的目標是一個(gè)主機host上的服務(wù)會(huì )產(chǎn)生日志,比如在/var/log目錄下會(huì )不斷產(chǎn)生各種日志記錄。 我們稱(chēng)這個(gè)采集范圍為日志采集源。 這時(shí)候我們調用ELK文件采集器...
Kubernetes 通用日志采集方案
Kubernetes 常用日志采集方案 學(xué)習了 Kubernetes 集群中監控系統的搭建。 除了集群的監控告警,還有一個(gè)運維工作非常重要,那就是日志的采集。 應用程序和系統日志的引入可以幫助我們了解集群的內部運行情況,日志對于我們調試問(wèn)題和監控集群狀況也非常有用。 而且大部分應用都會(huì )有日志記錄,傳統的應用大部分都會(huì )寫(xiě)入本地的日志文件。 對于容器標準化的應用來(lái)說(shuō)就更簡(jiǎn)單了,只需要將日志信息寫(xiě)入stdout和stderr,容器默認會(huì )將這些日志輸出到宿主機上的一個(gè)服務(wù)器上。
熱點(diǎn)話(huà)題
React Hooks子組件通過(guò)props調用父組件的方法
win7激活客戶(hù)端停止運行
觀(guān)察以下網(wǎng)絡(luò )界面,盡可能列出測試
繪制DAG圖并找到優(yōu)化的4元代碼
Winform制作鍵盤(pán)
根目錄使用率為 100%

Mac根據域名查IP
系帶使用
升級openssh9.1
快速啟動(dòng)找不到系統路徑
放置網(wǎng)頁(yè)鼠標后顯示
python3 -m compilea 反編譯
如何將確認按鈕添加到 ios 數字鍵盤(pán)
DMS中如何修改數據庫用戶(hù)名
webapi上傳頭像
unittest 什么以test開(kāi)頭
serilog如何記錄空白日志,沒(méi)有日期,只記錄關(guān)鍵內容
UID卡B5FF67CBA951
jupyternotebook側邊欄無(wú)法調整
為什么eta設置為5
免費獲取:1314SEO標簽自動(dòng)獲取 批量生成標簽 3.3
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 91 次瀏覽 ? 2022-12-17 21:50
dz插件網(wǎng)自用分詞算法排序參考:
本插件可以自動(dòng)獲取帖子標簽,支持舊帖和采集帖子設置標簽,標簽可以聚合帖子,提高帖子曝光度,幫助SEO收錄
支持多種分詞模式,每個(gè)界面獨立設置是否開(kāi)啟,以及界面執行的順序,并自動(dòng)判斷選擇合適的結果
支持自定義標簽功能,可以預設常用的標簽,當對應的標簽出現在帖子中時(shí)優(yōu)先使用
支持設置只按標題獲取標簽
支持設置大量字符優(yōu)先返回標簽
支持過(guò)濾數字和字母的相關(guān)設置
目前支持的分詞接口:百度相關(guān)搜索詞接口、百度關(guān)鍵詞接口、百度詞排接口、Pullword api、阿里云關(guān)鍵詞抽取、阿里云新聞元素抽取
備注:自定義標簽功能依賴(lài)于PHP的mb_strpos函數,大部分PHP環(huán)境默認支持。如果您的環(huán)境不支持,則無(wú)法使用自定義標簽功能。需要配置PHP環(huán)境支持mb_strpos函數
解決方案:美團大眾點(diǎn)評商家電話(huà)采集軟件,提取美團大眾點(diǎn)評商家號碼的工具
1.從城市列表中選擇要采集的城市,或者直接在城市框中輸入城市名稱(chēng),如杭州
2.關(guān)鍵詞:輸入要采集的行業(yè)分類(lèi)關(guān)鍵詞,多個(gè)詞之間用空格分隔,如:美甲
3. 檢查其他必填選項
4. 開(kāi)始采集
美團點(diǎn)評商務(wù)電話(huà)采集軟件,提取美團點(diǎn)評商務(wù)號碼的工具
1、關(guān)鍵詞:可輸入多個(gè)相關(guān)行業(yè)關(guān)鍵詞采集 數據更完整
2.因為是實(shí)時(shí)抓拍,壞網(wǎng)絡(luò )也會(huì )導致數據沒(méi)有全部返回,差的網(wǎng)絡(luò )可以采集再點(diǎn)擊開(kāi)始采集
3、排除關(guān)鍵詞:排除采集結果中店鋪名稱(chēng)收錄單詞的數據,可在采集開(kāi)始前和采集完成后排除(采集完成后,輸入需要排除的關(guān)鍵詞并篩選)。
4.如果采集后不清除數據,則更改關(guān)鍵詞或城市繼續啟動(dòng)采集,使數據疊加在之前的數據上并進(jìn)行重復數據刪除
5、可同時(shí)檢查多個(gè)平臺,采集數據軟件自動(dòng)解重合 查看全部
免費獲取:1314SEO標簽自動(dòng)獲取 批量生成標簽 3.3
dz插件網(wǎng)自用分詞算法排序參考:
本插件可以自動(dòng)獲取帖子標簽,支持舊帖和采集帖子設置標簽,標簽可以聚合帖子,提高帖子曝光度,幫助SEO收錄

支持多種分詞模式,每個(gè)界面獨立設置是否開(kāi)啟,以及界面執行的順序,并自動(dòng)判斷選擇合適的結果
支持自定義標簽功能,可以預設常用的標簽,當對應的標簽出現在帖子中時(shí)優(yōu)先使用
支持設置只按標題獲取標簽
支持設置大量字符優(yōu)先返回標簽

支持過(guò)濾數字和字母的相關(guān)設置
目前支持的分詞接口:百度相關(guān)搜索詞接口、百度關(guān)鍵詞接口、百度詞排接口、Pullword api、阿里云關(guān)鍵詞抽取、阿里云新聞元素抽取
備注:自定義標簽功能依賴(lài)于PHP的mb_strpos函數,大部分PHP環(huán)境默認支持。如果您的環(huán)境不支持,則無(wú)法使用自定義標簽功能。需要配置PHP環(huán)境支持mb_strpos函數
解決方案:美團大眾點(diǎn)評商家電話(huà)采集軟件,提取美團大眾點(diǎn)評商家號碼的工具
1.從城市列表中選擇要采集的城市,或者直接在城市框中輸入城市名稱(chēng),如杭州
2.關(guān)鍵詞:輸入要采集的行業(yè)分類(lèi)關(guān)鍵詞,多個(gè)詞之間用空格分隔,如:美甲
3. 檢查其他必填選項

4. 開(kāi)始采集
美團點(diǎn)評商務(wù)電話(huà)采集軟件,提取美團點(diǎn)評商務(wù)號碼的工具
1、關(guān)鍵詞:可輸入多個(gè)相關(guān)行業(yè)關(guān)鍵詞采集 數據更完整

2.因為是實(shí)時(shí)抓拍,壞網(wǎng)絡(luò )也會(huì )導致數據沒(méi)有全部返回,差的網(wǎng)絡(luò )可以采集再點(diǎn)擊開(kāi)始采集
3、排除關(guān)鍵詞:排除采集結果中店鋪名稱(chēng)收錄單詞的數據,可在采集開(kāi)始前和采集完成后排除(采集完成后,輸入需要排除的關(guān)鍵詞并篩選)。
4.如果采集后不清除數據,則更改關(guān)鍵詞或城市繼續啟動(dòng)采集,使數據疊加在之前的數據上并進(jìn)行重復數據刪除
5、可同時(shí)檢查多個(gè)平臺,采集數據軟件自動(dòng)解重合
解決方案:20-垃圾回收相關(guān)算法
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 99 次瀏覽 ? 2022-12-15 23:55
1.標記階段 1.垃圾標記階段 2.標記階段算法-引用計數算法(Reference Counting)Java GC測試
public class RefCountGC {
// 5MB
private byte[] bigSize = new byte[5 * 1024 * 1024];
Object reference = null;
public static void main(String[] args) {
RefCountGC obj1 = new RefCountGC();
RefCountGC obj2 = new RefCountGC();
obj1.reference = obj2;
obj2.reference = obj1;
obj1 = null;
obj2 = null;
}
}
Heap
PSYoungGen total 38400K, used 13615K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
eden space 33280K, 40% used [0x0000000795580000,0x00000007962cbc00,0x0000000797600000)
from space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
to space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
ParOldGen total 87552K, used 0K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
object space 87552K, 0% used [0x0000000740000000,0x0000000740000000,0x0000000745580000)
Metaspace used 2941K, capacity 4556K, committed 4864K, reserved 1056768K
class space used 313K, capacity 392K, committed 512K, reserved 1048576K
public class RefCountGC {
// 5MB
<p>
private byte[] bigSize = new byte[5 * 1024 * 1024];
Object reference = null;
public static void main(String[] args) {
RefCountGC obj1 = new RefCountGC();
RefCountGC obj2 = new RefCountGC();
obj1.reference = obj2;
obj2.reference = obj1;
obj1 = null;
obj2 = null;
// 顯示垃圾回收
System.gc();
}
}
</p>
[GC (System.gc()) [PSYoungGen: 12949K->535K(38400K)] 12949K->543K(125952K), 0.0011575 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (System.gc()) [PSYoungGen: 535K->0K(38400K)] [ParOldGen: 8K->442K(87552K)] 543K->442K(125952K), [Metaspace: 2937K->2937K(1056768K)], 0.0249102 secs] [Times: user=0.01 sys=0.00, real=0.03 secs]
Heap
PSYoungGen total 38400K, used 998K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
eden space 33280K, 3% used [0x0000000795580000,0x0000000795679b20,0x0000000797600000)
from space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
to space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
ParOldGen total 87552K, used 442K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
object space 87552K, 0% used [0x0000000740000000,0x000000074006eaf8,0x0000000745580000)
Metaspace used 2943K, capacity 4556K, committed 4864K, reserved 1056768K
class space used 313K, capacity 392K, committed 512K, reserved 1048576K
Disconnected from the target VM, address: '127.0.0.1:61156', transport: 'socket'
總結 3. 標記階段算法-可達性分析算法(Root Search Algorithm, Tracing Garbage 采集) 1. GC Roots
所謂“GC Roots”根集是一組必須處于活動(dòng)狀態(tài)的引用
2. GC Root收錄元素
2. 本地方法棧中JNI引用的對象(通常稱(chēng)為本地方法)
3.方法區中類(lèi)靜態(tài)屬性引用的對象
4.方法區常量引用的對象
5.同步鎖持有的所有對象synchronized
6、反映Java虛擬機內部情況的JMXBean,注冊在JVMTI中的回調,本地代碼緩存等。
7、除了這些固定的GC Roots集合外,根據用戶(hù)選擇的垃圾采集器和當前回收的內存區域,還可以“臨時(shí)”加入其他對象,組成一個(gè)完整的GC Roots集合。例如:分代采集和部分回收(Partial GC)
概括:
4、finalization機制從功能上看,finalize()方法類(lèi)似于C++中的析構函數,但Java采用了基于垃圾采集器的自動(dòng)內存管理機制,所以finalize()方法與C++中的finalize()方法有本質(zhì)區別C++由于finalize()方法的存在,虛擬機中的對象一般有三種可能的狀態(tài)。如果不能從所有根節點(diǎn)訪(fǎng)問(wèn)一個(gè)對象,則意味著(zhù)該對象不再被使用。一般來(lái)說(shuō),這個(gè)對象是需要回收的。但其實(shí)并不是“必須死”,此時(shí)他們暫時(shí)處于“緩刑”階段。不可觸及的物體在一定條件下可能會(huì )“復活”。如果是這樣,它的回收是不合理的。為此原因,定義了對象在虛擬機中的三種可能狀態(tài): 在上述三種狀態(tài)中,由于finalize()方法的存在。對象只有不可觸及才能被回收 判斷一個(gè)對象objA是否可回收?標記可達性分析執行流程
標記-可達性分析執行流程.png
5.清關(guān)階段
在成功區分內存中的活對象和死對象后,GC接下來(lái)的任務(wù)就是進(jìn)行垃圾回收,釋放無(wú)用對象占用的內存空間,以便有足夠的可用內存空間為新對象分配內存。目前JVM中常見(jiàn)的三種垃圾回收算法分別是標記-清除算法(Mark-Sweep)、復制算法(Copying)、標記-壓縮算法(Mark-Compact)
1.標記-掃描算法(Mark-Sweep)
標記清除算法(Mark-Sweep)是一種非?;A和常見(jiàn)的垃圾采集算法,由J.McCarthy等人提出。1960年應用于Lisp語(yǔ)言
注:什么是Clear 2,Mark-Copy算法
為了解決mark-sweep算法在垃圾回收效率方面的不足,MLMinsky在1963年發(fā)表了一篇著(zhù)名論文《CA LISP Garbage Collector Algorithm Using Serial Secondary Storage》。MLMinsky 在這篇論文中描述的算法被稱(chēng)為 Copying 算法,它被 MLMinsky 自己成功地引入到 Lisp 語(yǔ)言的一個(gè)實(shí)現版本中。
優(yōu)缺點(diǎn) 適用場(chǎng)景 3. Mark-compression(整理)算法
mark-compression算法的最終效果相當于執行完mark-sweep算法后進(jìn)行一次內存碎片整理。因此,它也可以稱(chēng)為“標記-清除-緊湊型(Mark-Sweep-Compact)算法”。兩者的本質(zhì)區別在于mark-sweep算法是一種“非移動(dòng)的回收算法”,而mark-compression是“移動(dòng)的”?;厥蘸笫欠褚苿?dòng)幸存的物體是一個(gè)有利也有弊的冒險決定??梢钥吹?,被標記的存活對象會(huì )根據內存地址進(jìn)行排序和排列,而未標記的內存會(huì )被清理掉。這樣,當我們需要為一個(gè)新對象分配內存時(shí),JVM只需要保存一塊內存的起始地址,
指針碰撞(Bump the Pointer):如果內存空間是有規律有序的分配,即已使用和未使用的內存各占一邊,并維護一個(gè)記錄下一次分配起點(diǎn)的標記指針彼此之間,當為新對象分配內存時(shí),只需要通過(guò)修改指針的偏移量,在第一個(gè)空閑內存位置分配新對象。這種分配方式稱(chēng)為指針沖突。
優(yōu)缺點(diǎn)總結
摘要.png
6.生成手機算法
在上述所有算法中,沒(méi)有一種算法可以完全替代其他算法,它們都有自己獨特的優(yōu)缺點(diǎn)。一代手機算法應運而生。
在HotSpot中,基于代的概念,GC使用的內存回收算法必須結合新生代和老年代的特點(diǎn)。新生代(Young Gen)和老年代(Tenured Gen)分代采集算法的應用 7.增量采集算法、分區算法
通過(guò)上述算法,應用軟件在垃圾回收過(guò)程中將處于Stop The World狀態(tài)。在Stop The World狀態(tài)下,應用的所有線(xiàn)程都會(huì )被掛起,暫停所有正常工作,等待垃圾回收完成。垃圾回收時(shí)間過(guò)長(cháng)會(huì )導致應用長(cháng)時(shí)間掛起,嚴重影響用戶(hù)體驗或系統穩定性。為了解決這個(gè)問(wèn)題,對實(shí)時(shí)垃圾采集算法的研究直接導致了增量采集(Incremental Collecting)算法的誕生
增量采集算法的基本思想
解決方案:香港多IP服務(wù)器搭建采集程序的好處有哪些
香港多IP服務(wù)器設置采集方案的好處: 1.香港服務(wù)器性能強大,均為主流配置,兼容國內常見(jiàn)的主流采集軟件市場(chǎng)化,配置也可以根據用戶(hù)的需要進(jìn)行配置調整和升級,使用方便。2.香港多IP服務(wù)器無(wú)需注冊和搭建即可使用,充分簡(jiǎn)化了網(wǎng)站的搭建過(guò)程,減少了時(shí)間成本。3、香港多IP服務(wù)器,CN2直連網(wǎng)絡(luò ),線(xiàn)路穩定,可快速抓取目標網(wǎng)站內容,為瀏覽者提供用戶(hù)體驗。4.由于香港的多IP服務(wù)器都是獨立的真實(shí)IP,
具體內容如下:
1、性能強大
雖然采集網(wǎng)站采集程序的內容可以實(shí)現采集,發(fā)布全自動(dòng)運行,本身需要的硬件資源也不大,但是如果采集規則比較復雜而且采集的數據量比較大的話(huà),對服務(wù)器的壓力還是不小的,所以一般如果要制作內容采集,至少需要4- E3以上核心CPU,保證相對較低的故障率,香港服務(wù)器 配置均為主流配置,不僅兼容市面上常見(jiàn)的主流采集軟件,還可以根據用戶(hù)的需求,使用起來(lái)非常方便
2. 無(wú)需備案即可使用
一般采集網(wǎng)站都是以站群的形式搭建為主,所以在選擇服務(wù)器的時(shí)候,主要是選擇海外的服務(wù)器進(jìn)行備案,否則備案時(shí)間很長(cháng),上百個(gè)域名一起管理。比較麻煩,但是香港服務(wù)器數據海外服務(wù)器可以在服務(wù)器交付后立即構建網(wǎng)站,充分簡(jiǎn)化了構建網(wǎng)站的過(guò)程。
3.線(xiàn)路穩定采集流暢
現在采集網(wǎng)站主要以大陸內容為主,香港服務(wù)器搭建采集網(wǎng)站優(yōu)勢明顯。香港服務(wù)器有CN2直連網(wǎng)絡(luò ),所以在采集過(guò)程中可以快速抓取目標網(wǎng)站的內容,發(fā)布也可以快速響應,瀏覽用戶(hù)的體驗也比較不錯。
4、豐富的IP資源
經(jīng)常制作采集站點(diǎn)的用戶(hù)都知道,所謂采集就是通過(guò)HTTP請求獲取內容。雖然市面上有很多支持IP偽裝的采集工具,但還是有一些可能會(huì )拒絕訪(fǎng)問(wèn),而且由于香港的多IP服務(wù)器都是獨立的真實(shí)IP,被訪(fǎng)問(wèn)的概率攔截率相對較低。 查看全部
解決方案:20-垃圾回收相關(guān)算法
1.標記階段 1.垃圾標記階段 2.標記階段算法-引用計數算法(Reference Counting)Java GC測試
public class RefCountGC {
// 5MB
private byte[] bigSize = new byte[5 * 1024 * 1024];
Object reference = null;
public static void main(String[] args) {
RefCountGC obj1 = new RefCountGC();
RefCountGC obj2 = new RefCountGC();
obj1.reference = obj2;
obj2.reference = obj1;
obj1 = null;
obj2 = null;
}
}
Heap
PSYoungGen total 38400K, used 13615K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
eden space 33280K, 40% used [0x0000000795580000,0x00000007962cbc00,0x0000000797600000)
from space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
to space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
ParOldGen total 87552K, used 0K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
object space 87552K, 0% used [0x0000000740000000,0x0000000740000000,0x0000000745580000)
Metaspace used 2941K, capacity 4556K, committed 4864K, reserved 1056768K
class space used 313K, capacity 392K, committed 512K, reserved 1048576K
public class RefCountGC {
// 5MB
<p>

private byte[] bigSize = new byte[5 * 1024 * 1024];
Object reference = null;
public static void main(String[] args) {
RefCountGC obj1 = new RefCountGC();
RefCountGC obj2 = new RefCountGC();
obj1.reference = obj2;
obj2.reference = obj1;
obj1 = null;
obj2 = null;
// 顯示垃圾回收
System.gc();
}
}
</p>
[GC (System.gc()) [PSYoungGen: 12949K->535K(38400K)] 12949K->543K(125952K), 0.0011575 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (System.gc()) [PSYoungGen: 535K->0K(38400K)] [ParOldGen: 8K->442K(87552K)] 543K->442K(125952K), [Metaspace: 2937K->2937K(1056768K)], 0.0249102 secs] [Times: user=0.01 sys=0.00, real=0.03 secs]
Heap
PSYoungGen total 38400K, used 998K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
eden space 33280K, 3% used [0x0000000795580000,0x0000000795679b20,0x0000000797600000)
from space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
to space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
ParOldGen total 87552K, used 442K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
object space 87552K, 0% used [0x0000000740000000,0x000000074006eaf8,0x0000000745580000)
Metaspace used 2943K, capacity 4556K, committed 4864K, reserved 1056768K
class space used 313K, capacity 392K, committed 512K, reserved 1048576K
Disconnected from the target VM, address: '127.0.0.1:61156', transport: 'socket'

總結 3. 標記階段算法-可達性分析算法(Root Search Algorithm, Tracing Garbage 采集) 1. GC Roots
所謂“GC Roots”根集是一組必須處于活動(dòng)狀態(tài)的引用
2. GC Root收錄元素
2. 本地方法棧中JNI引用的對象(通常稱(chēng)為本地方法)
3.方法區中類(lèi)靜態(tài)屬性引用的對象
4.方法區常量引用的對象
5.同步鎖持有的所有對象synchronized
6、反映Java虛擬機內部情況的JMXBean,注冊在JVMTI中的回調,本地代碼緩存等。
7、除了這些固定的GC Roots集合外,根據用戶(hù)選擇的垃圾采集器和當前回收的內存區域,還可以“臨時(shí)”加入其他對象,組成一個(gè)完整的GC Roots集合。例如:分代采集和部分回收(Partial GC)
概括:
4、finalization機制從功能上看,finalize()方法類(lèi)似于C++中的析構函數,但Java采用了基于垃圾采集器的自動(dòng)內存管理機制,所以finalize()方法與C++中的finalize()方法有本質(zhì)區別C++由于finalize()方法的存在,虛擬機中的對象一般有三種可能的狀態(tài)。如果不能從所有根節點(diǎn)訪(fǎng)問(wèn)一個(gè)對象,則意味著(zhù)該對象不再被使用。一般來(lái)說(shuō),這個(gè)對象是需要回收的。但其實(shí)并不是“必須死”,此時(shí)他們暫時(shí)處于“緩刑”階段。不可觸及的物體在一定條件下可能會(huì )“復活”。如果是這樣,它的回收是不合理的。為此原因,定義了對象在虛擬機中的三種可能狀態(tài): 在上述三種狀態(tài)中,由于finalize()方法的存在。對象只有不可觸及才能被回收 判斷一個(gè)對象objA是否可回收?標記可達性分析執行流程
標記-可達性分析執行流程.png
5.清關(guān)階段
在成功區分內存中的活對象和死對象后,GC接下來(lái)的任務(wù)就是進(jìn)行垃圾回收,釋放無(wú)用對象占用的內存空間,以便有足夠的可用內存空間為新對象分配內存。目前JVM中常見(jiàn)的三種垃圾回收算法分別是標記-清除算法(Mark-Sweep)、復制算法(Copying)、標記-壓縮算法(Mark-Compact)
1.標記-掃描算法(Mark-Sweep)
標記清除算法(Mark-Sweep)是一種非?;A和常見(jiàn)的垃圾采集算法,由J.McCarthy等人提出。1960年應用于Lisp語(yǔ)言
注:什么是Clear 2,Mark-Copy算法
為了解決mark-sweep算法在垃圾回收效率方面的不足,MLMinsky在1963年發(fā)表了一篇著(zhù)名論文《CA LISP Garbage Collector Algorithm Using Serial Secondary Storage》。MLMinsky 在這篇論文中描述的算法被稱(chēng)為 Copying 算法,它被 MLMinsky 自己成功地引入到 Lisp 語(yǔ)言的一個(gè)實(shí)現版本中。
優(yōu)缺點(diǎn) 適用場(chǎng)景 3. Mark-compression(整理)算法
mark-compression算法的最終效果相當于執行完mark-sweep算法后進(jìn)行一次內存碎片整理。因此,它也可以稱(chēng)為“標記-清除-緊湊型(Mark-Sweep-Compact)算法”。兩者的本質(zhì)區別在于mark-sweep算法是一種“非移動(dòng)的回收算法”,而mark-compression是“移動(dòng)的”?;厥蘸笫欠褚苿?dòng)幸存的物體是一個(gè)有利也有弊的冒險決定??梢钥吹?,被標記的存活對象會(huì )根據內存地址進(jìn)行排序和排列,而未標記的內存會(huì )被清理掉。這樣,當我們需要為一個(gè)新對象分配內存時(shí),JVM只需要保存一塊內存的起始地址,
指針碰撞(Bump the Pointer):如果內存空間是有規律有序的分配,即已使用和未使用的內存各占一邊,并維護一個(gè)記錄下一次分配起點(diǎn)的標記指針彼此之間,當為新對象分配內存時(shí),只需要通過(guò)修改指針的偏移量,在第一個(gè)空閑內存位置分配新對象。這種分配方式稱(chēng)為指針沖突。
優(yōu)缺點(diǎn)總結
摘要.png
6.生成手機算法
在上述所有算法中,沒(méi)有一種算法可以完全替代其他算法,它們都有自己獨特的優(yōu)缺點(diǎn)。一代手機算法應運而生。
在HotSpot中,基于代的概念,GC使用的內存回收算法必須結合新生代和老年代的特點(diǎn)。新生代(Young Gen)和老年代(Tenured Gen)分代采集算法的應用 7.增量采集算法、分區算法
通過(guò)上述算法,應用軟件在垃圾回收過(guò)程中將處于Stop The World狀態(tài)。在Stop The World狀態(tài)下,應用的所有線(xiàn)程都會(huì )被掛起,暫停所有正常工作,等待垃圾回收完成。垃圾回收時(shí)間過(guò)長(cháng)會(huì )導致應用長(cháng)時(shí)間掛起,嚴重影響用戶(hù)體驗或系統穩定性。為了解決這個(gè)問(wèn)題,對實(shí)時(shí)垃圾采集算法的研究直接導致了增量采集(Incremental Collecting)算法的誕生
增量采集算法的基本思想
解決方案:香港多IP服務(wù)器搭建采集程序的好處有哪些
香港多IP服務(wù)器設置采集方案的好處: 1.香港服務(wù)器性能強大,均為主流配置,兼容國內常見(jiàn)的主流采集軟件市場(chǎng)化,配置也可以根據用戶(hù)的需要進(jìn)行配置調整和升級,使用方便。2.香港多IP服務(wù)器無(wú)需注冊和搭建即可使用,充分簡(jiǎn)化了網(wǎng)站的搭建過(guò)程,減少了時(shí)間成本。3、香港多IP服務(wù)器,CN2直連網(wǎng)絡(luò ),線(xiàn)路穩定,可快速抓取目標網(wǎng)站內容,為瀏覽者提供用戶(hù)體驗。4.由于香港的多IP服務(wù)器都是獨立的真實(shí)IP,
具體內容如下:

1、性能強大
雖然采集網(wǎng)站采集程序的內容可以實(shí)現采集,發(fā)布全自動(dòng)運行,本身需要的硬件資源也不大,但是如果采集規則比較復雜而且采集的數據量比較大的話(huà),對服務(wù)器的壓力還是不小的,所以一般如果要制作內容采集,至少需要4- E3以上核心CPU,保證相對較低的故障率,香港服務(wù)器 配置均為主流配置,不僅兼容市面上常見(jiàn)的主流采集軟件,還可以根據用戶(hù)的需求,使用起來(lái)非常方便
2. 無(wú)需備案即可使用
一般采集網(wǎng)站都是以站群的形式搭建為主,所以在選擇服務(wù)器的時(shí)候,主要是選擇海外的服務(wù)器進(jìn)行備案,否則備案時(shí)間很長(cháng),上百個(gè)域名一起管理。比較麻煩,但是香港服務(wù)器數據海外服務(wù)器可以在服務(wù)器交付后立即構建網(wǎng)站,充分簡(jiǎn)化了構建網(wǎng)站的過(guò)程。

3.線(xiàn)路穩定采集流暢
現在采集網(wǎng)站主要以大陸內容為主,香港服務(wù)器搭建采集網(wǎng)站優(yōu)勢明顯。香港服務(wù)器有CN2直連網(wǎng)絡(luò ),所以在采集過(guò)程中可以快速抓取目標網(wǎng)站的內容,發(fā)布也可以快速響應,瀏覽用戶(hù)的體驗也比較不錯。
4、豐富的IP資源
經(jīng)常制作采集站點(diǎn)的用戶(hù)都知道,所謂采集就是通過(guò)HTTP請求獲取內容。雖然市面上有很多支持IP偽裝的采集工具,但還是有一些可能會(huì )拒絕訪(fǎng)問(wèn),而且由于香港的多IP服務(wù)器都是獨立的真實(shí)IP,被訪(fǎng)問(wèn)的概率攔截率相對較低。
全新產(chǎn)品:速賣(mài)通產(chǎn)品采集應用
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 196 次瀏覽 ? 2022-12-10 20:47
應用介紹:
通過(guò)這款應用,商家可以快速采集速賣(mài)通國際站上的任何商品。只需輸入您想要的采集商品id,系統會(huì )在幾分鐘內自動(dòng)將其上架至店鋪SHOPYY后臺,二次編輯后即可上架。
借助該應用,大大減少了商戶(hù)的人工操作流程,提升了頭部產(chǎn)品的效率。有效避免業(yè)務(wù)準備周期長(cháng)的問(wèn)題,可在短時(shí)間內實(shí)現網(wǎng)站上線(xiàn)運營(yíng)。
腳步:
第一步:在后臺點(diǎn)擊從應用商店安裝后,在我的應用列表中找到對應的插件,點(diǎn)擊“訪(fǎng)問(wèn)”,跳轉到設置頁(yè)面。
第二步:點(diǎn)擊“速賣(mài)通商品管理”進(jìn)入列表頁(yè)面,列表中會(huì )顯示所有采集進(jìn)口商品。
第三步:點(diǎn)擊右上角“添加速賣(mài)通商品”,進(jìn)入信息錄入頁(yè)面。
【速賣(mài)通商品ID】從速賣(mài)通網(wǎng)站復制需要采集的商品ID,獲取商品ID的方法如下圖所示:
注意:如果有多個(gè)產(chǎn)品 采集 在一起,每個(gè)產(chǎn)品 ID 應該用逗號或換行符分隔。
【商品發(fā)布語(yǔ)言】下拉選擇發(fā)布語(yǔ)言。
【商品發(fā)布市場(chǎng)】根據選擇的發(fā)布語(yǔ)言選擇對應的國家。
第四步:以上信息設置完成后,點(diǎn)擊“保存信息”,商品將進(jìn)入列表等待同步。
(1) 同步成功后,列表中會(huì )顯示同步狀態(tài)。
?。?)同步成功的商品自動(dòng)顯示在SHOPYY后臺商品下架列表中,方便上架前二次編輯。
注意:同步到SHOPYY后臺時(shí),由于圖片采集需要時(shí)間,這里的商品圖片要過(guò)幾分鐘才會(huì )顯示。
完成以上步驟后,速賣(mài)通產(chǎn)品采集就制作完成了。
解決方案:帶你了解數據采集器的存儲功能
數據采集器內存什么時(shí)候會(huì )滿(mǎn)?
滿(mǎn)了會(huì )停止存儲嗎?
數據采集器的應用是固定的,每天測量的數據大小也是固定的。為了防止數據在采集前被覆蓋,我們將使用這個(gè)文章來(lái)詳細說(shuō)明金寶數據采集器的存儲功能。
數據采集器已滿(mǎn)是什么意思?
數據采集器由很多存儲單元組成,內存大小是固定的。
如果數據未滿(mǎn),數據 采集器 不會(huì )停止存儲新數據。程序中有存儲指令。當數據已滿(mǎn)時(shí),舊數據將被新數據覆蓋。這個(gè)時(shí)間是數據采集器的最大存儲時(shí)間。為了避免數據被覆蓋,此時(shí)必須保存之前采集的數據。
滿(mǎn)倉與哪些因素有關(guān)
1) 數據可用內存大小采集器
2)分配給數據表的記錄數
3)每次記錄數據寫(xiě)入表的數據大小
4)數組的數據類(lèi)型
5) 數據存儲頻率
如何計算data采集器的內存何時(shí)滿(mǎn)
對于新數據采集器,可以使用loader讓數據采集器計算存儲時(shí)間,根據提示找到這些信息。
1)金寶數據采集器系統從OS28版本開(kāi)始。在DataTableInfo表中,程序中的每個(gè)數據表都分配了一個(gè)名為DataFillDays的表,可以找到存儲的信息?;騿螕?Campbell Data采集器 支持軟件(LoggerNet、PC400 或 PC200W)中的站點(diǎn)狀態(tài)按鈕以查看表格 FillTimes 選項卡。{注意:CR200(X)系列數據采集器不能使用此方法計算填表時(shí)間}
2) 其他條件下存儲的數據
對于存儲數據的數據表,除了時(shí)間數據,數據的默認掃描頻率采集器是數據寫(xiě)入數據表的條件。結果,DataFillDays 表會(huì )在幾分鐘或幾小時(shí)內被填滿(mǎn),這顯然不是我們需要的數據存儲時(shí)間。針對這種情況,需要通過(guò)條件來(lái)設置數據表的表大?。创鎯Χ嗌贄l),而不是讓數據采集器自動(dòng)分配數據表大小,只保留數據 采集器 用于時(shí)間存儲自動(dòng)分配的權限。
如何計算存儲在數組中的舊數據采集器的存儲時(shí)間
存儲數組:由大量的存儲單元組成,每個(gè)存儲單元可以存儲1位二進(jìn)制數據(0,1)。通常存儲單元排列成N行×M列的矩陣形式。
如果有較舊的基于數組的數據 采集器,我們可以通過(guò)每天將 62,000 內存除以數組存儲來(lái)估算存儲時(shí)間。以數組 106, 239, 1400, 22.47, 22.81, 73, 10.61 為例,它收錄 7 個(gè)數據點(diǎn),如果每小時(shí)存儲此數據,則將存儲 168 個(gè)數據點(diǎn)(24 小時(shí) * 7 個(gè)數據點(diǎn))。因此,每天 62000 個(gè)數據點(diǎn)/168 個(gè)數據點(diǎn) ≈ 369 天。您還可以存儲多個(gè)時(shí)間間隔的數據,要計算總數據點(diǎn),請將數據采集器總內存除以總數據點(diǎn)。
應該多久采集一次數據
采集和檢查數據是驗證系統是否正常運行的最直接的方法。如果系統出現故障,可以通過(guò)采集數據及時(shí)發(fā)現故障并處理,不會(huì )造成重大損失。不要等到新數據即將覆蓋舊數據時(shí)才開(kāi)始采集。多久采集一次數據取決于實(shí)際情況??傊?,要經(jīng)常采集數據,保證時(shí)間間隔不要太長(cháng)。畢竟每一個(gè)測量數據都是非常寶貴的。 查看全部
全新產(chǎn)品:速賣(mài)通產(chǎn)品采集應用
應用介紹:
通過(guò)這款應用,商家可以快速采集速賣(mài)通國際站上的任何商品。只需輸入您想要的采集商品id,系統會(huì )在幾分鐘內自動(dòng)將其上架至店鋪SHOPYY后臺,二次編輯后即可上架。
借助該應用,大大減少了商戶(hù)的人工操作流程,提升了頭部產(chǎn)品的效率。有效避免業(yè)務(wù)準備周期長(cháng)的問(wèn)題,可在短時(shí)間內實(shí)現網(wǎng)站上線(xiàn)運營(yíng)。
腳步:
第一步:在后臺點(diǎn)擊從應用商店安裝后,在我的應用列表中找到對應的插件,點(diǎn)擊“訪(fǎng)問(wèn)”,跳轉到設置頁(yè)面。
第二步:點(diǎn)擊“速賣(mài)通商品管理”進(jìn)入列表頁(yè)面,列表中會(huì )顯示所有采集進(jìn)口商品。

第三步:點(diǎn)擊右上角“添加速賣(mài)通商品”,進(jìn)入信息錄入頁(yè)面。
【速賣(mài)通商品ID】從速賣(mài)通網(wǎng)站復制需要采集的商品ID,獲取商品ID的方法如下圖所示:
注意:如果有多個(gè)產(chǎn)品 采集 在一起,每個(gè)產(chǎn)品 ID 應該用逗號或換行符分隔。
【商品發(fā)布語(yǔ)言】下拉選擇發(fā)布語(yǔ)言。
【商品發(fā)布市場(chǎng)】根據選擇的發(fā)布語(yǔ)言選擇對應的國家。

第四步:以上信息設置完成后,點(diǎn)擊“保存信息”,商品將進(jìn)入列表等待同步。
(1) 同步成功后,列表中會(huì )顯示同步狀態(tài)。
?。?)同步成功的商品自動(dòng)顯示在SHOPYY后臺商品下架列表中,方便上架前二次編輯。
注意:同步到SHOPYY后臺時(shí),由于圖片采集需要時(shí)間,這里的商品圖片要過(guò)幾分鐘才會(huì )顯示。
完成以上步驟后,速賣(mài)通產(chǎn)品采集就制作完成了。
解決方案:帶你了解數據采集器的存儲功能
數據采集器內存什么時(shí)候會(huì )滿(mǎn)?
滿(mǎn)了會(huì )停止存儲嗎?
數據采集器的應用是固定的,每天測量的數據大小也是固定的。為了防止數據在采集前被覆蓋,我們將使用這個(gè)文章來(lái)詳細說(shuō)明金寶數據采集器的存儲功能。
數據采集器已滿(mǎn)是什么意思?
數據采集器由很多存儲單元組成,內存大小是固定的。
如果數據未滿(mǎn),數據 采集器 不會(huì )停止存儲新數據。程序中有存儲指令。當數據已滿(mǎn)時(shí),舊數據將被新數據覆蓋。這個(gè)時(shí)間是數據采集器的最大存儲時(shí)間。為了避免數據被覆蓋,此時(shí)必須保存之前采集的數據。
滿(mǎn)倉與哪些因素有關(guān)

1) 數據可用內存大小采集器
2)分配給數據表的記錄數
3)每次記錄數據寫(xiě)入表的數據大小
4)數組的數據類(lèi)型
5) 數據存儲頻率
如何計算data采集器的內存何時(shí)滿(mǎn)
對于新數據采集器,可以使用loader讓數據采集器計算存儲時(shí)間,根據提示找到這些信息。
1)金寶數據采集器系統從OS28版本開(kāi)始。在DataTableInfo表中,程序中的每個(gè)數據表都分配了一個(gè)名為DataFillDays的表,可以找到存儲的信息?;騿螕?Campbell Data采集器 支持軟件(LoggerNet、PC400 或 PC200W)中的站點(diǎn)狀態(tài)按鈕以查看表格 FillTimes 選項卡。{注意:CR200(X)系列數據采集器不能使用此方法計算填表時(shí)間}

2) 其他條件下存儲的數據
對于存儲數據的數據表,除了時(shí)間數據,數據的默認掃描頻率采集器是數據寫(xiě)入數據表的條件。結果,DataFillDays 表會(huì )在幾分鐘或幾小時(shí)內被填滿(mǎn),這顯然不是我們需要的數據存儲時(shí)間。針對這種情況,需要通過(guò)條件來(lái)設置數據表的表大?。创鎯Χ嗌贄l),而不是讓數據采集器自動(dòng)分配數據表大小,只保留數據 采集器 用于時(shí)間存儲自動(dòng)分配的權限。
如何計算存儲在數組中的舊數據采集器的存儲時(shí)間
存儲數組:由大量的存儲單元組成,每個(gè)存儲單元可以存儲1位二進(jìn)制數據(0,1)。通常存儲單元排列成N行×M列的矩陣形式。
如果有較舊的基于數組的數據 采集器,我們可以通過(guò)每天將 62,000 內存除以數組存儲來(lái)估算存儲時(shí)間。以數組 106, 239, 1400, 22.47, 22.81, 73, 10.61 為例,它收錄 7 個(gè)數據點(diǎn),如果每小時(shí)存儲此數據,則將存儲 168 個(gè)數據點(diǎn)(24 小時(shí) * 7 個(gè)數據點(diǎn))。因此,每天 62000 個(gè)數據點(diǎn)/168 個(gè)數據點(diǎn) ≈ 369 天。您還可以存儲多個(gè)時(shí)間間隔的數據,要計算總數據點(diǎn),請將數據采集器總內存除以總數據點(diǎn)。
應該多久采集一次數據
采集和檢查數據是驗證系統是否正常運行的最直接的方法。如果系統出現故障,可以通過(guò)采集數據及時(shí)發(fā)現故障并處理,不會(huì )造成重大損失。不要等到新數據即將覆蓋舊數據時(shí)才開(kāi)始采集。多久采集一次數據取決于實(shí)際情況??傊?,要經(jīng)常采集數據,保證時(shí)間間隔不要太長(cháng)。畢竟每一個(gè)測量數據都是非常寶貴的。
技巧:經(jīng)驗分享:如何才能讓EXCEL計算速度更快?跑起來(lái)嗖嗖的
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 145 次瀏覽 ? 2022-12-04 12:47
筆記:
這篇文章是我給知乎的回答,分享給大家。
原問(wèn)答地址:
?。?br /> 本來(lái)打算關(guān)了電腦睡覺(jué),結果打開(kāi)知乎又看了一遍,就睡著(zhù)了,少睡了兩個(gè)小時(shí)。為了回答這個(gè)問(wèn)題,我將利用Excel的概念和方法,結合采集到的資料,對我新出版的《“懶”科技:打造財務(wù)Excel專(zhuān)家》第一章的內容進(jìn)行補充完善,修正成本盡量回答。系統化、學(xué)術(shù)化,符合知乎的專(zhuān)業(yè)性。希望對你有幫助。
當表的計算效率較低時(shí),可以考慮以下幾個(gè)方面進(jìn)行優(yōu)化:
1、首先要合理設計數據的布局,這是保證計算效率的前提
由于 Excel 以不同的速度引用此工作表、不同工作簿或工作表中的訪(fǎng)問(wèn)數據,因此計算對其他工作表的引用通常比計算工作表內的引用慢。當數據計算量較大時(shí),必須考慮數據的整體布局:數據是保存在單獨的工作簿中,還是保存在單獨的工作表中,還是保存在同一個(gè)工作表中。
基于完整性的原則,如果是列表類(lèi)型的數據表,如果可能,盡量將數據整合到同一個(gè)工作表中,至少盡量在同一個(gè)工作簿中。如果不能將它們合并到同一個(gè)工作簿中,則寧可使用少量大工作簿,也不要使用大量小工作簿。盡可能避免工作簿之間的鏈接。鏈接外部工作簿不僅會(huì )影響表格的打開(kāi)速度,而且在移動(dòng)或刪除工作簿時(shí)會(huì )造成鏈接斷開(kāi),不易查找和修復。
2. 不可避免要參考其他作業(yè)本時(shí)的提速技巧
嘗試對已關(guān)閉的工作簿使用簡(jiǎn)單的直接單元格引用。這樣做可以避免在重新計算任何工作簿時(shí)重新計算所有鏈接的工作簿。
如果不能避免使用鏈接工作簿,最好全部打開(kāi)而不是關(guān)閉,而且打開(kāi)工作表的順序也有講究,先打開(kāi)要鏈接的工作簿,再打開(kāi)收錄鏈接的工作簿。通常,從打開(kāi)的工作簿中讀取鏈接比從關(guān)閉的工作簿中讀取鏈接更快。
進(jìn)一步提速的“離家出走”方法:
Break:對于數據量較大的表格,將已經(jīng)計算出結果且不會(huì )更新的單元格的公式計算結果,通過(guò)專(zhuān)用粘貼轉換為數值,減少計算量;
處置:盡量不要在大范圍內使用需要大量計算的函數或公式。例如:條件格式和數據有效性函數雖然很強大,數組公式運算功能也很強大,但是大量使用會(huì )明顯降低計算速度,除非你愿意忍受蝸牛般的運算速度,否則,不要大規模使用數據Validation、條件格式、數組公式;
關(guān)閉:如果工作表需要大量計算,而其他工作表很少引用它,請考慮將其從本工作簿中移出。以免每次重新計算時(shí)影響工作簿的整體計算速度。
3、原創(chuàng )數據要標準化
原創(chuàng )數據必須標準化,否則會(huì )用函數公式清洗不規范的數據,增加中間環(huán)節,影響計算速度。比如數據的來(lái)源不是手動(dòng)輸入的,而是從其他系統導出的。導出的數據可能未標準化。比如數字是文本格式,數字后面有空格,還有不可見(jiàn)字符。這些數據不能直接參與計算。如果不手動(dòng)去組織標準化的數據,就不得不使用函數公式來(lái)避免,這大大影響了計算速度。
4、注意公式函數的計算效率,盡量使用效率高的函數,或者改用其他函數。
1.除非必要,否則不要使用變量函數(volatile functions)。
Excel的變量函數有:RAND、NOW、TODAY、OFFSET、CELL、INDIRECT和INFO。變量函數有一個(gè)特點(diǎn),當值發(fā)生變化時(shí),每次都要重新計算,會(huì )影響表的計算性能。
例如,我們經(jīng)常使用下面的公式來(lái)定義動(dòng)態(tài)區域:
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)
優(yōu)點(diǎn)是會(huì )自動(dòng)擴充收錄新條目,但是會(huì )降低表的計算性能,因為OFFSET是volatile函數,而且OFFSET中的COUNTA函數要查很多行,計算效率較低.
一般情況下,我們可以使用Excel的表格函數來(lái)代替動(dòng)態(tài)范圍(Excel 2003中稱(chēng)為list)。
2. 使用其他行和列計算并存儲一次中間結果,以便在其他公式中重復使用。并且,如前所述,盡可能多地參考其他cell已有的計算結果,可以提高計算效率。
在單元格 C2 中輸入公式:
=SUM($A$2:$A2)
然后將公式填寫(xiě)到 C2000。如上所示。B列的公式是前面累加的結果加上這一行的數字。B列的公式是指上一行單元格的計算結果。B列公式與C列公式相比,引用單元格總數減少了500倍,計算量大大減少。
3. 減少每個(gè)公式中的引用數量,最大限度地減少函數中引用的單元格范圍。
雖然數組公式可以在 Excel 2007 之后的版本中處理整列引用,但這會(huì )強制計算列中的所有單元格,包括空單元格。這會(huì )使表計算非常慢。
4、盡量使用最有效的函數(一般自定義函數比Excel內置函數慢),準備合適的公式,盡量減少公式的計算次數
=IF(ISERROR(VLOOKUP("龍一凡",$A$2:$C$1000,3,0)),"沒(méi)有這個(gè)人",VLOOKUP("龍一凡",$A$2:$C$1000, 3 ,0))
如果表格A2:A1000中有“龍一帆”,使用上面的公式,Excel會(huì )計算兩次VLOOKUP函數。在Excel 2007之后的版本中,可以使用IFERROR來(lái)減少操作次數:
=IFERROR(VLOOKUP("龍一凡",$A$2:$C$1000,3,0),"沒(méi)有找到這個(gè)人")
5.非必要不要使用會(huì )觸發(fā)重新計算的操作
以下操作會(huì )觸發(fā)重新計算:
1. 在自動(dòng)模式下單擊:?jiǎn)螕粜谢蛄蟹指舴?br /> 2. 在工作表中插入或刪除行、列或單元格。
3. 添加、更改或刪除定義的名稱(chēng)。
4. 重命名工作表或在自動(dòng)模式下更改工作表位置。
5. 使用過(guò)濾器,隱藏或取消隱藏表中的行。
6. 以自動(dòng)模式打開(kāi)工作簿。如果工作簿上次由不同版本的 Excel 計算,則打開(kāi)工作簿通常會(huì )導致完整計算。
7. 以手動(dòng)模式保存工作簿,并選中“保存前自動(dòng)重新計算”選項。
6. 如果可能,在使用查找引用之前對數據進(jìn)行排序。盡可能避免對未排序的數據執行查找,因為它們很慢。
1. 如果使用精確匹配選項,則函數的計算時(shí)間與找到匹配之前掃描的單元格數成正比。對于大面積執行的查找,這個(gè)時(shí)間可能會(huì )很長(cháng)。使用 VLOOKUP、HLOOKUP 和 MATCH 的近似匹配選項對已排序數據的查找時(shí)間很短,并且不會(huì )顯著(zhù)增加,具體取決于要查找的區域的長(cháng)度。
2. 由于精確匹配查找可能很慢,您應該考慮使用以下可以提高性能的方法:
? 使用工作表。使同一工作表中的查找和數據運行得更快。
? 如果可以,先對數據進(jìn)行排序,使用近似匹配。
?如果必須使用精確匹配搜索,請將掃描的單元格范圍限制在最小范圍內。使用動(dòng)態(tài)范圍名稱(chēng)或表(列表)函數,而不是引用大量的行或列。
7、前面四點(diǎn)都實(shí)現后,如果表格的計算速度還是很慢,將Excel的計算方式改為手動(dòng)計算,需要的時(shí)候再重新計算。
在手動(dòng)計算模式下,按[F9]可以觸發(fā)智能重新計算。使用 [Shift+F9] 僅重新計算選定的工作表,按 [Ctrl+Alt+F9] 強制完全計算所有公式,或按 [Ctrl+Shift+Alt+F9] 強制完全重建依賴(lài)關(guān)系和執行完成計算。
F9 計算所有打開(kāi)的工作簿中的所有工作表。
按 Shift+F9 計算活動(dòng)工作表。
按 Ctrl+Alt+F9 可計算所有打開(kāi)的工作簿中的所有工作表,而不管它們自上次計算以來(lái)是否發(fā)生了變化。
如果按 Ctrl+Alt+Shift+F9,將重新檢查相關(guān)公式,然后計算所有打開(kāi)的工作簿中的所有單元格,包括未標記為計算的單元格。
解決方案:利用人人站CMS插件讓網(wǎng)站快速收錄以及關(guān)鍵詞排名
應該如何使用人人網(wǎng)cms插件讓網(wǎng)站快速收錄和關(guān)鍵詞排名。多年來(lái),為了營(yíng)造良好的搜索生態(tài)環(huán)境,百度煞費苦心。推出各種算法整治網(wǎng)站,在互聯(lián)網(wǎng)行業(yè)引起不小風(fēng)波。像青峰算法、Beacon算法、Drizzle算法等,每一次算法改動(dòng)都會(huì )震動(dòng)大量的網(wǎng)站,尤其是那些用戶(hù)體驗極差、通過(guò)作弊手段優(yōu)化的網(wǎng)站受到影響。用力打。所以由此,我們應該認識到,網(wǎng)站優(yōu)化必須堅持白帽技術(shù),以用戶(hù)體驗為中心。和作者一樣,所有的優(yōu)化都是基于用戶(hù)體驗。高質(zhì)量的內容和清晰的 網(wǎng)站 結構可以大大增加用戶(hù)的喜愛(ài)度,打下堅實(shí)的基礎。自然不會(huì )怕百度算法影響排名。
網(wǎng)站被黑影響排名:網(wǎng)站被黑也讓很多站長(cháng)束手無(wú)策,防不勝防。網(wǎng)站不言而喻,每個(gè)人都知道被黑客攻擊的嚴重性。網(wǎng)站被黑客攻擊的影響不僅僅是流量異常那么簡(jiǎn)單。網(wǎng)站被黑,首先網(wǎng)站的名譽(yù)會(huì )大大降低。嚴重的話(huà),好不容易積累起來(lái)的良好信用也會(huì )被一口氣毀掉,面臨網(wǎng)站被黑的風(fēng)險。而如果網(wǎng)站被標記為危險網(wǎng)站,那么百度搜索引擎對網(wǎng)站的好感度也會(huì )急劇下降,他們不會(huì )光顧你的網(wǎng)站,更不會(huì )期待它也給你排名。因此,我們在做網(wǎng)站優(yōu)化的時(shí)候,
網(wǎng)站結構影響排名:網(wǎng)站 結構對排名優(yōu)化也有一定的影響,主要體現在兩個(gè)方面:用戶(hù)體驗和搜索引擎蜘蛛抓取的方便性。網(wǎng)站結構優(yōu)化是樹(shù)狀結構還是扁平結構,層次會(huì )更清晰,用戶(hù)體驗會(huì )更好,方便用戶(hù)獲取網(wǎng)站信息,也能讓用戶(hù)注意到其他精彩內容展示。因此感興趣。同時(shí)也可以引導百度蜘蛛有序的沿著(zhù)結構,逐層爬取索引。
競爭對手網(wǎng)站優(yōu)化影響排名:就像我們在比賽中所做的,這次你獲得了第一頁(yè),但如果你在后期不繼續努力保持分數,那么你將面臨有在接下來(lái)的比賽中被排擠出名次的危險。所以在關(guān)鍵詞優(yōu)化中,為了從競爭對手中脫穎而出,我們在優(yōu)化網(wǎng)站的時(shí)候,需要分析關(guān)鍵詞,選擇關(guān)鍵詞來(lái)優(yōu)化競爭小,但是搜索量高的詞,其次,不斷提高優(yōu)化技巧,注重優(yōu)化的細節,在內容上堅持優(yōu)質(zhì)內容。
高質(zhì)量、有需求的 原創(chuàng ) 內容:高質(zhì)量 文章 內容是一個(gè)常見(jiàn)的話(huà)題,這恰恰說(shuō)明了它的重要性。也就是說(shuō),如果你的網(wǎng)站內容質(zhì)量低,用戶(hù)自然不會(huì )喜歡它,而對于百度搜索引擎來(lái)說(shuō),如果有很多用戶(hù)喜歡網(wǎng)站,它也會(huì )認為它是有價(jià)值的網(wǎng)站,通常捐贈 收錄 也會(huì )增加。但是如果你的網(wǎng)站糟糕到用戶(hù)一刻都不想停留,你怎么能讓搜索引擎蜘蛛喜歡你的網(wǎng)站呢?搜索引擎蜘蛛不會(huì )抓取內容,那么排名呢?我們可以使用人人網(wǎng)cms插件快速制作網(wǎng)站收錄和關(guān)鍵詞排名。
1.根據關(guān)鍵詞采集文章,通過(guò)人人站cms插件采集填寫(xiě)內容。(人人網(wǎng)cms插件還自帶關(guān)鍵詞采集功能)
2.自動(dòng)過(guò)濾其他網(wǎng)站推廣信息/支持其他網(wǎng)站信息替換
3. 支持多采集來(lái)源采集(涵蓋所有行業(yè)新聞來(lái)源[新聞來(lái)源權威可讀],海量?jì)热輲?,采集內容新鮮)
4.支持圖片本地化或存儲到其他平臺
5.全自動(dòng)批量掛機采集,無(wú)縫對接各大cms發(fā)布商,采集偽原創(chuàng )自動(dòng)發(fā)布并推送至搜索引擎
這個(gè)人人站cms插件工具還搭載了很多SEO功能,不僅可以通過(guò)人人站cms插件實(shí)現采集偽原創(chuàng )發(fā)布,還有很多搜索引擎優(yōu)化功能??梢栽黾雨P(guān)鍵詞密度,增加頁(yè)面原創(chuàng )度,增加用戶(hù)體驗,實(shí)現優(yōu)質(zhì)內容。
1.設置標題的前綴和后綴(標題的區分度更好收錄)
2.內容關(guān)鍵詞插入(合理增加關(guān)鍵詞密度)
3.隨機圖片插入(文章沒(méi)有圖片可以隨機插入相關(guān)圖片)
4、搜索引擎推送(文章發(fā)布成功后,主動(dòng)將文章推送給搜索引擎,保證新鏈接能及時(shí)被搜索引擎收錄獲?。?br /> 5.隨機點(diǎn)贊-隨機閱讀-隨機作者(增加頁(yè)面原創(chuàng )度)
6.內容與標題一致(使內容與標題一致)
7、自動(dòng)內鏈(在執行發(fā)布任務(wù)時(shí),在文章內容中自動(dòng)生成內鏈,有助于引導頁(yè)面蜘蛛爬行,增加頁(yè)面權重)
8、定時(shí)發(fā)布(定時(shí)發(fā)布網(wǎng)站內容可以讓搜索引擎養成定時(shí)抓取網(wǎng)頁(yè)的習慣,從而提高網(wǎng)站的收錄)
可以統一管理數十萬(wàn)個(gè)不同的cms網(wǎng)站。一個(gè)人維護數百個(gè)網(wǎng)站文章更新不是問(wèn)題。
1. 批量監控不同的cms網(wǎng)站數據(無(wú)論你的網(wǎng)站是帝國、易游、ZBLOG、織夢(mèng)、WP、小旋風(fēng)、站群、PB、蘋(píng)果、搜外等各大cms,可以同時(shí)管理和批量發(fā)布的工具)
2.設置批量發(fā)布次數(可設置發(fā)布間隔/每天發(fā)布總數)
3.可以設置不同的關(guān)鍵詞文章發(fā)布不同的欄目
4、偽原創(chuàng )保留字(在文章原創(chuàng )中設置核心字不要為偽原創(chuàng ))
5、軟件直接監控已發(fā)布、待發(fā)布、是否偽原創(chuàng )、發(fā)布狀態(tài)、URL、程序、發(fā)布時(shí)間等。
6、通過(guò)軟件可以直接查看蜘蛛、收錄、網(wǎng)站的每日體重
我們需要注意的一件事是,SEO優(yōu)化排名有時(shí)會(huì )發(fā)生變化是正常的。例如,外部鏈接中死鏈接的出現會(huì )引起排名的變化。如果是老站,權重高,異常鏈接也會(huì )影響排名。但是像那些大的網(wǎng)站,它的權重比較高,一點(diǎn)點(diǎn)外鏈對他影響不大。如果你的是新站,結果會(huì )不一樣。
其次,每個(gè)網(wǎng)站的SEO優(yōu)化一定要提前分析好,這樣以后的排名結果才會(huì )在你的預期之內,才不會(huì )像無(wú)頭雞一樣迷失方向。你要提前看好關(guān)鍵詞,只有確定了關(guān)鍵詞才去做。這樣會(huì )降低難度,否則沒(méi)有結果你就去優(yōu)化。
新站優(yōu)化一般三個(gè)月內沒(méi)有排名,即使有排名也只是偽排名?;蛘哒f(shuō),可以說(shuō)是可有可無(wú)。也許今天有排名,明天就沒(méi)有了。一周后有排名,但還是會(huì )下降。為什么是這樣?這是因為百度處理數據的時(shí)候,有些人網(wǎng)站倒下了,你的就上來(lái)了,然后百度給你處理數據的時(shí)候,你的排名就沒(méi)有了。也就是說(shuō),三個(gè)月之內,你的網(wǎng)站將沒(méi)有排名的能力,因為百度有一個(gè)檢驗期(沙盒期)。
網(wǎng)站關(guān)鍵詞的選擇,一些新站長(cháng)在不知不覺(jué)中選擇了難的關(guān)鍵詞。這樣的后果可想而知,簡(jiǎn)直是打中打。不要目標太高,這樣做會(huì )打擊你的信心。如果選擇關(guān)鍵詞,也是優(yōu)化的重要一步。關(guān)鍵詞選的好,不僅會(huì )有流量,而且優(yōu)化難度也不高。這是關(guān)于分析。
優(yōu)化網(wǎng)站關(guān)鍵詞當然要分析,不然怎么優(yōu)化。有的站長(cháng)會(huì )說(shuō),你發(fā)原創(chuàng ),發(fā)高質(zhì)量的外鏈,堅持下去,一定能讓關(guān)鍵詞上去。那就大錯特錯了,seo高手是不會(huì )這么做的,即使有,偶爾也會(huì )這么做。高手是分析,分析百度的數據,做好自己的網(wǎng)站,排名就會(huì )慢慢上升。
具體是怎么分析的?每個(gè)行業(yè),每個(gè)關(guān)鍵詞都有不同的數據,很難統一。例如:網(wǎng)站從事婚紗攝影。想要拍出“三亞婚紗攝影”這個(gè)詞,接下來(lái)我們就要研究一下,想拍三亞婚紗攝影的用戶(hù)到底想看什么?第二個(gè)是什么?,也就是三亞婚紗攝影的圖片,不信可以搜索“三亞婚紗攝影”,百度圖片第一。也就是說(shuō),百度需要的是三亞的婚紗攝影圖片。如果你的 網(wǎng)站 有高質(zhì)量的圖片,百度就會(huì )給你排名。如果這還不夠排名,讓我們看看下一步是什么?想拍婚紗照的都想知道價(jià)格是多少。也就是說(shuō),如果我們 網(wǎng)站 有高質(zhì)量的圖片,價(jià)格也注明了。這樣才能更好的滿(mǎn)足用戶(hù)的需求。還是那句話(huà),想拍婚紗照的人一定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。想拍婚紗照的人,肯定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。想拍婚紗照的人,肯定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。
看完這篇文章,如果您覺(jué)得還不錯,不妨采集或轉發(fā)給需要的朋友和同事。每天跟隨博主帶你了解各種SEO經(jīng)驗,打通你的二脈! 查看全部
技巧:經(jīng)驗分享:如何才能讓EXCEL計算速度更快?跑起來(lái)嗖嗖的
筆記:
這篇文章是我給知乎的回答,分享給大家。
原問(wèn)答地址:
?。?br /> 本來(lái)打算關(guān)了電腦睡覺(jué),結果打開(kāi)知乎又看了一遍,就睡著(zhù)了,少睡了兩個(gè)小時(shí)。為了回答這個(gè)問(wèn)題,我將利用Excel的概念和方法,結合采集到的資料,對我新出版的《“懶”科技:打造財務(wù)Excel專(zhuān)家》第一章的內容進(jìn)行補充完善,修正成本盡量回答。系統化、學(xué)術(shù)化,符合知乎的專(zhuān)業(yè)性。希望對你有幫助。
當表的計算效率較低時(shí),可以考慮以下幾個(gè)方面進(jìn)行優(yōu)化:
1、首先要合理設計數據的布局,這是保證計算效率的前提
由于 Excel 以不同的速度引用此工作表、不同工作簿或工作表中的訪(fǎng)問(wèn)數據,因此計算對其他工作表的引用通常比計算工作表內的引用慢。當數據計算量較大時(shí),必須考慮數據的整體布局:數據是保存在單獨的工作簿中,還是保存在單獨的工作表中,還是保存在同一個(gè)工作表中。
基于完整性的原則,如果是列表類(lèi)型的數據表,如果可能,盡量將數據整合到同一個(gè)工作表中,至少盡量在同一個(gè)工作簿中。如果不能將它們合并到同一個(gè)工作簿中,則寧可使用少量大工作簿,也不要使用大量小工作簿。盡可能避免工作簿之間的鏈接。鏈接外部工作簿不僅會(huì )影響表格的打開(kāi)速度,而且在移動(dòng)或刪除工作簿時(shí)會(huì )造成鏈接斷開(kāi),不易查找和修復。
2. 不可避免要參考其他作業(yè)本時(shí)的提速技巧
嘗試對已關(guān)閉的工作簿使用簡(jiǎn)單的直接單元格引用。這樣做可以避免在重新計算任何工作簿時(shí)重新計算所有鏈接的工作簿。
如果不能避免使用鏈接工作簿,最好全部打開(kāi)而不是關(guān)閉,而且打開(kāi)工作表的順序也有講究,先打開(kāi)要鏈接的工作簿,再打開(kāi)收錄鏈接的工作簿。通常,從打開(kāi)的工作簿中讀取鏈接比從關(guān)閉的工作簿中讀取鏈接更快。
進(jìn)一步提速的“離家出走”方法:
Break:對于數據量較大的表格,將已經(jīng)計算出結果且不會(huì )更新的單元格的公式計算結果,通過(guò)專(zhuān)用粘貼轉換為數值,減少計算量;
處置:盡量不要在大范圍內使用需要大量計算的函數或公式。例如:條件格式和數據有效性函數雖然很強大,數組公式運算功能也很強大,但是大量使用會(huì )明顯降低計算速度,除非你愿意忍受蝸牛般的運算速度,否則,不要大規模使用數據Validation、條件格式、數組公式;
關(guān)閉:如果工作表需要大量計算,而其他工作表很少引用它,請考慮將其從本工作簿中移出。以免每次重新計算時(shí)影響工作簿的整體計算速度。
3、原創(chuàng )數據要標準化
原創(chuàng )數據必須標準化,否則會(huì )用函數公式清洗不規范的數據,增加中間環(huán)節,影響計算速度。比如數據的來(lái)源不是手動(dòng)輸入的,而是從其他系統導出的。導出的數據可能未標準化。比如數字是文本格式,數字后面有空格,還有不可見(jiàn)字符。這些數據不能直接參與計算。如果不手動(dòng)去組織標準化的數據,就不得不使用函數公式來(lái)避免,這大大影響了計算速度。
4、注意公式函數的計算效率,盡量使用效率高的函數,或者改用其他函數。

1.除非必要,否則不要使用變量函數(volatile functions)。
Excel的變量函數有:RAND、NOW、TODAY、OFFSET、CELL、INDIRECT和INFO。變量函數有一個(gè)特點(diǎn),當值發(fā)生變化時(shí),每次都要重新計算,會(huì )影響表的計算性能。
例如,我們經(jīng)常使用下面的公式來(lái)定義動(dòng)態(tài)區域:
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)
優(yōu)點(diǎn)是會(huì )自動(dòng)擴充收錄新條目,但是會(huì )降低表的計算性能,因為OFFSET是volatile函數,而且OFFSET中的COUNTA函數要查很多行,計算效率較低.
一般情況下,我們可以使用Excel的表格函數來(lái)代替動(dòng)態(tài)范圍(Excel 2003中稱(chēng)為list)。
2. 使用其他行和列計算并存儲一次中間結果,以便在其他公式中重復使用。并且,如前所述,盡可能多地參考其他cell已有的計算結果,可以提高計算效率。
在單元格 C2 中輸入公式:
=SUM($A$2:$A2)
然后將公式填寫(xiě)到 C2000。如上所示。B列的公式是前面累加的結果加上這一行的數字。B列的公式是指上一行單元格的計算結果。B列公式與C列公式相比,引用單元格總數減少了500倍,計算量大大減少。
3. 減少每個(gè)公式中的引用數量,最大限度地減少函數中引用的單元格范圍。
雖然數組公式可以在 Excel 2007 之后的版本中處理整列引用,但這會(huì )強制計算列中的所有單元格,包括空單元格。這會(huì )使表計算非常慢。
4、盡量使用最有效的函數(一般自定義函數比Excel內置函數慢),準備合適的公式,盡量減少公式的計算次數
=IF(ISERROR(VLOOKUP("龍一凡",$A$2:$C$1000,3,0)),"沒(méi)有這個(gè)人",VLOOKUP("龍一凡",$A$2:$C$1000, 3 ,0))
如果表格A2:A1000中有“龍一帆”,使用上面的公式,Excel會(huì )計算兩次VLOOKUP函數。在Excel 2007之后的版本中,可以使用IFERROR來(lái)減少操作次數:
=IFERROR(VLOOKUP("龍一凡",$A$2:$C$1000,3,0),"沒(méi)有找到這個(gè)人")
5.非必要不要使用會(huì )觸發(fā)重新計算的操作
以下操作會(huì )觸發(fā)重新計算:

1. 在自動(dòng)模式下單擊:?jiǎn)螕粜谢蛄蟹指舴?br /> 2. 在工作表中插入或刪除行、列或單元格。
3. 添加、更改或刪除定義的名稱(chēng)。
4. 重命名工作表或在自動(dòng)模式下更改工作表位置。
5. 使用過(guò)濾器,隱藏或取消隱藏表中的行。
6. 以自動(dòng)模式打開(kāi)工作簿。如果工作簿上次由不同版本的 Excel 計算,則打開(kāi)工作簿通常會(huì )導致完整計算。
7. 以手動(dòng)模式保存工作簿,并選中“保存前自動(dòng)重新計算”選項。
6. 如果可能,在使用查找引用之前對數據進(jìn)行排序。盡可能避免對未排序的數據執行查找,因為它們很慢。
1. 如果使用精確匹配選項,則函數的計算時(shí)間與找到匹配之前掃描的單元格數成正比。對于大面積執行的查找,這個(gè)時(shí)間可能會(huì )很長(cháng)。使用 VLOOKUP、HLOOKUP 和 MATCH 的近似匹配選項對已排序數據的查找時(shí)間很短,并且不會(huì )顯著(zhù)增加,具體取決于要查找的區域的長(cháng)度。
2. 由于精確匹配查找可能很慢,您應該考慮使用以下可以提高性能的方法:
? 使用工作表。使同一工作表中的查找和數據運行得更快。
? 如果可以,先對數據進(jìn)行排序,使用近似匹配。
?如果必須使用精確匹配搜索,請將掃描的單元格范圍限制在最小范圍內。使用動(dòng)態(tài)范圍名稱(chēng)或表(列表)函數,而不是引用大量的行或列。
7、前面四點(diǎn)都實(shí)現后,如果表格的計算速度還是很慢,將Excel的計算方式改為手動(dòng)計算,需要的時(shí)候再重新計算。
在手動(dòng)計算模式下,按[F9]可以觸發(fā)智能重新計算。使用 [Shift+F9] 僅重新計算選定的工作表,按 [Ctrl+Alt+F9] 強制完全計算所有公式,或按 [Ctrl+Shift+Alt+F9] 強制完全重建依賴(lài)關(guān)系和執行完成計算。
F9 計算所有打開(kāi)的工作簿中的所有工作表。
按 Shift+F9 計算活動(dòng)工作表。
按 Ctrl+Alt+F9 可計算所有打開(kāi)的工作簿中的所有工作表,而不管它們自上次計算以來(lái)是否發(fā)生了變化。
如果按 Ctrl+Alt+Shift+F9,將重新檢查相關(guān)公式,然后計算所有打開(kāi)的工作簿中的所有單元格,包括未標記為計算的單元格。
解決方案:利用人人站CMS插件讓網(wǎng)站快速收錄以及關(guān)鍵詞排名
應該如何使用人人網(wǎng)cms插件讓網(wǎng)站快速收錄和關(guān)鍵詞排名。多年來(lái),為了營(yíng)造良好的搜索生態(tài)環(huán)境,百度煞費苦心。推出各種算法整治網(wǎng)站,在互聯(lián)網(wǎng)行業(yè)引起不小風(fēng)波。像青峰算法、Beacon算法、Drizzle算法等,每一次算法改動(dòng)都會(huì )震動(dòng)大量的網(wǎng)站,尤其是那些用戶(hù)體驗極差、通過(guò)作弊手段優(yōu)化的網(wǎng)站受到影響。用力打。所以由此,我們應該認識到,網(wǎng)站優(yōu)化必須堅持白帽技術(shù),以用戶(hù)體驗為中心。和作者一樣,所有的優(yōu)化都是基于用戶(hù)體驗。高質(zhì)量的內容和清晰的 網(wǎng)站 結構可以大大增加用戶(hù)的喜愛(ài)度,打下堅實(shí)的基礎。自然不會(huì )怕百度算法影響排名。
網(wǎng)站被黑影響排名:網(wǎng)站被黑也讓很多站長(cháng)束手無(wú)策,防不勝防。網(wǎng)站不言而喻,每個(gè)人都知道被黑客攻擊的嚴重性。網(wǎng)站被黑客攻擊的影響不僅僅是流量異常那么簡(jiǎn)單。網(wǎng)站被黑,首先網(wǎng)站的名譽(yù)會(huì )大大降低。嚴重的話(huà),好不容易積累起來(lái)的良好信用也會(huì )被一口氣毀掉,面臨網(wǎng)站被黑的風(fēng)險。而如果網(wǎng)站被標記為危險網(wǎng)站,那么百度搜索引擎對網(wǎng)站的好感度也會(huì )急劇下降,他們不會(huì )光顧你的網(wǎng)站,更不會(huì )期待它也給你排名。因此,我們在做網(wǎng)站優(yōu)化的時(shí)候,
網(wǎng)站結構影響排名:網(wǎng)站 結構對排名優(yōu)化也有一定的影響,主要體現在兩個(gè)方面:用戶(hù)體驗和搜索引擎蜘蛛抓取的方便性。網(wǎng)站結構優(yōu)化是樹(shù)狀結構還是扁平結構,層次會(huì )更清晰,用戶(hù)體驗會(huì )更好,方便用戶(hù)獲取網(wǎng)站信息,也能讓用戶(hù)注意到其他精彩內容展示。因此感興趣。同時(shí)也可以引導百度蜘蛛有序的沿著(zhù)結構,逐層爬取索引。
競爭對手網(wǎng)站優(yōu)化影響排名:就像我們在比賽中所做的,這次你獲得了第一頁(yè),但如果你在后期不繼續努力保持分數,那么你將面臨有在接下來(lái)的比賽中被排擠出名次的危險。所以在關(guān)鍵詞優(yōu)化中,為了從競爭對手中脫穎而出,我們在優(yōu)化網(wǎng)站的時(shí)候,需要分析關(guān)鍵詞,選擇關(guān)鍵詞來(lái)優(yōu)化競爭小,但是搜索量高的詞,其次,不斷提高優(yōu)化技巧,注重優(yōu)化的細節,在內容上堅持優(yōu)質(zhì)內容。
高質(zhì)量、有需求的 原創(chuàng ) 內容:高質(zhì)量 文章 內容是一個(gè)常見(jiàn)的話(huà)題,這恰恰說(shuō)明了它的重要性。也就是說(shuō),如果你的網(wǎng)站內容質(zhì)量低,用戶(hù)自然不會(huì )喜歡它,而對于百度搜索引擎來(lái)說(shuō),如果有很多用戶(hù)喜歡網(wǎng)站,它也會(huì )認為它是有價(jià)值的網(wǎng)站,通常捐贈 收錄 也會(huì )增加。但是如果你的網(wǎng)站糟糕到用戶(hù)一刻都不想停留,你怎么能讓搜索引擎蜘蛛喜歡你的網(wǎng)站呢?搜索引擎蜘蛛不會(huì )抓取內容,那么排名呢?我們可以使用人人網(wǎng)cms插件快速制作網(wǎng)站收錄和關(guān)鍵詞排名。
1.根據關(guān)鍵詞采集文章,通過(guò)人人站cms插件采集填寫(xiě)內容。(人人網(wǎng)cms插件還自帶關(guān)鍵詞采集功能)
2.自動(dòng)過(guò)濾其他網(wǎng)站推廣信息/支持其他網(wǎng)站信息替換
3. 支持多采集來(lái)源采集(涵蓋所有行業(yè)新聞來(lái)源[新聞來(lái)源權威可讀],海量?jì)热輲?,采集內容新鮮)
4.支持圖片本地化或存儲到其他平臺
5.全自動(dòng)批量掛機采集,無(wú)縫對接各大cms發(fā)布商,采集偽原創(chuàng )自動(dòng)發(fā)布并推送至搜索引擎

這個(gè)人人站cms插件工具還搭載了很多SEO功能,不僅可以通過(guò)人人站cms插件實(shí)現采集偽原創(chuàng )發(fā)布,還有很多搜索引擎優(yōu)化功能??梢栽黾雨P(guān)鍵詞密度,增加頁(yè)面原創(chuàng )度,增加用戶(hù)體驗,實(shí)現優(yōu)質(zhì)內容。
1.設置標題的前綴和后綴(標題的區分度更好收錄)
2.內容關(guān)鍵詞插入(合理增加關(guān)鍵詞密度)
3.隨機圖片插入(文章沒(méi)有圖片可以隨機插入相關(guān)圖片)
4、搜索引擎推送(文章發(fā)布成功后,主動(dòng)將文章推送給搜索引擎,保證新鏈接能及時(shí)被搜索引擎收錄獲?。?br /> 5.隨機點(diǎn)贊-隨機閱讀-隨機作者(增加頁(yè)面原創(chuàng )度)
6.內容與標題一致(使內容與標題一致)
7、自動(dòng)內鏈(在執行發(fā)布任務(wù)時(shí),在文章內容中自動(dòng)生成內鏈,有助于引導頁(yè)面蜘蛛爬行,增加頁(yè)面權重)
8、定時(shí)發(fā)布(定時(shí)發(fā)布網(wǎng)站內容可以讓搜索引擎養成定時(shí)抓取網(wǎng)頁(yè)的習慣,從而提高網(wǎng)站的收錄)
可以統一管理數十萬(wàn)個(gè)不同的cms網(wǎng)站。一個(gè)人維護數百個(gè)網(wǎng)站文章更新不是問(wèn)題。
1. 批量監控不同的cms網(wǎng)站數據(無(wú)論你的網(wǎng)站是帝國、易游、ZBLOG、織夢(mèng)、WP、小旋風(fēng)、站群、PB、蘋(píng)果、搜外等各大cms,可以同時(shí)管理和批量發(fā)布的工具)

2.設置批量發(fā)布次數(可設置發(fā)布間隔/每天發(fā)布總數)
3.可以設置不同的關(guān)鍵詞文章發(fā)布不同的欄目
4、偽原創(chuàng )保留字(在文章原創(chuàng )中設置核心字不要為偽原創(chuàng ))
5、軟件直接監控已發(fā)布、待發(fā)布、是否偽原創(chuàng )、發(fā)布狀態(tài)、URL、程序、發(fā)布時(shí)間等。
6、通過(guò)軟件可以直接查看蜘蛛、收錄、網(wǎng)站的每日體重
我們需要注意的一件事是,SEO優(yōu)化排名有時(shí)會(huì )發(fā)生變化是正常的。例如,外部鏈接中死鏈接的出現會(huì )引起排名的變化。如果是老站,權重高,異常鏈接也會(huì )影響排名。但是像那些大的網(wǎng)站,它的權重比較高,一點(diǎn)點(diǎn)外鏈對他影響不大。如果你的是新站,結果會(huì )不一樣。
其次,每個(gè)網(wǎng)站的SEO優(yōu)化一定要提前分析好,這樣以后的排名結果才會(huì )在你的預期之內,才不會(huì )像無(wú)頭雞一樣迷失方向。你要提前看好關(guān)鍵詞,只有確定了關(guān)鍵詞才去做。這樣會(huì )降低難度,否則沒(méi)有結果你就去優(yōu)化。
新站優(yōu)化一般三個(gè)月內沒(méi)有排名,即使有排名也只是偽排名?;蛘哒f(shuō),可以說(shuō)是可有可無(wú)。也許今天有排名,明天就沒(méi)有了。一周后有排名,但還是會(huì )下降。為什么是這樣?這是因為百度處理數據的時(shí)候,有些人網(wǎng)站倒下了,你的就上來(lái)了,然后百度給你處理數據的時(shí)候,你的排名就沒(méi)有了。也就是說(shuō),三個(gè)月之內,你的網(wǎng)站將沒(méi)有排名的能力,因為百度有一個(gè)檢驗期(沙盒期)。
網(wǎng)站關(guān)鍵詞的選擇,一些新站長(cháng)在不知不覺(jué)中選擇了難的關(guān)鍵詞。這樣的后果可想而知,簡(jiǎn)直是打中打。不要目標太高,這樣做會(huì )打擊你的信心。如果選擇關(guān)鍵詞,也是優(yōu)化的重要一步。關(guān)鍵詞選的好,不僅會(huì )有流量,而且優(yōu)化難度也不高。這是關(guān)于分析。
優(yōu)化網(wǎng)站關(guān)鍵詞當然要分析,不然怎么優(yōu)化。有的站長(cháng)會(huì )說(shuō),你發(fā)原創(chuàng ),發(fā)高質(zhì)量的外鏈,堅持下去,一定能讓關(guān)鍵詞上去。那就大錯特錯了,seo高手是不會(huì )這么做的,即使有,偶爾也會(huì )這么做。高手是分析,分析百度的數據,做好自己的網(wǎng)站,排名就會(huì )慢慢上升。
具體是怎么分析的?每個(gè)行業(yè),每個(gè)關(guān)鍵詞都有不同的數據,很難統一。例如:網(wǎng)站從事婚紗攝影。想要拍出“三亞婚紗攝影”這個(gè)詞,接下來(lái)我們就要研究一下,想拍三亞婚紗攝影的用戶(hù)到底想看什么?第二個(gè)是什么?,也就是三亞婚紗攝影的圖片,不信可以搜索“三亞婚紗攝影”,百度圖片第一。也就是說(shuō),百度需要的是三亞的婚紗攝影圖片。如果你的 網(wǎng)站 有高質(zhì)量的圖片,百度就會(huì )給你排名。如果這還不夠排名,讓我們看看下一步是什么?想拍婚紗照的都想知道價(jià)格是多少。也就是說(shuō),如果我們 網(wǎng)站 有高質(zhì)量的圖片,價(jià)格也注明了。這樣才能更好的滿(mǎn)足用戶(hù)的需求。還是那句話(huà),想拍婚紗照的人一定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。想拍婚紗照的人,肯定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。想拍婚紗照的人,肯定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。
看完這篇文章,如果您覺(jué)得還不錯,不妨采集或轉發(fā)給需要的朋友和同事。每天跟隨博主帶你了解各種SEO經(jīng)驗,打通你的二脈!
解決方案:小功能有大作為丨亞馬遜評論采集應用
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 98 次瀏覽 ? 2022-12-02 05:06
應用介紹
當一個(gè)全新的產(chǎn)品在沒(méi)有其他買(mǎi)家評論的情況下被放置在頁(yè)面上時(shí),會(huì )引起客戶(hù)一定程度的關(guān)注。大家都不愿意做第一個(gè)吃螃蟹的人,那么這些吸引過(guò)來(lái)的流量可能就白白流失了,這時(shí)候就凸顯了評論的重要性。
通過(guò)亞馬遜評論采集應用,商家可以將亞馬遜產(chǎn)品評論和圖片采集到SHOPYY系統中,讓買(mǎi)家在瀏覽網(wǎng)站時(shí)增加用戶(hù)體驗,提高轉化率。
腳步:
第一步:在后臺應用商店點(diǎn)擊安裝后,在我的應用列表中找到對應的應用,點(diǎn)擊“訪(fǎng)問(wèn)應用”
第二步:首先設置“采集規則”,根據頁(yè)面提示和具體需求進(jìn)行設置
第三步:設置好采集
規則后,點(diǎn)擊“采集
設置”選項卡,在右上角添加項目選擇商品
第四步:在商品采集設置頁(yè)面,點(diǎn)擊下拉框,根據需要選擇亞馬遜對應國家的URL進(jìn)行采集評論。一個(gè)產(chǎn)品可以同時(shí)采集
多個(gè)亞馬遜產(chǎn)品的評論,或者同時(shí)采集
多個(gè)不同國家站點(diǎn)的亞馬遜產(chǎn)品評論
打開(kāi)亞馬遜網(wǎng)站,進(jìn)入商品詳情頁(yè),復制商品鏈接中的amazon_asin,如上圖“Bxxxxxx”
第五步:設置提交后,可以在采集
設置列表中查看新增的商品,點(diǎn)擊右側操作欄“手動(dòng)采集
”,頁(yè)面會(huì )提示采集
結果,并在采集
列表中顯示相應數據,如圖所示:
第六步:采集
成功的評論顯示在“亞馬遜評論”列表中。對于不符合采集
規則的評論,黑名單欄會(huì )顯示紅色“是”,發(fā)布狀態(tài)關(guān)閉。如需開(kāi)啟,可直接手動(dòng)開(kāi)啟
第七步:可以在系統后臺的商品評論列表中查看同步評論
第八步:可以將采集成功的評論通過(guò)條件過(guò)濾導出到表格中,表格中的評論內容可以自定義修改后再導入系統。
直觀(guān):常用的大數據采集工具有哪些
有哪些大數據采集
工具?讓我們帶你了解一下:
常用的大數據采集工具Apache Flume,Fluentd,Logstash,Chukwa,Splunk Forwarder,優(yōu)采云
等。
1. Flume是Apache旗下開(kāi)源、高可靠、高度可擴展、易于管理、客戶(hù)擴展的數據采集系統。
2)Fluentd是另一個(gè)開(kāi)源數據采集
框架。Fluentd 是使用 C/Ruby 開(kāi)發(fā)的,使用 JSON 文件來(lái)統一日志數據。
3.Logstash 是著(zhù)名的開(kāi)源數據堆棧 ELK(ElasticSearch、Logstash、Kibana)中的 L。
4、Logstash 是在 JRuby 中開(kāi)發(fā)的,所有運行時(shí)都依賴(lài)于 JVM。
阿帕奇·楚夸,
Apache擁有的另一個(gè)開(kāi)源數據采集
平臺遠不如其他平臺那么出名,Chukwa建立在Hadoop的HDFS和Map Reduce上(顯然,它是用Java實(shí)現的),提供了可擴展性和可靠性。
6、在商用大數據平臺產(chǎn)品中,Splunk提供完整的數據挖掘、數據存儲、數據分析處理、數據顯示能力。
7. 優(yōu)采云
是一款免費、可視化、免編程的網(wǎng)頁(yè)采集軟件,可以快速提取不同網(wǎng)站的歸一化數據。 查看全部
解決方案:小功能有大作為丨亞馬遜評論采集應用
應用介紹
當一個(gè)全新的產(chǎn)品在沒(méi)有其他買(mǎi)家評論的情況下被放置在頁(yè)面上時(shí),會(huì )引起客戶(hù)一定程度的關(guān)注。大家都不愿意做第一個(gè)吃螃蟹的人,那么這些吸引過(guò)來(lái)的流量可能就白白流失了,這時(shí)候就凸顯了評論的重要性。
通過(guò)亞馬遜評論采集應用,商家可以將亞馬遜產(chǎn)品評論和圖片采集到SHOPYY系統中,讓買(mǎi)家在瀏覽網(wǎng)站時(shí)增加用戶(hù)體驗,提高轉化率。
腳步:
第一步:在后臺應用商店點(diǎn)擊安裝后,在我的應用列表中找到對應的應用,點(diǎn)擊“訪(fǎng)問(wèn)應用”
第二步:首先設置“采集規則”,根據頁(yè)面提示和具體需求進(jìn)行設置

第三步:設置好采集
規則后,點(diǎn)擊“采集
設置”選項卡,在右上角添加項目選擇商品
第四步:在商品采集設置頁(yè)面,點(diǎn)擊下拉框,根據需要選擇亞馬遜對應國家的URL進(jìn)行采集評論。一個(gè)產(chǎn)品可以同時(shí)采集
多個(gè)亞馬遜產(chǎn)品的評論,或者同時(shí)采集
多個(gè)不同國家站點(diǎn)的亞馬遜產(chǎn)品評論
打開(kāi)亞馬遜網(wǎng)站,進(jìn)入商品詳情頁(yè),復制商品鏈接中的amazon_asin,如上圖“Bxxxxxx”
第五步:設置提交后,可以在采集
設置列表中查看新增的商品,點(diǎn)擊右側操作欄“手動(dòng)采集
”,頁(yè)面會(huì )提示采集
結果,并在采集
列表中顯示相應數據,如圖所示:

第六步:采集
成功的評論顯示在“亞馬遜評論”列表中。對于不符合采集
規則的評論,黑名單欄會(huì )顯示紅色“是”,發(fā)布狀態(tài)關(guān)閉。如需開(kāi)啟,可直接手動(dòng)開(kāi)啟
第七步:可以在系統后臺的商品評論列表中查看同步評論
第八步:可以將采集成功的評論通過(guò)條件過(guò)濾導出到表格中,表格中的評論內容可以自定義修改后再導入系統。
直觀(guān):常用的大數據采集工具有哪些
有哪些大數據采集
工具?讓我們帶你了解一下:
常用的大數據采集工具Apache Flume,Fluentd,Logstash,Chukwa,Splunk Forwarder,優(yōu)采云
等。
1. Flume是Apache旗下開(kāi)源、高可靠、高度可擴展、易于管理、客戶(hù)擴展的數據采集系統。

2)Fluentd是另一個(gè)開(kāi)源數據采集
框架。Fluentd 是使用 C/Ruby 開(kāi)發(fā)的,使用 JSON 文件來(lái)統一日志數據。
3.Logstash 是著(zhù)名的開(kāi)源數據堆棧 ELK(ElasticSearch、Logstash、Kibana)中的 L。
4、Logstash 是在 JRuby 中開(kāi)發(fā)的,所有運行時(shí)都依賴(lài)于 JVM。
阿帕奇·楚夸,

Apache擁有的另一個(gè)開(kāi)源數據采集
平臺遠不如其他平臺那么出名,Chukwa建立在Hadoop的HDFS和Map Reduce上(顯然,它是用Java實(shí)現的),提供了可擴展性和可靠性。
6、在商用大數據平臺產(chǎn)品中,Splunk提供完整的數據挖掘、數據存儲、數據分析處理、數據顯示能力。
7. 優(yōu)采云
是一款免費、可視化、免編程的網(wǎng)頁(yè)采集軟件,可以快速提取不同網(wǎng)站的歸一化數據。
解決方案:算法自動(dòng)采集模塊.5+程序編寫(xiě)的方法
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 125 次瀏覽 ? 2022-12-02 04:26
算法自動(dòng)采集列表,采集出來(lái)的數據可以用python編寫(xiě)腳本,或者使用python框架編寫(xiě),采用的python方法主要分兩種:第一種:向后端返回指定的txt格式文本,這種方法非常的簡(jiǎn)單,不用再返回多余的文本,這種方法也可以在windows上或者linux系統下使用,其后端主要分成兩部分,一部分是數據采集模塊,采集txt格式的數據,第二部分就是爬蟲(chóng)程序,可以根據內容定位內容,然后采集想要內容到瀏覽器保存到本地。
第二種:爬蟲(chóng)程序編寫(xiě),這種方法對于爬蟲(chóng)人員來(lái)說(shuō),簡(jiǎn)單好操作,可以讓程序自動(dòng)獲取網(wǎng)頁(yè)中的內容,無(wú)需人工勞動(dòng)。下面分別介紹兩種方法:數據采集模塊:gitclone-framework/pythonitemslib/csstexts.python爬蟲(chóng)程序編寫(xiě):使用python3.5+來(lái)編寫(xiě)這兩種方法都是采用selenium模塊,關(guān)于這個(gè)模塊的安裝,官方有很多示例,其中我最常用的有3種:官方的webdriver的3.5.1,這個(gè)配置其實(shí)也就是在瀏覽器中提交代碼,在安裝目錄找到.selenium-all.py文件,把這部分內容加入其他內容即可。
官方的selenium-python3.5.2,這個(gè)配置需要重啟服務(wù)器以及重啟瀏覽器,解決方法的話(huà)可以使用pip3安裝pip3installselenium-python-3.5.2這兩種方法的不同在于selenium模塊的安裝,然后需要重啟瀏覽器,重啟瀏覽器的話(huà),瀏覽器會(huì )彈出提示,重啟服務(wù)器,如果服務(wù)器放在本地可以用上面那個(gè)方法,如果服務(wù)器不在本地,可以借助于notepad++這類(lèi)編輯器,找到這個(gè)文件,然后使用記事本打開(kāi)編輯即可。 查看全部
解決方案:算法自動(dòng)采集模塊.5+程序編寫(xiě)的方法

算法自動(dòng)采集列表,采集出來(lái)的數據可以用python編寫(xiě)腳本,或者使用python框架編寫(xiě),采用的python方法主要分兩種:第一種:向后端返回指定的txt格式文本,這種方法非常的簡(jiǎn)單,不用再返回多余的文本,這種方法也可以在windows上或者linux系統下使用,其后端主要分成兩部分,一部分是數據采集模塊,采集txt格式的數據,第二部分就是爬蟲(chóng)程序,可以根據內容定位內容,然后采集想要內容到瀏覽器保存到本地。

第二種:爬蟲(chóng)程序編寫(xiě),這種方法對于爬蟲(chóng)人員來(lái)說(shuō),簡(jiǎn)單好操作,可以讓程序自動(dòng)獲取網(wǎng)頁(yè)中的內容,無(wú)需人工勞動(dòng)。下面分別介紹兩種方法:數據采集模塊:gitclone-framework/pythonitemslib/csstexts.python爬蟲(chóng)程序編寫(xiě):使用python3.5+來(lái)編寫(xiě)這兩種方法都是采用selenium模塊,關(guān)于這個(gè)模塊的安裝,官方有很多示例,其中我最常用的有3種:官方的webdriver的3.5.1,這個(gè)配置其實(shí)也就是在瀏覽器中提交代碼,在安裝目錄找到.selenium-all.py文件,把這部分內容加入其他內容即可。
官方的selenium-python3.5.2,這個(gè)配置需要重啟服務(wù)器以及重啟瀏覽器,解決方法的話(huà)可以使用pip3安裝pip3installselenium-python-3.5.2這兩種方法的不同在于selenium模塊的安裝,然后需要重啟瀏覽器,重啟瀏覽器的話(huà),瀏覽器會(huì )彈出提示,重啟服務(wù)器,如果服務(wù)器放在本地可以用上面那個(gè)方法,如果服務(wù)器不在本地,可以借助于notepad++這類(lèi)編輯器,找到這個(gè)文件,然后使用記事本打開(kāi)編輯即可。
解決方案:2 - JVM垃圾回收
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 150 次瀏覽 ? 2022-12-01 13:33
JVM內存分配與回收介紹 判斷對象是否死亡 垃圾回收算法 Garbage collector
主要邏輯流程:
內存是如何分配和回收的?--> 什么垃圾需要回收?--> 什么時(shí)候回收?--> 如何回收?
一、JVM內存分配與回收簡(jiǎn)介
Java的自動(dòng)內存管理主要是對象內存的回收和對象內存的分配。同時(shí),Java自動(dòng)內存管理的核心功能是堆內存中對象的分配和回收。
Java堆是垃圾采集
器管理的主要區域,因此也稱(chēng)為GC堆(Garbage Collected Heap)。從垃圾回收的角度來(lái)看,由于目前的回收器基本采用分代垃圾回收算法,所以Java堆還可以細分為:新生代和老年代:更細化:Eden空間,From Survivor,To Survivor空間等.進(jìn)一步劃分的目的是為了更好的回收內存,或者更快的分配內存。
Java堆空間的基本結構
上圖中的Eden區、From Survivor0(“From”)區、To Survivor1(“To”)區都屬于新生代,Old Memory區屬于老年代。
大多數情況下,對象會(huì )先分配到伊甸區。新生代垃圾回收后,如果對象還活著(zhù),則進(jìn)入s0或s1,對象年齡加1(Eden區->Survivor區)。初始age變成1),當它的age增長(cháng)到一定程度(默認15歲),就會(huì )被提升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
新生代一次垃圾回收后,Hotspot遍歷所有對象時(shí),按照年齡從小到大的順序累加它們占用的大小。當累計年齡超過(guò)幸存者區域的一半時(shí),將這個(gè)年齡和MaxTenuringThreshold中的更新值取一個(gè)小值,作為下一次垃圾回收的提升年齡閾值。
動(dòng)態(tài)年齡計算代碼:
uint ageTable::compute_tenuring_threshold(size_t survivor_capacity) {
//survivor_capacity是survivor空間的大小
size_t desired_survivor_size = (size_t)((((double) survivor_capacity)*TargetSurvivorRatio)/100);
size_t total = 0;
uint age = 1;
while (age < table_size) {
total += sizes[age];//sizes數組是每個(gè)年齡段對象大小
if (total > desired_survivor_size) break;
age++;
}
uint result = age < MaxTenuringThreshold ? age : MaxTenuringThreshold;
...
}
一開(kāi)始,兩個(gè)幸存者區和伊甸園區都是空的。慢慢的eden區就滿(mǎn)了,那就是第一次操作。gc之后,eden區會(huì )被清理,活著(zhù)的對象會(huì )被復制到“From”survivor區。因為是從eden區復制過(guò)來(lái)的,所以使用的是連續空間,沒(méi)有碎片。然后eden繼續添加新的對象,直到eden再次滿(mǎn)為止。此時(shí)eden區和“From”區都有數據,不為空。然后gc之后,eden區有幸存者,“From”區也凈化后,也有幸存者。此時(shí)“To”區域為空,然后將“From”和eden區域的幸存者Copy到“To”區域。復制時(shí),“收件人”中的空格 area也是挨著(zhù)分配的,沒(méi)有碎片。然后,清空eden區和“From”區,這說(shuō)明:“總有一個(gè)幸存者空間是空的,另一個(gè)非空的幸存者空間沒(méi)有碎片。
這時(shí)候“From”和“To”就會(huì )互換角色,即新的“To”就是上次GC之前的“From”,新的“From”就是上次GC之前的“To”。在任何情況下,名為 To 的 Survivor 區域都保證為空。Minor GC會(huì )重復這個(gè)過(guò)程,直到“To”區域被填滿(mǎn),“To”區域被填滿(mǎn)后,所有對象都會(huì )被移動(dòng)到老年代。
1.1 對象先分配在eden區
目前主流的垃圾采集
器都是采用分代采集
算法,所以需要將堆內存劃分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾采集
算法。
大多數情況下,對象都分配在年輕代的eden區。當eden區沒(méi)有足夠的空間分配時(shí),虛擬機會(huì )發(fā)起一次Minor GC。
Minor GC 和 Full GC 有什么區別?
下面測試一下Minor GC的流程:
package jvm.gc;
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2,allocation3,allocation4,allocation5;
allocation1 = new byte[60000*1024];
//allocation2 = new byte[2000*1024];
//allocation3 = new byte[1000*1024];
//allocation4 = new byte[1000*1024];
//allocation5 = new byte[1000*1024];
}
}
打印的內存占用是:
內存使用信息.png
從圖中可以看出,eden區基本分配完畢。如果此時(shí)為allocation2分配空間,運行結果為:
分配保障機制的實(shí)施
出現這種情況的原因:
因為在allocation2分配內存的時(shí)候eden區的內存已經(jīng)分配的差不多了,剛才我們說(shuō)了當Eden區沒(méi)有足夠的空間可以分配的時(shí)候,虛擬機就會(huì )發(fā)起一次Minor GC。在GC的時(shí)候,虛擬機發(fā)現allocation1不能存放到Survivor空間,所以需要通過(guò)分配保證機制將新生代中的對象提前轉移到老年代。old generation中的空間足夠存放allocation1,所以不會(huì )發(fā)生Full GC。Minor GC執行后,如果后面分配的對象可以存在于eden區,內存仍會(huì )分配在eden區。
1.2 大對象直接進(jìn)入老年代
大對象是需要大量連續內存空間的對象(例如字符串、數組)。
為了避免在為大對象分配內存時(shí)由于分配保證機制帶來(lái)的復制而降低效率。
1.3 長(cháng)壽對象會(huì )進(jìn)入老年代
由于虛擬機采用了分代采集
的思想來(lái)管理內存,因此在內存回收時(shí)必須能夠識別出哪些對象應該放在新生代,哪些對象應該放在老年代。為了做到這一點(diǎn),虛擬機給每個(gè)對象一個(gè)對象年齡(Age)計數器。
如果對象出生在Eden,在第一次Minor GC后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并將對象的年齡設置為1。每一次對象存活一次MinorGC在Survivor中,年齡增加1年,當它的年齡增加到一定程度(默認15歲),就會(huì )晉升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
2.判斷對象是否死亡
幾乎所有的對象實(shí)例都放在堆中,在堆上進(jìn)行垃圾回收之前的第一步是確定那些對象已經(jīng)死了(即無(wú)論如何都不能再使用的對象)。
判斷對象是否死亡
2.1 引用計數
向對象添加一個(gè)引用計數器。每當有對它的引用時(shí),計數器就會(huì )加 1;
這種方法實(shí)現簡(jiǎn)單,效率高,但是目前主流的虛擬機并沒(méi)有選擇這種算法來(lái)管理內存。主要原因是很難解決對象之間的循環(huán)引用問(wèn)題。所謂對象之間的相互引用問(wèn)題如下代碼所示:除了對象objA和objB相互引用外,這兩個(gè)對象之間沒(méi)有任何引用。但是因為它們相互引用,它們的引用計數器不為0,所以引用計數算法無(wú)法通知GC采集
器回收它們。
package jvm.gc;
public class ReferenceCountingGc {
private Object instance;
public static void main(String[] args) {
ReferenceCountingGc t1 = new ReferenceCountingGc();
ReferenceCountingGc t2 = new ReferenceCountingGc();
t1.instance = t2;
t2.instance = t1;
t1 = null;
t2 = null;
}
}
2.2 可達性分析算法
這個(gè)算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索。節點(diǎn)經(jīng)過(guò)的路徑稱(chēng)為引用鏈。當一個(gè)對象沒(méi)有任何引用鏈到 GC Roots 連接時(shí),證明該對象不可用。
可達性分析
可以作為 GC Root 的對象包括:
2.3 參考資料
無(wú)論是通過(guò)引用計數的方法判斷對象的引用次數,還是通過(guò)可達性分析的方法判斷對象的引用鏈是否可達,判斷對象的存活與“引用”有關(guān)。
在JDK1.2之前,Java中對引用的定義很傳統:如果數據的引用類(lèi)型中存儲的值代表了另一塊內存的起始地址,就說(shuō)這塊內存代表了一個(gè)引用。
JDK1.2之后,Java擴展了引用的概念,將引用分為四種:強引用、軟引用、弱引用、虛引用(引用強度逐漸減弱)
引用之間的繼承關(guān)系
1.強引用(StrongReference)
以前用的大部分引用其實(shí)都是強引用,也就是最常用的引用。如果一個(gè)對象有強引用,它就類(lèi)似于生活必需品,垃圾采集
器永遠不會(huì )回收它。當內存空間不足時(shí),Java虛擬機寧愿拋出OutOfMemoryError錯誤導致程序異常終止,也不會(huì )通過(guò)任意回收強引用對象來(lái)解決內存不足問(wèn)題。
例子:
package jvm.gc.reference;
<p>
public class StrongReferenceDemo {
/**
* 輸出結果:
* java.lang.Object@135fbaa4
* 能打印出來(lái)說(shuō)明obj2沒(méi)有被回收
*
* @param args
*/
public static void main(String[] args) {
Object obj1 = new Object();//這樣定義就是強引用
Object obj2 = obj1;
obj1 = null;//置空
System.gc();
System.out.println(obj2); //能打印出來(lái)說(shuō)明沒(méi)有被回收
}
}
</p>
2. 軟引用(SoftReference)
如果一個(gè)對象只有軟引用,那么它類(lèi)似于可有可無(wú)的家居用品。如果有足夠的內存空間,垃圾采集
器將不會(huì )回收它。如果內存空間不夠,這些對象的內存就會(huì )被回收。只要垃圾采集
器不采集
它,該對象就可以被程序使用。軟引用可用于實(shí)現對內存敏感的緩存。
軟引用可以與引用隊列(ReferenceQueue)結合使用。如果軟引用引用的對象被垃圾回收,JAVA虛擬機會(huì )將軟引用添加到與其關(guān)聯(lián)的引用隊列中。
軟引用可以加快JVM對垃圾內存的回收,維護系統的安全,防止內存溢出(OutOfMemory)等問(wèn)題。
適用場(chǎng)景
假設一個(gè)應用需要讀取大量的本地圖片:
使用軟引用解決了這個(gè)問(wèn)題。
設計思路:
使用HashMap保存圖片的路徑與對應圖片對象關(guān)聯(lián)的軟引用的映射關(guān)系。當內存不足時(shí),JVM會(huì )自動(dòng)回收這些緩存的圖片對象占用的空間,避免OOM問(wèn)題。
Map imageCache = new HashMap();
3.弱引用(WeakReference)
如果一個(gè)對象只有弱引用,它類(lèi)似于可有可無(wú)的家居用品。弱引用和軟引用的區別在于只有弱引用的對象生命周期更短。在垃圾回收線(xiàn)程掃描其管轄內存區域的過(guò)程中,一旦發(fā)現只有弱引用的對象,無(wú)論當前內存空間是否足夠,都會(huì )回收其內存。然而,由于垃圾采集
器是一個(gè)非常低優(yōu)先級的線(xiàn)程,只有弱引用的對象可能無(wú)法快速找到。
弱引用可以與引用隊列(ReferenceQueue)結合使用。如果弱引用引用的對象被垃圾回收,Java虛擬機會(huì )將弱引用添加到與其關(guān)聯(lián)的引用隊列中。
例子:
package jvm.gc.reference;
import java.lang.ref.WeakReference;
public class WeakReferenceDemo {
/**
* 輸出結果為:
* java.lang.Object@135fbaa4
* java.lang.Object@135fbaa4
* =========================
* null
* null
*
* 這就體現了:
* 在垃圾回收器線(xiàn)程掃描它所管轄的內存區域的過(guò)程中,
* 一旦發(fā)現了只具有弱引用的對象,不管當前內存空間足夠與否,都會(huì )回收它的內存。
* @param args
*/
public static void main(String[] args) {
Object o1 = new Object();
WeakReference weakReference = new WeakReference(o1);
System.out.println(o1);
System.out.println(weakReference.get());
o1 = null;
System.gc();
System.out.println("=========================");
System.out.println(o1);
System.out.println(weakReference.get());
}
}
適用場(chǎng)景
WeakHashmap的應用:
代碼:
package jvm.gc.reference;
import java.util.HashMap;
import java.util.WeakHashMap;
public class WeakHashmapDemo {
public static void main(String[] args) {
myHashmap();
System.out.println("========================");
myWeakHashmap();
}
private static void myWeakHashmap() {
WeakHashMap map = new WeakHashMap();
//HashMap map = new HashMap();
Integer key = new Integer(1);
String value = "HashMap";
map.put(key,value);
System.out.println(map);
key = null;
System.out.println(map);
System.gc();
System.out.println(map+"\t"+map.size());
}
private static void myHashmap() {
//WeakHashMap map = new WeakHashMap();
<p>
HashMap map = new HashMap();
Integer key = new Integer(1);
String value = "HashMap";
map.put(key,value);
System.out.println(map);
key = null;
System.out.println(map);
System.gc();
System.out.println(map+"\t"+map.size());
}
}
</p>
4.幻影參考(PhantomReference)
“Phantom reference”,顧名思義,是沒(méi)有用的。與其他類(lèi)型的引用不同,幻象引用不決定對象的生命周期。如果一個(gè)對象只收錄
虛引用,就好像它沒(méi)有引用一樣,可以隨時(shí)被垃圾回收。
幻影引用主要用于跟蹤被垃圾采集
的對象的活動(dòng)。
幻影引用與軟引用和弱引用的區別之一是幻影引用必須與引用隊列(ReferenceQueue)結合使用。當垃圾回收器要回收一個(gè)對象時(shí),如果發(fā)現它還有一個(gè)虛引用,就會(huì )把這個(gè)虛引用添加到與之關(guān)聯(lián)的引用隊列中,然后再回收該對象的內存。程序可以通過(guò)判斷引用隊列中是否加入了幻引用來(lái)獲知被引用對象是否會(huì )被垃圾回收。如果程序發(fā)現引用隊列中加入了虛引用,則可以在被引用對象的內存被回收之前采取必要的動(dòng)作。
2.4 不可達對象不是“必死”
即使是可達性分析方法中的不可達對象也不是“必死”的。對屬性分析不可達的對象進(jìn)行第一次標記,篩選一次,篩選條件為是否需要對該對象執行finalize方法。當對象沒(méi)有覆蓋finalize方法,或者finalize方法已經(jīng)被虛擬機調用過(guò),虛擬機認為這兩種情況不需要執行。
判斷需要執行的對象會(huì )被放入隊列中進(jìn)行二次標記,除非該對象與引用鏈上的任何對象相關(guān)聯(lián),才會(huì )真正被回收。
2.5 判斷常量是廢棄對象
運行常量池主要是回收廢棄的常量。
常量是否為廢棄常量的判斷標準: 如果常量池中存在字符串“abc”,如果當前沒(méi)有String對象引用該字符串常量,則說(shuō)明常量“abc”為廢棄常量。如果此時(shí)發(fā)生內存回收 必要時(shí),“abc”會(huì )被系統從常量池中清除。
2.6 判斷一個(gè)類(lèi)是無(wú)用類(lèi)
方法區主要是回收無(wú)用的類(lèi)。
判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”,一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
虛擬機可以回收滿(mǎn)足以上三個(gè)條件的無(wú)用類(lèi)。這里說(shuō)的只是“可以”,并不是像對象一樣不使用就會(huì )被回收。
3. 垃圾采集
算法 3.1 Mark-Sweep 算法
該算法分為“標記”和“清除”兩個(gè)階段:首先標記所有不需要回收的對象,標記完成后統一回收所有未標記的對象。它是最基本的采集算法,后續的算法都是通過(guò)改進(jìn)它的缺點(diǎn)得到的。這種垃圾采集
算法產(chǎn)生了兩個(gè)明顯的問(wèn)題:
效率問(wèn)題空間問(wèn)題(標記清除后會(huì )產(chǎn)生大量不連續的碎片)
標記掃描算法
3.2 復制
為了解決效率問(wèn)題,出現了“復制”采集
算法。它可以將內存分成大小相同的兩塊,一次使用其中的一塊。當這塊內存用完后,將存活的對象復制到另一塊內存中,然后一次性清理已用空間。這樣每次內存回收就是回收一半的內存范圍。
復制算法
3.3 標記整理算法
根據老年代的特點(diǎn)提出的一種標記算法。標記過(guò)程還是和“mark-clear”算法一樣,只是后面的步驟不是直接回收可回收對象,而是將所有存活的對象移到一端,然后直接清理。超出字節序邊界的內存。
標記算法
3.4 分代采集
算法
目前虛擬機的垃圾回收采用的是分代回收算法。這個(gè)算法沒(méi)有什么新意,只是根據對象生命周期的不同,把內存分成若干塊。一般java堆分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾回收算法。
比如在新生代中,每次回收都會(huì )有大量對象死亡,所以可以選擇復制算法,只需要付出少量的對象復制成本就可以完成每次垃圾回收。對象在老年代存活的概率比較高,沒(méi)有額外的空間來(lái)保證它的分配,所以我們必須選擇“mark-clear”或者“mark-compact”算法進(jìn)行垃圾回收。
4.垃圾采集
器
如果說(shuō)回收算法是內存回收的方法論,那么垃圾回收器就是內存回收的具體實(shí)現。
當我們比較采集器
時(shí),并不是要挑出最好的。因為到目前為止還沒(méi)有最好的垃圾采集
器,更不用說(shuō)通用的垃圾采集
器了,我們能做的就是根據具體的應用場(chǎng)景選擇適合自己的垃圾采集
器。
除G1外,年輕代都是copy算法,老年代是mark-clean或mark-compact方式。
老年代和新生代垃圾采集
器分類(lèi)
垃圾采集
器的組合
4.1 串行采集
器
串行采集
器
虛擬機的設計者當然知道Stop The World帶來(lái)的糟糕的用戶(hù)體驗,所以在后續的垃圾采集
器設計中不斷縮短停頓時(shí)間(停頓還是有的,尋找最佳垃圾采集
器的過(guò)程還在繼續) .
Serial采集
器對應的參數
4.2 ParNew 采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾采集
外,其余行為(控制參數、采集
算法、回收策略等)與Serial采集
器完全相同。
ParNew采集
器
ParNew采集
器的參數
它是許多以服務(wù)器模式運行的虛擬機的首選。除了Serial采集
器,只有CMS采集
器(真正的并發(fā)采集
器,后面會(huì )介紹)可以配合使用。
添加了并行和并發(fā)概念:
4.3 并行清除采集
器
并行清除采集
器
Parallel Scavenge 采集
器側重于吞吐量(CPU 的有效使用)。CMS 等垃圾采集
器更關(guān)注用戶(hù)線(xiàn)程暫停時(shí)間(改善用戶(hù)體驗)。所謂吞吐量就是CPU中用于運行用戶(hù)代碼的時(shí)間與CPU消耗的總時(shí)間的比值。Parallel Scavenge 采集
器提供了很多參數供用戶(hù)找到最合適的暫停時(shí)間或最大吞吐量。如果對采集
器的運行不太了解,手動(dòng)優(yōu)化有難度,可以選擇將內存管理優(yōu)化交給虛擬機來(lái)完成。好的選擇。
4.4 系列老采集器
Serial采集
器的老年代版本,也是單線(xiàn)程采集
器。它主要有兩個(gè)用途:一是在JDK1.5及更早版本中與Parallel Scavenge采集
器配合使用,二是作為CMS采集
器的備份方案。
4.5 并行舊采集
器
Parallel Scavenge 采集
器的老一代版本。使用多線(xiàn)程和“標記和排序”算法。在吞吐量和 CPU 資源很重要的地方,可以?xún)?yōu)先考慮 Parallel Scavenge 采集
器和 Parallel Old 采集
器。
4.6 CMS 采集
器
氣相色譜儀
CMS 的四個(gè)步驟和優(yōu)缺點(diǎn)
CMS(Concurrent Mark Sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。非常適合用在注重用戶(hù)體驗的應用上。
CMS(Concurrent Mark Sweep)采集
器是HotSpot虛擬機第一個(gè)真正意義上的并發(fā)采集
器。這是垃圾采集
線(xiàn)程和用戶(hù)線(xiàn)程(基本上)同時(shí)工作的第一次。
從名字中的Mark Sweep這兩個(gè)字可以看出,CMS采集
器是通過(guò)“標記-清除”算法實(shí)現的,其運行過(guò)程比以往的垃圾采集
器都要復雜。整個(gè)過(guò)程分為四個(gè)步驟:
主要優(yōu)勢:
- 并發(fā)采集
,低暫停
缺點(diǎn):
- 對CPU資源敏感
- 無(wú)法處理漂浮垃圾
- 它使用的回收算法——“標記和清除”算法會(huì )導致采集
結束時(shí)產(chǎn)生大量空間碎片
4.7 G1 采集
器
G1采集
器
G1采集
器核心理念
G1標志回收流程
G1(Garbage-First)是一個(gè)面向服務(wù)器的垃圾采集
器,主要針對配備多處理器和大容量?jì)却娴臋C器。在大概率滿(mǎn)足GC停頓時(shí)間要求的同時(shí),還具有高吞吐量的性能特點(diǎn)。
G1采集
器的特點(diǎn):
G1采集
器的幾個(gè)步驟:
G1采集
器在后臺維護一個(gè)優(yōu)先級列表,每次根據允許的采集
時(shí)間,優(yōu)先回收價(jià)值最高的Region(這就是它名字Garbage-First的由來(lái))。這種使用Region劃分內存空間和優(yōu)先區域回收的方式保證了G1采集
器在有限的時(shí)間內盡可能多地采集
(通過(guò)將內存打零)
參考:%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6.md
解決方案:搞定JVM垃圾回收就是這么簡(jiǎn)單
回顧以上:
寫(xiě)在這部分前面的常見(jiàn)面試問(wèn)題:
文中提到了問(wèn)題的答案
這篇文章的導火索
當需要排查各種內存溢出問(wèn)題,當垃圾回收被稱(chēng)為系統達到更高并發(fā)的瓶頸時(shí),我們需要對這些“自動(dòng)化”技術(shù)進(jìn)行必要的監控和調整。
Java 程序員必讀的文檔
哈哈皮啦!本人開(kāi)源的一個(gè)Java學(xué)習指導文檔。一本涵蓋大多數Java程序員需要掌握的核心知識的書(shū)正在逐步完善中,期待您的參與。Github 地址:. 看看吧,我想你不會(huì )后悔的,如果可以的話(huà),可以給個(gè)Star鼓勵一下!
1 揭開(kāi)JVM內存分配與回收的神秘面紗
Java的自動(dòng)內存管理主要是對象內存回收和對象內存分配。同時(shí),Java自動(dòng)內存管理的核心功能是堆內存中對象的分配和回收。
JDK1.8之前的堆內存示意圖:
從上圖可以看出,堆內存分為新生代、老年代和永久代。新生代又分為:Eden區+Survior1區+Survior2區。值得注意的是,在JDK 1.8中整個(gè)永久代被移除,取而代之的是一個(gè)叫做Metaspace的區域(永久代使用JVM的堆內存空間,而元空間使用物理內存,直接受物理內存限制機)。
1.1 對象先分配在eden區
目前主流的垃圾采集
器都是采用分代采集
算法,所以需要將堆內存劃分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾采集
算法。
大多數情況下,對象都分配在年輕代的eden區。當eden區沒(méi)有足夠的空間分配時(shí),虛擬機會(huì )發(fā)起一次Minor GC。下面我們來(lái)做一下實(shí)際測試。
在測試之前,我們先來(lái)看看Minor Gc和Full GC的區別?
測試:
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2;
allocation1 = new byte[30900*1024];
//allocation2 = new byte[900*1024];
}
}
復制
運行它:
添加參數:-XX:+PrintGCDetails
運行結果:
從上圖可以看出,eden區的內存幾乎已經(jīng)全部分配完畢(即使程序什么都不做,新生代也會(huì )使用2000k多的內存)。如果我們?yōu)?allocation2 分配內存會(huì )怎樣?
allocation2 = new byte[900*1024];
復制
簡(jiǎn)單解釋一下為什么會(huì )這樣:因為分配內存到allocation2的時(shí)候eden區的內存已經(jīng)分配的差不多了,剛才我們說(shuō)了當Eden區沒(méi)有足夠的空間分配時(shí),虛擬機就會(huì )發(fā)起一次Minor GC。在GC的時(shí)候,虛擬機也發(fā)現allocation1不能存放在Survior空間,所以不得不通過(guò)allocation guarantee機制,提前將新生代中的對象轉移到老年代。old generation中的空間足夠存放allocation1,所以不會(huì )發(fā)生Full GC。Minor GC執行后,如果后面分配的對象在eden區可以存在,內存仍然會(huì )分配在eden區。代碼驗證可以如下進(jìn)行:
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2,allocation3,allocation4,allocation5;
allocation1 = new byte[32000*1024];
allocation2 = new byte[1000*1024];
allocation3 = new byte[1000*1024];
allocation4 = new byte[1000*1024];
allocation5 = new byte[1000*1024];
}
}
復制
1.2 大對象直接進(jìn)入老年代
大對象是需要大量連續內存空間的對象(例如字符串、數組)。
為什么一定要這樣?
為了避免在為大對象分配內存時(shí)由于分配保證機制帶來(lái)的復制而降低效率。
1.3 長(cháng)壽對象會(huì )進(jìn)入老年代
由于虛擬機采用了分代采集
的思想來(lái)管理內存,因此在內存回收時(shí),它必須能夠識別出哪些對象應該放在新生代,哪些對象應該放在老年代。為了做到這一點(diǎn),虛擬機給每個(gè)對象一個(gè)對象年齡(Age)計數器。
如果對象出生在Eden,在第一次Minor GC后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并將對象的年齡設置為1。每一次對象存活一次MinorGC在 Survivor 中,age 增加 1 年,當它的 age 增加到一定程度時(shí)(默認是 15 歲),就會(huì )被提升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
1.4 動(dòng)態(tài)對象年齡判定
為了更好地適應不同程序的內存情況,虛擬機并不總是要求對象年齡必須達到一定的值才能進(jìn)入老年代。如果Survivor空間中所有同齡對象的大小之和大于Survivor空間的一半,則年齡大于等于該年齡的對象可以直接進(jìn)入老年代,無(wú)需達到要求的年齡。
2 對象死了?
幾乎所有的對象實(shí)例都放在堆中,在堆上進(jìn)行垃圾回收之前的第一步是確定那些對象已經(jīng)死了(即無(wú)論如何都不能再使用的對象)。
2.1 引用計數
向對象添加一個(gè)引用計數器。每當有對它的引用時(shí),計數器就會(huì )加 1;
這種方法實(shí)現簡(jiǎn)單,效率高,但是目前主流的虛擬機并沒(méi)有選擇這種算法來(lái)管理內存。主要原因是很難解決對象之間的循環(huán)引用問(wèn)題。所謂對象之間的相互引用問(wèn)題如下代碼所示:除了對象objA和objB相互引用外,這兩個(gè)對象之間沒(méi)有任何引用。但是因為它們相互引用,它們的引用計數器不為0,所以引用計數算法無(wú)法通知GC采集
器回收它們。
public class ReferenceCountingGc {
Object instance = null;
public static void main(String[] args) {
ReferenceCountingGc objA = new ReferenceCountingGc();
ReferenceCountingGc objB = new ReferenceCountingGc();
objA.instance = objB;
objB.instance = objA;
objA = null;
objB = null;
}
}
復制
2.2 可達性分析算法
這個(gè)算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索。節點(diǎn)經(jīng)過(guò)的路徑稱(chēng)為引用鏈。當一個(gè)對象沒(méi)有任何引用鏈到 GC Roots 連接時(shí),證明該對象不可用。
可達性分析算法
2.3 更多參考資料
無(wú)論是通過(guò)引用計數的方法判斷對象的引用次數,還是通過(guò)可達性分析的方法判斷對象的引用鏈是否可達,判斷對象的存活與“引用”有關(guān)。
在JDK1.2之前,Java中對引用的定義很傳統:如果引用類(lèi)型數據中存儲的值代表了另一塊內存的起始地址,就說(shuō)這塊內存代表了一個(gè)引用。
JDK1.2之后,Java擴展了引用的概念,將引用分為四種:強引用、軟引用、弱引用、虛引用(引用強度逐漸減弱)
1. 強引用
我們之前使用的大部分引用其實(shí)都是強引用,也就是最常用的引用。如果一個(gè)對象有強引用,它就類(lèi)似于生活必需品,垃圾采集
器永遠不會(huì )回收它。當內存空間不足時(shí),Java虛擬機寧愿拋出OutOfMemoryError錯誤導致程序異常終止,也不會(huì )通過(guò)任意回收強引用對象來(lái)解決內存不足問(wèn)題。
2. 軟引用(SoftReference)
如果一個(gè)對象只有軟引用,那么它類(lèi)似于可以購買(mǎi)的商品。如果有足夠的內存空間,垃圾采集
器將不會(huì )回收它。如果內存空間不夠,這些對象的內存就會(huì )被回收。只要垃圾采集
器不采集
它,該對象就可以被程序使用。軟引用可用于實(shí)現對內存敏感的緩存。
軟引用可以與引用隊列(ReferenceQueue)結合使用。如果軟引用引用的對象被垃圾回收,JAVA虛擬機會(huì )將軟引用添加到與其關(guān)聯(lián)的引用隊列中。
3.弱引用(WeakReference)
如果一個(gè)對象只有弱引用,那么它類(lèi)似于可以購買(mǎi)的商品。弱引用和軟引用的區別在于只有弱引用的對象生命周期更短。在垃圾回收線(xiàn)程掃描其管轄內存區域的過(guò)程中,一旦發(fā)現只有弱引用的對象,無(wú)論當前內存空間是否足夠,都會(huì )回收其內存。然而,由于垃圾采集
器是一個(gè)非常低優(yōu)先級的線(xiàn)程,只有弱引用的對象可能無(wú)法快速找到。
弱引用可以與引用隊列(ReferenceQueue)結合使用。如果弱引用引用的對象被垃圾回收,Java虛擬機會(huì )將弱引用添加到與其關(guān)聯(lián)的引用隊列中。
4.幻影參考(PhantomReference)
“Phantom reference”,顧名思義,是沒(méi)有用的。與其他類(lèi)型的引用不同,幻象引用不決定對象的生命周期。如果一個(gè)對象只收錄
虛引用,就好像它沒(méi)有引用一樣,可以隨時(shí)被垃圾回收。
幻影引用主要用于跟蹤被垃圾采集
的對象的活動(dòng)。
幻影引用與軟引用和弱引用的區別之一是幻影引用必須與引用隊列(ReferenceQueue)結合使用。當垃圾回收器要回收一個(gè)對象時(shí),如果發(fā)現它還有一個(gè)虛引用,就會(huì )把這個(gè)虛引用添加到與之關(guān)聯(lián)的引用隊列中,然后再回收該對象的內存。程序可以通過(guò)判斷引用隊列中是否加入了幻引用來(lái)獲知被引用對象是否會(huì )被垃圾回收。如果程序發(fā)現引用隊列中加入了虛引用,則可以在被引用對象的內存被回收之前采取必要的動(dòng)作。
特別要注意的是,弱引用和幻引用在編程中很少用到,軟引用經(jīng)常用到。這是因為軟引用可以加快JVM對垃圾內存的回收,維護系統的安全,防止內存溢出。(OutOfMemory) 等問(wèn)題。
2.4 不可達對象不是“必死”
即使是可達性分析方法中的不可達對象也不是“必死”的。對屬性分析不可達的對象進(jìn)行第一次標記,篩選一次,篩選條件為是否需要對該對象執行finalize方法。當對象沒(méi)有覆蓋finalize方法,或者finalize方法已經(jīng)被虛擬機調用過(guò),虛擬機認為這兩種情況不需要執行。
判斷需要執行的對象會(huì )被放入隊列中進(jìn)行二次標記,除非該對象與引用鏈上的任何對象相關(guān)聯(lián),才會(huì )真正被回收。
2.5 如何判斷一個(gè)常量是廢棄常量
運行時(shí)常量池主要回收廢棄的常量。那么,我們如何判斷一個(gè)常量是一個(gè)過(guò)時(shí)常量呢?
如果常量池中存在字符串“abc”,如果當前不存在引用該字符串常量的String對象,則說(shuō)明常量“abc”為廢棄常量。如果此時(shí)發(fā)生內存回收并且有必要,“abc”就會(huì )被系統從常量池中清除掉。
注意:我們也說(shuō)過(guò),JDK1.7及以后版本的JVM把運行時(shí)常量池移出了方法區,在Java堆(Heap)中開(kāi)辟了一塊區域來(lái)存放運行時(shí)常量池。
2.6 如何判斷一個(gè)類(lèi)是無(wú)用類(lèi)
方法區主要是回收無(wú)用類(lèi),那么如何判斷一個(gè)類(lèi)是否為無(wú)用類(lèi)呢?
判斷一個(gè)常量是否為“廢棄的常量”比較簡(jiǎn)單,但是判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”的條件就比較苛刻。一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
虛擬機可以回收滿(mǎn)足以上三個(gè)條件的無(wú)用類(lèi)。這里說(shuō)的只是“可以”,并不是像對象一樣不使用就會(huì )被回收。
3 垃圾回收算法
垃圾采集
算法
3.1 標記-掃描算法
該算法分為“標記”和“清除”兩個(gè)階段:首先標記所有需要回收的對象,標記完成后統一回收所有標記的對象。它是最基本的采集
算法,效率很高,但是會(huì )帶來(lái)兩個(gè)明顯的問(wèn)題:
效率問(wèn)題空間問(wèn)題(標記清除后會(huì )產(chǎn)生大量不連續的碎片)
標記掃描算法
3.2 復制算法
為了解決效率問(wèn)題,出現了“復制”采集
算法。它可以將內存分成大小相同的兩塊,一次使用其中的一塊。當這塊內存用完后,將存活的對象復制到另一塊內存中,然后一次性清理已用空間。這樣每次內存回收就是回收一半的內存范圍。
復制算法
3.3 標記整理算法
根據一種特殊的基于老年代特點(diǎn)的標記算法,標記過(guò)程還是和“標記-清除”算法一樣,只是后面的步驟不是直接回收可回收對象,而是移動(dòng)所有存活的對象到一個(gè)section,然后直接清理掉end boundary之外的Memory。
標記整理算法
3.4 分代采集
算法
目前虛擬機的垃圾回收采用分代回收算法。這個(gè)算法沒(méi)有什么新意,只是根據對象生命周期的不同,把內存分成若干塊。Java堆一般分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾回收算法。
比如在新生代中,每次回收都會(huì )有大量對象死亡,所以可以選擇復制算法,只需要付出少量的對象復制成本就可以完成每次垃圾回收。對象在老年代存活的概率比較高,沒(méi)有額外的空間來(lái)保證它的分配,所以我們必須選擇“標記-清除”或“標記-排序”算法進(jìn)行垃圾回收。
采訪(fǎng)延伸問(wèn)題:HotSpot為什么分新生代和老年代?
根據上面對分代采集
算法的介紹回答。
4 垃圾采集
器
如果說(shuō)回收算法是內存回收的方法論,那么垃圾回收器就是內存回收的具體實(shí)現。
當我們比較采集器
時(shí),我們并不是要挑選一個(gè)最好的采集器
。因為我們知道目前沒(méi)有最好的垃圾采集
器,更談不上萬(wàn)能的垃圾采集
器,我們能做的就是根據具體的應用場(chǎng)景選擇適合自己的垃圾采集
器。試想一下:如果有一個(gè)完美的采集
器適用于四海之內的任何場(chǎng)景,那么我們的HotSpot虛擬機就不會(huì )實(shí)現這么多不同的垃圾采集
器。
4.1 串行采集
器
串行(serial)采集
器 采集
器是最基本也是最古老的垃圾采集
器。大家看名字就知道這個(gè)采集
器是單線(xiàn)程采集
器。它的“單線(xiàn)程”的含義不僅僅意味著(zhù)它只會(huì )使用一個(gè)垃圾采集
線(xiàn)程來(lái)完成垃圾采集
工作,更重要的是它在執行垃圾采集
工作時(shí)必須暫停所有其他工作線(xiàn)程(“Stop The World”)直到采集
完畢。
新生代采用復制算法,老年代采用標記-排序算法。
串行采集
器
虛擬機的設計者當然知道Stop The World帶來(lái)的糟糕的用戶(hù)體驗,所以在后續的垃圾采集
器設計中不斷縮短停頓時(shí)間(停頓還是有的,尋找最佳垃圾采集
器的過(guò)程還在繼續) .
但是串行采集
器與其他垃圾采集
器相比有什么優(yōu)勢嗎?當然有,簡(jiǎn)單高效(相對單線(xiàn)程的其他采集
器)。Serial采集
器由于沒(méi)有線(xiàn)程交互開(kāi)銷(xiāo),自然可以獲得很高的單線(xiàn)程采集
效率。Serial 采集
器是在客戶(hù)端模式下運行的虛擬機的不錯選擇。
4.2 ParNew 采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾采集
外,其余行為(控制參數、采集
算法、回收策略等)與Serial采集
器完全相同。
新生代采用復制算法,老年代采用標記-排序算法。
ParNew采集
器
它是許多以服務(wù)器模式運行的虛擬機的首選。除了Serial采集
器,只有CMS采集
器(真正的并發(fā)采集
器,后面會(huì )介紹)可以配合使用。
添加了并行和并發(fā)概念:
4.3 并行清除采集
器
Parallel Scavenge 采集
器類(lèi)似于 ParNew 采集
器。那么它有什么特別之處呢?
-XX:+UseParallelGC
使用Parallel收集器+ 老年代串行
-XX:+UseParallelOldGC
使用Parallel收集器+ 老年代并行
復制
Parallel Scavenge 采集
器側重于吞吐量(CPU 的有效使用)。CMS等垃圾采集
器的關(guān)注點(diǎn)更多的是用戶(hù)線(xiàn)程的停頓時(shí)間(提升用戶(hù)體驗)。所謂吞吐量就是CPU中運行用戶(hù)代碼所花費的時(shí)間與CPU總消耗時(shí)間的比值。Parallel Scavenge 采集
器提供了許多參數供用戶(hù)找到最合適的暫停時(shí)間或最大吞吐量。如果你不太了解采集
器的運行,如果存在手動(dòng)優(yōu)化,你可以選擇將內存管理優(yōu)化交給虛擬機來(lái)完成。這也是一個(gè)不錯的選擇。
新生代采用復制算法,老年代采用標記-排序算法。
ParNew采集
器
4.4.系列老采集器
Serial采集
器的老年代版本,也是單線(xiàn)程采集
器。它主要有兩個(gè)用途:一是與JDK1.5及更早版本的Parallel Scavenge采集
器一起使用,二是作為CMS采集
器的備份解決方案。
4.5 并行舊采集
器
Parallel Scavenge 采集
器的老一代版本。使用多線(xiàn)程和“標記和排序”算法。在注重吞吐量和CPU資源的情況下,可以?xún)?yōu)先考慮Parallel Scavenge采集
器和Parallel Old采集
器。
4.6 CMS 采集
器
CMS(Concurrent Mark Sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。非常適合用在注重用戶(hù)體驗的應用上。
CMS(Concurrent Mark Sweep)采集
器是HotSpot虛擬機第一個(gè)真正意義上的并發(fā)采集
器。這是垃圾采集
線(xiàn)程和用戶(hù)線(xiàn)程(基本上)同時(shí)工作的第一次。
從名字中的Mark Sweep這兩個(gè)字可以看出,CMS采集
器是通過(guò)“標記-清除”算法實(shí)現的,其運行過(guò)程比以往的垃圾采集
器都要復雜。整個(gè)過(guò)程分為四個(gè)步驟:
CMS 垃圾采集
器
從它的名字就可以看出它是一個(gè)優(yōu)秀的垃圾采集
器,主要優(yōu)點(diǎn):并發(fā)采集
,低暫停。但它有以下三個(gè)明顯的缺點(diǎn):
4.7 G1 采集
器
G1(Garbage-First)是一個(gè)面向服務(wù)器的垃圾采集
器,主要針對配備多處理器和大容量?jì)却娴臋C器。大概率滿(mǎn)足GC停頓時(shí)間要求,同時(shí)具有高吞吐量的性能特點(diǎn)。
在JDK1.7中被視為HotSpot虛擬機的一個(gè)重要的進(jìn)化特征。它具有以下特點(diǎn):
G1采集
器的運行大致分為以下幾個(gè)步驟:
G1采集
器在后臺維護一個(gè)優(yōu)先級列表,每次根據允許的采集
時(shí)間選擇回收值最高的Region(這就是它名字Garbage-First的由來(lái))。這種使用Region劃分內存空間和優(yōu)先區域回收的方法保證了GF采集
器在有限的時(shí)間內(通過(guò)將內存打零)采集
盡可能多的內存。
參考: 查看全部
解決方案:2 - JVM垃圾回收
JVM內存分配與回收介紹 判斷對象是否死亡 垃圾回收算法 Garbage collector
主要邏輯流程:
內存是如何分配和回收的?--> 什么垃圾需要回收?--> 什么時(shí)候回收?--> 如何回收?
一、JVM內存分配與回收簡(jiǎn)介
Java的自動(dòng)內存管理主要是對象內存的回收和對象內存的分配。同時(shí),Java自動(dòng)內存管理的核心功能是堆內存中對象的分配和回收。
Java堆是垃圾采集
器管理的主要區域,因此也稱(chēng)為GC堆(Garbage Collected Heap)。從垃圾回收的角度來(lái)看,由于目前的回收器基本采用分代垃圾回收算法,所以Java堆還可以細分為:新生代和老年代:更細化:Eden空間,From Survivor,To Survivor空間等.進(jìn)一步劃分的目的是為了更好的回收內存,或者更快的分配內存。
Java堆空間的基本結構
上圖中的Eden區、From Survivor0(“From”)區、To Survivor1(“To”)區都屬于新生代,Old Memory區屬于老年代。
大多數情況下,對象會(huì )先分配到伊甸區。新生代垃圾回收后,如果對象還活著(zhù),則進(jìn)入s0或s1,對象年齡加1(Eden區->Survivor區)。初始age變成1),當它的age增長(cháng)到一定程度(默認15歲),就會(huì )被提升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
新生代一次垃圾回收后,Hotspot遍歷所有對象時(shí),按照年齡從小到大的順序累加它們占用的大小。當累計年齡超過(guò)幸存者區域的一半時(shí),將這個(gè)年齡和MaxTenuringThreshold中的更新值取一個(gè)小值,作為下一次垃圾回收的提升年齡閾值。
動(dòng)態(tài)年齡計算代碼:
uint ageTable::compute_tenuring_threshold(size_t survivor_capacity) {
//survivor_capacity是survivor空間的大小
size_t desired_survivor_size = (size_t)((((double) survivor_capacity)*TargetSurvivorRatio)/100);
size_t total = 0;
uint age = 1;
while (age < table_size) {
total += sizes[age];//sizes數組是每個(gè)年齡段對象大小
if (total > desired_survivor_size) break;
age++;
}
uint result = age < MaxTenuringThreshold ? age : MaxTenuringThreshold;
...
}
一開(kāi)始,兩個(gè)幸存者區和伊甸園區都是空的。慢慢的eden區就滿(mǎn)了,那就是第一次操作。gc之后,eden區會(huì )被清理,活著(zhù)的對象會(huì )被復制到“From”survivor區。因為是從eden區復制過(guò)來(lái)的,所以使用的是連續空間,沒(méi)有碎片。然后eden繼續添加新的對象,直到eden再次滿(mǎn)為止。此時(shí)eden區和“From”區都有數據,不為空。然后gc之后,eden區有幸存者,“From”區也凈化后,也有幸存者。此時(shí)“To”區域為空,然后將“From”和eden區域的幸存者Copy到“To”區域。復制時(shí),“收件人”中的空格 area也是挨著(zhù)分配的,沒(méi)有碎片。然后,清空eden區和“From”區,這說(shuō)明:“總有一個(gè)幸存者空間是空的,另一個(gè)非空的幸存者空間沒(méi)有碎片。
這時(shí)候“From”和“To”就會(huì )互換角色,即新的“To”就是上次GC之前的“From”,新的“From”就是上次GC之前的“To”。在任何情況下,名為 To 的 Survivor 區域都保證為空。Minor GC會(huì )重復這個(gè)過(guò)程,直到“To”區域被填滿(mǎn),“To”區域被填滿(mǎn)后,所有對象都會(huì )被移動(dòng)到老年代。
1.1 對象先分配在eden區
目前主流的垃圾采集
器都是采用分代采集
算法,所以需要將堆內存劃分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾采集
算法。
大多數情況下,對象都分配在年輕代的eden區。當eden區沒(méi)有足夠的空間分配時(shí),虛擬機會(huì )發(fā)起一次Minor GC。
Minor GC 和 Full GC 有什么區別?
下面測試一下Minor GC的流程:
package jvm.gc;
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2,allocation3,allocation4,allocation5;
allocation1 = new byte[60000*1024];
//allocation2 = new byte[2000*1024];
//allocation3 = new byte[1000*1024];
//allocation4 = new byte[1000*1024];
//allocation5 = new byte[1000*1024];
}
}
打印的內存占用是:
內存使用信息.png
從圖中可以看出,eden區基本分配完畢。如果此時(shí)為allocation2分配空間,運行結果為:
分配保障機制的實(shí)施
出現這種情況的原因:
因為在allocation2分配內存的時(shí)候eden區的內存已經(jīng)分配的差不多了,剛才我們說(shuō)了當Eden區沒(méi)有足夠的空間可以分配的時(shí)候,虛擬機就會(huì )發(fā)起一次Minor GC。在GC的時(shí)候,虛擬機發(fā)現allocation1不能存放到Survivor空間,所以需要通過(guò)分配保證機制將新生代中的對象提前轉移到老年代。old generation中的空間足夠存放allocation1,所以不會(huì )發(fā)生Full GC。Minor GC執行后,如果后面分配的對象可以存在于eden區,內存仍會(huì )分配在eden區。
1.2 大對象直接進(jìn)入老年代
大對象是需要大量連續內存空間的對象(例如字符串、數組)。
為了避免在為大對象分配內存時(shí)由于分配保證機制帶來(lái)的復制而降低效率。
1.3 長(cháng)壽對象會(huì )進(jìn)入老年代
由于虛擬機采用了分代采集
的思想來(lái)管理內存,因此在內存回收時(shí)必須能夠識別出哪些對象應該放在新生代,哪些對象應該放在老年代。為了做到這一點(diǎn),虛擬機給每個(gè)對象一個(gè)對象年齡(Age)計數器。
如果對象出生在Eden,在第一次Minor GC后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并將對象的年齡設置為1。每一次對象存活一次MinorGC在Survivor中,年齡增加1年,當它的年齡增加到一定程度(默認15歲),就會(huì )晉升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
2.判斷對象是否死亡
幾乎所有的對象實(shí)例都放在堆中,在堆上進(jìn)行垃圾回收之前的第一步是確定那些對象已經(jīng)死了(即無(wú)論如何都不能再使用的對象)。
判斷對象是否死亡
2.1 引用計數
向對象添加一個(gè)引用計數器。每當有對它的引用時(shí),計數器就會(huì )加 1;
這種方法實(shí)現簡(jiǎn)單,效率高,但是目前主流的虛擬機并沒(méi)有選擇這種算法來(lái)管理內存。主要原因是很難解決對象之間的循環(huán)引用問(wèn)題。所謂對象之間的相互引用問(wèn)題如下代碼所示:除了對象objA和objB相互引用外,這兩個(gè)對象之間沒(méi)有任何引用。但是因為它們相互引用,它們的引用計數器不為0,所以引用計數算法無(wú)法通知GC采集
器回收它們。
package jvm.gc;
public class ReferenceCountingGc {
private Object instance;
public static void main(String[] args) {
ReferenceCountingGc t1 = new ReferenceCountingGc();
ReferenceCountingGc t2 = new ReferenceCountingGc();
t1.instance = t2;
t2.instance = t1;
t1 = null;
t2 = null;
}
}
2.2 可達性分析算法
這個(gè)算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索。節點(diǎn)經(jīng)過(guò)的路徑稱(chēng)為引用鏈。當一個(gè)對象沒(méi)有任何引用鏈到 GC Roots 連接時(shí),證明該對象不可用。
可達性分析
可以作為 GC Root 的對象包括:
2.3 參考資料
無(wú)論是通過(guò)引用計數的方法判斷對象的引用次數,還是通過(guò)可達性分析的方法判斷對象的引用鏈是否可達,判斷對象的存活與“引用”有關(guān)。
在JDK1.2之前,Java中對引用的定義很傳統:如果數據的引用類(lèi)型中存儲的值代表了另一塊內存的起始地址,就說(shuō)這塊內存代表了一個(gè)引用。
JDK1.2之后,Java擴展了引用的概念,將引用分為四種:強引用、軟引用、弱引用、虛引用(引用強度逐漸減弱)
引用之間的繼承關(guān)系
1.強引用(StrongReference)
以前用的大部分引用其實(shí)都是強引用,也就是最常用的引用。如果一個(gè)對象有強引用,它就類(lèi)似于生活必需品,垃圾采集
器永遠不會(huì )回收它。當內存空間不足時(shí),Java虛擬機寧愿拋出OutOfMemoryError錯誤導致程序異常終止,也不會(huì )通過(guò)任意回收強引用對象來(lái)解決內存不足問(wèn)題。
例子:
package jvm.gc.reference;
<p>

public class StrongReferenceDemo {
/**
* 輸出結果:
* java.lang.Object@135fbaa4
* 能打印出來(lái)說(shuō)明obj2沒(méi)有被回收
*
* @param args
*/
public static void main(String[] args) {
Object obj1 = new Object();//這樣定義就是強引用
Object obj2 = obj1;
obj1 = null;//置空
System.gc();
System.out.println(obj2); //能打印出來(lái)說(shuō)明沒(méi)有被回收
}
}
</p>
2. 軟引用(SoftReference)
如果一個(gè)對象只有軟引用,那么它類(lèi)似于可有可無(wú)的家居用品。如果有足夠的內存空間,垃圾采集
器將不會(huì )回收它。如果內存空間不夠,這些對象的內存就會(huì )被回收。只要垃圾采集
器不采集
它,該對象就可以被程序使用。軟引用可用于實(shí)現對內存敏感的緩存。
軟引用可以與引用隊列(ReferenceQueue)結合使用。如果軟引用引用的對象被垃圾回收,JAVA虛擬機會(huì )將軟引用添加到與其關(guān)聯(lián)的引用隊列中。
軟引用可以加快JVM對垃圾內存的回收,維護系統的安全,防止內存溢出(OutOfMemory)等問(wèn)題。
適用場(chǎng)景
假設一個(gè)應用需要讀取大量的本地圖片:
使用軟引用解決了這個(gè)問(wèn)題。
設計思路:
使用HashMap保存圖片的路徑與對應圖片對象關(guān)聯(lián)的軟引用的映射關(guān)系。當內存不足時(shí),JVM會(huì )自動(dòng)回收這些緩存的圖片對象占用的空間,避免OOM問(wèn)題。
Map imageCache = new HashMap();
3.弱引用(WeakReference)
如果一個(gè)對象只有弱引用,它類(lèi)似于可有可無(wú)的家居用品。弱引用和軟引用的區別在于只有弱引用的對象生命周期更短。在垃圾回收線(xiàn)程掃描其管轄內存區域的過(guò)程中,一旦發(fā)現只有弱引用的對象,無(wú)論當前內存空間是否足夠,都會(huì )回收其內存。然而,由于垃圾采集
器是一個(gè)非常低優(yōu)先級的線(xiàn)程,只有弱引用的對象可能無(wú)法快速找到。
弱引用可以與引用隊列(ReferenceQueue)結合使用。如果弱引用引用的對象被垃圾回收,Java虛擬機會(huì )將弱引用添加到與其關(guān)聯(lián)的引用隊列中。
例子:
package jvm.gc.reference;
import java.lang.ref.WeakReference;
public class WeakReferenceDemo {
/**
* 輸出結果為:
* java.lang.Object@135fbaa4
* java.lang.Object@135fbaa4
* =========================
* null
* null
*
* 這就體現了:
* 在垃圾回收器線(xiàn)程掃描它所管轄的內存區域的過(guò)程中,
* 一旦發(fā)現了只具有弱引用的對象,不管當前內存空間足夠與否,都會(huì )回收它的內存。
* @param args
*/
public static void main(String[] args) {
Object o1 = new Object();
WeakReference weakReference = new WeakReference(o1);
System.out.println(o1);
System.out.println(weakReference.get());
o1 = null;
System.gc();
System.out.println("=========================");
System.out.println(o1);
System.out.println(weakReference.get());
}
}
適用場(chǎng)景
WeakHashmap的應用:
代碼:
package jvm.gc.reference;
import java.util.HashMap;
import java.util.WeakHashMap;
public class WeakHashmapDemo {
public static void main(String[] args) {
myHashmap();
System.out.println("========================");
myWeakHashmap();
}
private static void myWeakHashmap() {
WeakHashMap map = new WeakHashMap();
//HashMap map = new HashMap();
Integer key = new Integer(1);
String value = "HashMap";
map.put(key,value);
System.out.println(map);
key = null;
System.out.println(map);
System.gc();
System.out.println(map+"\t"+map.size());
}
private static void myHashmap() {
//WeakHashMap map = new WeakHashMap();
<p>

HashMap map = new HashMap();
Integer key = new Integer(1);
String value = "HashMap";
map.put(key,value);
System.out.println(map);
key = null;
System.out.println(map);
System.gc();
System.out.println(map+"\t"+map.size());
}
}
</p>
4.幻影參考(PhantomReference)
“Phantom reference”,顧名思義,是沒(méi)有用的。與其他類(lèi)型的引用不同,幻象引用不決定對象的生命周期。如果一個(gè)對象只收錄
虛引用,就好像它沒(méi)有引用一樣,可以隨時(shí)被垃圾回收。
幻影引用主要用于跟蹤被垃圾采集
的對象的活動(dòng)。
幻影引用與軟引用和弱引用的區別之一是幻影引用必須與引用隊列(ReferenceQueue)結合使用。當垃圾回收器要回收一個(gè)對象時(shí),如果發(fā)現它還有一個(gè)虛引用,就會(huì )把這個(gè)虛引用添加到與之關(guān)聯(lián)的引用隊列中,然后再回收該對象的內存。程序可以通過(guò)判斷引用隊列中是否加入了幻引用來(lái)獲知被引用對象是否會(huì )被垃圾回收。如果程序發(fā)現引用隊列中加入了虛引用,則可以在被引用對象的內存被回收之前采取必要的動(dòng)作。
2.4 不可達對象不是“必死”
即使是可達性分析方法中的不可達對象也不是“必死”的。對屬性分析不可達的對象進(jìn)行第一次標記,篩選一次,篩選條件為是否需要對該對象執行finalize方法。當對象沒(méi)有覆蓋finalize方法,或者finalize方法已經(jīng)被虛擬機調用過(guò),虛擬機認為這兩種情況不需要執行。
判斷需要執行的對象會(huì )被放入隊列中進(jìn)行二次標記,除非該對象與引用鏈上的任何對象相關(guān)聯(lián),才會(huì )真正被回收。
2.5 判斷常量是廢棄對象
運行常量池主要是回收廢棄的常量。
常量是否為廢棄常量的判斷標準: 如果常量池中存在字符串“abc”,如果當前沒(méi)有String對象引用該字符串常量,則說(shuō)明常量“abc”為廢棄常量。如果此時(shí)發(fā)生內存回收 必要時(shí),“abc”會(huì )被系統從常量池中清除。
2.6 判斷一個(gè)類(lèi)是無(wú)用類(lèi)
方法區主要是回收無(wú)用的類(lèi)。
判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”,一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
虛擬機可以回收滿(mǎn)足以上三個(gè)條件的無(wú)用類(lèi)。這里說(shuō)的只是“可以”,并不是像對象一樣不使用就會(huì )被回收。
3. 垃圾采集
算法 3.1 Mark-Sweep 算法
該算法分為“標記”和“清除”兩個(gè)階段:首先標記所有不需要回收的對象,標記完成后統一回收所有未標記的對象。它是最基本的采集算法,后續的算法都是通過(guò)改進(jìn)它的缺點(diǎn)得到的。這種垃圾采集
算法產(chǎn)生了兩個(gè)明顯的問(wèn)題:
效率問(wèn)題空間問(wèn)題(標記清除后會(huì )產(chǎn)生大量不連續的碎片)
標記掃描算法
3.2 復制
為了解決效率問(wèn)題,出現了“復制”采集
算法。它可以將內存分成大小相同的兩塊,一次使用其中的一塊。當這塊內存用完后,將存活的對象復制到另一塊內存中,然后一次性清理已用空間。這樣每次內存回收就是回收一半的內存范圍。
復制算法
3.3 標記整理算法
根據老年代的特點(diǎn)提出的一種標記算法。標記過(guò)程還是和“mark-clear”算法一樣,只是后面的步驟不是直接回收可回收對象,而是將所有存活的對象移到一端,然后直接清理。超出字節序邊界的內存。
標記算法
3.4 分代采集
算法
目前虛擬機的垃圾回收采用的是分代回收算法。這個(gè)算法沒(méi)有什么新意,只是根據對象生命周期的不同,把內存分成若干塊。一般java堆分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾回收算法。
比如在新生代中,每次回收都會(huì )有大量對象死亡,所以可以選擇復制算法,只需要付出少量的對象復制成本就可以完成每次垃圾回收。對象在老年代存活的概率比較高,沒(méi)有額外的空間來(lái)保證它的分配,所以我們必須選擇“mark-clear”或者“mark-compact”算法進(jìn)行垃圾回收。
4.垃圾采集
器
如果說(shuō)回收算法是內存回收的方法論,那么垃圾回收器就是內存回收的具體實(shí)現。
當我們比較采集器
時(shí),并不是要挑出最好的。因為到目前為止還沒(méi)有最好的垃圾采集
器,更不用說(shuō)通用的垃圾采集
器了,我們能做的就是根據具體的應用場(chǎng)景選擇適合自己的垃圾采集
器。
除G1外,年輕代都是copy算法,老年代是mark-clean或mark-compact方式。
老年代和新生代垃圾采集
器分類(lèi)
垃圾采集
器的組合
4.1 串行采集
器
串行采集
器
虛擬機的設計者當然知道Stop The World帶來(lái)的糟糕的用戶(hù)體驗,所以在后續的垃圾采集
器設計中不斷縮短停頓時(shí)間(停頓還是有的,尋找最佳垃圾采集
器的過(guò)程還在繼續) .
Serial采集
器對應的參數
4.2 ParNew 采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾采集
外,其余行為(控制參數、采集
算法、回收策略等)與Serial采集
器完全相同。
ParNew采集
器
ParNew采集
器的參數
它是許多以服務(wù)器模式運行的虛擬機的首選。除了Serial采集
器,只有CMS采集
器(真正的并發(fā)采集
器,后面會(huì )介紹)可以配合使用。
添加了并行和并發(fā)概念:
4.3 并行清除采集
器
并行清除采集
器
Parallel Scavenge 采集
器側重于吞吐量(CPU 的有效使用)。CMS 等垃圾采集
器更關(guān)注用戶(hù)線(xiàn)程暫停時(shí)間(改善用戶(hù)體驗)。所謂吞吐量就是CPU中用于運行用戶(hù)代碼的時(shí)間與CPU消耗的總時(shí)間的比值。Parallel Scavenge 采集
器提供了很多參數供用戶(hù)找到最合適的暫停時(shí)間或最大吞吐量。如果對采集
器的運行不太了解,手動(dòng)優(yōu)化有難度,可以選擇將內存管理優(yōu)化交給虛擬機來(lái)完成。好的選擇。
4.4 系列老采集器
Serial采集
器的老年代版本,也是單線(xiàn)程采集
器。它主要有兩個(gè)用途:一是在JDK1.5及更早版本中與Parallel Scavenge采集
器配合使用,二是作為CMS采集
器的備份方案。
4.5 并行舊采集
器
Parallel Scavenge 采集
器的老一代版本。使用多線(xiàn)程和“標記和排序”算法。在吞吐量和 CPU 資源很重要的地方,可以?xún)?yōu)先考慮 Parallel Scavenge 采集
器和 Parallel Old 采集
器。
4.6 CMS 采集
器
氣相色譜儀
CMS 的四個(gè)步驟和優(yōu)缺點(diǎn)
CMS(Concurrent Mark Sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。非常適合用在注重用戶(hù)體驗的應用上。
CMS(Concurrent Mark Sweep)采集
器是HotSpot虛擬機第一個(gè)真正意義上的并發(fā)采集
器。這是垃圾采集
線(xiàn)程和用戶(hù)線(xiàn)程(基本上)同時(shí)工作的第一次。
從名字中的Mark Sweep這兩個(gè)字可以看出,CMS采集
器是通過(guò)“標記-清除”算法實(shí)現的,其運行過(guò)程比以往的垃圾采集
器都要復雜。整個(gè)過(guò)程分為四個(gè)步驟:
主要優(yōu)勢:
- 并發(fā)采集
,低暫停
缺點(diǎn):
- 對CPU資源敏感
- 無(wú)法處理漂浮垃圾
- 它使用的回收算法——“標記和清除”算法會(huì )導致采集
結束時(shí)產(chǎn)生大量空間碎片
4.7 G1 采集
器
G1采集
器
G1采集
器核心理念
G1標志回收流程
G1(Garbage-First)是一個(gè)面向服務(wù)器的垃圾采集
器,主要針對配備多處理器和大容量?jì)却娴臋C器。在大概率滿(mǎn)足GC停頓時(shí)間要求的同時(shí),還具有高吞吐量的性能特點(diǎn)。
G1采集
器的特點(diǎn):
G1采集
器的幾個(gè)步驟:
G1采集
器在后臺維護一個(gè)優(yōu)先級列表,每次根據允許的采集
時(shí)間,優(yōu)先回收價(jià)值最高的Region(這就是它名字Garbage-First的由來(lái))。這種使用Region劃分內存空間和優(yōu)先區域回收的方式保證了G1采集
器在有限的時(shí)間內盡可能多地采集
(通過(guò)將內存打零)
參考:%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6.md
解決方案:搞定JVM垃圾回收就是這么簡(jiǎn)單
回顧以上:
寫(xiě)在這部分前面的常見(jiàn)面試問(wèn)題:
文中提到了問(wèn)題的答案
這篇文章的導火索
當需要排查各種內存溢出問(wèn)題,當垃圾回收被稱(chēng)為系統達到更高并發(fā)的瓶頸時(shí),我們需要對這些“自動(dòng)化”技術(shù)進(jìn)行必要的監控和調整。
Java 程序員必讀的文檔
哈哈皮啦!本人開(kāi)源的一個(gè)Java學(xué)習指導文檔。一本涵蓋大多數Java程序員需要掌握的核心知識的書(shū)正在逐步完善中,期待您的參與。Github 地址:. 看看吧,我想你不會(huì )后悔的,如果可以的話(huà),可以給個(gè)Star鼓勵一下!
1 揭開(kāi)JVM內存分配與回收的神秘面紗
Java的自動(dòng)內存管理主要是對象內存回收和對象內存分配。同時(shí),Java自動(dòng)內存管理的核心功能是堆內存中對象的分配和回收。
JDK1.8之前的堆內存示意圖:
從上圖可以看出,堆內存分為新生代、老年代和永久代。新生代又分為:Eden區+Survior1區+Survior2區。值得注意的是,在JDK 1.8中整個(gè)永久代被移除,取而代之的是一個(gè)叫做Metaspace的區域(永久代使用JVM的堆內存空間,而元空間使用物理內存,直接受物理內存限制機)。
1.1 對象先分配在eden區
目前主流的垃圾采集
器都是采用分代采集
算法,所以需要將堆內存劃分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾采集
算法。
大多數情況下,對象都分配在年輕代的eden區。當eden區沒(méi)有足夠的空間分配時(shí),虛擬機會(huì )發(fā)起一次Minor GC。下面我們來(lái)做一下實(shí)際測試。
在測試之前,我們先來(lái)看看Minor Gc和Full GC的區別?
測試:
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2;
allocation1 = new byte[30900*1024];
//allocation2 = new byte[900*1024];
}
}
復制
運行它:
添加參數:-XX:+PrintGCDetails
運行結果:
從上圖可以看出,eden區的內存幾乎已經(jīng)全部分配完畢(即使程序什么都不做,新生代也會(huì )使用2000k多的內存)。如果我們?yōu)?allocation2 分配內存會(huì )怎樣?
allocation2 = new byte[900*1024];
復制
簡(jiǎn)單解釋一下為什么會(huì )這樣:因為分配內存到allocation2的時(shí)候eden區的內存已經(jīng)分配的差不多了,剛才我們說(shuō)了當Eden區沒(méi)有足夠的空間分配時(shí),虛擬機就會(huì )發(fā)起一次Minor GC。在GC的時(shí)候,虛擬機也發(fā)現allocation1不能存放在Survior空間,所以不得不通過(guò)allocation guarantee機制,提前將新生代中的對象轉移到老年代。old generation中的空間足夠存放allocation1,所以不會(huì )發(fā)生Full GC。Minor GC執行后,如果后面分配的對象在eden區可以存在,內存仍然會(huì )分配在eden區。代碼驗證可以如下進(jìn)行:
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2,allocation3,allocation4,allocation5;
allocation1 = new byte[32000*1024];
allocation2 = new byte[1000*1024];
allocation3 = new byte[1000*1024];
allocation4 = new byte[1000*1024];
allocation5 = new byte[1000*1024];
}
}
復制
1.2 大對象直接進(jìn)入老年代
大對象是需要大量連續內存空間的對象(例如字符串、數組)。
為什么一定要這樣?
為了避免在為大對象分配內存時(shí)由于分配保證機制帶來(lái)的復制而降低效率。
1.3 長(cháng)壽對象會(huì )進(jìn)入老年代
由于虛擬機采用了分代采集
的思想來(lái)管理內存,因此在內存回收時(shí),它必須能夠識別出哪些對象應該放在新生代,哪些對象應該放在老年代。為了做到這一點(diǎn),虛擬機給每個(gè)對象一個(gè)對象年齡(Age)計數器。
如果對象出生在Eden,在第一次Minor GC后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并將對象的年齡設置為1。每一次對象存活一次MinorGC在 Survivor 中,age 增加 1 年,當它的 age 增加到一定程度時(shí)(默認是 15 歲),就會(huì )被提升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
1.4 動(dòng)態(tài)對象年齡判定
為了更好地適應不同程序的內存情況,虛擬機并不總是要求對象年齡必須達到一定的值才能進(jìn)入老年代。如果Survivor空間中所有同齡對象的大小之和大于Survivor空間的一半,則年齡大于等于該年齡的對象可以直接進(jìn)入老年代,無(wú)需達到要求的年齡。
2 對象死了?

幾乎所有的對象實(shí)例都放在堆中,在堆上進(jìn)行垃圾回收之前的第一步是確定那些對象已經(jīng)死了(即無(wú)論如何都不能再使用的對象)。
2.1 引用計數
向對象添加一個(gè)引用計數器。每當有對它的引用時(shí),計數器就會(huì )加 1;
這種方法實(shí)現簡(jiǎn)單,效率高,但是目前主流的虛擬機并沒(méi)有選擇這種算法來(lái)管理內存。主要原因是很難解決對象之間的循環(huán)引用問(wèn)題。所謂對象之間的相互引用問(wèn)題如下代碼所示:除了對象objA和objB相互引用外,這兩個(gè)對象之間沒(méi)有任何引用。但是因為它們相互引用,它們的引用計數器不為0,所以引用計數算法無(wú)法通知GC采集
器回收它們。
public class ReferenceCountingGc {
Object instance = null;
public static void main(String[] args) {
ReferenceCountingGc objA = new ReferenceCountingGc();
ReferenceCountingGc objB = new ReferenceCountingGc();
objA.instance = objB;
objB.instance = objA;
objA = null;
objB = null;
}
}
復制
2.2 可達性分析算法
這個(gè)算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索。節點(diǎn)經(jīng)過(guò)的路徑稱(chēng)為引用鏈。當一個(gè)對象沒(méi)有任何引用鏈到 GC Roots 連接時(shí),證明該對象不可用。
可達性分析算法
2.3 更多參考資料
無(wú)論是通過(guò)引用計數的方法判斷對象的引用次數,還是通過(guò)可達性分析的方法判斷對象的引用鏈是否可達,判斷對象的存活與“引用”有關(guān)。
在JDK1.2之前,Java中對引用的定義很傳統:如果引用類(lèi)型數據中存儲的值代表了另一塊內存的起始地址,就說(shuō)這塊內存代表了一個(gè)引用。
JDK1.2之后,Java擴展了引用的概念,將引用分為四種:強引用、軟引用、弱引用、虛引用(引用強度逐漸減弱)
1. 強引用
我們之前使用的大部分引用其實(shí)都是強引用,也就是最常用的引用。如果一個(gè)對象有強引用,它就類(lèi)似于生活必需品,垃圾采集
器永遠不會(huì )回收它。當內存空間不足時(shí),Java虛擬機寧愿拋出OutOfMemoryError錯誤導致程序異常終止,也不會(huì )通過(guò)任意回收強引用對象來(lái)解決內存不足問(wèn)題。
2. 軟引用(SoftReference)
如果一個(gè)對象只有軟引用,那么它類(lèi)似于可以購買(mǎi)的商品。如果有足夠的內存空間,垃圾采集
器將不會(huì )回收它。如果內存空間不夠,這些對象的內存就會(huì )被回收。只要垃圾采集
器不采集
它,該對象就可以被程序使用。軟引用可用于實(shí)現對內存敏感的緩存。
軟引用可以與引用隊列(ReferenceQueue)結合使用。如果軟引用引用的對象被垃圾回收,JAVA虛擬機會(huì )將軟引用添加到與其關(guān)聯(lián)的引用隊列中。
3.弱引用(WeakReference)
如果一個(gè)對象只有弱引用,那么它類(lèi)似于可以購買(mǎi)的商品。弱引用和軟引用的區別在于只有弱引用的對象生命周期更短。在垃圾回收線(xiàn)程掃描其管轄內存區域的過(guò)程中,一旦發(fā)現只有弱引用的對象,無(wú)論當前內存空間是否足夠,都會(huì )回收其內存。然而,由于垃圾采集
器是一個(gè)非常低優(yōu)先級的線(xiàn)程,只有弱引用的對象可能無(wú)法快速找到。
弱引用可以與引用隊列(ReferenceQueue)結合使用。如果弱引用引用的對象被垃圾回收,Java虛擬機會(huì )將弱引用添加到與其關(guān)聯(lián)的引用隊列中。
4.幻影參考(PhantomReference)
“Phantom reference”,顧名思義,是沒(méi)有用的。與其他類(lèi)型的引用不同,幻象引用不決定對象的生命周期。如果一個(gè)對象只收錄
虛引用,就好像它沒(méi)有引用一樣,可以隨時(shí)被垃圾回收。
幻影引用主要用于跟蹤被垃圾采集
的對象的活動(dòng)。
幻影引用與軟引用和弱引用的區別之一是幻影引用必須與引用隊列(ReferenceQueue)結合使用。當垃圾回收器要回收一個(gè)對象時(shí),如果發(fā)現它還有一個(gè)虛引用,就會(huì )把這個(gè)虛引用添加到與之關(guān)聯(lián)的引用隊列中,然后再回收該對象的內存。程序可以通過(guò)判斷引用隊列中是否加入了幻引用來(lái)獲知被引用對象是否會(huì )被垃圾回收。如果程序發(fā)現引用隊列中加入了虛引用,則可以在被引用對象的內存被回收之前采取必要的動(dòng)作。
特別要注意的是,弱引用和幻引用在編程中很少用到,軟引用經(jīng)常用到。這是因為軟引用可以加快JVM對垃圾內存的回收,維護系統的安全,防止內存溢出。(OutOfMemory) 等問(wèn)題。
2.4 不可達對象不是“必死”
即使是可達性分析方法中的不可達對象也不是“必死”的。對屬性分析不可達的對象進(jìn)行第一次標記,篩選一次,篩選條件為是否需要對該對象執行finalize方法。當對象沒(méi)有覆蓋finalize方法,或者finalize方法已經(jīng)被虛擬機調用過(guò),虛擬機認為這兩種情況不需要執行。
判斷需要執行的對象會(huì )被放入隊列中進(jìn)行二次標記,除非該對象與引用鏈上的任何對象相關(guān)聯(lián),才會(huì )真正被回收。
2.5 如何判斷一個(gè)常量是廢棄常量
運行時(shí)常量池主要回收廢棄的常量。那么,我們如何判斷一個(gè)常量是一個(gè)過(guò)時(shí)常量呢?
如果常量池中存在字符串“abc”,如果當前不存在引用該字符串常量的String對象,則說(shuō)明常量“abc”為廢棄常量。如果此時(shí)發(fā)生內存回收并且有必要,“abc”就會(huì )被系統從常量池中清除掉。
注意:我們也說(shuō)過(guò),JDK1.7及以后版本的JVM把運行時(shí)常量池移出了方法區,在Java堆(Heap)中開(kāi)辟了一塊區域來(lái)存放運行時(shí)常量池。
2.6 如何判斷一個(gè)類(lèi)是無(wú)用類(lèi)
方法區主要是回收無(wú)用類(lèi),那么如何判斷一個(gè)類(lèi)是否為無(wú)用類(lèi)呢?
判斷一個(gè)常量是否為“廢棄的常量”比較簡(jiǎn)單,但是判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”的條件就比較苛刻。一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
虛擬機可以回收滿(mǎn)足以上三個(gè)條件的無(wú)用類(lèi)。這里說(shuō)的只是“可以”,并不是像對象一樣不使用就會(huì )被回收。
3 垃圾回收算法
垃圾采集
算法
3.1 標記-掃描算法
該算法分為“標記”和“清除”兩個(gè)階段:首先標記所有需要回收的對象,標記完成后統一回收所有標記的對象。它是最基本的采集
算法,效率很高,但是會(huì )帶來(lái)兩個(gè)明顯的問(wèn)題:
效率問(wèn)題空間問(wèn)題(標記清除后會(huì )產(chǎn)生大量不連續的碎片)
標記掃描算法
3.2 復制算法

為了解決效率問(wèn)題,出現了“復制”采集
算法。它可以將內存分成大小相同的兩塊,一次使用其中的一塊。當這塊內存用完后,將存活的對象復制到另一塊內存中,然后一次性清理已用空間。這樣每次內存回收就是回收一半的內存范圍。
復制算法
3.3 標記整理算法
根據一種特殊的基于老年代特點(diǎn)的標記算法,標記過(guò)程還是和“標記-清除”算法一樣,只是后面的步驟不是直接回收可回收對象,而是移動(dòng)所有存活的對象到一個(gè)section,然后直接清理掉end boundary之外的Memory。
標記整理算法
3.4 分代采集
算法
目前虛擬機的垃圾回收采用分代回收算法。這個(gè)算法沒(méi)有什么新意,只是根據對象生命周期的不同,把內存分成若干塊。Java堆一般分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾回收算法。
比如在新生代中,每次回收都會(huì )有大量對象死亡,所以可以選擇復制算法,只需要付出少量的對象復制成本就可以完成每次垃圾回收。對象在老年代存活的概率比較高,沒(méi)有額外的空間來(lái)保證它的分配,所以我們必須選擇“標記-清除”或“標記-排序”算法進(jìn)行垃圾回收。
采訪(fǎng)延伸問(wèn)題:HotSpot為什么分新生代和老年代?
根據上面對分代采集
算法的介紹回答。
4 垃圾采集
器
如果說(shuō)回收算法是內存回收的方法論,那么垃圾回收器就是內存回收的具體實(shí)現。
當我們比較采集器
時(shí),我們并不是要挑選一個(gè)最好的采集器
。因為我們知道目前沒(méi)有最好的垃圾采集
器,更談不上萬(wàn)能的垃圾采集
器,我們能做的就是根據具體的應用場(chǎng)景選擇適合自己的垃圾采集
器。試想一下:如果有一個(gè)完美的采集
器適用于四海之內的任何場(chǎng)景,那么我們的HotSpot虛擬機就不會(huì )實(shí)現這么多不同的垃圾采集
器。
4.1 串行采集
器
串行(serial)采集
器 采集
器是最基本也是最古老的垃圾采集
器。大家看名字就知道這個(gè)采集
器是單線(xiàn)程采集
器。它的“單線(xiàn)程”的含義不僅僅意味著(zhù)它只會(huì )使用一個(gè)垃圾采集
線(xiàn)程來(lái)完成垃圾采集
工作,更重要的是它在執行垃圾采集
工作時(shí)必須暫停所有其他工作線(xiàn)程(“Stop The World”)直到采集
完畢。
新生代采用復制算法,老年代采用標記-排序算法。
串行采集
器
虛擬機的設計者當然知道Stop The World帶來(lái)的糟糕的用戶(hù)體驗,所以在后續的垃圾采集
器設計中不斷縮短停頓時(shí)間(停頓還是有的,尋找最佳垃圾采集
器的過(guò)程還在繼續) .
但是串行采集
器與其他垃圾采集
器相比有什么優(yōu)勢嗎?當然有,簡(jiǎn)單高效(相對單線(xiàn)程的其他采集
器)。Serial采集
器由于沒(méi)有線(xiàn)程交互開(kāi)銷(xiāo),自然可以獲得很高的單線(xiàn)程采集
效率。Serial 采集
器是在客戶(hù)端模式下運行的虛擬機的不錯選擇。
4.2 ParNew 采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾采集
外,其余行為(控制參數、采集
算法、回收策略等)與Serial采集
器完全相同。
新生代采用復制算法,老年代采用標記-排序算法。
ParNew采集
器
它是許多以服務(wù)器模式運行的虛擬機的首選。除了Serial采集
器,只有CMS采集
器(真正的并發(fā)采集
器,后面會(huì )介紹)可以配合使用。
添加了并行和并發(fā)概念:
4.3 并行清除采集
器
Parallel Scavenge 采集
器類(lèi)似于 ParNew 采集
器。那么它有什么特別之處呢?
-XX:+UseParallelGC
使用Parallel收集器+ 老年代串行
-XX:+UseParallelOldGC
使用Parallel收集器+ 老年代并行
復制
Parallel Scavenge 采集
器側重于吞吐量(CPU 的有效使用)。CMS等垃圾采集
器的關(guān)注點(diǎn)更多的是用戶(hù)線(xiàn)程的停頓時(shí)間(提升用戶(hù)體驗)。所謂吞吐量就是CPU中運行用戶(hù)代碼所花費的時(shí)間與CPU總消耗時(shí)間的比值。Parallel Scavenge 采集
器提供了許多參數供用戶(hù)找到最合適的暫停時(shí)間或最大吞吐量。如果你不太了解采集
器的運行,如果存在手動(dòng)優(yōu)化,你可以選擇將內存管理優(yōu)化交給虛擬機來(lái)完成。這也是一個(gè)不錯的選擇。
新生代采用復制算法,老年代采用標記-排序算法。
ParNew采集
器
4.4.系列老采集器
Serial采集
器的老年代版本,也是單線(xiàn)程采集
器。它主要有兩個(gè)用途:一是與JDK1.5及更早版本的Parallel Scavenge采集
器一起使用,二是作為CMS采集
器的備份解決方案。
4.5 并行舊采集
器
Parallel Scavenge 采集
器的老一代版本。使用多線(xiàn)程和“標記和排序”算法。在注重吞吐量和CPU資源的情況下,可以?xún)?yōu)先考慮Parallel Scavenge采集
器和Parallel Old采集
器。
4.6 CMS 采集
器
CMS(Concurrent Mark Sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。非常適合用在注重用戶(hù)體驗的應用上。
CMS(Concurrent Mark Sweep)采集
器是HotSpot虛擬機第一個(gè)真正意義上的并發(fā)采集
器。這是垃圾采集
線(xiàn)程和用戶(hù)線(xiàn)程(基本上)同時(shí)工作的第一次。
從名字中的Mark Sweep這兩個(gè)字可以看出,CMS采集
器是通過(guò)“標記-清除”算法實(shí)現的,其運行過(guò)程比以往的垃圾采集
器都要復雜。整個(gè)過(guò)程分為四個(gè)步驟:
CMS 垃圾采集
器
從它的名字就可以看出它是一個(gè)優(yōu)秀的垃圾采集
器,主要優(yōu)點(diǎn):并發(fā)采集
,低暫停。但它有以下三個(gè)明顯的缺點(diǎn):
4.7 G1 采集
器
G1(Garbage-First)是一個(gè)面向服務(wù)器的垃圾采集
器,主要針對配備多處理器和大容量?jì)却娴臋C器。大概率滿(mǎn)足GC停頓時(shí)間要求,同時(shí)具有高吞吐量的性能特點(diǎn)。
在JDK1.7中被視為HotSpot虛擬機的一個(gè)重要的進(jìn)化特征。它具有以下特點(diǎn):
G1采集
器的運行大致分為以下幾個(gè)步驟:
G1采集
器在后臺維護一個(gè)優(yōu)先級列表,每次根據允許的采集
時(shí)間選擇回收值最高的Region(這就是它名字Garbage-First的由來(lái))。這種使用Region劃分內存空間和優(yōu)先區域回收的方法保證了GF采集
器在有限的時(shí)間內(通過(guò)將內存打零)采集
盡可能多的內存。
參考:
解決方案:JVM(2)垃圾收集器
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 60 次瀏覽 ? 2022-12-01 13:33
1.對象存活
內存回收和分配主要集中在堆內存和方法區內存(程序計數器占用空間小,虛擬機棧和本地方法棧與線(xiàn)程有相同的生命周期)。
1.1、引用計數算法
向對象添加引用計數。只要有對它的引用,計數器就會(huì )加一;當引用無(wú)效時(shí),計數器減一;
優(yōu)點(diǎn):實(shí)現簡(jiǎn)單,判斷效率高;
缺點(diǎn):難以解決對象間相互循環(huán)引用的問(wèn)題,不能回收;
1.2. 可達性分析算法
該算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索,形成一條引用鏈。當一個(gè)對象沒(méi)有任何到 GC Roots 的引用鏈時(shí),它就被判定為死亡。Java語(yǔ)言中可以作為GC Roots的對象包括:
1.3、對象引用類(lèi)型
java中有四種類(lèi)型的引用:
1.4. 物標回收流程
即使是在可達性分析算法中不可達的對象也不是“必死”的。此時(shí),他們暫時(shí)處于“試用期”階段。真正要告死一個(gè)對象,至少要經(jīng)過(guò)兩個(gè)標記過(guò)程:如果對象經(jīng)過(guò)reachability分析后,發(fā)現沒(méi)有引用鏈連接到GC Roots,就會(huì )第一次被標記并篩選一次。篩選條件是是否需要對該對象執行finalize()方法。當對象沒(méi)有覆蓋finalize()方法,或者finalize()方法已經(jīng)被虛擬機調用過(guò)時(shí),虛擬機將這兩種情況都視為“不需要執行”。
如果確定這個(gè)對象需要執行finalize()方法,那么這個(gè)對象就會(huì )被放入一個(gè)叫做F-Queue的隊列中,之后由虛擬機自動(dòng)創(chuàng )建一個(gè)低優(yōu)先級的Finalizer線(xiàn)程來(lái)執行它。這里所謂的“執行”是指虛擬機觸發(fā)這個(gè)方法,但并不承諾等待它結束。這樣做的原因是,如果一個(gè)對象在finalizer方法中執行緩慢,或者出現死循環(huán)(更極端的情況),很可能會(huì )導致F-Queue中的其他對象永遠等待,甚至導致整個(gè)內存回收系統墜毀。finalize()方法是對象逃脫死亡命運的最后機會(huì )。稍后,GC 會(huì )標記 F-Queue 中的對象,進(jìn)行第二次小范圍的標記。
1.5. 回收方法區
永久代垃圾回收主要回收兩部分;過(guò)時(shí)的常量和無(wú)用的類(lèi)?;厥者^(guò)時(shí)的常量與回收 Java 堆中的對象非常相似。以常量池中字面量的回收為例,如果一個(gè)字符串“abe”進(jìn)入了常量池,但是當前系統中沒(méi)有任何名為“abc”的字符串對象,也就是說(shuō)沒(méi)有字符串對象常量池中的“abc”常量被引用,沒(méi)有其他引用這個(gè)字面量。如果此時(shí)發(fā)生內存回收,必要時(shí)系統會(huì )將“abc”常量從常量池中清除。常量池中其他類(lèi)(接口)、方法、字段的符號引用也類(lèi)似。
判斷一個(gè)常量是否為“廢棄的常量”比較簡(jiǎn)單,但是判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”的條件就比較苛刻。
一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
2. 垃圾采集
算法 2.1. 標記清除算法:
最基本的采集
算法是“標記-清除”(Mark-Sweep)算法。該算法分為兩個(gè)階段:“標記”和“清除”。首先標記所有需要回收的對象,標記的都是Object。
標記清除.png
主要有兩個(gè)缺點(diǎn):
2.2. 復制算法
復制算法根據容量將可用內存分成兩個(gè)大小相等的塊,并且一次只使用其中一個(gè)。當這塊內存用完后,將存活的對象復制到另一塊中,然后一次性清理掉已使用的內存空間。這樣每次都回收了整個(gè)半個(gè)區域,分配內存時(shí)就不用考慮內存碎片等復雜情況。只需要移動(dòng)堆頂指針,按順序分配內存即可,實(shí)現簡(jiǎn)單,運行高效。只是這個(gè)算法的代價(jià)是將內存減少到原來(lái)的一半大小,有點(diǎn)太高了。
2.3. 標記排序算法
復制采集
算法在對象存活率高的時(shí)候會(huì )執行更多的復制操作,效率會(huì )變低。更重要的是,如果不想浪費50%的空間,就需要有額外的空間分配保證來(lái)應對已用內存中所有對象都是100%存活的極端情況,所以不能直接在老年代算法中選擇這個(gè)選項。根據老年代的特點(diǎn),提出了另一種“標記緊湊”(Mark-Compact)算法。標記過(guò)程還是和“mark-clear”算法一樣,只是后面的步驟不是直接清理可回收對象,而是讓所有存活的對象移動(dòng)到一端,然后直接清理內存之外的內存結束邊界。
標記完成.png
2.4. 世代相傳的想法
分代采集
算法根據對象的生命周期將內存分成若干塊。一般Java堆分為新生代和老年代,這樣可以根據各個(gè)年代的特點(diǎn)采用最合適的采集
算法。
在新生代中,每次垃圾回收時(shí)發(fā)現大量對象死亡,只回收少數存活的對象,所以采用復制算法,只需要付出a的復制成本就可以完成回收少數幸存的對象。在老年代,由于對象存活率高,沒(méi)有多余的空間分配給它,所以需要使用“mark-clean”或“mark-clean”算法進(jìn)行回收。
3. HotSpot算法的實(shí)現 3.1.枚舉根節點(diǎn)
GC Root 查找引用鏈的缺點(diǎn):
在 HotsPoL 的實(shí)現中,使用了一組稱(chēng)為 OopMap 的數據結構來(lái)存儲對象引用。當類(lèi)加載完成后,HotSpot會(huì )計算出對象偏移處數據的類(lèi)型,并在JIT編譯過(guò)程中,在具體位置也會(huì )記錄棧和寄存器中哪些位置是引用。這樣GC在掃描的時(shí)候就可以直接知道參考信息。
3.2. 安全要點(diǎn)
Hotspot可以通過(guò)OopMap快速完成GC Root的遍歷,但是有很多東西會(huì )導致OopMap的內容發(fā)生變化。如果每條指令都生成對應的OopMap,需要額外占用大量空間,GC的空間成本會(huì )很高。變得很高大。
實(shí)際上,Hotspot 只記錄“特定位置”的 OopMap 信息。這些位置被稱(chēng)為安全點(diǎn)(safepoino,即程序執行不會(huì )在所有地方都停下來(lái)開(kāi)始GC,只有到了安全點(diǎn)才能暫停。一般選擇方法調用、循環(huán)跳轉、異常跳轉等指令被用作安全點(diǎn)。
safepoint需要考慮的問(wèn)題是GC發(fā)生時(shí),如何在safepoint停止所有線(xiàn)程。
有兩種選擇:
搶占式中斷:搶占式中斷不需要線(xiàn)程的執行代碼主動(dòng)配合。當GC發(fā)生時(shí),所有線(xiàn)程首先被中斷。如果發(fā)現線(xiàn)程中斷的地方不在安全點(diǎn),就恢復線(xiàn)程,讓它跑到安全點(diǎn)。點(diǎn)擊中斷。很少有虛擬機實(shí)現使用搶占式中斷來(lái)掛起線(xiàn)程以響應 GC 事件。
主動(dòng)中斷:當GC需要中斷線(xiàn)程時(shí),并不直接對線(xiàn)程進(jìn)行操作,而是簡(jiǎn)單地設置一個(gè)標志,每個(gè)線(xiàn)程在執行時(shí)主動(dòng)輪詢(xún)該標志,發(fā)現中斷標志是時(shí),中斷并掛起自己真的。輪詢(xún)標志與安全點(diǎn)重合的地方,加上創(chuàng )建對象需要分配內存的地方。
執行 JNI 調用的線(xiàn)程)“運行”到最近的安全點(diǎn),然后停止。這里有兩種選擇:搶占式中斷(Preemptivc suspension)和主動(dòng)中斷(volunta port suspension)。所有線(xiàn)程全部中斷。如果發(fā)現線(xiàn)程中斷的地方不在安全點(diǎn),就會(huì )恢復線(xiàn)程,讓它“跑”到安全點(diǎn)。很少有虛擬機實(shí)現使用搶占式中斷來(lái)掛起線(xiàn)程以響應 GC 事件。主動(dòng)中斷的思想是當GC需要中斷線(xiàn)程時(shí),并不直接對線(xiàn)程進(jìn)行操作,而是簡(jiǎn)單地設置一個(gè)標志,每個(gè)線(xiàn)程在執行時(shí)主動(dòng)輪詢(xún)這個(gè)標志,發(fā)現時(shí)中斷并掛起自己中斷標志為真。上升。輪詢(xún)標志與安全點(diǎn)重合的地方,加上創(chuàng )建對象需要分配內存的地方。下面代碼清單3中的測試命令是Hotspot生成的輪詢(xún)命令。當線(xiàn)程需要掛起時(shí),虛擬機就會(huì )掛起。, 1 60 100內存頁(yè)被設置為不可讀,當線(xiàn)程執行測試指令時(shí),會(huì )產(chǎn)生自陷異常信號,線(xiàn)程會(huì )被掛起在預先注冊的異常處理器中等待,這樣的匯編指令將完成安全點(diǎn)輪詢(xún)并觸發(fā)線(xiàn)程中斷。
safepoints的選擇既不能太小導致GC等待時(shí)間太長(cháng),也不能太頻繁導致運行時(shí)負載過(guò)大。因此,安全點(diǎn)的選擇基本上是以“程序是否具有允許程序長(cháng)時(shí)間執行的特性”為標準——因為每條指令的執行時(shí)間很短,程序不太可能被因為指令流的長(cháng)度太長(cháng)而執行?!伴L(cháng)執行”最明顯的特征是指令序列的多路復用,比如方法調用、循環(huán)跳轉、異常跳轉等,所以帶有這些功能的指令會(huì )產(chǎn)生安全點(diǎn)。
3.3. 安全區
使用safepoint貌似完美解決了如何進(jìn)入Gc的問(wèn)題,但實(shí)際情況不一定。安全點(diǎn)機制保證了程序在執行的時(shí)候,會(huì )在不太長(cháng)的時(shí)間內遇到一個(gè)可以進(jìn)入GC的安全點(diǎn)。但是,當程序沒(méi)有運行的時(shí)候,也就是沒(méi)有分配CPU時(shí)間的時(shí)候,一個(gè)典型的例子就是線(xiàn)程處于休眠狀態(tài)或者Blocked狀態(tài)。此時(shí)線(xiàn)程無(wú)法響應JVM的中斷請求,跑到安全的地方中斷掛起。JVM 也顯然不太可能等待線(xiàn)程重新分配 CPU 時(shí)間。對于這種情況,就需要一個(gè)安全區域(safe Region)來(lái)解決。安全區是指在一段代碼內,引用關(guān)系不會(huì )發(fā)生變化。
當線(xiàn)程執行到SafeRegion中的代碼時(shí),首先標志自己進(jìn)入了Safe Region狀態(tài)。在這段時(shí)間里,當JVM要發(fā)起GC時(shí),它并不關(guān)心標記自己為安全Region狀態(tài)的線(xiàn)程。當一個(gè)線(xiàn)程即將離開(kāi)安全區域時(shí),它會(huì )檢查系統是否完成了根節點(diǎn)的枚舉(或整個(gè)GC過(guò)程)。如果完成了,線(xiàn)程會(huì )繼續執行,否則必須等待,直到收到safe to leave signal在safe Region。
4. 與垃圾回收相關(guān)的概念 4.1。垃圾采集
性能指標 4.2.分代采集
模型
世代采集
(Generation 采集
)是指在內存空間劃分不同的區域,每個(gè)區域存儲不同年齡的對象,每個(gè)區域可以根據自身特點(diǎn)靈活采用自己的采集
策略。
根據存儲對象的年齡,分代可以分為3種類(lèi)型:
根據垃圾回收在不同代中的作用,垃圾回收類(lèi)型分為兩種:
分配空間的時(shí)候,先在new era的伊甸區分配。當Eden區內存耗盡時(shí),會(huì )觸發(fā)Minor GC;在復制鏈接中,存活對象會(huì )被復制到一個(gè)Survivor區。如果 Survivor 區已滿(mǎn),將允許對象的一個(gè)??子集被提升到老年代。當提升時(shí)發(fā)現老年代沒(méi)有多余空間時(shí),會(huì )通過(guò)Full GC回收整個(gè)堆空間(CMS除外)。
JVM通過(guò)兩個(gè)參數來(lái)判斷一個(gè)對象是否可以晉升到老年代:
4.3. 快速配送
通常,系統具有可用于分配對象的最大且最連續的內存塊。在這種情況下,如果使用指針碰撞算法來(lái)分配對象內存空間,效率是相當可觀(guān)的。這個(gè)算法的思路是:記錄下一個(gè)分配對象的位置,當有新的對象要分配時(shí),如果檢查剩余空間容納該對象,那么只需要一次移動(dòng)指針的操作完成內存分配。
對于多線(xiàn)程應用,分配操作需要保證線(xiàn)程安全。如果使用全局鎖來(lái)保證線(xiàn)程安全的內存分配,就會(huì )成為性能瓶頸。所以Hotspot采用了thread-local allocation cache技術(shù)(即Thread-Local Allocation Buffers,簡(jiǎn)稱(chēng)TLABs)。每個(gè)線(xiàn)程都會(huì )有自己的TLAB,就是Eden區的一個(gè)小空間。因為每個(gè) TLAB 只對一個(gè)線(xiàn)程可見(jiàn),分配操作可以使用 bump-the-pointer 技術(shù)快速完成,無(wú)需使用任何鎖定機制:只有當一個(gè)線(xiàn)程填滿(mǎn)一個(gè) TLAB 并需要獲取一個(gè)新的時(shí),同步是必須的. 在虛擬機開(kāi)啟了UseTLAB選項的前提下,在分配新的對象空間時(shí),會(huì )先嘗試在TLAB空間中分配對象空間。如果空間分配請求失敗,
4.4. 堆棧分配和逃逸分析
棧上分配的基本思想是這樣的:分析局部變量的范圍僅限于方法內部。然后 JVM 直接在棧幀中分配對象空間,避免在堆中分配。這個(gè)分析過(guò)程稱(chēng)為逃逸分析,在棧幀中分配對象的方法稱(chēng)為棧上分配。這樣做的目的是減少新生代的集合數量,間接提高JVM的性能。
4.5. 垃圾采集
器的設計演變 5. 垃圾采集
器介紹 5.1.串行采集
器
串行采集
器是一個(gè)單線(xiàn)程采集
器。它的“單線(xiàn)程”意義不僅僅意味著(zhù)它只會(huì )使用一個(gè)CPU或一個(gè)采集
線(xiàn)程來(lái)完成垃圾采集
,更重要的是,當它采集
垃圾時(shí),必須掛起所有其他工作線(xiàn)程,直到它完成采集
。
與其他采集
器相比,它也有優(yōu)勢:簡(jiǎn)單高效(相對于其他采集
器的單線(xiàn)程),對于僅限于單CPU的環(huán)境,Serial采集
器沒(méi)有線(xiàn)程交互開(kāi)銷(xiāo),自然而然會(huì )專(zhuān)注于垃圾采集
Get單線(xiàn)程采集
效率最高。在用戶(hù)的桌面應用場(chǎng)景中,分配給虛擬機管理的內存一般都不會(huì )很大,采集
新生代的幾十兆甚至一兩百兆(僅新生代使用的內存,桌面應用基本上做不管它有多大),停頓時(shí)間可以控制在幾十毫秒以?xún)?,最多一百毫秒。只要不是?jīng)常發(fā)生,這種停頓是可以接受的。所以,
串口.png
5.2、ParNew采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾回收外,其行為還包括Serial采集
器可用的所有控制參數(例如:-XX:SurvivorRatio、-XX:PretenureSizeThreshold、-XX:HandlePromotionFailure等)、采集
算法、Stop The World、對象分配規則、回收策略等與Serial采集
器完全相同。事實(shí)上,這兩個(gè)采集
器共享相當多的代碼。
ParNew 采集
器除了多線(xiàn)程采集
器之外,與Serial 采集
器相比并沒(méi)有太多創(chuàng )新之處,但它是許多運行在Server 模式下的虛擬機的首選新生代采集
器。其中之一是與性能無(wú)關(guān)但重要的原因是,除了Serial采集
器之外,目前只有它與CMS采集
器一起使用。
ParNew 采集
器在單 CPU 環(huán)境下永遠不會(huì )比 Serial 采集
器有更好的效果。即使由于線(xiàn)程交互的開(kāi)銷(xiāo),采集
器在超線(xiàn)程技術(shù)實(shí)現的雙 CPU 環(huán)境中也不能 100% 有效。保證覆蓋串行采集
器。當然,隨著(zhù)可以使用的CPU數量的增加,對于GC時(shí)有效利用系統資源還是很有好處的。
ParNew.png
5.3、Parallel Scavenge采集
器
Parallel scavenge collector是新一代的使用復制算法的采集
器,是一種并行的多線(xiàn)程采集
器。Parallel scavenge 采集
器的特點(diǎn)是它的側重點(diǎn)不同于其他采集
器。Parallel scavenge collector的目標是達到一個(gè)可控的吞吐量(Throughput)。所謂吞吐量就是運行用戶(hù)代碼的CPU時(shí)間占總CPU時(shí)間的比值,即吞吐量=運行用戶(hù)代碼時(shí)間/(運行用戶(hù)代碼時(shí)間+垃圾回收時(shí)間),虛擬機已經(jīng)運行了一共100分鐘,其中垃圾回收用了1分鐘,也就是99%的吞吐量。
暫停時(shí)間越短,越適合需要與用戶(hù)交互的程序。良好的響應速度可以提升用戶(hù)體驗,而高吞吐量可以高效利用CPU時(shí)間,盡快完成程序的計算任務(wù)。主要適用于后臺計算,而不是需要過(guò)多交互的Tasks。Parallel Scavenge采集
器提供了兩個(gè)參數來(lái)精確控制吞吐量,分別是控制最大垃圾采集
暫停時(shí)間的-XX:MaxGCPauseMillis參數和直接設置吞吐量大小的-XX:GCTimeRatio參數。
MaxGCPauseMillis參數允許的值為大于0的毫秒數,采集
器會(huì )盡量保證內存回收花費的時(shí)間不超過(guò)設定值。但是不要以為這個(gè)參數的值設置的小一點(diǎn),系統的垃圾回收速度就會(huì )快一些。GC暫停時(shí)間的縮短是以吞吐量和新生代空間為代價(jià)的;更小,采集
新生代的300MB肯定比采集
500MB快,這直接導致垃圾采集
更頻繁。以前是10秒采集一次,停頓100毫秒,現在是5秒采集一次,停頓70毫秒。毫秒,停頓時(shí)間確實(shí)下降了,但是吞吐量也下降了。
GCTimeRatio參數的值應該是一個(gè)大于0小于100的整數,即垃圾回收時(shí)間占總時(shí)間的比例,相當于吞吐量的倒數。如果這個(gè)參數設置為19,最大允許的GC時(shí)間會(huì )占總時(shí)間的5%(即 1 / ( 1 + 19 ) ),默認為99,也就是允許最多占1%(即1 / ( 1 + 99 ) ) 垃圾采集
時(shí)間。
由于與吞吐量的密切關(guān)系,Parallel scavenge 采集
器也常被稱(chēng)為“吞吐量?jì)?yōu)先”的采集
器。除了以上兩個(gè)參數,Parallel scavenge collector還有一個(gè)參數-xx:+UseAdaptiveSizePolicy值得關(guān)注。這是一個(gè)開(kāi)關(guān)參數。開(kāi)啟該參數后,無(wú)需手動(dòng)指定新生代的大?。?Xmn)、Eden占幸存者區域的比例(-xx:SurvivorRatio)、老年代對象的年齡( -xx : PretenureSizeThreshold )等詳細參數,虛擬機根據當前系統運行狀態(tài)采集
性能監控信息,動(dòng)態(tài)調整這些參數以提供最合適的停頓時(shí)間或最大吞吐量。
5.4、Serial老采集器
Serial old是老版本的Serial采集
器,也是單線(xiàn)程采集
器,使用“標記-排序”算法。這個(gè)采集
器的主要意義也是在客戶(hù)端模式下用于虛擬機。如果是server模式,主要有兩個(gè)用途:一是配合JDK 1.5及更早版本中的Parallel scavenge collector使用。,另一個(gè)用途是作為CMS采集
器的備份計劃,在并發(fā)采集
出現Concurrcnt Mode Failure時(shí)使用。這兩點(diǎn)將在后面的內容中詳細說(shuō)明。
SerialOld.png
5.5、并行舊采集
器
Parallel old 是 Parallel 清道夫采集
器的老一代版本,它使用多線(xiàn)程和“標記與排序”算法。如果新生代選擇Para??llel Scavenge采集
器,那么老年代就只能選擇Serial Old (Ps Markswccp)采集
器了。由于老年代Serial Old采集
器對服務(wù)器應用程序性能的“拖累”,使用Parallel Scavcnge采集
服務(wù)器可能無(wú)法最大化整體應用程序的吞吐量,因為單線(xiàn)程老年代采集
器不能充分利用服務(wù)器的多CPU處理能力。在老年代很大、硬件比較先進(jìn)的環(huán)境下,這種組合的吞吐量可能甚至沒(méi)有那么“強大” 作為 ParNew 和 CMS 的組合。直到Parallel Old采集
器的出現,“吞吐量?jì)?yōu)先”的采集
器終于有了更名副其實(shí)的應用組合。在注重吞吐量和對CPU資源敏感的場(chǎng)合,可以?xún)?yōu)先考慮Parallcl Scavcnge plus Parallel Old collector。
ParallelOld.png
5.6、CMS采集
器
CMS(Concurrent Mark sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。目前,很大一部分Java應用都集中在互聯(lián)網(wǎng)網(wǎng)站或B/S系統的服務(wù)器端。這類(lèi)應用特別注重服務(wù)的響應速度,希望系統停頓時(shí)間最短,給用戶(hù)帶來(lái)更好的體驗。CMS采集
器非常適合這類(lèi)應用的需求。
CMS采集
器基于“mark-clear”算法實(shí)現,整個(gè)過(guò)程分為四步:
由于整個(gè)過(guò)程中耗時(shí)最長(cháng)的采集
器線(xiàn)程可以和用戶(hù)線(xiàn)程一起工作,所以CMS采集
器的內存回收過(guò)程是和用戶(hù)線(xiàn)程并發(fā)執行的。
cms.png
CMS的缺點(diǎn)是:
5.7、G1采集
器
G1采集
器具有以下特點(diǎn):
G1中的堆內存布局:
G1將整個(gè)Java堆劃分為多個(gè)大小相等的獨立區域(Region)。雖然仍然保留了新生代和老年代的概念,但新生代和老年代不再是物理隔離的。它們都是區域的一部分(不需要連續)。
G1跟蹤每個(gè)Region的垃圾堆積值(回收獲得的空間大小和回收所需時(shí)間的經(jīng)驗值),并在后臺維護一個(gè)優(yōu)先級列表。每次根據允許的采集時(shí)間,優(yōu)先采集值最大的Region。(這就是 Garbage-First 名稱(chēng)的來(lái)源)。這種使用Region劃分內存空間和優(yōu)先區域回收的方式,保證了G1采集
器在有限的時(shí)間內獲得盡可能高的采集
效率。
在Gl采集
器中,對于Region之間的對象引用以及其他采集
器中新生代和老年代之間的對象引用,虛擬機使用Remembered Set來(lái)避免全堆掃描。G1 中的每個(gè) Region 都有對應的 Remembered Set。當虛擬機發(fā)現程序正在寫(xiě)入引用類(lèi)型的數據時(shí),會(huì )生成一個(gè)Write Barrier暫時(shí)中斷寫(xiě)入操作,并檢查Reference所引用的對象是否在不同的Region中。其中(在generation的例子中,就是檢查old generation中的對象是否引用了new generation中的對象),如果是,則通過(guò)Card Table。將相關(guān)引用信息記錄到引用對象所屬Region的Remembered Set中。在執行內存恢復時(shí),
如果不算維護Remembered set的操作,GI采集
器的操作大致可以分為以下幾步:
最后,在篩選回收階段,首先,根據Sun公開(kāi)的信息,這個(gè)階段其實(shí)可以和用戶(hù)程序并發(fā)執行,但是因為只回收了一部分Region,所以時(shí)間是可控的user,而暫停用戶(hù)線(xiàn)程會(huì )大大提高采集效率。
5.8. 垃圾采集
器參數匯總參數說(shuō)明
-XX:+UseSerialGC
在年輕代和老年代使用串行采集
器
-XX:幸存者比率
設置eden區大小與survivor區大小的比例
-XX:PretenureSizeThreshold
設置大對象直接進(jìn)入老年代的閾值。當對象的大小超過(guò)這個(gè)值時(shí),會(huì )直接分配到老年代。
-XX:MaxTenuringThreshold
設置對象進(jìn)入老年代的最大年齡。每次Minor GC后,對象的年齡加1,任何超過(guò)這個(gè)年齡的對象都必須進(jìn)入老年代
參數說(shuō)明
-XX:+UseParNewGC
在年輕代使用并行采集
器
-XX:+UseParallelOldGC
老年代使用并行采集
器
-XX:并行GC線(xiàn)程
設置用于垃圾回收的線(xiàn)程數。通??梢缘扔贑PU個(gè)數,但在CPU個(gè)數較多的情況下,設置一個(gè)比較小的值比較合理。
-XX:MaxGCPauseMillis
設置最大垃圾采集
暫停時(shí)間。它的值是一個(gè)大于0的整數。采集
器在工作時(shí),會(huì )調整Java堆大小或其他參數,盡可能將停頓時(shí)間控制在MaxGCPauseMillis以?xún)取?br /> -XX:GCTimeRatio
設置吞吐量大小。它是一個(gè)從 0 到 100 的整數。假設 GCTimeRatio 的值為 n,系統將花費不超過(guò) 1/(1+n) 的時(shí)間進(jìn)行垃圾回收。
-XX:+UseAdaptiveSizePolicy
開(kāi)啟自適應 GC 策略。在這種模式下,新生代的大小、eden 和 survivor 的比例、晉升到老年代的對象的年齡等參數都會(huì )自動(dòng)調整,以在堆大小、吞吐量和停頓時(shí)間之間達到平衡。
參數說(shuō)明
-XX:+UseConcMarkSweepGC
新生代使用并行采集
器,老年代使用CMS+串行采集
器
-XX:并行CMS線(xiàn)程
設置 CMS 的線(xiàn)程數
-XX:CMSInitiatingOccupancyFraction
設置CMS采集
器在老年代空間使用后觸發(fā),默認68%
-XX:+UseCMSCompactAtFull采集
設置CMS采集
器完成垃圾回收后是否進(jìn)行內存整理
-XX:CMSFullGCsBeforeCompaction
設置好CMS垃圾回收次數后,進(jìn)行一次內存壓縮
-XX:+CMSClassUnloadingEnabled
允許回收類(lèi)元數據區域
-XX:CMSInitiatingPermOccupancyFraction
當永久區域占用達到這個(gè)百分比時(shí),開(kāi)始CMS回收(前提是-XX:+CMSClassUnloadingEnabled被激活)
-XX:UseCMSInitiatingOccupancyOnlyn
表示只有達到閾值才會(huì )執行CMS回收
-XX:+CMSIncrementalMode
使用增量模式更適合單CPU。增量模式在 JDK8 中被標記為過(guò)時(shí),并將在 JDK 9 中完全刪除。
參數說(shuō)明
-XX:+使用G1GC
使用 G1 采集
器
-XX:MaxGCPauseMillis
設置最大垃圾回收暫停時(shí)間
-XX:GCPauseIntervalMillis
設置暫停間隔
參數說(shuō)明
-XX:+使用TLAB
啟用 TLAB 分配
-XX:+PrintTLAB
打印TLAB相關(guān)分配信息
-XX:TLABSize
設置 TLAB 大小
自動(dòng)調整 TLAB 大小
參數說(shuō)明
-XX:+DisableExplicitGC
禁用顯式 GC
-XX:+ExplicitGCInvokesConcurrent
使用并發(fā)處理顯式 GC
5.9 垃圾采集
器比較
比較.png
采集
器算法并發(fā)并行 STW 適用生成
連續劇
復制
不
不
是的
新一代
標準桿新
復制
是的
是的
不
新一代
并行清除
復制
是的
是的
不
新一代
序列號舊
標記組織
不
不
是的
老一輩
并行老
標記組織
是的
是的
不
老一輩
內容管理系統
清除標記
是的
是的
是的
老一輩
G1
世代采集
是的
是的
不
舊時(shí)代,新一代
Collector適用場(chǎng)景優(yōu)缺點(diǎn)
連續劇
單CPU,客戶(hù)端模式
簡(jiǎn)單高效,無(wú)線(xiàn)程切換開(kāi)銷(xiāo),專(zhuān)注于GC
STW
標準桿新
多CPU,服務(wù)器模式
并行并發(fā) GC
STW
并行清除
吞吐量?jì)?yōu)先級,客戶(hù)端或服務(wù)器模式
吞吐量?jì)?yōu)先級,設置吞吐量以適應不同的場(chǎng)景
序列號舊
單CPU,客戶(hù)端模式
簡(jiǎn)單高效,無(wú)線(xiàn)程切換開(kāi)銷(xiāo),專(zhuān)注于GC
STW
并行老
吞吐量?jì)?yōu)先級,客戶(hù)端或服務(wù)器模式
吞吐量?jì)?yōu)先級,設置吞吐量以適應不同的場(chǎng)景
內容管理系統
互聯(lián)網(wǎng); B/S系統服務(wù)
并發(fā)采集
,低暫停
對CPU資源敏感,無(wú)法處理浮動(dòng)垃圾,內存碎片
G1
對于服務(wù)器端應用程序
并發(fā)并行、分代采集
、可測停頓、空間整合
6. 內存分配與回收策略 6.1. 對象首先在伊甸園分配
大多數時(shí)候對象是在伊甸園中分配的。當Eden中沒(méi)有足夠的空間分配時(shí),JVM會(huì )發(fā)起一次Minor GC。,
次要垃圾回收(Minor GC):指發(fā)生在新生代的垃圾回收。由于大多數JAVA對象都有注冊和死亡的特點(diǎn),所以Minor GC非常頻繁,回收速度普遍較快。
老年代GC(Major GC/Full GC):指發(fā)生在老年代的GC。Major GC 的發(fā)生,通常伴隨著(zhù)至少一次 Minor GC。Major GC 一般比 Minor GC 快 10 倍。
6.2. 大對象直接進(jìn)入老年代
所謂大對象是指需要大量連續內存空間的java對象,比如很長(cháng)的字符串、數組等。大對象對于虛擬機的內存分配來(lái)說(shuō)是個(gè)壞消息(抱怨Java虛擬機,比遇到大對象更壞的消息是遇到一群“生死存亡”的“短命大對象”,寫(xiě)programs should be avoided),頻繁的大對象很可能導致垃圾回收在內存中還有大量空間獲取足夠的連續空間來(lái)“放置”它們時(shí)被提前觸發(fā)。虛擬機提供了一個(gè)-XX:PretenureSizeThreshold參數,讓大于這個(gè)設置值的對象直接在老年代分配。這樣做的目的是為了避免在Eden區和兩個(gè)Survivor區之間進(jìn)行大量的內存復制(回收新生代使用復制算法采集
內存)。PretenureSizeThreshold 參數僅對 Serial 和 ParNew 采集
器有效。
6.3. 長(cháng)壽對象會(huì )進(jìn)入老年代
虛擬機為每個(gè)對象定義一個(gè)對象年齡(Age)計數器。如果對象出生在Eden,在第一個(gè)Minor GG后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并設置對象的age為1。每有一個(gè)對象“存活”一個(gè)Survivor區的Minor GC,其年齡會(huì )增加1年。當它的年齡增長(cháng)到一定程度(默認是15歲),就會(huì )被提升到老年代。將對象提升到 Old Age 的年齡閾值可以通過(guò)參數 -xx : MaxTenuringThreshold 設置。
6.4. 動(dòng)態(tài)對象的年齡確定
為了更好的適應不同程序的內存狀態(tài),虛擬機并不總是要求對象的年齡必須達到MaxTenuringThreshold才能提升到老年代。如果survivor空間中所有同age的對象size之和大于Survivor空間的一半,則age大于等于這個(gè)age的對象可以直接進(jìn)入老年代,無(wú)需等待MaxTenuringThreshold中要求的age .
6.5. 空間分配保證
在Minor GC發(fā)生之前,虛擬機首先檢查老年代中的最大可用連續空間是否大于新生代中所有對象的總空間。如果這個(gè)條件為真,那么Minor GC可以保證它是安全的。如果不是,則虛擬機檢查 HandlePromotionFailure 設置值是否允許保證失敗。如果允許,它會(huì )繼續檢查老年代的最大可用連續空間是否大于提升到老年代的對象的平均大小。如果大于,它會(huì )嘗試進(jìn)行一次Minor GC,雖然這個(gè)Minor GC有風(fēng)險:如果小于,或者HandlePromotionFailure設置不允許風(fēng)險,那么此時(shí)也應該進(jìn)行一次Full GC。
解決方案:Meta宣布將通過(guò)保護Facebook的標識符來(lái)阻止采集行為
作為我們正在進(jìn)行的解決數據濫用問(wèn)題系列的一部分,Meta 最近分享了有關(guān)我們的外部數據濫用 (EDM) 團隊如何保護人們免受克隆網(wǎng)站侵害的最新消息。今天,官方博客詳細介紹了如何阻止在 Facebook 上采集
Facebook 標識符 (FBID)。
大多數公司在其網(wǎng)站的 URL 中使用唯一標識符。標識符是一種唯一引用人或內容的方式,例如帖子、圖像和視頻。在 Facebook 內部,這些標識符被稱(chēng)為 FBID,它們用于為人們加載內容。
采集
是指從網(wǎng)站或應用程序自動(dòng)采集
數據,可以是授權的也可以是未授權的。未經(jīng)授權的采集
通常涉及猜測標識符,或使用購買(mǎi)的標識符來(lái)采集
有關(guān)人員的數據。在某些情況下,收割者采集
標識符并碰撞和交叉過(guò)濾電話(huà)號碼或其他公開(kāi)可用的數據,以創(chuàng )建可重復使用的數據集,這些數據集有時(shí)會(huì )被出售以牟利。
圖為 URL 中帶有 PFBID 的 Facebook 帖子示例
考慮到這一點(diǎn),Meta 創(chuàng )建了假名化的 Facebook 標識符 (PFBID),它將時(shí)間戳和 FBID 結合起來(lái)生成一個(gè)唯一的時(shí)間旋轉標識符。隨著(zhù)訪(fǎng)問(wèn)原創(chuàng )
標識符的能力被逐步淘汰,這有助于防止未經(jīng)授權的數據抓取,使攻擊者更難猜測、連接和重新訪(fǎng)問(wèn)數據。
這些標識符并非旨在防止瀏覽器工具從 URL 中刪除跟蹤組件,該過(guò)程是為了更好地保護人們的隱私免受某些類(lèi)型的枚舉和延遲攻擊,同時(shí)保留持久鏈接的能力。
用戶(hù)可以在 Facebook 的“隱私問(wèn)題”頁(yè)面上閱讀有關(guān)隱私倡議的更多更新和見(jiàn)解: 查看全部
解決方案:JVM(2)垃圾收集器
1.對象存活
內存回收和分配主要集中在堆內存和方法區內存(程序計數器占用空間小,虛擬機棧和本地方法棧與線(xiàn)程有相同的生命周期)。
1.1、引用計數算法
向對象添加引用計數。只要有對它的引用,計數器就會(huì )加一;當引用無(wú)效時(shí),計數器減一;
優(yōu)點(diǎn):實(shí)現簡(jiǎn)單,判斷效率高;
缺點(diǎn):難以解決對象間相互循環(huán)引用的問(wèn)題,不能回收;
1.2. 可達性分析算法
該算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索,形成一條引用鏈。當一個(gè)對象沒(méi)有任何到 GC Roots 的引用鏈時(shí),它就被判定為死亡。Java語(yǔ)言中可以作為GC Roots的對象包括:
1.3、對象引用類(lèi)型
java中有四種類(lèi)型的引用:
1.4. 物標回收流程
即使是在可達性分析算法中不可達的對象也不是“必死”的。此時(shí),他們暫時(shí)處于“試用期”階段。真正要告死一個(gè)對象,至少要經(jīng)過(guò)兩個(gè)標記過(guò)程:如果對象經(jīng)過(guò)reachability分析后,發(fā)現沒(méi)有引用鏈連接到GC Roots,就會(huì )第一次被標記并篩選一次。篩選條件是是否需要對該對象執行finalize()方法。當對象沒(méi)有覆蓋finalize()方法,或者finalize()方法已經(jīng)被虛擬機調用過(guò)時(shí),虛擬機將這兩種情況都視為“不需要執行”。
如果確定這個(gè)對象需要執行finalize()方法,那么這個(gè)對象就會(huì )被放入一個(gè)叫做F-Queue的隊列中,之后由虛擬機自動(dòng)創(chuàng )建一個(gè)低優(yōu)先級的Finalizer線(xiàn)程來(lái)執行它。這里所謂的“執行”是指虛擬機觸發(fā)這個(gè)方法,但并不承諾等待它結束。這樣做的原因是,如果一個(gè)對象在finalizer方法中執行緩慢,或者出現死循環(huán)(更極端的情況),很可能會(huì )導致F-Queue中的其他對象永遠等待,甚至導致整個(gè)內存回收系統墜毀。finalize()方法是對象逃脫死亡命運的最后機會(huì )。稍后,GC 會(huì )標記 F-Queue 中的對象,進(jìn)行第二次小范圍的標記。
1.5. 回收方法區
永久代垃圾回收主要回收兩部分;過(guò)時(shí)的常量和無(wú)用的類(lèi)?;厥者^(guò)時(shí)的常量與回收 Java 堆中的對象非常相似。以常量池中字面量的回收為例,如果一個(gè)字符串“abe”進(jìn)入了常量池,但是當前系統中沒(méi)有任何名為“abc”的字符串對象,也就是說(shuō)沒(méi)有字符串對象常量池中的“abc”常量被引用,沒(méi)有其他引用這個(gè)字面量。如果此時(shí)發(fā)生內存回收,必要時(shí)系統會(huì )將“abc”常量從常量池中清除。常量池中其他類(lèi)(接口)、方法、字段的符號引用也類(lèi)似。
判斷一個(gè)常量是否為“廢棄的常量”比較簡(jiǎn)單,但是判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”的條件就比較苛刻。
一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
2. 垃圾采集
算法 2.1. 標記清除算法:
最基本的采集
算法是“標記-清除”(Mark-Sweep)算法。該算法分為兩個(gè)階段:“標記”和“清除”。首先標記所有需要回收的對象,標記的都是Object。
標記清除.png
主要有兩個(gè)缺點(diǎn):
2.2. 復制算法
復制算法根據容量將可用內存分成兩個(gè)大小相等的塊,并且一次只使用其中一個(gè)。當這塊內存用完后,將存活的對象復制到另一塊中,然后一次性清理掉已使用的內存空間。這樣每次都回收了整個(gè)半個(gè)區域,分配內存時(shí)就不用考慮內存碎片等復雜情況。只需要移動(dòng)堆頂指針,按順序分配內存即可,實(shí)現簡(jiǎn)單,運行高效。只是這個(gè)算法的代價(jià)是將內存減少到原來(lái)的一半大小,有點(diǎn)太高了。
2.3. 標記排序算法
復制采集
算法在對象存活率高的時(shí)候會(huì )執行更多的復制操作,效率會(huì )變低。更重要的是,如果不想浪費50%的空間,就需要有額外的空間分配保證來(lái)應對已用內存中所有對象都是100%存活的極端情況,所以不能直接在老年代算法中選擇這個(gè)選項。根據老年代的特點(diǎn),提出了另一種“標記緊湊”(Mark-Compact)算法。標記過(guò)程還是和“mark-clear”算法一樣,只是后面的步驟不是直接清理可回收對象,而是讓所有存活的對象移動(dòng)到一端,然后直接清理內存之外的內存結束邊界。
標記完成.png
2.4. 世代相傳的想法
分代采集
算法根據對象的生命周期將內存分成若干塊。一般Java堆分為新生代和老年代,這樣可以根據各個(gè)年代的特點(diǎn)采用最合適的采集
算法。
在新生代中,每次垃圾回收時(shí)發(fā)現大量對象死亡,只回收少數存活的對象,所以采用復制算法,只需要付出a的復制成本就可以完成回收少數幸存的對象。在老年代,由于對象存活率高,沒(méi)有多余的空間分配給它,所以需要使用“mark-clean”或“mark-clean”算法進(jìn)行回收。
3. HotSpot算法的實(shí)現 3.1.枚舉根節點(diǎn)
GC Root 查找引用鏈的缺點(diǎn):
在 HotsPoL 的實(shí)現中,使用了一組稱(chēng)為 OopMap 的數據結構來(lái)存儲對象引用。當類(lèi)加載完成后,HotSpot會(huì )計算出對象偏移處數據的類(lèi)型,并在JIT編譯過(guò)程中,在具體位置也會(huì )記錄棧和寄存器中哪些位置是引用。這樣GC在掃描的時(shí)候就可以直接知道參考信息。
3.2. 安全要點(diǎn)
Hotspot可以通過(guò)OopMap快速完成GC Root的遍歷,但是有很多東西會(huì )導致OopMap的內容發(fā)生變化。如果每條指令都生成對應的OopMap,需要額外占用大量空間,GC的空間成本會(huì )很高。變得很高大。
實(shí)際上,Hotspot 只記錄“特定位置”的 OopMap 信息。這些位置被稱(chēng)為安全點(diǎn)(safepoino,即程序執行不會(huì )在所有地方都停下來(lái)開(kāi)始GC,只有到了安全點(diǎn)才能暫停。一般選擇方法調用、循環(huán)跳轉、異常跳轉等指令被用作安全點(diǎn)。
safepoint需要考慮的問(wèn)題是GC發(fā)生時(shí),如何在safepoint停止所有線(xiàn)程。
有兩種選擇:
搶占式中斷:搶占式中斷不需要線(xiàn)程的執行代碼主動(dòng)配合。當GC發(fā)生時(shí),所有線(xiàn)程首先被中斷。如果發(fā)現線(xiàn)程中斷的地方不在安全點(diǎn),就恢復線(xiàn)程,讓它跑到安全點(diǎn)。點(diǎn)擊中斷。很少有虛擬機實(shí)現使用搶占式中斷來(lái)掛起線(xiàn)程以響應 GC 事件。
主動(dòng)中斷:當GC需要中斷線(xiàn)程時(shí),并不直接對線(xiàn)程進(jìn)行操作,而是簡(jiǎn)單地設置一個(gè)標志,每個(gè)線(xiàn)程在執行時(shí)主動(dòng)輪詢(xún)該標志,發(fā)現中斷標志是時(shí),中斷并掛起自己真的。輪詢(xún)標志與安全點(diǎn)重合的地方,加上創(chuàng )建對象需要分配內存的地方。
執行 JNI 調用的線(xiàn)程)“運行”到最近的安全點(diǎn),然后停止。這里有兩種選擇:搶占式中斷(Preemptivc suspension)和主動(dòng)中斷(volunta port suspension)。所有線(xiàn)程全部中斷。如果發(fā)現線(xiàn)程中斷的地方不在安全點(diǎn),就會(huì )恢復線(xiàn)程,讓它“跑”到安全點(diǎn)。很少有虛擬機實(shí)現使用搶占式中斷來(lái)掛起線(xiàn)程以響應 GC 事件。主動(dòng)中斷的思想是當GC需要中斷線(xiàn)程時(shí),并不直接對線(xiàn)程進(jìn)行操作,而是簡(jiǎn)單地設置一個(gè)標志,每個(gè)線(xiàn)程在執行時(shí)主動(dòng)輪詢(xún)這個(gè)標志,發(fā)現時(shí)中斷并掛起自己中斷標志為真。上升。輪詢(xún)標志與安全點(diǎn)重合的地方,加上創(chuàng )建對象需要分配內存的地方。下面代碼清單3中的測試命令是Hotspot生成的輪詢(xún)命令。當線(xiàn)程需要掛起時(shí),虛擬機就會(huì )掛起。, 1 60 100內存頁(yè)被設置為不可讀,當線(xiàn)程執行測試指令時(shí),會(huì )產(chǎn)生自陷異常信號,線(xiàn)程會(huì )被掛起在預先注冊的異常處理器中等待,這樣的匯編指令將完成安全點(diǎn)輪詢(xún)并觸發(fā)線(xiàn)程中斷。
safepoints的選擇既不能太小導致GC等待時(shí)間太長(cháng),也不能太頻繁導致運行時(shí)負載過(guò)大。因此,安全點(diǎn)的選擇基本上是以“程序是否具有允許程序長(cháng)時(shí)間執行的特性”為標準——因為每條指令的執行時(shí)間很短,程序不太可能被因為指令流的長(cháng)度太長(cháng)而執行?!伴L(cháng)執行”最明顯的特征是指令序列的多路復用,比如方法調用、循環(huán)跳轉、異常跳轉等,所以帶有這些功能的指令會(huì )產(chǎn)生安全點(diǎn)。
3.3. 安全區
使用safepoint貌似完美解決了如何進(jìn)入Gc的問(wèn)題,但實(shí)際情況不一定。安全點(diǎn)機制保證了程序在執行的時(shí)候,會(huì )在不太長(cháng)的時(shí)間內遇到一個(gè)可以進(jìn)入GC的安全點(diǎn)。但是,當程序沒(méi)有運行的時(shí)候,也就是沒(méi)有分配CPU時(shí)間的時(shí)候,一個(gè)典型的例子就是線(xiàn)程處于休眠狀態(tài)或者Blocked狀態(tài)。此時(shí)線(xiàn)程無(wú)法響應JVM的中斷請求,跑到安全的地方中斷掛起。JVM 也顯然不太可能等待線(xiàn)程重新分配 CPU 時(shí)間。對于這種情況,就需要一個(gè)安全區域(safe Region)來(lái)解決。安全區是指在一段代碼內,引用關(guān)系不會(huì )發(fā)生變化。
當線(xiàn)程執行到SafeRegion中的代碼時(shí),首先標志自己進(jìn)入了Safe Region狀態(tài)。在這段時(shí)間里,當JVM要發(fā)起GC時(shí),它并不關(guān)心標記自己為安全Region狀態(tài)的線(xiàn)程。當一個(gè)線(xiàn)程即將離開(kāi)安全區域時(shí),它會(huì )檢查系統是否完成了根節點(diǎn)的枚舉(或整個(gè)GC過(guò)程)。如果完成了,線(xiàn)程會(huì )繼續執行,否則必須等待,直到收到safe to leave signal在safe Region。
4. 與垃圾回收相關(guān)的概念 4.1。垃圾采集
性能指標 4.2.分代采集
模型
世代采集
(Generation 采集
)是指在內存空間劃分不同的區域,每個(gè)區域存儲不同年齡的對象,每個(gè)區域可以根據自身特點(diǎn)靈活采用自己的采集
策略。
根據存儲對象的年齡,分代可以分為3種類(lèi)型:
根據垃圾回收在不同代中的作用,垃圾回收類(lèi)型分為兩種:
分配空間的時(shí)候,先在new era的伊甸區分配。當Eden區內存耗盡時(shí),會(huì )觸發(fā)Minor GC;在復制鏈接中,存活對象會(huì )被復制到一個(gè)Survivor區。如果 Survivor 區已滿(mǎn),將允許對象的一個(gè)??子集被提升到老年代。當提升時(shí)發(fā)現老年代沒(méi)有多余空間時(shí),會(huì )通過(guò)Full GC回收整個(gè)堆空間(CMS除外)。
JVM通過(guò)兩個(gè)參數來(lái)判斷一個(gè)對象是否可以晉升到老年代:
4.3. 快速配送
通常,系統具有可用于分配對象的最大且最連續的內存塊。在這種情況下,如果使用指針碰撞算法來(lái)分配對象內存空間,效率是相當可觀(guān)的。這個(gè)算法的思路是:記錄下一個(gè)分配對象的位置,當有新的對象要分配時(shí),如果檢查剩余空間容納該對象,那么只需要一次移動(dòng)指針的操作完成內存分配。
對于多線(xiàn)程應用,分配操作需要保證線(xiàn)程安全。如果使用全局鎖來(lái)保證線(xiàn)程安全的內存分配,就會(huì )成為性能瓶頸。所以Hotspot采用了thread-local allocation cache技術(shù)(即Thread-Local Allocation Buffers,簡(jiǎn)稱(chēng)TLABs)。每個(gè)線(xiàn)程都會(huì )有自己的TLAB,就是Eden區的一個(gè)小空間。因為每個(gè) TLAB 只對一個(gè)線(xiàn)程可見(jiàn),分配操作可以使用 bump-the-pointer 技術(shù)快速完成,無(wú)需使用任何鎖定機制:只有當一個(gè)線(xiàn)程填滿(mǎn)一個(gè) TLAB 并需要獲取一個(gè)新的時(shí),同步是必須的. 在虛擬機開(kāi)啟了UseTLAB選項的前提下,在分配新的對象空間時(shí),會(huì )先嘗試在TLAB空間中分配對象空間。如果空間分配請求失敗,
4.4. 堆棧分配和逃逸分析
棧上分配的基本思想是這樣的:分析局部變量的范圍僅限于方法內部。然后 JVM 直接在棧幀中分配對象空間,避免在堆中分配。這個(gè)分析過(guò)程稱(chēng)為逃逸分析,在棧幀中分配對象的方法稱(chēng)為棧上分配。這樣做的目的是減少新生代的集合數量,間接提高JVM的性能。
4.5. 垃圾采集
器的設計演變 5. 垃圾采集
器介紹 5.1.串行采集
器
串行采集
器是一個(gè)單線(xiàn)程采集
器。它的“單線(xiàn)程”意義不僅僅意味著(zhù)它只會(huì )使用一個(gè)CPU或一個(gè)采集
線(xiàn)程來(lái)完成垃圾采集
,更重要的是,當它采集
垃圾時(shí),必須掛起所有其他工作線(xiàn)程,直到它完成采集
。
與其他采集
器相比,它也有優(yōu)勢:簡(jiǎn)單高效(相對于其他采集
器的單線(xiàn)程),對于僅限于單CPU的環(huán)境,Serial采集
器沒(méi)有線(xiàn)程交互開(kāi)銷(xiāo),自然而然會(huì )專(zhuān)注于垃圾采集
Get單線(xiàn)程采集
效率最高。在用戶(hù)的桌面應用場(chǎng)景中,分配給虛擬機管理的內存一般都不會(huì )很大,采集
新生代的幾十兆甚至一兩百兆(僅新生代使用的內存,桌面應用基本上做不管它有多大),停頓時(shí)間可以控制在幾十毫秒以?xún)?,最多一百毫秒。只要不是?jīng)常發(fā)生,這種停頓是可以接受的。所以,
串口.png
5.2、ParNew采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾回收外,其行為還包括Serial采集
器可用的所有控制參數(例如:-XX:SurvivorRatio、-XX:PretenureSizeThreshold、-XX:HandlePromotionFailure等)、采集
算法、Stop The World、對象分配規則、回收策略等與Serial采集
器完全相同。事實(shí)上,這兩個(gè)采集
器共享相當多的代碼。
ParNew 采集
器除了多線(xiàn)程采集
器之外,與Serial 采集
器相比并沒(méi)有太多創(chuàng )新之處,但它是許多運行在Server 模式下的虛擬機的首選新生代采集
器。其中之一是與性能無(wú)關(guān)但重要的原因是,除了Serial采集
器之外,目前只有它與CMS采集
器一起使用。
ParNew 采集
器在單 CPU 環(huán)境下永遠不會(huì )比 Serial 采集
器有更好的效果。即使由于線(xiàn)程交互的開(kāi)銷(xiāo),采集
器在超線(xiàn)程技術(shù)實(shí)現的雙 CPU 環(huán)境中也不能 100% 有效。保證覆蓋串行采集
器。當然,隨著(zhù)可以使用的CPU數量的增加,對于GC時(shí)有效利用系統資源還是很有好處的。
ParNew.png
5.3、Parallel Scavenge采集
器
Parallel scavenge collector是新一代的使用復制算法的采集
器,是一種并行的多線(xiàn)程采集
器。Parallel scavenge 采集
器的特點(diǎn)是它的側重點(diǎn)不同于其他采集
器。Parallel scavenge collector的目標是達到一個(gè)可控的吞吐量(Throughput)。所謂吞吐量就是運行用戶(hù)代碼的CPU時(shí)間占總CPU時(shí)間的比值,即吞吐量=運行用戶(hù)代碼時(shí)間/(運行用戶(hù)代碼時(shí)間+垃圾回收時(shí)間),虛擬機已經(jīng)運行了一共100分鐘,其中垃圾回收用了1分鐘,也就是99%的吞吐量。
暫停時(shí)間越短,越適合需要與用戶(hù)交互的程序。良好的響應速度可以提升用戶(hù)體驗,而高吞吐量可以高效利用CPU時(shí)間,盡快完成程序的計算任務(wù)。主要適用于后臺計算,而不是需要過(guò)多交互的Tasks。Parallel Scavenge采集
器提供了兩個(gè)參數來(lái)精確控制吞吐量,分別是控制最大垃圾采集
暫停時(shí)間的-XX:MaxGCPauseMillis參數和直接設置吞吐量大小的-XX:GCTimeRatio參數。
MaxGCPauseMillis參數允許的值為大于0的毫秒數,采集
器會(huì )盡量保證內存回收花費的時(shí)間不超過(guò)設定值。但是不要以為這個(gè)參數的值設置的小一點(diǎn),系統的垃圾回收速度就會(huì )快一些。GC暫停時(shí)間的縮短是以吞吐量和新生代空間為代價(jià)的;更小,采集
新生代的300MB肯定比采集
500MB快,這直接導致垃圾采集
更頻繁。以前是10秒采集一次,停頓100毫秒,現在是5秒采集一次,停頓70毫秒。毫秒,停頓時(shí)間確實(shí)下降了,但是吞吐量也下降了。
GCTimeRatio參數的值應該是一個(gè)大于0小于100的整數,即垃圾回收時(shí)間占總時(shí)間的比例,相當于吞吐量的倒數。如果這個(gè)參數設置為19,最大允許的GC時(shí)間會(huì )占總時(shí)間的5%(即 1 / ( 1 + 19 ) ),默認為99,也就是允許最多占1%(即1 / ( 1 + 99 ) ) 垃圾采集
時(shí)間。
由于與吞吐量的密切關(guān)系,Parallel scavenge 采集
器也常被稱(chēng)為“吞吐量?jì)?yōu)先”的采集
器。除了以上兩個(gè)參數,Parallel scavenge collector還有一個(gè)參數-xx:+UseAdaptiveSizePolicy值得關(guān)注。這是一個(gè)開(kāi)關(guān)參數。開(kāi)啟該參數后,無(wú)需手動(dòng)指定新生代的大?。?Xmn)、Eden占幸存者區域的比例(-xx:SurvivorRatio)、老年代對象的年齡( -xx : PretenureSizeThreshold )等詳細參數,虛擬機根據當前系統運行狀態(tài)采集
性能監控信息,動(dòng)態(tài)調整這些參數以提供最合適的停頓時(shí)間或最大吞吐量。
5.4、Serial老采集器
Serial old是老版本的Serial采集
器,也是單線(xiàn)程采集
器,使用“標記-排序”算法。這個(gè)采集
器的主要意義也是在客戶(hù)端模式下用于虛擬機。如果是server模式,主要有兩個(gè)用途:一是配合JDK 1.5及更早版本中的Parallel scavenge collector使用。,另一個(gè)用途是作為CMS采集
器的備份計劃,在并發(fā)采集
出現Concurrcnt Mode Failure時(shí)使用。這兩點(diǎn)將在后面的內容中詳細說(shuō)明。
SerialOld.png
5.5、并行舊采集
器
Parallel old 是 Parallel 清道夫采集
器的老一代版本,它使用多線(xiàn)程和“標記與排序”算法。如果新生代選擇Para??llel Scavenge采集
器,那么老年代就只能選擇Serial Old (Ps Markswccp)采集
器了。由于老年代Serial Old采集
器對服務(wù)器應用程序性能的“拖累”,使用Parallel Scavcnge采集
服務(wù)器可能無(wú)法最大化整體應用程序的吞吐量,因為單線(xiàn)程老年代采集
器不能充分利用服務(wù)器的多CPU處理能力。在老年代很大、硬件比較先進(jìn)的環(huán)境下,這種組合的吞吐量可能甚至沒(méi)有那么“強大” 作為 ParNew 和 CMS 的組合。直到Parallel Old采集
器的出現,“吞吐量?jì)?yōu)先”的采集
器終于有了更名副其實(shí)的應用組合。在注重吞吐量和對CPU資源敏感的場(chǎng)合,可以?xún)?yōu)先考慮Parallcl Scavcnge plus Parallel Old collector。

ParallelOld.png
5.6、CMS采集
器
CMS(Concurrent Mark sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。目前,很大一部分Java應用都集中在互聯(lián)網(wǎng)網(wǎng)站或B/S系統的服務(wù)器端。這類(lèi)應用特別注重服務(wù)的響應速度,希望系統停頓時(shí)間最短,給用戶(hù)帶來(lái)更好的體驗。CMS采集
器非常適合這類(lèi)應用的需求。
CMS采集
器基于“mark-clear”算法實(shí)現,整個(gè)過(guò)程分為四步:
由于整個(gè)過(guò)程中耗時(shí)最長(cháng)的采集
器線(xiàn)程可以和用戶(hù)線(xiàn)程一起工作,所以CMS采集
器的內存回收過(guò)程是和用戶(hù)線(xiàn)程并發(fā)執行的。
cms.png
CMS的缺點(diǎn)是:
5.7、G1采集
器
G1采集
器具有以下特點(diǎn):
G1中的堆內存布局:
G1將整個(gè)Java堆劃分為多個(gè)大小相等的獨立區域(Region)。雖然仍然保留了新生代和老年代的概念,但新生代和老年代不再是物理隔離的。它們都是區域的一部分(不需要連續)。
G1跟蹤每個(gè)Region的垃圾堆積值(回收獲得的空間大小和回收所需時(shí)間的經(jīng)驗值),并在后臺維護一個(gè)優(yōu)先級列表。每次根據允許的采集時(shí)間,優(yōu)先采集值最大的Region。(這就是 Garbage-First 名稱(chēng)的來(lái)源)。這種使用Region劃分內存空間和優(yōu)先區域回收的方式,保證了G1采集
器在有限的時(shí)間內獲得盡可能高的采集
效率。
在Gl采集
器中,對于Region之間的對象引用以及其他采集
器中新生代和老年代之間的對象引用,虛擬機使用Remembered Set來(lái)避免全堆掃描。G1 中的每個(gè) Region 都有對應的 Remembered Set。當虛擬機發(fā)現程序正在寫(xiě)入引用類(lèi)型的數據時(shí),會(huì )生成一個(gè)Write Barrier暫時(shí)中斷寫(xiě)入操作,并檢查Reference所引用的對象是否在不同的Region中。其中(在generation的例子中,就是檢查old generation中的對象是否引用了new generation中的對象),如果是,則通過(guò)Card Table。將相關(guān)引用信息記錄到引用對象所屬Region的Remembered Set中。在執行內存恢復時(shí),
如果不算維護Remembered set的操作,GI采集
器的操作大致可以分為以下幾步:
最后,在篩選回收階段,首先,根據Sun公開(kāi)的信息,這個(gè)階段其實(shí)可以和用戶(hù)程序并發(fā)執行,但是因為只回收了一部分Region,所以時(shí)間是可控的user,而暫停用戶(hù)線(xiàn)程會(huì )大大提高采集效率。
5.8. 垃圾采集
器參數匯總參數說(shuō)明
-XX:+UseSerialGC
在年輕代和老年代使用串行采集
器
-XX:幸存者比率
設置eden區大小與survivor區大小的比例
-XX:PretenureSizeThreshold
設置大對象直接進(jìn)入老年代的閾值。當對象的大小超過(guò)這個(gè)值時(shí),會(huì )直接分配到老年代。
-XX:MaxTenuringThreshold
設置對象進(jìn)入老年代的最大年齡。每次Minor GC后,對象的年齡加1,任何超過(guò)這個(gè)年齡的對象都必須進(jìn)入老年代
參數說(shuō)明
-XX:+UseParNewGC
在年輕代使用并行采集
器
-XX:+UseParallelOldGC
老年代使用并行采集
器
-XX:并行GC線(xiàn)程
設置用于垃圾回收的線(xiàn)程數。通??梢缘扔贑PU個(gè)數,但在CPU個(gè)數較多的情況下,設置一個(gè)比較小的值比較合理。
-XX:MaxGCPauseMillis
設置最大垃圾采集
暫停時(shí)間。它的值是一個(gè)大于0的整數。采集
器在工作時(shí),會(huì )調整Java堆大小或其他參數,盡可能將停頓時(shí)間控制在MaxGCPauseMillis以?xún)取?br /> -XX:GCTimeRatio
設置吞吐量大小。它是一個(gè)從 0 到 100 的整數。假設 GCTimeRatio 的值為 n,系統將花費不超過(guò) 1/(1+n) 的時(shí)間進(jìn)行垃圾回收。
-XX:+UseAdaptiveSizePolicy
開(kāi)啟自適應 GC 策略。在這種模式下,新生代的大小、eden 和 survivor 的比例、晉升到老年代的對象的年齡等參數都會(huì )自動(dòng)調整,以在堆大小、吞吐量和停頓時(shí)間之間達到平衡。
參數說(shuō)明
-XX:+UseConcMarkSweepGC
新生代使用并行采集
器,老年代使用CMS+串行采集
器
-XX:并行CMS線(xiàn)程
設置 CMS 的線(xiàn)程數
-XX:CMSInitiatingOccupancyFraction
設置CMS采集
器在老年代空間使用后觸發(fā),默認68%
-XX:+UseCMSCompactAtFull采集
設置CMS采集
器完成垃圾回收后是否進(jìn)行內存整理
-XX:CMSFullGCsBeforeCompaction
設置好CMS垃圾回收次數后,進(jìn)行一次內存壓縮
-XX:+CMSClassUnloadingEnabled
允許回收類(lèi)元數據區域
-XX:CMSInitiatingPermOccupancyFraction
當永久區域占用達到這個(gè)百分比時(shí),開(kāi)始CMS回收(前提是-XX:+CMSClassUnloadingEnabled被激活)
-XX:UseCMSInitiatingOccupancyOnlyn
表示只有達到閾值才會(huì )執行CMS回收
-XX:+CMSIncrementalMode
使用增量模式更適合單CPU。增量模式在 JDK8 中被標記為過(guò)時(shí),并將在 JDK 9 中完全刪除。
參數說(shuō)明
-XX:+使用G1GC
使用 G1 采集
器
-XX:MaxGCPauseMillis
設置最大垃圾回收暫停時(shí)間
-XX:GCPauseIntervalMillis
設置暫停間隔
參數說(shuō)明
-XX:+使用TLAB
啟用 TLAB 分配
-XX:+PrintTLAB
打印TLAB相關(guān)分配信息
-XX:TLABSize
設置 TLAB 大小
自動(dòng)調整 TLAB 大小
參數說(shuō)明
-XX:+DisableExplicitGC
禁用顯式 GC
-XX:+ExplicitGCInvokesConcurrent
使用并發(fā)處理顯式 GC
5.9 垃圾采集
器比較
比較.png

采集
器算法并發(fā)并行 STW 適用生成
連續劇
復制
不
不
是的
新一代
標準桿新
復制
是的
是的
不
新一代
并行清除
復制
是的
是的
不
新一代
序列號舊
標記組織
不
不
是的
老一輩
并行老
標記組織
是的
是的
不
老一輩
內容管理系統
清除標記
是的
是的
是的
老一輩
G1
世代采集
是的
是的
不
舊時(shí)代,新一代
Collector適用場(chǎng)景優(yōu)缺點(diǎn)
連續劇
單CPU,客戶(hù)端模式
簡(jiǎn)單高效,無(wú)線(xiàn)程切換開(kāi)銷(xiāo),專(zhuān)注于GC
STW
標準桿新
多CPU,服務(wù)器模式
并行并發(fā) GC
STW
并行清除
吞吐量?jì)?yōu)先級,客戶(hù)端或服務(wù)器模式
吞吐量?jì)?yōu)先級,設置吞吐量以適應不同的場(chǎng)景
序列號舊
單CPU,客戶(hù)端模式
簡(jiǎn)單高效,無(wú)線(xiàn)程切換開(kāi)銷(xiāo),專(zhuān)注于GC
STW
并行老
吞吐量?jì)?yōu)先級,客戶(hù)端或服務(wù)器模式
吞吐量?jì)?yōu)先級,設置吞吐量以適應不同的場(chǎng)景
內容管理系統
互聯(lián)網(wǎng); B/S系統服務(wù)
并發(fā)采集
,低暫停
對CPU資源敏感,無(wú)法處理浮動(dòng)垃圾,內存碎片
G1
對于服務(wù)器端應用程序
并發(fā)并行、分代采集
、可測停頓、空間整合
6. 內存分配與回收策略 6.1. 對象首先在伊甸園分配
大多數時(shí)候對象是在伊甸園中分配的。當Eden中沒(méi)有足夠的空間分配時(shí),JVM會(huì )發(fā)起一次Minor GC。,
次要垃圾回收(Minor GC):指發(fā)生在新生代的垃圾回收。由于大多數JAVA對象都有注冊和死亡的特點(diǎn),所以Minor GC非常頻繁,回收速度普遍較快。
老年代GC(Major GC/Full GC):指發(fā)生在老年代的GC。Major GC 的發(fā)生,通常伴隨著(zhù)至少一次 Minor GC。Major GC 一般比 Minor GC 快 10 倍。
6.2. 大對象直接進(jìn)入老年代
所謂大對象是指需要大量連續內存空間的java對象,比如很長(cháng)的字符串、數組等。大對象對于虛擬機的內存分配來(lái)說(shuō)是個(gè)壞消息(抱怨Java虛擬機,比遇到大對象更壞的消息是遇到一群“生死存亡”的“短命大對象”,寫(xiě)programs should be avoided),頻繁的大對象很可能導致垃圾回收在內存中還有大量空間獲取足夠的連續空間來(lái)“放置”它們時(shí)被提前觸發(fā)。虛擬機提供了一個(gè)-XX:PretenureSizeThreshold參數,讓大于這個(gè)設置值的對象直接在老年代分配。這樣做的目的是為了避免在Eden區和兩個(gè)Survivor區之間進(jìn)行大量的內存復制(回收新生代使用復制算法采集
內存)。PretenureSizeThreshold 參數僅對 Serial 和 ParNew 采集
器有效。
6.3. 長(cháng)壽對象會(huì )進(jìn)入老年代
虛擬機為每個(gè)對象定義一個(gè)對象年齡(Age)計數器。如果對象出生在Eden,在第一個(gè)Minor GG后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并設置對象的age為1。每有一個(gè)對象“存活”一個(gè)Survivor區的Minor GC,其年齡會(huì )增加1年。當它的年齡增長(cháng)到一定程度(默認是15歲),就會(huì )被提升到老年代。將對象提升到 Old Age 的年齡閾值可以通過(guò)參數 -xx : MaxTenuringThreshold 設置。
6.4. 動(dòng)態(tài)對象的年齡確定
為了更好的適應不同程序的內存狀態(tài),虛擬機并不總是要求對象的年齡必須達到MaxTenuringThreshold才能提升到老年代。如果survivor空間中所有同age的對象size之和大于Survivor空間的一半,則age大于等于這個(gè)age的對象可以直接進(jìn)入老年代,無(wú)需等待MaxTenuringThreshold中要求的age .
6.5. 空間分配保證
在Minor GC發(fā)生之前,虛擬機首先檢查老年代中的最大可用連續空間是否大于新生代中所有對象的總空間。如果這個(gè)條件為真,那么Minor GC可以保證它是安全的。如果不是,則虛擬機檢查 HandlePromotionFailure 設置值是否允許保證失敗。如果允許,它會(huì )繼續檢查老年代的最大可用連續空間是否大于提升到老年代的對象的平均大小。如果大于,它會(huì )嘗試進(jìn)行一次Minor GC,雖然這個(gè)Minor GC有風(fēng)險:如果小于,或者HandlePromotionFailure設置不允許風(fēng)險,那么此時(shí)也應該進(jìn)行一次Full GC。
解決方案:Meta宣布將通過(guò)保護Facebook的標識符來(lái)阻止采集行為
作為我們正在進(jìn)行的解決數據濫用問(wèn)題系列的一部分,Meta 最近分享了有關(guān)我們的外部數據濫用 (EDM) 團隊如何保護人們免受克隆網(wǎng)站侵害的最新消息。今天,官方博客詳細介紹了如何阻止在 Facebook 上采集
Facebook 標識符 (FBID)。
大多數公司在其網(wǎng)站的 URL 中使用唯一標識符。標識符是一種唯一引用人或內容的方式,例如帖子、圖像和視頻。在 Facebook 內部,這些標識符被稱(chēng)為 FBID,它們用于為人們加載內容。

采集
是指從網(wǎng)站或應用程序自動(dòng)采集
數據,可以是授權的也可以是未授權的。未經(jīng)授權的采集
通常涉及猜測標識符,或使用購買(mǎi)的標識符來(lái)采集
有關(guān)人員的數據。在某些情況下,收割者采集
標識符并碰撞和交叉過(guò)濾電話(huà)號碼或其他公開(kāi)可用的數據,以創(chuàng )建可重復使用的數據集,這些數據集有時(shí)會(huì )被出售以牟利。
圖為 URL 中帶有 PFBID 的 Facebook 帖子示例

考慮到這一點(diǎn),Meta 創(chuàng )建了假名化的 Facebook 標識符 (PFBID),它將時(shí)間戳和 FBID 結合起來(lái)生成一個(gè)唯一的時(shí)間旋轉標識符。隨著(zhù)訪(fǎng)問(wèn)原創(chuàng )
標識符的能力被逐步淘汰,這有助于防止未經(jīng)授權的數據抓取,使攻擊者更難猜測、連接和重新訪(fǎng)問(wèn)數據。
這些標識符并非旨在防止瀏覽器工具從 URL 中刪除跟蹤組件,該過(guò)程是為了更好地保護人們的隱私免受某些類(lèi)型的枚舉和延遲攻擊,同時(shí)保留持久鏈接的能力。
用戶(hù)可以在 Facebook 的“隱私問(wèn)題”頁(yè)面上閱讀有關(guān)隱私倡議的更多更新和見(jiàn)解:
解決方案:審查指南征求意見(jiàn) 針對含算法特征或商業(yè)規則和方法特征的發(fā)明專(zhuān)利申請審查
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 77 次瀏覽 ? 2022-12-01 03:29
關(guān)于公開(kāi)征求對專(zhuān)利審查指南第二部分第九章修正案草案(征求意見(jiàn)稿)征求意見(jiàn)的通知
?。?。
為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體需求,進(jìn)一步明確涉及人工智能、區塊鏈、業(yè)務(wù)規則和方法的新領(lǐng)域、新業(yè)態(tài)的專(zhuān)利審查規則, 國家知識產(chǎn)權局起草并形成了《專(zhuān)利審查指南第二編第九章修正案草案(征求意見(jiàn)稿)》(以下簡(jiǎn)稱(chēng)《征求意見(jiàn)稿》)。為征求社會(huì )各界意見(jiàn),現將草案及其起草說(shuō)明公布。有關(guān)單位和社會(huì )各界人士可在2019年12月11日前選擇下列方式之一,對《征求意見(jiàn)稿》的修改完善提出具體意見(jiàn):
1. 電子郵件: 2. 傳真: 3. 信件: 考試
北京市海淀區西土城路6號國家知識產(chǎn)權局條款法律司政策處 郵編100088(請在信封左下角注明“審查指南”) 附件: 1. 預告“專(zhuān)利審查指南第九章修正案第二部分(征求意見(jiàn)稿) 2.關(guān)于這些的注意事項
草案
對《專(zhuān)利審查指南》第二部分第九章的修正
?。ㄕ髑笠庖?jiàn)稿)。
6. 關(guān)于對含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請進(jìn)行審查的規定
專(zhuān)利申請
涉及人工智能、互聯(lián)網(wǎng)+、大數據、區塊鏈等的發(fā)明,一般收錄
算法或商業(yè)規則方法等智力活動(dòng)的規則和方法特征,本節旨在根據《專(zhuān)利法》及其實(shí)施細則對此類(lèi)申請進(jìn)行審查的特殊性作出規定。
6.1 審查基準
審查應針對要求保護的解決方案進(jìn)行,即受權利要求限制的解決方案。在審查中,不應簡(jiǎn)單地將技術(shù)特征與算法特征或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記載的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和取得的技術(shù)效果。6.1.1
根據專(zhuān)利法第25.1.2條進(jìn)行審查
權利要求涉及抽象算法或者簡(jiǎn)單的商業(yè)規則和方法,且不收錄
任何技術(shù)特征的,屬于專(zhuān)利法第二十五條第一款第2款規定的智力活動(dòng)規則和方法,不得申請專(zhuān)利。例如,基于抽象算法建立數學(xué)模型且不收錄
任何技術(shù)特征的方法,屬于專(zhuān)利法第25.1.2條規定的不應授予專(zhuān)利權的情形。再如基于用戶(hù)消費額度的返利方式,該方法所收錄
的特征均為與返利規則相關(guān)的商業(yè)規則和方法特征,不收錄
任何技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項第2項規定的不應授予專(zhuān)利權的情形。
如果索賠除
算法特征或者商業(yè)規則和方法外,還含有技術(shù)特征,權利要求整體上不是智力活動(dòng)的規則或者方法的,依照專(zhuān)利法第二十五條第一款第2項的規定,不排除取得專(zhuān)利權的可能性。
6.1.2 根據專(zhuān)利法第2.2條進(jìn)行審查如果權利要求的整體不屬于專(zhuān)利法第25條第1款第2項第
2項排除專(zhuān)利權取得的情形,則有必要審查其是否屬于專(zhuān)利法第2條第2款所指的技術(shù)方案。
在檢查收錄
算法特征或業(yè)務(wù)規則和方法特征的權利要求是否為技術(shù)解決方案時(shí),有必要將權利要求中描述的所有特征作為一個(gè)整體來(lái)考慮。如果權利要求記載了利用自然規律的技術(shù)手段用于要解決的技術(shù)問(wèn)題,并由此獲得符合自然規律的技術(shù)效果的,則權利要求的解決方案屬于專(zhuān)利法第二條第二款所述的技術(shù)方案。例如,如果權利要求中算法涉及的步驟與要解決的技術(shù)問(wèn)題密切相關(guān),例如算法處理的數據是技術(shù)領(lǐng)域具有確切技術(shù)意義的數據,并且算法的執行可以直接反映利用自然規律解決技術(shù)問(wèn)題的過(guò)程, 并且取得了技術(shù)效果,那么通常權利要求的解決方案屬于專(zhuān)利法第2條第2款所述的技術(shù)方案。
6.1.3 新穎性和創(chuàng )造性的審查在審查含有算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請的新穎性時(shí),應當考慮權利要求中記錄的所有特征,包括技術(shù)特征和算法特征或者商業(yè)規則和方法特征。審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并在技術(shù)特征方面相互作用的算法特征或者商業(yè)規則和方法特征作為一個(gè)整體來(lái)考慮?!肮δ苌舷嗷ブС?、相互作用”是指算法特征或業(yè)務(wù)規則、方法特征與技術(shù)特征緊密結合,共同構成解決技術(shù)問(wèn)題的技術(shù)手段,并能獲得相應的技術(shù)效果。
例如,如果權利要求中的算法應用于特定的技術(shù)領(lǐng)域,可以解決特定的技術(shù)問(wèn)題,那么可以認為算法特征和技術(shù)特征是
功能上相互支持,具有交互關(guān)系,算法特征成為所采取技術(shù)手段的組成部分,在進(jìn)行創(chuàng )造性審查時(shí)應考慮算法特征對方案的貢獻。
再如,如果權利要求中商業(yè)規則和方法特征的實(shí)施需要對技術(shù)手段進(jìn)行調整或者改進(jìn),可以認為業(yè)務(wù)規則和方法特征和技術(shù)特征在
功能上是相互支持和相互作用的,在進(jìn)行創(chuàng )造性審查時(shí)應考慮所述業(yè)務(wù)規則和方法特征對程序的貢獻。
6.2 復習示例
下面,根據上述審查標準給出收錄
算法特征或業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請的審查示例。
?。ㄒ唬┖袑?zhuān)利法第二十五條第一款第2項范圍內的算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不屬于專(zhuān)利保護標的。
[例1]。
一種構建數學(xué)模型的方法
應用程序內容概述
發(fā)明專(zhuān)利申請的解決方案是一種構建數學(xué)模型的方法,該方法通過(guò)增加訓練樣本的數量來(lái)提高模型的準確性。建模方法還使用與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù)的訓練樣本作為第一分類(lèi)任務(wù)數學(xué)模型的訓練樣本,從而增加訓練樣本的數量,并利用訓練樣本的特征值,提取特征值、標簽值等來(lái)訓練相關(guān)的數學(xué)模型, 最后得到第一個(gè)分類(lèi)任務(wù)的數學(xué)模型,由于訓練樣本數量少,過(guò)度擬合,建模精度差。
申請的權利要求
一種構建數學(xué)模型的方法,其特征在于它包括以下步驟:
根據第一個(gè)分類(lèi)任務(wù)的訓練樣本中的特征值和特征
在訓練樣本中至少一秒的分類(lèi)任務(wù)中,對初始特征提取模型進(jìn)行訓練,得到目標特征提取模型。 其中,所述第二分類(lèi)任務(wù)為與所述第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù);
根據目標特征提取模型,特征值
分別處理第一分類(lèi)任務(wù)的每個(gè)訓練樣本,得到每個(gè)訓練樣本對應的提取特征值;
將提取的每個(gè)訓練樣本對應的特征值和標簽值組成,提取訓練樣本,訓練初始分類(lèi)模型得到目標分類(lèi)模型;
目標分類(lèi)模型
目標特征提取模型由第一分類(lèi)任務(wù)的數學(xué)模型組成。
分析和結論
該解決方案不涉及任何特定的應用領(lǐng)域,其中訓練樣本的特征值、提取的特征值、標簽值、目標分類(lèi)模型和目標特征提取模型是抽象的一般數據,利用訓練樣本的相關(guān)數據訓練數學(xué)模型的處理過(guò)程是一系列抽象的數學(xué)方法步驟, 最終結果也是一個(gè)抽象的通用分類(lèi)數學(xué)模型。該方案是一種抽象模型建立方法,其處理對象、過(guò)程和結果不涉及與具體應用領(lǐng)域的結合,屬于抽象數學(xué)方法的優(yōu)化,整個(gè)方案不收錄
任何技術(shù)特征,本發(fā)明專(zhuān)利申請的解決屬于第25條規定的智力活動(dòng)規則和方法, 專(zhuān)利法第1條第(2)項,不屬于專(zhuān)利保護的客體。
?。ǘ┖兴惴ㄌ卣骰蛘呱虡I(yè)規則、方法特征的發(fā)明專(zhuān)利申請,利用技術(shù)手段解決技術(shù)問(wèn)題,取得技術(shù)效果的,屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,屬于專(zhuān)利保護客體。
[例2]。
一種卷積神經(jīng)網(wǎng)絡(luò )模型的訓練方法
應用程序內容概述
本發(fā)明專(zhuān)利申請在各級卷積層上對訓練圖像進(jìn)行卷積操作和最大池化操作,并對最大池化操作后獲得的特征圖像進(jìn)一步執行水平池化操作,使得經(jīng)過(guò)訓練的CNN模型在識別圖像類(lèi)別時(shí)可以識別任何大小的圖像。
申請的權利要求
一種用于卷積神經(jīng)網(wǎng)絡(luò )CNN模型的訓練方法,其中該方法包括:
獲取待訓練的CNN模型,初始模型參數包括各卷積層的初始卷積核、各層級卷積層的初始偏置矩陣、全連接層的初始
權重矩陣和全連層的初始偏置向量;
獲取多個(gè)訓練圖像;在各級卷積層
上,各級卷積層上的初始卷積核和初始偏置矩陣分別對每個(gè)訓練圖像
進(jìn)行卷積運算和最大池化運算,得到每個(gè)訓練圖像在卷積層各層次上的第一個(gè)特征圖像;
每個(gè)訓練圖像的第一個(gè)特征圖像水平
池化至少一個(gè)卷積層,獲得每個(gè)卷積層上每個(gè)訓練圖像的第二特征圖像。
確定功能
根據每個(gè)訓練圖像在卷積層上各水平的第二特征圖像的向量;
根據初始權重矩陣和初始偏差向量對每個(gè)特征向量進(jìn)行處理,得到每個(gè)訓練圖像的類(lèi)概率向量;根據每個(gè)訓練圖像的
類(lèi)概率向量和每個(gè)訓練圖像的初始類(lèi)別,計算類(lèi)誤差;
基于分類(lèi)誤差,調整待訓練CNN模型的模型參數;
基于調整后的模型參數和多個(gè)訓練圖像,繼續模型參數調整過(guò)程,直到迭代次數達到預設次數;
模型參數
當迭代次數達到預設次數時(shí)獲得的作為訓練好的CNN模型的模型參數。
分析和結論
該解決方案是卷積神經(jīng)網(wǎng)絡(luò )CNN模型的一種訓練方法,闡明了模型訓練方法每一步處理的數據都是圖像數據以及每一步如何處理圖像數據,說(shuō)明神經(jīng)網(wǎng)絡(luò )訓練算法與圖像信息處理密切相關(guān)。該方案解決了如何克服CNN模型只能識別固定尺寸圖像的技術(shù)難題,該方案采用不同卷積層對圖像進(jìn)行不同處理和訓練的手段,利用遵循自然規律的技術(shù)手段,獲得訓練好的CNN模型可以識別任意大小圖像的技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體。
[例3]。
共享單車(chē)的使用方式
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種共享單車(chē)的使用方法,通過(guò)獲取用戶(hù)終端設備的位置信息和一定距離內的共享單車(chē)狀態(tài)信息,使用戶(hù)根據共享單車(chē)的狀態(tài)信息準確找到可以騎行的共享單車(chē), 通過(guò)提示騎行和引導用戶(hù)停車(chē),方便了租賃自行車(chē)的使用和管理,節省了用戶(hù)的時(shí)間,改善了用戶(hù)體驗。
申請的權利要求
共享單車(chē)的使用方法,包括以下步驟:
步驟1:用戶(hù)通過(guò)終端設備向服務(wù)器發(fā)送使用共享單車(chē)的請求;
步驟二,服務(wù)器獲取用戶(hù)的第一位置信息,查找共享單車(chē)在一定距離范圍內對應的第一位置信息,以及這些共享單車(chē)的狀態(tài)信息,并發(fā)送第二位置信息和
共享單車(chē)的狀態(tài)信息發(fā)送給終端設備,其中,第一位置信息和第二位置信息通過(guò)GPS信號獲取;
第三步:根據終端設備上顯示的共享單車(chē)位置信息,用戶(hù)找到可以騎行的目標共享單車(chē);
第四步:用戶(hù)通過(guò)終端設備掃描目標共享單車(chē)車(chē)身上的二維碼,通過(guò)服務(wù)器認證,獲得目標共享單車(chē)使用權限;
第五步:服務(wù)器根據乘車(chē)情況向用戶(hù)推送停車(chē)提示,如果用戶(hù)將車(chē)停在指定區域,則以?xún)?yōu)惠資費計費,否則按標準資費計費;
步驟6,用戶(hù)
根據提示選擇,騎行結束后,用戶(hù)執行共享單車(chē)的鎖定動(dòng)作,共享單車(chē)檢測鎖定狀態(tài)并向服務(wù)器發(fā)送騎行完成的信號。
分析和結論該方案涉及共享單車(chē)的使用方法,解決共享單車(chē)
位置匹配、獲得共享單車(chē)使用權的技術(shù)問(wèn)題,程序實(shí)現對共享單車(chē)的控制和引導。用戶(hù)使用共享單車(chē)
的行為通過(guò)在終端設備和服務(wù)器上執行計算機程序,體現對位置信息的控制、認證等數據的采集
和計算,利用遵循自然規律的技術(shù)手段實(shí)現共享單車(chē)位置的匹配,獲得共享單車(chē)使用權等技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體。
[例4]。
一種區塊鏈節點(diǎn)間通信方法及裝置
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種區塊鏈節點(diǎn)通信方法及裝置,區塊鏈中的業(yè)務(wù)節點(diǎn)可以根據通信請求中攜帶的CA證書(shū)和
在建立通信連接之前預先配置CA信任列表,從而降低業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,提高存儲在區塊鏈中的數據的安全性。
申請的權利要求
1.一種區塊鏈節點(diǎn)通信方法,即區塊鏈區塊鏈網(wǎng)絡(luò )中的節點(diǎn)包括業(yè)務(wù)節點(diǎn),
其中業(yè)務(wù)節點(diǎn)存儲由CA證書(shū)頒發(fā)機構中心發(fā)送的證書(shū),并預配置有CA信任列表,該方法包括:
第一個(gè)區塊鏈節點(diǎn)收到通信請求由第二區塊鏈節點(diǎn)
發(fā)送,其中通信請求攜帶第二區塊鏈節點(diǎn)的第二證書(shū);
確定與第二個(gè)證書(shū)對應的 CA ID;
確定第二個(gè)證書(shū)對應的 CA ID 是否在 CA 信任列表中;
如果是這樣,則與第二個(gè)區塊鏈節點(diǎn)建立通信連接;
否則,不會(huì )與第二個(gè)區塊鏈節點(diǎn)建立通信連接。
分析和結論
問(wèn)題在于
本申請要解決的是如何防止區塊鏈業(yè)務(wù)節點(diǎn)泄露聯(lián)盟鏈網(wǎng)絡(luò )中的用戶(hù)隱私數據,這是提高區塊鏈數據安全性的技術(shù)難題;通過(guò)在通信請求中攜帶CA證書(shū),并預先配置CA信任列表來(lái)確定是否建立連接,業(yè)務(wù)節點(diǎn)僅限于可以建立連接的對象,從而提高區塊鏈中數據的安全性。因此,本申請中的區塊鏈節點(diǎn)間通信方式實(shí)現了業(yè)務(wù)節點(diǎn)之間的安全通信,降低了業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,屬于專(zhuān)利法保護的對象。
?。ㄈ┖兴惴ㄌ卣骰蛘呱虡I(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不解決技術(shù)問(wèn)題,或者不使用技術(shù)手段,或者未取得技術(shù)效果,不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,因此不屬于專(zhuān)利保護客體。
[例5]。
一種消費回扣的方法
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種消費返利的方法,通過(guò)計算機執行設定的返利規則,向消費的用戶(hù)發(fā)放現金券,從而提高用戶(hù)的消費意愿,為商家獲取更多利潤。
申請的權利要求
一種支出回扣方法,其特點(diǎn)是以下步驟:
當用戶(hù)在商家購物時(shí),商家會(huì )根據花費的金額返還一定數量的現金券,具體
商家使用計算機計算用戶(hù)的消費金額,并且將用戶(hù)的消費金額R劃分為M區間,其中M為整數,范圍1到范圍M的值由小到大,
退回代金券的金額F也劃分為M值,M值也從小到大排列;
根據計算機的計算值判斷,當用戶(hù)當前消費金額在范圍1時(shí),返利金額為第一值,當用戶(hù)當前消費金額在范圍2范圍內時(shí),返利金額為:
第二個(gè)值,依此類(lèi)推,將相應范圍的返利金額返回給用戶(hù)。
分析和結論解決方案涉及計算機執行的消費返利
方法,它處理用戶(hù)的消費數據,解決如何促進(jìn)用戶(hù)消費的問(wèn)題,不構成技術(shù)問(wèn)題,所使用的手段是通過(guò)計算機實(shí)現人為設定的返利規則,但計算機的限制只是
按照規定的規則根據用戶(hù)的消費量來(lái)確定返利金額,不受自然規律的約束,所以不使用任何技術(shù)手段,程序的效果只是促進(jìn)用戶(hù)消費,而不是符合自然規律的技術(shù)效果。因此,發(fā)明專(zhuān)利申請不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,不屬于專(zhuān)利保護的客體。
[例6]。
一種基于電力消費特征的經(jīng)濟景氣指數分析方法
應用程序內容概述
發(fā)明專(zhuān)利申請通過(guò)計算各種經(jīng)濟指標和電力消耗指標來(lái)評估待測試地區的經(jīng)濟景氣指數。
申請的權利要求
一種基于區域電力消費特征的經(jīng)濟景氣指數分析方法,其特征在于包括以下步驟:
根據待測地區的經(jīng)濟數據和用電量數據,選擇經(jīng)濟初步指標
待測區域的景氣指數,其中初步指標包括經(jīng)濟指標和用電量指標;
通過(guò)聚類(lèi)分析方法和
時(shí)差相關(guān)分析方法,確定待檢測區域的經(jīng)濟景氣指數體系,包括領(lǐng)先指標、一致指標和滯后指標;
根據待測地區的經(jīng)濟景氣指數體系
,采用綜合指數計算方法得到待測地區的經(jīng)濟景氣指數。
分析和結論
解決方案是一種經(jīng)濟景氣指數分析計算方法,其處理對象是各種經(jīng)濟指標、電力指標、
問(wèn)題解決的是判斷經(jīng)濟趨勢,不構成技術(shù)問(wèn)題,所使用的手段都是根據經(jīng)濟數據和用電量數據來(lái)分析經(jīng)濟形勢,只有按照經(jīng)濟規律進(jìn)行經(jīng)濟管理手段,不受自然規律的約束,所以使用技術(shù)手段,方案最終可以得到經(jīng)濟景氣指數來(lái)評價(jià)經(jīng)濟, 它不是符合自然規律的技術(shù)效果,因此解決方案不屬于專(zhuān)利法第2條第2款規定的技術(shù)解決方案,不屬于專(zhuān)利保護的客體。
?。?) 在進(jìn)行創(chuàng )造性審查時(shí),應考慮算法特征或商業(yè)規則和方法特征對解決的貢獻,這些特征在功能上相互支持并與技術(shù)特征相互作用。
[例7]。
一種基于多傳感器信息的人形機器人墜落狀態(tài)檢測方法
應用程序內容概述
現有的人形機器人行走時(shí)墜落狀態(tài)的判斷主要使用姿態(tài)信息或ZMP點(diǎn)位置信息,但這種判斷并不全面。發(fā)明專(zhuān)利申請提出了一種基于多個(gè)傳感器的人形機器人墜落狀態(tài)檢測方法,該方法實(shí)時(shí)集成了機器人步態(tài)階段信息、姿態(tài)信息和ZMP點(diǎn)位置信息,并利用模糊決策系統確定機器人當前的穩定性和可控性,從而為機器人的下一步動(dòng)作提供參考。
申請的權利要求
一種基于多傳感器信息的人形機器人跌落狀態(tài)檢測方法,其特點(diǎn)是以下步驟:
?。?)融合姿態(tài)傳感器信息、零扭矩點(diǎn)ZMP傳感器信息和機器人行走階段信息,建立分層傳感器信息融合模型,實(shí)現人形機器人的穩定性確定;
?。?)前后模糊決策系統及左右
分別采用模糊決策系統確定機器人在前后方向和左右方向的穩定性,具體步驟如下:
?。?)根據機器人支撐腳與地面的接觸和離線(xiàn)步態(tài)規劃確定機器人行走階段;
?。?)采用模糊推理算法對ZMP點(diǎn)的位置信息進(jìn)行模糊處理;
?。?)采用模糊推理算法對機器人的俯仰角或滾動(dòng)角進(jìn)行模糊化;
?。?)確定輸出隸屬函數;(5)按步驟(
1)~步驟(4)確定模糊推理規則;
?。?)去模糊。
分析和結論
對比文件1公開(kāi)了基于人形機器人傳感器信息的步態(tài)規劃和反饋控制,并根據
相關(guān)融合信息,包括根據多個(gè)傳感器信息對人形機器人的穩定狀態(tài)評估,即對比文件1公開(kāi)了本發(fā)明專(zhuān)利申請解決方案中步驟(1)中的步驟(1),與比較文件1中采用步驟(2)特定算法的模糊決策方法進(jìn)行了區分。
基于應用文檔,該方案有效提高了機器人的穩態(tài)及其可能下落方向的可靠性和準確性。以姿態(tài)信息、ZMP點(diǎn)位置信息和行走階段信息為輸入參數,通過(guò)模糊算法輸出確定人形機器人穩定狀態(tài)的信息,為進(jìn)一步準確的姿態(tài)調整指令提供了依據。因此,上述算法特征和技術(shù)特征在功能上相互支持并具有交互關(guān)系,并且相對于比較文件1,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何判斷機器人的穩定狀態(tài)并準確預測其可能的下降方向。上述模糊決策的實(shí)現算法及其對機器人穩態(tài)應用的判斷在其他比較文獻中未公開(kāi),也不是本領(lǐng)域的常識,現有技術(shù)整體上不存在使本領(lǐng)域技術(shù)人員改進(jìn)比較文件1以獲得要求保護的發(fā)明的靈感, 并且要求保護的發(fā)明相對于最接近的現有技術(shù)是非顯而易見(jiàn)的和創(chuàng )造性的。
[例8]。
基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統
應用程序內容概述現有的多移動(dòng)機器人運動(dòng)規劃
控制結構通常采用集中規劃方法,將多機器人系統視為具有多個(gè)自由度的復雜機器人,系統中的規劃器統一完成所有機器人的運動(dòng)規劃,存在計算時(shí)間長(cháng)、實(shí)用性差的缺點(diǎn)。發(fā)明專(zhuān)利申請提供了一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統。機器人的每條路徑都由一條染色體表示,以最短距離、平滑度和安全距離作為設計路徑適應度函數的三個(gè)目標,利用Messy遺傳算法優(yōu)化每個(gè)機器人的最優(yōu)路徑。
申請的權利要求
基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統,其特點(diǎn)是:(
1)機器人的路徑由染色體表示,染色體以節點(diǎn)鏈表的形式表示,即[(x,y),time],(x,y,time
∈R),(x,y)表示機器人的位置坐標,時(shí)間表示從前一個(gè)節點(diǎn)移動(dòng)該節點(diǎn)所需的時(shí)間消耗,起始節點(diǎn)的時(shí)間等于0,除初始節點(diǎn)的初始位置和結束節點(diǎn)的目標位置外,每個(gè)機器人個(gè)體的染色體是固定的。中間節點(diǎn)和節點(diǎn)的數量都是可變的;(
2)每個(gè)機器人機器人(i)的路徑路徑(j)的適應度函數表示為φ(pi,j):|| pi,j|| =Distance(pi,j)+ws×smooth(pi,j)
+wt×Time(pi,j)
這些 pi,j|| ||是距離、平滑度和時(shí)間消耗的線(xiàn)性組合,ws 是平滑度加權因子,wt 是時(shí)間加權因子;距離(pi,j)表示路徑長(cháng)度,smooth(pi,j)表示路徑的平滑度,Time(pi,j)表示路徑pi,j的時(shí)間消耗;每個(gè)機器人使用所描述的適應度函數,并通過(guò)Messy遺傳算法優(yōu)化最佳路徑。
分析和結論
對比文件1公開(kāi)了一種基于協(xié)同進(jìn)化的多機器人路徑規劃方法,其中使用自適應混沌算法獲得最優(yōu)路徑。發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于通過(guò)Messy遺傳算法實(shí)現多機器人路徑規劃。
在該解決方案中,利用適應度函數約束Messy遺傳算法,通過(guò)遺傳算法優(yōu)化后得到機器人的前向路徑,算法特征和
該解決方案的技術(shù)特點(diǎn)相互支持,在功能上相互交互,從而實(shí)現機器人前進(jìn)路徑的優(yōu)化。與對比文獻1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何使機器人基于特定算法在最優(yōu)路徑上前進(jìn)。對比文件2揭示了包括混沌算法在內的多種遺傳算法可用于路徑優(yōu)化,使用Messy遺傳算法可以解決其他算法的缺點(diǎn),獲得更合理的優(yōu)化結果?;趯Ρ任募?給出的啟示,本領(lǐng)域技術(shù)人員有動(dòng)機將比較文件1和比較文件2結合起來(lái),得到發(fā)明專(zhuān)利申請的技術(shù)方案。因此,要求保護的發(fā)明相對于比較文件1和比較2的組合是顯而易見(jiàn)的,并且不具有創(chuàng )造性。
[例9]。
一種物流配送方法
應用程序內容概述
在貨物配送過(guò)程中,
如何有效提高商品配送效率,降低配送成本,是發(fā)明專(zhuān)利申請所要解決的問(wèn)題。物流人員到達配送地點(diǎn)后,可以通知特定配送區域內的多個(gè)訂貨用戶(hù)以服務(wù)器推送消息的形式同時(shí)提貨到訂貨用戶(hù)終端,從而提高配送效率,降低配送成本。
申請的權利要求
一種通過(guò)分批通知用戶(hù)取貨來(lái)提高物流配送效率的物流配送方法,該方法包括:
當調度員
需要通知用戶(hù)取貨的,調度員通過(guò)手持物流終端向服務(wù)器發(fā)送貨物已到達的通知;
服務(wù)器分批通知調度員交貨范圍內的所有訂單;
收到通知的訂購用戶(hù)根據通知信息完成取件;
其中,用于批量通知的服務(wù)器的具體實(shí)現方式是,服務(wù)器根據配送操作員ID確定配送距離范圍內的所有目標訂單信息,并以物流終端的當前位置、物流終端的當前位置和到達時(shí)攜帶的相應配送范圍為中心。
由物流終端發(fā)送通知,然后將通知信息推送到訂單用戶(hù)終端中所有目標訂單信息中對應的訂單用戶(hù)賬戶(hù)。
分析和結論
比對文件1公開(kāi)了一種物流配送方法,其中物流終端掃描配送單上的條形碼,并將掃描到的信息發(fā)送到服務(wù)器,通知服務(wù)器貨物已經(jīng)到達;服務(wù)器獲取掃描信息中的排序用戶(hù)信息,并向排序用戶(hù)發(fā)送通知;收到通知的訂購用戶(hù)根據通知信息完成取件。
兩者之間的區別
本發(fā)明專(zhuān)利申請與對比文件1的解決方案是,批量通知用戶(hù)訂單的到來(lái),為了實(shí)現批量通知,方案中服務(wù)器、物流終端和用戶(hù)終端之間的物理架構和數據通信都進(jìn)行了相應的調整,因此取件通知規則和具體的批量通知實(shí)現方法在功能上相互支持,具有交互關(guān)系。與比較文檔1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是如何提高訂單到達通知的效率,從而提高貨物配送的效率。從用戶(hù)的角度來(lái)看,用戶(hù)可以更快地獲得有關(guān)訂單到達的信息,這也改善了用戶(hù)體驗。由于現有技術(shù)不具備對上述比較文獻1的技術(shù)啟發(fā)進(jìn)行改進(jìn),以獲得用于發(fā)明專(zhuān)利申請的解決方案,該解決方案具有創(chuàng )造性。
[例10]。
動(dòng)態(tài)視角演變的視覺(jué)方法
應用程序內容概述近年來(lái),人們
越來(lái)越多地通過(guò)社交平臺表達自己的觀(guān)點(diǎn)和想法,人們在社交平臺上發(fā)布的情感內容反映了人們觀(guān)點(diǎn)的演變,可以看到事件的發(fā)展、變化和趨勢。該發(fā)明專(zhuān)利申請通過(guò)自動(dòng)采集
人們在社交平臺上發(fā)布的信息并分析其中的情緒,通過(guò)計算機繪制情緒可視化地圖,幫助人們更好地了解不同時(shí)期的情緒強度和隨時(shí)間演變的趨勢。
申請的權利要求
一種可視化動(dòng)態(tài)視圖演變的方法,該方法包括:
步驟1)情感隸屬程度和情感分類(lèi)信息
在采集
的信息采集
中由計算設備確定,信息的情感隸屬程度表示信息屬于某種情感分類(lèi)的概率;
步驟2)情緒分類(lèi)為正面、中性或負面,具體分類(lèi)方法是:如果點(diǎn)贊數p除以踩在值r上的點(diǎn)數大于閾值a,則認為情緒分類(lèi)為正,如果值r小于閾值b,則情感分類(lèi)為
如果值 b ≤r ≤a,則情緒分類(lèi)為中性,其中 a >b;
步驟3)基于信息的情緒分類(lèi),
自動(dòng)建立信息集合的情感可視化圖形的幾何布局,橫軸表示信息生成時(shí)間,縱軸表示屬于每個(gè)情感分類(lèi)的信息數量;
步驟4)計算設備根據信息的情感隸屬關(guān)系對已建立的幾何布局進(jìn)行著(zhù)色,并根據信息顏色的梯度順序對各情感分類(lèi)層上的信息進(jìn)行著(zhù)色。
分析和結論
比較文件1公開(kāi)了一種基于情感的可視化分析方法,其中時(shí)間表示為橫軸,不同時(shí)間的每個(gè)色帶的寬度代表當時(shí)的情感度量,不同的色帶代表不同的情緒。
這
本發(fā)明專(zhuān)利申請的解決方案與比較文件1的不同之處在于步驟2中設置的情緒的具體分類(lèi)規則)。從應用內容可以看出,即使情感分類(lèi)規則不同,對應數據著(zhù)色的技術(shù)手段也可以不變,即上述情感分類(lèi)規則和具體的可視化方法在功能上并不相互支持和交互。與對比文獻1相比,發(fā)明專(zhuān)利申請僅提出了情緒分類(lèi)的新規則,并未實(shí)際解決任何技術(shù)問(wèn)題,對現有技術(shù)沒(méi)有做出技術(shù)貢獻。因此,要求保護的發(fā)明不具有相對于比較文件1的創(chuàng )造性步驟。
6.3 描述和權利要求的準備
6.3.1 說(shuō)明書(shū)的準備
含有算法特征或者業(yè)務(wù)規則、方法特征的發(fā)明專(zhuān)利申請說(shuō)明書(shū),應當清楚、完整地說(shuō)明發(fā)明為解決其技術(shù)問(wèn)題而采用的解決方案。在技術(shù)特征的基礎上,解決方案還可以包括算法特征或業(yè)務(wù)規則和方法特征,它們在功能上相互支持并與技術(shù)特征交互。
規范應明確技術(shù)特性與功能支持和交互的算法特征或業(yè)務(wù)規則與方法特性如何相互作用并產(chǎn)生有益效果。例如,在收錄
算法特征時(shí),抽象算法應與特定的技術(shù)領(lǐng)域相結合,至少一個(gè)參數的定義應與技術(shù)領(lǐng)域的特定數據相關(guān)聯(lián);當包括業(yè)務(wù)規則和方法的特點(diǎn)時(shí),應詳細描述和解釋解決技術(shù)問(wèn)題的整個(gè)過(guò)程,以便技術(shù)領(lǐng)域的技術(shù)人員能夠按照描述中描述的內容實(shí)現本發(fā)明的解決。
說(shuō)明書(shū)應清楚客觀(guān)地陳述本發(fā)明與現有技術(shù)相比的有益效果,如質(zhì)量、準確性或效率的提高,系統內部性能的改進(jìn)等。如果從用戶(hù)的角度,客觀(guān)上改善用戶(hù)體驗,也可以在說(shuō)明書(shū)中解釋?zhuān)谶@種情況下,還應該說(shuō)明構成本發(fā)明的技術(shù)特征,以及在其功能中相互支持并相互作用的算法特征或業(yè)務(wù)規則和方法特征如何帶來(lái)或產(chǎn)生用戶(hù)體驗的改善。
6.3.2 索賠的準備
這
權利要求書(shū)中含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,應當以說(shuō)明書(shū)為依據,簡(jiǎn)明扼要地界定所要求保護的專(zhuān)利保護范圍。權利要求應當記錄功能上相互支持并與技術(shù)特征相互作用的技術(shù)特征和算法特征或者業(yè)務(wù)規則和方法特征。
附件2:
關(guān)于《專(zhuān)利審查指南》第二部分第九章
修訂草案說(shuō)明(征求意見(jiàn)稿)
?。?。
一、修改后臺和主進(jìn)程
隨著(zhù)互聯(lián)網(wǎng)技術(shù)和信息技術(shù)的不斷發(fā)展,涉及新技術(shù)、新領(lǐng)域、新業(yè)態(tài)的發(fā)明創(chuàng )造不斷涌現。因此,為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體進(jìn)一步明確涉及人工智能等新技術(shù)、新領(lǐng)域的專(zhuān)利申請審查規則的需要,支持創(chuàng )新驅動(dòng)發(fā)展宗旨, 國家知識產(chǎn)權局已啟動(dòng)《專(zhuān)利審查指南》的相關(guān)修訂工作。
涉及新技術(shù)的發(fā)明專(zhuān)利申請,例如
人工智能和新領(lǐng)域、新業(yè)態(tài)與其他發(fā)明專(zhuān)利申請明顯不同,其特點(diǎn)是,在發(fā)明解決方案中,除技術(shù)外,一般還收錄
算法或商業(yè)方法等智力活動(dòng)規則和方法的特征。修訂后的《指南》明確了此類(lèi)申請的審查規則,并通過(guò)典型案例進(jìn)行了解釋。一方面,將審查實(shí)踐中探索的有益做法提升為《專(zhuān)利審查指南》,有助于統一審查標準,同時(shí)為如何更好地撰寫(xiě)此類(lèi)申請、促進(jìn)申請質(zhì)量的提高提供指導。另一方面,明確規定此類(lèi)應用的特點(diǎn)應與算法或商業(yè)方法等智力活動(dòng)規則的技術(shù)特征和特征相結合,正確把握發(fā)明的技術(shù)貢獻,從而提高審查的質(zhì)量和效率,促進(jìn)新興技術(shù)和新業(yè)態(tài)、新模式的進(jìn)一步發(fā)展和成長(cháng)。應當指出的是,修正案的指導思想是在現行《專(zhuān)利法》和《實(shí)施細則》的框架內及時(shí)響應實(shí)際需求和及時(shí)解決實(shí)際問(wèn)題,同時(shí)盡可能與現行指南第9章的框架結構保持一致,以便于審查員和公眾的理解。
在充分調查社會(huì )需求和一線(xiàn)審查員具體工作實(shí)踐的基礎上,國家知識產(chǎn)權局制定了《專(zhuān)利審查指南》第二部分第九章修正草案(
初稿)于2019年9月中旬,征求局內有關(guān)部門(mén)意見(jiàn),并專(zhuān)門(mén)召開(kāi)創(chuàng )新主體和代理人咨詢(xún)會(huì ),聽(tīng)取各方意見(jiàn),經(jīng)完善后形成《專(zhuān)利審查指南第二編第九章修正草案(征求意見(jiàn)稿)》及其說(shuō)明。
2. 主要修訂
這
《修訂草案》在第二部分第九章中專(zhuān)門(mén)增加了第六節,根據具體情況,明確了此類(lèi)申請的授權、新穎性和創(chuàng )造性、權利要求和說(shuō)明書(shū)的起草。主要變化如下:
?。?)強調專(zhuān)利審查中的技術(shù)特征和算法特征、商業(yè)規則和方法特征不應簡(jiǎn)單分開(kāi)各復審
條款的一般原則在第6.1節“復審標準”一節中確立:“在審查中,不應將技術(shù)特征與算法或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記錄的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和產(chǎn)生的技術(shù)效果。"
?。?) 明確根據專(zhuān)利法第二十五條的規定,不排除技術(shù)特征的納入如果權利要求
除算法特征或者商業(yè)規則和方法外還收錄
技術(shù)特征,則權利要求整體上不是智力活動(dòng)的規則和方法,不應根據專(zhuān)利法第二十五條第一款第2項的規定排除獲得專(zhuān)利權的可能性。
?。?) 明確專(zhuān)利法第二條的審查標準
對于判決
對于是否為技術(shù)方案,審查標準在《指南》總章技術(shù)問(wèn)題、技術(shù)手段和技術(shù)效果“三要素”的判斷方法下進(jìn)一步細化。只要該算法能結合特定的技術(shù)應用領(lǐng)域解決一定的技術(shù)問(wèn)題,就可以通過(guò)專(zhuān)利第2條的審查。
?。?)考慮算法特征與業(yè)務(wù)規則和方法特征在技術(shù)特征方面相互作用、功能上相互支持對創(chuàng )造力的技術(shù)貢獻審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法
的發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并與技術(shù)特征相互作用的算法特征或者商業(yè)規則和方法作為一個(gè)整體來(lái)考慮。修正案草案進(jìn)一步解釋了其含義。
?。?)從正面和負面兩個(gè)方面增加了10個(gè)關(guān)于授權主題和創(chuàng )造性的審查案例
實(shí)施例1為抽象模型構建方法,不涉及與具體應用領(lǐng)域的組合,不收錄
技術(shù)特征,屬于專(zhuān)利法第25.1.2條規定的智力活動(dòng)規則和方法。示例 2、3 和 4 屬于人工智能、商業(yè)模式和區塊鏈領(lǐng)域的授權對象,而示例 5 和 6 是反面示例。例7和例9是創(chuàng )造性是由于將技術(shù)特征的功能支持和相互作用作為一個(gè)整體考慮而引起的情況,以及由于相應的內容已在比較文件中公開(kāi)而使技術(shù)特征不具有創(chuàng )造性的情況。
?。┘毣f(shuō)明書(shū)和權利要求書(shū)的起草要求
進(jìn)一步細化了編寫(xiě)手冊的要求,例如提及算法如何與特定技術(shù)領(lǐng)域相結合,并指定用戶(hù)體驗效果。權利要求書(shū)的起草強調,權利要求應當記錄技術(shù)特征與功能上相互支持、與技術(shù)特征相互作用的算法或者業(yè)務(wù)規則和方法。
小技巧:京東關(guān)鍵詞鏈接在哪復制?關(guān)鍵詞優(yōu)化技巧
大家應該都知道,京東的每一個(gè)商品都有一個(gè)鏈接,就是為了方便消費者找到我們的商品。作為消費者,如果看到滿(mǎn)意的商品,可以復制鏈接分享出去。
1. 關(guān)鍵詞 鏈接復制到哪里了?
1、打開(kāi)手機【京東】APP,在商城中找到您想要的商品,點(diǎn)擊商品頁(yè)面;
2. 產(chǎn)品頁(yè)面右上角有分享圖標,點(diǎn)擊分享圖標。點(diǎn)擊后,在屏幕下方彈出的選項中點(diǎn)擊【復制鏈接】。復制完成后,屏幕上會(huì )短暫提示【復制成功】!
2. 關(guān)鍵詞 優(yōu)化技術(shù)
1、對于京東關(guān)鍵詞的選擇,作為商家,這個(gè)時(shí)候需要多關(guān)注與商品相關(guān)度高的流量詞和熱詞,一網(wǎng)打盡。選詞一般有三種方法,一是通過(guò)京東搜索引擎選擇合適的關(guān)鍵詞,二是從京東商智的行業(yè)關(guān)鍵詞中選擇,最后一種是選擇對 關(guān)鍵詞 通過(guò) Express 的產(chǎn)品推送詞。所以在關(guān)鍵詞的區域,采集
的越多,組合的可能性就越多,所以關(guān)鍵詞的采集
千萬(wàn)不能馬虎。
2.完成關(guān)鍵詞的采集后,下一步就是對采集到的關(guān)鍵詞進(jìn)行篩選。篩選所有采集
的關(guān)鍵詞,然后選擇與您的產(chǎn)品最相關(guān)、流量大、引流效果好的關(guān)鍵詞。
3.標題越多越好。至少在京東,標題越短,得分越高。所以在組合關(guān)鍵詞的時(shí)候,一定要多注意標題的長(cháng)度。此外,還需要注意關(guān)鍵詞之間的距離,以及關(guān)鍵詞的順序,這些都會(huì )影響題目的得分。一般來(lái)說(shuō),關(guān)鍵詞的組合多為品牌詞+熱搜詞/流量詞+產(chǎn)品名稱(chēng)+產(chǎn)品賣(mài)點(diǎn)+規格+關(guān)鍵詞。
在京東,一件商品能獲得多少流量,與商家的推廣方式有關(guān)。同時(shí),如果為產(chǎn)品設置鏈接,方便消費者分享我們的產(chǎn)品,也有助于增加產(chǎn)品流量。 查看全部
解決方案:審查指南征求意見(jiàn) 針對含算法特征或商業(yè)規則和方法特征的發(fā)明專(zhuān)利申請審查
關(guān)于公開(kāi)征求對專(zhuān)利審查指南第二部分第九章修正案草案(征求意見(jiàn)稿)征求意見(jiàn)的通知
?。?。
為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體需求,進(jìn)一步明確涉及人工智能、區塊鏈、業(yè)務(wù)規則和方法的新領(lǐng)域、新業(yè)態(tài)的專(zhuān)利審查規則, 國家知識產(chǎn)權局起草并形成了《專(zhuān)利審查指南第二編第九章修正案草案(征求意見(jiàn)稿)》(以下簡(jiǎn)稱(chēng)《征求意見(jiàn)稿》)。為征求社會(huì )各界意見(jiàn),現將草案及其起草說(shuō)明公布。有關(guān)單位和社會(huì )各界人士可在2019年12月11日前選擇下列方式之一,對《征求意見(jiàn)稿》的修改完善提出具體意見(jiàn):
1. 電子郵件: 2. 傳真: 3. 信件: 考試
北京市海淀區西土城路6號國家知識產(chǎn)權局條款法律司政策處 郵編100088(請在信封左下角注明“審查指南”) 附件: 1. 預告“專(zhuān)利審查指南第九章修正案第二部分(征求意見(jiàn)稿) 2.關(guān)于這些的注意事項
草案
對《專(zhuān)利審查指南》第二部分第九章的修正
?。ㄕ髑笠庖?jiàn)稿)。
6. 關(guān)于對含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請進(jìn)行審查的規定
專(zhuān)利申請
涉及人工智能、互聯(lián)網(wǎng)+、大數據、區塊鏈等的發(fā)明,一般收錄
算法或商業(yè)規則方法等智力活動(dòng)的規則和方法特征,本節旨在根據《專(zhuān)利法》及其實(shí)施細則對此類(lèi)申請進(jìn)行審查的特殊性作出規定。
6.1 審查基準
審查應針對要求保護的解決方案進(jìn)行,即受權利要求限制的解決方案。在審查中,不應簡(jiǎn)單地將技術(shù)特征與算法特征或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記載的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和取得的技術(shù)效果。6.1.1
根據專(zhuān)利法第25.1.2條進(jìn)行審查
權利要求涉及抽象算法或者簡(jiǎn)單的商業(yè)規則和方法,且不收錄
任何技術(shù)特征的,屬于專(zhuān)利法第二十五條第一款第2款規定的智力活動(dòng)規則和方法,不得申請專(zhuān)利。例如,基于抽象算法建立數學(xué)模型且不收錄
任何技術(shù)特征的方法,屬于專(zhuān)利法第25.1.2條規定的不應授予專(zhuān)利權的情形。再如基于用戶(hù)消費額度的返利方式,該方法所收錄
的特征均為與返利規則相關(guān)的商業(yè)規則和方法特征,不收錄
任何技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項第2項規定的不應授予專(zhuān)利權的情形。
如果索賠除
算法特征或者商業(yè)規則和方法外,還含有技術(shù)特征,權利要求整體上不是智力活動(dòng)的規則或者方法的,依照專(zhuān)利法第二十五條第一款第2項的規定,不排除取得專(zhuān)利權的可能性。
6.1.2 根據專(zhuān)利法第2.2條進(jìn)行審查如果權利要求的整體不屬于專(zhuān)利法第25條第1款第2項第
2項排除專(zhuān)利權取得的情形,則有必要審查其是否屬于專(zhuān)利法第2條第2款所指的技術(shù)方案。
在檢查收錄
算法特征或業(yè)務(wù)規則和方法特征的權利要求是否為技術(shù)解決方案時(shí),有必要將權利要求中描述的所有特征作為一個(gè)整體來(lái)考慮。如果權利要求記載了利用自然規律的技術(shù)手段用于要解決的技術(shù)問(wèn)題,并由此獲得符合自然規律的技術(shù)效果的,則權利要求的解決方案屬于專(zhuān)利法第二條第二款所述的技術(shù)方案。例如,如果權利要求中算法涉及的步驟與要解決的技術(shù)問(wèn)題密切相關(guān),例如算法處理的數據是技術(shù)領(lǐng)域具有確切技術(shù)意義的數據,并且算法的執行可以直接反映利用自然規律解決技術(shù)問(wèn)題的過(guò)程, 并且取得了技術(shù)效果,那么通常權利要求的解決方案屬于專(zhuān)利法第2條第2款所述的技術(shù)方案。
6.1.3 新穎性和創(chuàng )造性的審查在審查含有算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請的新穎性時(shí),應當考慮權利要求中記錄的所有特征,包括技術(shù)特征和算法特征或者商業(yè)規則和方法特征。審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并在技術(shù)特征方面相互作用的算法特征或者商業(yè)規則和方法特征作為一個(gè)整體來(lái)考慮?!肮δ苌舷嗷ブС?、相互作用”是指算法特征或業(yè)務(wù)規則、方法特征與技術(shù)特征緊密結合,共同構成解決技術(shù)問(wèn)題的技術(shù)手段,并能獲得相應的技術(shù)效果。
例如,如果權利要求中的算法應用于特定的技術(shù)領(lǐng)域,可以解決特定的技術(shù)問(wèn)題,那么可以認為算法特征和技術(shù)特征是
功能上相互支持,具有交互關(guān)系,算法特征成為所采取技術(shù)手段的組成部分,在進(jìn)行創(chuàng )造性審查時(shí)應考慮算法特征對方案的貢獻。
再如,如果權利要求中商業(yè)規則和方法特征的實(shí)施需要對技術(shù)手段進(jìn)行調整或者改進(jìn),可以認為業(yè)務(wù)規則和方法特征和技術(shù)特征在
功能上是相互支持和相互作用的,在進(jìn)行創(chuàng )造性審查時(shí)應考慮所述業(yè)務(wù)規則和方法特征對程序的貢獻。
6.2 復習示例
下面,根據上述審查標準給出收錄
算法特征或業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請的審查示例。
?。ㄒ唬┖袑?zhuān)利法第二十五條第一款第2項范圍內的算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不屬于專(zhuān)利保護標的。
[例1]。
一種構建數學(xué)模型的方法
應用程序內容概述
發(fā)明專(zhuān)利申請的解決方案是一種構建數學(xué)模型的方法,該方法通過(guò)增加訓練樣本的數量來(lái)提高模型的準確性。建模方法還使用與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù)的訓練樣本作為第一分類(lèi)任務(wù)數學(xué)模型的訓練樣本,從而增加訓練樣本的數量,并利用訓練樣本的特征值,提取特征值、標簽值等來(lái)訓練相關(guān)的數學(xué)模型, 最后得到第一個(gè)分類(lèi)任務(wù)的數學(xué)模型,由于訓練樣本數量少,過(guò)度擬合,建模精度差。
申請的權利要求
一種構建數學(xué)模型的方法,其特征在于它包括以下步驟:
根據第一個(gè)分類(lèi)任務(wù)的訓練樣本中的特征值和特征
在訓練樣本中至少一秒的分類(lèi)任務(wù)中,對初始特征提取模型進(jìn)行訓練,得到目標特征提取模型。 其中,所述第二分類(lèi)任務(wù)為與所述第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù);
根據目標特征提取模型,特征值
分別處理第一分類(lèi)任務(wù)的每個(gè)訓練樣本,得到每個(gè)訓練樣本對應的提取特征值;
將提取的每個(gè)訓練樣本對應的特征值和標簽值組成,提取訓練樣本,訓練初始分類(lèi)模型得到目標分類(lèi)模型;
目標分類(lèi)模型
目標特征提取模型由第一分類(lèi)任務(wù)的數學(xué)模型組成。
分析和結論
該解決方案不涉及任何特定的應用領(lǐng)域,其中訓練樣本的特征值、提取的特征值、標簽值、目標分類(lèi)模型和目標特征提取模型是抽象的一般數據,利用訓練樣本的相關(guān)數據訓練數學(xué)模型的處理過(guò)程是一系列抽象的數學(xué)方法步驟, 最終結果也是一個(gè)抽象的通用分類(lèi)數學(xué)模型。該方案是一種抽象模型建立方法,其處理對象、過(guò)程和結果不涉及與具體應用領(lǐng)域的結合,屬于抽象數學(xué)方法的優(yōu)化,整個(gè)方案不收錄
任何技術(shù)特征,本發(fā)明專(zhuān)利申請的解決屬于第25條規定的智力活動(dòng)規則和方法, 專(zhuān)利法第1條第(2)項,不屬于專(zhuān)利保護的客體。
?。ǘ┖兴惴ㄌ卣骰蛘呱虡I(yè)規則、方法特征的發(fā)明專(zhuān)利申請,利用技術(shù)手段解決技術(shù)問(wèn)題,取得技術(shù)效果的,屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,屬于專(zhuān)利保護客體。
[例2]。
一種卷積神經(jīng)網(wǎng)絡(luò )模型的訓練方法
應用程序內容概述
本發(fā)明專(zhuān)利申請在各級卷積層上對訓練圖像進(jìn)行卷積操作和最大池化操作,并對最大池化操作后獲得的特征圖像進(jìn)一步執行水平池化操作,使得經(jīng)過(guò)訓練的CNN模型在識別圖像類(lèi)別時(shí)可以識別任何大小的圖像。
申請的權利要求
一種用于卷積神經(jīng)網(wǎng)絡(luò )CNN模型的訓練方法,其中該方法包括:
獲取待訓練的CNN模型,初始模型參數包括各卷積層的初始卷積核、各層級卷積層的初始偏置矩陣、全連接層的初始
權重矩陣和全連層的初始偏置向量;
獲取多個(gè)訓練圖像;在各級卷積層
上,各級卷積層上的初始卷積核和初始偏置矩陣分別對每個(gè)訓練圖像
進(jìn)行卷積運算和最大池化運算,得到每個(gè)訓練圖像在卷積層各層次上的第一個(gè)特征圖像;
每個(gè)訓練圖像的第一個(gè)特征圖像水平
池化至少一個(gè)卷積層,獲得每個(gè)卷積層上每個(gè)訓練圖像的第二特征圖像。
確定功能
根據每個(gè)訓練圖像在卷積層上各水平的第二特征圖像的向量;
根據初始權重矩陣和初始偏差向量對每個(gè)特征向量進(jìn)行處理,得到每個(gè)訓練圖像的類(lèi)概率向量;根據每個(gè)訓練圖像的
類(lèi)概率向量和每個(gè)訓練圖像的初始類(lèi)別,計算類(lèi)誤差;
基于分類(lèi)誤差,調整待訓練CNN模型的模型參數;
基于調整后的模型參數和多個(gè)訓練圖像,繼續模型參數調整過(guò)程,直到迭代次數達到預設次數;
模型參數
當迭代次數達到預設次數時(shí)獲得的作為訓練好的CNN模型的模型參數。
分析和結論
該解決方案是卷積神經(jīng)網(wǎng)絡(luò )CNN模型的一種訓練方法,闡明了模型訓練方法每一步處理的數據都是圖像數據以及每一步如何處理圖像數據,說(shuō)明神經(jīng)網(wǎng)絡(luò )訓練算法與圖像信息處理密切相關(guān)。該方案解決了如何克服CNN模型只能識別固定尺寸圖像的技術(shù)難題,該方案采用不同卷積層對圖像進(jìn)行不同處理和訓練的手段,利用遵循自然規律的技術(shù)手段,獲得訓練好的CNN模型可以識別任意大小圖像的技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體。
[例3]。
共享單車(chē)的使用方式
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種共享單車(chē)的使用方法,通過(guò)獲取用戶(hù)終端設備的位置信息和一定距離內的共享單車(chē)狀態(tài)信息,使用戶(hù)根據共享單車(chē)的狀態(tài)信息準確找到可以騎行的共享單車(chē), 通過(guò)提示騎行和引導用戶(hù)停車(chē),方便了租賃自行車(chē)的使用和管理,節省了用戶(hù)的時(shí)間,改善了用戶(hù)體驗。
申請的權利要求
共享單車(chē)的使用方法,包括以下步驟:
步驟1:用戶(hù)通過(guò)終端設備向服務(wù)器發(fā)送使用共享單車(chē)的請求;
步驟二,服務(wù)器獲取用戶(hù)的第一位置信息,查找共享單車(chē)在一定距離范圍內對應的第一位置信息,以及這些共享單車(chē)的狀態(tài)信息,并發(fā)送第二位置信息和
共享單車(chē)的狀態(tài)信息發(fā)送給終端設備,其中,第一位置信息和第二位置信息通過(guò)GPS信號獲取;

第三步:根據終端設備上顯示的共享單車(chē)位置信息,用戶(hù)找到可以騎行的目標共享單車(chē);
第四步:用戶(hù)通過(guò)終端設備掃描目標共享單車(chē)車(chē)身上的二維碼,通過(guò)服務(wù)器認證,獲得目標共享單車(chē)使用權限;
第五步:服務(wù)器根據乘車(chē)情況向用戶(hù)推送停車(chē)提示,如果用戶(hù)將車(chē)停在指定區域,則以?xún)?yōu)惠資費計費,否則按標準資費計費;
步驟6,用戶(hù)
根據提示選擇,騎行結束后,用戶(hù)執行共享單車(chē)的鎖定動(dòng)作,共享單車(chē)檢測鎖定狀態(tài)并向服務(wù)器發(fā)送騎行完成的信號。
分析和結論該方案涉及共享單車(chē)的使用方法,解決共享單車(chē)
位置匹配、獲得共享單車(chē)使用權的技術(shù)問(wèn)題,程序實(shí)現對共享單車(chē)的控制和引導。用戶(hù)使用共享單車(chē)
的行為通過(guò)在終端設備和服務(wù)器上執行計算機程序,體現對位置信息的控制、認證等數據的采集
和計算,利用遵循自然規律的技術(shù)手段實(shí)現共享單車(chē)位置的匹配,獲得共享單車(chē)使用權等技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體。
[例4]。
一種區塊鏈節點(diǎn)間通信方法及裝置
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種區塊鏈節點(diǎn)通信方法及裝置,區塊鏈中的業(yè)務(wù)節點(diǎn)可以根據通信請求中攜帶的CA證書(shū)和
在建立通信連接之前預先配置CA信任列表,從而降低業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,提高存儲在區塊鏈中的數據的安全性。
申請的權利要求
1.一種區塊鏈節點(diǎn)通信方法,即區塊鏈區塊鏈網(wǎng)絡(luò )中的節點(diǎn)包括業(yè)務(wù)節點(diǎn),
其中業(yè)務(wù)節點(diǎn)存儲由CA證書(shū)頒發(fā)機構中心發(fā)送的證書(shū),并預配置有CA信任列表,該方法包括:
第一個(gè)區塊鏈節點(diǎn)收到通信請求由第二區塊鏈節點(diǎn)
發(fā)送,其中通信請求攜帶第二區塊鏈節點(diǎn)的第二證書(shū);
確定與第二個(gè)證書(shū)對應的 CA ID;
確定第二個(gè)證書(shū)對應的 CA ID 是否在 CA 信任列表中;
如果是這樣,則與第二個(gè)區塊鏈節點(diǎn)建立通信連接;
否則,不會(huì )與第二個(gè)區塊鏈節點(diǎn)建立通信連接。
分析和結論
問(wèn)題在于
本申請要解決的是如何防止區塊鏈業(yè)務(wù)節點(diǎn)泄露聯(lián)盟鏈網(wǎng)絡(luò )中的用戶(hù)隱私數據,這是提高區塊鏈數據安全性的技術(shù)難題;通過(guò)在通信請求中攜帶CA證書(shū),并預先配置CA信任列表來(lái)確定是否建立連接,業(yè)務(wù)節點(diǎn)僅限于可以建立連接的對象,從而提高區塊鏈中數據的安全性。因此,本申請中的區塊鏈節點(diǎn)間通信方式實(shí)現了業(yè)務(wù)節點(diǎn)之間的安全通信,降低了業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,屬于專(zhuān)利法保護的對象。
?。ㄈ┖兴惴ㄌ卣骰蛘呱虡I(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不解決技術(shù)問(wèn)題,或者不使用技術(shù)手段,或者未取得技術(shù)效果,不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,因此不屬于專(zhuān)利保護客體。
[例5]。
一種消費回扣的方法
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種消費返利的方法,通過(guò)計算機執行設定的返利規則,向消費的用戶(hù)發(fā)放現金券,從而提高用戶(hù)的消費意愿,為商家獲取更多利潤。
申請的權利要求
一種支出回扣方法,其特點(diǎn)是以下步驟:
當用戶(hù)在商家購物時(shí),商家會(huì )根據花費的金額返還一定數量的現金券,具體
商家使用計算機計算用戶(hù)的消費金額,并且將用戶(hù)的消費金額R劃分為M區間,其中M為整數,范圍1到范圍M的值由小到大,
退回代金券的金額F也劃分為M值,M值也從小到大排列;
根據計算機的計算值判斷,當用戶(hù)當前消費金額在范圍1時(shí),返利金額為第一值,當用戶(hù)當前消費金額在范圍2范圍內時(shí),返利金額為:
第二個(gè)值,依此類(lèi)推,將相應范圍的返利金額返回給用戶(hù)。
分析和結論解決方案涉及計算機執行的消費返利
方法,它處理用戶(hù)的消費數據,解決如何促進(jìn)用戶(hù)消費的問(wèn)題,不構成技術(shù)問(wèn)題,所使用的手段是通過(guò)計算機實(shí)現人為設定的返利規則,但計算機的限制只是
按照規定的規則根據用戶(hù)的消費量來(lái)確定返利金額,不受自然規律的約束,所以不使用任何技術(shù)手段,程序的效果只是促進(jìn)用戶(hù)消費,而不是符合自然規律的技術(shù)效果。因此,發(fā)明專(zhuān)利申請不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,不屬于專(zhuān)利保護的客體。
[例6]。
一種基于電力消費特征的經(jīng)濟景氣指數分析方法
應用程序內容概述
發(fā)明專(zhuān)利申請通過(guò)計算各種經(jīng)濟指標和電力消耗指標來(lái)評估待測試地區的經(jīng)濟景氣指數。
申請的權利要求
一種基于區域電力消費特征的經(jīng)濟景氣指數分析方法,其特征在于包括以下步驟:
根據待測地區的經(jīng)濟數據和用電量數據,選擇經(jīng)濟初步指標
待測區域的景氣指數,其中初步指標包括經(jīng)濟指標和用電量指標;
通過(guò)聚類(lèi)分析方法和
時(shí)差相關(guān)分析方法,確定待檢測區域的經(jīng)濟景氣指數體系,包括領(lǐng)先指標、一致指標和滯后指標;
根據待測地區的經(jīng)濟景氣指數體系
,采用綜合指數計算方法得到待測地區的經(jīng)濟景氣指數。
分析和結論
解決方案是一種經(jīng)濟景氣指數分析計算方法,其處理對象是各種經(jīng)濟指標、電力指標、
問(wèn)題解決的是判斷經(jīng)濟趨勢,不構成技術(shù)問(wèn)題,所使用的手段都是根據經(jīng)濟數據和用電量數據來(lái)分析經(jīng)濟形勢,只有按照經(jīng)濟規律進(jìn)行經(jīng)濟管理手段,不受自然規律的約束,所以使用技術(shù)手段,方案最終可以得到經(jīng)濟景氣指數來(lái)評價(jià)經(jīng)濟, 它不是符合自然規律的技術(shù)效果,因此解決方案不屬于專(zhuān)利法第2條第2款規定的技術(shù)解決方案,不屬于專(zhuān)利保護的客體。
?。?) 在進(jìn)行創(chuàng )造性審查時(shí),應考慮算法特征或商業(yè)規則和方法特征對解決的貢獻,這些特征在功能上相互支持并與技術(shù)特征相互作用。
[例7]。
一種基于多傳感器信息的人形機器人墜落狀態(tài)檢測方法
應用程序內容概述
現有的人形機器人行走時(shí)墜落狀態(tài)的判斷主要使用姿態(tài)信息或ZMP點(diǎn)位置信息,但這種判斷并不全面。發(fā)明專(zhuān)利申請提出了一種基于多個(gè)傳感器的人形機器人墜落狀態(tài)檢測方法,該方法實(shí)時(shí)集成了機器人步態(tài)階段信息、姿態(tài)信息和ZMP點(diǎn)位置信息,并利用模糊決策系統確定機器人當前的穩定性和可控性,從而為機器人的下一步動(dòng)作提供參考。
申請的權利要求
一種基于多傳感器信息的人形機器人跌落狀態(tài)檢測方法,其特點(diǎn)是以下步驟:
?。?)融合姿態(tài)傳感器信息、零扭矩點(diǎn)ZMP傳感器信息和機器人行走階段信息,建立分層傳感器信息融合模型,實(shí)現人形機器人的穩定性確定;
?。?)前后模糊決策系統及左右
分別采用模糊決策系統確定機器人在前后方向和左右方向的穩定性,具體步驟如下:
?。?)根據機器人支撐腳與地面的接觸和離線(xiàn)步態(tài)規劃確定機器人行走階段;
?。?)采用模糊推理算法對ZMP點(diǎn)的位置信息進(jìn)行模糊處理;
?。?)采用模糊推理算法對機器人的俯仰角或滾動(dòng)角進(jìn)行模糊化;
?。?)確定輸出隸屬函數;(5)按步驟(
1)~步驟(4)確定模糊推理規則;
?。?)去模糊。
分析和結論
對比文件1公開(kāi)了基于人形機器人傳感器信息的步態(tài)規劃和反饋控制,并根據
相關(guān)融合信息,包括根據多個(gè)傳感器信息對人形機器人的穩定狀態(tài)評估,即對比文件1公開(kāi)了本發(fā)明專(zhuān)利申請解決方案中步驟(1)中的步驟(1),與比較文件1中采用步驟(2)特定算法的模糊決策方法進(jìn)行了區分。
基于應用文檔,該方案有效提高了機器人的穩態(tài)及其可能下落方向的可靠性和準確性。以姿態(tài)信息、ZMP點(diǎn)位置信息和行走階段信息為輸入參數,通過(guò)模糊算法輸出確定人形機器人穩定狀態(tài)的信息,為進(jìn)一步準確的姿態(tài)調整指令提供了依據。因此,上述算法特征和技術(shù)特征在功能上相互支持并具有交互關(guān)系,并且相對于比較文件1,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何判斷機器人的穩定狀態(tài)并準確預測其可能的下降方向。上述模糊決策的實(shí)現算法及其對機器人穩態(tài)應用的判斷在其他比較文獻中未公開(kāi),也不是本領(lǐng)域的常識,現有技術(shù)整體上不存在使本領(lǐng)域技術(shù)人員改進(jìn)比較文件1以獲得要求保護的發(fā)明的靈感, 并且要求保護的發(fā)明相對于最接近的現有技術(shù)是非顯而易見(jiàn)的和創(chuàng )造性的。
[例8]。
基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統
應用程序內容概述現有的多移動(dòng)機器人運動(dòng)規劃
控制結構通常采用集中規劃方法,將多機器人系統視為具有多個(gè)自由度的復雜機器人,系統中的規劃器統一完成所有機器人的運動(dòng)規劃,存在計算時(shí)間長(cháng)、實(shí)用性差的缺點(diǎn)。發(fā)明專(zhuān)利申請提供了一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統。機器人的每條路徑都由一條染色體表示,以最短距離、平滑度和安全距離作為設計路徑適應度函數的三個(gè)目標,利用Messy遺傳算法優(yōu)化每個(gè)機器人的最優(yōu)路徑。

申請的權利要求
基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統,其特點(diǎn)是:(
1)機器人的路徑由染色體表示,染色體以節點(diǎn)鏈表的形式表示,即[(x,y),time],(x,y,time
∈R),(x,y)表示機器人的位置坐標,時(shí)間表示從前一個(gè)節點(diǎn)移動(dòng)該節點(diǎn)所需的時(shí)間消耗,起始節點(diǎn)的時(shí)間等于0,除初始節點(diǎn)的初始位置和結束節點(diǎn)的目標位置外,每個(gè)機器人個(gè)體的染色體是固定的。中間節點(diǎn)和節點(diǎn)的數量都是可變的;(
2)每個(gè)機器人機器人(i)的路徑路徑(j)的適應度函數表示為φ(pi,j):|| pi,j|| =Distance(pi,j)+ws×smooth(pi,j)
+wt×Time(pi,j)
這些 pi,j|| ||是距離、平滑度和時(shí)間消耗的線(xiàn)性組合,ws 是平滑度加權因子,wt 是時(shí)間加權因子;距離(pi,j)表示路徑長(cháng)度,smooth(pi,j)表示路徑的平滑度,Time(pi,j)表示路徑pi,j的時(shí)間消耗;每個(gè)機器人使用所描述的適應度函數,并通過(guò)Messy遺傳算法優(yōu)化最佳路徑。
分析和結論
對比文件1公開(kāi)了一種基于協(xié)同進(jìn)化的多機器人路徑規劃方法,其中使用自適應混沌算法獲得最優(yōu)路徑。發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于通過(guò)Messy遺傳算法實(shí)現多機器人路徑規劃。
在該解決方案中,利用適應度函數約束Messy遺傳算法,通過(guò)遺傳算法優(yōu)化后得到機器人的前向路徑,算法特征和
該解決方案的技術(shù)特點(diǎn)相互支持,在功能上相互交互,從而實(shí)現機器人前進(jìn)路徑的優(yōu)化。與對比文獻1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何使機器人基于特定算法在最優(yōu)路徑上前進(jìn)。對比文件2揭示了包括混沌算法在內的多種遺傳算法可用于路徑優(yōu)化,使用Messy遺傳算法可以解決其他算法的缺點(diǎn),獲得更合理的優(yōu)化結果?;趯Ρ任募?給出的啟示,本領(lǐng)域技術(shù)人員有動(dòng)機將比較文件1和比較文件2結合起來(lái),得到發(fā)明專(zhuān)利申請的技術(shù)方案。因此,要求保護的發(fā)明相對于比較文件1和比較2的組合是顯而易見(jiàn)的,并且不具有創(chuàng )造性。
[例9]。
一種物流配送方法
應用程序內容概述
在貨物配送過(guò)程中,
如何有效提高商品配送效率,降低配送成本,是發(fā)明專(zhuān)利申請所要解決的問(wèn)題。物流人員到達配送地點(diǎn)后,可以通知特定配送區域內的多個(gè)訂貨用戶(hù)以服務(wù)器推送消息的形式同時(shí)提貨到訂貨用戶(hù)終端,從而提高配送效率,降低配送成本。
申請的權利要求
一種通過(guò)分批通知用戶(hù)取貨來(lái)提高物流配送效率的物流配送方法,該方法包括:
當調度員
需要通知用戶(hù)取貨的,調度員通過(guò)手持物流終端向服務(wù)器發(fā)送貨物已到達的通知;
服務(wù)器分批通知調度員交貨范圍內的所有訂單;
收到通知的訂購用戶(hù)根據通知信息完成取件;
其中,用于批量通知的服務(wù)器的具體實(shí)現方式是,服務(wù)器根據配送操作員ID確定配送距離范圍內的所有目標訂單信息,并以物流終端的當前位置、物流終端的當前位置和到達時(shí)攜帶的相應配送范圍為中心。
由物流終端發(fā)送通知,然后將通知信息推送到訂單用戶(hù)終端中所有目標訂單信息中對應的訂單用戶(hù)賬戶(hù)。
分析和結論
比對文件1公開(kāi)了一種物流配送方法,其中物流終端掃描配送單上的條形碼,并將掃描到的信息發(fā)送到服務(wù)器,通知服務(wù)器貨物已經(jīng)到達;服務(wù)器獲取掃描信息中的排序用戶(hù)信息,并向排序用戶(hù)發(fā)送通知;收到通知的訂購用戶(hù)根據通知信息完成取件。
兩者之間的區別
本發(fā)明專(zhuān)利申請與對比文件1的解決方案是,批量通知用戶(hù)訂單的到來(lái),為了實(shí)現批量通知,方案中服務(wù)器、物流終端和用戶(hù)終端之間的物理架構和數據通信都進(jìn)行了相應的調整,因此取件通知規則和具體的批量通知實(shí)現方法在功能上相互支持,具有交互關(guān)系。與比較文檔1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是如何提高訂單到達通知的效率,從而提高貨物配送的效率。從用戶(hù)的角度來(lái)看,用戶(hù)可以更快地獲得有關(guān)訂單到達的信息,這也改善了用戶(hù)體驗。由于現有技術(shù)不具備對上述比較文獻1的技術(shù)啟發(fā)進(jìn)行改進(jìn),以獲得用于發(fā)明專(zhuān)利申請的解決方案,該解決方案具有創(chuàng )造性。
[例10]。
動(dòng)態(tài)視角演變的視覺(jué)方法
應用程序內容概述近年來(lái),人們
越來(lái)越多地通過(guò)社交平臺表達自己的觀(guān)點(diǎn)和想法,人們在社交平臺上發(fā)布的情感內容反映了人們觀(guān)點(diǎn)的演變,可以看到事件的發(fā)展、變化和趨勢。該發(fā)明專(zhuān)利申請通過(guò)自動(dòng)采集
人們在社交平臺上發(fā)布的信息并分析其中的情緒,通過(guò)計算機繪制情緒可視化地圖,幫助人們更好地了解不同時(shí)期的情緒強度和隨時(shí)間演變的趨勢。
申請的權利要求
一種可視化動(dòng)態(tài)視圖演變的方法,該方法包括:
步驟1)情感隸屬程度和情感分類(lèi)信息
在采集
的信息采集
中由計算設備確定,信息的情感隸屬程度表示信息屬于某種情感分類(lèi)的概率;
步驟2)情緒分類(lèi)為正面、中性或負面,具體分類(lèi)方法是:如果點(diǎn)贊數p除以踩在值r上的點(diǎn)數大于閾值a,則認為情緒分類(lèi)為正,如果值r小于閾值b,則情感分類(lèi)為
如果值 b ≤r ≤a,則情緒分類(lèi)為中性,其中 a >b;
步驟3)基于信息的情緒分類(lèi),
自動(dòng)建立信息集合的情感可視化圖形的幾何布局,橫軸表示信息生成時(shí)間,縱軸表示屬于每個(gè)情感分類(lèi)的信息數量;
步驟4)計算設備根據信息的情感隸屬關(guān)系對已建立的幾何布局進(jìn)行著(zhù)色,并根據信息顏色的梯度順序對各情感分類(lèi)層上的信息進(jìn)行著(zhù)色。
分析和結論
比較文件1公開(kāi)了一種基于情感的可視化分析方法,其中時(shí)間表示為橫軸,不同時(shí)間的每個(gè)色帶的寬度代表當時(shí)的情感度量,不同的色帶代表不同的情緒。
這
本發(fā)明專(zhuān)利申請的解決方案與比較文件1的不同之處在于步驟2中設置的情緒的具體分類(lèi)規則)。從應用內容可以看出,即使情感分類(lèi)規則不同,對應數據著(zhù)色的技術(shù)手段也可以不變,即上述情感分類(lèi)規則和具體的可視化方法在功能上并不相互支持和交互。與對比文獻1相比,發(fā)明專(zhuān)利申請僅提出了情緒分類(lèi)的新規則,并未實(shí)際解決任何技術(shù)問(wèn)題,對現有技術(shù)沒(méi)有做出技術(shù)貢獻。因此,要求保護的發(fā)明不具有相對于比較文件1的創(chuàng )造性步驟。
6.3 描述和權利要求的準備
6.3.1 說(shuō)明書(shū)的準備
含有算法特征或者業(yè)務(wù)規則、方法特征的發(fā)明專(zhuān)利申請說(shuō)明書(shū),應當清楚、完整地說(shuō)明發(fā)明為解決其技術(shù)問(wèn)題而采用的解決方案。在技術(shù)特征的基礎上,解決方案還可以包括算法特征或業(yè)務(wù)規則和方法特征,它們在功能上相互支持并與技術(shù)特征交互。
規范應明確技術(shù)特性與功能支持和交互的算法特征或業(yè)務(wù)規則與方法特性如何相互作用并產(chǎn)生有益效果。例如,在收錄
算法特征時(shí),抽象算法應與特定的技術(shù)領(lǐng)域相結合,至少一個(gè)參數的定義應與技術(shù)領(lǐng)域的特定數據相關(guān)聯(lián);當包括業(yè)務(wù)規則和方法的特點(diǎn)時(shí),應詳細描述和解釋解決技術(shù)問(wèn)題的整個(gè)過(guò)程,以便技術(shù)領(lǐng)域的技術(shù)人員能夠按照描述中描述的內容實(shí)現本發(fā)明的解決。
說(shuō)明書(shū)應清楚客觀(guān)地陳述本發(fā)明與現有技術(shù)相比的有益效果,如質(zhì)量、準確性或效率的提高,系統內部性能的改進(jìn)等。如果從用戶(hù)的角度,客觀(guān)上改善用戶(hù)體驗,也可以在說(shuō)明書(shū)中解釋?zhuān)谶@種情況下,還應該說(shuō)明構成本發(fā)明的技術(shù)特征,以及在其功能中相互支持并相互作用的算法特征或業(yè)務(wù)規則和方法特征如何帶來(lái)或產(chǎn)生用戶(hù)體驗的改善。
6.3.2 索賠的準備
這
權利要求書(shū)中含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,應當以說(shuō)明書(shū)為依據,簡(jiǎn)明扼要地界定所要求保護的專(zhuān)利保護范圍。權利要求應當記錄功能上相互支持并與技術(shù)特征相互作用的技術(shù)特征和算法特征或者業(yè)務(wù)規則和方法特征。
附件2:
關(guān)于《專(zhuān)利審查指南》第二部分第九章
修訂草案說(shuō)明(征求意見(jiàn)稿)
?。?。
一、修改后臺和主進(jìn)程
隨著(zhù)互聯(lián)網(wǎng)技術(shù)和信息技術(shù)的不斷發(fā)展,涉及新技術(shù)、新領(lǐng)域、新業(yè)態(tài)的發(fā)明創(chuàng )造不斷涌現。因此,為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體進(jìn)一步明確涉及人工智能等新技術(shù)、新領(lǐng)域的專(zhuān)利申請審查規則的需要,支持創(chuàng )新驅動(dòng)發(fā)展宗旨, 國家知識產(chǎn)權局已啟動(dòng)《專(zhuān)利審查指南》的相關(guān)修訂工作。
涉及新技術(shù)的發(fā)明專(zhuān)利申請,例如
人工智能和新領(lǐng)域、新業(yè)態(tài)與其他發(fā)明專(zhuān)利申請明顯不同,其特點(diǎn)是,在發(fā)明解決方案中,除技術(shù)外,一般還收錄
算法或商業(yè)方法等智力活動(dòng)規則和方法的特征。修訂后的《指南》明確了此類(lèi)申請的審查規則,并通過(guò)典型案例進(jìn)行了解釋。一方面,將審查實(shí)踐中探索的有益做法提升為《專(zhuān)利審查指南》,有助于統一審查標準,同時(shí)為如何更好地撰寫(xiě)此類(lèi)申請、促進(jìn)申請質(zhì)量的提高提供指導。另一方面,明確規定此類(lèi)應用的特點(diǎn)應與算法或商業(yè)方法等智力活動(dòng)規則的技術(shù)特征和特征相結合,正確把握發(fā)明的技術(shù)貢獻,從而提高審查的質(zhì)量和效率,促進(jìn)新興技術(shù)和新業(yè)態(tài)、新模式的進(jìn)一步發(fā)展和成長(cháng)。應當指出的是,修正案的指導思想是在現行《專(zhuān)利法》和《實(shí)施細則》的框架內及時(shí)響應實(shí)際需求和及時(shí)解決實(shí)際問(wèn)題,同時(shí)盡可能與現行指南第9章的框架結構保持一致,以便于審查員和公眾的理解。
在充分調查社會(huì )需求和一線(xiàn)審查員具體工作實(shí)踐的基礎上,國家知識產(chǎn)權局制定了《專(zhuān)利審查指南》第二部分第九章修正草案(
初稿)于2019年9月中旬,征求局內有關(guān)部門(mén)意見(jiàn),并專(zhuān)門(mén)召開(kāi)創(chuàng )新主體和代理人咨詢(xún)會(huì ),聽(tīng)取各方意見(jiàn),經(jīng)完善后形成《專(zhuān)利審查指南第二編第九章修正草案(征求意見(jiàn)稿)》及其說(shuō)明。
2. 主要修訂
這
《修訂草案》在第二部分第九章中專(zhuān)門(mén)增加了第六節,根據具體情況,明確了此類(lèi)申請的授權、新穎性和創(chuàng )造性、權利要求和說(shuō)明書(shū)的起草。主要變化如下:
?。?)強調專(zhuān)利審查中的技術(shù)特征和算法特征、商業(yè)規則和方法特征不應簡(jiǎn)單分開(kāi)各復審
條款的一般原則在第6.1節“復審標準”一節中確立:“在審查中,不應將技術(shù)特征與算法或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記錄的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和產(chǎn)生的技術(shù)效果。"
?。?) 明確根據專(zhuān)利法第二十五條的規定,不排除技術(shù)特征的納入如果權利要求
除算法特征或者商業(yè)規則和方法外還收錄
技術(shù)特征,則權利要求整體上不是智力活動(dòng)的規則和方法,不應根據專(zhuān)利法第二十五條第一款第2項的規定排除獲得專(zhuān)利權的可能性。
?。?) 明確專(zhuān)利法第二條的審查標準
對于判決
對于是否為技術(shù)方案,審查標準在《指南》總章技術(shù)問(wèn)題、技術(shù)手段和技術(shù)效果“三要素”的判斷方法下進(jìn)一步細化。只要該算法能結合特定的技術(shù)應用領(lǐng)域解決一定的技術(shù)問(wèn)題,就可以通過(guò)專(zhuān)利第2條的審查。
?。?)考慮算法特征與業(yè)務(wù)規則和方法特征在技術(shù)特征方面相互作用、功能上相互支持對創(chuàng )造力的技術(shù)貢獻審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法
的發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并與技術(shù)特征相互作用的算法特征或者商業(yè)規則和方法作為一個(gè)整體來(lái)考慮。修正案草案進(jìn)一步解釋了其含義。
?。?)從正面和負面兩個(gè)方面增加了10個(gè)關(guān)于授權主題和創(chuàng )造性的審查案例
實(shí)施例1為抽象模型構建方法,不涉及與具體應用領(lǐng)域的組合,不收錄
技術(shù)特征,屬于專(zhuān)利法第25.1.2條規定的智力活動(dòng)規則和方法。示例 2、3 和 4 屬于人工智能、商業(yè)模式和區塊鏈領(lǐng)域的授權對象,而示例 5 和 6 是反面示例。例7和例9是創(chuàng )造性是由于將技術(shù)特征的功能支持和相互作用作為一個(gè)整體考慮而引起的情況,以及由于相應的內容已在比較文件中公開(kāi)而使技術(shù)特征不具有創(chuàng )造性的情況。
?。┘毣f(shuō)明書(shū)和權利要求書(shū)的起草要求
進(jìn)一步細化了編寫(xiě)手冊的要求,例如提及算法如何與特定技術(shù)領(lǐng)域相結合,并指定用戶(hù)體驗效果。權利要求書(shū)的起草強調,權利要求應當記錄技術(shù)特征與功能上相互支持、與技術(shù)特征相互作用的算法或者業(yè)務(wù)規則和方法。
小技巧:京東關(guān)鍵詞鏈接在哪復制?關(guān)鍵詞優(yōu)化技巧
大家應該都知道,京東的每一個(gè)商品都有一個(gè)鏈接,就是為了方便消費者找到我們的商品。作為消費者,如果看到滿(mǎn)意的商品,可以復制鏈接分享出去。
1. 關(guān)鍵詞 鏈接復制到哪里了?
1、打開(kāi)手機【京東】APP,在商城中找到您想要的商品,點(diǎn)擊商品頁(yè)面;

2. 產(chǎn)品頁(yè)面右上角有分享圖標,點(diǎn)擊分享圖標。點(diǎn)擊后,在屏幕下方彈出的選項中點(diǎn)擊【復制鏈接】。復制完成后,屏幕上會(huì )短暫提示【復制成功】!
2. 關(guān)鍵詞 優(yōu)化技術(shù)
1、對于京東關(guān)鍵詞的選擇,作為商家,這個(gè)時(shí)候需要多關(guān)注與商品相關(guān)度高的流量詞和熱詞,一網(wǎng)打盡。選詞一般有三種方法,一是通過(guò)京東搜索引擎選擇合適的關(guān)鍵詞,二是從京東商智的行業(yè)關(guān)鍵詞中選擇,最后一種是選擇對 關(guān)鍵詞 通過(guò) Express 的產(chǎn)品推送詞。所以在關(guān)鍵詞的區域,采集
的越多,組合的可能性就越多,所以關(guān)鍵詞的采集
千萬(wàn)不能馬虎。

2.完成關(guān)鍵詞的采集后,下一步就是對采集到的關(guān)鍵詞進(jìn)行篩選。篩選所有采集
的關(guān)鍵詞,然后選擇與您的產(chǎn)品最相關(guān)、流量大、引流效果好的關(guān)鍵詞。
3.標題越多越好。至少在京東,標題越短,得分越高。所以在組合關(guān)鍵詞的時(shí)候,一定要多注意標題的長(cháng)度。此外,還需要注意關(guān)鍵詞之間的距離,以及關(guān)鍵詞的順序,這些都會(huì )影響題目的得分。一般來(lái)說(shuō),關(guān)鍵詞的組合多為品牌詞+熱搜詞/流量詞+產(chǎn)品名稱(chēng)+產(chǎn)品賣(mài)點(diǎn)+規格+關(guān)鍵詞。
在京東,一件商品能獲得多少流量,與商家的推廣方式有關(guān)。同時(shí),如果為產(chǎn)品設置鏈接,方便消費者分享我們的產(chǎn)品,也有助于增加產(chǎn)品流量。
解決方案:專(zhuān)利審查指南修改草案 | 關(guān)于算法和商業(yè)規則的10個(gè)案例
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 80 次瀏覽 ? 2022-12-01 03:26
說(shuō)明一、修訂的背景和主要過(guò)程 隨著(zhù)互聯(lián)網(wǎng)技術(shù)和信息技術(shù)的不斷發(fā)展,涉及新技術(shù)、新領(lǐng)域、新業(yè)態(tài)的發(fā)明創(chuàng )造不斷涌現。因此,為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體進(jìn)一步明確涉及人工智能等新技術(shù)、新領(lǐng)域的專(zhuān)利申請審查規則的需要,支持創(chuàng )新驅動(dòng)發(fā)展宗旨, 國家知識產(chǎn)權局已啟動(dòng)《專(zhuān)利審查指南》的相關(guān)修訂工作。涉及人工智能等新技術(shù)和新領(lǐng)域、新業(yè)態(tài)的發(fā)明專(zhuān)利申請與其他發(fā)明專(zhuān)利申請明顯不同,其特點(diǎn)是,在發(fā)明解決方案中,除技術(shù)外,一般還收錄
算法或商業(yè)方法等智力活動(dòng)規則和方法的特征。修訂后的《指南》明確了此類(lèi)申請的審查規則,并通過(guò)典型案例進(jìn)行了解釋。一方面,將審查實(shí)踐中探索的有益做法提升為《專(zhuān)利審查指南》,有助于統一審查標準,同時(shí)為如何更好地撰寫(xiě)此類(lèi)申請、促進(jìn)申請質(zhì)量的提高提供指導。另一方面,明確規定此類(lèi)應用的特點(diǎn)應與算法或商業(yè)方法等智力活動(dòng)規則的技術(shù)特征和特征相結合,正確把握發(fā)明的技術(shù)貢獻,從而提高審查的質(zhì)量和效率,促進(jìn)新興技術(shù)和新業(yè)態(tài)、新模式的進(jìn)一步發(fā)展和成長(cháng)。應當指出的是,修正案的指導思想是在現行《專(zhuān)利法》和《實(shí)施細則》的框架內及時(shí)響應實(shí)際需求和及時(shí)解決實(shí)際問(wèn)題,同時(shí)盡可能與現行指南第9章的框架結構保持一致,以便于審查員和公眾的理解。
在充分調查社會(huì )需求和一線(xiàn)審查員具體工作實(shí)踐的基礎上,國家知識產(chǎn)權局制定了《專(zhuān)利審查指南》第二部分第九章修正草案(
初稿)于2019年9月中旬,征求局內有關(guān)部門(mén)意見(jiàn),并專(zhuān)門(mén)召開(kāi)創(chuàng )新主體和代理人咨詢(xún)會(huì ),聽(tīng)取各方意見(jiàn),經(jīng)完善后形成《專(zhuān)利審查指南第二編第九章修正草案(征求意見(jiàn)稿)》及其說(shuō)明。二、《主要修正案草案》在第二部分第九章中專(zhuān)門(mén)增加了第六節,根據具體情況,明確了申請的授權、新穎性和創(chuàng )造性、權利要求和說(shuō)明書(shū)撰寫(xiě)等主題。主要修改如下:(1)強調專(zhuān)利審查中不應簡(jiǎn)單地將技術(shù)特征和算法特征、業(yè)務(wù)規則和方法特征分開(kāi) 第6.1節“審查標準”確立了各審查條款的一般原則:“在審查中,不應將技術(shù)特征與算法或者商業(yè)規則和方法特征分開(kāi), 但權利要求書(shū)記載的所有內容都要整體分析,涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和產(chǎn)生的技術(shù)效果都要進(jìn)行分析?!埃?)明確了根據專(zhuān)利法第二十五條不排除技術(shù)特征的加入,如果權利要求除算法特征或者商業(yè)規則和方法外還含有技術(shù)特征,則權利要求整體不是智力活動(dòng)的規則和方法,根據專(zhuān)利法第二十五條第一款第2項的規定,不得排除獲得專(zhuān)利權的可能性。(3)明確了專(zhuān)利法第2條審查標準是否為技術(shù)方案的判斷,進(jìn)一步細化了指南總章技術(shù)問(wèn)題、技術(shù)手段和技術(shù)效果“三要素”判斷方法下的審查標準。
只要該算法能結合特定的技術(shù)應用領(lǐng)域解決一定的技術(shù)問(wèn)題,就可以通過(guò)專(zhuān)利第2條的審查。(4) 考慮到算法特征與在技術(shù)特征和功能方面相互作用的商業(yè)規則和方法特征對發(fā)明步驟的技術(shù)貢獻,在審查同時(shí)收錄
技術(shù)特征和算法特征的發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并與技術(shù)特征相互作用的算法特征或商業(yè)規則和方法作為一個(gè)整體考慮,或者 商業(yè)規則和方法。修正案草案進(jìn)一步解釋了其含義。(5)從正反兩方面增加了10個(gè)關(guān)于資助主題和創(chuàng )造性的審查案例,實(shí)施例1為抽象模型建立方法,不涉及與具體應用領(lǐng)域的結合,不收錄
技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項規定的智力活動(dòng)規則和方法。示例 2、3 和 4 屬于人工智能、商業(yè)模式和區塊鏈領(lǐng)域的授權對象,而示例 5 和 6 是反面示例。例7和例9是創(chuàng )造性是由于將技術(shù)特征的功能支持和相互作用作為一個(gè)整體考慮而引起的情況,以及由于相應的內容已在比較文件中公開(kāi)而使技術(shù)特征不具有創(chuàng )造性的情況。(6)細化說(shuō)明書(shū)和權利要求書(shū)的編寫(xiě)要求,進(jìn)一步細化說(shuō)明書(shū)的編寫(xiě)要求,如提及如何將算法與特定技術(shù)領(lǐng)域相結合,明確用戶(hù)體驗效果等。權利要求書(shū)的起草強調,權利要求應當記錄技術(shù)特征與功能上相互支持、與技術(shù)特征相互作用的算法或者業(yè)務(wù)規則和方法。
附件1:《專(zhuān)利審查指南》第二部分第九章修正案草案(征求意見(jiàn)稿) 6.《含有算法特征或者業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請審查規定》涉及人工智能、互聯(lián)網(wǎng)+、大數據、區塊鏈等發(fā)明專(zhuān)利申請,一般收錄
算法或業(yè)務(wù)規則和方法等智力活動(dòng)的規則和方法特征,本節旨在根據 專(zhuān)利法及其實(shí)施細則。6.1 審查基準審查應針對要求保護的解決方案進(jìn)行,即權利要求定義的解決方案。在審查中,不應簡(jiǎn)單地將技術(shù)特征與算法特征或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記載的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和取得的技術(shù)效果。6.1.1 根據《專(zhuān)利法》第25.1.2條的規定,權利要求涉及抽象算法或者簡(jiǎn)單的商業(yè)規則和方法,且不收錄
任何技術(shù)特征的,屬于專(zhuān)利法第25.1.2條規定的智力活動(dòng)規則和方法,不得申請專(zhuān)利。例如,基于抽象算法建立數學(xué)模型且不收錄
任何技術(shù)特征的方法,屬于專(zhuān)利法第25.1.2條規定的不應授予專(zhuān)利權的情形。再如基于用戶(hù)消費額度的返利方式,該方法所收錄
的特征均為與返利規則相關(guān)的商業(yè)規則和方法特征,不收錄
任何技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項第2項規定的不應授予專(zhuān)利權的情形。
如果索賠除算法特征或者
商業(yè)規則和方法外,還含有技術(shù)特征,權利要求整體上不是智力活動(dòng)的規則或者方法的,依照專(zhuān)利法第二十五條第一款第2項的規定,不排除取得專(zhuān)利權的可能性。 6.1.2 根據專(zhuān)利法第2.2條進(jìn)行審查如果權利要求的整體權利要求不屬于第25.1.2條的情況專(zhuān)利法排除了專(zhuān)利權的取得,有必要審查其是否屬于專(zhuān)利法第2.2條所指的技術(shù)方案。在檢查收錄
算法特征或業(yè)務(wù)規則和方法特征的權利要求是否為技術(shù)解決方案時(shí),有必要將權利要求中描述的所有特征作為一個(gè)整體來(lái)考慮。如果權利要求記載了利用自然規律的技術(shù)手段用于要解決的技術(shù)問(wèn)題,并由此獲得符合自然規律的技術(shù)效果的,則權利要求的解決方案屬于專(zhuān)利法第二條第二款所述的技術(shù)方案。例如,如果權利要求中算法涉及的步驟與要解決的技術(shù)問(wèn)題密切相關(guān),例如算法處理的數據是技術(shù)領(lǐng)域具有確切技術(shù)意義的數據,并且算法的執行可以直接反映利用自然規律解決技術(shù)問(wèn)題的過(guò)程, 并且取得了技術(shù)效果,那么通常權利要求的解決方案屬于專(zhuān)利法第2條第2款所述的技術(shù)方案。6.1.3 新穎性和創(chuàng )造性的審查 審查含有算法特征或者商業(yè)規則和方法特征的發(fā)明專(zhuān)利申請的新穎性時(shí),應當考慮權利要求書(shū)中描述的所有特征,包括技術(shù)特征和算法特征或者商業(yè)規則和方法特征。審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并在技術(shù)特征方面相互作用的算法特征或者商業(yè)規則和方法特征作為一個(gè)整體來(lái)考慮?!肮δ苌舷嗷ブС?、相互作用”是指算法特征或業(yè)務(wù)規則、方法特征與技術(shù)特征緊密結合,共同構成解決技術(shù)問(wèn)題的技術(shù)手段,并能獲得相應的技術(shù)效果。例如,如果權利要求中的算法應用于特定的技術(shù)領(lǐng)域,能夠解決特定的技術(shù)問(wèn)題,那么可以認為算法特征和技術(shù)特征在功能上是相互支持的,具有交互關(guān)系,算法特征成為所采取技術(shù)手段的組成部分, 在進(jìn)行創(chuàng )造性審查時(shí)應考慮算法特征對方案的貢獻。再如,如果權利要求中商業(yè)規則和方法特征的實(shí)現需要對技術(shù)手段進(jìn)行調整或改進(jìn),則可以認為業(yè)務(wù)規則和方法特征與技術(shù)特征在功能上是相互支持和相互作用的,在進(jìn)行創(chuàng )造性審查時(shí)應考慮所述業(yè)務(wù)規則和方法特征對程序的貢獻。6.2 審查示例 以下根據上述審查標準,對含有算法特征或業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請給出審查實(shí)例。(一)含有專(zhuān)利法第二十五條第一款第2項范圍內的算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不屬于專(zhuān)利保護標的。
【實(shí)施例1】一種建立數學(xué)模型的方法應用內容概述發(fā)明專(zhuān)利申請的解決方案是通過(guò)增加訓練樣本的數量來(lái)提高模型精度的數學(xué)模型的方法。建模方法還使用與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù)的訓練樣本作為第一分類(lèi)任務(wù)數學(xué)模型的訓練樣本,從而增加訓練樣本的數量,并利用訓練樣本的特征值,提取特征值、標簽值等來(lái)訓練相關(guān)的數學(xué)模型, 最后得到第一個(gè)分類(lèi)任務(wù)的數學(xué)模型,由于訓練樣本數量少,過(guò)度擬合,建模精度差。3.根據權利要求所述的一種建立數學(xué)模型的方法,其特征在于,其特征在于,其包括以下步驟:根據所述第一分類(lèi)任務(wù)的訓練樣本中的特征值和所述第二分類(lèi)任務(wù)的訓練樣本中的特征值,對所述初始特征提取模型進(jìn)行訓練,得到所述目標特征提取模型;其中,第二分類(lèi)任務(wù)是與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù);根據目標特征提取模型,分別處理第一分類(lèi)任務(wù)各訓練樣本中的特征值,得到各訓練樣本對應的提取特征值;將提取的每個(gè)訓練樣本對應的特征值和標簽值組成,提取訓練樣本,訓練初始分類(lèi)模型得到目標分類(lèi)模型;目標分類(lèi)模型和目標特征提取模型由第一個(gè)分類(lèi)任務(wù)的數學(xué)模型組成。分析與結論 該方案不涉及任何具體的應用領(lǐng)域,其中訓練樣本的特征值、提取的特征值、標簽值、目標分類(lèi)模型和目標特征提取模型是抽象的通用數據,利用訓練樣本的相關(guān)數據訓練數學(xué)模型的處理過(guò)程是一系列抽象的數學(xué)方法步驟, 最終結果也是一個(gè)抽象的通用分類(lèi)數學(xué)模型。
該方案是一種抽象模型建立方法,其處理對象、過(guò)程和結果不涉及與具體應用領(lǐng)域的結合,屬于抽象數學(xué)方法的優(yōu)化,整個(gè)方案不收錄
任何技術(shù)特征,本發(fā)明專(zhuān)利申請的解決屬于第25條規定的智力活動(dòng)規則和方法, 專(zhuān)利法第1條第(2)項,不屬于專(zhuān)利保護的客體。(二)含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,利用技術(shù)手段解決技術(shù)問(wèn)題,取得技術(shù)效果的,屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,屬于專(zhuān)利保護客體?!緦?shí)施例2】卷積神經(jīng)網(wǎng)絡(luò )模型訓練方法的應用內容概述 本發(fā)明專(zhuān)利申請對卷積層各級訓練圖像進(jìn)行卷積運算和最大池化運算,并對最大池化運算后獲得的特征圖像進(jìn)一步進(jìn)行水平池化運算,使訓練好的CNN模型在識別圖像類(lèi)別時(shí)能夠識別出任何大小的圖像。 申請要求一種卷積神經(jīng)網(wǎng)絡(luò )CNN模型的訓練方法,其特征在于,該方法包括:獲取待訓練CNN模型的初始模型參數,初始模型參數包括各卷積層的初始卷積核、各層級卷積層的初始偏置矩陣、全連接層的初始權重矩陣和全連接層的初始偏置向量;獲取多個(gè)訓練圖像;在各層級卷積層上,利用各層級卷積層的初始卷積核和初始偏置矩陣分別對各訓練圖像進(jìn)行卷積運算和最大池化運算,得到各層次卷積層上各訓練圖像的第一特征圖像;對至少一個(gè)卷積層上每個(gè)訓練圖像的第一特征圖像進(jìn)行水平池化,得到每個(gè)卷積層上每個(gè)訓練圖像的第二特征圖像。根據各水平卷積層上每個(gè)訓練圖像的第二特征圖像確定每個(gè)訓練圖像的特征向量;根據初始權重矩陣和初始偏差向量對每個(gè)特征向量進(jìn)行處理,得到每個(gè)訓練圖像的類(lèi)概率向量;根據每個(gè)訓練圖像的類(lèi)概率向量和每個(gè)訓練圖像的初始類(lèi)別,計算類(lèi)誤差;基于分類(lèi)誤差,調整待訓練CNN模型的模型參數;基于調整后的模型參數和多個(gè)訓練圖像,繼續模型參數調整過(guò)程,直到迭代次數達到預設次數;迭代次數達到預設次數時(shí)得到的模型參數作為訓練好的CNN模型的模型參數。
分析與結論 該解決方案是卷積神經(jīng)網(wǎng)絡(luò )CNN模型的一種訓練方法,闡明了模型訓練方法每一步處理的數據都是圖像數據以及每一步如何處理圖像數據,體現了神經(jīng)網(wǎng)絡(luò )訓練算法與圖像信息處理密切相關(guān)。該方案解決了如何克服CNN模型只能識別固定尺寸圖像的技術(shù)難題,該方案采用不同卷積層對圖像進(jìn)行不同處理和訓練的手段,利用遵循自然規律的技術(shù)手段,獲得訓練好的CNN模型可以識別任意大小圖像的技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體?!纠?】共享單車(chē)使用概述 申請內容發(fā)明專(zhuān)利申請提出了一種共享單車(chē)的使用方法,通過(guò)獲取用戶(hù)終端設備的位置信息和一定距離內的共享單車(chē)狀態(tài)信息,使用戶(hù)根據共享單車(chē)的狀態(tài)信息準確找到可以騎行的共享單車(chē), 通過(guò)提示騎行和引導用戶(hù)停車(chē),方便了租賃自行車(chē)的使用和管理,節省了用戶(hù)的時(shí)間,改善了用戶(hù)體驗。申請要求一種共享單車(chē)的使用方法,其特征在于其包括以下步驟:第一步,用戶(hù)通過(guò)終端設備向服務(wù)器發(fā)送使用共享單車(chē)的請求;步驟二,服務(wù)器獲取用戶(hù)的第一位置信息,查找與第一位置信息對應的一定距離范圍內的共享單車(chē)的第二位置信息,以及這些共享單車(chē)的狀態(tài)信息,并將共享單車(chē)的第二位置信息和狀態(tài)信息發(fā)送給終端設備,其中第一位置信息和第二位置信息通過(guò)GPS信號獲取;第三步:根據終端設備上顯示的共享單車(chē)位置信息,用戶(hù)找到可以騎行的目標共享單車(chē);第四步:用戶(hù)通過(guò)終端設備掃描目標共享單車(chē)車(chē)身上的二維碼,通過(guò)服務(wù)器認證,獲得目標共享單車(chē)使用權限;第五步:服務(wù)器根據乘車(chē)情況向用戶(hù)推送停車(chē)提示,如果用戶(hù)將車(chē)停在指定區域,則以?xún)?yōu)惠資費計費,否則按標準資費計費;步驟6,用戶(hù)根據提示進(jìn)行選擇,騎行結束后,用戶(hù)對共享單車(chē)進(jìn)行鎖定動(dòng)作,共享單車(chē)檢測鎖定狀態(tài)并向服務(wù)器發(fā)送騎行完成的信號。
分析與結論 解決方案涉及共享單車(chē)的使用方法,解決共享單車(chē)位置匹配并獲得共享單車(chē)使用權的技術(shù)問(wèn)題,
方案通過(guò)在終端設備和服務(wù)器上執行計算機程序,實(shí)現對用戶(hù)使用共享單車(chē)行為的控制和引導,體現對位置信息的控制、認證等數據采集和計算,利用遵循自然規律的技術(shù)手段實(shí)現共享單車(chē)位置的匹配, 獲得共享單車(chē)使用權等技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體?!緦?shí)施例4】區塊鏈節點(diǎn)間通信方法及設備應用內容概述本發(fā)明專(zhuān)利申請提出了一種區塊鏈節點(diǎn)通信方法及裝置,其中區塊鏈中的業(yè)務(wù)節點(diǎn)可以在建立通信連接之前,根據通信請求中攜帶的CA證書(shū)和預配置的CA信任列表判斷是否建立通信連接, 從而降低業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,提高存儲在區塊鏈中的數據的安全性。權利要求1.一種區塊鏈節點(diǎn)通信方法,所述區塊鏈網(wǎng)絡(luò )中的區塊鏈節點(diǎn)包括業(yè)務(wù)節點(diǎn),其中,所述業(yè)務(wù)節點(diǎn)存儲由CA授權中心發(fā)送的證書(shū),并預配置有CA信任列表,該方法包括:所述第一區塊鏈節點(diǎn)接收所述第二區塊鏈節點(diǎn)發(fā)送的通信請求,其中所述通信請求攜帶所述第二區塊鏈節點(diǎn)的第二證書(shū);確定與第二個(gè)證書(shū)對應的 CA 標識;確定第二個(gè)證書(shū)對應的 CA ID 是否存在于CA信任列表中;如果是這樣,則與第二個(gè)區塊鏈節點(diǎn)建立通信連接;否則,不會(huì )與第二個(gè)區塊鏈節點(diǎn)建立通信連接。
分析與結論 本申請需要解決的問(wèn)題是如何防止區塊鏈業(yè)務(wù)節點(diǎn)在聯(lián)盟鏈網(wǎng)絡(luò )中泄露用戶(hù)隱私數據,這是提高區塊鏈數據安全性的技術(shù)問(wèn)題;通過(guò)在通信請求中攜帶CA證書(shū),并預先配置CA信任列表來(lái)確定是否建立連接,業(yè)務(wù)節點(diǎn)僅限于可以建立連接的對象,從而提高區塊鏈中數據的安全性。因此,本申請中的區塊鏈節點(diǎn)間通信方式實(shí)現了業(yè)務(wù)節點(diǎn)之間的安全通信,降低了業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,屬于專(zhuān)利法保護的對象。(三)含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不解決技術(shù)問(wèn)題,或者不使用技術(shù)手段,或者未取得技術(shù)效果,不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,因此不屬于專(zhuān)利保護客體?!緦?shí)施例5】一種消費返利方法應用內容概述發(fā)明專(zhuān)利申請提出了一種消費返利方法,通過(guò)計算機實(shí)現設定的返利規則,向用戶(hù)發(fā)放消費現金券,從而提高用戶(hù)的消費意愿,為商家獲取更多利潤。該應用程序要求一種消費返利的方法,其特征在于它包括以下步驟:當用戶(hù)在商家消費時(shí),商家根據消費金額返還一定的現金券,具體來(lái)說(shuō),商家使用計算機計算用戶(hù)的消費金額,并將用戶(hù)的消費金額R除以M區間, 其中M為整數,范圍1到范圍M的值由小到大,返還代金券的金額F也分為M值,M值也從小到大排列;根據計算機的計算值,判斷當用戶(hù)當前消費金額在范圍1時(shí),返利金額為第一值,當用戶(hù)當前消費金額在范圍2范圍內時(shí),返利金額為第二值,依此類(lèi)推,將相應范圍的返利金額返還給用戶(hù)。
分析與結論 解決方案涉及計算機執行的消費返利方法,該方法處理用戶(hù)的消費數據,要解決的問(wèn)題是如何促進(jìn)用戶(hù)的消費,這并不構成技術(shù)問(wèn)題,所使用的手段是通過(guò)計算機實(shí)現人為設定的返利規則,
但計算機的限制只是按照規定的規則,根據用戶(hù)的消費量來(lái)確定返利金額,不受自然規律的約束,因此沒(méi)有使用任何技術(shù)手段。該程序獲得的效果只是促進(jìn)用戶(hù)消費,而不是符合自然規律的技術(shù)效果。因此,發(fā)明專(zhuān)利申請不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,不屬于專(zhuān)利保護的客體?!緦?shí)施例6】一種基于電力消費特征的經(jīng)濟景氣指數分析方法 應用內容概述 發(fā)明專(zhuān)利申請通過(guò)統計各種經(jīng)濟指標和用電量指標來(lái)評估待測地區的經(jīng)濟景氣指數?;趨^域用電量特征的聲稱(chēng)經(jīng)濟景氣指數分析方法,其特征在于其包括以下步驟:根據待測區域的經(jīng)濟數據和用電量數據,選取待測地區經(jīng)濟景氣指數的初步指標,其中初步指標包括經(jīng)濟指標和用電量指標;通過(guò)聚類(lèi)分析法和時(shí)差相關(guān)分析法,確定待檢測區域經(jīng)濟景氣指數體系,包括領(lǐng)先指標、一致指標和滯后指標;根據待測區域的經(jīng)濟景氣指數體系,采用綜合指數計算方法得到被測地區的經(jīng)濟景氣指數。分析與結論 解決方案是一種經(jīng)濟景氣指數分析計算方法,其處理對象是各種經(jīng)濟指標、用電指標,所解決的問(wèn)題就是判斷經(jīng)濟走勢,不構成技術(shù)問(wèn)題,采用的手段是根據經(jīng)濟數據和用電量數據來(lái)分析經(jīng)濟形勢, 只有按照經(jīng)濟規律使用經(jīng)濟管理手段,不受自然規律的約束,所以不使用技術(shù)手段,程序最終才能獲得經(jīng)濟景氣指數來(lái)評價(jià)經(jīng)濟,它不是符合自然規律的技術(shù)效果,因此解決方案不屬于專(zhuān)利法第2條第2款規定的技術(shù)解決方案,也不是專(zhuān)利保護的客體。
?。?)在進(jìn)行創(chuàng )造性審查時(shí),應考慮在功能上相互支持并與技術(shù)特征相互作用的算法特征或商業(yè)規則和方法特征對解決的貢獻。 【例7】一種基于多傳感器信息的人工機器人跌倒狀態(tài)檢測方法 應用內容概述 現有的人形機器人行走時(shí)墜落狀態(tài)的判斷主要使用姿態(tài)信息或ZMP 點(diǎn)位置信息,但這個(gè)判斷并不全面。發(fā)明專(zhuān)利申請提出了一種基于多個(gè)傳感器的人形機器人墜落狀態(tài)檢測方法,該方法實(shí)時(shí)集成了機器人步態(tài)階段信息、姿態(tài)信息和ZMP點(diǎn)位置信息,并利用模糊決策系統確定機器人當前的穩定性和可控性,從而為機器人的下一步動(dòng)作提供參考。權利要求2.根據權利要求所述的一種基于多傳感器信息的人形機器人跌落狀態(tài)檢測方法,其特征在于,該方法收錄
以下步驟:(1)將姿態(tài)傳感器信息、零扭矩點(diǎn)ZMP傳感器信息和機器人行走階段信息融合,建立分層傳感器信息融合模型,實(shí)現人形機器人的穩定性確定;(2)采用前后模糊決策系統和左右模糊決策系統分別確定機器人在前后和左右方向的穩定性,具體步驟如下:(1)根據機器人支撐腳與地面的接觸和離線(xiàn)步態(tài)規劃確定機器人行走階段;(2)采用模糊推理算法對ZMP點(diǎn)的位置信息進(jìn)行模糊處理;(3)采用模糊推理算法對機器人的俯仰角或滾動(dòng)角進(jìn)行模糊化;(4)確定輸出隸屬函數;(5)按步驟(1)~步驟(4)確定模糊推理規則;(6)去模糊。分析與結論 對比文獻1公開(kāi)
了基于人形機器人傳感器信息的步態(tài)規劃和反饋控制,并根據相關(guān)融合信息判斷機器人的穩定性,包括基于多個(gè)傳感器信息的人形機器人穩定狀態(tài)評價(jià),即對比文獻1公開(kāi)了發(fā)明專(zhuān)利申請解決方案中的步驟(1), 與比較文檔1的區別在于使用步驟(2)特定算法的模糊決策方法?;趹梦臋n,該方案有效提高了機器人的穩態(tài)及其可能下落方向的可靠性和準確性。以姿態(tài)信息、ZMP點(diǎn)位置信息和行走階段信息為輸入參數,通過(guò)模糊算法輸出確定人形機器人穩定狀態(tài)的信息,為進(jìn)一步準確的姿態(tài)調整指令提供了依據。因此,上述算法特征和技術(shù)特征在功能上相互支持并具有交互關(guān)系,并且相對于比較文件1,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何判斷機器人的穩定狀態(tài)并準確預測其可能的下降方向。上述模糊決策的實(shí)現算法及其對機器人穩態(tài)應用的判斷在其他比較文獻中未公開(kāi),也不是本領(lǐng)域的常識,現有技術(shù)整體上不存在使本領(lǐng)域技術(shù)人員改進(jìn)比較文件1以獲得要求保護的發(fā)明的靈感, 并且要求保護的發(fā)明相對于最接近的現有技術(shù)是非顯而易見(jiàn)的和創(chuàng )造性的。 【實(shí)施例8】基于協(xié)同進(jìn)化和多群遺傳算法的多機器人路徑規劃系統應用內容概述 現有的多移動(dòng)機器人運動(dòng)規劃控制結構通常采用集中規劃方法,將多機器人系統視為具有多個(gè)自由度的復雜機器人, 系統內有規劃員統一完成所有機器人的運動(dòng)規劃,存在計算時(shí)間長(cháng)、實(shí)用性差的缺點(diǎn)。
發(fā)明專(zhuān)利申請提供了一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統。機器人的每條路徑都由一條染色體表示,以最短距離、平滑度和安全距離作為設計路徑適應度函數的三個(gè)目標,利用Messy遺傳算法優(yōu)化每個(gè)機器人的最優(yōu)路徑。申請要求一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統,其特征在于:(1)機器人的路徑由染色體表示,染色體以節點(diǎn)鏈表的形式表示,即[(x,y),time],(x,y,time∈R),(x,y)表示機器人的位置坐標, 時(shí)間表示將該節點(diǎn)從前一個(gè)節點(diǎn)移出所需的時(shí)間消耗,起始節點(diǎn)的時(shí)間等于0,除初始節點(diǎn)的初始位置和結束節點(diǎn)的固定目標位置外,每個(gè)機器人個(gè)體的染色體都是可變的;(2)每個(gè)機器人機器人(i)的路徑路徑(j)的適應度函數表示為φ(pi,j):||圓周率,J||=距離(pi,j)+ws×smooth(pi,j)+wt×Time(pi,j) 其中||圓周率,J||是距離、平滑度和時(shí)間消耗的線(xiàn)性組合,ws是平滑度加權因子,wt是時(shí)間加權因子;距離(pi,j)表示路徑長(cháng)度,smooth(pi,j)表示路徑的平滑度,Time(pi,j)表示路徑pi,j的時(shí)間消耗;每個(gè)機器人使用所描述的適應度函數,并通過(guò)Messy遺傳算法優(yōu)化最佳路徑。
分析與結論 對比文檔1公開(kāi)了一種基于協(xié)同進(jìn)化的多機器人路徑規劃方法,其中采用自適應混沌算法獲得最優(yōu)路徑。發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于通過(guò)Messy遺傳算法實(shí)現多機器人路徑規劃。在該方案中,利用適應度函數約束Messy遺傳算法,通過(guò)遺傳算法優(yōu)化后得到機器人的前向路徑,該解的算法特征和技術(shù)特點(diǎn)相互支持,在功能上相互作用,從而實(shí)現機器人前進(jìn)路徑的優(yōu)化。與對比文獻1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何使機器人基于特定算法在最優(yōu)路徑上前進(jìn)。對比文件2揭示了包括混沌算法在內的多種遺傳算法可用于路徑優(yōu)化,使用Messy遺傳算法可以解決其他算法的缺點(diǎn),獲得更合理的優(yōu)化結果?;趯Ρ任募?給出的啟示,本領(lǐng)域技術(shù)人員有動(dòng)機將比較文件1和比較文件2結合起來(lái),得到發(fā)明專(zhuān)利申請的技術(shù)方案。因此,要求保護的發(fā)明相對于比較文件1和比較2的組合是顯而易見(jiàn)的,并且不具有創(chuàng )造性?!緦?shí)施例9】一種物流配送方法的申請概述了如何在貨物配送過(guò)程中有效提高貨物配送效率,降低配送成本,這是發(fā)明專(zhuān)利申請所要解決的問(wèn)題。物流人員到達配送地點(diǎn)后,可以通知特定配送區域內的多個(gè)訂貨用戶(hù)以服務(wù)器推送消息的形式同時(shí)提貨到訂貨用戶(hù)終端,從而提高配送效率,降低配送成本。
申請要求一種物流配送方法通過(guò)分批通知用戶(hù)取貨
來(lái)提高物流配送的效率,該方法包括:當調度員需要通知用戶(hù)取貨時(shí),調度員通過(guò)手持物流終端向服務(wù)器發(fā)送貨物已經(jīng)到達的通知;服務(wù)器分批通知調度員交貨范圍內的所有訂單;收到通知的訂購用戶(hù)根據通知信息完成取件;其中,用于批量通知的服務(wù)器的具體實(shí)現方式是,服務(wù)器根據配送操作員ID確定調度員ID對應的配送距離范圍內的所有目標訂單信息,并以物流終端的當前位置、物流終端的當前位置以及物流終端發(fā)送的到達通知中攜帶的相應配送范圍為中心, 然后將通知信息推送到所有目標訂單信息中訂單用戶(hù)賬戶(hù)對應的訂單用戶(hù)終端。分析結論對比文件1公開(kāi)了一種物流配送方法,其中物流終端掃描配送單上的條形碼,并將掃描到的信息發(fā)送到服務(wù)器,通知服務(wù)器貨物已經(jīng)到達;服務(wù)器獲取掃描信息中的排序用戶(hù)信息,并向排序用戶(hù)發(fā)送通知;收到通知的訂購用戶(hù)根據通知信息完成取件。本發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于,批量通知用戶(hù)訂單的到來(lái),為了實(shí)現批量通知,方案中服務(wù)器、物流終端和用戶(hù)終端之間的物理架構和數據通信進(jìn)行了相應的調整,因此取件通知規則和具體的批量通知實(shí)現方法在功能上相互支持,并具有 交互關(guān)系。
與比較文檔1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是如何提高訂單到達通知的效率,從而提高貨物配送的效率。從用戶(hù)的角度來(lái)看,用戶(hù)可以更快地獲得有關(guān)訂單到達的信息,這也改善了用戶(hù)體驗。由于現有技術(shù)不具備對上述比較文獻1的技術(shù)啟發(fā)進(jìn)行改進(jìn),以獲得用于發(fā)明專(zhuān)利申請的解決方案,該解決方案具有創(chuàng )造性?!纠?0】一種動(dòng)態(tài)觀(guān)點(diǎn)演化的可視化方法 應用內容概述 近年來(lái),人們越來(lái)越多地通過(guò)社交平臺表達自己的觀(guān)點(diǎn)和想法,人們在社交平臺上發(fā)布的情感內容反映了人們觀(guān)點(diǎn)的演變,可以看到事件的發(fā)展、變化和趨勢。該發(fā)明專(zhuān)利申請通過(guò)自動(dòng)采集
人們在社交平臺上發(fā)布的信息并分析其中的情緒,通過(guò)計算機繪制情緒可視化地圖,幫助人們更好地了解不同時(shí)期的情緒強度和隨時(shí)間演變的趨勢。權利要求保護要求是一種動(dòng)態(tài)視圖演變的可視化方法,該方法包括:步驟1)通過(guò)計算設備確定所采集
信息集中信息的情感隸屬關(guān)系和情感分類(lèi),信息的情感隸屬程度表示信息屬于某種情感分類(lèi)的概率;步驟2)將情緒分類(lèi)為正面、中性或負面,具體分類(lèi)方法是:如果點(diǎn)數p除以點(diǎn)數Q值r大于閾值a,則認為情緒分類(lèi)為正,如果值r小于閾值b,則認為情緒分類(lèi)為負, 如果值 b ≤ r≤a,則情緒分類(lèi)為中性,其中 a > b; 步驟3)基于信息的情感分類(lèi),自動(dòng)建立信息集合的情感可視化圖形的幾何布局,橫軸表示信息生成時(shí)間,縱軸表示屬于每個(gè)情感分類(lèi)的信息數量;步驟4)計算設備根據信息的情感隸屬性對已建立的幾何布局進(jìn)行著(zhù)色,并根據信息顏色的梯度順序對每個(gè)情感分類(lèi)層上的信息進(jìn)行著(zhù)色。分析
與結論 比較文件1公開(kāi)了一種基于情感的可視化分析方法,其中時(shí)間表示為橫軸,不同時(shí)間的每個(gè)色帶的寬度表示當時(shí)的情緒度量,不同的色帶表示不同的情緒。本發(fā)明專(zhuān)利申請的解決方案與比較文件1的區別在于步驟2中設置的情緒的具體分類(lèi)規則)。從應用內容可以看出,即使情感分類(lèi)規則不同,對應數據著(zhù)色的技術(shù)手段也可以不變,即上述情感分類(lèi)規則和具體的可視化方法在功能上并不相互支持和交互。與對比文獻1相比,發(fā)明專(zhuān)利申請僅提出了情緒分類(lèi)的新規則,并未實(shí)際解決任何技術(shù)問(wèn)題,對現有技術(shù)沒(méi)有做出技術(shù)貢獻。因此,要求保護的發(fā)明不具有相對于比較文件1的創(chuàng )造性步驟。6.3 說(shuō)明書(shū)和權利要求的起草6.3.1 說(shuō)明書(shū)的起草:發(fā)明專(zhuān)利申請說(shuō)明書(shū)含有算法特征或者業(yè)務(wù)規則和方法特征的,說(shuō)明書(shū)應當清楚、完整地描述發(fā)明為解決其技術(shù)問(wèn)題而采用的解決方案。在技術(shù)特征的基礎上,解決方案還可以包括算法特征或業(yè)務(wù)規則和方法特征,它們在功能上相互支持并與技術(shù)特征交互。規范應明確技術(shù)特性與功能支持和交互的算法特征或業(yè)務(wù)規則與方法特性如何相互作用并產(chǎn)生有益效果。
例如,在收錄
算法特征時(shí),抽象算法應與特定的技術(shù)領(lǐng)域相結合,至少一個(gè)參數的定義應與技術(shù)領(lǐng)域的特定數據相關(guān)聯(lián);當包括業(yè)務(wù)規則和方法的特點(diǎn)時(shí),應詳細描述和解釋解決技術(shù)問(wèn)題的整個(gè)過(guò)程,以便技術(shù)領(lǐng)域的技術(shù)人員能夠按照描述中描述的內容實(shí)現本發(fā)明的解決。說(shuō)明書(shū)應清楚客觀(guān)地陳述本發(fā)明與現有技術(shù)相比的有益效果,如質(zhì)量、準確性或效率的提高,系統內部性能的改進(jìn)等。如果從用戶(hù)的角度,客觀(guān)上改善用戶(hù)體驗,也可以在說(shuō)明書(shū)中解釋?zhuān)谶@種情況下,還應該說(shuō)明構成本發(fā)明的技術(shù)特征,以及在其功能中相互支持并相互作用的算法特征或業(yè)務(wù)規則和方法特征如何帶來(lái)或產(chǎn)生用戶(hù)體驗的改善。6.3.2 發(fā)明專(zhuān)利申請中含有算法特征或者商業(yè)規則、方法特征的權利要求,應當以說(shuō)明書(shū)為依據,簡(jiǎn)明扼要地界定所主張的專(zhuān)利保護范圍。權利要求應當記錄功能上相互支持并與技術(shù)特征相互作用的技術(shù)特征和算法特征或者業(yè)務(wù)規則和方法特征。
-結束-
來(lái)源:每篇文章的版權歸其原作者所有。文章僅供參考,不提供法律建議。
工作日上午7點(diǎn)長(cháng)按關(guān)注大菱IP,分享每日IP英文/IP實(shí)務(wù)文章
隨時(shí)留下您的評論,閱讀后請點(diǎn)擊“再看”
如果本文對你有幫助,請分享給朋友圈 專(zhuān)利實(shí)務(wù)工作很難上手,要想真正上手,不是要掌握一些寫(xiě)作或回復模板、陳詞濫調,而是要真正了解法律的規定,把握問(wèn)題的本質(zhì),這樣當你面對不同的案件時(shí), 不同的技術(shù)解決方案,你可以整合并使用自己的語(yǔ)言來(lái)說(shuō)服審查員和法官。一旦你開(kāi)始,你會(huì )發(fā)現,其實(shí)在知識產(chǎn)權這個(gè)大范疇下,專(zhuān)利法是最簡(jiǎn)單的,因為它是相對客觀(guān)的。但是,商標和著(zhù)作權涉及許多主觀(guān)判斷,反不正當競爭和反壟斷案件涉及市場(chǎng)界定等問(wèn)題,較為復雜,難以確定。那么,如何學(xué)習專(zhuān)利實(shí)務(wù)呢?最好的辦法是研究復審、無(wú)效決定和專(zhuān)利訴訟的判決,找出當事人在實(shí)際案件中陳述意見(jiàn)和舉證的想法,學(xué)習法官進(jìn)行分析判斷的思路。案件的結果和裁決的目的并不是最重要的,許多指導性案例也存在爭議,可能會(huì )被推翻。但是,如果你能了解案件中法律分析的方法和適用法律的思路,就會(huì )大大提高你的實(shí)踐水平和能力。
為了通過(guò)實(shí)際案例幫助您提高實(shí)踐能力,我設置了兩門(mén)專(zhuān)利實(shí)務(wù)課程: 專(zhuān)利申請與無(wú)效實(shí)務(wù)通識課程:本課程為基礎課程,主要結合復審委員會(huì )指導性案例集的《案例理論》一書(shū),用實(shí)際案例講解專(zhuān)利法和審查指南的規定, 并具體說(shuō)明專(zhuān)利撰寫(xiě)、回應和無(wú)效的方法和技巧;專(zhuān)利侵權訴訟實(shí)踐明確:這門(mén)課程是改進(jìn)課程,因為專(zhuān)利是基于保護和最終目標,不了解專(zhuān)利侵權訴訟,一切專(zhuān)利工作都將是膚淺的。在本課程中,我將系統地講解專(zhuān)利保護范圍的認定、侵權認定、抗辯和侵權責任,以及證據和程序,同樣,我將結合最高人民法院的指導性案例,講解專(zhuān)利訴訟的實(shí)務(wù)要點(diǎn)和技巧。
匯總:采集規則(精品)
比如阿里巴巴,后期采集可能會(huì )針對一些門(mén)戶(hù)網(wǎng)站,比如阿里巴巴、慧聰網(wǎng)、百度新聞、燈飾行業(yè)的門(mén)戶(hù)網(wǎng)站進(jìn)行固定采集。我們的網(wǎng)站欄目必須分為幾個(gè)類(lèi)別,公司,供應,采購,新聞,行業(yè)知識。當然,新聞下面還會(huì )有幾個(gè)小版塊。每個(gè)欄目最好定期去,不一定非得是相關(guān)新聞。這樣一來(lái),似乎會(huì )有一些新聞內容。示例說(shuō)明目標網(wǎng)站: 1. 采集
內容 %B5%C6%CA%CE_n-y.html Lighting 關(guān)鍵字,這是 lighting 'supply' 關(guān)鍵字 2. 采集
內容 %B5%C6_n-y.html Lighting 關(guān)鍵字,這個(gè)這是關(guān)鍵字“光” 3。以上舉例說(shuō)明,這兩個(gè)關(guān)鍵詞也是兩個(gè)版塊的合集內容,而且頁(yè)數比較多,內容也挺多的。關(guān)鍵詞可自行設置,如吸頂燈、羊皮燈、LED、水晶燈等可自行設置采集
。當然,最好不要怕重復,只要采集
到的信息能夠正確地輸入到自己的系統中并顯示出來(lái)即可。在采集
過(guò)程中,供應商可以采集
圖片地址或采集
到自己的服務(wù)器中。因為燈飾行業(yè)對實(shí)物的看法不同,其他產(chǎn)品都是用文字描述的。4.新聞信息采集說(shuō)明新聞采集頁(yè)面百度;搜索關(guān)鍵詞'水晶燈' %CB%AE%BE%A7%B5%C6& tn=news&from=news&ie=gb2312&bs=%B5%C6%CA%CE&sr=0&cl=2&rn= 20&ct=1&prevc 這是百度的新聞采集頁(yè)。您可以在手機通訊中通過(guò)一些關(guān)鍵詞來(lái)采集
新聞內容,這樣就方便多了。
我們可以使用關(guān)鍵詞來(lái)采集
和存儲一些新聞,包括內容標題,圖片可以省略,但最好能夠下載圖片。能在不影響大家工作的情況下完成就最好了。合集分為燈飾新聞、配件新聞、行業(yè)新聞等幾個(gè)版塊,幾個(gè)版塊顯示的數量是平均的,說(shuō)明你是。有些新聞我們要求不高,只要是關(guān)于照明行業(yè)的,我們就可以采集
,內容可以從幾年前到現在。你安排它并自動(dòng)采集
它。我們現在需要的數據量也需要有針對性的信息,采集
非百度的新聞模塊,可能還有一些阿里巴巴、慧聰、照明行業(yè)的網(wǎng)站,這樣我們采集
的信息可能會(huì )更加準確。5. 公司模塊的收購標的是百度或者阿里巴巴%B5%C6%CA%CE_n-y.html目前是照明行業(yè)的公司信息。我們需要將一些公司的名稱(chēng)存儲到我們的系統中,用戶(hù)也有我們網(wǎng)站上的一些模板客戶(hù),例如:福建政和縣寶陵竹藝燈飾廠(chǎng)。我們采集
它們并對應于我們自己的數據庫。在我們的會(huì )員模板中,福建省政和縣寶陵竹藝燈飾就是在此基礎上展示的。我需要你回復我是否將他們的姓名和公司信息,包括一些產(chǎn)品信息采集
到我們的模板中。因為我們也有免費的企業(yè)模板,所以我想表達的是把這些公司的名字錄入我們的數據庫,也有免費的。企業(yè)網(wǎng)站。只要您可以在我們的網(wǎng)站上搜索他們的公司。里面最好有一些相關(guān)的內容 6. 行業(yè)知識采集
內容 比如百度知道搜索'lighting' %B5%C6%CA%CE&fr=wwwt 我們需要采集
一些我們行業(yè)知識中的大量?jì)热莶糠忠詷藴驶绞桨ㄅc回答問(wèn)題相對應的表格以供采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的!fr=wwwt 我們的行業(yè)知識板塊需要大量的內容進(jìn)行標準化的采集
,包括回答問(wèn)題對應的表格進(jìn)行采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的!fr=wwwt 我們的行業(yè)知識板塊需要大量的內容進(jìn)行標準化的采集
,包括回答問(wèn)題對應的表格進(jìn)行采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的! 查看全部
解決方案:專(zhuān)利審查指南修改草案 | 關(guān)于算法和商業(yè)規則的10個(gè)案例
說(shuō)明一、修訂的背景和主要過(guò)程 隨著(zhù)互聯(lián)網(wǎng)技術(shù)和信息技術(shù)的不斷發(fā)展,涉及新技術(shù)、新領(lǐng)域、新業(yè)態(tài)的發(fā)明創(chuàng )造不斷涌現。因此,為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體進(jìn)一步明確涉及人工智能等新技術(shù)、新領(lǐng)域的專(zhuān)利申請審查規則的需要,支持創(chuàng )新驅動(dòng)發(fā)展宗旨, 國家知識產(chǎn)權局已啟動(dòng)《專(zhuān)利審查指南》的相關(guān)修訂工作。涉及人工智能等新技術(shù)和新領(lǐng)域、新業(yè)態(tài)的發(fā)明專(zhuān)利申請與其他發(fā)明專(zhuān)利申請明顯不同,其特點(diǎn)是,在發(fā)明解決方案中,除技術(shù)外,一般還收錄
算法或商業(yè)方法等智力活動(dòng)規則和方法的特征。修訂后的《指南》明確了此類(lèi)申請的審查規則,并通過(guò)典型案例進(jìn)行了解釋。一方面,將審查實(shí)踐中探索的有益做法提升為《專(zhuān)利審查指南》,有助于統一審查標準,同時(shí)為如何更好地撰寫(xiě)此類(lèi)申請、促進(jìn)申請質(zhì)量的提高提供指導。另一方面,明確規定此類(lèi)應用的特點(diǎn)應與算法或商業(yè)方法等智力活動(dòng)規則的技術(shù)特征和特征相結合,正確把握發(fā)明的技術(shù)貢獻,從而提高審查的質(zhì)量和效率,促進(jìn)新興技術(shù)和新業(yè)態(tài)、新模式的進(jìn)一步發(fā)展和成長(cháng)。應當指出的是,修正案的指導思想是在現行《專(zhuān)利法》和《實(shí)施細則》的框架內及時(shí)響應實(shí)際需求和及時(shí)解決實(shí)際問(wèn)題,同時(shí)盡可能與現行指南第9章的框架結構保持一致,以便于審查員和公眾的理解。
在充分調查社會(huì )需求和一線(xiàn)審查員具體工作實(shí)踐的基礎上,國家知識產(chǎn)權局制定了《專(zhuān)利審查指南》第二部分第九章修正草案(
初稿)于2019年9月中旬,征求局內有關(guān)部門(mén)意見(jiàn),并專(zhuān)門(mén)召開(kāi)創(chuàng )新主體和代理人咨詢(xún)會(huì ),聽(tīng)取各方意見(jiàn),經(jīng)完善后形成《專(zhuān)利審查指南第二編第九章修正草案(征求意見(jiàn)稿)》及其說(shuō)明。二、《主要修正案草案》在第二部分第九章中專(zhuān)門(mén)增加了第六節,根據具體情況,明確了申請的授權、新穎性和創(chuàng )造性、權利要求和說(shuō)明書(shū)撰寫(xiě)等主題。主要修改如下:(1)強調專(zhuān)利審查中不應簡(jiǎn)單地將技術(shù)特征和算法特征、業(yè)務(wù)規則和方法特征分開(kāi) 第6.1節“審查標準”確立了各審查條款的一般原則:“在審查中,不應將技術(shù)特征與算法或者商業(yè)規則和方法特征分開(kāi), 但權利要求書(shū)記載的所有內容都要整體分析,涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和產(chǎn)生的技術(shù)效果都要進(jìn)行分析?!埃?)明確了根據專(zhuān)利法第二十五條不排除技術(shù)特征的加入,如果權利要求除算法特征或者商業(yè)規則和方法外還含有技術(shù)特征,則權利要求整體不是智力活動(dòng)的規則和方法,根據專(zhuān)利法第二十五條第一款第2項的規定,不得排除獲得專(zhuān)利權的可能性。(3)明確了專(zhuān)利法第2條審查標準是否為技術(shù)方案的判斷,進(jìn)一步細化了指南總章技術(shù)問(wèn)題、技術(shù)手段和技術(shù)效果“三要素”判斷方法下的審查標準。
只要該算法能結合特定的技術(shù)應用領(lǐng)域解決一定的技術(shù)問(wèn)題,就可以通過(guò)專(zhuān)利第2條的審查。(4) 考慮到算法特征與在技術(shù)特征和功能方面相互作用的商業(yè)規則和方法特征對發(fā)明步驟的技術(shù)貢獻,在審查同時(shí)收錄
技術(shù)特征和算法特征的發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并與技術(shù)特征相互作用的算法特征或商業(yè)規則和方法作為一個(gè)整體考慮,或者 商業(yè)規則和方法。修正案草案進(jìn)一步解釋了其含義。(5)從正反兩方面增加了10個(gè)關(guān)于資助主題和創(chuàng )造性的審查案例,實(shí)施例1為抽象模型建立方法,不涉及與具體應用領(lǐng)域的結合,不收錄
技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項規定的智力活動(dòng)規則和方法。示例 2、3 和 4 屬于人工智能、商業(yè)模式和區塊鏈領(lǐng)域的授權對象,而示例 5 和 6 是反面示例。例7和例9是創(chuàng )造性是由于將技術(shù)特征的功能支持和相互作用作為一個(gè)整體考慮而引起的情況,以及由于相應的內容已在比較文件中公開(kāi)而使技術(shù)特征不具有創(chuàng )造性的情況。(6)細化說(shuō)明書(shū)和權利要求書(shū)的編寫(xiě)要求,進(jìn)一步細化說(shuō)明書(shū)的編寫(xiě)要求,如提及如何將算法與特定技術(shù)領(lǐng)域相結合,明確用戶(hù)體驗效果等。權利要求書(shū)的起草強調,權利要求應當記錄技術(shù)特征與功能上相互支持、與技術(shù)特征相互作用的算法或者業(yè)務(wù)規則和方法。
附件1:《專(zhuān)利審查指南》第二部分第九章修正案草案(征求意見(jiàn)稿) 6.《含有算法特征或者業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請審查規定》涉及人工智能、互聯(lián)網(wǎng)+、大數據、區塊鏈等發(fā)明專(zhuān)利申請,一般收錄
算法或業(yè)務(wù)規則和方法等智力活動(dòng)的規則和方法特征,本節旨在根據 專(zhuān)利法及其實(shí)施細則。6.1 審查基準審查應針對要求保護的解決方案進(jìn)行,即權利要求定義的解決方案。在審查中,不應簡(jiǎn)單地將技術(shù)特征與算法特征或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記載的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和取得的技術(shù)效果。6.1.1 根據《專(zhuān)利法》第25.1.2條的規定,權利要求涉及抽象算法或者簡(jiǎn)單的商業(yè)規則和方法,且不收錄
任何技術(shù)特征的,屬于專(zhuān)利法第25.1.2條規定的智力活動(dòng)規則和方法,不得申請專(zhuān)利。例如,基于抽象算法建立數學(xué)模型且不收錄
任何技術(shù)特征的方法,屬于專(zhuān)利法第25.1.2條規定的不應授予專(zhuān)利權的情形。再如基于用戶(hù)消費額度的返利方式,該方法所收錄
的特征均為與返利規則相關(guān)的商業(yè)規則和方法特征,不收錄
任何技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項第2項規定的不應授予專(zhuān)利權的情形。
如果索賠除算法特征或者
商業(yè)規則和方法外,還含有技術(shù)特征,權利要求整體上不是智力活動(dòng)的規則或者方法的,依照專(zhuān)利法第二十五條第一款第2項的規定,不排除取得專(zhuān)利權的可能性。 6.1.2 根據專(zhuān)利法第2.2條進(jìn)行審查如果權利要求的整體權利要求不屬于第25.1.2條的情況專(zhuān)利法排除了專(zhuān)利權的取得,有必要審查其是否屬于專(zhuān)利法第2.2條所指的技術(shù)方案。在檢查收錄
算法特征或業(yè)務(wù)規則和方法特征的權利要求是否為技術(shù)解決方案時(shí),有必要將權利要求中描述的所有特征作為一個(gè)整體來(lái)考慮。如果權利要求記載了利用自然規律的技術(shù)手段用于要解決的技術(shù)問(wèn)題,并由此獲得符合自然規律的技術(shù)效果的,則權利要求的解決方案屬于專(zhuān)利法第二條第二款所述的技術(shù)方案。例如,如果權利要求中算法涉及的步驟與要解決的技術(shù)問(wèn)題密切相關(guān),例如算法處理的數據是技術(shù)領(lǐng)域具有確切技術(shù)意義的數據,并且算法的執行可以直接反映利用自然規律解決技術(shù)問(wèn)題的過(guò)程, 并且取得了技術(shù)效果,那么通常權利要求的解決方案屬于專(zhuān)利法第2條第2款所述的技術(shù)方案。6.1.3 新穎性和創(chuàng )造性的審查 審查含有算法特征或者商業(yè)規則和方法特征的發(fā)明專(zhuān)利申請的新穎性時(shí),應當考慮權利要求書(shū)中描述的所有特征,包括技術(shù)特征和算法特征或者商業(yè)規則和方法特征。審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并在技術(shù)特征方面相互作用的算法特征或者商業(yè)規則和方法特征作為一個(gè)整體來(lái)考慮?!肮δ苌舷嗷ブС?、相互作用”是指算法特征或業(yè)務(wù)規則、方法特征與技術(shù)特征緊密結合,共同構成解決技術(shù)問(wèn)題的技術(shù)手段,并能獲得相應的技術(shù)效果。例如,如果權利要求中的算法應用于特定的技術(shù)領(lǐng)域,能夠解決特定的技術(shù)問(wèn)題,那么可以認為算法特征和技術(shù)特征在功能上是相互支持的,具有交互關(guān)系,算法特征成為所采取技術(shù)手段的組成部分, 在進(jìn)行創(chuàng )造性審查時(shí)應考慮算法特征對方案的貢獻。再如,如果權利要求中商業(yè)規則和方法特征的實(shí)現需要對技術(shù)手段進(jìn)行調整或改進(jìn),則可以認為業(yè)務(wù)規則和方法特征與技術(shù)特征在功能上是相互支持和相互作用的,在進(jìn)行創(chuàng )造性審查時(shí)應考慮所述業(yè)務(wù)規則和方法特征對程序的貢獻。6.2 審查示例 以下根據上述審查標準,對含有算法特征或業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請給出審查實(shí)例。(一)含有專(zhuān)利法第二十五條第一款第2項范圍內的算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不屬于專(zhuān)利保護標的。
【實(shí)施例1】一種建立數學(xué)模型的方法應用內容概述發(fā)明專(zhuān)利申請的解決方案是通過(guò)增加訓練樣本的數量來(lái)提高模型精度的數學(xué)模型的方法。建模方法還使用與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù)的訓練樣本作為第一分類(lèi)任務(wù)數學(xué)模型的訓練樣本,從而增加訓練樣本的數量,并利用訓練樣本的特征值,提取特征值、標簽值等來(lái)訓練相關(guān)的數學(xué)模型, 最后得到第一個(gè)分類(lèi)任務(wù)的數學(xué)模型,由于訓練樣本數量少,過(guò)度擬合,建模精度差。3.根據權利要求所述的一種建立數學(xué)模型的方法,其特征在于,其特征在于,其包括以下步驟:根據所述第一分類(lèi)任務(wù)的訓練樣本中的特征值和所述第二分類(lèi)任務(wù)的訓練樣本中的特征值,對所述初始特征提取模型進(jìn)行訓練,得到所述目標特征提取模型;其中,第二分類(lèi)任務(wù)是與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù);根據目標特征提取模型,分別處理第一分類(lèi)任務(wù)各訓練樣本中的特征值,得到各訓練樣本對應的提取特征值;將提取的每個(gè)訓練樣本對應的特征值和標簽值組成,提取訓練樣本,訓練初始分類(lèi)模型得到目標分類(lèi)模型;目標分類(lèi)模型和目標特征提取模型由第一個(gè)分類(lèi)任務(wù)的數學(xué)模型組成。分析與結論 該方案不涉及任何具體的應用領(lǐng)域,其中訓練樣本的特征值、提取的特征值、標簽值、目標分類(lèi)模型和目標特征提取模型是抽象的通用數據,利用訓練樣本的相關(guān)數據訓練數學(xué)模型的處理過(guò)程是一系列抽象的數學(xué)方法步驟, 最終結果也是一個(gè)抽象的通用分類(lèi)數學(xué)模型。
該方案是一種抽象模型建立方法,其處理對象、過(guò)程和結果不涉及與具體應用領(lǐng)域的結合,屬于抽象數學(xué)方法的優(yōu)化,整個(gè)方案不收錄
任何技術(shù)特征,本發(fā)明專(zhuān)利申請的解決屬于第25條規定的智力活動(dòng)規則和方法, 專(zhuān)利法第1條第(2)項,不屬于專(zhuān)利保護的客體。(二)含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,利用技術(shù)手段解決技術(shù)問(wèn)題,取得技術(shù)效果的,屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,屬于專(zhuān)利保護客體?!緦?shí)施例2】卷積神經(jīng)網(wǎng)絡(luò )模型訓練方法的應用內容概述 本發(fā)明專(zhuān)利申請對卷積層各級訓練圖像進(jìn)行卷積運算和最大池化運算,并對最大池化運算后獲得的特征圖像進(jìn)一步進(jìn)行水平池化運算,使訓練好的CNN模型在識別圖像類(lèi)別時(shí)能夠識別出任何大小的圖像。 申請要求一種卷積神經(jīng)網(wǎng)絡(luò )CNN模型的訓練方法,其特征在于,該方法包括:獲取待訓練CNN模型的初始模型參數,初始模型參數包括各卷積層的初始卷積核、各層級卷積層的初始偏置矩陣、全連接層的初始權重矩陣和全連接層的初始偏置向量;獲取多個(gè)訓練圖像;在各層級卷積層上,利用各層級卷積層的初始卷積核和初始偏置矩陣分別對各訓練圖像進(jìn)行卷積運算和最大池化運算,得到各層次卷積層上各訓練圖像的第一特征圖像;對至少一個(gè)卷積層上每個(gè)訓練圖像的第一特征圖像進(jìn)行水平池化,得到每個(gè)卷積層上每個(gè)訓練圖像的第二特征圖像。根據各水平卷積層上每個(gè)訓練圖像的第二特征圖像確定每個(gè)訓練圖像的特征向量;根據初始權重矩陣和初始偏差向量對每個(gè)特征向量進(jìn)行處理,得到每個(gè)訓練圖像的類(lèi)概率向量;根據每個(gè)訓練圖像的類(lèi)概率向量和每個(gè)訓練圖像的初始類(lèi)別,計算類(lèi)誤差;基于分類(lèi)誤差,調整待訓練CNN模型的模型參數;基于調整后的模型參數和多個(gè)訓練圖像,繼續模型參數調整過(guò)程,直到迭代次數達到預設次數;迭代次數達到預設次數時(shí)得到的模型參數作為訓練好的CNN模型的模型參數。

分析與結論 該解決方案是卷積神經(jīng)網(wǎng)絡(luò )CNN模型的一種訓練方法,闡明了模型訓練方法每一步處理的數據都是圖像數據以及每一步如何處理圖像數據,體現了神經(jīng)網(wǎng)絡(luò )訓練算法與圖像信息處理密切相關(guān)。該方案解決了如何克服CNN模型只能識別固定尺寸圖像的技術(shù)難題,該方案采用不同卷積層對圖像進(jìn)行不同處理和訓練的手段,利用遵循自然規律的技術(shù)手段,獲得訓練好的CNN模型可以識別任意大小圖像的技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體?!纠?】共享單車(chē)使用概述 申請內容發(fā)明專(zhuān)利申請提出了一種共享單車(chē)的使用方法,通過(guò)獲取用戶(hù)終端設備的位置信息和一定距離內的共享單車(chē)狀態(tài)信息,使用戶(hù)根據共享單車(chē)的狀態(tài)信息準確找到可以騎行的共享單車(chē), 通過(guò)提示騎行和引導用戶(hù)停車(chē),方便了租賃自行車(chē)的使用和管理,節省了用戶(hù)的時(shí)間,改善了用戶(hù)體驗。申請要求一種共享單車(chē)的使用方法,其特征在于其包括以下步驟:第一步,用戶(hù)通過(guò)終端設備向服務(wù)器發(fā)送使用共享單車(chē)的請求;步驟二,服務(wù)器獲取用戶(hù)的第一位置信息,查找與第一位置信息對應的一定距離范圍內的共享單車(chē)的第二位置信息,以及這些共享單車(chē)的狀態(tài)信息,并將共享單車(chē)的第二位置信息和狀態(tài)信息發(fā)送給終端設備,其中第一位置信息和第二位置信息通過(guò)GPS信號獲取;第三步:根據終端設備上顯示的共享單車(chē)位置信息,用戶(hù)找到可以騎行的目標共享單車(chē);第四步:用戶(hù)通過(guò)終端設備掃描目標共享單車(chē)車(chē)身上的二維碼,通過(guò)服務(wù)器認證,獲得目標共享單車(chē)使用權限;第五步:服務(wù)器根據乘車(chē)情況向用戶(hù)推送停車(chē)提示,如果用戶(hù)將車(chē)停在指定區域,則以?xún)?yōu)惠資費計費,否則按標準資費計費;步驟6,用戶(hù)根據提示進(jìn)行選擇,騎行結束后,用戶(hù)對共享單車(chē)進(jìn)行鎖定動(dòng)作,共享單車(chē)檢測鎖定狀態(tài)并向服務(wù)器發(fā)送騎行完成的信號。
分析與結論 解決方案涉及共享單車(chē)的使用方法,解決共享單車(chē)位置匹配并獲得共享單車(chē)使用權的技術(shù)問(wèn)題,
方案通過(guò)在終端設備和服務(wù)器上執行計算機程序,實(shí)現對用戶(hù)使用共享單車(chē)行為的控制和引導,體現對位置信息的控制、認證等數據采集和計算,利用遵循自然規律的技術(shù)手段實(shí)現共享單車(chē)位置的匹配, 獲得共享單車(chē)使用權等技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體?!緦?shí)施例4】區塊鏈節點(diǎn)間通信方法及設備應用內容概述本發(fā)明專(zhuān)利申請提出了一種區塊鏈節點(diǎn)通信方法及裝置,其中區塊鏈中的業(yè)務(wù)節點(diǎn)可以在建立通信連接之前,根據通信請求中攜帶的CA證書(shū)和預配置的CA信任列表判斷是否建立通信連接, 從而降低業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,提高存儲在區塊鏈中的數據的安全性。權利要求1.一種區塊鏈節點(diǎn)通信方法,所述區塊鏈網(wǎng)絡(luò )中的區塊鏈節點(diǎn)包括業(yè)務(wù)節點(diǎn),其中,所述業(yè)務(wù)節點(diǎn)存儲由CA授權中心發(fā)送的證書(shū),并預配置有CA信任列表,該方法包括:所述第一區塊鏈節點(diǎn)接收所述第二區塊鏈節點(diǎn)發(fā)送的通信請求,其中所述通信請求攜帶所述第二區塊鏈節點(diǎn)的第二證書(shū);確定與第二個(gè)證書(shū)對應的 CA 標識;確定第二個(gè)證書(shū)對應的 CA ID 是否存在于CA信任列表中;如果是這樣,則與第二個(gè)區塊鏈節點(diǎn)建立通信連接;否則,不會(huì )與第二個(gè)區塊鏈節點(diǎn)建立通信連接。
分析與結論 本申請需要解決的問(wèn)題是如何防止區塊鏈業(yè)務(wù)節點(diǎn)在聯(lián)盟鏈網(wǎng)絡(luò )中泄露用戶(hù)隱私數據,這是提高區塊鏈數據安全性的技術(shù)問(wèn)題;通過(guò)在通信請求中攜帶CA證書(shū),并預先配置CA信任列表來(lái)確定是否建立連接,業(yè)務(wù)節點(diǎn)僅限于可以建立連接的對象,從而提高區塊鏈中數據的安全性。因此,本申請中的區塊鏈節點(diǎn)間通信方式實(shí)現了業(yè)務(wù)節點(diǎn)之間的安全通信,降低了業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,屬于專(zhuān)利法保護的對象。(三)含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不解決技術(shù)問(wèn)題,或者不使用技術(shù)手段,或者未取得技術(shù)效果,不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,因此不屬于專(zhuān)利保護客體?!緦?shí)施例5】一種消費返利方法應用內容概述發(fā)明專(zhuān)利申請提出了一種消費返利方法,通過(guò)計算機實(shí)現設定的返利規則,向用戶(hù)發(fā)放消費現金券,從而提高用戶(hù)的消費意愿,為商家獲取更多利潤。該應用程序要求一種消費返利的方法,其特征在于它包括以下步驟:當用戶(hù)在商家消費時(shí),商家根據消費金額返還一定的現金券,具體來(lái)說(shuō),商家使用計算機計算用戶(hù)的消費金額,并將用戶(hù)的消費金額R除以M區間, 其中M為整數,范圍1到范圍M的值由小到大,返還代金券的金額F也分為M值,M值也從小到大排列;根據計算機的計算值,判斷當用戶(hù)當前消費金額在范圍1時(shí),返利金額為第一值,當用戶(hù)當前消費金額在范圍2范圍內時(shí),返利金額為第二值,依此類(lèi)推,將相應范圍的返利金額返還給用戶(hù)。
分析與結論 解決方案涉及計算機執行的消費返利方法,該方法處理用戶(hù)的消費數據,要解決的問(wèn)題是如何促進(jìn)用戶(hù)的消費,這并不構成技術(shù)問(wèn)題,所使用的手段是通過(guò)計算機實(shí)現人為設定的返利規則,
但計算機的限制只是按照規定的規則,根據用戶(hù)的消費量來(lái)確定返利金額,不受自然規律的約束,因此沒(méi)有使用任何技術(shù)手段。該程序獲得的效果只是促進(jìn)用戶(hù)消費,而不是符合自然規律的技術(shù)效果。因此,發(fā)明專(zhuān)利申請不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,不屬于專(zhuān)利保護的客體?!緦?shí)施例6】一種基于電力消費特征的經(jīng)濟景氣指數分析方法 應用內容概述 發(fā)明專(zhuān)利申請通過(guò)統計各種經(jīng)濟指標和用電量指標來(lái)評估待測地區的經(jīng)濟景氣指數?;趨^域用電量特征的聲稱(chēng)經(jīng)濟景氣指數分析方法,其特征在于其包括以下步驟:根據待測區域的經(jīng)濟數據和用電量數據,選取待測地區經(jīng)濟景氣指數的初步指標,其中初步指標包括經(jīng)濟指標和用電量指標;通過(guò)聚類(lèi)分析法和時(shí)差相關(guān)分析法,確定待檢測區域經(jīng)濟景氣指數體系,包括領(lǐng)先指標、一致指標和滯后指標;根據待測區域的經(jīng)濟景氣指數體系,采用綜合指數計算方法得到被測地區的經(jīng)濟景氣指數。分析與結論 解決方案是一種經(jīng)濟景氣指數分析計算方法,其處理對象是各種經(jīng)濟指標、用電指標,所解決的問(wèn)題就是判斷經(jīng)濟走勢,不構成技術(shù)問(wèn)題,采用的手段是根據經(jīng)濟數據和用電量數據來(lái)分析經(jīng)濟形勢, 只有按照經(jīng)濟規律使用經(jīng)濟管理手段,不受自然規律的約束,所以不使用技術(shù)手段,程序最終才能獲得經(jīng)濟景氣指數來(lái)評價(jià)經(jīng)濟,它不是符合自然規律的技術(shù)效果,因此解決方案不屬于專(zhuān)利法第2條第2款規定的技術(shù)解決方案,也不是專(zhuān)利保護的客體。
?。?)在進(jìn)行創(chuàng )造性審查時(shí),應考慮在功能上相互支持并與技術(shù)特征相互作用的算法特征或商業(yè)規則和方法特征對解決的貢獻。 【例7】一種基于多傳感器信息的人工機器人跌倒狀態(tài)檢測方法 應用內容概述 現有的人形機器人行走時(shí)墜落狀態(tài)的判斷主要使用姿態(tài)信息或ZMP 點(diǎn)位置信息,但這個(gè)判斷并不全面。發(fā)明專(zhuān)利申請提出了一種基于多個(gè)傳感器的人形機器人墜落狀態(tài)檢測方法,該方法實(shí)時(shí)集成了機器人步態(tài)階段信息、姿態(tài)信息和ZMP點(diǎn)位置信息,并利用模糊決策系統確定機器人當前的穩定性和可控性,從而為機器人的下一步動(dòng)作提供參考。權利要求2.根據權利要求所述的一種基于多傳感器信息的人形機器人跌落狀態(tài)檢測方法,其特征在于,該方法收錄
以下步驟:(1)將姿態(tài)傳感器信息、零扭矩點(diǎn)ZMP傳感器信息和機器人行走階段信息融合,建立分層傳感器信息融合模型,實(shí)現人形機器人的穩定性確定;(2)采用前后模糊決策系統和左右模糊決策系統分別確定機器人在前后和左右方向的穩定性,具體步驟如下:(1)根據機器人支撐腳與地面的接觸和離線(xiàn)步態(tài)規劃確定機器人行走階段;(2)采用模糊推理算法對ZMP點(diǎn)的位置信息進(jìn)行模糊處理;(3)采用模糊推理算法對機器人的俯仰角或滾動(dòng)角進(jìn)行模糊化;(4)確定輸出隸屬函數;(5)按步驟(1)~步驟(4)確定模糊推理規則;(6)去模糊。分析與結論 對比文獻1公開(kāi)
了基于人形機器人傳感器信息的步態(tài)規劃和反饋控制,并根據相關(guān)融合信息判斷機器人的穩定性,包括基于多個(gè)傳感器信息的人形機器人穩定狀態(tài)評價(jià),即對比文獻1公開(kāi)了發(fā)明專(zhuān)利申請解決方案中的步驟(1), 與比較文檔1的區別在于使用步驟(2)特定算法的模糊決策方法?;趹梦臋n,該方案有效提高了機器人的穩態(tài)及其可能下落方向的可靠性和準確性。以姿態(tài)信息、ZMP點(diǎn)位置信息和行走階段信息為輸入參數,通過(guò)模糊算法輸出確定人形機器人穩定狀態(tài)的信息,為進(jìn)一步準確的姿態(tài)調整指令提供了依據。因此,上述算法特征和技術(shù)特征在功能上相互支持并具有交互關(guān)系,并且相對于比較文件1,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何判斷機器人的穩定狀態(tài)并準確預測其可能的下降方向。上述模糊決策的實(shí)現算法及其對機器人穩態(tài)應用的判斷在其他比較文獻中未公開(kāi),也不是本領(lǐng)域的常識,現有技術(shù)整體上不存在使本領(lǐng)域技術(shù)人員改進(jìn)比較文件1以獲得要求保護的發(fā)明的靈感, 并且要求保護的發(fā)明相對于最接近的現有技術(shù)是非顯而易見(jiàn)的和創(chuàng )造性的。 【實(shí)施例8】基于協(xié)同進(jìn)化和多群遺傳算法的多機器人路徑規劃系統應用內容概述 現有的多移動(dòng)機器人運動(dòng)規劃控制結構通常采用集中規劃方法,將多機器人系統視為具有多個(gè)自由度的復雜機器人, 系統內有規劃員統一完成所有機器人的運動(dòng)規劃,存在計算時(shí)間長(cháng)、實(shí)用性差的缺點(diǎn)。
發(fā)明專(zhuān)利申請提供了一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統。機器人的每條路徑都由一條染色體表示,以最短距離、平滑度和安全距離作為設計路徑適應度函數的三個(gè)目標,利用Messy遺傳算法優(yōu)化每個(gè)機器人的最優(yōu)路徑。申請要求一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統,其特征在于:(1)機器人的路徑由染色體表示,染色體以節點(diǎn)鏈表的形式表示,即[(x,y),time],(x,y,time∈R),(x,y)表示機器人的位置坐標, 時(shí)間表示將該節點(diǎn)從前一個(gè)節點(diǎn)移出所需的時(shí)間消耗,起始節點(diǎn)的時(shí)間等于0,除初始節點(diǎn)的初始位置和結束節點(diǎn)的固定目標位置外,每個(gè)機器人個(gè)體的染色體都是可變的;(2)每個(gè)機器人機器人(i)的路徑路徑(j)的適應度函數表示為φ(pi,j):||圓周率,J||=距離(pi,j)+ws×smooth(pi,j)+wt×Time(pi,j) 其中||圓周率,J||是距離、平滑度和時(shí)間消耗的線(xiàn)性組合,ws是平滑度加權因子,wt是時(shí)間加權因子;距離(pi,j)表示路徑長(cháng)度,smooth(pi,j)表示路徑的平滑度,Time(pi,j)表示路徑pi,j的時(shí)間消耗;每個(gè)機器人使用所描述的適應度函數,并通過(guò)Messy遺傳算法優(yōu)化最佳路徑。
分析與結論 對比文檔1公開(kāi)了一種基于協(xié)同進(jìn)化的多機器人路徑規劃方法,其中采用自適應混沌算法獲得最優(yōu)路徑。發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于通過(guò)Messy遺傳算法實(shí)現多機器人路徑規劃。在該方案中,利用適應度函數約束Messy遺傳算法,通過(guò)遺傳算法優(yōu)化后得到機器人的前向路徑,該解的算法特征和技術(shù)特點(diǎn)相互支持,在功能上相互作用,從而實(shí)現機器人前進(jìn)路徑的優(yōu)化。與對比文獻1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何使機器人基于特定算法在最優(yōu)路徑上前進(jìn)。對比文件2揭示了包括混沌算法在內的多種遺傳算法可用于路徑優(yōu)化,使用Messy遺傳算法可以解決其他算法的缺點(diǎn),獲得更合理的優(yōu)化結果?;趯Ρ任募?給出的啟示,本領(lǐng)域技術(shù)人員有動(dòng)機將比較文件1和比較文件2結合起來(lái),得到發(fā)明專(zhuān)利申請的技術(shù)方案。因此,要求保護的發(fā)明相對于比較文件1和比較2的組合是顯而易見(jiàn)的,并且不具有創(chuàng )造性?!緦?shí)施例9】一種物流配送方法的申請概述了如何在貨物配送過(guò)程中有效提高貨物配送效率,降低配送成本,這是發(fā)明專(zhuān)利申請所要解決的問(wèn)題。物流人員到達配送地點(diǎn)后,可以通知特定配送區域內的多個(gè)訂貨用戶(hù)以服務(wù)器推送消息的形式同時(shí)提貨到訂貨用戶(hù)終端,從而提高配送效率,降低配送成本。
申請要求一種物流配送方法通過(guò)分批通知用戶(hù)取貨

來(lái)提高物流配送的效率,該方法包括:當調度員需要通知用戶(hù)取貨時(shí),調度員通過(guò)手持物流終端向服務(wù)器發(fā)送貨物已經(jīng)到達的通知;服務(wù)器分批通知調度員交貨范圍內的所有訂單;收到通知的訂購用戶(hù)根據通知信息完成取件;其中,用于批量通知的服務(wù)器的具體實(shí)現方式是,服務(wù)器根據配送操作員ID確定調度員ID對應的配送距離范圍內的所有目標訂單信息,并以物流終端的當前位置、物流終端的當前位置以及物流終端發(fā)送的到達通知中攜帶的相應配送范圍為中心, 然后將通知信息推送到所有目標訂單信息中訂單用戶(hù)賬戶(hù)對應的訂單用戶(hù)終端。分析結論對比文件1公開(kāi)了一種物流配送方法,其中物流終端掃描配送單上的條形碼,并將掃描到的信息發(fā)送到服務(wù)器,通知服務(wù)器貨物已經(jīng)到達;服務(wù)器獲取掃描信息中的排序用戶(hù)信息,并向排序用戶(hù)發(fā)送通知;收到通知的訂購用戶(hù)根據通知信息完成取件。本發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于,批量通知用戶(hù)訂單的到來(lái),為了實(shí)現批量通知,方案中服務(wù)器、物流終端和用戶(hù)終端之間的物理架構和數據通信進(jìn)行了相應的調整,因此取件通知規則和具體的批量通知實(shí)現方法在功能上相互支持,并具有 交互關(guān)系。
與比較文檔1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是如何提高訂單到達通知的效率,從而提高貨物配送的效率。從用戶(hù)的角度來(lái)看,用戶(hù)可以更快地獲得有關(guān)訂單到達的信息,這也改善了用戶(hù)體驗。由于現有技術(shù)不具備對上述比較文獻1的技術(shù)啟發(fā)進(jìn)行改進(jìn),以獲得用于發(fā)明專(zhuān)利申請的解決方案,該解決方案具有創(chuàng )造性?!纠?0】一種動(dòng)態(tài)觀(guān)點(diǎn)演化的可視化方法 應用內容概述 近年來(lái),人們越來(lái)越多地通過(guò)社交平臺表達自己的觀(guān)點(diǎn)和想法,人們在社交平臺上發(fā)布的情感內容反映了人們觀(guān)點(diǎn)的演變,可以看到事件的發(fā)展、變化和趨勢。該發(fā)明專(zhuān)利申請通過(guò)自動(dòng)采集
人們在社交平臺上發(fā)布的信息并分析其中的情緒,通過(guò)計算機繪制情緒可視化地圖,幫助人們更好地了解不同時(shí)期的情緒強度和隨時(shí)間演變的趨勢。權利要求保護要求是一種動(dòng)態(tài)視圖演變的可視化方法,該方法包括:步驟1)通過(guò)計算設備確定所采集
信息集中信息的情感隸屬關(guān)系和情感分類(lèi),信息的情感隸屬程度表示信息屬于某種情感分類(lèi)的概率;步驟2)將情緒分類(lèi)為正面、中性或負面,具體分類(lèi)方法是:如果點(diǎn)數p除以點(diǎn)數Q值r大于閾值a,則認為情緒分類(lèi)為正,如果值r小于閾值b,則認為情緒分類(lèi)為負, 如果值 b ≤ r≤a,則情緒分類(lèi)為中性,其中 a > b; 步驟3)基于信息的情感分類(lèi),自動(dòng)建立信息集合的情感可視化圖形的幾何布局,橫軸表示信息生成時(shí)間,縱軸表示屬于每個(gè)情感分類(lèi)的信息數量;步驟4)計算設備根據信息的情感隸屬性對已建立的幾何布局進(jìn)行著(zhù)色,并根據信息顏色的梯度順序對每個(gè)情感分類(lèi)層上的信息進(jìn)行著(zhù)色。分析
與結論 比較文件1公開(kāi)了一種基于情感的可視化分析方法,其中時(shí)間表示為橫軸,不同時(shí)間的每個(gè)色帶的寬度表示當時(shí)的情緒度量,不同的色帶表示不同的情緒。本發(fā)明專(zhuān)利申請的解決方案與比較文件1的區別在于步驟2中設置的情緒的具體分類(lèi)規則)。從應用內容可以看出,即使情感分類(lèi)規則不同,對應數據著(zhù)色的技術(shù)手段也可以不變,即上述情感分類(lèi)規則和具體的可視化方法在功能上并不相互支持和交互。與對比文獻1相比,發(fā)明專(zhuān)利申請僅提出了情緒分類(lèi)的新規則,并未實(shí)際解決任何技術(shù)問(wèn)題,對現有技術(shù)沒(méi)有做出技術(shù)貢獻。因此,要求保護的發(fā)明不具有相對于比較文件1的創(chuàng )造性步驟。6.3 說(shuō)明書(shū)和權利要求的起草6.3.1 說(shuō)明書(shū)的起草:發(fā)明專(zhuān)利申請說(shuō)明書(shū)含有算法特征或者業(yè)務(wù)規則和方法特征的,說(shuō)明書(shū)應當清楚、完整地描述發(fā)明為解決其技術(shù)問(wèn)題而采用的解決方案。在技術(shù)特征的基礎上,解決方案還可以包括算法特征或業(yè)務(wù)規則和方法特征,它們在功能上相互支持并與技術(shù)特征交互。規范應明確技術(shù)特性與功能支持和交互的算法特征或業(yè)務(wù)規則與方法特性如何相互作用并產(chǎn)生有益效果。
例如,在收錄
算法特征時(shí),抽象算法應與特定的技術(shù)領(lǐng)域相結合,至少一個(gè)參數的定義應與技術(shù)領(lǐng)域的特定數據相關(guān)聯(lián);當包括業(yè)務(wù)規則和方法的特點(diǎn)時(shí),應詳細描述和解釋解決技術(shù)問(wèn)題的整個(gè)過(guò)程,以便技術(shù)領(lǐng)域的技術(shù)人員能夠按照描述中描述的內容實(shí)現本發(fā)明的解決。說(shuō)明書(shū)應清楚客觀(guān)地陳述本發(fā)明與現有技術(shù)相比的有益效果,如質(zhì)量、準確性或效率的提高,系統內部性能的改進(jìn)等。如果從用戶(hù)的角度,客觀(guān)上改善用戶(hù)體驗,也可以在說(shuō)明書(shū)中解釋?zhuān)谶@種情況下,還應該說(shuō)明構成本發(fā)明的技術(shù)特征,以及在其功能中相互支持并相互作用的算法特征或業(yè)務(wù)規則和方法特征如何帶來(lái)或產(chǎn)生用戶(hù)體驗的改善。6.3.2 發(fā)明專(zhuān)利申請中含有算法特征或者商業(yè)規則、方法特征的權利要求,應當以說(shuō)明書(shū)為依據,簡(jiǎn)明扼要地界定所主張的專(zhuān)利保護范圍。權利要求應當記錄功能上相互支持并與技術(shù)特征相互作用的技術(shù)特征和算法特征或者業(yè)務(wù)規則和方法特征。
-結束-
來(lái)源:每篇文章的版權歸其原作者所有。文章僅供參考,不提供法律建議。
工作日上午7點(diǎn)長(cháng)按關(guān)注大菱IP,分享每日IP英文/IP實(shí)務(wù)文章
隨時(shí)留下您的評論,閱讀后請點(diǎn)擊“再看”
如果本文對你有幫助,請分享給朋友圈 專(zhuān)利實(shí)務(wù)工作很難上手,要想真正上手,不是要掌握一些寫(xiě)作或回復模板、陳詞濫調,而是要真正了解法律的規定,把握問(wèn)題的本質(zhì),這樣當你面對不同的案件時(shí), 不同的技術(shù)解決方案,你可以整合并使用自己的語(yǔ)言來(lái)說(shuō)服審查員和法官。一旦你開(kāi)始,你會(huì )發(fā)現,其實(shí)在知識產(chǎn)權這個(gè)大范疇下,專(zhuān)利法是最簡(jiǎn)單的,因為它是相對客觀(guān)的。但是,商標和著(zhù)作權涉及許多主觀(guān)判斷,反不正當競爭和反壟斷案件涉及市場(chǎng)界定等問(wèn)題,較為復雜,難以確定。那么,如何學(xué)習專(zhuān)利實(shí)務(wù)呢?最好的辦法是研究復審、無(wú)效決定和專(zhuān)利訴訟的判決,找出當事人在實(shí)際案件中陳述意見(jiàn)和舉證的想法,學(xué)習法官進(jìn)行分析判斷的思路。案件的結果和裁決的目的并不是最重要的,許多指導性案例也存在爭議,可能會(huì )被推翻。但是,如果你能了解案件中法律分析的方法和適用法律的思路,就會(huì )大大提高你的實(shí)踐水平和能力。
為了通過(guò)實(shí)際案例幫助您提高實(shí)踐能力,我設置了兩門(mén)專(zhuān)利實(shí)務(wù)課程: 專(zhuān)利申請與無(wú)效實(shí)務(wù)通識課程:本課程為基礎課程,主要結合復審委員會(huì )指導性案例集的《案例理論》一書(shū),用實(shí)際案例講解專(zhuān)利法和審查指南的規定, 并具體說(shuō)明專(zhuān)利撰寫(xiě)、回應和無(wú)效的方法和技巧;專(zhuān)利侵權訴訟實(shí)踐明確:這門(mén)課程是改進(jìn)課程,因為專(zhuān)利是基于保護和最終目標,不了解專(zhuān)利侵權訴訟,一切專(zhuān)利工作都將是膚淺的。在本課程中,我將系統地講解專(zhuān)利保護范圍的認定、侵權認定、抗辯和侵權責任,以及證據和程序,同樣,我將結合最高人民法院的指導性案例,講解專(zhuān)利訴訟的實(shí)務(wù)要點(diǎn)和技巧。
匯總:采集規則(精品)

比如阿里巴巴,后期采集可能會(huì )針對一些門(mén)戶(hù)網(wǎng)站,比如阿里巴巴、慧聰網(wǎng)、百度新聞、燈飾行業(yè)的門(mén)戶(hù)網(wǎng)站進(jìn)行固定采集。我們的網(wǎng)站欄目必須分為幾個(gè)類(lèi)別,公司,供應,采購,新聞,行業(yè)知識。當然,新聞下面還會(huì )有幾個(gè)小版塊。每個(gè)欄目最好定期去,不一定非得是相關(guān)新聞。這樣一來(lái),似乎會(huì )有一些新聞內容。示例說(shuō)明目標網(wǎng)站: 1. 采集
內容 %B5%C6%CA%CE_n-y.html Lighting 關(guān)鍵字,這是 lighting 'supply' 關(guān)鍵字 2. 采集
內容 %B5%C6_n-y.html Lighting 關(guān)鍵字,這個(gè)這是關(guān)鍵字“光” 3。以上舉例說(shuō)明,這兩個(gè)關(guān)鍵詞也是兩個(gè)版塊的合集內容,而且頁(yè)數比較多,內容也挺多的。關(guān)鍵詞可自行設置,如吸頂燈、羊皮燈、LED、水晶燈等可自行設置采集
。當然,最好不要怕重復,只要采集
到的信息能夠正確地輸入到自己的系統中并顯示出來(lái)即可。在采集
過(guò)程中,供應商可以采集
圖片地址或采集
到自己的服務(wù)器中。因為燈飾行業(yè)對實(shí)物的看法不同,其他產(chǎn)品都是用文字描述的。4.新聞信息采集說(shuō)明新聞采集頁(yè)面百度;搜索關(guān)鍵詞'水晶燈' %CB%AE%BE%A7%B5%C6& tn=news&from=news&ie=gb2312&bs=%B5%C6%CA%CE&sr=0&cl=2&rn= 20&ct=1&prevc 這是百度的新聞采集頁(yè)。您可以在手機通訊中通過(guò)一些關(guān)鍵詞來(lái)采集
新聞內容,這樣就方便多了。

我們可以使用關(guān)鍵詞來(lái)采集
和存儲一些新聞,包括內容標題,圖片可以省略,但最好能夠下載圖片。能在不影響大家工作的情況下完成就最好了。合集分為燈飾新聞、配件新聞、行業(yè)新聞等幾個(gè)版塊,幾個(gè)版塊顯示的數量是平均的,說(shuō)明你是。有些新聞我們要求不高,只要是關(guān)于照明行業(yè)的,我們就可以采集
,內容可以從幾年前到現在。你安排它并自動(dòng)采集
它。我們現在需要的數據量也需要有針對性的信息,采集
非百度的新聞模塊,可能還有一些阿里巴巴、慧聰、照明行業(yè)的網(wǎng)站,這樣我們采集
的信息可能會(huì )更加準確。5. 公司模塊的收購標的是百度或者阿里巴巴%B5%C6%CA%CE_n-y.html目前是照明行業(yè)的公司信息。我們需要將一些公司的名稱(chēng)存儲到我們的系統中,用戶(hù)也有我們網(wǎng)站上的一些模板客戶(hù),例如:福建政和縣寶陵竹藝燈飾廠(chǎng)。我們采集
它們并對應于我們自己的數據庫。在我們的會(huì )員模板中,福建省政和縣寶陵竹藝燈飾就是在此基礎上展示的。我需要你回復我是否將他們的姓名和公司信息,包括一些產(chǎn)品信息采集
到我們的模板中。因為我們也有免費的企業(yè)模板,所以我想表達的是把這些公司的名字錄入我們的數據庫,也有免費的。企業(yè)網(wǎng)站。只要您可以在我們的網(wǎng)站上搜索他們的公司。里面最好有一些相關(guān)的內容 6. 行業(yè)知識采集
內容 比如百度知道搜索'lighting' %B5%C6%CA%CE&fr=wwwt 我們需要采集
一些我們行業(yè)知識中的大量?jì)热莶糠忠詷藴驶绞桨ㄅc回答問(wèn)題相對應的表格以供采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的!fr=wwwt 我們的行業(yè)知識板塊需要大量的內容進(jìn)行標準化的采集
,包括回答問(wèn)題對應的表格進(jìn)行采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的!fr=wwwt 我們的行業(yè)知識板塊需要大量的內容進(jìn)行標準化的采集
,包括回答問(wèn)題對應的表格進(jìn)行采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的!
解決方案:標準化數據采集平臺構建及在臨床試驗數據質(zhì)量控制的應用
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 316 次瀏覽 ? 2022-12-01 03:25
資料來(lái)源:臨床藥理學(xué) 2016, 21(12):1384-1388
收到日期:2016-08-30
?。壅菀幏?、完整的試驗數據是臨床試驗進(jìn)行統計分析的前提,也是臨床試驗結果真實(shí)可信的有力保證。目前電子數據采集系統(EDC)以其優(yōu)化試驗設計、保證數據真實(shí)可靠、控制試驗成本和風(fēng)險等優(yōu)勢,受到國內臨床試驗數據管理行業(yè)的高度重視。但是,仍然存在數據采集
規范化和不足的問(wèn)題。問(wèn)題。本文以基于ClinCapture二次開(kāi)發(fā)的藥物臨床試驗數據采集平臺eClinicaXY為例,說(shuō)明標準化數據采集平臺的架構設計,符合標準,
?。坳P(guān)鍵詞]臨床試驗;數據采集??平臺;標準化; 數據質(zhì)量控制
臨床試驗數據管理的目的是通過(guò)嚴格的質(zhì)量控制獲得完整可靠的臨床研究數據,然后通過(guò)科學(xué)嚴謹的統計分析來(lái)確定研究治療的有效性和安全性。目前,我國臨床試驗數據規范化管理尚處于發(fā)展階段,數據和執行過(guò)程質(zhì)量控制不足與臨床研究整體統一規范化要求之間的矛盾尚未充分顯現[ l],這使得試驗數據的解釋和異常數據的驗證往往具有一定的延遲性和局部性,無(wú)謂地增加了數據清理審查周期和試驗結果的不確定性。
電子數據采集系統(electronic data capture,EDC)是一個(gè)適用于臨床試驗數據采集、傳輸和管理的軟件平臺,包括活動(dòng)策劃和用戶(hù)溝通程序。據統計,EDC平均可以同時(shí)篩選81.3%的數據查詢(xún),將整個(gè)試驗的成本降低60%以上[2-3]。自2015年CFDA開(kāi)展藥物臨床試驗自查和2016年發(fā)布《臨床試驗電子數據采集技術(shù)指導原則》以來(lái),標準化的數據采集平臺可對關(guān)鍵數據節點(diǎn)進(jìn)行協(xié)同、有計劃的跟蹤監控。臨床試驗。引起我國醫藥行業(yè)的重視。這項研究采用 eClinicaXY,
1 數據采集平臺架構設計
eClinicaXY是基于GNU LGPL協(xié)議,基于開(kāi)源電子數據采集系統ClinCapture二次編譯開(kāi)發(fā)的藥物臨床試驗數據采集平臺。它集成了臨床數據交換標準聯(lián)盟(CDISC)和電子通用技術(shù)文檔(Electronic Common Technical Document,eCID)等臨床試驗標準化數據結構和操作痕跡快速檢查等技術(shù),并使用SpagoBI作為數據的輔助工具報告和顯示。
eClinicaXY 構建為基于平臺的軟件操作模型(SaaS,軟件即服務(wù))。它采用不同臨床試驗項目共享標準數據結構但具有獨立模式的模式,將不同的試驗項目分配給各個(gè)運行實(shí)例[4],以滿(mǎn)足不同臨床試驗的需要。測試項目方案異構,測試數據均滿(mǎn)足統一報送標準要求。整體數據服務(wù)框架由交互表現層、應用業(yè)務(wù)層和支撐環(huán)境層組成。采用基于B/S的MVC架構模式設計,使用HITP/HITPS作為傳輸協(xié)議,Oracle高可用數據庫作為數據存儲方案。數據采集??平臺采用JQuery+Ajax技術(shù)構建實(shí)時(shí)數據交互系統,通過(guò)頁(yè)面并行請求、異步響應、局部更新等方式在瀏覽器中實(shí)時(shí)跟蹤監控多中心整體測試過(guò)程[5] . 與授權的后端數據庫交互。平臺層次結構圖如圖1所示。
交互表現層:位于系統框架的頂層,采用HTML5、JSP等技術(shù)接收和展示用戶(hù)輸入和自動(dòng)生成的外部數據,為用戶(hù)提供交互的Web界面;
應用業(yè)務(wù)層:位于交互表現層和支撐環(huán)境層之間,負責系統業(yè)務(wù)處理和邏輯功能實(shí)現,根據臨床試驗執行需求,封裝業(yè)務(wù)功能單元并將各功能模塊動(dòng)態(tài)耦合成一個(gè)整體框架,進(jìn)行數據傳輸,映射的作用,同時(shí)具有水平可擴展性[6];
支撐環(huán)境層:位于系統框架的最底層,主要負責支撐數據平臺的穩定運行和數據庫訪(fǎng)問(wèn)。
此外,XML(eXtensibleMarkupLanguage,可擴展標記語(yǔ)言)由于其支持異構數據和語(yǔ)義的自解釋能力而被用于數據存儲和傳輸[7]。利用XML文檔的特性,將其與關(guān)系型數據庫相結合,即可以在不改變原有數據標準結構的情況下,滿(mǎn)足支持異構數據集合彈性擴展的需求。
2 符合相關(guān)法規和行業(yè)標準
目前臨床試驗的設計和實(shí)施大多采用各家公司慣用的方案和數據標準,這使得各試驗項目的執行標準、驗證規則和業(yè)務(wù)數據規范各不相同,導致數據采集
不全、同義數據多樣化表達式[8]。eClinicaXY數據采集平臺采用FDA推薦的標準數據結構和驗證規則作為基礎數據框架,同時(shí)融合了國家藥監部門(mén)的相關(guān)規定和行業(yè)標準要求,確保采集、報送和整個(gè)臨床試驗數據的存儲都是“標準化”、“統一”的。
2.1 臨床數據交換標準(CDISC)
CDISC 標準由臨床數據交換標準協(xié)會(huì )制定,作為臨床試驗數據和元數據交換、提交和存檔的行業(yè)標準。表模型(SDTM)、分析數據模型(ADaM)等部分。CDISC規定了統一的臨床試驗數據框架和元數據[9]。例如AE表示不良事件域,其中包括AETERM(不良事件報告術(shù)語(yǔ))、AEBODSYS(身體系統或器官分類(lèi))、AESER(嚴重不良事件)、AEREL(因果關(guān)系)等固定數據字段,每個(gè)數據字段是七元組(變量名、描述性變量標簽、數據類(lèi)型、受控術(shù)語(yǔ)集或數據格式、變量來(lái)源、變量作用、注釋?zhuān)?。目前,CDISC已被FDA、EMEA等推薦。
2.2 ICH 國際醫學(xué)術(shù)語(yǔ)詞典 (MedDRA) 術(shù)語(yǔ)
MedDRA 術(shù)語(yǔ)集是由 ICH 開(kāi)發(fā)的用于醫療產(chǎn)品文檔編制和安全監測的標準術(shù)語(yǔ)集。常用于藥物臨床試驗中不良事件的標準化編碼,包括五級系統器官分類(lèi)、高級組術(shù)語(yǔ)、高級術(shù)語(yǔ)、首選術(shù)語(yǔ)和低級術(shù)語(yǔ)結構[10]。eClinicaXY 數據采集平臺整合了我
2.3 WHO 藥物編碼詞典 (WHODDE)
WHODDE是世界衛生組織開(kāi)發(fā)的用于編碼、分析和報告臨床試驗中的藥物信息和藥物安全數據的分級藥物編碼系統。eClinicaXY數據采集平臺借鑒了WHO DDE中藥物術(shù)語(yǔ)的命名和編碼,并將其整合到數據庫中,作為受試者聯(lián)合用藥的參考術(shù)語(yǔ)。
此外,eClinicaXY數據采集平臺的建設也符合21CFRPartll中的電子記錄和電子簽名、FDA《計算機系統在臨床試驗中的應用技術(shù)指南》中的數據安全和追溯檢查,以及CFDA“臨床試驗電子數據采集技術(shù)”?!吨笇г瓌t》、《藥物臨床試驗質(zhì)量管理規范》(GCP)和HL7等國家和行業(yè)對電子化臨床試驗的法規要求。
3 數據采集平臺模塊框架
隨著(zhù)信息技術(shù)的進(jìn)步和物聯(lián)網(wǎng)的發(fā)展,臨床電子數據采集已經(jīng)從最初的單一數據庫軟件發(fā)展成為以中心服務(wù)器為核心、智能終端輔助數據采集的多層次網(wǎng)絡(luò )化數據采集系統識別和處理。在此基礎上,根據需要衍生出中央隨機化、交互式網(wǎng)絡(luò )反應(IVRS)、電子蹤跡檢查、定制化報告等功能[11]。eClinicaXY數據采集平臺結合現階段電子化數據采集的主流趨勢,主要收錄
以下功能模塊:
3.1 研究項目/測試中心設計模塊
(1) 可以嚴格設置試驗類(lèi)型、研究項目階段、方案驗證/IRB批準日期、受試者特征等;(2) 可以通過(guò)jQuery語(yǔ)句設置受試者驗證條件,系統會(huì )在每個(gè)受試者入組時(shí)進(jìn)行檢查,自檢是否符合進(jìn)/出條件,避免誤入群;(3)自定義是否允許動(dòng)態(tài)提問(wèn)、SDV查詢(xún)、行政編輯、CRF和文本評價(jià);(4) 通過(guò)用戶(hù)級別、用戶(hù)類(lèi)型、用戶(hù)角色設置多級訪(fǎng)問(wèn)權限,保證用戶(hù)處于滿(mǎn)足功能需求的工作域。
3.2 主題/研究事件分配模塊
(1) 基于Ran第三方接口的受試者隨機化可根據實(shí)驗設計選擇基于盲表的中心/中心隨機化或動(dòng)態(tài)隨機化算法;統計、動(dòng)態(tài)或自定義分組,受試者可根據測試計劃按單組或多組權重得到不同的預測;(3) 根據符合CDSIC數據采集域的eCRF模板文件生成研究事件,將所有研究事件分解為計劃、計劃外和普通三種類(lèi)型,每個(gè)事件分配到相應的隨訪(fǎng)時(shí)間點(diǎn)以形成整體測試流程。
3.3 數據采集與管理模塊
該模塊包括數據提交、數據監控與管理、數據提取三個(gè)部分??梢詫?shí)現(1)根據計劃執行時(shí)間流創(chuàng )建受試者數據錄入列表,根據不同受試者的實(shí)驗階段進(jìn)行時(shí)間點(diǎn)對應操作;(2) 創(chuàng )建MedDRA、WHODDE術(shù)語(yǔ)編碼和兼容的藥物詞典資源,并在測試數據生成時(shí)完成術(shù)語(yǔ)表達標準化;(3) 以XML標準格式編輯數據校驗規則,從數據質(zhì)量和邏輯角度實(shí)時(shí)校驗數據流的可靠性和時(shí)序準確性;(4) 集成源數據驗證(SDV)、標注和查詢(xún)管理,從多角色層面保證測試數據的真實(shí)性、準確性和完整性;
3.4 測試結果上報模塊
(1) 以?xún)x表板和交互圖表的形式實(shí)時(shí)展示各階段研究事件的完成情況和數據分布;(2) 可對接SpagoBI智能商務(wù)BI套件,發(fā)起人和項目主管可以在不導出測試數據的前提下,通過(guò)數據圖表實(shí)時(shí)跟蹤研究項目的進(jìn)度,以及及早發(fā)現試驗異常操作、受試者不良事件、異常數據或異常趨勢的數據;(3) 數據可按需求自定義導出,簡(jiǎn)化統計分析數據的確定和提交數據的整合;(4) 生成多種格式(PDF/SAS/EXCEL/SPSS/TXT)的主題病例報告數據和帶注釋的CRF(annotatedCRF),
4 執行技術(shù)路線(xiàn)
eClinicaXY數據采集平臺以研究事件(如個(gè)體特征、實(shí)驗室檢測等)為數據采集域單元,將整個(gè)臨床試驗分解為時(shí)序性的時(shí)間節點(diǎn)關(guān)鍵點(diǎn),其中研究事件由eCRF模板自動(dòng)生成基于 CDASH 標準的文件。它分為三類(lèi):與時(shí)間相關(guān)的重復事件、與時(shí)間相關(guān)的獨立事件和累積事件。每個(gè)研究事件都伴隨著(zhù)特定的 XML 檢查驗證規則。系統根據臨床試驗執行流程,將各個(gè)研究項目安排到相應的執行時(shí)間點(diǎn),通過(guò)特定的“時(shí)間窗-研究事件”順序組合模式構建電子化臨床試驗流程。
eClinicaXY數據采集平臺臨床試驗實(shí)施技術(shù)路線(xiàn)可分為以下幾個(gè)步驟:(1)項目設置,項目管理員設置研究項目的詳細信息、受試者的進(jìn)入條件和分組、項目參數等. 根據具體的臨床試驗方案,數據管理員根據方案CRF和數據管理計劃編寫(xiě)eCRF源文件和XML數據驗證文件,并以同名配對的形式導入系統。項目管理員將生成的研究事件組合成試執行流程,在系統內通過(guò)技術(shù)測試和小規模驗收后,將研究項目的狀態(tài)設置為“有效”;(2) 受試者被錄取,并且每個(gè)中心都會(huì )將測試人員的信息輸入到系統中。篩選完成后,系統會(huì )根據預先設定的測試類(lèi)型和隨機化方式,自動(dòng)為受試者分配一個(gè)唯一標識符(SUBJID)?!皟?yōu)旭藥包材號”盲聯(lián)的藥號分離方式,保證試驗盲聯(lián)的順利實(shí)施;(3)試驗數據的錄入,研究者或CRC將根據各受試者的試驗進(jìn)度分離產(chǎn)生的研究數據。相應的數據錄入以復式錄入的形式錄入。如果第一次錄入有邏輯錯誤或第二次錄入與第一次錄入不一致時(shí),會(huì )觸發(fā)預設的校驗條件,并在數據保存前提醒操作人員,循環(huán)往復,直到所有數據都通過(guò)驗證。如有疑問(wèn),可隨時(shí)通過(guò)互動(dòng)回復系統向研究人員提問(wèn);(4) 數據導出,當最后一個(gè)受試者完成試驗后仍有疑問(wèn)時(shí),數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,然后分段并由統計程序員重新組裝成統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,由統計程序員將數據切分重組為統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,由統計程序員將數據切分重組為統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。
5 優(yōu)勢特點(diǎn)及實(shí)現效果
通過(guò)構建符合國家相關(guān)法規和行業(yè)標準的質(zhì)量控制體系,將整體臨床試驗按計劃劃分節點(diǎn)要素,建立嚴謹一致的驗證文件,不僅可以縮短數據清洗周期,確保測試數據真實(shí)完整。前提下及早發(fā)現異?;蛴挟惓Z厔莸臄祿?當前臨床試驗數據質(zhì)量問(wèn)題主要體現在轉錄錯誤、不完整、安全性不夠、語(yǔ)義表達支離破碎[12]。標準化的數據采集平臺可以最大程度避免上述問(wèn)題,保證ALCOA+數據質(zhì)量控制原則(歸因于易讀性、同步性、原創(chuàng )性、準確性、完整性、
5.1 數據完整性和真實(shí)性驗證
以紙質(zhì)CRF為數據媒介的傳統臨床試驗最大的弊端是只有參與者自覺(jué)遵守GCP指南才能保證試驗數據的完整性和真實(shí)性,無(wú)法對數據及相關(guān)文件的訪(fǎng)問(wèn)和修改進(jìn)行有效檢查并被追蹤。標準化數據采集平臺基于CDISC數據框架建立通用臨床試驗數據模型,最大限度匹配臨床試驗實(shí)際產(chǎn)生的數據與需要提交的標準數據。在此基礎上,結合標準術(shù)語(yǔ)、MedDRA術(shù)語(yǔ)詞典、XSL模板文檔、XML和JQuery驗證規則文件,共同構建一個(gè)比較健壯的橫向數據和縱向數據相結合的eCRF庫,
此外,標準化的數據采集平臺集成了基于身份密碼(IBC)的多級用戶(hù)權限和操作痕跡檢查功能。跡檢業(yè)務(wù)對象模型是一個(gè)六元組A=(U,S,D,R,VB,VA),其中U為操作者,S為操作對象,D為操作日期和時(shí)間,R為操作目的,VB為更新前值,VA為更新后值,保證測試數據性的安全性和可追溯性。
5.2 數據錄入驗證
在藥物臨床試驗中,常有數據錄入錯誤,直到統計分析才發(fā)現,如收縮壓為80mmHg,舒張壓為110nunHg。標準化數據采集平臺的數據校驗功能可以利用數據庫中的函數依賴(lài),進(jìn)一步定制近似函數依賴(lài)作為數據質(zhì)量規則,降低半結構化數據清洗的復雜度[13-14]。
數據校驗的主要對象是數據缺失和冗余、事件數據的邏輯一致性、正常值范圍和臨床意義判斷、隨機化和方案違背等,根據預先設定的XML校驗規則文件,系統進(jìn)行100%校驗在數據錄入初期或標準化代碼映射入庫后,對方案中規定的主要、次要療效指標和關(guān)鍵安全性指標進(jìn)行審核。監測到異常數據后,及時(shí)對具有相應職責和權限的平臺運營(yíng)者進(jìn)行警示和審查,并對異常數據的變化情況進(jìn)行跟蹤分析。
5,3 總體數據自適應決策
臨床試驗有效性和安全性數據流是一組面板數據序列。實(shí)時(shí)數據流在數據庫中被劃分為原創(chuàng )
數據段。標準化映射完成后,根據目標領(lǐng)域固有的統計特征,進(jìn)一步建立描述其整體分布的可視化。同時(shí),它不斷修正當前相關(guān)模型與新采集
的數據段的擬合,并探索統計上顯著(zhù)的事件,以分析臨床試驗的進(jìn)展并識別數據流中的異常和異常值?;貜?。通過(guò)研究人員從專(zhuān)業(yè)角度對異?;蛱囟〞r(shí)間、區間數據進(jìn)行整體對比,趨勢異?;蚺c以往研究數據對比,綜合分析,可以及早發(fā)現療效數據的分布趨勢和安全性數據異常的發(fā)生[15]。在試驗數據標準化整合和全面質(zhì)量控制的總體框架下,對試驗實(shí)施做出科學(xué)嚴謹的適應性決策(如樣本日重估、適應隨機化等),提前采取調整措施在保障受試者權益的同時(shí),全面把控臨床試驗的整體執行質(zhì)量。
6結語(yǔ)
真實(shí)、完整、可追溯的高質(zhì)量臨床研究數據對檢測結果的可靠性和準確性起著(zhù)至關(guān)重要的作用?,F代標準的臨床試驗數據管理不再局限于傳統的簡(jiǎn)單數據錄入,還包括嚴格一致的質(zhì)量控制措施,以確保數據的標準化和準確性[16]。結合CDISC標準數據框架、MedDRA術(shù)語(yǔ)詞典、XML和JQuery數據驗證文件等標準化文件的模型驅動(dòng)架構和需求驅動(dòng)架構的標準化臨床試驗數據采集平臺,不僅具有統一標準化的源數據管理、動(dòng)態(tài)數據編碼聯(lián)動(dòng),具有數據異常實(shí)時(shí)校驗、數據安全生命周期可控等優(yōu)勢,并可在臨床試驗執行過(guò)程中實(shí)現數據誤錄的及時(shí)糾正、異常數據的早期篩查等功能,協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少因質(zhì)量管控問(wèn)題導致的質(zhì)量管控泛化。傳統臨床試驗數據采集模式中采集、編碼、驗證的隔離。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。從而協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少傳統臨床試驗數據采集模式中由于采集、編碼、驗證各自為政造成的質(zhì)量管控普遍化。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。從而協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少傳統臨床試驗數據采集模式中由于采集、編碼、驗證各自為政造成的質(zhì)量管控普遍化。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。
參考
歡迎留言發(fā)表您的看法和意見(jiàn)
生物統計學(xué)/數據管理數據庫/IT職位推薦
北京:
廣州:
上海:
官方數據:基于STM32(HAL庫)的水質(zhì)檢測(渾濁度、PH值、溫度、手機APP顯示、wi
系統將采集到的濁度、PH值、溫度等數據通過(guò)wifi發(fā)送至手機APP,超過(guò)閾值報警。
一、硬件材料清單:
1、STM32C8T6:控制器
2、OLED顯示屏:顯示傳感器采集到的數據
3、PH傳感器:檢測PH值
4. TDS傳感器:檢測濁度
5、DS18B02水溫傳感器:檢測溫度
6. ESP8266:發(fā)送數據到手機
7、蜂鳴器:超閾值報警
二、實(shí)物圖:
3.部分源碼:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//定時(shí)器中斷回調函數
{
HAL_TIM_Base_Stop_IT(&htim2);//停止定時(shí)器中斷
靜態(tài) uint8_t cot = 0;
char temp_a[50] = {0};
字符 humidity_a[20] = {0};
uint16_t ADC_Value,PH_Value1;
雙 ADC_ValueFF,PH_Value;
char charadc[50]={0};
char charph[50]={0};
beep_OFF();//關(guān)閉蜂鳴器
if(flag == 1)//關(guān)燈
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
}
else // 開(kāi)燈
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
}
如果 (htim == (&htim2))
{
if(cot == 25)//5s發(fā)送心跳包
{
HAL_UART_Transmit(&huart2,(uint8_t *)xtb, 2, 200);//發(fā)送心跳包
cot = 0;//定時(shí)器計數歸0
}
溫度 = DS18B20_Get_Temperature(); //讀取溫度值
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&AD_Value,2); //打開(kāi)DMA
ADC_ValueFF = -865.68*(AD_Value[0]*3.3/4096.0)+3291.3;//通過(guò)公式得到濁度值
PH_Value = AD_Value[1]*3.3/4096; //獲取采集PH值的電壓
PH_Value = -5.9647*PH_Value+22.255; //通過(guò)公式轉換為PH值
如果(PH_Value=14)PH_Value = 14;//PH值大于14修正為14
sprintf(temp_a,"%d.%dC",(int)temperature/10,(((int)temperature)));//將溫度轉換成字符串格式
sprintf(charph,"%.2F",PH_Value); //將PH轉換為字符串格式
sprintf(charadc,"%.2F",ADC_ValueFF); //將濁度轉化為字符串格式
發(fā)布((char*)“temp”,(char*)temp_a);//在手機APP上顯示溫度
釋放((char*)"PH",(char*)charph); //在手機APP上顯示PH值
Release((char*)"濁度",(char*)charadc); //在手機APP上顯示濁度
OLED_ShowString(0,16,(uint8_t *)"temp:",16,1); //在OLED顯示屏上顯示溫度:
OLED_ShowString(40,16,(uint8_t *)temp_a,16,1); //在OLED顯示屏上顯示溫度
OLED_ShowString(0,32,(uint8_t *)"PH:",16,1); //在OLED顯示屏上顯示PH:
OLED_ShowString(40,32,(uint8_t *)charph,16,1); //在OLED顯示屏上顯示pH值
OLED_ShowString(0,48,(uint8_t *)"ZD:",16,1); //在OLED顯示屏上顯示ZD:
OLED_ShowString(40,48,(uint8_t *)charadc,16,1); //在OLED顯示屏上顯示濁度值
OLED_刷新(); //刷新OLED顯示
if((int)(temperature/10)T_MAX)//判斷溫度是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
else if((int)(ADC_ValueFF)TDS_MAX)//判斷濁度是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
否則如果((int)(PH_Value)
PH_MAX)//判斷PH值是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
else beep_OFF();//不滿(mǎn)足所有條件則關(guān)閉蜂鳴器
cot++;//定時(shí)器計數加1
}
HAL_TIM_Base_Start_IT(&htim2);//啟動(dòng)定時(shí)器
}
4、示意圖:
下面是整個(gè)項目各個(gè)模塊的示意圖:
五。更多的:
如果想更詳細的了解整個(gè)項目,可以去b站觀(guān)看這個(gè)視頻演示,以下是視頻鏈接:
SCM畢業(yè)設計:基于stm32的遠程水質(zhì)檢測_嗶哩嗶哩_bilibili
贈送三重?。?! 查看全部
解決方案:標準化數據采集平臺構建及在臨床試驗數據質(zhì)量控制的應用
資料來(lái)源:臨床藥理學(xué) 2016, 21(12):1384-1388
收到日期:2016-08-30
?。壅菀幏?、完整的試驗數據是臨床試驗進(jìn)行統計分析的前提,也是臨床試驗結果真實(shí)可信的有力保證。目前電子數據采集系統(EDC)以其優(yōu)化試驗設計、保證數據真實(shí)可靠、控制試驗成本和風(fēng)險等優(yōu)勢,受到國內臨床試驗數據管理行業(yè)的高度重視。但是,仍然存在數據采集
規范化和不足的問(wèn)題。問(wèn)題。本文以基于ClinCapture二次開(kāi)發(fā)的藥物臨床試驗數據采集平臺eClinicaXY為例,說(shuō)明標準化數據采集平臺的架構設計,符合標準,
?。?a href="http://www.hqbet6457.com/caiji/public_dict/" target="_blank">關(guān)鍵詞]臨床試驗;數據采集??平臺;標準化; 數據質(zhì)量控制
臨床試驗數據管理的目的是通過(guò)嚴格的質(zhì)量控制獲得完整可靠的臨床研究數據,然后通過(guò)科學(xué)嚴謹的統計分析來(lái)確定研究治療的有效性和安全性。目前,我國臨床試驗數據規范化管理尚處于發(fā)展階段,數據和執行過(guò)程質(zhì)量控制不足與臨床研究整體統一規范化要求之間的矛盾尚未充分顯現[ l],這使得試驗數據的解釋和異常數據的驗證往往具有一定的延遲性和局部性,無(wú)謂地增加了數據清理審查周期和試驗結果的不確定性。
電子數據采集系統(electronic data capture,EDC)是一個(gè)適用于臨床試驗數據采集、傳輸和管理的軟件平臺,包括活動(dòng)策劃和用戶(hù)溝通程序。據統計,EDC平均可以同時(shí)篩選81.3%的數據查詢(xún),將整個(gè)試驗的成本降低60%以上[2-3]。自2015年CFDA開(kāi)展藥物臨床試驗自查和2016年發(fā)布《臨床試驗電子數據采集技術(shù)指導原則》以來(lái),標準化的數據采集平臺可對關(guān)鍵數據節點(diǎn)進(jìn)行協(xié)同、有計劃的跟蹤監控。臨床試驗。引起我國醫藥行業(yè)的重視。這項研究采用 eClinicaXY,
1 數據采集平臺架構設計
eClinicaXY是基于GNU LGPL協(xié)議,基于開(kāi)源電子數據采集系統ClinCapture二次編譯開(kāi)發(fā)的藥物臨床試驗數據采集平臺。它集成了臨床數據交換標準聯(lián)盟(CDISC)和電子通用技術(shù)文檔(Electronic Common Technical Document,eCID)等臨床試驗標準化數據結構和操作痕跡快速檢查等技術(shù),并使用SpagoBI作為數據的輔助工具報告和顯示。
eClinicaXY 構建為基于平臺的軟件操作模型(SaaS,軟件即服務(wù))。它采用不同臨床試驗項目共享標準數據結構但具有獨立模式的模式,將不同的試驗項目分配給各個(gè)運行實(shí)例[4],以滿(mǎn)足不同臨床試驗的需要。測試項目方案異構,測試數據均滿(mǎn)足統一報送標準要求。整體數據服務(wù)框架由交互表現層、應用業(yè)務(wù)層和支撐環(huán)境層組成。采用基于B/S的MVC架構模式設計,使用HITP/HITPS作為傳輸協(xié)議,Oracle高可用數據庫作為數據存儲方案。數據采集??平臺采用JQuery+Ajax技術(shù)構建實(shí)時(shí)數據交互系統,通過(guò)頁(yè)面并行請求、異步響應、局部更新等方式在瀏覽器中實(shí)時(shí)跟蹤監控多中心整體測試過(guò)程[5] . 與授權的后端數據庫交互。平臺層次結構圖如圖1所示。
交互表現層:位于系統框架的頂層,采用HTML5、JSP等技術(shù)接收和展示用戶(hù)輸入和自動(dòng)生成的外部數據,為用戶(hù)提供交互的Web界面;
應用業(yè)務(wù)層:位于交互表現層和支撐環(huán)境層之間,負責系統業(yè)務(wù)處理和邏輯功能實(shí)現,根據臨床試驗執行需求,封裝業(yè)務(wù)功能單元并將各功能模塊動(dòng)態(tài)耦合成一個(gè)整體框架,進(jìn)行數據傳輸,映射的作用,同時(shí)具有水平可擴展性[6];
支撐環(huán)境層:位于系統框架的最底層,主要負責支撐數據平臺的穩定運行和數據庫訪(fǎng)問(wèn)。
此外,XML(eXtensibleMarkupLanguage,可擴展標記語(yǔ)言)由于其支持異構數據和語(yǔ)義的自解釋能力而被用于數據存儲和傳輸[7]。利用XML文檔的特性,將其與關(guān)系型數據庫相結合,即可以在不改變原有數據標準結構的情況下,滿(mǎn)足支持異構數據集合彈性擴展的需求。
2 符合相關(guān)法規和行業(yè)標準
目前臨床試驗的設計和實(shí)施大多采用各家公司慣用的方案和數據標準,這使得各試驗項目的執行標準、驗證規則和業(yè)務(wù)數據規范各不相同,導致數據采集
不全、同義數據多樣化表達式[8]。eClinicaXY數據采集平臺采用FDA推薦的標準數據結構和驗證規則作為基礎數據框架,同時(shí)融合了國家藥監部門(mén)的相關(guān)規定和行業(yè)標準要求,確保采集、報送和整個(gè)臨床試驗數據的存儲都是“標準化”、“統一”的。
2.1 臨床數據交換標準(CDISC)
CDISC 標準由臨床數據交換標準協(xié)會(huì )制定,作為臨床試驗數據和元數據交換、提交和存檔的行業(yè)標準。表模型(SDTM)、分析數據模型(ADaM)等部分。CDISC規定了統一的臨床試驗數據框架和元數據[9]。例如AE表示不良事件域,其中包括AETERM(不良事件報告術(shù)語(yǔ))、AEBODSYS(身體系統或器官分類(lèi))、AESER(嚴重不良事件)、AEREL(因果關(guān)系)等固定數據字段,每個(gè)數據字段是七元組(變量名、描述性變量標簽、數據類(lèi)型、受控術(shù)語(yǔ)集或數據格式、變量來(lái)源、變量作用、注釋?zhuān)?。目前,CDISC已被FDA、EMEA等推薦。

2.2 ICH 國際醫學(xué)術(shù)語(yǔ)詞典 (MedDRA) 術(shù)語(yǔ)
MedDRA 術(shù)語(yǔ)集是由 ICH 開(kāi)發(fā)的用于醫療產(chǎn)品文檔編制和安全監測的標準術(shù)語(yǔ)集。常用于藥物臨床試驗中不良事件的標準化編碼,包括五級系統器官分類(lèi)、高級組術(shù)語(yǔ)、高級術(shù)語(yǔ)、首選術(shù)語(yǔ)和低級術(shù)語(yǔ)結構[10]。eClinicaXY 數據采集平臺整合了我
2.3 WHO 藥物編碼詞典 (WHODDE)
WHODDE是世界衛生組織開(kāi)發(fā)的用于編碼、分析和報告臨床試驗中的藥物信息和藥物安全數據的分級藥物編碼系統。eClinicaXY數據采集平臺借鑒了WHO DDE中藥物術(shù)語(yǔ)的命名和編碼,并將其整合到數據庫中,作為受試者聯(lián)合用藥的參考術(shù)語(yǔ)。
此外,eClinicaXY數據采集平臺的建設也符合21CFRPartll中的電子記錄和電子簽名、FDA《計算機系統在臨床試驗中的應用技術(shù)指南》中的數據安全和追溯檢查,以及CFDA“臨床試驗電子數據采集技術(shù)”?!吨笇г瓌t》、《藥物臨床試驗質(zhì)量管理規范》(GCP)和HL7等國家和行業(yè)對電子化臨床試驗的法規要求。
3 數據采集平臺模塊框架
隨著(zhù)信息技術(shù)的進(jìn)步和物聯(lián)網(wǎng)的發(fā)展,臨床電子數據采集已經(jīng)從最初的單一數據庫軟件發(fā)展成為以中心服務(wù)器為核心、智能終端輔助數據采集的多層次網(wǎng)絡(luò )化數據采集系統識別和處理。在此基礎上,根據需要衍生出中央隨機化、交互式網(wǎng)絡(luò )反應(IVRS)、電子蹤跡檢查、定制化報告等功能[11]。eClinicaXY數據采集平臺結合現階段電子化數據采集的主流趨勢,主要收錄
以下功能模塊:
3.1 研究項目/測試中心設計模塊
(1) 可以嚴格設置試驗類(lèi)型、研究項目階段、方案驗證/IRB批準日期、受試者特征等;(2) 可以通過(guò)jQuery語(yǔ)句設置受試者驗證條件,系統會(huì )在每個(gè)受試者入組時(shí)進(jìn)行檢查,自檢是否符合進(jìn)/出條件,避免誤入群;(3)自定義是否允許動(dòng)態(tài)提問(wèn)、SDV查詢(xún)、行政編輯、CRF和文本評價(jià);(4) 通過(guò)用戶(hù)級別、用戶(hù)類(lèi)型、用戶(hù)角色設置多級訪(fǎng)問(wèn)權限,保證用戶(hù)處于滿(mǎn)足功能需求的工作域。
3.2 主題/研究事件分配模塊
(1) 基于Ran第三方接口的受試者隨機化可根據實(shí)驗設計選擇基于盲表的中心/中心隨機化或動(dòng)態(tài)隨機化算法;統計、動(dòng)態(tài)或自定義分組,受試者可根據測試計劃按單組或多組權重得到不同的預測;(3) 根據符合CDSIC數據采集域的eCRF模板文件生成研究事件,將所有研究事件分解為計劃、計劃外和普通三種類(lèi)型,每個(gè)事件分配到相應的隨訪(fǎng)時(shí)間點(diǎn)以形成整體測試流程。
3.3 數據采集與管理模塊
該模塊包括數據提交、數據監控與管理、數據提取三個(gè)部分??梢詫?shí)現(1)根據計劃執行時(shí)間流創(chuàng )建受試者數據錄入列表,根據不同受試者的實(shí)驗階段進(jìn)行時(shí)間點(diǎn)對應操作;(2) 創(chuàng )建MedDRA、WHODDE術(shù)語(yǔ)編碼和兼容的藥物詞典資源,并在測試數據生成時(shí)完成術(shù)語(yǔ)表達標準化;(3) 以XML標準格式編輯數據校驗規則,從數據質(zhì)量和邏輯角度實(shí)時(shí)校驗數據流的可靠性和時(shí)序準確性;(4) 集成源數據驗證(SDV)、標注和查詢(xún)管理,從多角色層面保證測試數據的真實(shí)性、準確性和完整性;
3.4 測試結果上報模塊
(1) 以?xún)x表板和交互圖表的形式實(shí)時(shí)展示各階段研究事件的完成情況和數據分布;(2) 可對接SpagoBI智能商務(wù)BI套件,發(fā)起人和項目主管可以在不導出測試數據的前提下,通過(guò)數據圖表實(shí)時(shí)跟蹤研究項目的進(jìn)度,以及及早發(fā)現試驗異常操作、受試者不良事件、異常數據或異常趨勢的數據;(3) 數據可按需求自定義導出,簡(jiǎn)化統計分析數據的確定和提交數據的整合;(4) 生成多種格式(PDF/SAS/EXCEL/SPSS/TXT)的主題病例報告數據和帶注釋的CRF(annotatedCRF),
4 執行技術(shù)路線(xiàn)
eClinicaXY數據采集平臺以研究事件(如個(gè)體特征、實(shí)驗室檢測等)為數據采集域單元,將整個(gè)臨床試驗分解為時(shí)序性的時(shí)間節點(diǎn)關(guān)鍵點(diǎn),其中研究事件由eCRF模板自動(dòng)生成基于 CDASH 標準的文件。它分為三類(lèi):與時(shí)間相關(guān)的重復事件、與時(shí)間相關(guān)的獨立事件和累積事件。每個(gè)研究事件都伴隨著(zhù)特定的 XML 檢查驗證規則。系統根據臨床試驗執行流程,將各個(gè)研究項目安排到相應的執行時(shí)間點(diǎn),通過(guò)特定的“時(shí)間窗-研究事件”順序組合模式構建電子化臨床試驗流程。
eClinicaXY數據采集平臺臨床試驗實(shí)施技術(shù)路線(xiàn)可分為以下幾個(gè)步驟:(1)項目設置,項目管理員設置研究項目的詳細信息、受試者的進(jìn)入條件和分組、項目參數等. 根據具體的臨床試驗方案,數據管理員根據方案CRF和數據管理計劃編寫(xiě)eCRF源文件和XML數據驗證文件,并以同名配對的形式導入系統。項目管理員將生成的研究事件組合成試執行流程,在系統內通過(guò)技術(shù)測試和小規模驗收后,將研究項目的狀態(tài)設置為“有效”;(2) 受試者被錄取,并且每個(gè)中心都會(huì )將測試人員的信息輸入到系統中。篩選完成后,系統會(huì )根據預先設定的測試類(lèi)型和隨機化方式,自動(dòng)為受試者分配一個(gè)唯一標識符(SUBJID)?!皟?yōu)旭藥包材號”盲聯(lián)的藥號分離方式,保證試驗盲聯(lián)的順利實(shí)施;(3)試驗數據的錄入,研究者或CRC將根據各受試者的試驗進(jìn)度分離產(chǎn)生的研究數據。相應的數據錄入以復式錄入的形式錄入。如果第一次錄入有邏輯錯誤或第二次錄入與第一次錄入不一致時(shí),會(huì )觸發(fā)預設的校驗條件,并在數據保存前提醒操作人員,循環(huán)往復,直到所有數據都通過(guò)驗證。如有疑問(wèn),可隨時(shí)通過(guò)互動(dòng)回復系統向研究人員提問(wèn);(4) 數據導出,當最后一個(gè)受試者完成試驗后仍有疑問(wèn)時(shí),數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,然后分段并由統計程序員重新組裝成統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,由統計程序員將數據切分重組為統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,由統計程序員將數據切分重組為統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。
5 優(yōu)勢特點(diǎn)及實(shí)現效果

通過(guò)構建符合國家相關(guān)法規和行業(yè)標準的質(zhì)量控制體系,將整體臨床試驗按計劃劃分節點(diǎn)要素,建立嚴謹一致的驗證文件,不僅可以縮短數據清洗周期,確保測試數據真實(shí)完整。前提下及早發(fā)現異?;蛴挟惓Z厔莸臄祿?當前臨床試驗數據質(zhì)量問(wèn)題主要體現在轉錄錯誤、不完整、安全性不夠、語(yǔ)義表達支離破碎[12]。標準化的數據采集平臺可以最大程度避免上述問(wèn)題,保證ALCOA+數據質(zhì)量控制原則(歸因于易讀性、同步性、原創(chuàng )性、準確性、完整性、
5.1 數據完整性和真實(shí)性驗證
以紙質(zhì)CRF為數據媒介的傳統臨床試驗最大的弊端是只有參與者自覺(jué)遵守GCP指南才能保證試驗數據的完整性和真實(shí)性,無(wú)法對數據及相關(guān)文件的訪(fǎng)問(wèn)和修改進(jìn)行有效檢查并被追蹤。標準化數據采集平臺基于CDISC數據框架建立通用臨床試驗數據模型,最大限度匹配臨床試驗實(shí)際產(chǎn)生的數據與需要提交的標準數據。在此基礎上,結合標準術(shù)語(yǔ)、MedDRA術(shù)語(yǔ)詞典、XSL模板文檔、XML和JQuery驗證規則文件,共同構建一個(gè)比較健壯的橫向數據和縱向數據相結合的eCRF庫,
此外,標準化的數據采集平臺集成了基于身份密碼(IBC)的多級用戶(hù)權限和操作痕跡檢查功能。跡檢業(yè)務(wù)對象模型是一個(gè)六元組A=(U,S,D,R,VB,VA),其中U為操作者,S為操作對象,D為操作日期和時(shí)間,R為操作目的,VB為更新前值,VA為更新后值,保證測試數據性的安全性和可追溯性。
5.2 數據錄入驗證
在藥物臨床試驗中,常有數據錄入錯誤,直到統計分析才發(fā)現,如收縮壓為80mmHg,舒張壓為110nunHg。標準化數據采集平臺的數據校驗功能可以利用數據庫中的函數依賴(lài),進(jìn)一步定制近似函數依賴(lài)作為數據質(zhì)量規則,降低半結構化數據清洗的復雜度[13-14]。
數據校驗的主要對象是數據缺失和冗余、事件數據的邏輯一致性、正常值范圍和臨床意義判斷、隨機化和方案違背等,根據預先設定的XML校驗規則文件,系統進(jìn)行100%校驗在數據錄入初期或標準化代碼映射入庫后,對方案中規定的主要、次要療效指標和關(guān)鍵安全性指標進(jìn)行審核。監測到異常數據后,及時(shí)對具有相應職責和權限的平臺運營(yíng)者進(jìn)行警示和審查,并對異常數據的變化情況進(jìn)行跟蹤分析。
5,3 總體數據自適應決策
臨床試驗有效性和安全性數據流是一組面板數據序列。實(shí)時(shí)數據流在數據庫中被劃分為原創(chuàng )
數據段。標準化映射完成后,根據目標領(lǐng)域固有的統計特征,進(jìn)一步建立描述其整體分布的可視化。同時(shí),它不斷修正當前相關(guān)模型與新采集
的數據段的擬合,并探索統計上顯著(zhù)的事件,以分析臨床試驗的進(jìn)展并識別數據流中的異常和異常值?;貜?。通過(guò)研究人員從專(zhuān)業(yè)角度對異?;蛱囟〞r(shí)間、區間數據進(jìn)行整體對比,趨勢異?;蚺c以往研究數據對比,綜合分析,可以及早發(fā)現療效數據的分布趨勢和安全性數據異常的發(fā)生[15]。在試驗數據標準化整合和全面質(zhì)量控制的總體框架下,對試驗實(shí)施做出科學(xué)嚴謹的適應性決策(如樣本日重估、適應隨機化等),提前采取調整措施在保障受試者權益的同時(shí),全面把控臨床試驗的整體執行質(zhì)量。
6結語(yǔ)
真實(shí)、完整、可追溯的高質(zhì)量臨床研究數據對檢測結果的可靠性和準確性起著(zhù)至關(guān)重要的作用?,F代標準的臨床試驗數據管理不再局限于傳統的簡(jiǎn)單數據錄入,還包括嚴格一致的質(zhì)量控制措施,以確保數據的標準化和準確性[16]。結合CDISC標準數據框架、MedDRA術(shù)語(yǔ)詞典、XML和JQuery數據驗證文件等標準化文件的模型驅動(dòng)架構和需求驅動(dòng)架構的標準化臨床試驗數據采集平臺,不僅具有統一標準化的源數據管理、動(dòng)態(tài)數據編碼聯(lián)動(dòng),具有數據異常實(shí)時(shí)校驗、數據安全生命周期可控等優(yōu)勢,并可在臨床試驗執行過(guò)程中實(shí)現數據誤錄的及時(shí)糾正、異常數據的早期篩查等功能,協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少因質(zhì)量管控問(wèn)題導致的質(zhì)量管控泛化。傳統臨床試驗數據采集模式中采集、編碼、驗證的隔離。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。從而協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少傳統臨床試驗數據采集模式中由于采集、編碼、驗證各自為政造成的質(zhì)量管控普遍化。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。從而協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少傳統臨床試驗數據采集模式中由于采集、編碼、驗證各自為政造成的質(zhì)量管控普遍化。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。
參考
歡迎留言發(fā)表您的看法和意見(jiàn)
生物統計學(xué)/數據管理數據庫/IT職位推薦
北京:
廣州:
上海:
官方數據:基于STM32(HAL庫)的水質(zhì)檢測(渾濁度、PH值、溫度、手機APP顯示、wi
系統將采集到的濁度、PH值、溫度等數據通過(guò)wifi發(fā)送至手機APP,超過(guò)閾值報警。
一、硬件材料清單:
1、STM32C8T6:控制器
2、OLED顯示屏:顯示傳感器采集到的數據
3、PH傳感器:檢測PH值
4. TDS傳感器:檢測濁度
5、DS18B02水溫傳感器:檢測溫度
6. ESP8266:發(fā)送數據到手機
7、蜂鳴器:超閾值報警
二、實(shí)物圖:
3.部分源碼:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//定時(shí)器中斷回調函數
{
HAL_TIM_Base_Stop_IT(&htim2);//停止定時(shí)器中斷
靜態(tài) uint8_t cot = 0;
char temp_a[50] = {0};
字符 humidity_a[20] = {0};
uint16_t ADC_Value,PH_Value1;
雙 ADC_ValueFF,PH_Value;
char charadc[50]={0};
char charph[50]={0};
beep_OFF();//關(guān)閉蜂鳴器
if(flag == 1)//關(guān)燈
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);

}
else // 開(kāi)燈
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
}
如果 (htim == (&htim2))
{
if(cot == 25)//5s發(fā)送心跳包
{
HAL_UART_Transmit(&huart2,(uint8_t *)xtb, 2, 200);//發(fā)送心跳包
cot = 0;//定時(shí)器計數歸0
}
溫度 = DS18B20_Get_Temperature(); //讀取溫度值
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&AD_Value,2); //打開(kāi)DMA
ADC_ValueFF = -865.68*(AD_Value[0]*3.3/4096.0)+3291.3;//通過(guò)公式得到濁度值
PH_Value = AD_Value[1]*3.3/4096; //獲取采集PH值的電壓
PH_Value = -5.9647*PH_Value+22.255; //通過(guò)公式轉換為PH值
如果(PH_Value=14)PH_Value = 14;//PH值大于14修正為14
sprintf(temp_a,"%d.%dC",(int)temperature/10,(((int)temperature)));//將溫度轉換成字符串格式
sprintf(charph,"%.2F",PH_Value); //將PH轉換為字符串格式
sprintf(charadc,"%.2F",ADC_ValueFF); //將濁度轉化為字符串格式
發(fā)布((char*)“temp”,(char*)temp_a);//在手機APP上顯示溫度
釋放((char*)"PH",(char*)charph); //在手機APP上顯示PH值
Release((char*)"濁度",(char*)charadc); //在手機APP上顯示濁度
OLED_ShowString(0,16,(uint8_t *)"temp:",16,1); //在OLED顯示屏上顯示溫度:
OLED_ShowString(40,16,(uint8_t *)temp_a,16,1); //在OLED顯示屏上顯示溫度
OLED_ShowString(0,32,(uint8_t *)"PH:",16,1); //在OLED顯示屏上顯示PH:
OLED_ShowString(40,32,(uint8_t *)charph,16,1); //在OLED顯示屏上顯示pH值

OLED_ShowString(0,48,(uint8_t *)"ZD:",16,1); //在OLED顯示屏上顯示ZD:
OLED_ShowString(40,48,(uint8_t *)charadc,16,1); //在OLED顯示屏上顯示濁度值
OLED_刷新(); //刷新OLED顯示
if((int)(temperature/10)T_MAX)//判斷溫度是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
else if((int)(ADC_ValueFF)TDS_MAX)//判斷濁度是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
否則如果((int)(PH_Value)
PH_MAX)//判斷PH值是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
else beep_OFF();//不滿(mǎn)足所有條件則關(guān)閉蜂鳴器
cot++;//定時(shí)器計數加1
}
HAL_TIM_Base_Start_IT(&htim2);//啟動(dòng)定時(shí)器
}
4、示意圖:
下面是整個(gè)項目各個(gè)模塊的示意圖:
五。更多的:
如果想更詳細的了解整個(gè)項目,可以去b站觀(guān)看這個(gè)視頻演示,以下是視頻鏈接:
SCM畢業(yè)設計:基于stm32的遠程水質(zhì)檢測_嗶哩嗶哩_bilibili
贈送三重?。?!
解決方案:自動(dòng)機器學(xué)習簡(jiǎn)述(AutoML)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 75 次瀏覽 ? 2022-11-30 00:30
為什么需要自動(dòng)化機器學(xué)習
對于機器學(xué)習的新用戶(hù)來(lái)說(shuō),使用機器學(xué)習算法的一個(gè)主要障礙是算法的性能受到許多設計決策的影響。隨著(zhù)深度學(xué)習的普及,工程師需要選擇相應的神經(jīng)網(wǎng)絡(luò )架構、訓練過(guò)程、正則化方法、超參數等,這些都對算法的性能有很大的影響。因此,深度學(xué)習工程師也被戲稱(chēng)為調參工程師。
自動(dòng)化機器學(xué)習 (AutoML) 的目標是使用自動(dòng)化的、數據驅動(dòng)的方法來(lái)做出上述決策。用戶(hù)只需提供數據,自動(dòng)機器學(xué)習系統將自動(dòng)確定最佳方案。領(lǐng)域專(zhuān)家不再需要為學(xué)習各種機器學(xué)習算法而煩惱。
自動(dòng)機器學(xué)習不僅包括眾所周知的算法選擇、超參數優(yōu)化和神經(jīng)網(wǎng)絡(luò )架構搜索,還涵蓋了機器學(xué)習工作流程的每一步:
超參數優(yōu)化超參數優(yōu)化
學(xué)習器模型中一般有兩類(lèi)參數,一類(lèi)可以從數據中學(xué)習和估計,另一類(lèi)參數不能從數據中估計,只能根據人類(lèi)經(jīng)驗設計和指定,而后者成為超參數。比如支持向量機中的C、Kernal、game;樸素貝葉斯等中的 alpha
超參數優(yōu)化有很多方法:
最常見(jiàn)的類(lèi)型是黑盒功能優(yōu)化。所謂黑盒優(yōu)化,就是將決策網(wǎng)絡(luò )作為黑盒進(jìn)行優(yōu)化,只關(guān)心輸入輸出,而忽略其內部機制。決策網(wǎng)絡(luò )通??梢詤祷?。這時(shí)候我們在優(yōu)化的時(shí)候首先要考慮的就是收斂性。
以下幾類(lèi)方法屬于黑盒優(yōu)化:
在很多情況下,隨機搜索比網(wǎng)格搜索效果更好,但是從上圖我們可以看出,兩者都不能保證找到最優(yōu)解。
黑盒優(yōu)化的一些工具:
由于優(yōu)化目標的不連續和不可微的數學(xué)特性,一些搜索和非梯度優(yōu)化算法被用來(lái)解決這個(gè)問(wèn)題,包括我們上面提到的黑盒算法。此類(lèi)算法通過(guò)抽樣和抽樣的評價(jià)進(jìn)行搜索,往往需要對抽樣進(jìn)行大量的評價(jià)才能獲得較好的結果。然而,自動(dòng)機器學(xué)習任務(wù)中的評估通常是通過(guò) k 折交叉驗證獲得的。在具有大數據集的機器學(xué)習任務(wù)上,獲得評估的時(shí)間成本是巨大的。這也會(huì )影響優(yōu)化算法在自動(dòng)機器學(xué)習問(wèn)題上的效果。因此,一些降低評估成本的方法被提出,其中多保真度優(yōu)化(multi-fidelity methods)就是其中之一。
此外,一些研究基于梯度下降優(yōu)化。
超參數優(yōu)化面臨許多挑戰:
相關(guān)參考
元學(xué)習 元學(xué)習
元學(xué)習也是“學(xué)習如何學(xué)習”。通過(guò)系統地觀(guān)察現有學(xué)習任務(wù)之間的性能差異,進(jìn)而學(xué)習現有的經(jīng)驗和元數據,可以用來(lái)更好地執行新的學(xué)習任務(wù)。這樣做可以極大地改進(jìn)機器學(xué)習流水線(xiàn)或神經(jīng)網(wǎng)絡(luò )架構的設計,也可以以數據驅動(dòng)的方式取代手工車(chē)間式的算法工程工作。
從某種意義上說(shuō),元學(xué)習涵蓋了超參數優(yōu)化,因為元數據學(xué)習包括:超參數、管道組成、神經(jīng)網(wǎng)絡(luò )架構、模型組成、元特征等。
機器學(xué)習的算法也稱(chēng)為“學(xué)習者”。學(xué)習者假設一個(gè)模型有很多未知參數,使用訓練數據和優(yōu)化算法找到最適合這些訓練數據的參數,并生成一個(gè)新的算法,或者一個(gè)參數已知的模型并使用模型/算法預測新的未知數據。如果世界上只有一個(gè)模型,那么問(wèn)題就簡(jiǎn)單了。問(wèn)題是模型很多,不同的模型有不同的超參數。我們經(jīng)常將模型和算法組裝在一起,形成復合模型和機器學(xué)習管道。這 時(shí)不時(shí)地,我需要知道構建哪些不同的模型來(lái)解決不同的問(wèn)題。元學(xué)習就在這個(gè)時(shí)候。我們可以考慮超參數、管道、和神經(jīng)網(wǎng)絡(luò )架構作為新模型的未知參數,并將不同學(xué)習任務(wù)的性能指標作為輸入數據,以便我們可以使用優(yōu)化算法找到性能最佳的參數集。這個(gè)模式是可以一直嵌套的,也就是說(shuō),你可以有'元-元-元-學(xué)習',當然希望你不要走得太遠,找不到回頭路。
元學(xué)習的方法包括:
元學(xué)習的一大挑戰是用很少的訓練數據學(xué)習一個(gè)復雜的模型,這是一個(gè)one-shot或few-shot的問(wèn)題。
就像人類(lèi)的學(xué)習一樣,每次學(xué)習,無(wú)論成敗,都會(huì )獲得一定的經(jīng)驗,而人類(lèi)很少從頭開(kāi)始學(xué)習。在構建自動(dòng)學(xué)習時(shí),我們還應該充分利用現有的每一個(gè)學(xué)習經(jīng)驗,并逐步改進(jìn)它,使新的學(xué)習更加有效。
相關(guān)參考:
神經(jīng)架構搜索 神經(jīng)架構搜索
說(shuō)到 AutoML,大多數人都知道這個(gè)故事是因為 Google 的 AutoML 系統。隨著(zhù)深度學(xué)習的普及,神經(jīng)網(wǎng)絡(luò )的架構變得越來(lái)越復雜,隨之而來(lái)的人工工程也越來(lái)越多。神經(jīng)網(wǎng)絡(luò )架構搜索就是為了解決這個(gè)問(wèn)題而設計的。
NAS主要由三部分組成:
相關(guān)參考
自動(dòng)化特征工程
自動(dòng)化特征工程可以幫助數據科學(xué)家根據數據集自動(dòng)創(chuàng )建用于訓練的最佳特征。
Featuretools 是一個(gè)用于自動(dòng)化特征工程的開(kāi)源庫。這是一個(gè)很棒的工具,旨在加快特征生成過(guò)程,讓您有時(shí)間專(zhuān)注于構建機器學(xué)習模型的其他方面。換句話(huà)說(shuō),它將您的數據置于“等待機器學(xué)習”狀態(tài)。
Featuretools 包中收錄
三個(gè)主要組件:
參考:
其他自動(dòng)化機器學(xué)習工具集
這里有一些開(kāi)源的自動(dòng)化機器學(xué)習工具供大家參考和選擇。
參考:
解決方案:初級電商,如何通過(guò)策略快速擴充電商詞庫以及后續運用
好久沒(méi)有更新了,我會(huì )一如既往的繼續分享一些電商搜索推薦的實(shí)用知識。畢竟,紙上談兵不是長(cháng)久之計。每個(gè)公司對自己電商平臺的搜索和推薦需求,以及現狀,差異太大。結果,我熟悉的套路無(wú)法完美地轉移到新的工作操作計劃中。這也給了我一些不同的想法,搜索和構建不適用的解決方案。接下來(lái)我們就來(lái)看看電商新手詞庫策略如何快速擴充,以及以后如何應用到電商領(lǐng)域。
按照我之前的想法,如果一個(gè)新的電子商務(wù)公司剛剛起步,在搜索中缺少特定的詞庫,如何創(chuàng )建它是一個(gè)難題。目前,我正在尋找一些聲稱(chēng)在網(wǎng)站上擁有完整電子商務(wù)詞典的付費供應商。但是評價(jià)都是低的,評價(jià)不靠譜,不是數量少就是質(zhì)量很差。如果沒(méi)有用戶(hù)的基本搜索詞庫,可以從自己的產(chǎn)品庫中的產(chǎn)品名稱(chēng)進(jìn)行詞頻統計進(jìn)行批量n-gram分詞處理,然后通過(guò)簡(jiǎn)單的tf-idf策略進(jìn)行品類(lèi)對應篩選. 當然也可以進(jìn)行人工點(diǎn)檢,但是這樣會(huì )消耗更多的人工成本。
如果你有用戶(hù)搜索的基本關(guān)鍵詞詞庫,這些詞的搜索數據分布不均,錯別字較多。如果能采集
到10000+左右的單詞,可以進(jìn)行如下操作:
可以直接用已有的詞庫對沖京東/淘寶,可以得到這些詞的聯(lián)想詞和熱詞,還有錯別字。只需要開(kāi)發(fā)寫(xiě)一個(gè)爬蟲(chóng),目前估計詞庫的規??梢粤⒖虜U大30倍。如果沒(méi)有爬蟲(chóng)人員,可以采用人工標注的方式完成操作,每周需要2個(gè)人左右完成,簡(jiǎn)單的Excel復制粘貼即可。
以上操作需要注意幾個(gè)問(wèn)題:
初始詞典需要限制字符數。一般初始詞庫只需要有1-7個(gè)字數,即最多7個(gè)漢字,最多14個(gè)數字/英文字符,因為如果字符太長(cháng),可能不會(huì )能帶出聯(lián)想詞。而且用戶(hù)不會(huì )主動(dòng)輸入太長(cháng)的關(guān)鍵詞。爬蟲(chóng)需要注意規避法律風(fēng)險。目前,京東無(wú)需登錄即可在其網(wǎng)頁(yè)上獲取關(guān)鍵詞,而淘寶則需要登錄才能操作。很容易觸發(fā)反爬蟲(chóng)機制??梢赃x擇幾個(gè)電商平臺進(jìn)行操作,最后合并去重。
拿到關(guān)鍵詞詞庫后,其實(shí)就可以開(kāi)始篩選數據了。對于相關(guān)的關(guān)鍵詞對,進(jìn)行敏感詞過(guò)濾、黑名單過(guò)濾等,不進(jìn)行結果過(guò)濾。然后它可以直接在自己相關(guān)的 關(guān)鍵詞 推薦和演示中重復使用。也可以重復使用在熱詞的個(gè)性化展示中。關(guān)聯(lián)詞也可以使用相同的過(guò)濾邏輯。過(guò)濾后直接導入詞庫,戰略產(chǎn)品可以根據自己的需要對聯(lián)想詞進(jìn)行排序。一般左匹配、收錄
匹配、相關(guān)模糊匹配等都可以作為策略參考。在排序方面,可以用use-usage排序:即哪個(gè)詞的使用率越高,就越高等(因為比較簡(jiǎn)單)。
這些擴展的詞庫也可以用作用戶(hù)標簽。在前期沒(méi)有任何用戶(hù)行為數據的情況下,可以對外推廣這些詞庫:比如熱詞、聯(lián)想詞、默認詞、相關(guān)關(guān)鍵詞等。吸引用戶(hù)點(diǎn)擊,作為用戶(hù)行為畫(huà)像的基礎標簽,商品推薦模塊的素材等。對于前期沒(méi)有在算法上投入的電商來(lái)說(shuō),無(wú)疑是一種比較劃算的操作。如果算法人力不多,也可以把這些關(guān)鍵詞和商品信息對沖,獲取關(guān)鍵詞和商品的向量關(guān)系等。
當然,以上方案僅供參考,并非完美方案。它還收錄
許多風(fēng)險,例如合規風(fēng)險等,并不適用于所有電子商務(wù)場(chǎng)景。 查看全部
解決方案:自動(dòng)機器學(xué)習簡(jiǎn)述(AutoML)
為什么需要自動(dòng)化機器學(xué)習
對于機器學(xué)習的新用戶(hù)來(lái)說(shuō),使用機器學(xué)習算法的一個(gè)主要障礙是算法的性能受到許多設計決策的影響。隨著(zhù)深度學(xué)習的普及,工程師需要選擇相應的神經(jīng)網(wǎng)絡(luò )架構、訓練過(guò)程、正則化方法、超參數等,這些都對算法的性能有很大的影響。因此,深度學(xué)習工程師也被戲稱(chēng)為調參工程師。
自動(dòng)化機器學(xué)習 (AutoML) 的目標是使用自動(dòng)化的、數據驅動(dòng)的方法來(lái)做出上述決策。用戶(hù)只需提供數據,自動(dòng)機器學(xué)習系統將自動(dòng)確定最佳方案。領(lǐng)域專(zhuān)家不再需要為學(xué)習各種機器學(xué)習算法而煩惱。
自動(dòng)機器學(xué)習不僅包括眾所周知的算法選擇、超參數優(yōu)化和神經(jīng)網(wǎng)絡(luò )架構搜索,還涵蓋了機器學(xué)習工作流程的每一步:
超參數優(yōu)化超參數優(yōu)化
學(xué)習器模型中一般有兩類(lèi)參數,一類(lèi)可以從數據中學(xué)習和估計,另一類(lèi)參數不能從數據中估計,只能根據人類(lèi)經(jīng)驗設計和指定,而后者成為超參數。比如支持向量機中的C、Kernal、game;樸素貝葉斯等中的 alpha
超參數優(yōu)化有很多方法:
最常見(jiàn)的類(lèi)型是黑盒功能優(yōu)化。所謂黑盒優(yōu)化,就是將決策網(wǎng)絡(luò )作為黑盒進(jìn)行優(yōu)化,只關(guān)心輸入輸出,而忽略其內部機制。決策網(wǎng)絡(luò )通??梢詤祷?。這時(shí)候我們在優(yōu)化的時(shí)候首先要考慮的就是收斂性。
以下幾類(lèi)方法屬于黑盒優(yōu)化:
在很多情況下,隨機搜索比網(wǎng)格搜索效果更好,但是從上圖我們可以看出,兩者都不能保證找到最優(yōu)解。
黑盒優(yōu)化的一些工具:

由于優(yōu)化目標的不連續和不可微的數學(xué)特性,一些搜索和非梯度優(yōu)化算法被用來(lái)解決這個(gè)問(wèn)題,包括我們上面提到的黑盒算法。此類(lèi)算法通過(guò)抽樣和抽樣的評價(jià)進(jìn)行搜索,往往需要對抽樣進(jìn)行大量的評價(jià)才能獲得較好的結果。然而,自動(dòng)機器學(xué)習任務(wù)中的評估通常是通過(guò) k 折交叉驗證獲得的。在具有大數據集的機器學(xué)習任務(wù)上,獲得評估的時(shí)間成本是巨大的。這也會(huì )影響優(yōu)化算法在自動(dòng)機器學(xué)習問(wèn)題上的效果。因此,一些降低評估成本的方法被提出,其中多保真度優(yōu)化(multi-fidelity methods)就是其中之一。
此外,一些研究基于梯度下降優(yōu)化。
超參數優(yōu)化面臨許多挑戰:
相關(guān)參考
元學(xué)習 元學(xué)習
元學(xué)習也是“學(xué)習如何學(xué)習”。通過(guò)系統地觀(guān)察現有學(xué)習任務(wù)之間的性能差異,進(jìn)而學(xué)習現有的經(jīng)驗和元數據,可以用來(lái)更好地執行新的學(xué)習任務(wù)。這樣做可以極大地改進(jìn)機器學(xué)習流水線(xiàn)或神經(jīng)網(wǎng)絡(luò )架構的設計,也可以以數據驅動(dòng)的方式取代手工車(chē)間式的算法工程工作。
從某種意義上說(shuō),元學(xué)習涵蓋了超參數優(yōu)化,因為元數據學(xué)習包括:超參數、管道組成、神經(jīng)網(wǎng)絡(luò )架構、模型組成、元特征等。
機器學(xué)習的算法也稱(chēng)為“學(xué)習者”。學(xué)習者假設一個(gè)模型有很多未知參數,使用訓練數據和優(yōu)化算法找到最適合這些訓練數據的參數,并生成一個(gè)新的算法,或者一個(gè)參數已知的模型并使用模型/算法預測新的未知數據。如果世界上只有一個(gè)模型,那么問(wèn)題就簡(jiǎn)單了。問(wèn)題是模型很多,不同的模型有不同的超參數。我們經(jīng)常將模型和算法組裝在一起,形成復合模型和機器學(xué)習管道。這 時(shí)不時(shí)地,我需要知道構建哪些不同的模型來(lái)解決不同的問(wèn)題。元學(xué)習就在這個(gè)時(shí)候。我們可以考慮超參數、管道、和神經(jīng)網(wǎng)絡(luò )架構作為新模型的未知參數,并將不同學(xué)習任務(wù)的性能指標作為輸入數據,以便我們可以使用優(yōu)化算法找到性能最佳的參數集。這個(gè)模式是可以一直嵌套的,也就是說(shuō),你可以有'元-元-元-學(xué)習',當然希望你不要走得太遠,找不到回頭路。
元學(xué)習的方法包括:
元學(xué)習的一大挑戰是用很少的訓練數據學(xué)習一個(gè)復雜的模型,這是一個(gè)one-shot或few-shot的問(wèn)題。
就像人類(lèi)的學(xué)習一樣,每次學(xué)習,無(wú)論成敗,都會(huì )獲得一定的經(jīng)驗,而人類(lèi)很少從頭開(kāi)始學(xué)習。在構建自動(dòng)學(xué)習時(shí),我們還應該充分利用現有的每一個(gè)學(xué)習經(jīng)驗,并逐步改進(jìn)它,使新的學(xué)習更加有效。
相關(guān)參考:
神經(jīng)架構搜索 神經(jīng)架構搜索

說(shuō)到 AutoML,大多數人都知道這個(gè)故事是因為 Google 的 AutoML 系統。隨著(zhù)深度學(xué)習的普及,神經(jīng)網(wǎng)絡(luò )的架構變得越來(lái)越復雜,隨之而來(lái)的人工工程也越來(lái)越多。神經(jīng)網(wǎng)絡(luò )架構搜索就是為了解決這個(gè)問(wèn)題而設計的。
NAS主要由三部分組成:
相關(guān)參考
自動(dòng)化特征工程
自動(dòng)化特征工程可以幫助數據科學(xué)家根據數據集自動(dòng)創(chuàng )建用于訓練的最佳特征。
Featuretools 是一個(gè)用于自動(dòng)化特征工程的開(kāi)源庫。這是一個(gè)很棒的工具,旨在加快特征生成過(guò)程,讓您有時(shí)間專(zhuān)注于構建機器學(xué)習模型的其他方面。換句話(huà)說(shuō),它將您的數據置于“等待機器學(xué)習”狀態(tài)。
Featuretools 包中收錄
三個(gè)主要組件:
參考:
其他自動(dòng)化機器學(xué)習工具集
這里有一些開(kāi)源的自動(dòng)化機器學(xué)習工具供大家參考和選擇。
參考:
解決方案:初級電商,如何通過(guò)策略快速擴充電商詞庫以及后續運用
好久沒(méi)有更新了,我會(huì )一如既往的繼續分享一些電商搜索推薦的實(shí)用知識。畢竟,紙上談兵不是長(cháng)久之計。每個(gè)公司對自己電商平臺的搜索和推薦需求,以及現狀,差異太大。結果,我熟悉的套路無(wú)法完美地轉移到新的工作操作計劃中。這也給了我一些不同的想法,搜索和構建不適用的解決方案。接下來(lái)我們就來(lái)看看電商新手詞庫策略如何快速擴充,以及以后如何應用到電商領(lǐng)域。
按照我之前的想法,如果一個(gè)新的電子商務(wù)公司剛剛起步,在搜索中缺少特定的詞庫,如何創(chuàng )建它是一個(gè)難題。目前,我正在尋找一些聲稱(chēng)在網(wǎng)站上擁有完整電子商務(wù)詞典的付費供應商。但是評價(jià)都是低的,評價(jià)不靠譜,不是數量少就是質(zhì)量很差。如果沒(méi)有用戶(hù)的基本搜索詞庫,可以從自己的產(chǎn)品庫中的產(chǎn)品名稱(chēng)進(jìn)行詞頻統計進(jìn)行批量n-gram分詞處理,然后通過(guò)簡(jiǎn)單的tf-idf策略進(jìn)行品類(lèi)對應篩選. 當然也可以進(jìn)行人工點(diǎn)檢,但是這樣會(huì )消耗更多的人工成本。
如果你有用戶(hù)搜索的基本關(guān)鍵詞詞庫,這些詞的搜索數據分布不均,錯別字較多。如果能采集
到10000+左右的單詞,可以進(jìn)行如下操作:

可以直接用已有的詞庫對沖京東/淘寶,可以得到這些詞的聯(lián)想詞和熱詞,還有錯別字。只需要開(kāi)發(fā)寫(xiě)一個(gè)爬蟲(chóng),目前估計詞庫的規??梢粤⒖虜U大30倍。如果沒(méi)有爬蟲(chóng)人員,可以采用人工標注的方式完成操作,每周需要2個(gè)人左右完成,簡(jiǎn)單的Excel復制粘貼即可。
以上操作需要注意幾個(gè)問(wèn)題:
初始詞典需要限制字符數。一般初始詞庫只需要有1-7個(gè)字數,即最多7個(gè)漢字,最多14個(gè)數字/英文字符,因為如果字符太長(cháng),可能不會(huì )能帶出聯(lián)想詞。而且用戶(hù)不會(huì )主動(dòng)輸入太長(cháng)的關(guān)鍵詞。爬蟲(chóng)需要注意規避法律風(fēng)險。目前,京東無(wú)需登錄即可在其網(wǎng)頁(yè)上獲取關(guān)鍵詞,而淘寶則需要登錄才能操作。很容易觸發(fā)反爬蟲(chóng)機制??梢赃x擇幾個(gè)電商平臺進(jìn)行操作,最后合并去重。

拿到關(guān)鍵詞詞庫后,其實(shí)就可以開(kāi)始篩選數據了。對于相關(guān)的關(guān)鍵詞對,進(jìn)行敏感詞過(guò)濾、黑名單過(guò)濾等,不進(jìn)行結果過(guò)濾。然后它可以直接在自己相關(guān)的 關(guān)鍵詞 推薦和演示中重復使用。也可以重復使用在熱詞的個(gè)性化展示中。關(guān)聯(lián)詞也可以使用相同的過(guò)濾邏輯。過(guò)濾后直接導入詞庫,戰略產(chǎn)品可以根據自己的需要對聯(lián)想詞進(jìn)行排序。一般左匹配、收錄
匹配、相關(guān)模糊匹配等都可以作為策略參考。在排序方面,可以用use-usage排序:即哪個(gè)詞的使用率越高,就越高等(因為比較簡(jiǎn)單)。
這些擴展的詞庫也可以用作用戶(hù)標簽。在前期沒(méi)有任何用戶(hù)行為數據的情況下,可以對外推廣這些詞庫:比如熱詞、聯(lián)想詞、默認詞、相關(guān)關(guān)鍵詞等。吸引用戶(hù)點(diǎn)擊,作為用戶(hù)行為畫(huà)像的基礎標簽,商品推薦模塊的素材等。對于前期沒(méi)有在算法上投入的電商來(lái)說(shuō),無(wú)疑是一種比較劃算的操作。如果算法人力不多,也可以把這些關(guān)鍵詞和商品信息對沖,獲取關(guān)鍵詞和商品的向量關(guān)系等。
當然,以上方案僅供參考,并非完美方案。它還收錄
許多風(fēng)險,例如合規風(fēng)險等,并不適用于所有電子商務(wù)場(chǎng)景。
解決方案:Simulink與自動(dòng)駕駛(ADAS)算法的開(kāi)發(fā)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2022-11-29 23:42
點(diǎn)擊上方藍字,您的關(guān)注就是對我最大的鼓勵!
美國大選已經(jīng)落下帷幕。不知道白哥對我們Matlab/Simulink是什么態(tài)度,是繼續禁,還是?其實(shí)我還是支持的,繼續禁用。只有這樣才能激發(fā)我們的自主創(chuàng )新能力,您怎么看?哈哈哈!
好久沒(méi)更新了 一直忙這忙那,還沒(méi)有靜下心來(lái)總結這些東西。這次聊一個(gè)高端的話(huà)題---自動(dòng)駕駛,閑聊,總結一下最近的一些學(xué)習工作,Simulink在自動(dòng)駕駛的發(fā)展過(guò)程中是如何存在的?話(huà)不多說(shuō),開(kāi)始說(shuō)吧!自動(dòng)駕駛軟件開(kāi)發(fā)的基本架構逃不開(kāi)我們常說(shuō)的三大法寶,感知---決策(規劃)---執行(控制),這三個(gè)內容,軟件開(kāi)發(fā)的基本思路是不一樣的,聽(tīng)聽(tīng)本的解說(shuō)!
感知:雷達的感知大部分是通過(guò)傅里葉變換等算法對具有多普勒效應的脈沖波信號進(jìn)行處理。目前主流是使用C作為代碼。雷達有很多種。這個(gè)算法僅限于毫米波雷達,激光雷達不懂。
大多數相機對應的是圖像處理。雖然Simulink目前已經(jīng)收錄
了相應的圖像處理算法模型,但是這些算法模型只是對大家寫(xiě)論文有用,容易出結果,容易仿真!然而,大多數實(shí)際算法都是與 OpenCV 和 C++ 一起使用的。
慣性導航和 GPS 中的算法是另一類(lèi)。Simulink 涉及的不多。輪速和車(chē)身姿態(tài)大多來(lái)源于ESC,EPS,這些對應的模塊!
綜上所述,Simulink在感知層面用的不多。Decision-making:L3以上的層級,由于有地圖的參與,我們稱(chēng)之為規劃,L3以下的層級大部分稱(chēng)為決策層,即融合多個(gè)目標源進(jìn)行決策.
融合算法目前大部分在雷達和攝像頭,但有走向獨立和向域控制器靠攏的趨勢,相當一部分算法軟在里面。軟件開(kāi)發(fā)雖然說(shuō)是用Simulink開(kāi)發(fā),但是很多都是用C和C++開(kāi)發(fā)的,尤其是多維目標跟蹤融合!執行(控制):執行分為橫向控制域和縱向控制。橫向控制主要是和EPS交互角度和力矩??v控主要與動(dòng)力總成和底盤(pán)進(jìn)行交互,交互的核心是加速和制動(dòng)的需求。
這些控制邏輯,通俗的說(shuō)就是簡(jiǎn)單的門(mén)控邏輯,大部分是OR,AND,NOT的邏輯,這些都是Simulink的強項,所以相關(guān)邏輯的執行都是用Simulink開(kāi)發(fā),然后自動(dòng)生成代碼,終于軟了!
綜上所述,目前Simulink對自動(dòng)駕駛的支持其實(shí)還不是很廣泛。大多側重于功能的控制,其他相關(guān)圖像,以及雷達算法的應用。他們中的大多數還處于寫(xiě)論文的階段??偨Y如下,呵呵!
目前從事自動(dòng)駕駛算法開(kāi)發(fā),Simulink中有很多對應的庫文件和例子可以參考。下圖所示的庫文件可以直接使用。
還有對應的示例文件,點(diǎn)Help自己學(xué)習就好了,應該問(wèn)題不大。
然后說(shuō)說(shuō)相應的算法生成和集成!至于所謂的可以做融合和感知算法的Simulink,我不能否認,但是實(shí)踐是檢驗真理的唯一標準,現在在實(shí)際項目中還是很少用到!
但是,當你在開(kāi)發(fā)某個(gè)功能時(shí),如何進(jìn)行前期驗證呢?如何建立一個(gè)模擬感知算法,如何建立一個(gè)模擬融合算法,如何在前期驗證你的功能算法,這就需要我們的大殺器出來(lái)了!這兩個(gè)東西是ADAS系統開(kāi)發(fā)的主角,因為真正的功能開(kāi)發(fā)肯定沒(méi)有發(fā)動(dòng)機和變速箱那么復雜,但是ADAS系統的數據量和仿真要求遠大于其他系統,因為這個(gè)東西不模擬,直接測試太貴了!
ADAS系統是一個(gè)非常復雜的東西。在開(kāi)發(fā)初期,如果使用特定階段或特定場(chǎng)景的驗證,使用實(shí)車(chē)成本太高,不切實(shí)際!所以我們前期做場(chǎng)景驗證的時(shí)候,如果后面問(wèn)題重現,就需要我們的大殺器Simulink了!尤其是L3、L4級別的功能,必須要有這個(gè)大殺器才能完成百萬(wàn)公里的驗證。ADAS系統仿真與驗證 在Simulink環(huán)境中建立仿真環(huán)境,進(jìn)行算法驗證與開(kāi)發(fā)。目前Simulink集成了Driving Scenario Designer的庫。這個(gè)庫可以完成場(chǎng)景的規劃和定義,如下圖:
場(chǎng)景建模完成后,Matab可以將其轉換成Mat文件(類(lèi)似自動(dòng)代碼生成的S-function格式),然后導入到Simulink環(huán)境中,添加相應的傳感器模型,進(jìn)行open-循環(huán)和閉環(huán)模擬!如下圖開(kāi)環(huán)仿真來(lái)驗證對應的融合算法!
閉環(huán)仿真增加了車(chē)輛動(dòng)力學(xué)和相應的路徑設計。把它變成一個(gè)閉環(huán)來(lái)驗證相應的功能算法,比如ACC、AEB、TJA等功能。這兩個(gè)就是我們所說(shuō)的SIL,軟件在環(huán)仿真的學(xué)術(shù)定義!
當設計這些場(chǎng)景和算法時(shí),需要對其進(jìn)行測試。測試工具和方法與前面提到的代碼自動(dòng)生成測試方法相同。Simulink 的測試管理器可用于執行動(dòng)態(tài)測試用例和靜態(tài)代碼。覆蓋測試,如下圖,和基本的測試方法是一樣的!
以上都是形式化的算法驗證流程,適用于基礎功能開(kāi)發(fā),但目前大多用于面向應用的項目中。面向應用的項目主要測試工作是采集道路數據,然后進(jìn)行驗證,比較符合實(shí)際。它是可靠的,并且在建立仿真模型時(shí)也省去了很多工作。省錢(qián)又高效!哈哈哈。
中國貼牌的傳統做法。具體操作方法同上!通過(guò)導入場(chǎng)景數據,可以驗證具體的傳感器算法,通過(guò)導入目標列表數據,可以驗證具體的功能算法,如下圖!
設計、仿真、測試,這個(gè)閉環(huán)形成了ADSA算法的開(kāi)發(fā)和驗證,展示了Simulink軟件的NB:
ADAS數據處理
在實(shí)際測試驗證的過(guò)程中,會(huì )采集到大量的數據,比如攝像頭圖像數據、雷達數據、車(chē)道檢測數據、激光雷達數據、慣性測量單元數據等,這些結果如何處理?如何標記真值?
Simulink中的ADST工具箱收錄
了相應的函數,然后就可以說(shuō)說(shuō)相應的圖像數據,分析后的目標列表,統一用一個(gè)圖表來(lái)展示分析,進(jìn)行我們所謂的真值標定,然后可視化,就是比我們的好 肉眼看,比NB還要多,請參考下圖!
在做可視化時(shí),Simulink可以在同一屏幕上轉換車(chē)輛坐標系和圖像坐標系,從而繪制出不同的點(diǎn)云數據,便于傳感器信號的分析和驗證。
小才小學(xué),這些總結僅供朋友參考,啟發(fā)大家,大家一起學(xué)習吧!ADSA系統的算法研究猶如星辰大海。只要抓住一顆閃亮的星星,你就可以在智慧的潮汐中屹立于橋上,成為潮汐中的潮人。一起學(xué)習,一起進(jìn)步,一起征服燦爛的星海!
學(xué)無(wú)止境,深入淺出,細細研讀,必成大器!分享給有志之士!
解決方案:使用樹(shù)莓派3B+開(kāi)發(fā)智能音樂(lè )播放器(續---加入自動(dòng)喚醒功能)
下次預定。. .
上次講到給智能音樂(lè )播放器增加語(yǔ)音喚醒功能。我google了一下相關(guān)資料。目前有百度AI、科大訊飛、谷歌、snowboy。最簡(jiǎn)單的大概就是snowboy了。去github下載源碼,然后去官網(wǎng)查看相關(guān)說(shuō)明。注意下載的源碼中有四個(gè)demo。四個(gè)源碼最好都看一遍,可以解決大部分應用問(wèn)題。
我這里用demo.py這個(gè)框架就夠了。其次最重要的是登錄snowboy官網(wǎng)注冊用戶(hù)(需要用谷歌賬號登錄),然后錄制自己的個(gè)性化喚醒詞(例如:你好小愛(ài)),下載您記錄的喚醒詞文件 pmdl 作為程序運行的參數 (python3 demo.py XXX.pmdl)。
好了,我們直接上代碼:
# -*- coding: utf-8 -*-
from aip import AipSpeech #百度語(yǔ)音識別庫
import pyaudio #麥克風(fēng)聲音采集庫
import wave
import requests,json #音樂(lè )搜索
import pygame #mp3播放
import snowboydecoder
import sys
import signal
import os
import time
import sys
interrupted = False
""" 我的 APPID AK SK """
APP_ID = 'xxxxxxxxx'
API_KEY = 'xxxxxxxxxxxxxx'
SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
#定義采集聲音文件參數
CHUNK = 1024
FORMAT = pyaudio.paInt16 #16位采集
CHANNELS = 1 #單聲道
RATE = 16000 #采樣率
RECORD_SECONDS = 9 #采樣時(shí)長(cháng) 定義為9秒的錄音
WAVE_OUTPUT_FILENAME = "./myvoice.pcm" #采集聲音文件存儲路徑
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
#獲取下載地址
def get_down_url(songid):
req=requests.get("http://tingapi.ting.baidu.com/ ... ot%3B %songid)
req.encoding='utf-8'
#print(json.loads(req.text))
json1=json.loads(req.text.replace("jQuery17206073972467458864_1511011710426(","").replace(");",""))
print("下載地址:",json1["bitrate"]['show_link'])
return json1["bitrate"]['show_link']
#下載保存文件
def music_down(url,music_name,artistname):
f=open(music_name+'-'+artistname+'.mp3','wb')
req_mp3=requests.get(url)
f.write(req_mp3.content)
f.close()
#調用百度AI,將文字轉化為聲音輸出,用于提示音
def word_to_voice(text):
result = client.synthesis(text, 'zh', 1, {
'vol': 5, 'spd': 3, 'per': 3})
if not isinstance(result, dict):
with open('./audio.mp3', 'wb') as f:
f.write(result)
f.close()
pygame.mixer.music.load('./audio.mp3')#text文字轉化的語(yǔ)音文件
<p>
pygame.mixer.music.play(loops=0)
while pygame.mixer.music.get_busy() == True:
print('waiting')
def word_to_voice1(text):
result = client.synthesis(text, 'zh', 1, {
'vol': 5, 'spd': 3, 'per': 3})
if not isinstance(result, dict):
with open('./audio1.mp3', 'wb') as f:
f.write(result)
f.close()
pygame.mixer.music.load('./audio1.mp3')
pygame.mixer.music.play(loops=0)
while pygame.mixer.music.get_busy() == True:
print('waiting')
#獲得麥克風(fēng)輸入的聲音文件,保存在myvoice.pcm
def get_mic_voice_file(p):
word_to_voice('請說(shuō)出歌名')
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
#p.terminate()#這里先不使用p.terminate(),否則 p = pyaudio.PyAudio()將失效,還得重新初始化。
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
print('recording finished')
#百度語(yǔ)音識別出歌名文字并返回
def baidu_get_song_name(client):
results = client.asr(get_file_content(WAVE_OUTPUT_FILENAME), 'pcm', 16000, { 'dev_pid': 1536, })
# print(results['result'])
song_name=results['result'][0]
print(song_name)
return song_name
#百度音樂(lè )下載歌曲
def download_music_file(song_name):
req_url = "http://sug.music.baidu.com/inf ... ot%3B % song_name
req_so = requests.get(req_url)
data = json.loads(req_so.text.replace("window.baidu.sug(", "").replace(");", ""))
for i in data["data"]["song"]:
print("\tsongid:" + str(i["songid"]), "音樂(lè )名字:" + i["songname"], "\t歌手:" + i["artistname"])
input_songid = data["data"]["song"][0]["songid"] # input("請輸入你要下載的songid:")
for i in data["data"]["song"]:
if input_songid == str(i["songid"]):
url = get_down_url(i["songid"])
music_down(url, i["songname"], i["artistname"])
print("下載完成")
music_name = i['songname'] # 獲取MP3文件中的歌曲名
artistname = i["artistname"] # 獲取MP3文件中的歌手名
filename = './' + music_name + '-' + artistname + '.mp3'
print(filename)
word_to_voice1('請欣賞')
return filename
def play_mp3(music_file):
pygame.mixer.music.load(music_file)
'''while True:
# 檢查音樂(lè )流播放,有返回True,沒(méi)有返回False
# 如果一直有音樂(lè )流則選擇播放
if pygame.mixer.music.get_busy() == False:
pygame.mixer.music.play()'''
pygame.mixer.music.play(loops=0) #該函數運行后立即返回,音樂(lè )一直在后臺運行
def one_time_process(p,detector):#一次麥克采樣+語(yǔ)音識別+音樂(lè )下載+自動(dòng)播放
detector.terminate() #該條代碼很重要,因為detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)已經(jīng)在內部使用pyaudio庫獲取了MIC的權限,如果我們再次魯莽的使用pyaudio,將造成程序出錯
get_mic_voice_file(p)
play_mp3(download_music_file(baidu_get_song_name(client)))
#snowboy 相關(guān)代碼
def signal_handler(signal, frame):#改變全局變量interrupted值
global interrupted
interrupted = True
def interrupt_callback():#鍵盤(pán)輸入ctrl+c終端程序運行
global interrupted
return interrupted
if __name__=='__main__':
#麥克風(fēng)采集初始化、百度語(yǔ)音識別初始化、mp3文件播放初始化
p = pyaudio.PyAudio()
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
pygame.mixer.init()
model = sys.argv[1]
#
# capture SIGINT signal, e.g., Ctrl+C
signal.signal(signal.SIGINT, signal_handler)
detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)
print('Listening... Press Ctrl+C to exit')
# main loop
while 1:
detector.start(detected_callback=lambda: one_time_process(p,detector),interrupt_check=interrupt_callback,sleep_time=0.03)#detector作為回調函數的一個(gè)參數,目的是將MIC的權限進(jìn)行釋放
detector.terminate()
</p> 查看全部
解決方案:Simulink與自動(dòng)駕駛(ADAS)算法的開(kāi)發(fā)
點(diǎn)擊上方藍字,您的關(guān)注就是對我最大的鼓勵!
美國大選已經(jīng)落下帷幕。不知道白哥對我們Matlab/Simulink是什么態(tài)度,是繼續禁,還是?其實(shí)我還是支持的,繼續禁用。只有這樣才能激發(fā)我們的自主創(chuàng )新能力,您怎么看?哈哈哈!
好久沒(méi)更新了 一直忙這忙那,還沒(méi)有靜下心來(lái)總結這些東西。這次聊一個(gè)高端的話(huà)題---自動(dòng)駕駛,閑聊,總結一下最近的一些學(xué)習工作,Simulink在自動(dòng)駕駛的發(fā)展過(guò)程中是如何存在的?話(huà)不多說(shuō),開(kāi)始說(shuō)吧!自動(dòng)駕駛軟件開(kāi)發(fā)的基本架構逃不開(kāi)我們常說(shuō)的三大法寶,感知---決策(規劃)---執行(控制),這三個(gè)內容,軟件開(kāi)發(fā)的基本思路是不一樣的,聽(tīng)聽(tīng)本的解說(shuō)!
感知:雷達的感知大部分是通過(guò)傅里葉變換等算法對具有多普勒效應的脈沖波信號進(jìn)行處理。目前主流是使用C作為代碼。雷達有很多種。這個(gè)算法僅限于毫米波雷達,激光雷達不懂。
大多數相機對應的是圖像處理。雖然Simulink目前已經(jīng)收錄
了相應的圖像處理算法模型,但是這些算法模型只是對大家寫(xiě)論文有用,容易出結果,容易仿真!然而,大多數實(shí)際算法都是與 OpenCV 和 C++ 一起使用的。
慣性導航和 GPS 中的算法是另一類(lèi)。Simulink 涉及的不多。輪速和車(chē)身姿態(tài)大多來(lái)源于ESC,EPS,這些對應的模塊!
綜上所述,Simulink在感知層面用的不多。Decision-making:L3以上的層級,由于有地圖的參與,我們稱(chēng)之為規劃,L3以下的層級大部分稱(chēng)為決策層,即融合多個(gè)目標源進(jìn)行決策.
融合算法目前大部分在雷達和攝像頭,但有走向獨立和向域控制器靠攏的趨勢,相當一部分算法軟在里面。軟件開(kāi)發(fā)雖然說(shuō)是用Simulink開(kāi)發(fā),但是很多都是用C和C++開(kāi)發(fā)的,尤其是多維目標跟蹤融合!執行(控制):執行分為橫向控制域和縱向控制。橫向控制主要是和EPS交互角度和力矩??v控主要與動(dòng)力總成和底盤(pán)進(jìn)行交互,交互的核心是加速和制動(dòng)的需求。
這些控制邏輯,通俗的說(shuō)就是簡(jiǎn)單的門(mén)控邏輯,大部分是OR,AND,NOT的邏輯,這些都是Simulink的強項,所以相關(guān)邏輯的執行都是用Simulink開(kāi)發(fā),然后自動(dòng)生成代碼,終于軟了!
綜上所述,目前Simulink對自動(dòng)駕駛的支持其實(shí)還不是很廣泛。大多側重于功能的控制,其他相關(guān)圖像,以及雷達算法的應用。他們中的大多數還處于寫(xiě)論文的階段??偨Y如下,呵呵!

目前從事自動(dòng)駕駛算法開(kāi)發(fā),Simulink中有很多對應的庫文件和例子可以參考。下圖所示的庫文件可以直接使用。
還有對應的示例文件,點(diǎn)Help自己學(xué)習就好了,應該問(wèn)題不大。
然后說(shuō)說(shuō)相應的算法生成和集成!至于所謂的可以做融合和感知算法的Simulink,我不能否認,但是實(shí)踐是檢驗真理的唯一標準,現在在實(shí)際項目中還是很少用到!
但是,當你在開(kāi)發(fā)某個(gè)功能時(shí),如何進(jìn)行前期驗證呢?如何建立一個(gè)模擬感知算法,如何建立一個(gè)模擬融合算法,如何在前期驗證你的功能算法,這就需要我們的大殺器出來(lái)了!這兩個(gè)東西是ADAS系統開(kāi)發(fā)的主角,因為真正的功能開(kāi)發(fā)肯定沒(méi)有發(fā)動(dòng)機和變速箱那么復雜,但是ADAS系統的數據量和仿真要求遠大于其他系統,因為這個(gè)東西不模擬,直接測試太貴了!
ADAS系統是一個(gè)非常復雜的東西。在開(kāi)發(fā)初期,如果使用特定階段或特定場(chǎng)景的驗證,使用實(shí)車(chē)成本太高,不切實(shí)際!所以我們前期做場(chǎng)景驗證的時(shí)候,如果后面問(wèn)題重現,就需要我們的大殺器Simulink了!尤其是L3、L4級別的功能,必須要有這個(gè)大殺器才能完成百萬(wàn)公里的驗證。ADAS系統仿真與驗證 在Simulink環(huán)境中建立仿真環(huán)境,進(jìn)行算法驗證與開(kāi)發(fā)。目前Simulink集成了Driving Scenario Designer的庫。這個(gè)庫可以完成場(chǎng)景的規劃和定義,如下圖:
場(chǎng)景建模完成后,Matab可以將其轉換成Mat文件(類(lèi)似自動(dòng)代碼生成的S-function格式),然后導入到Simulink環(huán)境中,添加相應的傳感器模型,進(jìn)行open-循環(huán)和閉環(huán)模擬!如下圖開(kāi)環(huán)仿真來(lái)驗證對應的融合算法!
閉環(huán)仿真增加了車(chē)輛動(dòng)力學(xué)和相應的路徑設計。把它變成一個(gè)閉環(huán)來(lái)驗證相應的功能算法,比如ACC、AEB、TJA等功能。這兩個(gè)就是我們所說(shuō)的SIL,軟件在環(huán)仿真的學(xué)術(shù)定義!
當設計這些場(chǎng)景和算法時(shí),需要對其進(jìn)行測試。測試工具和方法與前面提到的代碼自動(dòng)生成測試方法相同。Simulink 的測試管理器可用于執行動(dòng)態(tài)測試用例和靜態(tài)代碼。覆蓋測試,如下圖,和基本的測試方法是一樣的!
以上都是形式化的算法驗證流程,適用于基礎功能開(kāi)發(fā),但目前大多用于面向應用的項目中。面向應用的項目主要測試工作是采集道路數據,然后進(jìn)行驗證,比較符合實(shí)際。它是可靠的,并且在建立仿真模型時(shí)也省去了很多工作。省錢(qián)又高效!哈哈哈。

中國貼牌的傳統做法。具體操作方法同上!通過(guò)導入場(chǎng)景數據,可以驗證具體的傳感器算法,通過(guò)導入目標列表數據,可以驗證具體的功能算法,如下圖!
設計、仿真、測試,這個(gè)閉環(huán)形成了ADSA算法的開(kāi)發(fā)和驗證,展示了Simulink軟件的NB:
ADAS數據處理
在實(shí)際測試驗證的過(guò)程中,會(huì )采集到大量的數據,比如攝像頭圖像數據、雷達數據、車(chē)道檢測數據、激光雷達數據、慣性測量單元數據等,這些結果如何處理?如何標記真值?
Simulink中的ADST工具箱收錄
了相應的函數,然后就可以說(shuō)說(shuō)相應的圖像數據,分析后的目標列表,統一用一個(gè)圖表來(lái)展示分析,進(jìn)行我們所謂的真值標定,然后可視化,就是比我們的好 肉眼看,比NB還要多,請參考下圖!
在做可視化時(shí),Simulink可以在同一屏幕上轉換車(chē)輛坐標系和圖像坐標系,從而繪制出不同的點(diǎn)云數據,便于傳感器信號的分析和驗證。
小才小學(xué),這些總結僅供朋友參考,啟發(fā)大家,大家一起學(xué)習吧!ADSA系統的算法研究猶如星辰大海。只要抓住一顆閃亮的星星,你就可以在智慧的潮汐中屹立于橋上,成為潮汐中的潮人。一起學(xué)習,一起進(jìn)步,一起征服燦爛的星海!
學(xué)無(wú)止境,深入淺出,細細研讀,必成大器!分享給有志之士!
解決方案:使用樹(shù)莓派3B+開(kāi)發(fā)智能音樂(lè )播放器(續---加入自動(dòng)喚醒功能)
下次預定。. .
上次講到給智能音樂(lè )播放器增加語(yǔ)音喚醒功能。我google了一下相關(guān)資料。目前有百度AI、科大訊飛、谷歌、snowboy。最簡(jiǎn)單的大概就是snowboy了。去github下載源碼,然后去官網(wǎng)查看相關(guān)說(shuō)明。注意下載的源碼中有四個(gè)demo。四個(gè)源碼最好都看一遍,可以解決大部分應用問(wèn)題。
我這里用demo.py這個(gè)框架就夠了。其次最重要的是登錄snowboy官網(wǎng)注冊用戶(hù)(需要用谷歌賬號登錄),然后錄制自己的個(gè)性化喚醒詞(例如:你好小愛(ài)),下載您記錄的喚醒詞文件 pmdl 作為程序運行的參數 (python3 demo.py XXX.pmdl)。
好了,我們直接上代碼:
# -*- coding: utf-8 -*-
from aip import AipSpeech #百度語(yǔ)音識別庫
import pyaudio #麥克風(fēng)聲音采集庫
import wave
import requests,json #音樂(lè )搜索
import pygame #mp3播放
import snowboydecoder
import sys
import signal
import os
import time
import sys
interrupted = False
""" 我的 APPID AK SK """
APP_ID = 'xxxxxxxxx'
API_KEY = 'xxxxxxxxxxxxxx'
SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
#定義采集聲音文件參數
CHUNK = 1024
FORMAT = pyaudio.paInt16 #16位采集
CHANNELS = 1 #單聲道
RATE = 16000 #采樣率
RECORD_SECONDS = 9 #采樣時(shí)長(cháng) 定義為9秒的錄音
WAVE_OUTPUT_FILENAME = "./myvoice.pcm" #采集聲音文件存儲路徑
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
#獲取下載地址
def get_down_url(songid):
req=requests.get("http://tingapi.ting.baidu.com/ ... ot%3B %songid)
req.encoding='utf-8'
#print(json.loads(req.text))
json1=json.loads(req.text.replace("jQuery17206073972467458864_1511011710426(","").replace(");",""))
print("下載地址:",json1["bitrate"]['show_link'])
return json1["bitrate"]['show_link']
#下載保存文件
def music_down(url,music_name,artistname):
f=open(music_name+'-'+artistname+'.mp3','wb')
req_mp3=requests.get(url)
f.write(req_mp3.content)
f.close()
#調用百度AI,將文字轉化為聲音輸出,用于提示音
def word_to_voice(text):
result = client.synthesis(text, 'zh', 1, {
'vol': 5, 'spd': 3, 'per': 3})
if not isinstance(result, dict):
with open('./audio.mp3', 'wb') as f:
f.write(result)
f.close()
pygame.mixer.music.load('./audio.mp3')#text文字轉化的語(yǔ)音文件
<p>

pygame.mixer.music.play(loops=0)
while pygame.mixer.music.get_busy() == True:
print('waiting')
def word_to_voice1(text):
result = client.synthesis(text, 'zh', 1, {
'vol': 5, 'spd': 3, 'per': 3})
if not isinstance(result, dict):
with open('./audio1.mp3', 'wb') as f:
f.write(result)
f.close()
pygame.mixer.music.load('./audio1.mp3')
pygame.mixer.music.play(loops=0)
while pygame.mixer.music.get_busy() == True:
print('waiting')
#獲得麥克風(fēng)輸入的聲音文件,保存在myvoice.pcm
def get_mic_voice_file(p):
word_to_voice('請說(shuō)出歌名')
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
#p.terminate()#這里先不使用p.terminate(),否則 p = pyaudio.PyAudio()將失效,還得重新初始化。
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
print('recording finished')
#百度語(yǔ)音識別出歌名文字并返回
def baidu_get_song_name(client):
results = client.asr(get_file_content(WAVE_OUTPUT_FILENAME), 'pcm', 16000, { 'dev_pid': 1536, })
# print(results['result'])
song_name=results['result'][0]
print(song_name)
return song_name
#百度音樂(lè )下載歌曲
def download_music_file(song_name):
req_url = "http://sug.music.baidu.com/inf ... ot%3B % song_name
req_so = requests.get(req_url)
data = json.loads(req_so.text.replace("window.baidu.sug(", "").replace(");", ""))
for i in data["data"]["song"]:
print("\tsongid:" + str(i["songid"]), "音樂(lè )名字:" + i["songname"], "\t歌手:" + i["artistname"])
input_songid = data["data"]["song"][0]["songid"] # input("請輸入你要下載的songid:")
for i in data["data"]["song"]:
if input_songid == str(i["songid"]):

url = get_down_url(i["songid"])
music_down(url, i["songname"], i["artistname"])
print("下載完成")
music_name = i['songname'] # 獲取MP3文件中的歌曲名
artistname = i["artistname"] # 獲取MP3文件中的歌手名
filename = './' + music_name + '-' + artistname + '.mp3'
print(filename)
word_to_voice1('請欣賞')
return filename
def play_mp3(music_file):
pygame.mixer.music.load(music_file)
'''while True:
# 檢查音樂(lè )流播放,有返回True,沒(méi)有返回False
# 如果一直有音樂(lè )流則選擇播放
if pygame.mixer.music.get_busy() == False:
pygame.mixer.music.play()'''
pygame.mixer.music.play(loops=0) #該函數運行后立即返回,音樂(lè )一直在后臺運行
def one_time_process(p,detector):#一次麥克采樣+語(yǔ)音識別+音樂(lè )下載+自動(dòng)播放
detector.terminate() #該條代碼很重要,因為detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)已經(jīng)在內部使用pyaudio庫獲取了MIC的權限,如果我們再次魯莽的使用pyaudio,將造成程序出錯
get_mic_voice_file(p)
play_mp3(download_music_file(baidu_get_song_name(client)))
#snowboy 相關(guān)代碼
def signal_handler(signal, frame):#改變全局變量interrupted值
global interrupted
interrupted = True
def interrupt_callback():#鍵盤(pán)輸入ctrl+c終端程序運行
global interrupted
return interrupted
if __name__=='__main__':
#麥克風(fēng)采集初始化、百度語(yǔ)音識別初始化、mp3文件播放初始化
p = pyaudio.PyAudio()
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
pygame.mixer.init()
model = sys.argv[1]
#
# capture SIGINT signal, e.g., Ctrl+C
signal.signal(signal.SIGINT, signal_handler)
detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)
print('Listening... Press Ctrl+C to exit')
# main loop
while 1:
detector.start(detected_callback=lambda: one_time_process(p,detector),interrupt_check=interrupt_callback,sleep_time=0.03)#detector作為回調函數的一個(gè)參數,目的是將MIC的權限進(jìn)行釋放
detector.terminate()
</p>
解決方案:分布式調用鏈沒(méi)那么難搞,好用的開(kāi)源工具實(shí)踐在這
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 65 次瀏覽 ? 2022-11-29 12:37
在微服務(wù)架構中,一個(gè)請求往往會(huì )涉及到多個(gè)模塊、多個(gè)中間件,需要多臺機器相互協(xié)作才能完成。在這一系列的調用請求中,有的是串行的,有的是并行的,那么如何確定這個(gè)請求后面調用了哪些應用程序、哪些模塊、哪些節點(diǎn)以及調用順序呢?如何定位各個(gè)模塊的性能問(wèn)題?本文將為您揭曉答案。
本文將從以下幾個(gè)方面進(jìn)行闡述:
分布式溯源系統原理與作用
如何衡量一個(gè)接口的性能,一般我們至少會(huì )關(guān)注以下三個(gè)指標:
單體架構
早期,公司剛起步的時(shí)候,可能會(huì )采用如下單體架構。對于單體結構,我們應該如何計算以上三個(gè)指標呢?
最容易想到的顯然是使用AOP
使用AOP打印調用具體業(yè)務(wù)邏輯前后的時(shí)間來(lái)計算整體調用時(shí)間,使用AOP捕獲異常,知道是哪里的調用導致了異常。
微服務(wù)架構
在單體架構中,由于所有的服務(wù)和組件都在一臺機器上,所以這些監控指標相對容易實(shí)現。但是隨著(zhù)業(yè)務(wù)的快速發(fā)展,單體架構必然會(huì )向微服務(wù)架構發(fā)展,具體如下:
如圖:一個(gè)稍微復雜的微服務(wù)架構
如果用戶(hù)反映某個(gè)頁(yè)面很慢,我們知道這個(gè)頁(yè)面的請求調用鏈是A -----> C -----> B -----> D,如何定位哪個(gè)可能是模塊在這個(gè)時(shí)候出現了問(wèn)題。每個(gè)服務(wù)Service A、B、C、D都有幾臺機器。您如何知道請求在哪臺特定機器上調用服務(wù)?
可以明顯看出,由于無(wú)法準確定位每個(gè)請求的準確路徑,微服務(wù)架構下存在以下痛點(diǎn):
分布式調用鏈就是為解決上述問(wèn)題而誕生的,其主要作用如下:
通過(guò)分布式跟蹤系統,可以很好地定位后續請求的各個(gè)具體請求鏈接,從而輕松實(shí)現請求鏈接跟蹤,輕松實(shí)現各模塊的性能瓶頸定位和分析。
分布式調用鏈標準——OpenTracing
了解了分布式調用鏈的作用,下面我們來(lái)看看分布式調用鏈的實(shí)現和原理是如何實(shí)現的。首先,為了解決不同分布式跟蹤系統API不兼容的問(wèn)題,OpenTracing規范誕生了。OpenTracing 是一個(gè)輕量級的規范化層,位于應用程序/庫和跟蹤或日志分析器之間。
通過(guò)這種方式,OpenTracing 使開(kāi)發(fā)人員能夠通過(guò)提供獨立于平臺和供應商的 API 輕松添加跟蹤系統的實(shí)現。
說(shuō)到這里,你有沒(méi)有想過(guò)在 Java 中有類(lèi)似的實(shí)現?還記得JDBC嗎,通過(guò)提供一套標準的接口供各個(gè)廠(chǎng)商實(shí)現,程序員可以針對接口進(jìn)行編程,而不用關(guān)心具體的實(shí)現。這里的接口其實(shí)就是一個(gè)標準,所以制定一套標準非常重要,可以實(shí)現組件的可插拔性。
接下來(lái)我們看一下OpenTracing的數據模型。主要有以下三種類(lèi)型:
理解這三個(gè)概念非常重要。為了讓大家更好的理解這三個(gè)概念,我特地畫(huà)了一張圖:
如圖所示,一個(gè)完整的訂單請求就是一個(gè)Trace。顯然,對于這個(gè)請求,必須有一個(gè)全局標識來(lái)標識這個(gè)請求。每次調用調用一個(gè)Span,每次調用都必須攜帶全局TraceId,這樣全局TraceId才能與每次調用相關(guān)聯(lián)。這個(gè)TraceId是通過(guò)SpanContext傳遞過(guò)來(lái)的。既然要傳輸,就必須按照協(xié)議來(lái)調用。如圖所示,如果把transport protocol比作汽車(chē),SpanContext比作貨物,Span比作公路,應該更容易理解。
了解了這三個(gè)概念之后,我再來(lái)看看分布式追蹤系統是如何在統一圖中采集
微服務(wù)調用鏈的:
我們可以看到底層有一個(gè)Collector一直在默默的采集
數據,那么每次調用Collector都會(huì )采集
什么信息:
有了這些信息,采集
器為每次調用采集
的信息如下:
根據這些圖表信息,顯然可以畫(huà)出調用鏈的可視化視圖如下:
這樣就實(shí)現了一個(gè)完整的分布式跟蹤系統。
上面的實(shí)現看起來(lái)很簡(jiǎn)單,但是有幾個(gè)問(wèn)題需要我們仔細思考:
下面我就來(lái)看看SkyWalking是如何解決以上四個(gè)問(wèn)題的。
SkyWalking的原理和架構設計
如何自動(dòng)采集
跨度數據
SkyWalking采用插件+javaagent的形式實(shí)現span數據的自動(dòng)采集,可以對代碼無(wú)侵入。插件意味著(zhù)可插拔和良好的擴展性(稍后我們將介紹如何定義自己的插件。)。
如何跨進(jìn)程傳遞上下文
我們知道數據一般分為header和body,就像http有header和body一樣,RocketMQ也有MessageHeader,Message Body,body一般收錄
業(yè)務(wù)數據,所以body不宜傳context,應該傳入表頭,如圖:
dubbo中的attachment相當于header,所以我們把context放在attachment中,這樣就解決了context傳遞的問(wèn)題。
提示:這里的上下文傳遞過(guò)程都是dubbo插件處理的,業(yè)務(wù)是不知道的。下面將分析這個(gè)插件是如何實(shí)現的。
traceId如何保證全局唯一性?
為了確保全局唯一性,我們可以使用分布式或本地生成的 ID。如果我們使用分布式,我們需要一個(gè)數字生成器。每個(gè)請求必須首先請求數字生成器。會(huì )有網(wǎng)絡(luò )調用開(kāi)銷(xiāo),所以SkyWalking最終采用了本地生成ID的方式,并且采用了著(zhù)名的snowflow算法,性能較高。
圖解:雪花算法生成的id
但是,雪花算法有一個(gè)眾所周知的問(wèn)題:時(shí)間回調,可能會(huì )導致重復生成id。那么SkyWalking是如何解決時(shí)間回調問(wèn)題的呢?
每產(chǎn)生一個(gè)id,就會(huì )記錄這個(gè)id產(chǎn)生的時(shí)間(lastTimestamp)。如果發(fā)現當前時(shí)間小于上次生成id的時(shí)間(lastTimestamp),說(shuō)明發(fā)生了時(shí)間回調,此時(shí)會(huì )生成一個(gè)隨機數作為traceId。
這里可能有些同學(xué)想認真點(diǎn)。他們可能認為生成的隨機數也將與生成的全局 id 相同。最好再加一層驗證。
這里想談?wù)勏到y設計中方案的選擇。首先,如果對生成的隨機數進(jìn)行唯一性校驗,無(wú)疑會(huì )多出一層調用,會(huì )有一定的性能損失,但實(shí)際上時(shí)間回調的概率很小。(發(fā)生后,由于機器時(shí)間的紊亂,業(yè)務(wù)會(huì )受到很大的影響,所以機器時(shí)間的調整一定要謹慎),而且生成的隨機數重合的概率也很小。綜合考慮,確實(shí)沒(méi)有必要再增加一個(gè)Layer全局唯一性校驗。對于技術(shù)方案的選擇,一定要避免過(guò)度設計,太多就是太多。
這么多請求,全部采集
會(huì )不會(huì )影響性能?
如果每一個(gè)請求都采集
起來(lái),毫無(wú)疑問(wèn)數據量會(huì )非常大,但是反過(guò)來(lái)想想,是不是真的有必要把每一個(gè)請求都采集
起來(lái)。其實(shí)大可不必。我們可以設置采樣頻率,只采樣部分數據,SkyWalking默認設置為3秒采樣3次,其余請求不采樣,如圖:
這樣的采樣頻率其實(shí)已經(jīng)足夠我們分析元器件的性能了。以每 3 秒 3 個(gè)樣本的頻率采樣數據有什么問(wèn)題?理想情況下,每次服務(wù)調用都是在同一個(gè)時(shí)間點(diǎn)(如下圖),所以每次都在同一個(gè)時(shí)間點(diǎn)采樣真的沒(méi)問(wèn)題。
但是在生產(chǎn)中,基本上不可能每個(gè)服務(wù)調用都在同一個(gè)時(shí)間點(diǎn)被調用,因為期間存在網(wǎng)絡(luò )調用延遲,實(shí)際調用情況很可能如下圖所示:
在這種情況下,有些調用會(huì )在服務(wù)A上被采樣,而不會(huì )在服務(wù)B和C上被采樣,無(wú)法分析調用鏈的性能。那么SkyWalking是如何解決的呢?
是這樣解決的:如果上游帶了Context(說(shuō)明上游已經(jīng)采樣),下游會(huì )強制采集數據。這使鏈接保持完整。
SkyWalking的基礎設施
SkyWalking 的基礎是以下架構??梢哉f(shuō)幾乎所有的分布式調用都是由以下幾個(gè)部分組成的:
首先當然是節點(diǎn)數據的定期采樣。數據采樣后定期上報,存儲在ES、MySQL等持久層。有了數據,自然要根據數據做可視化分析。
SkyWalking 的表現如何?
接下來(lái)想必大家比較關(guān)心的是SkyWalking的性能表現,那么我們就來(lái)看看官方的評測數據吧:
圖中藍色代表未使用SkyWalking時(shí)的表現,橙色代表使用SkyWalking時(shí)的表現。以上是TPS為5000時(shí)測得的數據,可以看出無(wú)論是CPU、內存,還是響應時(shí)間,使用SkyWalking帶帶來(lái)的性能損失幾乎可以忽略不計。
接下來(lái)看一下SkyWalking與業(yè)界另一知名分布式追蹤工具Zipkin、Pinpoint的對比(采樣率為1秒,線(xiàn)程數為500,總請求數時(shí)進(jìn)行對比)是 5000)??梢?jiàn)Zipkin(117ms)和PinPoint(201ms)在臨界響應時(shí)間上遠不如SkyWalking(22ms)!
從性能損失來(lái)看,SkyWalking 勝出!
讓我們看另一個(gè)指標:代碼的侵入性如何?ZipKin需要埋在應用中,代碼侵入性大。SkyWalking使用javaagent+插件修改字節碼。沒(méi)有侵入代碼。除了代碼的性能和侵入性,SkyWaking 表現出色,還有以下優(yōu)勢:
我司在分布式調用鏈上的實(shí)踐
SkyWalking在我司的應用架構
從上面可以看出SkyWalking有很多優(yōu)點(diǎn),那么它的組件我們都用上了嗎?事實(shí)上,并非如此。我們來(lái)看看它在我們公司的應用架構:
從圖中可以看出,我們只使用了SkyWalking代理進(jìn)行采樣,而放棄了“數據上報與分析”、“數據存儲”、“數據可視化”等其他三個(gè)組件。
那為什么不直接采用SkyWalking完整的解決方案呢,因為我們的Marvin監控生態(tài)在接入SkyWalking之前就已經(jīng)比較完整了。如果換成SkyWalking,就完全沒(méi)有必要了。兩者都能滿(mǎn)足我們的需求。其次,系統更換成本高。第三,如果重新連接到用戶(hù),學(xué)習成本非常高。
這也給了我們一個(gè)啟示:任何產(chǎn)品抓住機會(huì )都是非常重要的,后續產(chǎn)品的更換成本會(huì )非常高。搶占先機,就是搶占用戶(hù)心智。國外還是做不了Whatsapp一樣的,因為機會(huì )沒(méi)了。
另一方面,對于架構,沒(méi)有最好的,只有最合適的。架構設計的本質(zhì)是結合當前業(yè)務(wù)場(chǎng)景進(jìn)行折衷的平衡。
我們公司對SkyWalking做了哪些改造和實(shí)踐?
我公司主要做了以下改造和實(shí)踐:
1)預發(fā)布環(huán)境因調試需要強制采樣
從上面的分析可以看出,Collector是在后臺定時(shí)采樣的。這不好嗎?為什么我們需要實(shí)施強制采樣?或者排查定位問(wèn)題,有時(shí)線(xiàn)上出現問(wèn)題,我們希望在預發(fā)布上復現,希望看到這個(gè)請求完整的調用鏈,所以需要在預發(fā)布上進(jìn)行強制采樣。所以我們修改了Skywalking的dubbo插件來(lái)實(shí)現強制采樣。
我們在request cookie上放一個(gè)類(lèi)似force_flag = true的key-value對,表示我們要強制采樣。網(wǎng)關(guān)收到這個(gè)cookie后,會(huì )在dubbo附件中帶上鍵值對force_flag = true,然后skywalking的dubbo插件就可以根據這個(gè)來(lái)判斷是否是強制采樣。如果有這個(gè)值,就是強制采樣。如果沒(méi)有這個(gè)值,則進(jìn)行正常定時(shí)采樣。
2)實(shí)現更細粒度的采樣?
Ha 稱(chēng)為更細粒度的采樣。我們先來(lái)看一下skywalking默認的采樣方式,即uniform sampling。
我們知道這個(gè)方法默認是在3秒前采樣3次,其他的請求都被丟棄。在這種情況下,有一個(gè)問(wèn)題。假設3秒內本機有多次dubbo、mysql、redis調用,但是如果前3次都是dubbo調用的話(huà),其他像mysql、redis等調用無(wú)法采樣,所以我們修改了skywalking實(shí)現分組抽樣,如下:
也就是說(shuō)3秒內采樣redis、dubbo、mysql等3次就可以避免這個(gè)問(wèn)題。
3)如何在日志中嵌入traceId?
在輸出日志中嵌入traceId,方便我們排查問(wèn)題,所以打印traceId是非常有必要的,如何在日志中嵌入traceId呢?我們使用log4j,這里我們需要了解一下log4j的插件機制,log4j允許我們自定義插件輸出日志的格式,首先我們需要定義日志的格式,在自定義日志格式,作為賬號字符,如下:
然后我們實(shí)現一個(gè)log4j插件,如下:
首先,log4j插件需要定義一個(gè)類(lèi),該類(lèi)繼承LogEventPatternConverter類(lèi),并用標準Plugin聲明自己為Plugin,通過(guò)@ConverterKeys注解指定需要替換的占位符,然后在format方法中替換失去。這樣日志中就會(huì )出現我們想要的TraceId,如下:
4)我司開(kāi)發(fā)了哪些skywalking插件?
SkyWalking 實(shí)現了很多插件,但是沒(méi)有提供memcached 和druid 的插件,所以我們按照其規范開(kāi)發(fā)了這兩個(gè)插件:
插件是如何實(shí)現的,可以看到主要由三部分組成:
可能大家看了還是不太明白,下面就用dubbo plugin來(lái)簡(jiǎn)單說(shuō)明一下。我們知道,在dubbo服務(wù)中,每次請求都會(huì )收到來(lái)自netty的消息,提交給業(yè)務(wù)線(xiàn)程池處理,真正調用到業(yè)務(wù)方法時(shí)結束。中間經(jīng)過(guò)十幾個(gè)Filter處理。
而MonitorFilter可以攔截所有客戶(hù)端請求或者服務(wù)端處理請求,所以我們可以增強MonitorFilter,在調用invoke方法之前,將全局traceId注入到它的Invocation attachment中,從而保證請求到達真正業(yè)務(wù)之前全局traceId已經(jīng)存在邏輯。
那么顯然我們需要在插件中指定我們要增強的類(lèi)(MonitorFilter),并增強它的方法(invoke)。應該對此方法進(jìn)行哪些改進(jìn)?這就是攔截器(Inteceptor)要做的事情。我們來(lái)看看Dubbo插件(DubboInstrumentation)中的插樁。
我們來(lái)看看代碼中描述的攔截器(Inteceptor)是干什么的。關(guān)鍵步驟如下:
首先,beforeMethod表示這里的方法會(huì )在MonitorFilter的invoke方法執行之前被調用,而afterMethod與之對應,表示invoke方法執行之后才會(huì )執行增強邏輯。
其次,從第2點(diǎn)和第3點(diǎn)我們可以看出,無(wú)論是消費者還是提供者,其全局ID都做了相應的處理,以保證到達真正的業(yè)務(wù)層時(shí),全局traceid是可用的。在定義了 Instrumentation 和 Interceptor 之后,最后一步是在 skywalking.def 中指定定義的類(lèi)。
// skywalking-plugin.def 文件
dubbo=org.apache.skywalking.apm.plugin.asf.dubbo.DubboInstrumentation
這樣封裝的插件會(huì )增強MonitorFilter的invoke方法,在invoke方法執行前,將全局的traceId等操作注入到attachment中,對代碼都是靜默無(wú)侵入的。
總結
本文由淺入深地介紹了分布式跟蹤系統的原理。相信大家對它的作用和工作機制有了更深入的了解。尤其需要注意的是,在引入某項技術(shù)時(shí),一定要結合現有的技術(shù)架構,做出最佳方案。一個(gè)合理的選擇,就像SkyWalking有四個(gè)模塊,而我們公司只使用它的代理采樣功能。
沒(méi)有最好的技術(shù),只有最合適的技術(shù)。通過(guò)這篇文章,相信大家應該對SkyWalking的實(shí)現機制有了清晰的認識。本文只介紹SkyWalking的插件實(shí)現,但畢竟是工業(yè)級軟件。要了解它的深奧,還需要多閱讀源碼。
作者丨碼海源丨公眾號:碼海(ID:seaofcode)dbaplus社區歡迎技術(shù)人員投稿,投稿郵箱:
操作方法:流量工具流量寶使用方法
流量工具是用來(lái)輔助網(wǎng)站增加流量的。有很多交通工具。在之前的文章《輔助網(wǎng)站提升流量有哪些工具》中也提到了幾種工具,那么今天我們就來(lái)說(shuō)說(shuō)其中的一種,說(shuō)說(shuō)使用方法以及使用過(guò)程中需要注意的事項使用它,這個(gè)工具也是很多站長(cháng)經(jīng)常使用的,它就是“流量寶”。
FlowBao在一些免費工具中算是比較強大的,包括提升流量、增加人氣、廣告優(yōu)化、提升電商人氣、關(guān)鍵詞排名、使用Alexa等功能。功能很多,但是在我們seo行業(yè)用到的就那么幾個(gè),所以就說(shuō)說(shuō)seo行業(yè)相關(guān)功能的使用,其他的就不多說(shuō)了。
1.刷流量
刷流量可以提高網(wǎng)站的pv。在流量刷卡界面,有基礎設置、來(lái)源URL設置、點(diǎn)擊設置、流量時(shí)間控制、ua設置、流量區域設置。
1.基本設置
把我們要刷的網(wǎng)站復制粘貼到“網(wǎng)頁(yè)地址”寫(xiě)入框里,ip/pv比就是你要刷的ip和pv的比值,比如1:3,那么一個(gè)ip被瀏覽了3次,這里我們設置1:3就好了,PV停留時(shí)間可以根據自己的情況選擇,我一般是隨機選擇3-30秒。
2. 源地址設置
如果我們要訪(fǎng)問(wèn)百度用戶(hù),可以在“自定義來(lái)源”中選擇“百度搜索詞”。比如我們要增加長(cháng)沙seo這個(gè)詞的流量,那么我們就在上面寫(xiě)上“長(cháng)沙seo”就可以了。注意后面的%,是根據我們自己的字數分配的。比如你想讓那個(gè)詞的流量高,就可以多給分。如果只有一個(gè)字,建議不要超過(guò)50%。
3.點(diǎn)擊設置
如果您不在此處設置點(diǎn)擊 URL,該工具將默認刷新主頁(yè)。如果添加點(diǎn)擊網(wǎng)址,它會(huì )點(diǎn)擊我們填寫(xiě)的網(wǎng)址。點(diǎn)擊的百分比要適當添加,同樣不要超過(guò)50%。如果要點(diǎn)擊的頁(yè)面排名不錯,您可以添加更多。
4.流動(dòng)時(shí)間控制
通過(guò)流量時(shí)間控制,我們可以控制點(diǎn)擊的流量。網(wǎng)民可以在上網(wǎng)的時(shí)候多瀏覽,其他時(shí)間少用。這樣比較自然,效果也不錯。
5.ua設置
一般這里不用設置
6.交通區域設置
首先我們要去掉國外和港澳臺地區,根據自己的網(wǎng)站選擇國內地區。比如我的關(guān)鍵詞是“長(cháng)沙seo”,那么我要選擇的地區就是湖南,其他地區就不用選了。,如果你滑動(dòng)的詞不是區域詞,你也可以選擇更多的區域。
2. 關(guān)鍵詞 排名
基本設置:這里的基本設置同上,復制我們要掃描的頁(yè)面排名的網(wǎng)址關(guān)鍵詞,可以?huà)呙鑼?zhuān)欄,可以?huà)呙栉恼马?yè),也可以?huà)呙枋醉?yè)頁(yè)面,然后在“搜索引擎”中選擇,比如我們使用360搜索引擎,那就選擇360搜索引擎,百度等搜索引擎也一樣。
注意:我們刷的頁(yè)面關(guān)鍵詞一定要收錄
進(jìn)去,否則沒(méi)有效果,否則會(huì )影響我們的網(wǎng)站。
3.刷Alexa
刷Alexa并沒(méi)有那么復雜,填寫(xiě)我們的主域名即可。
4. 最后一步
流量寶首頁(yè)左下角和右下角都有“優(yōu)化速度選擇”。如果網(wǎng)站SEO基礎好,選擇高速模式。一般我們選擇普通模式,差一點(diǎn)就選擇低速模式。
也就是說(shuō),一個(gè)普通家庭養育一個(gè)孩子至少要花費70萬(wàn)元。
對于大多數普通工薪家庭來(lái)說(shuō),確實(shí)是一筆不小的數目。
小夏SEO有話(huà)要說(shuō):其實(shí)不管是什么工具,我們都不能太依賴(lài)它。該工具可以在短時(shí)間內提高網(wǎng)站的排名,但網(wǎng)站仍然需要優(yōu)化。沒(méi)有優(yōu)化的網(wǎng)站如果只用一些手段,成本會(huì )很大,這樣就失去了seo的意義。做seo的網(wǎng)站都希望低成本帶來(lái)轉化。
最后提醒,新站一定不要用這些工具,新站要好好優(yōu)化! 查看全部
解決方案:分布式調用鏈沒(méi)那么難搞,好用的開(kāi)源工具實(shí)踐在這
在微服務(wù)架構中,一個(gè)請求往往會(huì )涉及到多個(gè)模塊、多個(gè)中間件,需要多臺機器相互協(xié)作才能完成。在這一系列的調用請求中,有的是串行的,有的是并行的,那么如何確定這個(gè)請求后面調用了哪些應用程序、哪些模塊、哪些節點(diǎn)以及調用順序呢?如何定位各個(gè)模塊的性能問(wèn)題?本文將為您揭曉答案。
本文將從以下幾個(gè)方面進(jìn)行闡述:
分布式溯源系統原理與作用
如何衡量一個(gè)接口的性能,一般我們至少會(huì )關(guān)注以下三個(gè)指標:
單體架構
早期,公司剛起步的時(shí)候,可能會(huì )采用如下單體架構。對于單體結構,我們應該如何計算以上三個(gè)指標呢?
最容易想到的顯然是使用AOP
使用AOP打印調用具體業(yè)務(wù)邏輯前后的時(shí)間來(lái)計算整體調用時(shí)間,使用AOP捕獲異常,知道是哪里的調用導致了異常。
微服務(wù)架構
在單體架構中,由于所有的服務(wù)和組件都在一臺機器上,所以這些監控指標相對容易實(shí)現。但是隨著(zhù)業(yè)務(wù)的快速發(fā)展,單體架構必然會(huì )向微服務(wù)架構發(fā)展,具體如下:
如圖:一個(gè)稍微復雜的微服務(wù)架構
如果用戶(hù)反映某個(gè)頁(yè)面很慢,我們知道這個(gè)頁(yè)面的請求調用鏈是A -----> C -----> B -----> D,如何定位哪個(gè)可能是模塊在這個(gè)時(shí)候出現了問(wèn)題。每個(gè)服務(wù)Service A、B、C、D都有幾臺機器。您如何知道請求在哪臺特定機器上調用服務(wù)?
可以明顯看出,由于無(wú)法準確定位每個(gè)請求的準確路徑,微服務(wù)架構下存在以下痛點(diǎn):
分布式調用鏈就是為解決上述問(wèn)題而誕生的,其主要作用如下:
通過(guò)分布式跟蹤系統,可以很好地定位后續請求的各個(gè)具體請求鏈接,從而輕松實(shí)現請求鏈接跟蹤,輕松實(shí)現各模塊的性能瓶頸定位和分析。
分布式調用鏈標準——OpenTracing
了解了分布式調用鏈的作用,下面我們來(lái)看看分布式調用鏈的實(shí)現和原理是如何實(shí)現的。首先,為了解決不同分布式跟蹤系統API不兼容的問(wèn)題,OpenTracing規范誕生了。OpenTracing 是一個(gè)輕量級的規范化層,位于應用程序/庫和跟蹤或日志分析器之間。
通過(guò)這種方式,OpenTracing 使開(kāi)發(fā)人員能夠通過(guò)提供獨立于平臺和供應商的 API 輕松添加跟蹤系統的實(shí)現。
說(shuō)到這里,你有沒(méi)有想過(guò)在 Java 中有類(lèi)似的實(shí)現?還記得JDBC嗎,通過(guò)提供一套標準的接口供各個(gè)廠(chǎng)商實(shí)現,程序員可以針對接口進(jìn)行編程,而不用關(guān)心具體的實(shí)現。這里的接口其實(shí)就是一個(gè)標準,所以制定一套標準非常重要,可以實(shí)現組件的可插拔性。
接下來(lái)我們看一下OpenTracing的數據模型。主要有以下三種類(lèi)型:
理解這三個(gè)概念非常重要。為了讓大家更好的理解這三個(gè)概念,我特地畫(huà)了一張圖:
如圖所示,一個(gè)完整的訂單請求就是一個(gè)Trace。顯然,對于這個(gè)請求,必須有一個(gè)全局標識來(lái)標識這個(gè)請求。每次調用調用一個(gè)Span,每次調用都必須攜帶全局TraceId,這樣全局TraceId才能與每次調用相關(guān)聯(lián)。這個(gè)TraceId是通過(guò)SpanContext傳遞過(guò)來(lái)的。既然要傳輸,就必須按照協(xié)議來(lái)調用。如圖所示,如果把transport protocol比作汽車(chē),SpanContext比作貨物,Span比作公路,應該更容易理解。
了解了這三個(gè)概念之后,我再來(lái)看看分布式追蹤系統是如何在統一圖中采集
微服務(wù)調用鏈的:
我們可以看到底層有一個(gè)Collector一直在默默的采集
數據,那么每次調用Collector都會(huì )采集
什么信息:
有了這些信息,采集
器為每次調用采集
的信息如下:
根據這些圖表信息,顯然可以畫(huà)出調用鏈的可視化視圖如下:
這樣就實(shí)現了一個(gè)完整的分布式跟蹤系統。
上面的實(shí)現看起來(lái)很簡(jiǎn)單,但是有幾個(gè)問(wèn)題需要我們仔細思考:
下面我就來(lái)看看SkyWalking是如何解決以上四個(gè)問(wèn)題的。
SkyWalking的原理和架構設計
如何自動(dòng)采集
跨度數據

SkyWalking采用插件+javaagent的形式實(shí)現span數據的自動(dòng)采集,可以對代碼無(wú)侵入。插件意味著(zhù)可插拔和良好的擴展性(稍后我們將介紹如何定義自己的插件。)。
如何跨進(jìn)程傳遞上下文
我們知道數據一般分為header和body,就像http有header和body一樣,RocketMQ也有MessageHeader,Message Body,body一般收錄
業(yè)務(wù)數據,所以body不宜傳context,應該傳入表頭,如圖:
dubbo中的attachment相當于header,所以我們把context放在attachment中,這樣就解決了context傳遞的問(wèn)題。
提示:這里的上下文傳遞過(guò)程都是dubbo插件處理的,業(yè)務(wù)是不知道的。下面將分析這個(gè)插件是如何實(shí)現的。
traceId如何保證全局唯一性?
為了確保全局唯一性,我們可以使用分布式或本地生成的 ID。如果我們使用分布式,我們需要一個(gè)數字生成器。每個(gè)請求必須首先請求數字生成器。會(huì )有網(wǎng)絡(luò )調用開(kāi)銷(xiāo),所以SkyWalking最終采用了本地生成ID的方式,并且采用了著(zhù)名的snowflow算法,性能較高。
圖解:雪花算法生成的id
但是,雪花算法有一個(gè)眾所周知的問(wèn)題:時(shí)間回調,可能會(huì )導致重復生成id。那么SkyWalking是如何解決時(shí)間回調問(wèn)題的呢?
每產(chǎn)生一個(gè)id,就會(huì )記錄這個(gè)id產(chǎn)生的時(shí)間(lastTimestamp)。如果發(fā)現當前時(shí)間小于上次生成id的時(shí)間(lastTimestamp),說(shuō)明發(fā)生了時(shí)間回調,此時(shí)會(huì )生成一個(gè)隨機數作為traceId。
這里可能有些同學(xué)想認真點(diǎn)。他們可能認為生成的隨機數也將與生成的全局 id 相同。最好再加一層驗證。
這里想談?wù)勏到y設計中方案的選擇。首先,如果對生成的隨機數進(jìn)行唯一性校驗,無(wú)疑會(huì )多出一層調用,會(huì )有一定的性能損失,但實(shí)際上時(shí)間回調的概率很小。(發(fā)生后,由于機器時(shí)間的紊亂,業(yè)務(wù)會(huì )受到很大的影響,所以機器時(shí)間的調整一定要謹慎),而且生成的隨機數重合的概率也很小。綜合考慮,確實(shí)沒(méi)有必要再增加一個(gè)Layer全局唯一性校驗。對于技術(shù)方案的選擇,一定要避免過(guò)度設計,太多就是太多。
這么多請求,全部采集
會(huì )不會(huì )影響性能?
如果每一個(gè)請求都采集
起來(lái),毫無(wú)疑問(wèn)數據量會(huì )非常大,但是反過(guò)來(lái)想想,是不是真的有必要把每一個(gè)請求都采集
起來(lái)。其實(shí)大可不必。我們可以設置采樣頻率,只采樣部分數據,SkyWalking默認設置為3秒采樣3次,其余請求不采樣,如圖:
這樣的采樣頻率其實(shí)已經(jīng)足夠我們分析元器件的性能了。以每 3 秒 3 個(gè)樣本的頻率采樣數據有什么問(wèn)題?理想情況下,每次服務(wù)調用都是在同一個(gè)時(shí)間點(diǎn)(如下圖),所以每次都在同一個(gè)時(shí)間點(diǎn)采樣真的沒(méi)問(wèn)題。
但是在生產(chǎn)中,基本上不可能每個(gè)服務(wù)調用都在同一個(gè)時(shí)間點(diǎn)被調用,因為期間存在網(wǎng)絡(luò )調用延遲,實(shí)際調用情況很可能如下圖所示:
在這種情況下,有些調用會(huì )在服務(wù)A上被采樣,而不會(huì )在服務(wù)B和C上被采樣,無(wú)法分析調用鏈的性能。那么SkyWalking是如何解決的呢?
是這樣解決的:如果上游帶了Context(說(shuō)明上游已經(jīng)采樣),下游會(huì )強制采集數據。這使鏈接保持完整。
SkyWalking的基礎設施
SkyWalking 的基礎是以下架構??梢哉f(shuō)幾乎所有的分布式調用都是由以下幾個(gè)部分組成的:
首先當然是節點(diǎn)數據的定期采樣。數據采樣后定期上報,存儲在ES、MySQL等持久層。有了數據,自然要根據數據做可視化分析。
SkyWalking 的表現如何?
接下來(lái)想必大家比較關(guān)心的是SkyWalking的性能表現,那么我們就來(lái)看看官方的評測數據吧:
圖中藍色代表未使用SkyWalking時(shí)的表現,橙色代表使用SkyWalking時(shí)的表現。以上是TPS為5000時(shí)測得的數據,可以看出無(wú)論是CPU、內存,還是響應時(shí)間,使用SkyWalking帶帶來(lái)的性能損失幾乎可以忽略不計。
接下來(lái)看一下SkyWalking與業(yè)界另一知名分布式追蹤工具Zipkin、Pinpoint的對比(采樣率為1秒,線(xiàn)程數為500,總請求數時(shí)進(jìn)行對比)是 5000)??梢?jiàn)Zipkin(117ms)和PinPoint(201ms)在臨界響應時(shí)間上遠不如SkyWalking(22ms)!
從性能損失來(lái)看,SkyWalking 勝出!
讓我們看另一個(gè)指標:代碼的侵入性如何?ZipKin需要埋在應用中,代碼侵入性大。SkyWalking使用javaagent+插件修改字節碼。沒(méi)有侵入代碼。除了代碼的性能和侵入性,SkyWaking 表現出色,還有以下優(yōu)勢:
我司在分布式調用鏈上的實(shí)踐
SkyWalking在我司的應用架構
從上面可以看出SkyWalking有很多優(yōu)點(diǎn),那么它的組件我們都用上了嗎?事實(shí)上,并非如此。我們來(lái)看看它在我們公司的應用架構:
從圖中可以看出,我們只使用了SkyWalking代理進(jìn)行采樣,而放棄了“數據上報與分析”、“數據存儲”、“數據可視化”等其他三個(gè)組件。

那為什么不直接采用SkyWalking完整的解決方案呢,因為我們的Marvin監控生態(tài)在接入SkyWalking之前就已經(jīng)比較完整了。如果換成SkyWalking,就完全沒(méi)有必要了。兩者都能滿(mǎn)足我們的需求。其次,系統更換成本高。第三,如果重新連接到用戶(hù),學(xué)習成本非常高。
這也給了我們一個(gè)啟示:任何產(chǎn)品抓住機會(huì )都是非常重要的,后續產(chǎn)品的更換成本會(huì )非常高。搶占先機,就是搶占用戶(hù)心智。國外還是做不了Whatsapp一樣的,因為機會(huì )沒(méi)了。
另一方面,對于架構,沒(méi)有最好的,只有最合適的。架構設計的本質(zhì)是結合當前業(yè)務(wù)場(chǎng)景進(jìn)行折衷的平衡。
我們公司對SkyWalking做了哪些改造和實(shí)踐?
我公司主要做了以下改造和實(shí)踐:
1)預發(fā)布環(huán)境因調試需要強制采樣
從上面的分析可以看出,Collector是在后臺定時(shí)采樣的。這不好嗎?為什么我們需要實(shí)施強制采樣?或者排查定位問(wèn)題,有時(shí)線(xiàn)上出現問(wèn)題,我們希望在預發(fā)布上復現,希望看到這個(gè)請求完整的調用鏈,所以需要在預發(fā)布上進(jìn)行強制采樣。所以我們修改了Skywalking的dubbo插件來(lái)實(shí)現強制采樣。
我們在request cookie上放一個(gè)類(lèi)似force_flag = true的key-value對,表示我們要強制采樣。網(wǎng)關(guān)收到這個(gè)cookie后,會(huì )在dubbo附件中帶上鍵值對force_flag = true,然后skywalking的dubbo插件就可以根據這個(gè)來(lái)判斷是否是強制采樣。如果有這個(gè)值,就是強制采樣。如果沒(méi)有這個(gè)值,則進(jìn)行正常定時(shí)采樣。
2)實(shí)現更細粒度的采樣?
Ha 稱(chēng)為更細粒度的采樣。我們先來(lái)看一下skywalking默認的采樣方式,即uniform sampling。
我們知道這個(gè)方法默認是在3秒前采樣3次,其他的請求都被丟棄。在這種情況下,有一個(gè)問(wèn)題。假設3秒內本機有多次dubbo、mysql、redis調用,但是如果前3次都是dubbo調用的話(huà),其他像mysql、redis等調用無(wú)法采樣,所以我們修改了skywalking實(shí)現分組抽樣,如下:
也就是說(shuō)3秒內采樣redis、dubbo、mysql等3次就可以避免這個(gè)問(wèn)題。
3)如何在日志中嵌入traceId?
在輸出日志中嵌入traceId,方便我們排查問(wèn)題,所以打印traceId是非常有必要的,如何在日志中嵌入traceId呢?我們使用log4j,這里我們需要了解一下log4j的插件機制,log4j允許我們自定義插件輸出日志的格式,首先我們需要定義日志的格式,在自定義日志格式,作為賬號字符,如下:
然后我們實(shí)現一個(gè)log4j插件,如下:
首先,log4j插件需要定義一個(gè)類(lèi),該類(lèi)繼承LogEventPatternConverter類(lèi),并用標準Plugin聲明自己為Plugin,通過(guò)@ConverterKeys注解指定需要替換的占位符,然后在format方法中替換失去。這樣日志中就會(huì )出現我們想要的TraceId,如下:
4)我司開(kāi)發(fā)了哪些skywalking插件?
SkyWalking 實(shí)現了很多插件,但是沒(méi)有提供memcached 和druid 的插件,所以我們按照其規范開(kāi)發(fā)了這兩個(gè)插件:
插件是如何實(shí)現的,可以看到主要由三部分組成:
可能大家看了還是不太明白,下面就用dubbo plugin來(lái)簡(jiǎn)單說(shuō)明一下。我們知道,在dubbo服務(wù)中,每次請求都會(huì )收到來(lái)自netty的消息,提交給業(yè)務(wù)線(xiàn)程池處理,真正調用到業(yè)務(wù)方法時(shí)結束。中間經(jīng)過(guò)十幾個(gè)Filter處理。
而MonitorFilter可以攔截所有客戶(hù)端請求或者服務(wù)端處理請求,所以我們可以增強MonitorFilter,在調用invoke方法之前,將全局traceId注入到它的Invocation attachment中,從而保證請求到達真正業(yè)務(wù)之前全局traceId已經(jīng)存在邏輯。
那么顯然我們需要在插件中指定我們要增強的類(lèi)(MonitorFilter),并增強它的方法(invoke)。應該對此方法進(jìn)行哪些改進(jìn)?這就是攔截器(Inteceptor)要做的事情。我們來(lái)看看Dubbo插件(DubboInstrumentation)中的插樁。
我們來(lái)看看代碼中描述的攔截器(Inteceptor)是干什么的。關(guān)鍵步驟如下:
首先,beforeMethod表示這里的方法會(huì )在MonitorFilter的invoke方法執行之前被調用,而afterMethod與之對應,表示invoke方法執行之后才會(huì )執行增強邏輯。
其次,從第2點(diǎn)和第3點(diǎn)我們可以看出,無(wú)論是消費者還是提供者,其全局ID都做了相應的處理,以保證到達真正的業(yè)務(wù)層時(shí),全局traceid是可用的。在定義了 Instrumentation 和 Interceptor 之后,最后一步是在 skywalking.def 中指定定義的類(lèi)。
// skywalking-plugin.def 文件
dubbo=org.apache.skywalking.apm.plugin.asf.dubbo.DubboInstrumentation
這樣封裝的插件會(huì )增強MonitorFilter的invoke方法,在invoke方法執行前,將全局的traceId等操作注入到attachment中,對代碼都是靜默無(wú)侵入的。
總結
本文由淺入深地介紹了分布式跟蹤系統的原理。相信大家對它的作用和工作機制有了更深入的了解。尤其需要注意的是,在引入某項技術(shù)時(shí),一定要結合現有的技術(shù)架構,做出最佳方案。一個(gè)合理的選擇,就像SkyWalking有四個(gè)模塊,而我們公司只使用它的代理采樣功能。
沒(méi)有最好的技術(shù),只有最合適的技術(shù)。通過(guò)這篇文章,相信大家應該對SkyWalking的實(shí)現機制有了清晰的認識。本文只介紹SkyWalking的插件實(shí)現,但畢竟是工業(yè)級軟件。要了解它的深奧,還需要多閱讀源碼。
作者丨碼海源丨公眾號:碼海(ID:seaofcode)dbaplus社區歡迎技術(shù)人員投稿,投稿郵箱:
操作方法:流量工具流量寶使用方法
流量工具是用來(lái)輔助網(wǎng)站增加流量的。有很多交通工具。在之前的文章《輔助網(wǎng)站提升流量有哪些工具》中也提到了幾種工具,那么今天我們就來(lái)說(shuō)說(shuō)其中的一種,說(shuō)說(shuō)使用方法以及使用過(guò)程中需要注意的事項使用它,這個(gè)工具也是很多站長(cháng)經(jīng)常使用的,它就是“流量寶”。
FlowBao在一些免費工具中算是比較強大的,包括提升流量、增加人氣、廣告優(yōu)化、提升電商人氣、關(guān)鍵詞排名、使用Alexa等功能。功能很多,但是在我們seo行業(yè)用到的就那么幾個(gè),所以就說(shuō)說(shuō)seo行業(yè)相關(guān)功能的使用,其他的就不多說(shuō)了。
1.刷流量
刷流量可以提高網(wǎng)站的pv。在流量刷卡界面,有基礎設置、來(lái)源URL設置、點(diǎn)擊設置、流量時(shí)間控制、ua設置、流量區域設置。
1.基本設置
把我們要刷的網(wǎng)站復制粘貼到“網(wǎng)頁(yè)地址”寫(xiě)入框里,ip/pv比就是你要刷的ip和pv的比值,比如1:3,那么一個(gè)ip被瀏覽了3次,這里我們設置1:3就好了,PV停留時(shí)間可以根據自己的情況選擇,我一般是隨機選擇3-30秒。
2. 源地址設置
如果我們要訪(fǎng)問(wèn)百度用戶(hù),可以在“自定義來(lái)源”中選擇“百度搜索詞”。比如我們要增加長(cháng)沙seo這個(gè)詞的流量,那么我們就在上面寫(xiě)上“長(cháng)沙seo”就可以了。注意后面的%,是根據我們自己的字數分配的。比如你想讓那個(gè)詞的流量高,就可以多給分。如果只有一個(gè)字,建議不要超過(guò)50%。

3.點(diǎn)擊設置
如果您不在此處設置點(diǎn)擊 URL,該工具將默認刷新主頁(yè)。如果添加點(diǎn)擊網(wǎng)址,它會(huì )點(diǎn)擊我們填寫(xiě)的網(wǎng)址。點(diǎn)擊的百分比要適當添加,同樣不要超過(guò)50%。如果要點(diǎn)擊的頁(yè)面排名不錯,您可以添加更多。
4.流動(dòng)時(shí)間控制
通過(guò)流量時(shí)間控制,我們可以控制點(diǎn)擊的流量。網(wǎng)民可以在上網(wǎng)的時(shí)候多瀏覽,其他時(shí)間少用。這樣比較自然,效果也不錯。
5.ua設置
一般這里不用設置
6.交通區域設置
首先我們要去掉國外和港澳臺地區,根據自己的網(wǎng)站選擇國內地區。比如我的關(guān)鍵詞是“長(cháng)沙seo”,那么我要選擇的地區就是湖南,其他地區就不用選了。,如果你滑動(dòng)的詞不是區域詞,你也可以選擇更多的區域。
2. 關(guān)鍵詞 排名
基本設置:這里的基本設置同上,復制我們要掃描的頁(yè)面排名的網(wǎng)址關(guān)鍵詞,可以?huà)呙鑼?zhuān)欄,可以?huà)呙栉恼马?yè),也可以?huà)呙枋醉?yè)頁(yè)面,然后在“搜索引擎”中選擇,比如我們使用360搜索引擎,那就選擇360搜索引擎,百度等搜索引擎也一樣。

注意:我們刷的頁(yè)面關(guān)鍵詞一定要收錄
進(jìn)去,否則沒(méi)有效果,否則會(huì )影響我們的網(wǎng)站。
3.刷Alexa
刷Alexa并沒(méi)有那么復雜,填寫(xiě)我們的主域名即可。
4. 最后一步
流量寶首頁(yè)左下角和右下角都有“優(yōu)化速度選擇”。如果網(wǎng)站SEO基礎好,選擇高速模式。一般我們選擇普通模式,差一點(diǎn)就選擇低速模式。
也就是說(shuō),一個(gè)普通家庭養育一個(gè)孩子至少要花費70萬(wàn)元。
對于大多數普通工薪家庭來(lái)說(shuō),確實(shí)是一筆不小的數目。
小夏SEO有話(huà)要說(shuō):其實(shí)不管是什么工具,我們都不能太依賴(lài)它。該工具可以在短時(shí)間內提高網(wǎng)站的排名,但網(wǎng)站仍然需要優(yōu)化。沒(méi)有優(yōu)化的網(wǎng)站如果只用一些手段,成本會(huì )很大,這樣就失去了seo的意義。做seo的網(wǎng)站都希望低成本帶來(lái)轉化。
最后提醒,新站一定不要用這些工具,新站要好好優(yōu)化!
解決方案:一種基于A(yíng)I算法自動(dòng)采集并歸類(lèi)圖像的方法及系統與流程
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 149 次瀏覽 ? 2022-11-27 20:39
一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統
技術(shù)領(lǐng)域
1.本發(fā)明涉及圖像處理AI算法技術(shù)領(lǐng)域,具體涉及一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統。
背景技術(shù):
2、隨著(zhù)AI技術(shù)的普及,生活中的很多場(chǎng)景都可以看到智能化改造的身影,其中以計算機視覺(jué)識別技術(shù)為基礎的圖像識別技術(shù)尤為突出。機器視覺(jué)識別是計算機對圖像進(jìn)行處理、分析和理解,以識別各種模式的目標和物體的技術(shù)。簡(jiǎn)單的說(shuō),就是讓計算機學(xué)會(huì )從圖像中理解圖片。深度學(xué)習技術(shù)是用于理解圖像和形成模型的計算機視覺(jué)識別技術(shù)之一。計算機視覺(jué)識別技術(shù)可以對大量標記圖像進(jìn)行分析,得到人工智能算法推理模型。通過(guò)該模型,可以在更多的場(chǎng)景下使用,實(shí)現圖像識別過(guò)程。
3. 然而,在實(shí)際的智能化改造場(chǎng)景中,總會(huì )存在一般圖像庫無(wú)法分析的圖像特征,導致計算機視覺(jué)識別技術(shù)在實(shí)際場(chǎng)景中的表現不盡如人意。而且,如果在圖像分類(lèi)和標注的過(guò)程中使用人力,需要大量的人力。
技術(shù)實(shí)現要素:
4、針對上述技術(shù)問(wèn)題,本發(fā)明的目的在于提供一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統,以解決普通圖片庫無(wú)法分析的問(wèn)題圖像識別過(guò)程中圖像的特征,或者大量圖像需要人工分析標注和分類(lèi)帶來(lái)的人工成本高的問(wèn)題。
5、本發(fā)明采用以下技術(shù)方案:
6、一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法,包括以下步驟:
7、定期從視頻設備中采集圖像進(jìn)行處理;
8、將待處理圖像輸入到預設的ai算法模型中,通過(guò)ai算法模型得到待處理圖像的推理結果;
9、根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
10、可選的,通過(guò)ai算法模型得到待處理圖像的推理結果,包括:
11、ai算法模型獲取預設的圖像分類(lèi)規則和評分規則,根據圖像分類(lèi)規則和評分規則,得到待處理圖像的分類(lèi)結果。
12、可選地,推理結果包括待處理圖像的推理目標類(lèi)型、推理目標在待處理圖像中的位置、目標對應的推理分數中的一種或多種。
13、可選的,根據推理結果對待處理圖像進(jìn)行濾波,得到待處理圖像的分類(lèi)結果并存儲,包括:
14、剔除待處理圖像推理結果中目標類(lèi)型不滿(mǎn)足預設類(lèi)型范圍的待處理圖像,剔除推理得分小于預設閾值得分的待處理圖像,然后進(jìn)行分類(lèi)剩余待處理圖像按目標類(lèi)型存儲。
15、可選的,所述定時(shí)采集視頻設備的待處理圖像包括:
16、按照一定的時(shí)間間隔采集視頻設備輸出的視頻數據;
17、通過(guò)對視頻數據進(jìn)行抓圖獲取圖像或者通過(guò)分析視頻流獲取圖像;
18.將獲取的圖片存儲到本地,并向本地消息隊列推送圖片獲取消息。
19、可選的,ai算法模型采用yolov5模型,通過(guò)yolov5模型得到待處理圖像的推理結果,存儲推理結果,推理結果作為其他ai模型的訓練樣本.
20、一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)系統,包括:
21、圖像采集單元,用于定時(shí)采集視頻設備的待處理圖像;
22、推理單元,用于將所述待處理圖像輸入預設的ai算法模型,通過(guò)所述ai算法模型得到所述待處理圖像的推理結果;
23、分類(lèi)單元,用于根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
24、可選的,所述圖像采集單元包括:視頻接入模塊、定時(shí)執行模塊、圖像采集模塊、圖像存儲模塊和本地消息隊列模塊;其中,
25、視頻接入模塊,用于將視頻設備的視頻數據連接到圖像采集模塊;
26、定時(shí)執行模塊,用于按照一定的時(shí)間間隔調用圖像采集模塊,通過(guò)對視頻數據進(jìn)行圖像采集或分析視頻流來(lái)獲取圖像;
27、圖像存儲模塊,用于將獲取的圖像存儲在本地;
28、本地消息隊列模塊,用于接收和發(fā)送待處理的圖像信息。
29. 一種電子設備,包括: 至少一個(gè)處理器,以及通信連接到所述至少一個(gè)處理器的存儲器,其中所述存儲器存儲可由所述至少一個(gè)處理器執行的指令,并且所述指令由所述至少一個(gè)處理器執行,使得至少一個(gè)處理器可以執行基于A(yíng)I算法的自動(dòng)采集和分類(lèi)圖像的方法。
30、一種計算機存儲介質(zhì),其上存儲有計算機程序,當計算機程序被處理器執行時(shí),實(shí)現了基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法。
31、與現有技術(shù)相比,本發(fā)明的有益效果是:
32、本發(fā)明定時(shí)從視頻設備采集待處理圖像,將待處理圖像輸入到預設的ai算法模型中,通過(guò)ai算法模型得到待處理圖像的推理結果,并基于推理結果,對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲;其中,在采集待處理圖像的過(guò)程中,視頻設備可以為實(shí)際場(chǎng)景中的視頻設備,實(shí)際場(chǎng)景中的視頻設備采集圖像,使圖像數據更符合業(yè)務(wù)場(chǎng)景,而使用這些圖像數據訓練出來(lái)的模型會(huì )更貼合實(shí)際場(chǎng)景;并且在不更換現有視頻設備的情況下采集圖像,可減少大量視頻設備升級所帶來(lái)的巨大成本;通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練??梢员苊馐褂猛ㄓ脠D像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練??梢员苊馐褂猛ㄓ脠D像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。
圖紙說(shuō)明
33、圖1為本發(fā)明實(shí)施例提供的基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法的流程示意圖;
34、圖2為本發(fā)明實(shí)施例提供的視頻設備自動(dòng)獲取圖像的方法流程示意圖;
35、圖3為本發(fā)明實(shí)施例提供的AI算法對圖像進(jìn)行分類(lèi)的方法流程示意圖;
36. 圖。圖4是根據本發(fā)明實(shí)施例的基于A(yíng)I算法的圖像自動(dòng)采集和分類(lèi)系統的示意圖;
37. 圖。圖5為本發(fā)明實(shí)施例提供的電子設備的結構示意圖。
詳細方法
38、下面結合附圖和具體實(shí)施方法對本發(fā)明作進(jìn)一步說(shuō)明。需要說(shuō)明的是,在不沖突的前提下,下述各實(shí)施例或者技術(shù)特征可以任意組合形成新的實(shí)施例:
39、實(shí)施例一:
40、參見(jiàn)圖1-5,圖1所示的一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法包括以下步驟:
41、步驟s1:定時(shí)從視頻設備采集待處理圖像;
42、本實(shí)施例中,視頻設備可以是實(shí)際場(chǎng)景中的視頻設備,在實(shí)際場(chǎng)景中的視頻設備上進(jìn)行圖像采集,使得圖像數據更符合業(yè)務(wù)場(chǎng)景,模型使用這些圖像數據進(jìn)行訓練會(huì )更符合實(shí)際場(chǎng)景。并且采集圖像無(wú)需更換現有的視頻設備,減少了升級大量視頻設備的巨大成本。
43、步驟s2:將待處理圖像輸入預設的ai算法模型,通過(guò)ai算法模型得到待處理圖像的推理結果;
44、步驟s3:根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
45、可選的,通過(guò)ai算法模型得到待處理圖像的推理結果,包括:
46、ai算法模型獲取預設的圖像分類(lèi)規則和評分規則,根據圖像分類(lèi)規則和評分規則,得到待處理圖像的分類(lèi)結果。
47、在本實(shí)施例中,圖像分類(lèi)規則和評分規則可以根據實(shí)際需要進(jìn)行設置。
48、例如,預設評分規則定義為:推理得分為100分,如果待處理圖像的目標不在待處理圖像的中心位置,則扣50分,推理分值為50分,或者待處理圖像的圖像分辨率小于預設分辨率,再扣20分,推理分等于滿(mǎn)分減去扣除的推理分,即,推理分數=100-50-20=30分。
49、可選的,ai算法模型采用yolov5模型,通過(guò)yolov5模型得到待處理圖像的推理結果,存儲推理結果,將推理結果作為其他ai模型的訓練樣本。
50.需要說(shuō)明的是,yolov5模型起源于cnn的基本思想從分類(lèi)任務(wù)到檢測的擴展。它由主干網(wǎng)絡(luò )、頸部和頭部組成。實(shí)現步驟包括將數據輸入模型,獲取推理信息;nms處理獲取Forecast信息,此時(shí)會(huì )獲取到所有的預測幀;遍歷預測信息,同時(shí)獲取標簽信息進(jìn)行統計。
51. 在實(shí)際實(shí)現中,承載AI算法模型的硬件設備具體可以包括gpu芯片、計算內存、本地硬盤(pán)存儲、計算機的通用配置。GPU芯片和計算內存承載AI模型進(jìn)行推理和使用,本地硬盤(pán)用于存儲圖像數據。.
52、具體地,所述推理結果包括所述待處理圖像的推理目標類(lèi)型、所述推理目標在所述待處理圖像中的位置、以及所述目標對應的推理分數中的一種或多種。
53、可選地,根據推理結果對待處理圖像進(jìn)行濾波得到待處理圖像的分類(lèi)結果并存儲,包括:
54、去除待處理圖像推理結果中目標類(lèi)型不滿(mǎn)足預設類(lèi)型范圍的待處理圖像,去除推理得分小于預設閾值得分的待處理圖像,然后分類(lèi)剩余待處理圖像按目標類(lèi)型存儲。
55、具體實(shí)施時(shí),如果待處理圖像的推理結果中的目標類(lèi)型不在預設的類(lèi)型范圍內,則丟棄該待處理圖像。
56、例如,預設類(lèi)型范圍為人物圖像,而待處理圖像的推斷結果中的目標類(lèi)型為花卉,則確定待處理圖像不滿(mǎn)足預設類(lèi)型范圍。
57、例如預設閾值分值為60分,如果待處理圖像的推理分值為30分,則該待處理圖像將被淘汰,不進(jìn)入分類(lèi)存儲類(lèi)別;
58、如果待處理圖像的推理得分為80分,目標類(lèi)型為人物圖像,且預設類(lèi)型范圍為人物圖像,則可將待處理圖像分類(lèi)為人物圖像并存儲.
59、可選地,步驟s1可以包括:
60、步驟s11:每隔一定時(shí)間采集視頻設備輸出的視頻數據;
61、步驟s12:通過(guò)抓圖獲取視頻數據的圖像或者通過(guò)分析視頻流獲取圖像;
62、在本實(shí)施例中,圖像抓取可以使用視頻設備交付時(shí)附帶的設備廠(chǎng)商的設備截圖能力,視頻流獲取圖像是對視頻流進(jìn)行解析后從視頻流中截取圖像的能力。
63、步驟s13:將采集到的圖像存儲到本地,并向本地消息隊列推送圖像采集消息。
64、本實(shí)施例中,推送圖片獲取消息具體可以包括圖片本地存儲地址和設備信息。
65、上述實(shí)現過(guò)程中,定時(shí)從視頻設備采集待處理圖像,將待處理圖像輸入到預設的ai算法模型中,通過(guò)獲取待處理圖像的推理結果ai算法模型,根據推理結果篩選待處理圖像,得到待處理圖像的分類(lèi)結果,并存儲;其中,在采集待處理圖像的過(guò)程中,視頻設備可以為實(shí)際場(chǎng)景中的視頻設備,實(shí)際場(chǎng)景中的視頻設備采集圖像,使圖像數據更符合業(yè)務(wù)場(chǎng)景,而使用這些圖像數據訓練出來(lái)的模型會(huì )更符合實(shí)際場(chǎng)景。并且無(wú)需更換現有視頻設備即可獲取圖像,可減少升級大量視頻設備的巨大成本;通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。
66. 下面結合具體實(shí)施例對本發(fā)明的方法進(jìn)行說(shuō)明:
67. 1. 自動(dòng)采集視頻設備圖像;請參閱圖2,為本發(fā)明視頻設備自動(dòng)獲取圖像的方法流程示意圖。
68.1。視頻訪(fǎng)問(wèn);
69.2。定時(shí)圖像采集;
70.3。本地存儲;
71.4。將圖像信息發(fā)送到消息隊列。
72. 2.通過(guò)AI算法對圖片進(jìn)行分類(lèi);請參考圖。圖3為本發(fā)明AI算法對圖像進(jìn)行分類(lèi)的方法流程示意圖;
73.1。獲取算法啟動(dòng)時(shí)需要采集的圖像類(lèi)型規則和評分規則;
74.2。得到推理結果后,判斷推理結果中收錄
的目標類(lèi)型是否在目標規則規定的范圍內,如果不在,則丟棄該圖像;
75.3。判斷推理結果中收錄
的目標的推理分數是否高于評分規則設置,若低于規則則丟棄該圖像;
76.4。根據目標類(lèi)型對通過(guò)目標規則和評分規則規定范圍的圖像進(jìn)行分類(lèi)存儲。
77.實(shí)施例二:
78.請參考圖4,圖4為基于本發(fā)明AI算法的圖像自動(dòng)采集分類(lèi)系統,包括:
79、圖像獲取單元10,用于定時(shí)從視頻設備獲取待處理圖像;
80、推理單元20,用于將待處理圖像輸入預設的ai算法模型,通過(guò)ai算法模型得到待處理圖像的推理結果;
81、分類(lèi)單元30,用于根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
82、具體地,圖像獲取單元10包括:視頻訪(fǎng)問(wèn)模塊、定時(shí)執行模塊、圖像獲取模塊、圖像存儲模塊、本地消息隊列模塊;其中,
83、視頻接入模塊,用于將視頻設備的視頻數據連接到圖像采集模塊;
84、定時(shí)執行模塊,用于按照一定的時(shí)間間隔調用圖像采集模塊,通過(guò)對視頻數據進(jìn)行圖像采集或分析視頻流來(lái)獲取圖像;
85、圖像存儲模塊,用于將獲取的圖像存儲在本地;
86、本地消息隊列模塊,用于接收和發(fā)送待處理的圖像信息。
87、具體地,推理單元20和分類(lèi)單元30具體可以包括圖像接收模塊、ai算法推理模塊、圖像分類(lèi)模塊、數據存儲模塊、數據服務(wù)器和本地消息隊列。獲取圖像信息,AI算法推理模塊將圖像信息輸入AI模型進(jìn)行推理并得到推理結果,圖像分類(lèi)模塊根據推理結果對圖像進(jìn)行篩選,數據存儲模塊存儲將所選圖像的推理信息存入數據服務(wù)器。
88.實(shí)施例三:
89、圖5為本技術(shù)實(shí)施例提供的一種電子設備的結構示意圖。在本技術(shù)中,可以用圖5所示的示意圖來(lái)描述一個(gè)基于本技術(shù)實(shí)施例的AI算法的自動(dòng)采集。以及圖像分類(lèi)方法的電子設備100。
90、如圖9所示的電子設備的結構示意圖。如圖5所示,電子設備100包括一個(gè)或多個(gè)處理器102、一個(gè)或多個(gè)存儲設備104,這些部件之間通過(guò)總線(xiàn)系統和/或其他形式(未示出)互連。值得一提的是,圖1所示的電子裝置100的組件及結構僅由圖1所示的電子裝置100構成。
如果需要,電子設備可以具有圖1所示的一些部件。也可以具有圖5中未示出的其他部件和結構。5.
91、處理器102可以是中央處理器(cpu)或其他形式的具有數據處理能力和/或指令執行能力的處理單元,并且可以控制電子設備100中的其他組件執行期望的功能。
92.存儲設備104可以包括一個(gè)或多個(gè)計算機程序產(chǎn)品,其可以包括各種形式的計算機可讀存儲介質(zhì),例如易失性存儲器和/或非易失性存儲器。易失性存儲器可以包括例如隨機存取存儲器(ram)和/或高速緩沖存儲器(cache)。非易失性存儲器可包括例如只讀存儲器(rom)、硬盤(pán)、閃存等。計算機可讀存儲介質(zhì)上可以存儲有一個(gè)或多個(gè)計算機程序指令,處理器102可以執行該程序指令以實(shí)現下述技術(shù)實(shí)施例中描述的功能(由處理器實(shí)現)和/或其他期望的功能。各種應用程序和各種數據,例如應用程序使用和/或產(chǎn)生的各種數據,
93.本發(fā)明還提供了一種計算機存儲介質(zhì),其上存儲有計算機程序。本發(fā)明的方法如果以軟件功能單元的形式實(shí)現并作為獨立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲在計算機存儲介質(zhì)中?;诖死斫?,本發(fā)明實(shí)現了上述實(shí)施例的方法中的全部或部分過(guò)程,也可以通過(guò)計算機程序指令相關(guān)硬件來(lái)完成。該計算機程序可以存儲在一個(gè)計算機存儲介質(zhì)中,該計算機程序在處理器執行時(shí),可以實(shí)現上述各方法實(shí)施例中的步驟。其中,計算機程序包括計算機程序代碼,計算機程序代碼可以是源代碼、目標代碼、可執行文件或某種中間形式。計算機存儲介質(zhì)可以包括:任何能夠承載計算機程序代碼的實(shí)體或設備、記錄介質(zhì)、U盤(pán)、移動(dòng)硬盤(pán)、磁盤(pán)、光盤(pán)、計算機存儲器、只讀存儲器(rom, read-only memory), Random access memory (ram, random access memory), 電載波信號, 電信信號, 軟件分發(fā)介質(zhì)等。需要注意的是,計算機存儲介質(zhì)中收錄
的內容可以適當根據司法管轄區的立法和專(zhuān)利實(shí)踐的要求增加或減少。例如,在一些司法管轄區,根據立法和專(zhuān)利慣例,計算機存儲介質(zhì)不包括電載波信號和電信信號。
94、對于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),根據上述技術(shù)方案和思想,還可以做出其他各種相應的變化和變形,這些變化和變形均應收錄
在本發(fā)明的權利要求的保護范圍之內。
解決方案:NLP之文本匹配及語(yǔ)義匹配應用介紹
Pytorch-based Chinese semantic similarity matching model Pytorch-based Chinese semantic similarity matching model 本項目會(huì )持續更新,對比目前業(yè)界主流的中文文本匹配模型。運行環(huán)境:python3.7、pytorch1.2、transformers2.5.1 數據集使用LCQMC數據(對一個(gè)句子對進(jìn)行分類(lèi),判斷兩個(gè)句子的語(yǔ)義是否相同(兩個(gè)分類(lèi)任務(wù)))。因為懷疑數據,所以不提供下載。有需要的可以向官方提交數據申請,解壓數據。到數據文件夾。模型評價(jià)指標有:ACC、AUC和預測總耗時(shí)。Embedding:本項目的輸入統一采用分詞策略,所以通過(guò)維基百科中文語(yǔ)料庫,詞向量被訓練為嵌入。訓練語(yǔ)料、向量模型和詞匯可通過(guò)百度網(wǎng)盤(pán)下載。鏈接: : 提取碼:s830 模型文件:本項目訓練的模型文件(不一定是最優(yōu)的,可以通過(guò)超參繼續調優(yōu)),或者通過(guò)網(wǎng)盤(pán)下載。鏈接:: 提取碼:s830測試集結果對比:模型ACC AUC耗時(shí)(s
查看全部
解決方案:一種基于A(yíng)I算法自動(dòng)采集并歸類(lèi)圖像的方法及系統與流程
一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統
技術(shù)領(lǐng)域
1.本發(fā)明涉及圖像處理AI算法技術(shù)領(lǐng)域,具體涉及一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統。
背景技術(shù):
2、隨著(zhù)AI技術(shù)的普及,生活中的很多場(chǎng)景都可以看到智能化改造的身影,其中以計算機視覺(jué)識別技術(shù)為基礎的圖像識別技術(shù)尤為突出。機器視覺(jué)識別是計算機對圖像進(jìn)行處理、分析和理解,以識別各種模式的目標和物體的技術(shù)。簡(jiǎn)單的說(shuō),就是讓計算機學(xué)會(huì )從圖像中理解圖片。深度學(xué)習技術(shù)是用于理解圖像和形成模型的計算機視覺(jué)識別技術(shù)之一。計算機視覺(jué)識別技術(shù)可以對大量標記圖像進(jìn)行分析,得到人工智能算法推理模型。通過(guò)該模型,可以在更多的場(chǎng)景下使用,實(shí)現圖像識別過(guò)程。
3. 然而,在實(shí)際的智能化改造場(chǎng)景中,總會(huì )存在一般圖像庫無(wú)法分析的圖像特征,導致計算機視覺(jué)識別技術(shù)在實(shí)際場(chǎng)景中的表現不盡如人意。而且,如果在圖像分類(lèi)和標注的過(guò)程中使用人力,需要大量的人力。
技術(shù)實(shí)現要素:
4、針對上述技術(shù)問(wèn)題,本發(fā)明的目的在于提供一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統,以解決普通圖片庫無(wú)法分析的問(wèn)題圖像識別過(guò)程中圖像的特征,或者大量圖像需要人工分析標注和分類(lèi)帶來(lái)的人工成本高的問(wèn)題。
5、本發(fā)明采用以下技術(shù)方案:
6、一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法,包括以下步驟:
7、定期從視頻設備中采集圖像進(jìn)行處理;
8、將待處理圖像輸入到預設的ai算法模型中,通過(guò)ai算法模型得到待處理圖像的推理結果;
9、根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
10、可選的,通過(guò)ai算法模型得到待處理圖像的推理結果,包括:
11、ai算法模型獲取預設的圖像分類(lèi)規則和評分規則,根據圖像分類(lèi)規則和評分規則,得到待處理圖像的分類(lèi)結果。
12、可選地,推理結果包括待處理圖像的推理目標類(lèi)型、推理目標在待處理圖像中的位置、目標對應的推理分數中的一種或多種。
13、可選的,根據推理結果對待處理圖像進(jìn)行濾波,得到待處理圖像的分類(lèi)結果并存儲,包括:
14、剔除待處理圖像推理結果中目標類(lèi)型不滿(mǎn)足預設類(lèi)型范圍的待處理圖像,剔除推理得分小于預設閾值得分的待處理圖像,然后進(jìn)行分類(lèi)剩余待處理圖像按目標類(lèi)型存儲。
15、可選的,所述定時(shí)采集視頻設備的待處理圖像包括:
16、按照一定的時(shí)間間隔采集視頻設備輸出的視頻數據;
17、通過(guò)對視頻數據進(jìn)行抓圖獲取圖像或者通過(guò)分析視頻流獲取圖像;
18.將獲取的圖片存儲到本地,并向本地消息隊列推送圖片獲取消息。
19、可選的,ai算法模型采用yolov5模型,通過(guò)yolov5模型得到待處理圖像的推理結果,存儲推理結果,推理結果作為其他ai模型的訓練樣本.
20、一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)系統,包括:
21、圖像采集單元,用于定時(shí)采集視頻設備的待處理圖像;
22、推理單元,用于將所述待處理圖像輸入預設的ai算法模型,通過(guò)所述ai算法模型得到所述待處理圖像的推理結果;
23、分類(lèi)單元,用于根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
24、可選的,所述圖像采集單元包括:視頻接入模塊、定時(shí)執行模塊、圖像采集模塊、圖像存儲模塊和本地消息隊列模塊;其中,
25、視頻接入模塊,用于將視頻設備的視頻數據連接到圖像采集模塊;
26、定時(shí)執行模塊,用于按照一定的時(shí)間間隔調用圖像采集模塊,通過(guò)對視頻數據進(jìn)行圖像采集或分析視頻流來(lái)獲取圖像;
27、圖像存儲模塊,用于將獲取的圖像存儲在本地;
28、本地消息隊列模塊,用于接收和發(fā)送待處理的圖像信息。
29. 一種電子設備,包括: 至少一個(gè)處理器,以及通信連接到所述至少一個(gè)處理器的存儲器,其中所述存儲器存儲可由所述至少一個(gè)處理器執行的指令,并且所述指令由所述至少一個(gè)處理器執行,使得至少一個(gè)處理器可以執行基于A(yíng)I算法的自動(dòng)采集和分類(lèi)圖像的方法。

30、一種計算機存儲介質(zhì),其上存儲有計算機程序,當計算機程序被處理器執行時(shí),實(shí)現了基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法。
31、與現有技術(shù)相比,本發(fā)明的有益效果是:
32、本發(fā)明定時(shí)從視頻設備采集待處理圖像,將待處理圖像輸入到預設的ai算法模型中,通過(guò)ai算法模型得到待處理圖像的推理結果,并基于推理結果,對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲;其中,在采集待處理圖像的過(guò)程中,視頻設備可以為實(shí)際場(chǎng)景中的視頻設備,實(shí)際場(chǎng)景中的視頻設備采集圖像,使圖像數據更符合業(yè)務(wù)場(chǎng)景,而使用這些圖像數據訓練出來(lái)的模型會(huì )更貼合實(shí)際場(chǎng)景;并且在不更換現有視頻設備的情況下采集圖像,可減少大量視頻設備升級所帶來(lái)的巨大成本;通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練??梢员苊馐褂猛ㄓ脠D像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練??梢员苊馐褂猛ㄓ脠D像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。
圖紙說(shuō)明
33、圖1為本發(fā)明實(shí)施例提供的基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法的流程示意圖;
34、圖2為本發(fā)明實(shí)施例提供的視頻設備自動(dòng)獲取圖像的方法流程示意圖;
35、圖3為本發(fā)明實(shí)施例提供的AI算法對圖像進(jìn)行分類(lèi)的方法流程示意圖;
36. 圖。圖4是根據本發(fā)明實(shí)施例的基于A(yíng)I算法的圖像自動(dòng)采集和分類(lèi)系統的示意圖;
37. 圖。圖5為本發(fā)明實(shí)施例提供的電子設備的結構示意圖。
詳細方法
38、下面結合附圖和具體實(shí)施方法對本發(fā)明作進(jìn)一步說(shuō)明。需要說(shuō)明的是,在不沖突的前提下,下述各實(shí)施例或者技術(shù)特征可以任意組合形成新的實(shí)施例:
39、實(shí)施例一:
40、參見(jiàn)圖1-5,圖1所示的一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法包括以下步驟:
41、步驟s1:定時(shí)從視頻設備采集待處理圖像;
42、本實(shí)施例中,視頻設備可以是實(shí)際場(chǎng)景中的視頻設備,在實(shí)際場(chǎng)景中的視頻設備上進(jìn)行圖像采集,使得圖像數據更符合業(yè)務(wù)場(chǎng)景,模型使用這些圖像數據進(jìn)行訓練會(huì )更符合實(shí)際場(chǎng)景。并且采集圖像無(wú)需更換現有的視頻設備,減少了升級大量視頻設備的巨大成本。
43、步驟s2:將待處理圖像輸入預設的ai算法模型,通過(guò)ai算法模型得到待處理圖像的推理結果;
44、步驟s3:根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
45、可選的,通過(guò)ai算法模型得到待處理圖像的推理結果,包括:
46、ai算法模型獲取預設的圖像分類(lèi)規則和評分規則,根據圖像分類(lèi)規則和評分規則,得到待處理圖像的分類(lèi)結果。
47、在本實(shí)施例中,圖像分類(lèi)規則和評分規則可以根據實(shí)際需要進(jìn)行設置。
48、例如,預設評分規則定義為:推理得分為100分,如果待處理圖像的目標不在待處理圖像的中心位置,則扣50分,推理分值為50分,或者待處理圖像的圖像分辨率小于預設分辨率,再扣20分,推理分等于滿(mǎn)分減去扣除的推理分,即,推理分數=100-50-20=30分。
49、可選的,ai算法模型采用yolov5模型,通過(guò)yolov5模型得到待處理圖像的推理結果,存儲推理結果,將推理結果作為其他ai模型的訓練樣本。
50.需要說(shuō)明的是,yolov5模型起源于cnn的基本思想從分類(lèi)任務(wù)到檢測的擴展。它由主干網(wǎng)絡(luò )、頸部和頭部組成。實(shí)現步驟包括將數據輸入模型,獲取推理信息;nms處理獲取Forecast信息,此時(shí)會(huì )獲取到所有的預測幀;遍歷預測信息,同時(shí)獲取標簽信息進(jìn)行統計。
51. 在實(shí)際實(shí)現中,承載AI算法模型的硬件設備具體可以包括gpu芯片、計算內存、本地硬盤(pán)存儲、計算機的通用配置。GPU芯片和計算內存承載AI模型進(jìn)行推理和使用,本地硬盤(pán)用于存儲圖像數據。.
52、具體地,所述推理結果包括所述待處理圖像的推理目標類(lèi)型、所述推理目標在所述待處理圖像中的位置、以及所述目標對應的推理分數中的一種或多種。
53、可選地,根據推理結果對待處理圖像進(jìn)行濾波得到待處理圖像的分類(lèi)結果并存儲,包括:
54、去除待處理圖像推理結果中目標類(lèi)型不滿(mǎn)足預設類(lèi)型范圍的待處理圖像,去除推理得分小于預設閾值得分的待處理圖像,然后分類(lèi)剩余待處理圖像按目標類(lèi)型存儲。
55、具體實(shí)施時(shí),如果待處理圖像的推理結果中的目標類(lèi)型不在預設的類(lèi)型范圍內,則丟棄該待處理圖像。
56、例如,預設類(lèi)型范圍為人物圖像,而待處理圖像的推斷結果中的目標類(lèi)型為花卉,則確定待處理圖像不滿(mǎn)足預設類(lèi)型范圍。
57、例如預設閾值分值為60分,如果待處理圖像的推理分值為30分,則該待處理圖像將被淘汰,不進(jìn)入分類(lèi)存儲類(lèi)別;
58、如果待處理圖像的推理得分為80分,目標類(lèi)型為人物圖像,且預設類(lèi)型范圍為人物圖像,則可將待處理圖像分類(lèi)為人物圖像并存儲.
59、可選地,步驟s1可以包括:
60、步驟s11:每隔一定時(shí)間采集視頻設備輸出的視頻數據;
61、步驟s12:通過(guò)抓圖獲取視頻數據的圖像或者通過(guò)分析視頻流獲取圖像;

62、在本實(shí)施例中,圖像抓取可以使用視頻設備交付時(shí)附帶的設備廠(chǎng)商的設備截圖能力,視頻流獲取圖像是對視頻流進(jìn)行解析后從視頻流中截取圖像的能力。
63、步驟s13:將采集到的圖像存儲到本地,并向本地消息隊列推送圖像采集消息。
64、本實(shí)施例中,推送圖片獲取消息具體可以包括圖片本地存儲地址和設備信息。
65、上述實(shí)現過(guò)程中,定時(shí)從視頻設備采集待處理圖像,將待處理圖像輸入到預設的ai算法模型中,通過(guò)獲取待處理圖像的推理結果ai算法模型,根據推理結果篩選待處理圖像,得到待處理圖像的分類(lèi)結果,并存儲;其中,在采集待處理圖像的過(guò)程中,視頻設備可以為實(shí)際場(chǎng)景中的視頻設備,實(shí)際場(chǎng)景中的視頻設備采集圖像,使圖像數據更符合業(yè)務(wù)場(chǎng)景,而使用這些圖像數據訓練出來(lái)的模型會(huì )更符合實(shí)際場(chǎng)景。并且無(wú)需更換現有視頻設備即可獲取圖像,可減少升級大量視頻設備的巨大成本;通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。
66. 下面結合具體實(shí)施例對本發(fā)明的方法進(jìn)行說(shuō)明:
67. 1. 自動(dòng)采集視頻設備圖像;請參閱圖2,為本發(fā)明視頻設備自動(dòng)獲取圖像的方法流程示意圖。
68.1。視頻訪(fǎng)問(wèn);
69.2。定時(shí)圖像采集;
70.3。本地存儲;
71.4。將圖像信息發(fā)送到消息隊列。
72. 2.通過(guò)AI算法對圖片進(jìn)行分類(lèi);請參考圖。圖3為本發(fā)明AI算法對圖像進(jìn)行分類(lèi)的方法流程示意圖;
73.1。獲取算法啟動(dòng)時(shí)需要采集的圖像類(lèi)型規則和評分規則;
74.2。得到推理結果后,判斷推理結果中收錄
的目標類(lèi)型是否在目標規則規定的范圍內,如果不在,則丟棄該圖像;
75.3。判斷推理結果中收錄
的目標的推理分數是否高于評分規則設置,若低于規則則丟棄該圖像;
76.4。根據目標類(lèi)型對通過(guò)目標規則和評分規則規定范圍的圖像進(jìn)行分類(lèi)存儲。
77.實(shí)施例二:
78.請參考圖4,圖4為基于本發(fā)明AI算法的圖像自動(dòng)采集分類(lèi)系統,包括:
79、圖像獲取單元10,用于定時(shí)從視頻設備獲取待處理圖像;
80、推理單元20,用于將待處理圖像輸入預設的ai算法模型,通過(guò)ai算法模型得到待處理圖像的推理結果;
81、分類(lèi)單元30,用于根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
82、具體地,圖像獲取單元10包括:視頻訪(fǎng)問(wèn)模塊、定時(shí)執行模塊、圖像獲取模塊、圖像存儲模塊、本地消息隊列模塊;其中,
83、視頻接入模塊,用于將視頻設備的視頻數據連接到圖像采集模塊;
84、定時(shí)執行模塊,用于按照一定的時(shí)間間隔調用圖像采集模塊,通過(guò)對視頻數據進(jìn)行圖像采集或分析視頻流來(lái)獲取圖像;
85、圖像存儲模塊,用于將獲取的圖像存儲在本地;
86、本地消息隊列模塊,用于接收和發(fā)送待處理的圖像信息。
87、具體地,推理單元20和分類(lèi)單元30具體可以包括圖像接收模塊、ai算法推理模塊、圖像分類(lèi)模塊、數據存儲模塊、數據服務(wù)器和本地消息隊列。獲取圖像信息,AI算法推理模塊將圖像信息輸入AI模型進(jìn)行推理并得到推理結果,圖像分類(lèi)模塊根據推理結果對圖像進(jìn)行篩選,數據存儲模塊存儲將所選圖像的推理信息存入數據服務(wù)器。
88.實(shí)施例三:
89、圖5為本技術(shù)實(shí)施例提供的一種電子設備的結構示意圖。在本技術(shù)中,可以用圖5所示的示意圖來(lái)描述一個(gè)基于本技術(shù)實(shí)施例的AI算法的自動(dòng)采集。以及圖像分類(lèi)方法的電子設備100。
90、如圖9所示的電子設備的結構示意圖。如圖5所示,電子設備100包括一個(gè)或多個(gè)處理器102、一個(gè)或多個(gè)存儲設備104,這些部件之間通過(guò)總線(xiàn)系統和/或其他形式(未示出)互連。值得一提的是,圖1所示的電子裝置100的組件及結構僅由圖1所示的電子裝置100構成。
如果需要,電子設備可以具有圖1所示的一些部件。也可以具有圖5中未示出的其他部件和結構。5.
91、處理器102可以是中央處理器(cpu)或其他形式的具有數據處理能力和/或指令執行能力的處理單元,并且可以控制電子設備100中的其他組件執行期望的功能。
92.存儲設備104可以包括一個(gè)或多個(gè)計算機程序產(chǎn)品,其可以包括各種形式的計算機可讀存儲介質(zhì),例如易失性存儲器和/或非易失性存儲器。易失性存儲器可以包括例如隨機存取存儲器(ram)和/或高速緩沖存儲器(cache)。非易失性存儲器可包括例如只讀存儲器(rom)、硬盤(pán)、閃存等。計算機可讀存儲介質(zhì)上可以存儲有一個(gè)或多個(gè)計算機程序指令,處理器102可以執行該程序指令以實(shí)現下述技術(shù)實(shí)施例中描述的功能(由處理器實(shí)現)和/或其他期望的功能。各種應用程序和各種數據,例如應用程序使用和/或產(chǎn)生的各種數據,
93.本發(fā)明還提供了一種計算機存儲介質(zhì),其上存儲有計算機程序。本發(fā)明的方法如果以軟件功能單元的形式實(shí)現并作為獨立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲在計算機存儲介質(zhì)中?;诖死斫?,本發(fā)明實(shí)現了上述實(shí)施例的方法中的全部或部分過(guò)程,也可以通過(guò)計算機程序指令相關(guān)硬件來(lái)完成。該計算機程序可以存儲在一個(gè)計算機存儲介質(zhì)中,該計算機程序在處理器執行時(shí),可以實(shí)現上述各方法實(shí)施例中的步驟。其中,計算機程序包括計算機程序代碼,計算機程序代碼可以是源代碼、目標代碼、可執行文件或某種中間形式。計算機存儲介質(zhì)可以包括:任何能夠承載計算機程序代碼的實(shí)體或設備、記錄介質(zhì)、U盤(pán)、移動(dòng)硬盤(pán)、磁盤(pán)、光盤(pán)、計算機存儲器、只讀存儲器(rom, read-only memory), Random access memory (ram, random access memory), 電載波信號, 電信信號, 軟件分發(fā)介質(zhì)等。需要注意的是,計算機存儲介質(zhì)中收錄
的內容可以適當根據司法管轄區的立法和專(zhuān)利實(shí)踐的要求增加或減少。例如,在一些司法管轄區,根據立法和專(zhuān)利慣例,計算機存儲介質(zhì)不包括電載波信號和電信信號。
94、對于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),根據上述技術(shù)方案和思想,還可以做出其他各種相應的變化和變形,這些變化和變形均應收錄
在本發(fā)明的權利要求的保護范圍之內。
解決方案:NLP之文本匹配及語(yǔ)義匹配應用介紹

Pytorch-based Chinese semantic similarity matching model Pytorch-based Chinese semantic similarity matching model 本項目會(huì )持續更新,對比目前業(yè)界主流的中文文本匹配模型。運行環(huán)境:python3.7、pytorch1.2、transformers2.5.1 數據集使用LCQMC數據(對一個(gè)句子對進(jìn)行分類(lèi),判斷兩個(gè)句子的語(yǔ)義是否相同(兩個(gè)分類(lèi)任務(wù)))。因為懷疑數據,所以不提供下載。有需要的可以向官方提交數據申請,解壓數據。到數據文件夾。模型評價(jià)指標有:ACC、AUC和預測總耗時(shí)。Embedding:本項目的輸入統一采用分詞策略,所以通過(guò)維基百科中文語(yǔ)料庫,詞向量被訓練為嵌入。訓練語(yǔ)料、向量模型和詞匯可通過(guò)百度網(wǎng)盤(pán)下載。鏈接: : 提取碼:s830 模型文件:本項目訓練的模型文件(不一定是最優(yōu)的,可以通過(guò)超參繼續調優(yōu)),或者通過(guò)網(wǎng)盤(pán)下載。鏈接:: 提取碼:s830測試集結果對比:模型ACC AUC耗時(shí)(s
解決方案:百度號稱(chēng)人臉識別算法國內第一?安防廠(chǎng)商表示不服...
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 115 次瀏覽 ? 2022-11-27 09:41
1月20日晚,萬(wàn)眾矚目的“人機大戰”在《最強大腦》的舞臺上演。最終的結果是,百度的人工智能機器人“小度”戰勝了“水哥”王玉衡。游戲規則是兩名玩家同時(shí)觀(guān)察3個(gè)人的模糊影像,然后從30人中找出將要被選中的3人。然而節目一播出,就遭到不少網(wǎng)友的質(zhì)疑,“黑幕”、“百度公關(guān)廣告”之聲甚囂塵上。即使魏醫生和王禹衡澄清直播中沒(méi)有黑幕,也依然無(wú)法打消網(wǎng)友的疑慮。
視頻數據顯示,人們戴著(zhù)口罩和帽子,周?chē)饩€(xiàn)昏暗
也是人機大戰,也是機器打敗人類(lèi)。為什么AlphaGo在世界上取得了震撼的效果,小度卻不斷被質(zhì)疑?一個(gè)重要的原因是廣播方式不同。即使有科學(xué)屬性,《最強大腦》也只是一檔綜藝節目,經(jīng)過(guò)后期制作,播放效果遠沒(méi)有直播帶來(lái)的震撼和真實(shí)。
事實(shí)如何我們不得而知,這也不是我們今天討論的重點(diǎn)(有興趣的朋友可以上網(wǎng)搜索,網(wǎng)友和百度都給出了相關(guān)解釋?zhuān)?。今天我們要說(shuō)的是,百度號稱(chēng)是國內人臉識別算法第一。有效依據是什么?并且,在安防領(lǐng)域,人臉識別技術(shù)到底走到了多遠。
1個(gè)
LFW 和 FDDB 排名有意義嗎?
相信研究過(guò)人臉識別算法的同學(xué)對LFW和FDDB也有一定的了解。LFW(Labeled Faces in the Wild)和FDDB(Face Detection Data Set and Benchmark)是全球權威的人臉識別檢測平臺。做人臉識別算法的公司或多或少都會(huì )用到LFW和FDDB做檢測。
LFW 數據庫共有 5749 個(gè)人的 13233 張圖像,其中 1680 個(gè)人有兩張或更多圖像,4069 個(gè)人只有一張圖像。FDDB和LFW一樣,是馬薩諸塞大學(xué)的人臉數據庫。收錄
2845張圖片,共5171張人臉作為測試集。測試集的范圍包括:不同姿勢、不同分辨率、旋轉和遮擋的圖片。
百度號稱(chēng)人臉識別算法第一,因為2015年百度在LFW上的準確率達到了99.77%,排名第一。2016年,小米和大華分別獲得了FDDB和LFW數據集的第一名。
LFW和FDDB的權威性毋庸置疑,但值得說(shuō)明的是,由于LFW和FDDB的樣本是固定的,相當于一場(chǎng)考試。您已經(jīng)知道這些問(wèn)題,然后不斷改進(jìn)您的答案。這種計分意義不大。
2個(gè)
人臉識別在安防領(lǐng)域有多厲害
當我們談?wù)撊四樧R別時(shí),會(huì )出現兩個(gè)常見(jiàn)且重要的概念,即 1:1 和 1:N。
簡(jiǎn)單來(lái)說(shuō),1:1就是一對一的人臉“核對”,解決的是“這個(gè)人是你嗎?”的問(wèn)題。1:N是從眾多對象中找出目標人物,解決“這個(gè)人是誰(shuí)”的問(wèn)題。
人臉識別考勤、安檢時(shí)的身份驗證等應用,都是1:1概念下的人臉識別應用。
1:N更多的用在安防行業(yè),比如在人多的地方安裝人臉識別防控系統。它與1:1最大的區別是1:N采集的是動(dòng)態(tài)數據,會(huì )根據位置、環(huán)境、光線(xiàn)等不同影響識別的準確性和效果。
一個(gè)基本的人臉識別布控系統將具備以下功能:
(1)人臉抓拍追蹤功能
人臉抓拍是指在一張圖片或一幀視頻流中檢測到人,并將人從背景中分離出來(lái),并自動(dòng)保存。人像追蹤是指利用人像抓拍技術(shù),在指定人像在相機抓拍范圍內移動(dòng)時(shí)自動(dòng)進(jìn)行跟蹤。
(2)人臉識別計算
人臉識別分為驗證型和搜索型兩種比對計算方式。驗證方法是指將拍攝的人像或指定的人像與數據庫中注冊的對象進(jìn)行比對,判斷是否為同一人。搜索式比對是指搜索數據庫中所有已注冊的人像,查找是否存在指定的人像。
(3) 人臉的建模與檢索
可以對注冊的人像數據進(jìn)行建模,提取人臉特征,生成的人臉模板保存在數據庫中。在進(jìn)行人臉搜索時(shí),對指定的人像進(jìn)行建模,然后與數據庫中所有人的模板進(jìn)行比對識別,最后根據比對的相似度值列出最相似的人物列表。
因此,數據成為提高人臉識別算法性能的關(guān)鍵因素。許多應用更關(guān)注低誤報條件下的識別性能。比如刷臉支付需要將錯誤接受率控制在0.00001以?xún)?,所以未?lái)的算法改進(jìn)也會(huì )著(zhù)重于提高低誤報的識別率。對于安防監控,可能需要控制在0.00000001以?xún)龋ū热鐜资f(wàn)人的登記庫),安防領(lǐng)域的人臉識別技術(shù)更具挑戰性。
隨著(zhù)深度學(xué)習的演進(jìn),基于深度學(xué)習的人臉識別將取得突破性進(jìn)展。它所需要的只是越來(lái)越多的數據和樣本。數據和樣本越多,重復訓練的次數越多,就越容易捕捉到準確的結果,給你準確的答案。因此,當一套人臉識別系統設備全面引入深度學(xué)習算法后,幾乎完美解決了以往長(cháng)期存在的各種變化。
但即便如此,人臉識別技術(shù)仍面臨實(shí)際應用等諸多挑戰。如何在各種復雜場(chǎng)景下成功應用,還需要眾多安防廠(chǎng)商的共同努力。
解決方案:超智能的AI偽原創(chuàng )工具是?
不知道大家有沒(méi)有注意到,大家在網(wǎng)上看到的偽原創(chuàng )工具,大多只是用于偽原創(chuàng )文章。不過(guò)今天要分享的智能AI文章偽原創(chuàng )工具,不僅可以用于文章偽原創(chuàng ),還可以搜索文章。網(wǎng)上這種智能AI偽原創(chuàng )工具的文章應該不多,至少我沒(méi)見(jiàn)過(guò)多少,所以今天想把這個(gè)好東西分享給大家,讓大家有更便捷的工作方式。就是這款智能偽原創(chuàng )AI軟件優(yōu)采云
,你只需要在優(yōu)采云
的全網(wǎng)素材中搜索一篇你想寫(xiě)的文章,系統就會(huì )對整篇文章進(jìn)行語(yǔ)義分析軟文文字實(shí)現智能偽造原創(chuàng ),您可以重新創(chuàng )建一篇新文章。應該只需要正常時(shí)間的四分之一,節省大量時(shí)間。
我們以前在網(wǎng)上找的工具有:搜索文章和偽原創(chuàng )文章是兩種不同的工具。但是想要得到偽原創(chuàng )文章,首先要采集
文章,然后再找一個(gè)可用的偽原創(chuàng )工具對偽原創(chuàng )文章進(jìn)行處理。也就是說(shuō),如果你想對采集
文章做偽原創(chuàng )處理,但是又沒(méi)有好的工具,只能直接使用采集
文章。但這往往是無(wú)效的,發(fā)出文章收錄的效果并不好。
所以最好的辦法是:搜索到的文章可以同時(shí)偽原創(chuàng )。如今,隨著(zhù)大家需求的不斷涌現,網(wǎng)絡(luò )上誕生了那種采集
偽原創(chuàng )的工具,也就是今天要說(shuō)的智能AI文章偽原創(chuàng )工具。有了這樣一款智能的AI文章偽原創(chuàng )工具,大家解決文章搜索和文章偽原創(chuàng )問(wèn)題就方便多了。行動(dòng)不如心動(dòng),趕緊百度一下。 查看全部
解決方案:百度號稱(chēng)人臉識別算法國內第一?安防廠(chǎng)商表示不服...
1月20日晚,萬(wàn)眾矚目的“人機大戰”在《最強大腦》的舞臺上演。最終的結果是,百度的人工智能機器人“小度”戰勝了“水哥”王玉衡。游戲規則是兩名玩家同時(shí)觀(guān)察3個(gè)人的模糊影像,然后從30人中找出將要被選中的3人。然而節目一播出,就遭到不少網(wǎng)友的質(zhì)疑,“黑幕”、“百度公關(guān)廣告”之聲甚囂塵上。即使魏醫生和王禹衡澄清直播中沒(méi)有黑幕,也依然無(wú)法打消網(wǎng)友的疑慮。
視頻數據顯示,人們戴著(zhù)口罩和帽子,周?chē)饩€(xiàn)昏暗
也是人機大戰,也是機器打敗人類(lèi)。為什么AlphaGo在世界上取得了震撼的效果,小度卻不斷被質(zhì)疑?一個(gè)重要的原因是廣播方式不同。即使有科學(xué)屬性,《最強大腦》也只是一檔綜藝節目,經(jīng)過(guò)后期制作,播放效果遠沒(méi)有直播帶來(lái)的震撼和真實(shí)。
事實(shí)如何我們不得而知,這也不是我們今天討論的重點(diǎn)(有興趣的朋友可以上網(wǎng)搜索,網(wǎng)友和百度都給出了相關(guān)解釋?zhuān)?。今天我們要說(shuō)的是,百度號稱(chēng)是國內人臉識別算法第一。有效依據是什么?并且,在安防領(lǐng)域,人臉識別技術(shù)到底走到了多遠。
1個(gè)
LFW 和 FDDB 排名有意義嗎?
相信研究過(guò)人臉識別算法的同學(xué)對LFW和FDDB也有一定的了解。LFW(Labeled Faces in the Wild)和FDDB(Face Detection Data Set and Benchmark)是全球權威的人臉識別檢測平臺。做人臉識別算法的公司或多或少都會(huì )用到LFW和FDDB做檢測。
LFW 數據庫共有 5749 個(gè)人的 13233 張圖像,其中 1680 個(gè)人有兩張或更多圖像,4069 個(gè)人只有一張圖像。FDDB和LFW一樣,是馬薩諸塞大學(xué)的人臉數據庫。收錄
2845張圖片,共5171張人臉作為測試集。測試集的范圍包括:不同姿勢、不同分辨率、旋轉和遮擋的圖片。

百度號稱(chēng)人臉識別算法第一,因為2015年百度在LFW上的準確率達到了99.77%,排名第一。2016年,小米和大華分別獲得了FDDB和LFW數據集的第一名。
LFW和FDDB的權威性毋庸置疑,但值得說(shuō)明的是,由于LFW和FDDB的樣本是固定的,相當于一場(chǎng)考試。您已經(jīng)知道這些問(wèn)題,然后不斷改進(jìn)您的答案。這種計分意義不大。
2個(gè)
人臉識別在安防領(lǐng)域有多厲害
當我們談?wù)撊四樧R別時(shí),會(huì )出現兩個(gè)常見(jiàn)且重要的概念,即 1:1 和 1:N。
簡(jiǎn)單來(lái)說(shuō),1:1就是一對一的人臉“核對”,解決的是“這個(gè)人是你嗎?”的問(wèn)題。1:N是從眾多對象中找出目標人物,解決“這個(gè)人是誰(shuí)”的問(wèn)題。
人臉識別考勤、安檢時(shí)的身份驗證等應用,都是1:1概念下的人臉識別應用。
1:N更多的用在安防行業(yè),比如在人多的地方安裝人臉識別防控系統。它與1:1最大的區別是1:N采集的是動(dòng)態(tài)數據,會(huì )根據位置、環(huán)境、光線(xiàn)等不同影響識別的準確性和效果。
一個(gè)基本的人臉識別布控系統將具備以下功能:

(1)人臉抓拍追蹤功能
人臉抓拍是指在一張圖片或一幀視頻流中檢測到人,并將人從背景中分離出來(lái),并自動(dòng)保存。人像追蹤是指利用人像抓拍技術(shù),在指定人像在相機抓拍范圍內移動(dòng)時(shí)自動(dòng)進(jìn)行跟蹤。
(2)人臉識別計算
人臉識別分為驗證型和搜索型兩種比對計算方式。驗證方法是指將拍攝的人像或指定的人像與數據庫中注冊的對象進(jìn)行比對,判斷是否為同一人。搜索式比對是指搜索數據庫中所有已注冊的人像,查找是否存在指定的人像。
(3) 人臉的建模與檢索
可以對注冊的人像數據進(jìn)行建模,提取人臉特征,生成的人臉模板保存在數據庫中。在進(jìn)行人臉搜索時(shí),對指定的人像進(jìn)行建模,然后與數據庫中所有人的模板進(jìn)行比對識別,最后根據比對的相似度值列出最相似的人物列表。
因此,數據成為提高人臉識別算法性能的關(guān)鍵因素。許多應用更關(guān)注低誤報條件下的識別性能。比如刷臉支付需要將錯誤接受率控制在0.00001以?xún)?,所以未?lái)的算法改進(jìn)也會(huì )著(zhù)重于提高低誤報的識別率。對于安防監控,可能需要控制在0.00000001以?xún)龋ū热鐜资f(wàn)人的登記庫),安防領(lǐng)域的人臉識別技術(shù)更具挑戰性。
隨著(zhù)深度學(xué)習的演進(jìn),基于深度學(xué)習的人臉識別將取得突破性進(jìn)展。它所需要的只是越來(lái)越多的數據和樣本。數據和樣本越多,重復訓練的次數越多,就越容易捕捉到準確的結果,給你準確的答案。因此,當一套人臉識別系統設備全面引入深度學(xué)習算法后,幾乎完美解決了以往長(cháng)期存在的各種變化。
但即便如此,人臉識別技術(shù)仍面臨實(shí)際應用等諸多挑戰。如何在各種復雜場(chǎng)景下成功應用,還需要眾多安防廠(chǎng)商的共同努力。
解決方案:超智能的AI偽原創(chuàng )工具是?
不知道大家有沒(méi)有注意到,大家在網(wǎng)上看到的偽原創(chuàng )工具,大多只是用于偽原創(chuàng )文章。不過(guò)今天要分享的智能AI文章偽原創(chuàng )工具,不僅可以用于文章偽原創(chuàng ),還可以搜索文章。網(wǎng)上這種智能AI偽原創(chuàng )工具的文章應該不多,至少我沒(méi)見(jiàn)過(guò)多少,所以今天想把這個(gè)好東西分享給大家,讓大家有更便捷的工作方式。就是這款智能偽原創(chuàng )AI軟件優(yōu)采云
,你只需要在優(yōu)采云
的全網(wǎng)素材中搜索一篇你想寫(xiě)的文章,系統就會(huì )對整篇文章進(jìn)行語(yǔ)義分析軟文文字實(shí)現智能偽造原創(chuàng ),您可以重新創(chuàng )建一篇新文章。應該只需要正常時(shí)間的四分之一,節省大量時(shí)間。

我們以前在網(wǎng)上找的工具有:搜索文章和偽原創(chuàng )文章是兩種不同的工具。但是想要得到偽原創(chuàng )文章,首先要采集
文章,然后再找一個(gè)可用的偽原創(chuàng )工具對偽原創(chuàng )文章進(jìn)行處理。也就是說(shuō),如果你想對采集
文章做偽原創(chuàng )處理,但是又沒(méi)有好的工具,只能直接使用采集
文章。但這往往是無(wú)效的,發(fā)出文章收錄的效果并不好。

所以最好的辦法是:搜索到的文章可以同時(shí)偽原創(chuàng )。如今,隨著(zhù)大家需求的不斷涌現,網(wǎng)絡(luò )上誕生了那種采集
偽原創(chuàng )的工具,也就是今天要說(shuō)的智能AI文章偽原創(chuàng )工具。有了這樣一款智能的AI文章偽原創(chuàng )工具,大家解決文章搜索和文章偽原創(chuàng )問(wèn)題就方便多了。行動(dòng)不如心動(dòng),趕緊百度一下。
總結:自動(dòng)機器學(xué)習綜述
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 64 次瀏覽 ? 2022-11-26 21:25
自動(dòng)化機器學(xué)習概述
自計算機時(shí)代開(kāi)始以來(lái),科學(xué)家和工程師就一直在思考如何像人類(lèi)一樣為計算機注入學(xué)習能力。艾倫·圖靈(Alan Turing)是最早提出智能理論的科學(xué)家之一,該理論設想有一天計算機可以達到與人類(lèi)相同的智能水平。從那時(shí)起,機器學(xué)習領(lǐng)域發(fā)生了一系列巨大的飛躍。我們已經(jīng)看到機器學(xué)習在許多情況下?lián)魯』蛑辽倨ヅ涮囟ǖ娜祟?lèi)認知能力,例如在ResNet,深度殘差網(wǎng)絡(luò )架構或微軟的語(yǔ)音轉錄系統幾乎達到人類(lèi)水平的情況下,在圖像識別方面超越人類(lèi)的表現。
機器學(xué)習的好處:機器學(xué)習的最大好處之一是它可以應用于人類(lèi)今天面臨的幾乎所有問(wèn)題。然而,有了這些好處,也存在一些挑戰。
痛點(diǎn):機器學(xué)習算法需要針對每個(gè)不同的現實(shí)場(chǎng)景進(jìn)行配置和優(yōu)化。這使得手工工作非常密集,并且需要監督開(kāi)發(fā)的人員花費大量時(shí)間。這種手動(dòng)過(guò)程也容易出錯、效率低下且難以管理。更不用說(shuō)缺乏配置和優(yōu)化不同類(lèi)型算法的專(zhuān)業(yè)知識。自動(dòng)化
機器學(xué)習:如果配置、調優(yōu)和模型選擇是自動(dòng)化的,則部署過(guò)程更加高效,人們可以專(zhuān)注于更重要的任務(wù),例如模型可解釋性、道德規范和業(yè)務(wù)成果。因此,機器學(xué)習模型構建過(guò)程的自動(dòng)化具有重要的現實(shí)意義。
轉到自動(dòng)化機器學(xué)習
注意:在自動(dòng)化機器學(xué)習的定義中,包括:
這篇文章將探討目前可用于上述每個(gè)自動(dòng)化流程的框架,以幫助讀者了解當今自動(dòng)化機器學(xué)習的可能性。在探索每個(gè)過(guò)程之前,讓我們簡(jiǎn)要討論端到端機器學(xué)習過(guò)程,并指出每個(gè)過(guò)程在該過(guò)程中發(fā)生的位置。
從上圖中可以清楚地看出,機器學(xué)習過(guò)程不僅僅包括建模階段。它還包括問(wèn)題定義、數據采集
和部署。這篇博文的重點(diǎn)仍將放在“建?!焙汀安渴稹彪A段。這就是我們想要從自動(dòng)化角度探索的內容。如果建模和部署階段可以自動(dòng)化,專(zhuān)家可以更多地關(guān)注問(wèn)題定義、數據理解、遵守道德標準,并確保部署的模型在不引發(fā)任何道德問(wèn)題的情況下為業(yè)務(wù)生成有影響力的見(jiàn)解。
對于建模和部署階段的每個(gè)部分,我們將探索來(lái)自開(kāi)源社區、谷歌、微軟和亞馬遜等供應商以及其他參與者的框架。
自動(dòng)特征工程
通常,機器學(xué)習算法的良好性能在很大程度上取決于模型使用的特征的質(zhì)量。對于數據科學(xué)家來(lái)說(shuō),特征工程是一項非常手動(dòng)和勞動(dòng)密集型的任務(wù),涉及大量的試錯、深厚的領(lǐng)域知識,以及(目前)機器不擅長(cháng)的東西:直覺(jué)。自動(dòng)化特征工程的目的是迭代地創(chuàng )建新的特征集,直到 ML 模型達到令人滿(mǎn)意的準確性分數?,F在讓我們構建我們試圖自動(dòng)化的過(guò)程。
功能工程過(guò)程通常是這樣的:例如,從電子商務(wù)網(wǎng)站采集
有關(guān)客戶(hù)行為的數據集。作為數據科學(xué)家,如果您的數據中還沒(méi)有新功能,您通常會(huì )喜歡創(chuàng )建新功能,例如
目的是創(chuàng )建一種算法,從數據自動(dòng)生成或合成這些類(lèi)型的特征?,F在我們將列出并簡(jiǎn)要描述一些自動(dòng)化特征工程的框架。請注意,在稱(chēng)為深度學(xué)習的特殊形式的機器學(xué)習中,通常通過(guò)深度學(xué)習模型層中的多個(gè)矩陣轉換自動(dòng)從圖像、文本和視頻中提取特征。我們在這篇文章中討論的特征工程類(lèi)型主要涉及結構化事務(wù)和關(guān)系數據集,盡管我們還將簡(jiǎn)要討論深度學(xué)習中的特征工程。
框架:
自動(dòng)化特征工程仍然是一項艱巨的任務(wù)。還有很多爭論不支持自動(dòng)化特征工程,因為它會(huì )產(chǎn)生不正確的結果或以不透明的方式使用錯誤標簽對觀(guān)察進(jìn)行分類(lèi)。因此,需要謹慎對待自動(dòng)化特征工程,尤其是在金融服務(wù)等高度監管的環(huán)境中,其中可解釋性和可解釋性在每個(gè)決策過(guò)程中都至關(guān)重要。
自動(dòng)模型選擇和超參數調整
一旦功能
經(jīng)過(guò)預處理后,您需要找到一種機器學(xué)習算法來(lái)訓練這些特征并能夠預測新觀(guān)測值的目標值。與功能工程不同,模型選擇具有豐富的選擇和選項。有聚類(lèi)模型、分類(lèi)和回歸模型、基于神經(jīng)網(wǎng)絡(luò )的模型、基于關(guān)聯(lián)規則的模型等。每種算法都應用于某一類(lèi)問(wèn)題和自動(dòng)模型選擇 對于該模型,我們可以過(guò)濾所有適合特定任務(wù)的模型的空間,選擇產(chǎn)生最高精度(例如最低AIC)或最低誤碼率(例如RMSE)的模型??梢岳斫獾氖?,沒(méi)有機器學(xué)習算法在所有數據集上表現最佳(無(wú)免費午餐理論),有些算法需要超參數調優(yōu)。事實(shí)上,在選擇模型時(shí),我們傾向于嘗試不同的變量、不同的系數或不同的超參數。在回歸問(wèn)題中,有一種方法可以使用 F 檢驗、t 檢驗、ajdusted R 平方等技術(shù)自動(dòng)選擇最終模型中使用的預測變量。這種方法稱(chēng)為逐步回歸。但這種方法很容易出錯。
自動(dòng)選擇模型的框架:
神經(jīng)網(wǎng)絡(luò )結構選擇
在機器學(xué)習領(lǐng)域,最繁瑣的任務(wù)之一是設計和構建神經(jīng)網(wǎng)絡(luò )架構。通常,人們花費數小時(shí)或數天的時(shí)間嘗試使用不同的超參數迭代不同的神經(jīng)網(wǎng)絡(luò )架構,以?xún)?yōu)化手頭任務(wù)的目標函數。這既耗時(shí)又容易出錯。谷歌引入了使用進(jìn)化算法和強化學(xué)習來(lái)實(shí)現神經(jīng)網(wǎng)絡(luò )搜索的想法,以設計和找到最佳的神經(jīng)網(wǎng)絡(luò )結構。從本質(zhì)上講,這是訓練創(chuàng )建一個(gè)層,然后堆疊這些層以創(chuàng )建深度神經(jīng)網(wǎng)絡(luò )架構。近年來(lái),該領(lǐng)域的研究引起了很多關(guān)注,并提出了許多研究論文。以下是該領(lǐng)域所有研究論文的最新列表: 值得注意的研究論文是:
自動(dòng)化部署
機器學(xué)習的大部分注意力
社區專(zhuān)注于學(xué)習算法的開(kāi)發(fā),而不是端到端機器學(xué)習過(guò)程中最重要的部分,即ML模型的部署和商業(yè)化。將機器學(xué)習模型部署到生產(chǎn)環(huán)境存在許多固有的挑戰。
有些公司和開(kāi)源項目正試圖自動(dòng)化這一過(guò)程,并最大限度地減少數據科學(xué)家的痛苦,因為他們不一定具備DevOps技能。以下是在該領(lǐng)域工作的框架和公司列表:
引用:
[1] J. M. Kanter 和 K. Veeramachaneni,“深度特征合成:邁向自動(dòng)化數據科學(xué)工作”,IEEE 國際數據科學(xué)與高級分析會(huì )議,2015 年,第 1-10 頁(yè)。
[2] 自動(dòng)選型的危險 /743/自動(dòng)選型的危險/
[3] 查找數據中的重要變量 /603/變量重要性/
攝影:Rafael Zamoraon Unsplash
解決方案:自動(dòng)網(wǎng)站seo診斷_是否可靠?
我們在做SEO的過(guò)程中,需要不斷管理網(wǎng)站,其實(shí)這是在網(wǎng)站的診斷上,有時(shí)候
因為網(wǎng)站排名的問(wèn)題,有時(shí)候也是定期診斷,防止預防的需要,而這些操作,可以算作自動(dòng)網(wǎng)站SEO診斷方法,我們經(jīng)常自己做,而且是補充工具,但有時(shí)候,我們也在想,網(wǎng)站SEO自動(dòng)診斷靠譜嗎?
1. 常用的網(wǎng)站SEO自動(dòng)診斷工具有哪些常用
的網(wǎng)站SEO自動(dòng)診斷工具有很多,主要是根據SEOER的使用習慣,所以我們就只講解一些常用的類(lèi)型:
?。?)百度診所站百度
推出百度診所入口,我們
只需要搜索百度診所就可以登錄,就可以顯示網(wǎng)站的各種公開(kāi)信息,包括:瀏覽器性能、網(wǎng)站證書(shū)信息、網(wǎng)站安全信息等,通過(guò)這些信息我們可以大致判斷網(wǎng)站的健康狀況,當然還有很多類(lèi)似的免費或付費的自動(dòng)網(wǎng)站SEO診斷工具, 但是我們還是推薦百度診斷站,畢竟老師出門(mén),信息會(huì )更準確。
?。?)資源平臺
比較權威的也是一個(gè)資源平臺,在其中我們可以診斷網(wǎng)站最近的抓取、收錄、關(guān)鍵詞排名等數據,這個(gè)數據我們認為是可信的,我們做網(wǎng)站SEO自動(dòng)診斷,不僅可以?xún)H限于方便,還可以追求數據的準確性。
?。?) 統計工具
做網(wǎng)站SEO自動(dòng)診斷也可以從數據入手,通過(guò)網(wǎng)站統計來(lái)
做診斷,常用的工具有:站長(cháng)統計、51拉統計、百度統計等,通過(guò)工具更新數據我們可以分析網(wǎng)站流量相關(guān)信息。
?。?) 查詢(xún)工具
SEO查詢(xún)工具很多,一般常用:站長(cháng)首頁(yè)、愛(ài)站工具、5118等,
這些工具各有優(yōu)勢,如:站長(cháng)首頁(yè)權威、愛(ài)站工具信任、5118數據全面,因此我們建議大家全面使用,然后再做出判斷。
以上只是我們常用的自動(dòng)網(wǎng)站SEO診斷工具,那么這些工具靠譜嗎?
2.網(wǎng)站SEO自動(dòng)診斷是否可靠
要討論自動(dòng)網(wǎng)站SEO診斷是否可靠,我們還需要澄清一個(gè)問(wèn)題,我們網(wǎng)站診斷的目的是什么,如果只是常規診斷,
我們認為以上工具完全可以滿(mǎn)足我們的需求,而且仍然是免費的,但如果是診斷網(wǎng)站排名,選擇上述工具只能說(shuō)有幫助,并不能有明顯的改善,就好像你只有儀器而沒(méi)有醫生,不能完全治療疑難雜癥, 所以我們必須對網(wǎng)站進(jìn)行深入診斷 你不能選擇聲稱(chēng)可以自動(dòng)進(jìn)行網(wǎng)站診斷的工具,而且這些工具中的大多數都是收費的。SEO診斷
是一項思考和體驗的工作,不是自動(dòng)網(wǎng)站SEO診斷就能做的事,所以做網(wǎng)站診斷還是尋求人工診斷。
總結:網(wǎng)站SEO自動(dòng)診斷,是否是靠譜的問(wèn)題,我們這里討論一下,以上內容,僅供參考。 查看全部
總結:自動(dòng)機器學(xué)習綜述
自動(dòng)化機器學(xué)習概述
自計算機時(shí)代開(kāi)始以來(lái),科學(xué)家和工程師就一直在思考如何像人類(lèi)一樣為計算機注入學(xué)習能力。艾倫·圖靈(Alan Turing)是最早提出智能理論的科學(xué)家之一,該理論設想有一天計算機可以達到與人類(lèi)相同的智能水平。從那時(shí)起,機器學(xué)習領(lǐng)域發(fā)生了一系列巨大的飛躍。我們已經(jīng)看到機器學(xué)習在許多情況下?lián)魯』蛑辽倨ヅ涮囟ǖ娜祟?lèi)認知能力,例如在ResNet,深度殘差網(wǎng)絡(luò )架構或微軟的語(yǔ)音轉錄系統幾乎達到人類(lèi)水平的情況下,在圖像識別方面超越人類(lèi)的表現。
機器學(xué)習的好處:機器學(xué)習的最大好處之一是它可以應用于人類(lèi)今天面臨的幾乎所有問(wèn)題。然而,有了這些好處,也存在一些挑戰。
痛點(diǎn):機器學(xué)習算法需要針對每個(gè)不同的現實(shí)場(chǎng)景進(jìn)行配置和優(yōu)化。這使得手工工作非常密集,并且需要監督開(kāi)發(fā)的人員花費大量時(shí)間。這種手動(dòng)過(guò)程也容易出錯、效率低下且難以管理。更不用說(shuō)缺乏配置和優(yōu)化不同類(lèi)型算法的專(zhuān)業(yè)知識。自動(dòng)化
機器學(xué)習:如果配置、調優(yōu)和模型選擇是自動(dòng)化的,則部署過(guò)程更加高效,人們可以專(zhuān)注于更重要的任務(wù),例如模型可解釋性、道德規范和業(yè)務(wù)成果。因此,機器學(xué)習模型構建過(guò)程的自動(dòng)化具有重要的現實(shí)意義。
轉到自動(dòng)化機器學(xué)習
注意:在自動(dòng)化機器學(xué)習的定義中,包括:
這篇文章將探討目前可用于上述每個(gè)自動(dòng)化流程的框架,以幫助讀者了解當今自動(dòng)化機器學(xué)習的可能性。在探索每個(gè)過(guò)程之前,讓我們簡(jiǎn)要討論端到端機器學(xué)習過(guò)程,并指出每個(gè)過(guò)程在該過(guò)程中發(fā)生的位置。
從上圖中可以清楚地看出,機器學(xué)習過(guò)程不僅僅包括建模階段。它還包括問(wèn)題定義、數據采集
和部署。這篇博文的重點(diǎn)仍將放在“建?!焙汀安渴稹彪A段。這就是我們想要從自動(dòng)化角度探索的內容。如果建模和部署階段可以自動(dòng)化,專(zhuān)家可以更多地關(guān)注問(wèn)題定義、數據理解、遵守道德標準,并確保部署的模型在不引發(fā)任何道德問(wèn)題的情況下為業(yè)務(wù)生成有影響力的見(jiàn)解。
對于建模和部署階段的每個(gè)部分,我們將探索來(lái)自開(kāi)源社區、谷歌、微軟和亞馬遜等供應商以及其他參與者的框架。
自動(dòng)特征工程

通常,機器學(xué)習算法的良好性能在很大程度上取決于模型使用的特征的質(zhì)量。對于數據科學(xué)家來(lái)說(shuō),特征工程是一項非常手動(dòng)和勞動(dòng)密集型的任務(wù),涉及大量的試錯、深厚的領(lǐng)域知識,以及(目前)機器不擅長(cháng)的東西:直覺(jué)。自動(dòng)化特征工程的目的是迭代地創(chuàng )建新的特征集,直到 ML 模型達到令人滿(mǎn)意的準確性分數?,F在讓我們構建我們試圖自動(dòng)化的過(guò)程。
功能工程過(guò)程通常是這樣的:例如,從電子商務(wù)網(wǎng)站采集
有關(guān)客戶(hù)行為的數據集。作為數據科學(xué)家,如果您的數據中還沒(méi)有新功能,您通常會(huì )喜歡創(chuàng )建新功能,例如
目的是創(chuàng )建一種算法,從數據自動(dòng)生成或合成這些類(lèi)型的特征?,F在我們將列出并簡(jiǎn)要描述一些自動(dòng)化特征工程的框架。請注意,在稱(chēng)為深度學(xué)習的特殊形式的機器學(xué)習中,通常通過(guò)深度學(xué)習模型層中的多個(gè)矩陣轉換自動(dòng)從圖像、文本和視頻中提取特征。我們在這篇文章中討論的特征工程類(lèi)型主要涉及結構化事務(wù)和關(guān)系數據集,盡管我們還將簡(jiǎn)要討論深度學(xué)習中的特征工程。
框架:
自動(dòng)化特征工程仍然是一項艱巨的任務(wù)。還有很多爭論不支持自動(dòng)化特征工程,因為它會(huì )產(chǎn)生不正確的結果或以不透明的方式使用錯誤標簽對觀(guān)察進(jìn)行分類(lèi)。因此,需要謹慎對待自動(dòng)化特征工程,尤其是在金融服務(wù)等高度監管的環(huán)境中,其中可解釋性和可解釋性在每個(gè)決策過(guò)程中都至關(guān)重要。
自動(dòng)模型選擇和超參數調整
一旦功能
經(jīng)過(guò)預處理后,您需要找到一種機器學(xué)習算法來(lái)訓練這些特征并能夠預測新觀(guān)測值的目標值。與功能工程不同,模型選擇具有豐富的選擇和選項。有聚類(lèi)模型、分類(lèi)和回歸模型、基于神經(jīng)網(wǎng)絡(luò )的模型、基于關(guān)聯(lián)規則的模型等。每種算法都應用于某一類(lèi)問(wèn)題和自動(dòng)模型選擇 對于該模型,我們可以過(guò)濾所有適合特定任務(wù)的模型的空間,選擇產(chǎn)生最高精度(例如最低AIC)或最低誤碼率(例如RMSE)的模型??梢岳斫獾氖?,沒(méi)有機器學(xué)習算法在所有數據集上表現最佳(無(wú)免費午餐理論),有些算法需要超參數調優(yōu)。事實(shí)上,在選擇模型時(shí),我們傾向于嘗試不同的變量、不同的系數或不同的超參數。在回歸問(wèn)題中,有一種方法可以使用 F 檢驗、t 檢驗、ajdusted R 平方等技術(shù)自動(dòng)選擇最終模型中使用的預測變量。這種方法稱(chēng)為逐步回歸。但這種方法很容易出錯。
自動(dòng)選擇模型的框架:

神經(jīng)網(wǎng)絡(luò )結構選擇
在機器學(xué)習領(lǐng)域,最繁瑣的任務(wù)之一是設計和構建神經(jīng)網(wǎng)絡(luò )架構。通常,人們花費數小時(shí)或數天的時(shí)間嘗試使用不同的超參數迭代不同的神經(jīng)網(wǎng)絡(luò )架構,以?xún)?yōu)化手頭任務(wù)的目標函數。這既耗時(shí)又容易出錯。谷歌引入了使用進(jìn)化算法和強化學(xué)習來(lái)實(shí)現神經(jīng)網(wǎng)絡(luò )搜索的想法,以設計和找到最佳的神經(jīng)網(wǎng)絡(luò )結構。從本質(zhì)上講,這是訓練創(chuàng )建一個(gè)層,然后堆疊這些層以創(chuàng )建深度神經(jīng)網(wǎng)絡(luò )架構。近年來(lái),該領(lǐng)域的研究引起了很多關(guān)注,并提出了許多研究論文。以下是該領(lǐng)域所有研究論文的最新列表: 值得注意的研究論文是:
自動(dòng)化部署
機器學(xué)習的大部分注意力
社區專(zhuān)注于學(xué)習算法的開(kāi)發(fā),而不是端到端機器學(xué)習過(guò)程中最重要的部分,即ML模型的部署和商業(yè)化。將機器學(xué)習模型部署到生產(chǎn)環(huán)境存在許多固有的挑戰。
有些公司和開(kāi)源項目正試圖自動(dòng)化這一過(guò)程,并最大限度地減少數據科學(xué)家的痛苦,因為他們不一定具備DevOps技能。以下是在該領(lǐng)域工作的框架和公司列表:
引用:
[1] J. M. Kanter 和 K. Veeramachaneni,“深度特征合成:邁向自動(dòng)化數據科學(xué)工作”,IEEE 國際數據科學(xué)與高級分析會(huì )議,2015 年,第 1-10 頁(yè)。
[2] 自動(dòng)選型的危險 /743/自動(dòng)選型的危險/
[3] 查找數據中的重要變量 /603/變量重要性/
攝影:Rafael Zamoraon Unsplash
解決方案:自動(dòng)網(wǎng)站seo診斷_是否可靠?
我們在做SEO的過(guò)程中,需要不斷管理網(wǎng)站,其實(shí)這是在網(wǎng)站的診斷上,有時(shí)候
因為網(wǎng)站排名的問(wèn)題,有時(shí)候也是定期診斷,防止預防的需要,而這些操作,可以算作自動(dòng)網(wǎng)站SEO診斷方法,我們經(jīng)常自己做,而且是補充工具,但有時(shí)候,我們也在想,網(wǎng)站SEO自動(dòng)診斷靠譜嗎?
1. 常用的網(wǎng)站SEO自動(dòng)診斷工具有哪些常用
的網(wǎng)站SEO自動(dòng)診斷工具有很多,主要是根據SEOER的使用習慣,所以我們就只講解一些常用的類(lèi)型:
?。?)百度診所站百度
推出百度診所入口,我們
只需要搜索百度診所就可以登錄,就可以顯示網(wǎng)站的各種公開(kāi)信息,包括:瀏覽器性能、網(wǎng)站證書(shū)信息、網(wǎng)站安全信息等,通過(guò)這些信息我們可以大致判斷網(wǎng)站的健康狀況,當然還有很多類(lèi)似的免費或付費的自動(dòng)網(wǎng)站SEO診斷工具, 但是我們還是推薦百度診斷站,畢竟老師出門(mén),信息會(huì )更準確。

?。?)資源平臺
比較權威的也是一個(gè)資源平臺,在其中我們可以診斷網(wǎng)站最近的抓取、收錄、關(guān)鍵詞排名等數據,這個(gè)數據我們認為是可信的,我們做網(wǎng)站SEO自動(dòng)診斷,不僅可以?xún)H限于方便,還可以追求數據的準確性。
?。?) 統計工具
做網(wǎng)站SEO自動(dòng)診斷也可以從數據入手,通過(guò)網(wǎng)站統計來(lái)
做診斷,常用的工具有:站長(cháng)統計、51拉統計、百度統計等,通過(guò)工具更新數據我們可以分析網(wǎng)站流量相關(guān)信息。
?。?) 查詢(xún)工具
SEO查詢(xún)工具很多,一般常用:站長(cháng)首頁(yè)、愛(ài)站工具、5118等,

這些工具各有優(yōu)勢,如:站長(cháng)首頁(yè)權威、愛(ài)站工具信任、5118數據全面,因此我們建議大家全面使用,然后再做出判斷。
以上只是我們常用的自動(dòng)網(wǎng)站SEO診斷工具,那么這些工具靠譜嗎?
2.網(wǎng)站SEO自動(dòng)診斷是否可靠
要討論自動(dòng)網(wǎng)站SEO診斷是否可靠,我們還需要澄清一個(gè)問(wèn)題,我們網(wǎng)站診斷的目的是什么,如果只是常規診斷,
我們認為以上工具完全可以滿(mǎn)足我們的需求,而且仍然是免費的,但如果是診斷網(wǎng)站排名,選擇上述工具只能說(shuō)有幫助,并不能有明顯的改善,就好像你只有儀器而沒(méi)有醫生,不能完全治療疑難雜癥, 所以我們必須對網(wǎng)站進(jìn)行深入診斷 你不能選擇聲稱(chēng)可以自動(dòng)進(jìn)行網(wǎng)站診斷的工具,而且這些工具中的大多數都是收費的。SEO診斷
是一項思考和體驗的工作,不是自動(dòng)網(wǎng)站SEO診斷就能做的事,所以做網(wǎng)站診斷還是尋求人工診斷。
總結:網(wǎng)站SEO自動(dòng)診斷,是否是靠譜的問(wèn)題,我們這里討論一下,以上內容,僅供參考。
解決方案:算法自動(dòng)采集列表是一種高效的大數據處理方式
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 67 次瀏覽 ? 2022-12-27 05:09
算法自動(dòng)采集列表是一種高效的大數據處理方式,在互聯(lián)網(wǎng)時(shí)代發(fā)揮了重要作用。算法自動(dòng)采集列表的功能是收集大量的網(wǎng)絡(luò )數據,并根據用戶(hù)的需要進(jìn)行處理和存儲。通過(guò)使用算法自動(dòng)采集列表,可以快速、準確地從海量的信息中抽取有價(jià)值的數據,大大降低了人工采集信息所需要花費的時(shí)間和成本。
隨著(zhù)互聯(lián)網(wǎng)應用的不斷發(fā)展,電子商務(wù)、信息服務(wù)、物流外包、供應鏈創(chuàng )新、運營(yíng)優(yōu)化、IT服務(wù)業(yè)等各個(gè)行業(yè)都需要使用到算法自動(dòng)采集列表。這就需要一套實(shí)用而又安全可靠的方案來(lái)實(shí)現大數據采集。優(yōu)采云采集器是一個(gè)專(zhuān)門(mén)為企業(yè)客戶(hù)開(kāi)發(fā)的大數據采集平臺,常用于市場(chǎng)營(yíng)銷(xiāo)、競爭對手情報分析、供應商評估、價(jià)格監測以及新聞輿情監測等各個(gè)應用場(chǎng)合。
優(yōu)采云采集器具有安全性強、易于使用、成本低廉以及優(yōu)異性能幾大特征。它能夠快速有效地對各行各業(yè)的海量信息進(jìn)行處理并提取出有價(jià)值的數據,進(jìn)而帶來(lái)前所未有的市場(chǎng)競爭優(yōu)勢。此外,優(yōu)采云采集器也能夠通過(guò)語(yǔ)義分析來(lái)進(jìn)一步實(shí)時(shí)監測輿情,從而帶來(lái)快速準確的輿情風(fēng)向標。
此外,優(yōu)采云采集器還具有易部署、易擴充性強以及易上手幾大特征:不需要對原始代理進(jìn)行單獨部署就能夠實(shí)時(shí)直觀(guān)地看到代理IP是否正常工作;不需要對原始代理進(jìn)行單獨部署就能夠方便地對代理IP進(jìn)行擴充或者減少;不需要再去學(xué)習新語(yǔ)法就能夠快速上手使用優(yōu)采云端已有API庫中的內容。
總之,作為一套高效耐用并且具有強大實(shí)時(shí)直觀(guān)性功能的大數據處理方式,優(yōu)采云采集器無(wú)疑是當前市場(chǎng)上使用者必不可少的選擇之一。 查看全部
解決方案:算法自動(dòng)采集列表是一種高效的大數據處理方式
算法自動(dòng)采集列表是一種高效的大數據處理方式,在互聯(lián)網(wǎng)時(shí)代發(fā)揮了重要作用。算法自動(dòng)采集列表的功能是收集大量的網(wǎng)絡(luò )數據,并根據用戶(hù)的需要進(jìn)行處理和存儲。通過(guò)使用算法自動(dòng)采集列表,可以快速、準確地從海量的信息中抽取有價(jià)值的數據,大大降低了人工采集信息所需要花費的時(shí)間和成本。

隨著(zhù)互聯(lián)網(wǎng)應用的不斷發(fā)展,電子商務(wù)、信息服務(wù)、物流外包、供應鏈創(chuàng )新、運營(yíng)優(yōu)化、IT服務(wù)業(yè)等各個(gè)行業(yè)都需要使用到算法自動(dòng)采集列表。這就需要一套實(shí)用而又安全可靠的方案來(lái)實(shí)現大數據采集。優(yōu)采云采集器是一個(gè)專(zhuān)門(mén)為企業(yè)客戶(hù)開(kāi)發(fā)的大數據采集平臺,常用于市場(chǎng)營(yíng)銷(xiāo)、競爭對手情報分析、供應商評估、價(jià)格監測以及新聞輿情監測等各個(gè)應用場(chǎng)合。
優(yōu)采云采集器具有安全性強、易于使用、成本低廉以及優(yōu)異性能幾大特征。它能夠快速有效地對各行各業(yè)的海量信息進(jìn)行處理并提取出有價(jià)值的數據,進(jìn)而帶來(lái)前所未有的市場(chǎng)競爭優(yōu)勢。此外,優(yōu)采云采集器也能夠通過(guò)語(yǔ)義分析來(lái)進(jìn)一步實(shí)時(shí)監測輿情,從而帶來(lái)快速準確的輿情風(fēng)向標。

此外,優(yōu)采云采集器還具有易部署、易擴充性強以及易上手幾大特征:不需要對原始代理進(jìn)行單獨部署就能夠實(shí)時(shí)直觀(guān)地看到代理IP是否正常工作;不需要對原始代理進(jìn)行單獨部署就能夠方便地對代理IP進(jìn)行擴充或者減少;不需要再去學(xué)習新語(yǔ)法就能夠快速上手使用優(yōu)采云端已有API庫中的內容。
總之,作為一套高效耐用并且具有強大實(shí)時(shí)直觀(guān)性功能的大數據處理方式,優(yōu)采云采集器無(wú)疑是當前市場(chǎng)上使用者必不可少的選擇之一。
解決方案:03 增量爬蟲(chóng)技術(shù)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 107 次瀏覽 ? 2022-12-25 22:52
01 專(zhuān)注爬蟲(chóng)技術(shù)
聚焦爬蟲(chóng)也是主題爬蟲(chóng)。 專(zhuān)注爬蟲(chóng)技術(shù)增加了鏈接評估和內容評估模塊,其爬蟲(chóng)策略的重點(diǎn)是評估頁(yè)面內容和鏈接的重要性。
基于鏈接評估的爬蟲(chóng)策略主要將網(wǎng)頁(yè)作為半結構化文檔,其中收錄大量的結構信息,可以用來(lái)評估鏈接的重要性。 另一種方法是利用Web結構來(lái)評估鏈接的價(jià)值,即HITS法,通過(guò)計算每個(gè)被訪(fǎng)問(wèn)頁(yè)面的Authority權重和Hub權重來(lái)確定鏈接訪(fǎng)問(wèn)的順序。
基于內容評價(jià)的爬蟲(chóng)策略主要是應用類(lèi)似于文本的計算方法,提出Fish-Search算法,以用戶(hù)輸入的查詢(xún)詞為主題。 隨著(zhù)算法的進(jìn)一步改進(jìn),Shark-Search算法可以使用空間向量模型來(lái)計算頁(yè)面和主題的相關(guān)性大小。
面向主題的爬蟲(chóng)、面向需求的爬蟲(chóng):它會(huì )針對特定的內容爬取信息,并會(huì )盡可能保證信息和需求的相關(guān)性。 下面顯示了一個(gè)如何使用聚焦爬蟲(chóng)的簡(jiǎn)單示例。
import?urllib.request?????#?爬蟲(chóng)專(zhuān)用的包urllib,不同版本的Python需要下載不同的爬蟲(chóng)專(zhuān)用包?import?re?????#?正則用來(lái)規律爬取?keyname=""?????#?想要爬取的內容?key=urllib.request.quote(keyname)?????#?需要將你輸入的keyname解碼,從而讓計算機讀懂?for?i?in?range(0,5):???#?(0,5)數字可以自己設置,是淘寶某產(chǎn)品的頁(yè)數?????url="https://s.taobao.com/search%3F ... 2Bstr(i*44)?#?url后面加上你想爬取的網(wǎng)站名,然后你需要多開(kāi)幾個(gè)類(lèi)似的網(wǎng)站以找到其規則?#?data是你爬取到的網(wǎng)站所有的內容要解碼要讀取內容?????pat='"pic_url":"//(.*?)"'?#?pat使用正則表達式從網(wǎng)頁(yè)爬取圖片?#?將你爬取到的內容放在一個(gè)列表里面?????print(picturelist)?????#?可以不打印,也可以打印下來(lái)看看?????for?j?in?range(0,len(picturelist)):?????????picture=picturelist[j]?????????pictureurl="http://"+picture?????????#?將列表里的內容遍歷出來(lái),并加上http://轉到高清圖片?????????file="E:/pycharm/vscode文件/圖片/"+str(i)+str(j)+".jpg"?????????#?再把圖片逐張編號,不然重復的名字將會(huì )被覆蓋掉?????????urllib.request.urlretrieve(pictureurl,filename=file)?????????#?最后保存到文件夾?
02 通用爬蟲(chóng)技術(shù)
通用網(wǎng)絡(luò )爬蟲(chóng)是整個(gè)網(wǎng)絡(luò )爬蟲(chóng)。 其實(shí)現過(guò)程如下。
第五,當滿(mǎn)足爬蟲(chóng)系統設置的停止條件時(shí),停止爬蟲(chóng)。 在寫(xiě)爬蟲(chóng)的時(shí)候,一般都會(huì )設置相應的停止條件。 如果不設置停止條件,爬蟲(chóng)會(huì )繼續爬取,直到獲取不到新的URL地址。 如果設置了停止條件,爬蟲(chóng)會(huì )在滿(mǎn)足停止條件時(shí)停止爬行。 詳見(jiàn)圖2-5右下子圖。
通用爬蟲(chóng)技術(shù)的應用有不同的爬取策略,其中廣度優(yōu)先策略和深度優(yōu)先策略更為關(guān)鍵。 例如,深度優(yōu)先策略的實(shí)現是按照深度從低到高的順序訪(fǎng)問(wèn)下一級網(wǎng)頁(yè)鏈接。
下面是一個(gè)如何使用普通爬蟲(chóng)的例子。
'''?爬取京東商品信息:?????請求url:https://www.jd.com/?????提取商品信息:?????????1.商品詳情頁(yè)?????????2.商品名稱(chēng)?????????3.商品價(jià)格?????????4.評價(jià)人數?????????5.商品商家?'''?from?selenium?import?webdriver????#?引入selenium中的webdriver?from?selenium.webdriver.common.keys?import?Keys?import?time??def?get_good(driver):?????try:??????????#?通過(guò)JS控制滾輪滑動(dòng)獲取所有商品信息?????????js_code?=?'''?????????????window.scrollTo(0,5000);?????????'''?????????driver.execute_script(js_code)??#?執行js代碼??????????#?等待數據加載?????????time.sleep(2)??????????#?查找所有商品div?????????#?good_div?=?driver.find_element_by_id('J_goodsList')?????????good_list?=?driver.find_elements_by_class_name('gl-item')?????????n?=?1?????????for?good?in?good_list:?????????????#?根據屬性選擇器查找?????????????#?商品鏈接?????????????good_url?=?good.find_element_by_css_selector(?????????????????'.p-img?a').get_attribute('href')??????????????#?商品名稱(chēng)?????????????good_name?=?good.find_element_by_css_selector(?????????????????'.p-name?em').text.replace("\n",?"--")??????????????#?商品價(jià)格?????????????good_price?=?good.find_element_by_class_name(?????????????????'p-price').text.replace("\n",?":")??????????????#?評價(jià)人數?????????????good_commit?=?good.find_element_by_class_name(?????????????????'p-commit').text.replace("\n",?"?")??????????????good_content?=?f'''?????????????????????????商品鏈接:?{good_url}?????????????????????????商品名稱(chēng):?{good_name}?????????????????????????商品價(jià)格:?{good_price}?????????????????????????評價(jià)人數:?{good_commit}?????????????????????????\n?????????????????????????'''?????????????print(good_content)?????????????with?open('jd.txt',?'a',?encoding='utf-8')?as?f:?????????????????f.write(good_content)??????????next_tag?=?driver.find_element_by_class_name('pn-next')?????????next_tag.click()??????????time.sleep(2)??????????#?遞歸調用函數?????????get_good(driver)??????????time.sleep(10)??????finally:?????????driver.close()???if?__name__?==?'__main__':??????good_name?=?input('請輸入爬取商品信息:').strip()??????driver?=?webdriver.Chrome()?????driver.implicitly_wait(10)?????#?往京東主頁(yè)發(fā)送請求?????driver.get('https://www.jd.com/')??????#?輸入商品名稱(chēng),并回車(chē)搜索?????input_tag?=?driver.find_element_by_id('key')?????input_tag.send_keys(good_name)?????input_tag.send_keys(Keys.ENTER)?????time.sleep(2)??????get_good(driver)?
03 增量爬蟲(chóng)技術(shù)
有些網(wǎng)站會(huì )在原有網(wǎng)頁(yè)數據的基礎上定期更新一批數據。 比如電影網(wǎng)站會(huì )實(shí)時(shí)更新一批近期的熱門(mén)電影,小說(shuō)網(wǎng)站會(huì )根據作者的創(chuàng )作進(jìn)度實(shí)時(shí)更新最新的章節數據。 遇到類(lèi)似的場(chǎng)景,我們可以使用增量爬蟲(chóng)。
增量爬蟲(chóng)技術(shù)(incremental Web crawler)是通過(guò)爬蟲(chóng)程序監測某個(gè)網(wǎng)站的數據更新情況,從而爬取網(wǎng)站更新后的新數據。
關(guān)于如何進(jìn)行增量爬取工作,下面給出三種檢測重復數據的思路:
發(fā)送請求前先判斷該URL是否已經(jīng)被抓??; 解析內容后判斷內容是否被爬??; 在寫(xiě)入存儲介質(zhì)時(shí)判斷該內容是否已經(jīng)存在于介質(zhì)中。
不難發(fā)現,增量爬取的核心是去重。 目前有兩種去重方法。
下面顯示了如何使用增量爬蟲(chóng)的示例。
import?scrapy?from?scrapy.linkextractors?import?LinkExtractor?from?scrapy.spiders?import?CrawlSpider,?Rule?from?redis?import?Redis?from?incrementPro.items?import?IncrementproItem?class?MovieSpider(CrawlSpider):?????name?=?'movie'?????#?allowed_domains?=?['www.xxx.com']?????start_urls?=?['http://www.4567tv.tv/frim/index7-11.html']?????rules?=?(?????????Rule(LinkExtractor(allow=r'/frim/index7-\d+\.html'),?callback='parse_item',?follow=True),?????)?????#?創(chuàng )建Redis鏈接對象?????conn?=?Redis(host='127.0.0.1',?port=6379)?????def?parse_item(self,?response):?????????li_list?=?response.xpath('//li[@class="p1?m1"]')?????????for?li?in?li_list:?????????????#?獲取詳情頁(yè)的url?????????????detail_url?=?'http://www.4567tv.tv'?+?li.xpath('./a/@href').extract_first()?????????????#?將詳情頁(yè)的url存入Redis的set中?????????????ex?=?self.conn.sadd('urls',?detail_url)?????????????if?ex?==?1:?????????????????print('該url沒(méi)有被爬取過(guò),可以進(jìn)行數據的爬取')?????????????????yield?scrapy.Request(url=detail_url,?callback=self.parst_detail)?????????????else:?????????????????print('數據還沒(méi)有更新,暫無(wú)新數據可爬??!')??????#?解析詳情頁(yè)中的電影名稱(chēng)和類(lèi)型,進(jìn)行持久化存儲?????def?parst_detail(self,?response):?????????item?=?IncrementproItem()?????????item['name']?=?response.xpath('//dt[@class="name"]/text()').extract_first()?????????item['kind']?=?response.xpath('//div[@class="ct-c"]/dl/dt[4]//text()').extract()?????????item['kind']?=?''.join(item['kind'])?????????yield?it?
管道文件:
from?redis?import?Redis?class?IncrementproPipeline(object):?????conn?=?None?????def?open_spider(self,spider):?????????self.conn?=?Redis(host='127.0.0.1',port=6379)?????def?process_item(self,?item,?spider):?????????dic?=?{?????????????'name':item['name'],?????????????'kind':item['kind']?????????????}?????????print(dic)?????????self.conn.push('movieData',dic)?????????????#?如果push不進(jìn)去,那么dic變成str(dic)或者改變r(jià)edis版本????????????pip?install?-U?redis==2.10.6?????????return?item?
04 深網(wǎng)爬蟲(chóng)技術(shù)
在互聯(lián)網(wǎng)中,網(wǎng)頁(yè)按存在方式可分為表層網(wǎng)頁(yè)和深層網(wǎng)頁(yè)。
所謂表層網(wǎng)頁(yè)是指無(wú)需提交表單,使用靜態(tài)鏈接即可到達的靜態(tài)頁(yè)面; 而深層網(wǎng)頁(yè)則隱藏在表單后面,無(wú)法通過(guò)靜態(tài)鏈接直接獲取,需要提交一定的關(guān)鍵詞才能訪(fǎng)問(wèn)。 得到的頁(yè)面中最重要的部分是表單填寫(xiě)部分。
在互聯(lián)網(wǎng)中,深層網(wǎng)頁(yè)的數量往往遠大于表層網(wǎng)頁(yè)的數量。 因此,我們需要想辦法爬取深層網(wǎng)頁(yè)。
深網(wǎng)爬蟲(chóng)的基本組成:URL列表、LVS列表(LVS是指標簽/值集合,即填寫(xiě)表單的數據源)、爬取控制器、解析器、LVS控制器、表單分析器、表單處理器、響應分析儀。
深網(wǎng)爬蟲(chóng)的填表方式有兩種:
技術(shù)和經(jīng)驗:利用cms建站有什么優(yōu)勢
使用cms建站的優(yōu)勢如下
1.網(wǎng)站線(xiàn)速度快
使用cms建站的用戶(hù)只需在網(wǎng)站模板中選擇自己喜歡的模板并部署上線(xiàn),上線(xiàn)后即可添加網(wǎng)站內容。
2.安全穩定
cms系統由于其開(kāi)源的特點(diǎn)擁有大量的用戶(hù),用戶(hù)在使用過(guò)程中發(fā)現的問(wèn)題和當前國網(wǎng)安全聯(lián)盟的白帽技術(shù)愛(ài)好者挖出的漏洞都在cms的不斷修復和升級中廠(chǎng)商,所以只要及時(shí)將網(wǎng)站的管理升級到最新版本的cms ,就可以保證網(wǎng)站的安全穩定。
3、有利于網(wǎng)站推廣
一個(gè)成熟的cms系統對于SEO有著(zhù)完整的設計理念和配置機制。 網(wǎng)站后,只要選擇合適的關(guān)鍵詞,并在后臺設置SEO參數,網(wǎng)站的關(guān)鍵詞排名比其他建站方式更容易,排名也更高。
4.方便的網(wǎng)站管理
cms功能齊全,支持可視化編輯。 網(wǎng)站上線(xiàn)后,您可以在后臺修改網(wǎng)站所有的文字、圖片、欄目等內容,還可以修改網(wǎng)站的顏色等樣式。 查看全部
解決方案:03 增量爬蟲(chóng)技術(shù)
01 專(zhuān)注爬蟲(chóng)技術(shù)
聚焦爬蟲(chóng)也是主題爬蟲(chóng)。 專(zhuān)注爬蟲(chóng)技術(shù)增加了鏈接評估和內容評估模塊,其爬蟲(chóng)策略的重點(diǎn)是評估頁(yè)面內容和鏈接的重要性。
基于鏈接評估的爬蟲(chóng)策略主要將網(wǎng)頁(yè)作為半結構化文檔,其中收錄大量的結構信息,可以用來(lái)評估鏈接的重要性。 另一種方法是利用Web結構來(lái)評估鏈接的價(jià)值,即HITS法,通過(guò)計算每個(gè)被訪(fǎng)問(wèn)頁(yè)面的Authority權重和Hub權重來(lái)確定鏈接訪(fǎng)問(wèn)的順序。
基于內容評價(jià)的爬蟲(chóng)策略主要是應用類(lèi)似于文本的計算方法,提出Fish-Search算法,以用戶(hù)輸入的查詢(xún)詞為主題。 隨著(zhù)算法的進(jìn)一步改進(jìn),Shark-Search算法可以使用空間向量模型來(lái)計算頁(yè)面和主題的相關(guān)性大小。
面向主題的爬蟲(chóng)、面向需求的爬蟲(chóng):它會(huì )針對特定的內容爬取信息,并會(huì )盡可能保證信息和需求的相關(guān)性。 下面顯示了一個(gè)如何使用聚焦爬蟲(chóng)的簡(jiǎn)單示例。
import?urllib.request?????#?爬蟲(chóng)專(zhuān)用的包urllib,不同版本的Python需要下載不同的爬蟲(chóng)專(zhuān)用包?import?re?????#?正則用來(lái)規律爬取?keyname=""?????#?想要爬取的內容?key=urllib.request.quote(keyname)?????#?需要將你輸入的keyname解碼,從而讓計算機讀懂?for?i?in?range(0,5):???#?(0,5)數字可以自己設置,是淘寶某產(chǎn)品的頁(yè)數?????url="https://s.taobao.com/search%3F ... 2Bstr(i*44)?#?url后面加上你想爬取的網(wǎng)站名,然后你需要多開(kāi)幾個(gè)類(lèi)似的網(wǎng)站以找到其規則?#?data是你爬取到的網(wǎng)站所有的內容要解碼要讀取內容?????pat='"pic_url":"//(.*?)"'?#?pat使用正則表達式從網(wǎng)頁(yè)爬取圖片?#?將你爬取到的內容放在一個(gè)列表里面?????print(picturelist)?????#?可以不打印,也可以打印下來(lái)看看?????for?j?in?range(0,len(picturelist)):?????????picture=picturelist[j]?????????pictureurl="http://"+picture?????????#?將列表里的內容遍歷出來(lái),并加上http://轉到高清圖片?????????file="E:/pycharm/vscode文件/圖片/"+str(i)+str(j)+".jpg"?????????#?再把圖片逐張編號,不然重復的名字將會(huì )被覆蓋掉?????????urllib.request.urlretrieve(pictureurl,filename=file)?????????#?最后保存到文件夾?
02 通用爬蟲(chóng)技術(shù)
通用網(wǎng)絡(luò )爬蟲(chóng)是整個(gè)網(wǎng)絡(luò )爬蟲(chóng)。 其實(shí)現過(guò)程如下。

第五,當滿(mǎn)足爬蟲(chóng)系統設置的停止條件時(shí),停止爬蟲(chóng)。 在寫(xiě)爬蟲(chóng)的時(shí)候,一般都會(huì )設置相應的停止條件。 如果不設置停止條件,爬蟲(chóng)會(huì )繼續爬取,直到獲取不到新的URL地址。 如果設置了停止條件,爬蟲(chóng)會(huì )在滿(mǎn)足停止條件時(shí)停止爬行。 詳見(jiàn)圖2-5右下子圖。
通用爬蟲(chóng)技術(shù)的應用有不同的爬取策略,其中廣度優(yōu)先策略和深度優(yōu)先策略更為關(guān)鍵。 例如,深度優(yōu)先策略的實(shí)現是按照深度從低到高的順序訪(fǎng)問(wèn)下一級網(wǎng)頁(yè)鏈接。
下面是一個(gè)如何使用普通爬蟲(chóng)的例子。
'''?爬取京東商品信息:?????請求url:https://www.jd.com/?????提取商品信息:?????????1.商品詳情頁(yè)?????????2.商品名稱(chēng)?????????3.商品價(jià)格?????????4.評價(jià)人數?????????5.商品商家?'''?from?selenium?import?webdriver????#?引入selenium中的webdriver?from?selenium.webdriver.common.keys?import?Keys?import?time??def?get_good(driver):?????try:??????????#?通過(guò)JS控制滾輪滑動(dòng)獲取所有商品信息?????????js_code?=?'''?????????????window.scrollTo(0,5000);?????????'''?????????driver.execute_script(js_code)??#?執行js代碼??????????#?等待數據加載?????????time.sleep(2)??????????#?查找所有商品div?????????#?good_div?=?driver.find_element_by_id('J_goodsList')?????????good_list?=?driver.find_elements_by_class_name('gl-item')?????????n?=?1?????????for?good?in?good_list:?????????????#?根據屬性選擇器查找?????????????#?商品鏈接?????????????good_url?=?good.find_element_by_css_selector(?????????????????'.p-img?a').get_attribute('href')??????????????#?商品名稱(chēng)?????????????good_name?=?good.find_element_by_css_selector(?????????????????'.p-name?em').text.replace("\n",?"--")??????????????#?商品價(jià)格?????????????good_price?=?good.find_element_by_class_name(?????????????????'p-price').text.replace("\n",?":")??????????????#?評價(jià)人數?????????????good_commit?=?good.find_element_by_class_name(?????????????????'p-commit').text.replace("\n",?"?")??????????????good_content?=?f'''?????????????????????????商品鏈接:?{good_url}?????????????????????????商品名稱(chēng):?{good_name}?????????????????????????商品價(jià)格:?{good_price}?????????????????????????評價(jià)人數:?{good_commit}?????????????????????????\n?????????????????????????'''?????????????print(good_content)?????????????with?open('jd.txt',?'a',?encoding='utf-8')?as?f:?????????????????f.write(good_content)??????????next_tag?=?driver.find_element_by_class_name('pn-next')?????????next_tag.click()??????????time.sleep(2)??????????#?遞歸調用函數?????????get_good(driver)??????????time.sleep(10)??????finally:?????????driver.close()???if?__name__?==?'__main__':??????good_name?=?input('請輸入爬取商品信息:').strip()??????driver?=?webdriver.Chrome()?????driver.implicitly_wait(10)?????#?往京東主頁(yè)發(fā)送請求?????driver.get('https://www.jd.com/')??????#?輸入商品名稱(chēng),并回車(chē)搜索?????input_tag?=?driver.find_element_by_id('key')?????input_tag.send_keys(good_name)?????input_tag.send_keys(Keys.ENTER)?????time.sleep(2)??????get_good(driver)?
03 增量爬蟲(chóng)技術(shù)
有些網(wǎng)站會(huì )在原有網(wǎng)頁(yè)數據的基礎上定期更新一批數據。 比如電影網(wǎng)站會(huì )實(shí)時(shí)更新一批近期的熱門(mén)電影,小說(shuō)網(wǎng)站會(huì )根據作者的創(chuàng )作進(jìn)度實(shí)時(shí)更新最新的章節數據。 遇到類(lèi)似的場(chǎng)景,我們可以使用增量爬蟲(chóng)。
增量爬蟲(chóng)技術(shù)(incremental Web crawler)是通過(guò)爬蟲(chóng)程序監測某個(gè)網(wǎng)站的數據更新情況,從而爬取網(wǎng)站更新后的新數據。
關(guān)于如何進(jìn)行增量爬取工作,下面給出三種檢測重復數據的思路:
發(fā)送請求前先判斷該URL是否已經(jīng)被抓??; 解析內容后判斷內容是否被爬??; 在寫(xiě)入存儲介質(zhì)時(shí)判斷該內容是否已經(jīng)存在于介質(zhì)中。
不難發(fā)現,增量爬取的核心是去重。 目前有兩種去重方法。

下面顯示了如何使用增量爬蟲(chóng)的示例。
import?scrapy?from?scrapy.linkextractors?import?LinkExtractor?from?scrapy.spiders?import?CrawlSpider,?Rule?from?redis?import?Redis?from?incrementPro.items?import?IncrementproItem?class?MovieSpider(CrawlSpider):?????name?=?'movie'?????#?allowed_domains?=?['www.xxx.com']?????start_urls?=?['http://www.4567tv.tv/frim/index7-11.html']?????rules?=?(?????????Rule(LinkExtractor(allow=r'/frim/index7-\d+\.html'),?callback='parse_item',?follow=True),?????)?????#?創(chuàng )建Redis鏈接對象?????conn?=?Redis(host='127.0.0.1',?port=6379)?????def?parse_item(self,?response):?????????li_list?=?response.xpath('//li[@class="p1?m1"]')?????????for?li?in?li_list:?????????????#?獲取詳情頁(yè)的url?????????????detail_url?=?'http://www.4567tv.tv'?+?li.xpath('./a/@href').extract_first()?????????????#?將詳情頁(yè)的url存入Redis的set中?????????????ex?=?self.conn.sadd('urls',?detail_url)?????????????if?ex?==?1:?????????????????print('該url沒(méi)有被爬取過(guò),可以進(jìn)行數據的爬取')?????????????????yield?scrapy.Request(url=detail_url,?callback=self.parst_detail)?????????????else:?????????????????print('數據還沒(méi)有更新,暫無(wú)新數據可爬??!')??????#?解析詳情頁(yè)中的電影名稱(chēng)和類(lèi)型,進(jìn)行持久化存儲?????def?parst_detail(self,?response):?????????item?=?IncrementproItem()?????????item['name']?=?response.xpath('//dt[@class="name"]/text()').extract_first()?????????item['kind']?=?response.xpath('//div[@class="ct-c"]/dl/dt[4]//text()').extract()?????????item['kind']?=?''.join(item['kind'])?????????yield?it?
管道文件:
from?redis?import?Redis?class?IncrementproPipeline(object):?????conn?=?None?????def?open_spider(self,spider):?????????self.conn?=?Redis(host='127.0.0.1',port=6379)?????def?process_item(self,?item,?spider):?????????dic?=?{?????????????'name':item['name'],?????????????'kind':item['kind']?????????????}?????????print(dic)?????????self.conn.push('movieData',dic)?????????????#?如果push不進(jìn)去,那么dic變成str(dic)或者改變r(jià)edis版本????????????pip?install?-U?redis==2.10.6?????????return?item?
04 深網(wǎng)爬蟲(chóng)技術(shù)
在互聯(lián)網(wǎng)中,網(wǎng)頁(yè)按存在方式可分為表層網(wǎng)頁(yè)和深層網(wǎng)頁(yè)。
所謂表層網(wǎng)頁(yè)是指無(wú)需提交表單,使用靜態(tài)鏈接即可到達的靜態(tài)頁(yè)面; 而深層網(wǎng)頁(yè)則隱藏在表單后面,無(wú)法通過(guò)靜態(tài)鏈接直接獲取,需要提交一定的關(guān)鍵詞才能訪(fǎng)問(wèn)。 得到的頁(yè)面中最重要的部分是表單填寫(xiě)部分。
在互聯(lián)網(wǎng)中,深層網(wǎng)頁(yè)的數量往往遠大于表層網(wǎng)頁(yè)的數量。 因此,我們需要想辦法爬取深層網(wǎng)頁(yè)。
深網(wǎng)爬蟲(chóng)的基本組成:URL列表、LVS列表(LVS是指標簽/值集合,即填寫(xiě)表單的數據源)、爬取控制器、解析器、LVS控制器、表單分析器、表單處理器、響應分析儀。
深網(wǎng)爬蟲(chóng)的填表方式有兩種:
技術(shù)和經(jīng)驗:利用cms建站有什么優(yōu)勢
使用cms建站的優(yōu)勢如下
1.網(wǎng)站線(xiàn)速度快

使用cms建站的用戶(hù)只需在網(wǎng)站模板中選擇自己喜歡的模板并部署上線(xiàn),上線(xiàn)后即可添加網(wǎng)站內容。
2.安全穩定
cms系統由于其開(kāi)源的特點(diǎn)擁有大量的用戶(hù),用戶(hù)在使用過(guò)程中發(fā)現的問(wèn)題和當前國網(wǎng)安全聯(lián)盟的白帽技術(shù)愛(ài)好者挖出的漏洞都在cms的不斷修復和升級中廠(chǎng)商,所以只要及時(shí)將網(wǎng)站的管理升級到最新版本的cms ,就可以保證網(wǎng)站的安全穩定。
3、有利于網(wǎng)站推廣

一個(gè)成熟的cms系統對于SEO有著(zhù)完整的設計理念和配置機制。 網(wǎng)站后,只要選擇合適的關(guān)鍵詞,并在后臺設置SEO參數,網(wǎng)站的關(guān)鍵詞排名比其他建站方式更容易,排名也更高。
4.方便的網(wǎng)站管理
cms功能齊全,支持可視化編輯。 網(wǎng)站上線(xiàn)后,您可以在后臺修改網(wǎng)站所有的文字、圖片、欄目等內容,還可以修改網(wǎng)站的顏色等樣式。
解決方案:k-近鄰算法實(shí)現手寫(xiě)數字識別系統——《機器學(xué)習實(shí)戰》
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 167 次瀏覽 ? 2022-12-24 05:59
一、實(shí)驗介紹
1.1 實(shí)驗內容
本實(shí)驗將從電影主題分類(lèi)的例子入手,詳細描述k近鄰算法的原理。 之后,我們將使用該算法實(shí)現一個(gè)手寫(xiě)數字識別系統。
完整教程及在線(xiàn)練習地址:K近鄰算法實(shí)現手寫(xiě)數字識別系統1.2實(shí)驗源碼
本實(shí)驗來(lái)源于圖靈教育授權實(shí)驗室大樓發(fā)布的《機器學(xué)習實(shí)戰》一書(shū)第2章。 如需系統學(xué)習本書(shū),請購買(mǎi)《機器學(xué)習實(shí)戰》。
為了保證本次實(shí)驗能夠在實(shí)驗室環(huán)境下完成,我們增加了實(shí)驗截圖、代碼注釋等一系列實(shí)驗指導,幫助大家更好的實(shí)踐。
1.3 實(shí)驗知識點(diǎn) 1.4 實(shí)驗環(huán)境 1.5 適合人群
本課程難度中等,適合具有基本Python知識的用戶(hù)。 如果您了解 numpy,則可以更好地入門(mén)本課程。
1.6 代碼獲取
您可以在實(shí)驗樓獲取該項目的代碼,作為參考對比學(xué)習。
2、實(shí)驗原理
眾所周知,電影可以按照題材來(lái)分類(lèi),但是題材本身是如何定義的呢? 誰(shuí)來(lái)決定一部電影屬于哪個(gè)主題? 也就是說(shuō),同一題材的電影有哪些共同特征? 這些都是電影分類(lèi)時(shí)必須要考慮的問(wèn)題。 沒(méi)有一個(gè)電影人會(huì )說(shuō)他拍的電影和以前的電影很相似,但我們知道,每一部電影確實(shí)可能在風(fēng)格上與同類(lèi)型的電影相似。 那么動(dòng)作片有哪些共同特點(diǎn),使得動(dòng)作片非常相似,卻又與愛(ài)情片有著(zhù)明顯的區別呢? 動(dòng)作片中也有吻戲,愛(ài)情片中也有打斗場(chǎng)面。 我們不能簡(jiǎn)單地以有沒(méi)有打架或有吻戲來(lái)判斷一部電影的類(lèi)型。 但愛(ài)情片中吻戲較多,動(dòng)作片中打斗場(chǎng)面較多。 根據此類(lèi)場(chǎng)景在電影中出現的次數,可以用來(lái)對電影進(jìn)行分類(lèi)。 本章第一節根據電影中出現的親吻和打斗的次數,使用k近鄰算法構建了一個(gè)自動(dòng)對電影類(lèi)型進(jìn)行分類(lèi)的程序。 我們首先用電影分類(lèi)來(lái)解釋k近鄰算法的基本概念,然后學(xué)習如何在其他系統上使用k近鄰算法。
本章介紹第一個(gè)機器學(xué)習算法:k-近鄰算法,非常有效且易于掌握。 首先,我們將探討 k 最近鄰算法的基本理論以及如何使用距離測量對項目進(jìn)行分類(lèi); 然后,我們將使用 Python 從文本文件中導入和解析數據; 然后,本書(shū)討論了當數據源較多時(shí),如何避免計算距離時(shí)可能遇到的一些常見(jiàn)錯誤; 最后用實(shí)例說(shuō)明如何使用k近鄰算法完成手寫(xiě)數字識別系統。
2.1k-最近鄰算法概述
簡(jiǎn)單的說(shuō),k近鄰算法就是利用衡量不同特征值之間距離的方法進(jìn)行分類(lèi)。
k-最近鄰算法
本書(shū)介紹的第一個(gè)機器學(xué)習算法是 k 最近鄰算法 (kNN)。 它的工作原理是:有一個(gè)樣本數據集,也叫訓練樣本集,樣本集中的每一個(gè)數據都有一個(gè)標簽,即我們知道樣本集中每一個(gè)數據與其所屬類(lèi)別的對應關(guān)系。 輸入沒(méi)有標簽的新數據后,將新數據的每個(gè)特征與樣本集中數據的相應特征進(jìn)行比較,然后算法提取樣本集中最相似數據(最近鄰)的分類(lèi)標簽。 一般來(lái)說(shuō),我們只選取樣本數據集中前k個(gè)最相似的數據,這就是k近鄰算法中k的來(lái)源,通常k是不大于20的整數。最后選擇最相似的分類(lèi)k 個(gè)最相似數據中出現的次數作為新數據的分類(lèi)。
現在讓我們回到前面電影分類(lèi)的例子,使用k近鄰算法對愛(ài)情片和動(dòng)作片進(jìn)行分類(lèi)。 曾經(jīng)有人統計過(guò)很多電影的打斗場(chǎng)面和吻戲。 圖 2-1 顯示了 6 部電影中打斗和接吻的場(chǎng)面數量。 如果有一部電影沒(méi)看過(guò),如何判斷它是愛(ài)情片還是動(dòng)作片? 我們可以使用 kNN 來(lái)解決這個(gè)問(wèn)題。
首先,我們要知道這部名不見(jiàn)經(jīng)傳的電影到底有多少打斗場(chǎng)面和吻戲。 圖 2-1 中問(wèn)號的位置是這部未知電影中鏡頭數量的圖形顯示。 具體編號見(jiàn)表2-1。
即使不知道未知電影屬于哪種類(lèi)型,我們也可以通過(guò)某種方式弄清楚。 首先計算未知電影與樣本集中其他電影的距離,如表2-2所示。 不用擔心這里如何計算這些距離值。 在使用Python實(shí)現電影分類(lèi)應用時(shí),會(huì )給出具體的計算方法。
現在我們已經(jīng)得到了樣本集中所有電影和未知電影的距離,按照距離遞增排序,我們可以找到k個(gè)最接近的電影。 假設 k=3,最接近的三部電影是 He's Not Really into Dudes、Beautiful Woman 和 California Man。 k近鄰算法根據距離最近的三部電影的類(lèi)型來(lái)判斷未知電影的類(lèi)型,而這三部電影都是言情片,所以我們判斷未知電影是言情片。
本章主要講解如何在實(shí)際環(huán)境中應用k近鄰算法,同時(shí)也涉及到如何使用Python工具和相關(guān)的機器學(xué)習術(shù)語(yǔ)。 按照1.5節開(kāi)發(fā)機器學(xué)習應用程序的一般步驟,我們使用Python語(yǔ)言開(kāi)發(fā)一個(gè)k近鄰算法的簡(jiǎn)單應用程序來(lái)驗證算法的正確性。
k近鄰算法的一般流程
數據采集:可以使用任何方法。 數據準備:距離計算所需的數值,最好是結構化的數據格式。 分析數據:可以使用任何方法。 Training Algorithm:這一步不適用于k-Nearest Neighbors算法。 測試算法:計算錯誤率。 算法使用:首先需要輸入樣本數據和結構化輸出結果,然后運行k近鄰算法判斷輸入數據屬于哪個(gè)類(lèi)別,最后對計算出的類(lèi)別進(jìn)行后續處理。 2.2 準備工作:使用Python導入數據
首先,創(chuàng )建一個(gè)名為 kNN.py 的 Python 模塊。 本章用到的所有代碼都在這個(gè)文件中。 讀者可以根據自己的習慣學(xué)習代碼,可以根據本書(shū)的學(xué)習進(jìn)度,將代碼寫(xiě)在自己創(chuàng )建的Python文件中,也可以直接從本書(shū)的源代碼中復制kNN.py文件。 我建議讀者從頭開(kāi)始創(chuàng )建模塊,邊學(xué)邊寫(xiě)代碼。
我們打開(kāi)Xfce終端,創(chuàng )建實(shí)驗文件夾KNN
cd Code
mkdir KNN
cd KNN
touch kNN.py
那我們先安裝NumPy模塊。
sudo pip install numpy
然后我們可以使用 vim 或 sublime 來(lái)編輯我們的 kNN.py 文件。 將以下代碼添加到 kNN.py 文件中:
from numpy import *
import operator
def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group, labels
在上面的代碼中,我們導入了兩個(gè)模塊:第一個(gè)是科學(xué)計算包NumPy; 第二個(gè)是operator模塊,k近鄰算法在進(jìn)行排序操作的時(shí)候會(huì )用到這個(gè)模塊提供的函數,后面會(huì )詳細介紹。
然后保存kNN.py文件,確保我們在kNN.py文件的路徑下(/home/shiyanlou/Code/KNN),在Xfce終端輸入ipython,進(jìn)入Python交互開(kāi)發(fā)環(huán)境。
進(jìn)入Python開(kāi)發(fā)環(huán)境后,輸入以下命令導入上面編輯的程序模塊:
>>> import kNN
上面的命令導入了 kNN 模塊。 為了保證輸入相同的數據集,在kNN模塊中定義了函數createDataSet,在Python命令提示符下輸入如下命令:
>>> group,labels = kNN.createDataSet()
<p>
</p>
上面的命令創(chuàng )建了變量組和標簽,在Python命令提示符下輸入以下命令,并輸入變量名來(lái)驗證變量是否定義正確:
>>> group
array([[ 1. , 1.1],
[ 1. , 1. ],
[ 0. , 0. ],
[ 0. , 0.1]])
>>> labels
['A', 'A', 'B', 'B']
這里有4組數據,每組數據有兩個(gè)已知的屬性或特征值。 上述組矩陣的每一行收錄不同的數據,我們可以將其視為日志文件中的不同測量點(diǎn)或條目。 由于人腦的局限性,我們通常只能將三維以下的事物形象化。 所以對于簡(jiǎn)單的數據可視化,我們通常只對每個(gè)數據點(diǎn)使用兩個(gè)特征。
向量標簽收錄每個(gè)數據點(diǎn)的標簽信息,標簽收錄的元素個(gè)數等于組矩陣的行數。 這里我們定義數據點(diǎn)(1, 1.1)為A類(lèi),數據點(diǎn)(0, 0.1)為B類(lèi)。為了說(shuō)明方便,例子中的值是任意取的,沒(méi)有給出坐標軸標簽. 圖 2-2 顯示了帶有類(lèi)別標簽信息的四個(gè)數據點(diǎn)。
現在我們知道了 Python 如何解析數據,如何加載數據,以及 kNN 算法的工作原理,我們將使用這些方法來(lái)完成分類(lèi)任務(wù)。
2.3 如何測試分類(lèi)器
上面我們提到使用kNN算法可以判斷一部電影是動(dòng)作片還是愛(ài)情片,也就是說(shuō)我們可以使用kNN算法實(shí)現一個(gè)分類(lèi)器。 我們需要檢查分類(lèi)器給出的答案是否符合我們的預期。 讀者可能會(huì )問(wèn):“分類(lèi)器什么時(shí)候會(huì )出錯?” 或者“答案總是正確的嗎?” 答案是否定的,分類(lèi)器不會(huì )得到100%正確的結果,我們可以使用各種方法檢查分類(lèi)器的準確率。 此外,分類(lèi)器的性能也會(huì )受到各種因素的影響,例如分類(lèi)器設置和數據集。 不同的算法在不同的數據集上的表現可能完全不同,這也是這部分的 6 章討論分類(lèi)算法的原因。
為了測試分類(lèi)器的效果,我們可以使用已知答案的數據。 當然,答案不能告訴分類(lèi)器,要檢查分類(lèi)器給出的結果是否符合預期結果。 通過(guò)大量的測試數據,我們可以得到分類(lèi)器的錯誤率——分類(lèi)器給出錯誤結果的次數除以測試執行的總數。 錯誤率是一種常用的評價(jià)方法,主要用于評價(jià)分類(lèi)器在一定數據集上的性能。 完美分類(lèi)器的錯誤率為 0,最差分類(lèi)器的錯誤率為 1.0,在這種情況下,分類(lèi)器根本無(wú)法找到一個(gè)正確的答案。 讀者可以在后面的章節中看到實(shí)際的數據示例。
上一節中介紹的示例是有效的,但實(shí)際用處不大。 接下來(lái),本書(shū)將使用手寫(xiě)識別系統的測試程序來(lái)測試k近鄰算法的效果。
三、實(shí)驗步驟
本項目詳細步驟可在實(shí)驗樓查看并在線(xiàn)完成:K近鄰算法實(shí)現手寫(xiě)數字識別系統
主要實(shí)現步驟:
1.準備數據:將圖像轉換為測試向量
2. 分析數據
3.測試算法:使用k近鄰算法識別手寫(xiě)數字
四、實(shí)驗總結
k近鄰算法是最簡(jiǎn)單有效的數據分類(lèi)算法。 k最近鄰算法是基于實(shí)例的學(xué)習。 在使用算法時(shí),我們必須要有接近實(shí)際數據的訓練樣本數據。 k近鄰算法必須保存所有數據集。 如果訓練數據集很大,則必須使用大量的存儲空間。 此外,實(shí)際使用起來(lái)可能非常耗時(shí),因為必須為數據集中的每個(gè)數據點(diǎn)計算距離值。 有沒(méi)有一種算法可以減少存儲空間和計算時(shí)間的開(kāi)銷(xiāo)? k決策樹(shù)是k近鄰算法的優(yōu)化版本,可以節省大量的計算開(kāi)銷(xiāo)。
解決方案:自建Kubernetes logtail日志采集客戶(hù)端安裝方式
【kubernetes常見(jiàn)日志采集問(wèn)題及解決方案分析】更多相關(guān)文章
kubernetes常見(jiàn)日志采集問(wèn)題分析及解決方案
與傳統日志和kubernetes日志相比,傳統服務(wù)目錄是固定的,重啟后不會(huì )丟失。 不要關(guān)注標準和錯誤日志輸出。 容器服務(wù)節點(diǎn)不固定。 重啟服務(wù)會(huì )漂移。 您需要注意標準和錯誤日志輸出。 日志文件重新啟動(dòng)后將丟失。 日志目錄不固定。 k8s中的日志處理常見(jiàn)的日志采集方案: 1、遠程日志將容器中的日志直接寫(xiě)到遠程kafka.es等,然后通過(guò)logstash等進(jìn)行處理,缺點(diǎn)是需要修改服務(wù)和傳輸到遠程存儲。 2.sidecar模式,每個(gè)pod運行一個(gè)filebeat,logstash等pod共享一個(gè)valum...
自建Kubernetes logtail日志采集客戶(hù)端安裝方法
自建Kubernetes安裝前提是Kubernetes集群1.8及以上版本。 Helm命令已安裝,版本2.6.4及以上。 安裝步驟在日志服務(wù)控制臺創(chuàng )建項目,項目名稱(chēng)以k8s-log-custom-開(kāi)頭。 將上述命令中的參數替換,并執行該命令。 嘗試 wget ...
Kubernetes Ingress 日志分析和監控最佳實(shí)踐
摘要:Ingress主要提供HTTP層(第7層)路由功能,是目前K8s中HTTP/HTTPS服務(wù)的主流暴露方式。 為了簡(jiǎn)化用戶(hù)分析和監控Ingress日志的門(mén)檻,阿里云容器服務(wù)和日志服務(wù)將Ingress日志開(kāi)放,只需要申請一個(gè)yaml資源即可完成日志采集等一整套Ingress日志解決方案的部署、分析和可視化。 越來(lái)越多的企業(yè)開(kāi)始在K8s集群上搭建服務(wù)。 在K8s中,組件通過(guò)Service暴露服務(wù),往往...
Kubernetes Ingress 日志分析入門(mén)
本文主要介紹如何搭建一個(gè)基于日志服務(wù)的Kubernetes Ingress日志分析平臺,并提供一些簡(jiǎn)單的上手實(shí)驗,幫助大家快速了解日志服務(wù)的相關(guān)功能。 部署Ingress日志方案,登錄容器服務(wù)管理控制臺。 將上述 CRD 配置保存為編排模板。 有關(guān)編排模板文檔,請參閱創(chuàng )建編排模板。 基于此模板創(chuàng )建應用程序,并選擇集群的默認命名空間。 apiVersion: /v1alpha1 kind: AliyunLogConfig metadata: # 你的配置...
SpringCloud微服務(wù)實(shí)戰——搭建企業(yè)級開(kāi)發(fā)框架(三十八):搭建ELK日志采集分析系統
一個(gè)好的日志分析系統可以詳細記錄系統的運行情況,方便我們定位分析系統性能瓶頸,定位系統問(wèn)題。 上一篇文章講解了日志的各種業(yè)務(wù)場(chǎng)景以及日志記錄的實(shí)現,所以日志記錄,相關(guān)人員需要對日志數據進(jìn)行處理和分析。 基于E(ElasticSearch)L(Logstash)K(Kibana)組合的日志分析系統可以說(shuō)是所有企業(yè)的首選方案。 Elasticsearch:分布式。 RESTful 風(fēng)格的搜索和數據分析引擎,可以快速存儲、搜索和分析海量數據。 用于存放ELK中的所有日志數據。 日志…
使用日志服務(wù)采集Kubernetes 日志
阿里云容器服務(wù) Kubernetes 集群集成日志服務(wù)(SLS)。 您可以在創(chuàng )建集群時(shí)開(kāi)啟日志服務(wù),快速采集Kubernetes集群的容器日志,包括容器的標準輸出和容器內的文本文件。 如果您還沒(méi)有創(chuàng )建一個(gè)新的Kubernetes 集群創(chuàng )建任何Kubernetes 集群,您可以按照本節中的步驟進(jìn)行操作: 登錄容器服務(wù)管理控制臺。 單擊左側導航欄中的集群,單擊右上角的創(chuàng )建 Kubernetes 集群。 進(jìn)入創(chuàng )建頁(yè)面后,參見(jiàn)創(chuàng )建Kubernetes集群進(jìn)行配置。 拖到頁(yè)面底部,勾選日志服務(wù)配置項,也就是說(shuō)在新建的...
Kubernetes 日志采集
Kubernetes日志打印方式標準輸出docker標準輸出日志stdout和stderr,使用docker logs或者kubectl logs查看最新日志(tail)。 如果想看更多的日志,可以到宿主機目錄/var/lib/docker/containers中找到所有對應的日志。 標準輸出是k8s社區推薦的日志輸出方式。 下面將從路徑和掛載介紹日志文件。 log4j在默認路徑打印日志的使用方法: 如果打印的業(yè)務(wù)日志沒(méi)有使用任何掛載方式,那么業(yè)務(wù)日志默認打在容器內部的目錄下。 根據不同...
日志采集技術(shù)分析 inode Inotify
日志采集技術(shù)淺析【阿里】-新手學(xué)習導向-紅客聯(lián)盟-Powered by HUC …
《視頻課堂》ELK與Kafka如何搭配,成為文字版的日志采集方案
視頻地址:ELK和Kafka是如何一起玩,成為日志采集方案的 視頻文字版 今天帶來(lái)了一個(gè)視頻,主要講一下ELK和Kafka的通信關(guān)系。 通過(guò)一張通信圖,以及一些操作命令,讓我們更深入的了解ELK在日志采集過(guò)程中和Kafka在消息隊列分發(fā)過(guò)程中,它們是如何配置和使用的,以及它們之間的通信機制希望它對你的學(xué)習會(huì )有幫助幫助,謝謝! 我們的目標是一個(gè)主機host上的服務(wù)會(huì )產(chǎn)生日志,比如在/var/log目錄下會(huì )不斷產(chǎn)生各種日志記錄。 我們稱(chēng)這個(gè)采集范圍為日志采集源。 這時(shí)候我們調用ELK文件采集器...
Kubernetes 通用日志采集方案
Kubernetes 常用日志采集方案 學(xué)習了 Kubernetes 集群中監控系統的搭建。 除了集群的監控告警,還有一個(gè)運維工作非常重要,那就是日志的采集。 應用程序和系統日志的引入可以幫助我們了解集群的內部運行情況,日志對于我們調試問(wèn)題和監控集群狀況也非常有用。 而且大部分應用都會(huì )有日志記錄,傳統的應用大部分都會(huì )寫(xiě)入本地的日志文件。 對于容器標準化的應用來(lái)說(shuō)就更簡(jiǎn)單了,只需要將日志信息寫(xiě)入stdout和stderr,容器默認會(huì )將這些日志輸出到宿主機上的一個(gè)服務(wù)器上。
熱點(diǎn)話(huà)題
React Hooks子組件通過(guò)props調用父組件的方法
win7激活客戶(hù)端停止運行
觀(guān)察以下網(wǎng)絡(luò )界面,盡可能列出測試
繪制DAG圖并找到優(yōu)化的4元代碼
Winform制作鍵盤(pán)
根目錄使用率為 100%
Mac根據域名查IP
系帶使用
升級openssh9.1
快速啟動(dòng)找不到系統路徑
放置網(wǎng)頁(yè)鼠標后顯示
python3 -m compilea 反編譯
如何將確認按鈕添加到 ios 數字鍵盤(pán)
DMS中如何修改數據庫用戶(hù)名
webapi上傳頭像
unittest 什么以test開(kāi)頭
serilog如何記錄空白日志,沒(méi)有日期,只記錄關(guān)鍵內容
UID卡B5FF67CBA951
jupyternotebook側邊欄無(wú)法調整
為什么eta設置為5 查看全部
解決方案:k-近鄰算法實(shí)現手寫(xiě)數字識別系統——《機器學(xué)習實(shí)戰》
一、實(shí)驗介紹
1.1 實(shí)驗內容
本實(shí)驗將從電影主題分類(lèi)的例子入手,詳細描述k近鄰算法的原理。 之后,我們將使用該算法實(shí)現一個(gè)手寫(xiě)數字識別系統。
完整教程及在線(xiàn)練習地址:K近鄰算法實(shí)現手寫(xiě)數字識別系統1.2實(shí)驗源碼
本實(shí)驗來(lái)源于圖靈教育授權實(shí)驗室大樓發(fā)布的《機器學(xué)習實(shí)戰》一書(shū)第2章。 如需系統學(xué)習本書(shū),請購買(mǎi)《機器學(xué)習實(shí)戰》。
為了保證本次實(shí)驗能夠在實(shí)驗室環(huán)境下完成,我們增加了實(shí)驗截圖、代碼注釋等一系列實(shí)驗指導,幫助大家更好的實(shí)踐。
1.3 實(shí)驗知識點(diǎn) 1.4 實(shí)驗環(huán)境 1.5 適合人群
本課程難度中等,適合具有基本Python知識的用戶(hù)。 如果您了解 numpy,則可以更好地入門(mén)本課程。
1.6 代碼獲取
您可以在實(shí)驗樓獲取該項目的代碼,作為參考對比學(xué)習。
2、實(shí)驗原理
眾所周知,電影可以按照題材來(lái)分類(lèi),但是題材本身是如何定義的呢? 誰(shuí)來(lái)決定一部電影屬于哪個(gè)主題? 也就是說(shuō),同一題材的電影有哪些共同特征? 這些都是電影分類(lèi)時(shí)必須要考慮的問(wèn)題。 沒(méi)有一個(gè)電影人會(huì )說(shuō)他拍的電影和以前的電影很相似,但我們知道,每一部電影確實(shí)可能在風(fēng)格上與同類(lèi)型的電影相似。 那么動(dòng)作片有哪些共同特點(diǎn),使得動(dòng)作片非常相似,卻又與愛(ài)情片有著(zhù)明顯的區別呢? 動(dòng)作片中也有吻戲,愛(ài)情片中也有打斗場(chǎng)面。 我們不能簡(jiǎn)單地以有沒(méi)有打架或有吻戲來(lái)判斷一部電影的類(lèi)型。 但愛(ài)情片中吻戲較多,動(dòng)作片中打斗場(chǎng)面較多。 根據此類(lèi)場(chǎng)景在電影中出現的次數,可以用來(lái)對電影進(jìn)行分類(lèi)。 本章第一節根據電影中出現的親吻和打斗的次數,使用k近鄰算法構建了一個(gè)自動(dòng)對電影類(lèi)型進(jìn)行分類(lèi)的程序。 我們首先用電影分類(lèi)來(lái)解釋k近鄰算法的基本概念,然后學(xué)習如何在其他系統上使用k近鄰算法。
本章介紹第一個(gè)機器學(xué)習算法:k-近鄰算法,非常有效且易于掌握。 首先,我們將探討 k 最近鄰算法的基本理論以及如何使用距離測量對項目進(jìn)行分類(lèi); 然后,我們將使用 Python 從文本文件中導入和解析數據; 然后,本書(shū)討論了當數據源較多時(shí),如何避免計算距離時(shí)可能遇到的一些常見(jiàn)錯誤; 最后用實(shí)例說(shuō)明如何使用k近鄰算法完成手寫(xiě)數字識別系統。
2.1k-最近鄰算法概述
簡(jiǎn)單的說(shuō),k近鄰算法就是利用衡量不同特征值之間距離的方法進(jìn)行分類(lèi)。
k-最近鄰算法
本書(shū)介紹的第一個(gè)機器學(xué)習算法是 k 最近鄰算法 (kNN)。 它的工作原理是:有一個(gè)樣本數據集,也叫訓練樣本集,樣本集中的每一個(gè)數據都有一個(gè)標簽,即我們知道樣本集中每一個(gè)數據與其所屬類(lèi)別的對應關(guān)系。 輸入沒(méi)有標簽的新數據后,將新數據的每個(gè)特征與樣本集中數據的相應特征進(jìn)行比較,然后算法提取樣本集中最相似數據(最近鄰)的分類(lèi)標簽。 一般來(lái)說(shuō),我們只選取樣本數據集中前k個(gè)最相似的數據,這就是k近鄰算法中k的來(lái)源,通常k是不大于20的整數。最后選擇最相似的分類(lèi)k 個(gè)最相似數據中出現的次數作為新數據的分類(lèi)。
現在讓我們回到前面電影分類(lèi)的例子,使用k近鄰算法對愛(ài)情片和動(dòng)作片進(jìn)行分類(lèi)。 曾經(jīng)有人統計過(guò)很多電影的打斗場(chǎng)面和吻戲。 圖 2-1 顯示了 6 部電影中打斗和接吻的場(chǎng)面數量。 如果有一部電影沒(méi)看過(guò),如何判斷它是愛(ài)情片還是動(dòng)作片? 我們可以使用 kNN 來(lái)解決這個(gè)問(wèn)題。
首先,我們要知道這部名不見(jiàn)經(jīng)傳的電影到底有多少打斗場(chǎng)面和吻戲。 圖 2-1 中問(wèn)號的位置是這部未知電影中鏡頭數量的圖形顯示。 具體編號見(jiàn)表2-1。
即使不知道未知電影屬于哪種類(lèi)型,我們也可以通過(guò)某種方式弄清楚。 首先計算未知電影與樣本集中其他電影的距離,如表2-2所示。 不用擔心這里如何計算這些距離值。 在使用Python實(shí)現電影分類(lèi)應用時(shí),會(huì )給出具體的計算方法。
現在我們已經(jīng)得到了樣本集中所有電影和未知電影的距離,按照距離遞增排序,我們可以找到k個(gè)最接近的電影。 假設 k=3,最接近的三部電影是 He's Not Really into Dudes、Beautiful Woman 和 California Man。 k近鄰算法根據距離最近的三部電影的類(lèi)型來(lái)判斷未知電影的類(lèi)型,而這三部電影都是言情片,所以我們判斷未知電影是言情片。
本章主要講解如何在實(shí)際環(huán)境中應用k近鄰算法,同時(shí)也涉及到如何使用Python工具和相關(guān)的機器學(xué)習術(shù)語(yǔ)。 按照1.5節開(kāi)發(fā)機器學(xué)習應用程序的一般步驟,我們使用Python語(yǔ)言開(kāi)發(fā)一個(gè)k近鄰算法的簡(jiǎn)單應用程序來(lái)驗證算法的正確性。
k近鄰算法的一般流程

數據采集:可以使用任何方法。 數據準備:距離計算所需的數值,最好是結構化的數據格式。 分析數據:可以使用任何方法。 Training Algorithm:這一步不適用于k-Nearest Neighbors算法。 測試算法:計算錯誤率。 算法使用:首先需要輸入樣本數據和結構化輸出結果,然后運行k近鄰算法判斷輸入數據屬于哪個(gè)類(lèi)別,最后對計算出的類(lèi)別進(jìn)行后續處理。 2.2 準備工作:使用Python導入數據
首先,創(chuàng )建一個(gè)名為 kNN.py 的 Python 模塊。 本章用到的所有代碼都在這個(gè)文件中。 讀者可以根據自己的習慣學(xué)習代碼,可以根據本書(shū)的學(xué)習進(jìn)度,將代碼寫(xiě)在自己創(chuàng )建的Python文件中,也可以直接從本書(shū)的源代碼中復制kNN.py文件。 我建議讀者從頭開(kāi)始創(chuàng )建模塊,邊學(xué)邊寫(xiě)代碼。
我們打開(kāi)Xfce終端,創(chuàng )建實(shí)驗文件夾KNN
cd Code
mkdir KNN
cd KNN
touch kNN.py
那我們先安裝NumPy模塊。
sudo pip install numpy
然后我們可以使用 vim 或 sublime 來(lái)編輯我們的 kNN.py 文件。 將以下代碼添加到 kNN.py 文件中:
from numpy import *
import operator
def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group, labels
在上面的代碼中,我們導入了兩個(gè)模塊:第一個(gè)是科學(xué)計算包NumPy; 第二個(gè)是operator模塊,k近鄰算法在進(jìn)行排序操作的時(shí)候會(huì )用到這個(gè)模塊提供的函數,后面會(huì )詳細介紹。
然后保存kNN.py文件,確保我們在kNN.py文件的路徑下(/home/shiyanlou/Code/KNN),在Xfce終端輸入ipython,進(jìn)入Python交互開(kāi)發(fā)環(huán)境。
進(jìn)入Python開(kāi)發(fā)環(huán)境后,輸入以下命令導入上面編輯的程序模塊:
>>> import kNN
上面的命令導入了 kNN 模塊。 為了保證輸入相同的數據集,在kNN模塊中定義了函數createDataSet,在Python命令提示符下輸入如下命令:
>>> group,labels = kNN.createDataSet()
<p>

</p>
上面的命令創(chuàng )建了變量組和標簽,在Python命令提示符下輸入以下命令,并輸入變量名來(lái)驗證變量是否定義正確:
>>> group
array([[ 1. , 1.1],
[ 1. , 1. ],
[ 0. , 0. ],
[ 0. , 0.1]])
>>> labels
['A', 'A', 'B', 'B']
這里有4組數據,每組數據有兩個(gè)已知的屬性或特征值。 上述組矩陣的每一行收錄不同的數據,我們可以將其視為日志文件中的不同測量點(diǎn)或條目。 由于人腦的局限性,我們通常只能將三維以下的事物形象化。 所以對于簡(jiǎn)單的數據可視化,我們通常只對每個(gè)數據點(diǎn)使用兩個(gè)特征。
向量標簽收錄每個(gè)數據點(diǎn)的標簽信息,標簽收錄的元素個(gè)數等于組矩陣的行數。 這里我們定義數據點(diǎn)(1, 1.1)為A類(lèi),數據點(diǎn)(0, 0.1)為B類(lèi)。為了說(shuō)明方便,例子中的值是任意取的,沒(méi)有給出坐標軸標簽. 圖 2-2 顯示了帶有類(lèi)別標簽信息的四個(gè)數據點(diǎn)。
現在我們知道了 Python 如何解析數據,如何加載數據,以及 kNN 算法的工作原理,我們將使用這些方法來(lái)完成分類(lèi)任務(wù)。
2.3 如何測試分類(lèi)器
上面我們提到使用kNN算法可以判斷一部電影是動(dòng)作片還是愛(ài)情片,也就是說(shuō)我們可以使用kNN算法實(shí)現一個(gè)分類(lèi)器。 我們需要檢查分類(lèi)器給出的答案是否符合我們的預期。 讀者可能會(huì )問(wèn):“分類(lèi)器什么時(shí)候會(huì )出錯?” 或者“答案總是正確的嗎?” 答案是否定的,分類(lèi)器不會(huì )得到100%正確的結果,我們可以使用各種方法檢查分類(lèi)器的準確率。 此外,分類(lèi)器的性能也會(huì )受到各種因素的影響,例如分類(lèi)器設置和數據集。 不同的算法在不同的數據集上的表現可能完全不同,這也是這部分的 6 章討論分類(lèi)算法的原因。
為了測試分類(lèi)器的效果,我們可以使用已知答案的數據。 當然,答案不能告訴分類(lèi)器,要檢查分類(lèi)器給出的結果是否符合預期結果。 通過(guò)大量的測試數據,我們可以得到分類(lèi)器的錯誤率——分類(lèi)器給出錯誤結果的次數除以測試執行的總數。 錯誤率是一種常用的評價(jià)方法,主要用于評價(jià)分類(lèi)器在一定數據集上的性能。 完美分類(lèi)器的錯誤率為 0,最差分類(lèi)器的錯誤率為 1.0,在這種情況下,分類(lèi)器根本無(wú)法找到一個(gè)正確的答案。 讀者可以在后面的章節中看到實(shí)際的數據示例。
上一節中介紹的示例是有效的,但實(shí)際用處不大。 接下來(lái),本書(shū)將使用手寫(xiě)識別系統的測試程序來(lái)測試k近鄰算法的效果。
三、實(shí)驗步驟
本項目詳細步驟可在實(shí)驗樓查看并在線(xiàn)完成:K近鄰算法實(shí)現手寫(xiě)數字識別系統
主要實(shí)現步驟:
1.準備數據:將圖像轉換為測試向量
2. 分析數據
3.測試算法:使用k近鄰算法識別手寫(xiě)數字
四、實(shí)驗總結
k近鄰算法是最簡(jiǎn)單有效的數據分類(lèi)算法。 k最近鄰算法是基于實(shí)例的學(xué)習。 在使用算法時(shí),我們必須要有接近實(shí)際數據的訓練樣本數據。 k近鄰算法必須保存所有數據集。 如果訓練數據集很大,則必須使用大量的存儲空間。 此外,實(shí)際使用起來(lái)可能非常耗時(shí),因為必須為數據集中的每個(gè)數據點(diǎn)計算距離值。 有沒(méi)有一種算法可以減少存儲空間和計算時(shí)間的開(kāi)銷(xiāo)? k決策樹(shù)是k近鄰算法的優(yōu)化版本,可以節省大量的計算開(kāi)銷(xiāo)。
解決方案:自建Kubernetes logtail日志采集客戶(hù)端安裝方式
【kubernetes常見(jiàn)日志采集問(wèn)題及解決方案分析】更多相關(guān)文章
kubernetes常見(jiàn)日志采集問(wèn)題分析及解決方案
與傳統日志和kubernetes日志相比,傳統服務(wù)目錄是固定的,重啟后不會(huì )丟失。 不要關(guān)注標準和錯誤日志輸出。 容器服務(wù)節點(diǎn)不固定。 重啟服務(wù)會(huì )漂移。 您需要注意標準和錯誤日志輸出。 日志文件重新啟動(dòng)后將丟失。 日志目錄不固定。 k8s中的日志處理常見(jiàn)的日志采集方案: 1、遠程日志將容器中的日志直接寫(xiě)到遠程kafka.es等,然后通過(guò)logstash等進(jìn)行處理,缺點(diǎn)是需要修改服務(wù)和傳輸到遠程存儲。 2.sidecar模式,每個(gè)pod運行一個(gè)filebeat,logstash等pod共享一個(gè)valum...
自建Kubernetes logtail日志采集客戶(hù)端安裝方法
自建Kubernetes安裝前提是Kubernetes集群1.8及以上版本。 Helm命令已安裝,版本2.6.4及以上。 安裝步驟在日志服務(wù)控制臺創(chuàng )建項目,項目名稱(chēng)以k8s-log-custom-開(kāi)頭。 將上述命令中的參數替換,并執行該命令。 嘗試 wget ...
Kubernetes Ingress 日志分析和監控最佳實(shí)踐
摘要:Ingress主要提供HTTP層(第7層)路由功能,是目前K8s中HTTP/HTTPS服務(wù)的主流暴露方式。 為了簡(jiǎn)化用戶(hù)分析和監控Ingress日志的門(mén)檻,阿里云容器服務(wù)和日志服務(wù)將Ingress日志開(kāi)放,只需要申請一個(gè)yaml資源即可完成日志采集等一整套Ingress日志解決方案的部署、分析和可視化。 越來(lái)越多的企業(yè)開(kāi)始在K8s集群上搭建服務(wù)。 在K8s中,組件通過(guò)Service暴露服務(wù),往往...
Kubernetes Ingress 日志分析入門(mén)
本文主要介紹如何搭建一個(gè)基于日志服務(wù)的Kubernetes Ingress日志分析平臺,并提供一些簡(jiǎn)單的上手實(shí)驗,幫助大家快速了解日志服務(wù)的相關(guān)功能。 部署Ingress日志方案,登錄容器服務(wù)管理控制臺。 將上述 CRD 配置保存為編排模板。 有關(guān)編排模板文檔,請參閱創(chuàng )建編排模板。 基于此模板創(chuàng )建應用程序,并選擇集群的默認命名空間。 apiVersion: /v1alpha1 kind: AliyunLogConfig metadata: # 你的配置...
SpringCloud微服務(wù)實(shí)戰——搭建企業(yè)級開(kāi)發(fā)框架(三十八):搭建ELK日志采集分析系統
一個(gè)好的日志分析系統可以詳細記錄系統的運行情況,方便我們定位分析系統性能瓶頸,定位系統問(wèn)題。 上一篇文章講解了日志的各種業(yè)務(wù)場(chǎng)景以及日志記錄的實(shí)現,所以日志記錄,相關(guān)人員需要對日志數據進(jìn)行處理和分析。 基于E(ElasticSearch)L(Logstash)K(Kibana)組合的日志分析系統可以說(shuō)是所有企業(yè)的首選方案。 Elasticsearch:分布式。 RESTful 風(fēng)格的搜索和數據分析引擎,可以快速存儲、搜索和分析海量數據。 用于存放ELK中的所有日志數據。 日志…
使用日志服務(wù)采集Kubernetes 日志
阿里云容器服務(wù) Kubernetes 集群集成日志服務(wù)(SLS)。 您可以在創(chuàng )建集群時(shí)開(kāi)啟日志服務(wù),快速采集Kubernetes集群的容器日志,包括容器的標準輸出和容器內的文本文件。 如果您還沒(méi)有創(chuàng )建一個(gè)新的Kubernetes 集群創(chuàng )建任何Kubernetes 集群,您可以按照本節中的步驟進(jìn)行操作: 登錄容器服務(wù)管理控制臺。 單擊左側導航欄中的集群,單擊右上角的創(chuàng )建 Kubernetes 集群。 進(jìn)入創(chuàng )建頁(yè)面后,參見(jiàn)創(chuàng )建Kubernetes集群進(jìn)行配置。 拖到頁(yè)面底部,勾選日志服務(wù)配置項,也就是說(shuō)在新建的...
Kubernetes 日志采集

Kubernetes日志打印方式標準輸出docker標準輸出日志stdout和stderr,使用docker logs或者kubectl logs查看最新日志(tail)。 如果想看更多的日志,可以到宿主機目錄/var/lib/docker/containers中找到所有對應的日志。 標準輸出是k8s社區推薦的日志輸出方式。 下面將從路徑和掛載介紹日志文件。 log4j在默認路徑打印日志的使用方法: 如果打印的業(yè)務(wù)日志沒(méi)有使用任何掛載方式,那么業(yè)務(wù)日志默認打在容器內部的目錄下。 根據不同...
日志采集技術(shù)分析 inode Inotify
日志采集技術(shù)淺析【阿里】-新手學(xué)習導向-紅客聯(lián)盟-Powered by HUC …
《視頻課堂》ELK與Kafka如何搭配,成為文字版的日志采集方案
視頻地址:ELK和Kafka是如何一起玩,成為日志采集方案的 視頻文字版 今天帶來(lái)了一個(gè)視頻,主要講一下ELK和Kafka的通信關(guān)系。 通過(guò)一張通信圖,以及一些操作命令,讓我們更深入的了解ELK在日志采集過(guò)程中和Kafka在消息隊列分發(fā)過(guò)程中,它們是如何配置和使用的,以及它們之間的通信機制希望它對你的學(xué)習會(huì )有幫助幫助,謝謝! 我們的目標是一個(gè)主機host上的服務(wù)會(huì )產(chǎn)生日志,比如在/var/log目錄下會(huì )不斷產(chǎn)生各種日志記錄。 我們稱(chēng)這個(gè)采集范圍為日志采集源。 這時(shí)候我們調用ELK文件采集器...
Kubernetes 通用日志采集方案
Kubernetes 常用日志采集方案 學(xué)習了 Kubernetes 集群中監控系統的搭建。 除了集群的監控告警,還有一個(gè)運維工作非常重要,那就是日志的采集。 應用程序和系統日志的引入可以幫助我們了解集群的內部運行情況,日志對于我們調試問(wèn)題和監控集群狀況也非常有用。 而且大部分應用都會(huì )有日志記錄,傳統的應用大部分都會(huì )寫(xiě)入本地的日志文件。 對于容器標準化的應用來(lái)說(shuō)就更簡(jiǎn)單了,只需要將日志信息寫(xiě)入stdout和stderr,容器默認會(huì )將這些日志輸出到宿主機上的一個(gè)服務(wù)器上。
熱點(diǎn)話(huà)題
React Hooks子組件通過(guò)props調用父組件的方法
win7激活客戶(hù)端停止運行
觀(guān)察以下網(wǎng)絡(luò )界面,盡可能列出測試
繪制DAG圖并找到優(yōu)化的4元代碼
Winform制作鍵盤(pán)
根目錄使用率為 100%

Mac根據域名查IP
系帶使用
升級openssh9.1
快速啟動(dòng)找不到系統路徑
放置網(wǎng)頁(yè)鼠標后顯示
python3 -m compilea 反編譯
如何將確認按鈕添加到 ios 數字鍵盤(pán)
DMS中如何修改數據庫用戶(hù)名
webapi上傳頭像
unittest 什么以test開(kāi)頭
serilog如何記錄空白日志,沒(méi)有日期,只記錄關(guān)鍵內容
UID卡B5FF67CBA951
jupyternotebook側邊欄無(wú)法調整
為什么eta設置為5
免費獲取:1314SEO標簽自動(dòng)獲取 批量生成標簽 3.3
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 91 次瀏覽 ? 2022-12-17 21:50
dz插件網(wǎng)自用分詞算法排序參考:
本插件可以自動(dòng)獲取帖子標簽,支持舊帖和采集帖子設置標簽,標簽可以聚合帖子,提高帖子曝光度,幫助SEO收錄
支持多種分詞模式,每個(gè)界面獨立設置是否開(kāi)啟,以及界面執行的順序,并自動(dòng)判斷選擇合適的結果
支持自定義標簽功能,可以預設常用的標簽,當對應的標簽出現在帖子中時(shí)優(yōu)先使用
支持設置只按標題獲取標簽
支持設置大量字符優(yōu)先返回標簽
支持過(guò)濾數字和字母的相關(guān)設置
目前支持的分詞接口:百度相關(guān)搜索詞接口、百度關(guān)鍵詞接口、百度詞排接口、Pullword api、阿里云關(guān)鍵詞抽取、阿里云新聞元素抽取
備注:自定義標簽功能依賴(lài)于PHP的mb_strpos函數,大部分PHP環(huán)境默認支持。如果您的環(huán)境不支持,則無(wú)法使用自定義標簽功能。需要配置PHP環(huán)境支持mb_strpos函數
解決方案:美團大眾點(diǎn)評商家電話(huà)采集軟件,提取美團大眾點(diǎn)評商家號碼的工具
1.從城市列表中選擇要采集的城市,或者直接在城市框中輸入城市名稱(chēng),如杭州
2.關(guān)鍵詞:輸入要采集的行業(yè)分類(lèi)關(guān)鍵詞,多個(gè)詞之間用空格分隔,如:美甲
3. 檢查其他必填選項
4. 開(kāi)始采集
美團點(diǎn)評商務(wù)電話(huà)采集軟件,提取美團點(diǎn)評商務(wù)號碼的工具
1、關(guān)鍵詞:可輸入多個(gè)相關(guān)行業(yè)關(guān)鍵詞采集 數據更完整
2.因為是實(shí)時(shí)抓拍,壞網(wǎng)絡(luò )也會(huì )導致數據沒(méi)有全部返回,差的網(wǎng)絡(luò )可以采集再點(diǎn)擊開(kāi)始采集
3、排除關(guān)鍵詞:排除采集結果中店鋪名稱(chēng)收錄單詞的數據,可在采集開(kāi)始前和采集完成后排除(采集完成后,輸入需要排除的關(guān)鍵詞并篩選)。
4.如果采集后不清除數據,則更改關(guān)鍵詞或城市繼續啟動(dòng)采集,使數據疊加在之前的數據上并進(jìn)行重復數據刪除
5、可同時(shí)檢查多個(gè)平臺,采集數據軟件自動(dòng)解重合 查看全部
免費獲取:1314SEO標簽自動(dòng)獲取 批量生成標簽 3.3
dz插件網(wǎng)自用分詞算法排序參考:
本插件可以自動(dòng)獲取帖子標簽,支持舊帖和采集帖子設置標簽,標簽可以聚合帖子,提高帖子曝光度,幫助SEO收錄

支持多種分詞模式,每個(gè)界面獨立設置是否開(kāi)啟,以及界面執行的順序,并自動(dòng)判斷選擇合適的結果
支持自定義標簽功能,可以預設常用的標簽,當對應的標簽出現在帖子中時(shí)優(yōu)先使用
支持設置只按標題獲取標簽
支持設置大量字符優(yōu)先返回標簽

支持過(guò)濾數字和字母的相關(guān)設置
目前支持的分詞接口:百度相關(guān)搜索詞接口、百度關(guān)鍵詞接口、百度詞排接口、Pullword api、阿里云關(guān)鍵詞抽取、阿里云新聞元素抽取
備注:自定義標簽功能依賴(lài)于PHP的mb_strpos函數,大部分PHP環(huán)境默認支持。如果您的環(huán)境不支持,則無(wú)法使用自定義標簽功能。需要配置PHP環(huán)境支持mb_strpos函數
解決方案:美團大眾點(diǎn)評商家電話(huà)采集軟件,提取美團大眾點(diǎn)評商家號碼的工具
1.從城市列表中選擇要采集的城市,或者直接在城市框中輸入城市名稱(chēng),如杭州
2.關(guān)鍵詞:輸入要采集的行業(yè)分類(lèi)關(guān)鍵詞,多個(gè)詞之間用空格分隔,如:美甲
3. 檢查其他必填選項

4. 開(kāi)始采集
美團點(diǎn)評商務(wù)電話(huà)采集軟件,提取美團點(diǎn)評商務(wù)號碼的工具
1、關(guān)鍵詞:可輸入多個(gè)相關(guān)行業(yè)關(guān)鍵詞采集 數據更完整

2.因為是實(shí)時(shí)抓拍,壞網(wǎng)絡(luò )也會(huì )導致數據沒(méi)有全部返回,差的網(wǎng)絡(luò )可以采集再點(diǎn)擊開(kāi)始采集
3、排除關(guān)鍵詞:排除采集結果中店鋪名稱(chēng)收錄單詞的數據,可在采集開(kāi)始前和采集完成后排除(采集完成后,輸入需要排除的關(guān)鍵詞并篩選)。
4.如果采集后不清除數據,則更改關(guān)鍵詞或城市繼續啟動(dòng)采集,使數據疊加在之前的數據上并進(jìn)行重復數據刪除
5、可同時(shí)檢查多個(gè)平臺,采集數據軟件自動(dòng)解重合
解決方案:20-垃圾回收相關(guān)算法
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 99 次瀏覽 ? 2022-12-15 23:55
1.標記階段 1.垃圾標記階段 2.標記階段算法-引用計數算法(Reference Counting)Java GC測試
public class RefCountGC {
// 5MB
private byte[] bigSize = new byte[5 * 1024 * 1024];
Object reference = null;
public static void main(String[] args) {
RefCountGC obj1 = new RefCountGC();
RefCountGC obj2 = new RefCountGC();
obj1.reference = obj2;
obj2.reference = obj1;
obj1 = null;
obj2 = null;
}
}
Heap
PSYoungGen total 38400K, used 13615K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
eden space 33280K, 40% used [0x0000000795580000,0x00000007962cbc00,0x0000000797600000)
from space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
to space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
ParOldGen total 87552K, used 0K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
object space 87552K, 0% used [0x0000000740000000,0x0000000740000000,0x0000000745580000)
Metaspace used 2941K, capacity 4556K, committed 4864K, reserved 1056768K
class space used 313K, capacity 392K, committed 512K, reserved 1048576K
public class RefCountGC {
// 5MB
<p>
private byte[] bigSize = new byte[5 * 1024 * 1024];
Object reference = null;
public static void main(String[] args) {
RefCountGC obj1 = new RefCountGC();
RefCountGC obj2 = new RefCountGC();
obj1.reference = obj2;
obj2.reference = obj1;
obj1 = null;
obj2 = null;
// 顯示垃圾回收
System.gc();
}
}
</p>
[GC (System.gc()) [PSYoungGen: 12949K->535K(38400K)] 12949K->543K(125952K), 0.0011575 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (System.gc()) [PSYoungGen: 535K->0K(38400K)] [ParOldGen: 8K->442K(87552K)] 543K->442K(125952K), [Metaspace: 2937K->2937K(1056768K)], 0.0249102 secs] [Times: user=0.01 sys=0.00, real=0.03 secs]
Heap
PSYoungGen total 38400K, used 998K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
eden space 33280K, 3% used [0x0000000795580000,0x0000000795679b20,0x0000000797600000)
from space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
to space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
ParOldGen total 87552K, used 442K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
object space 87552K, 0% used [0x0000000740000000,0x000000074006eaf8,0x0000000745580000)
Metaspace used 2943K, capacity 4556K, committed 4864K, reserved 1056768K
class space used 313K, capacity 392K, committed 512K, reserved 1048576K
Disconnected from the target VM, address: '127.0.0.1:61156', transport: 'socket'
總結 3. 標記階段算法-可達性分析算法(Root Search Algorithm, Tracing Garbage 采集) 1. GC Roots
所謂“GC Roots”根集是一組必須處于活動(dòng)狀態(tài)的引用
2. GC Root收錄元素
2. 本地方法棧中JNI引用的對象(通常稱(chēng)為本地方法)
3.方法區中類(lèi)靜態(tài)屬性引用的對象
4.方法區常量引用的對象
5.同步鎖持有的所有對象synchronized
6、反映Java虛擬機內部情況的JMXBean,注冊在JVMTI中的回調,本地代碼緩存等。
7、除了這些固定的GC Roots集合外,根據用戶(hù)選擇的垃圾采集器和當前回收的內存區域,還可以“臨時(shí)”加入其他對象,組成一個(gè)完整的GC Roots集合。例如:分代采集和部分回收(Partial GC)
概括:
4、finalization機制從功能上看,finalize()方法類(lèi)似于C++中的析構函數,但Java采用了基于垃圾采集器的自動(dòng)內存管理機制,所以finalize()方法與C++中的finalize()方法有本質(zhì)區別C++由于finalize()方法的存在,虛擬機中的對象一般有三種可能的狀態(tài)。如果不能從所有根節點(diǎn)訪(fǎng)問(wèn)一個(gè)對象,則意味著(zhù)該對象不再被使用。一般來(lái)說(shuō),這個(gè)對象是需要回收的。但其實(shí)并不是“必須死”,此時(shí)他們暫時(shí)處于“緩刑”階段。不可觸及的物體在一定條件下可能會(huì )“復活”。如果是這樣,它的回收是不合理的。為此原因,定義了對象在虛擬機中的三種可能狀態(tài): 在上述三種狀態(tài)中,由于finalize()方法的存在。對象只有不可觸及才能被回收 判斷一個(gè)對象objA是否可回收?標記可達性分析執行流程
標記-可達性分析執行流程.png
5.清關(guān)階段
在成功區分內存中的活對象和死對象后,GC接下來(lái)的任務(wù)就是進(jìn)行垃圾回收,釋放無(wú)用對象占用的內存空間,以便有足夠的可用內存空間為新對象分配內存。目前JVM中常見(jiàn)的三種垃圾回收算法分別是標記-清除算法(Mark-Sweep)、復制算法(Copying)、標記-壓縮算法(Mark-Compact)
1.標記-掃描算法(Mark-Sweep)
標記清除算法(Mark-Sweep)是一種非?;A和常見(jiàn)的垃圾采集算法,由J.McCarthy等人提出。1960年應用于Lisp語(yǔ)言
注:什么是Clear 2,Mark-Copy算法
為了解決mark-sweep算法在垃圾回收效率方面的不足,MLMinsky在1963年發(fā)表了一篇著(zhù)名論文《CA LISP Garbage Collector Algorithm Using Serial Secondary Storage》。MLMinsky 在這篇論文中描述的算法被稱(chēng)為 Copying 算法,它被 MLMinsky 自己成功地引入到 Lisp 語(yǔ)言的一個(gè)實(shí)現版本中。
優(yōu)缺點(diǎn) 適用場(chǎng)景 3. Mark-compression(整理)算法
mark-compression算法的最終效果相當于執行完mark-sweep算法后進(jìn)行一次內存碎片整理。因此,它也可以稱(chēng)為“標記-清除-緊湊型(Mark-Sweep-Compact)算法”。兩者的本質(zhì)區別在于mark-sweep算法是一種“非移動(dòng)的回收算法”,而mark-compression是“移動(dòng)的”?;厥蘸笫欠褚苿?dòng)幸存的物體是一個(gè)有利也有弊的冒險決定??梢钥吹?,被標記的存活對象會(huì )根據內存地址進(jìn)行排序和排列,而未標記的內存會(huì )被清理掉。這樣,當我們需要為一個(gè)新對象分配內存時(shí),JVM只需要保存一塊內存的起始地址,
指針碰撞(Bump the Pointer):如果內存空間是有規律有序的分配,即已使用和未使用的內存各占一邊,并維護一個(gè)記錄下一次分配起點(diǎn)的標記指針彼此之間,當為新對象分配內存時(shí),只需要通過(guò)修改指針的偏移量,在第一個(gè)空閑內存位置分配新對象。這種分配方式稱(chēng)為指針沖突。
優(yōu)缺點(diǎn)總結
摘要.png
6.生成手機算法
在上述所有算法中,沒(méi)有一種算法可以完全替代其他算法,它們都有自己獨特的優(yōu)缺點(diǎn)。一代手機算法應運而生。
在HotSpot中,基于代的概念,GC使用的內存回收算法必須結合新生代和老年代的特點(diǎn)。新生代(Young Gen)和老年代(Tenured Gen)分代采集算法的應用 7.增量采集算法、分區算法
通過(guò)上述算法,應用軟件在垃圾回收過(guò)程中將處于Stop The World狀態(tài)。在Stop The World狀態(tài)下,應用的所有線(xiàn)程都會(huì )被掛起,暫停所有正常工作,等待垃圾回收完成。垃圾回收時(shí)間過(guò)長(cháng)會(huì )導致應用長(cháng)時(shí)間掛起,嚴重影響用戶(hù)體驗或系統穩定性。為了解決這個(gè)問(wèn)題,對實(shí)時(shí)垃圾采集算法的研究直接導致了增量采集(Incremental Collecting)算法的誕生
增量采集算法的基本思想
解決方案:香港多IP服務(wù)器搭建采集程序的好處有哪些
香港多IP服務(wù)器設置采集方案的好處: 1.香港服務(wù)器性能強大,均為主流配置,兼容國內常見(jiàn)的主流采集軟件市場(chǎng)化,配置也可以根據用戶(hù)的需要進(jìn)行配置調整和升級,使用方便。2.香港多IP服務(wù)器無(wú)需注冊和搭建即可使用,充分簡(jiǎn)化了網(wǎng)站的搭建過(guò)程,減少了時(shí)間成本。3、香港多IP服務(wù)器,CN2直連網(wǎng)絡(luò ),線(xiàn)路穩定,可快速抓取目標網(wǎng)站內容,為瀏覽者提供用戶(hù)體驗。4.由于香港的多IP服務(wù)器都是獨立的真實(shí)IP,
具體內容如下:
1、性能強大
雖然采集網(wǎng)站采集程序的內容可以實(shí)現采集,發(fā)布全自動(dòng)運行,本身需要的硬件資源也不大,但是如果采集規則比較復雜而且采集的數據量比較大的話(huà),對服務(wù)器的壓力還是不小的,所以一般如果要制作內容采集,至少需要4- E3以上核心CPU,保證相對較低的故障率,香港服務(wù)器 配置均為主流配置,不僅兼容市面上常見(jiàn)的主流采集軟件,還可以根據用戶(hù)的需求,使用起來(lái)非常方便
2. 無(wú)需備案即可使用
一般采集網(wǎng)站都是以站群的形式搭建為主,所以在選擇服務(wù)器的時(shí)候,主要是選擇海外的服務(wù)器進(jìn)行備案,否則備案時(shí)間很長(cháng),上百個(gè)域名一起管理。比較麻煩,但是香港服務(wù)器數據海外服務(wù)器可以在服務(wù)器交付后立即構建網(wǎng)站,充分簡(jiǎn)化了構建網(wǎng)站的過(guò)程。
3.線(xiàn)路穩定采集流暢
現在采集網(wǎng)站主要以大陸內容為主,香港服務(wù)器搭建采集網(wǎng)站優(yōu)勢明顯。香港服務(wù)器有CN2直連網(wǎng)絡(luò ),所以在采集過(guò)程中可以快速抓取目標網(wǎng)站的內容,發(fā)布也可以快速響應,瀏覽用戶(hù)的體驗也比較不錯。
4、豐富的IP資源
經(jīng)常制作采集站點(diǎn)的用戶(hù)都知道,所謂采集就是通過(guò)HTTP請求獲取內容。雖然市面上有很多支持IP偽裝的采集工具,但還是有一些可能會(huì )拒絕訪(fǎng)問(wèn),而且由于香港的多IP服務(wù)器都是獨立的真實(shí)IP,被訪(fǎng)問(wèn)的概率攔截率相對較低。 查看全部
解決方案:20-垃圾回收相關(guān)算法
1.標記階段 1.垃圾標記階段 2.標記階段算法-引用計數算法(Reference Counting)Java GC測試
public class RefCountGC {
// 5MB
private byte[] bigSize = new byte[5 * 1024 * 1024];
Object reference = null;
public static void main(String[] args) {
RefCountGC obj1 = new RefCountGC();
RefCountGC obj2 = new RefCountGC();
obj1.reference = obj2;
obj2.reference = obj1;
obj1 = null;
obj2 = null;
}
}
Heap
PSYoungGen total 38400K, used 13615K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
eden space 33280K, 40% used [0x0000000795580000,0x00000007962cbc00,0x0000000797600000)
from space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
to space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
ParOldGen total 87552K, used 0K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
object space 87552K, 0% used [0x0000000740000000,0x0000000740000000,0x0000000745580000)
Metaspace used 2941K, capacity 4556K, committed 4864K, reserved 1056768K
class space used 313K, capacity 392K, committed 512K, reserved 1048576K
public class RefCountGC {
// 5MB
<p>

private byte[] bigSize = new byte[5 * 1024 * 1024];
Object reference = null;
public static void main(String[] args) {
RefCountGC obj1 = new RefCountGC();
RefCountGC obj2 = new RefCountGC();
obj1.reference = obj2;
obj2.reference = obj1;
obj1 = null;
obj2 = null;
// 顯示垃圾回收
System.gc();
}
}
</p>
[GC (System.gc()) [PSYoungGen: 12949K->535K(38400K)] 12949K->543K(125952K), 0.0011575 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (System.gc()) [PSYoungGen: 535K->0K(38400K)] [ParOldGen: 8K->442K(87552K)] 543K->442K(125952K), [Metaspace: 2937K->2937K(1056768K)], 0.0249102 secs] [Times: user=0.01 sys=0.00, real=0.03 secs]
Heap
PSYoungGen total 38400K, used 998K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
eden space 33280K, 3% used [0x0000000795580000,0x0000000795679b20,0x0000000797600000)
from space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
to space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
ParOldGen total 87552K, used 442K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
object space 87552K, 0% used [0x0000000740000000,0x000000074006eaf8,0x0000000745580000)
Metaspace used 2943K, capacity 4556K, committed 4864K, reserved 1056768K
class space used 313K, capacity 392K, committed 512K, reserved 1048576K
Disconnected from the target VM, address: '127.0.0.1:61156', transport: 'socket'

總結 3. 標記階段算法-可達性分析算法(Root Search Algorithm, Tracing Garbage 采集) 1. GC Roots
所謂“GC Roots”根集是一組必須處于活動(dòng)狀態(tài)的引用
2. GC Root收錄元素
2. 本地方法棧中JNI引用的對象(通常稱(chēng)為本地方法)
3.方法區中類(lèi)靜態(tài)屬性引用的對象
4.方法區常量引用的對象
5.同步鎖持有的所有對象synchronized
6、反映Java虛擬機內部情況的JMXBean,注冊在JVMTI中的回調,本地代碼緩存等。
7、除了這些固定的GC Roots集合外,根據用戶(hù)選擇的垃圾采集器和當前回收的內存區域,還可以“臨時(shí)”加入其他對象,組成一個(gè)完整的GC Roots集合。例如:分代采集和部分回收(Partial GC)
概括:
4、finalization機制從功能上看,finalize()方法類(lèi)似于C++中的析構函數,但Java采用了基于垃圾采集器的自動(dòng)內存管理機制,所以finalize()方法與C++中的finalize()方法有本質(zhì)區別C++由于finalize()方法的存在,虛擬機中的對象一般有三種可能的狀態(tài)。如果不能從所有根節點(diǎn)訪(fǎng)問(wèn)一個(gè)對象,則意味著(zhù)該對象不再被使用。一般來(lái)說(shuō),這個(gè)對象是需要回收的。但其實(shí)并不是“必須死”,此時(shí)他們暫時(shí)處于“緩刑”階段。不可觸及的物體在一定條件下可能會(huì )“復活”。如果是這樣,它的回收是不合理的。為此原因,定義了對象在虛擬機中的三種可能狀態(tài): 在上述三種狀態(tài)中,由于finalize()方法的存在。對象只有不可觸及才能被回收 判斷一個(gè)對象objA是否可回收?標記可達性分析執行流程
標記-可達性分析執行流程.png
5.清關(guān)階段
在成功區分內存中的活對象和死對象后,GC接下來(lái)的任務(wù)就是進(jìn)行垃圾回收,釋放無(wú)用對象占用的內存空間,以便有足夠的可用內存空間為新對象分配內存。目前JVM中常見(jiàn)的三種垃圾回收算法分別是標記-清除算法(Mark-Sweep)、復制算法(Copying)、標記-壓縮算法(Mark-Compact)
1.標記-掃描算法(Mark-Sweep)
標記清除算法(Mark-Sweep)是一種非?;A和常見(jiàn)的垃圾采集算法,由J.McCarthy等人提出。1960年應用于Lisp語(yǔ)言
注:什么是Clear 2,Mark-Copy算法
為了解決mark-sweep算法在垃圾回收效率方面的不足,MLMinsky在1963年發(fā)表了一篇著(zhù)名論文《CA LISP Garbage Collector Algorithm Using Serial Secondary Storage》。MLMinsky 在這篇論文中描述的算法被稱(chēng)為 Copying 算法,它被 MLMinsky 自己成功地引入到 Lisp 語(yǔ)言的一個(gè)實(shí)現版本中。
優(yōu)缺點(diǎn) 適用場(chǎng)景 3. Mark-compression(整理)算法
mark-compression算法的最終效果相當于執行完mark-sweep算法后進(jìn)行一次內存碎片整理。因此,它也可以稱(chēng)為“標記-清除-緊湊型(Mark-Sweep-Compact)算法”。兩者的本質(zhì)區別在于mark-sweep算法是一種“非移動(dòng)的回收算法”,而mark-compression是“移動(dòng)的”?;厥蘸笫欠褚苿?dòng)幸存的物體是一個(gè)有利也有弊的冒險決定??梢钥吹?,被標記的存活對象會(huì )根據內存地址進(jìn)行排序和排列,而未標記的內存會(huì )被清理掉。這樣,當我們需要為一個(gè)新對象分配內存時(shí),JVM只需要保存一塊內存的起始地址,
指針碰撞(Bump the Pointer):如果內存空間是有規律有序的分配,即已使用和未使用的內存各占一邊,并維護一個(gè)記錄下一次分配起點(diǎn)的標記指針彼此之間,當為新對象分配內存時(shí),只需要通過(guò)修改指針的偏移量,在第一個(gè)空閑內存位置分配新對象。這種分配方式稱(chēng)為指針沖突。
優(yōu)缺點(diǎn)總結
摘要.png
6.生成手機算法
在上述所有算法中,沒(méi)有一種算法可以完全替代其他算法,它們都有自己獨特的優(yōu)缺點(diǎn)。一代手機算法應運而生。
在HotSpot中,基于代的概念,GC使用的內存回收算法必須結合新生代和老年代的特點(diǎn)。新生代(Young Gen)和老年代(Tenured Gen)分代采集算法的應用 7.增量采集算法、分區算法
通過(guò)上述算法,應用軟件在垃圾回收過(guò)程中將處于Stop The World狀態(tài)。在Stop The World狀態(tài)下,應用的所有線(xiàn)程都會(huì )被掛起,暫停所有正常工作,等待垃圾回收完成。垃圾回收時(shí)間過(guò)長(cháng)會(huì )導致應用長(cháng)時(shí)間掛起,嚴重影響用戶(hù)體驗或系統穩定性。為了解決這個(gè)問(wèn)題,對實(shí)時(shí)垃圾采集算法的研究直接導致了增量采集(Incremental Collecting)算法的誕生
增量采集算法的基本思想
解決方案:香港多IP服務(wù)器搭建采集程序的好處有哪些
香港多IP服務(wù)器設置采集方案的好處: 1.香港服務(wù)器性能強大,均為主流配置,兼容國內常見(jiàn)的主流采集軟件市場(chǎng)化,配置也可以根據用戶(hù)的需要進(jìn)行配置調整和升級,使用方便。2.香港多IP服務(wù)器無(wú)需注冊和搭建即可使用,充分簡(jiǎn)化了網(wǎng)站的搭建過(guò)程,減少了時(shí)間成本。3、香港多IP服務(wù)器,CN2直連網(wǎng)絡(luò ),線(xiàn)路穩定,可快速抓取目標網(wǎng)站內容,為瀏覽者提供用戶(hù)體驗。4.由于香港的多IP服務(wù)器都是獨立的真實(shí)IP,
具體內容如下:

1、性能強大
雖然采集網(wǎng)站采集程序的內容可以實(shí)現采集,發(fā)布全自動(dòng)運行,本身需要的硬件資源也不大,但是如果采集規則比較復雜而且采集的數據量比較大的話(huà),對服務(wù)器的壓力還是不小的,所以一般如果要制作內容采集,至少需要4- E3以上核心CPU,保證相對較低的故障率,香港服務(wù)器 配置均為主流配置,不僅兼容市面上常見(jiàn)的主流采集軟件,還可以根據用戶(hù)的需求,使用起來(lái)非常方便
2. 無(wú)需備案即可使用
一般采集網(wǎng)站都是以站群的形式搭建為主,所以在選擇服務(wù)器的時(shí)候,主要是選擇海外的服務(wù)器進(jìn)行備案,否則備案時(shí)間很長(cháng),上百個(gè)域名一起管理。比較麻煩,但是香港服務(wù)器數據海外服務(wù)器可以在服務(wù)器交付后立即構建網(wǎng)站,充分簡(jiǎn)化了構建網(wǎng)站的過(guò)程。

3.線(xiàn)路穩定采集流暢
現在采集網(wǎng)站主要以大陸內容為主,香港服務(wù)器搭建采集網(wǎng)站優(yōu)勢明顯。香港服務(wù)器有CN2直連網(wǎng)絡(luò ),所以在采集過(guò)程中可以快速抓取目標網(wǎng)站的內容,發(fā)布也可以快速響應,瀏覽用戶(hù)的體驗也比較不錯。
4、豐富的IP資源
經(jīng)常制作采集站點(diǎn)的用戶(hù)都知道,所謂采集就是通過(guò)HTTP請求獲取內容。雖然市面上有很多支持IP偽裝的采集工具,但還是有一些可能會(huì )拒絕訪(fǎng)問(wèn),而且由于香港的多IP服務(wù)器都是獨立的真實(shí)IP,被訪(fǎng)問(wèn)的概率攔截率相對較低。
全新產(chǎn)品:速賣(mài)通產(chǎn)品采集應用
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 196 次瀏覽 ? 2022-12-10 20:47
應用介紹:
通過(guò)這款應用,商家可以快速采集速賣(mài)通國際站上的任何商品。只需輸入您想要的采集商品id,系統會(huì )在幾分鐘內自動(dòng)將其上架至店鋪SHOPYY后臺,二次編輯后即可上架。
借助該應用,大大減少了商戶(hù)的人工操作流程,提升了頭部產(chǎn)品的效率。有效避免業(yè)務(wù)準備周期長(cháng)的問(wèn)題,可在短時(shí)間內實(shí)現網(wǎng)站上線(xiàn)運營(yíng)。
腳步:
第一步:在后臺點(diǎn)擊從應用商店安裝后,在我的應用列表中找到對應的插件,點(diǎn)擊“訪(fǎng)問(wèn)”,跳轉到設置頁(yè)面。
第二步:點(diǎn)擊“速賣(mài)通商品管理”進(jìn)入列表頁(yè)面,列表中會(huì )顯示所有采集進(jìn)口商品。
第三步:點(diǎn)擊右上角“添加速賣(mài)通商品”,進(jìn)入信息錄入頁(yè)面。
【速賣(mài)通商品ID】從速賣(mài)通網(wǎng)站復制需要采集的商品ID,獲取商品ID的方法如下圖所示:
注意:如果有多個(gè)產(chǎn)品 采集 在一起,每個(gè)產(chǎn)品 ID 應該用逗號或換行符分隔。
【商品發(fā)布語(yǔ)言】下拉選擇發(fā)布語(yǔ)言。
【商品發(fā)布市場(chǎng)】根據選擇的發(fā)布語(yǔ)言選擇對應的國家。
第四步:以上信息設置完成后,點(diǎn)擊“保存信息”,商品將進(jìn)入列表等待同步。
(1) 同步成功后,列表中會(huì )顯示同步狀態(tài)。
?。?)同步成功的商品自動(dòng)顯示在SHOPYY后臺商品下架列表中,方便上架前二次編輯。
注意:同步到SHOPYY后臺時(shí),由于圖片采集需要時(shí)間,這里的商品圖片要過(guò)幾分鐘才會(huì )顯示。
完成以上步驟后,速賣(mài)通產(chǎn)品采集就制作完成了。
解決方案:帶你了解數據采集器的存儲功能
數據采集器內存什么時(shí)候會(huì )滿(mǎn)?
滿(mǎn)了會(huì )停止存儲嗎?
數據采集器的應用是固定的,每天測量的數據大小也是固定的。為了防止數據在采集前被覆蓋,我們將使用這個(gè)文章來(lái)詳細說(shuō)明金寶數據采集器的存儲功能。
數據采集器已滿(mǎn)是什么意思?
數據采集器由很多存儲單元組成,內存大小是固定的。
如果數據未滿(mǎn),數據 采集器 不會(huì )停止存儲新數據。程序中有存儲指令。當數據已滿(mǎn)時(shí),舊數據將被新數據覆蓋。這個(gè)時(shí)間是數據采集器的最大存儲時(shí)間。為了避免數據被覆蓋,此時(shí)必須保存之前采集的數據。
滿(mǎn)倉與哪些因素有關(guān)
1) 數據可用內存大小采集器
2)分配給數據表的記錄數
3)每次記錄數據寫(xiě)入表的數據大小
4)數組的數據類(lèi)型
5) 數據存儲頻率
如何計算data采集器的內存何時(shí)滿(mǎn)
對于新數據采集器,可以使用loader讓數據采集器計算存儲時(shí)間,根據提示找到這些信息。
1)金寶數據采集器系統從OS28版本開(kāi)始。在DataTableInfo表中,程序中的每個(gè)數據表都分配了一個(gè)名為DataFillDays的表,可以找到存儲的信息?;騿螕?Campbell Data采集器 支持軟件(LoggerNet、PC400 或 PC200W)中的站點(diǎn)狀態(tài)按鈕以查看表格 FillTimes 選項卡。{注意:CR200(X)系列數據采集器不能使用此方法計算填表時(shí)間}
2) 其他條件下存儲的數據
對于存儲數據的數據表,除了時(shí)間數據,數據的默認掃描頻率采集器是數據寫(xiě)入數據表的條件。結果,DataFillDays 表會(huì )在幾分鐘或幾小時(shí)內被填滿(mǎn),這顯然不是我們需要的數據存儲時(shí)間。針對這種情況,需要通過(guò)條件來(lái)設置數據表的表大?。创鎯Χ嗌贄l),而不是讓數據采集器自動(dòng)分配數據表大小,只保留數據 采集器 用于時(shí)間存儲自動(dòng)分配的權限。
如何計算存儲在數組中的舊數據采集器的存儲時(shí)間
存儲數組:由大量的存儲單元組成,每個(gè)存儲單元可以存儲1位二進(jìn)制數據(0,1)。通常存儲單元排列成N行×M列的矩陣形式。
如果有較舊的基于數組的數據 采集器,我們可以通過(guò)每天將 62,000 內存除以數組存儲來(lái)估算存儲時(shí)間。以數組 106, 239, 1400, 22.47, 22.81, 73, 10.61 為例,它收錄 7 個(gè)數據點(diǎn),如果每小時(shí)存儲此數據,則將存儲 168 個(gè)數據點(diǎn)(24 小時(shí) * 7 個(gè)數據點(diǎn))。因此,每天 62000 個(gè)數據點(diǎn)/168 個(gè)數據點(diǎn) ≈ 369 天。您還可以存儲多個(gè)時(shí)間間隔的數據,要計算總數據點(diǎn),請將數據采集器總內存除以總數據點(diǎn)。
應該多久采集一次數據
采集和檢查數據是驗證系統是否正常運行的最直接的方法。如果系統出現故障,可以通過(guò)采集數據及時(shí)發(fā)現故障并處理,不會(huì )造成重大損失。不要等到新數據即將覆蓋舊數據時(shí)才開(kāi)始采集。多久采集一次數據取決于實(shí)際情況??傊?,要經(jīng)常采集數據,保證時(shí)間間隔不要太長(cháng)。畢竟每一個(gè)測量數據都是非常寶貴的。 查看全部
全新產(chǎn)品:速賣(mài)通產(chǎn)品采集應用
應用介紹:
通過(guò)這款應用,商家可以快速采集速賣(mài)通國際站上的任何商品。只需輸入您想要的采集商品id,系統會(huì )在幾分鐘內自動(dòng)將其上架至店鋪SHOPYY后臺,二次編輯后即可上架。
借助該應用,大大減少了商戶(hù)的人工操作流程,提升了頭部產(chǎn)品的效率。有效避免業(yè)務(wù)準備周期長(cháng)的問(wèn)題,可在短時(shí)間內實(shí)現網(wǎng)站上線(xiàn)運營(yíng)。
腳步:
第一步:在后臺點(diǎn)擊從應用商店安裝后,在我的應用列表中找到對應的插件,點(diǎn)擊“訪(fǎng)問(wèn)”,跳轉到設置頁(yè)面。
第二步:點(diǎn)擊“速賣(mài)通商品管理”進(jìn)入列表頁(yè)面,列表中會(huì )顯示所有采集進(jìn)口商品。

第三步:點(diǎn)擊右上角“添加速賣(mài)通商品”,進(jìn)入信息錄入頁(yè)面。
【速賣(mài)通商品ID】從速賣(mài)通網(wǎng)站復制需要采集的商品ID,獲取商品ID的方法如下圖所示:
注意:如果有多個(gè)產(chǎn)品 采集 在一起,每個(gè)產(chǎn)品 ID 應該用逗號或換行符分隔。
【商品發(fā)布語(yǔ)言】下拉選擇發(fā)布語(yǔ)言。
【商品發(fā)布市場(chǎng)】根據選擇的發(fā)布語(yǔ)言選擇對應的國家。

第四步:以上信息設置完成后,點(diǎn)擊“保存信息”,商品將進(jìn)入列表等待同步。
(1) 同步成功后,列表中會(huì )顯示同步狀態(tài)。
?。?)同步成功的商品自動(dòng)顯示在SHOPYY后臺商品下架列表中,方便上架前二次編輯。
注意:同步到SHOPYY后臺時(shí),由于圖片采集需要時(shí)間,這里的商品圖片要過(guò)幾分鐘才會(huì )顯示。
完成以上步驟后,速賣(mài)通產(chǎn)品采集就制作完成了。
解決方案:帶你了解數據采集器的存儲功能
數據采集器內存什么時(shí)候會(huì )滿(mǎn)?
滿(mǎn)了會(huì )停止存儲嗎?
數據采集器的應用是固定的,每天測量的數據大小也是固定的。為了防止數據在采集前被覆蓋,我們將使用這個(gè)文章來(lái)詳細說(shuō)明金寶數據采集器的存儲功能。
數據采集器已滿(mǎn)是什么意思?
數據采集器由很多存儲單元組成,內存大小是固定的。
如果數據未滿(mǎn),數據 采集器 不會(huì )停止存儲新數據。程序中有存儲指令。當數據已滿(mǎn)時(shí),舊數據將被新數據覆蓋。這個(gè)時(shí)間是數據采集器的最大存儲時(shí)間。為了避免數據被覆蓋,此時(shí)必須保存之前采集的數據。
滿(mǎn)倉與哪些因素有關(guān)

1) 數據可用內存大小采集器
2)分配給數據表的記錄數
3)每次記錄數據寫(xiě)入表的數據大小
4)數組的數據類(lèi)型
5) 數據存儲頻率
如何計算data采集器的內存何時(shí)滿(mǎn)
對于新數據采集器,可以使用loader讓數據采集器計算存儲時(shí)間,根據提示找到這些信息。
1)金寶數據采集器系統從OS28版本開(kāi)始。在DataTableInfo表中,程序中的每個(gè)數據表都分配了一個(gè)名為DataFillDays的表,可以找到存儲的信息?;騿螕?Campbell Data采集器 支持軟件(LoggerNet、PC400 或 PC200W)中的站點(diǎn)狀態(tài)按鈕以查看表格 FillTimes 選項卡。{注意:CR200(X)系列數據采集器不能使用此方法計算填表時(shí)間}

2) 其他條件下存儲的數據
對于存儲數據的數據表,除了時(shí)間數據,數據的默認掃描頻率采集器是數據寫(xiě)入數據表的條件。結果,DataFillDays 表會(huì )在幾分鐘或幾小時(shí)內被填滿(mǎn),這顯然不是我們需要的數據存儲時(shí)間。針對這種情況,需要通過(guò)條件來(lái)設置數據表的表大?。创鎯Χ嗌贄l),而不是讓數據采集器自動(dòng)分配數據表大小,只保留數據 采集器 用于時(shí)間存儲自動(dòng)分配的權限。
如何計算存儲在數組中的舊數據采集器的存儲時(shí)間
存儲數組:由大量的存儲單元組成,每個(gè)存儲單元可以存儲1位二進(jìn)制數據(0,1)。通常存儲單元排列成N行×M列的矩陣形式。
如果有較舊的基于數組的數據 采集器,我們可以通過(guò)每天將 62,000 內存除以數組存儲來(lái)估算存儲時(shí)間。以數組 106, 239, 1400, 22.47, 22.81, 73, 10.61 為例,它收錄 7 個(gè)數據點(diǎn),如果每小時(shí)存儲此數據,則將存儲 168 個(gè)數據點(diǎn)(24 小時(shí) * 7 個(gè)數據點(diǎn))。因此,每天 62000 個(gè)數據點(diǎn)/168 個(gè)數據點(diǎn) ≈ 369 天。您還可以存儲多個(gè)時(shí)間間隔的數據,要計算總數據點(diǎn),請將數據采集器總內存除以總數據點(diǎn)。
應該多久采集一次數據
采集和檢查數據是驗證系統是否正常運行的最直接的方法。如果系統出現故障,可以通過(guò)采集數據及時(shí)發(fā)現故障并處理,不會(huì )造成重大損失。不要等到新數據即將覆蓋舊數據時(shí)才開(kāi)始采集。多久采集一次數據取決于實(shí)際情況??傊?,要經(jīng)常采集數據,保證時(shí)間間隔不要太長(cháng)。畢竟每一個(gè)測量數據都是非常寶貴的。
技巧:經(jīng)驗分享:如何才能讓EXCEL計算速度更快?跑起來(lái)嗖嗖的
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 145 次瀏覽 ? 2022-12-04 12:47
筆記:
這篇文章是我給知乎的回答,分享給大家。
原問(wèn)答地址:
?。?br /> 本來(lái)打算關(guān)了電腦睡覺(jué),結果打開(kāi)知乎又看了一遍,就睡著(zhù)了,少睡了兩個(gè)小時(shí)。為了回答這個(gè)問(wèn)題,我將利用Excel的概念和方法,結合采集到的資料,對我新出版的《“懶”科技:打造財務(wù)Excel專(zhuān)家》第一章的內容進(jìn)行補充完善,修正成本盡量回答。系統化、學(xué)術(shù)化,符合知乎的專(zhuān)業(yè)性。希望對你有幫助。
當表的計算效率較低時(shí),可以考慮以下幾個(gè)方面進(jìn)行優(yōu)化:
1、首先要合理設計數據的布局,這是保證計算效率的前提
由于 Excel 以不同的速度引用此工作表、不同工作簿或工作表中的訪(fǎng)問(wèn)數據,因此計算對其他工作表的引用通常比計算工作表內的引用慢。當數據計算量較大時(shí),必須考慮數據的整體布局:數據是保存在單獨的工作簿中,還是保存在單獨的工作表中,還是保存在同一個(gè)工作表中。
基于完整性的原則,如果是列表類(lèi)型的數據表,如果可能,盡量將數據整合到同一個(gè)工作表中,至少盡量在同一個(gè)工作簿中。如果不能將它們合并到同一個(gè)工作簿中,則寧可使用少量大工作簿,也不要使用大量小工作簿。盡可能避免工作簿之間的鏈接。鏈接外部工作簿不僅會(huì )影響表格的打開(kāi)速度,而且在移動(dòng)或刪除工作簿時(shí)會(huì )造成鏈接斷開(kāi),不易查找和修復。
2. 不可避免要參考其他作業(yè)本時(shí)的提速技巧
嘗試對已關(guān)閉的工作簿使用簡(jiǎn)單的直接單元格引用。這樣做可以避免在重新計算任何工作簿時(shí)重新計算所有鏈接的工作簿。
如果不能避免使用鏈接工作簿,最好全部打開(kāi)而不是關(guān)閉,而且打開(kāi)工作表的順序也有講究,先打開(kāi)要鏈接的工作簿,再打開(kāi)收錄鏈接的工作簿。通常,從打開(kāi)的工作簿中讀取鏈接比從關(guān)閉的工作簿中讀取鏈接更快。
進(jìn)一步提速的“離家出走”方法:
Break:對于數據量較大的表格,將已經(jīng)計算出結果且不會(huì )更新的單元格的公式計算結果,通過(guò)專(zhuān)用粘貼轉換為數值,減少計算量;
處置:盡量不要在大范圍內使用需要大量計算的函數或公式。例如:條件格式和數據有效性函數雖然很強大,數組公式運算功能也很強大,但是大量使用會(huì )明顯降低計算速度,除非你愿意忍受蝸牛般的運算速度,否則,不要大規模使用數據Validation、條件格式、數組公式;
關(guān)閉:如果工作表需要大量計算,而其他工作表很少引用它,請考慮將其從本工作簿中移出。以免每次重新計算時(shí)影響工作簿的整體計算速度。
3、原創(chuàng )數據要標準化
原創(chuàng )數據必須標準化,否則會(huì )用函數公式清洗不規范的數據,增加中間環(huán)節,影響計算速度。比如數據的來(lái)源不是手動(dòng)輸入的,而是從其他系統導出的。導出的數據可能未標準化。比如數字是文本格式,數字后面有空格,還有不可見(jiàn)字符。這些數據不能直接參與計算。如果不手動(dòng)去組織標準化的數據,就不得不使用函數公式來(lái)避免,這大大影響了計算速度。
4、注意公式函數的計算效率,盡量使用效率高的函數,或者改用其他函數。
1.除非必要,否則不要使用變量函數(volatile functions)。
Excel的變量函數有:RAND、NOW、TODAY、OFFSET、CELL、INDIRECT和INFO。變量函數有一個(gè)特點(diǎn),當值發(fā)生變化時(shí),每次都要重新計算,會(huì )影響表的計算性能。
例如,我們經(jīng)常使用下面的公式來(lái)定義動(dòng)態(tài)區域:
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)
優(yōu)點(diǎn)是會(huì )自動(dòng)擴充收錄新條目,但是會(huì )降低表的計算性能,因為OFFSET是volatile函數,而且OFFSET中的COUNTA函數要查很多行,計算效率較低.
一般情況下,我們可以使用Excel的表格函數來(lái)代替動(dòng)態(tài)范圍(Excel 2003中稱(chēng)為list)。
2. 使用其他行和列計算并存儲一次中間結果,以便在其他公式中重復使用。并且,如前所述,盡可能多地參考其他cell已有的計算結果,可以提高計算效率。
在單元格 C2 中輸入公式:
=SUM($A$2:$A2)
然后將公式填寫(xiě)到 C2000。如上所示。B列的公式是前面累加的結果加上這一行的數字。B列的公式是指上一行單元格的計算結果。B列公式與C列公式相比,引用單元格總數減少了500倍,計算量大大減少。
3. 減少每個(gè)公式中的引用數量,最大限度地減少函數中引用的單元格范圍。
雖然數組公式可以在 Excel 2007 之后的版本中處理整列引用,但這會(huì )強制計算列中的所有單元格,包括空單元格。這會(huì )使表計算非常慢。
4、盡量使用最有效的函數(一般自定義函數比Excel內置函數慢),準備合適的公式,盡量減少公式的計算次數
=IF(ISERROR(VLOOKUP("龍一凡",$A$2:$C$1000,3,0)),"沒(méi)有這個(gè)人",VLOOKUP("龍一凡",$A$2:$C$1000, 3 ,0))
如果表格A2:A1000中有“龍一帆”,使用上面的公式,Excel會(huì )計算兩次VLOOKUP函數。在Excel 2007之后的版本中,可以使用IFERROR來(lái)減少操作次數:
=IFERROR(VLOOKUP("龍一凡",$A$2:$C$1000,3,0),"沒(méi)有找到這個(gè)人")
5.非必要不要使用會(huì )觸發(fā)重新計算的操作
以下操作會(huì )觸發(fā)重新計算:
1. 在自動(dòng)模式下單擊:?jiǎn)螕粜谢蛄蟹指舴?br /> 2. 在工作表中插入或刪除行、列或單元格。
3. 添加、更改或刪除定義的名稱(chēng)。
4. 重命名工作表或在自動(dòng)模式下更改工作表位置。
5. 使用過(guò)濾器,隱藏或取消隱藏表中的行。
6. 以自動(dòng)模式打開(kāi)工作簿。如果工作簿上次由不同版本的 Excel 計算,則打開(kāi)工作簿通常會(huì )導致完整計算。
7. 以手動(dòng)模式保存工作簿,并選中“保存前自動(dòng)重新計算”選項。
6. 如果可能,在使用查找引用之前對數據進(jìn)行排序。盡可能避免對未排序的數據執行查找,因為它們很慢。
1. 如果使用精確匹配選項,則函數的計算時(shí)間與找到匹配之前掃描的單元格數成正比。對于大面積執行的查找,這個(gè)時(shí)間可能會(huì )很長(cháng)。使用 VLOOKUP、HLOOKUP 和 MATCH 的近似匹配選項對已排序數據的查找時(shí)間很短,并且不會(huì )顯著(zhù)增加,具體取決于要查找的區域的長(cháng)度。
2. 由于精確匹配查找可能很慢,您應該考慮使用以下可以提高性能的方法:
? 使用工作表。使同一工作表中的查找和數據運行得更快。
? 如果可以,先對數據進(jìn)行排序,使用近似匹配。
?如果必須使用精確匹配搜索,請將掃描的單元格范圍限制在最小范圍內。使用動(dòng)態(tài)范圍名稱(chēng)或表(列表)函數,而不是引用大量的行或列。
7、前面四點(diǎn)都實(shí)現后,如果表格的計算速度還是很慢,將Excel的計算方式改為手動(dòng)計算,需要的時(shí)候再重新計算。
在手動(dòng)計算模式下,按[F9]可以觸發(fā)智能重新計算。使用 [Shift+F9] 僅重新計算選定的工作表,按 [Ctrl+Alt+F9] 強制完全計算所有公式,或按 [Ctrl+Shift+Alt+F9] 強制完全重建依賴(lài)關(guān)系和執行完成計算。
F9 計算所有打開(kāi)的工作簿中的所有工作表。
按 Shift+F9 計算活動(dòng)工作表。
按 Ctrl+Alt+F9 可計算所有打開(kāi)的工作簿中的所有工作表,而不管它們自上次計算以來(lái)是否發(fā)生了變化。
如果按 Ctrl+Alt+Shift+F9,將重新檢查相關(guān)公式,然后計算所有打開(kāi)的工作簿中的所有單元格,包括未標記為計算的單元格。
解決方案:利用人人站CMS插件讓網(wǎng)站快速收錄以及關(guān)鍵詞排名
應該如何使用人人網(wǎng)cms插件讓網(wǎng)站快速收錄和關(guān)鍵詞排名。多年來(lái),為了營(yíng)造良好的搜索生態(tài)環(huán)境,百度煞費苦心。推出各種算法整治網(wǎng)站,在互聯(lián)網(wǎng)行業(yè)引起不小風(fēng)波。像青峰算法、Beacon算法、Drizzle算法等,每一次算法改動(dòng)都會(huì )震動(dòng)大量的網(wǎng)站,尤其是那些用戶(hù)體驗極差、通過(guò)作弊手段優(yōu)化的網(wǎng)站受到影響。用力打。所以由此,我們應該認識到,網(wǎng)站優(yōu)化必須堅持白帽技術(shù),以用戶(hù)體驗為中心。和作者一樣,所有的優(yōu)化都是基于用戶(hù)體驗。高質(zhì)量的內容和清晰的 網(wǎng)站 結構可以大大增加用戶(hù)的喜愛(ài)度,打下堅實(shí)的基礎。自然不會(huì )怕百度算法影響排名。
網(wǎng)站被黑影響排名:網(wǎng)站被黑也讓很多站長(cháng)束手無(wú)策,防不勝防。網(wǎng)站不言而喻,每個(gè)人都知道被黑客攻擊的嚴重性。網(wǎng)站被黑客攻擊的影響不僅僅是流量異常那么簡(jiǎn)單。網(wǎng)站被黑,首先網(wǎng)站的名譽(yù)會(huì )大大降低。嚴重的話(huà),好不容易積累起來(lái)的良好信用也會(huì )被一口氣毀掉,面臨網(wǎng)站被黑的風(fēng)險。而如果網(wǎng)站被標記為危險網(wǎng)站,那么百度搜索引擎對網(wǎng)站的好感度也會(huì )急劇下降,他們不會(huì )光顧你的網(wǎng)站,更不會(huì )期待它也給你排名。因此,我們在做網(wǎng)站優(yōu)化的時(shí)候,
網(wǎng)站結構影響排名:網(wǎng)站 結構對排名優(yōu)化也有一定的影響,主要體現在兩個(gè)方面:用戶(hù)體驗和搜索引擎蜘蛛抓取的方便性。網(wǎng)站結構優(yōu)化是樹(shù)狀結構還是扁平結構,層次會(huì )更清晰,用戶(hù)體驗會(huì )更好,方便用戶(hù)獲取網(wǎng)站信息,也能讓用戶(hù)注意到其他精彩內容展示。因此感興趣。同時(shí)也可以引導百度蜘蛛有序的沿著(zhù)結構,逐層爬取索引。
競爭對手網(wǎng)站優(yōu)化影響排名:就像我們在比賽中所做的,這次你獲得了第一頁(yè),但如果你在后期不繼續努力保持分數,那么你將面臨有在接下來(lái)的比賽中被排擠出名次的危險。所以在關(guān)鍵詞優(yōu)化中,為了從競爭對手中脫穎而出,我們在優(yōu)化網(wǎng)站的時(shí)候,需要分析關(guān)鍵詞,選擇關(guān)鍵詞來(lái)優(yōu)化競爭小,但是搜索量高的詞,其次,不斷提高優(yōu)化技巧,注重優(yōu)化的細節,在內容上堅持優(yōu)質(zhì)內容。
高質(zhì)量、有需求的 原創(chuàng ) 內容:高質(zhì)量 文章 內容是一個(gè)常見(jiàn)的話(huà)題,這恰恰說(shuō)明了它的重要性。也就是說(shuō),如果你的網(wǎng)站內容質(zhì)量低,用戶(hù)自然不會(huì )喜歡它,而對于百度搜索引擎來(lái)說(shuō),如果有很多用戶(hù)喜歡網(wǎng)站,它也會(huì )認為它是有價(jià)值的網(wǎng)站,通常捐贈 收錄 也會(huì )增加。但是如果你的網(wǎng)站糟糕到用戶(hù)一刻都不想停留,你怎么能讓搜索引擎蜘蛛喜歡你的網(wǎng)站呢?搜索引擎蜘蛛不會(huì )抓取內容,那么排名呢?我們可以使用人人網(wǎng)cms插件快速制作網(wǎng)站收錄和關(guān)鍵詞排名。
1.根據關(guān)鍵詞采集文章,通過(guò)人人站cms插件采集填寫(xiě)內容。(人人網(wǎng)cms插件還自帶關(guān)鍵詞采集功能)
2.自動(dòng)過(guò)濾其他網(wǎng)站推廣信息/支持其他網(wǎng)站信息替換
3. 支持多采集來(lái)源采集(涵蓋所有行業(yè)新聞來(lái)源[新聞來(lái)源權威可讀],海量?jì)热輲?,采集內容新鮮)
4.支持圖片本地化或存儲到其他平臺
5.全自動(dòng)批量掛機采集,無(wú)縫對接各大cms發(fā)布商,采集偽原創(chuàng )自動(dòng)發(fā)布并推送至搜索引擎
這個(gè)人人站cms插件工具還搭載了很多SEO功能,不僅可以通過(guò)人人站cms插件實(shí)現采集偽原創(chuàng )發(fā)布,還有很多搜索引擎優(yōu)化功能??梢栽黾雨P(guān)鍵詞密度,增加頁(yè)面原創(chuàng )度,增加用戶(hù)體驗,實(shí)現優(yōu)質(zhì)內容。
1.設置標題的前綴和后綴(標題的區分度更好收錄)
2.內容關(guān)鍵詞插入(合理增加關(guān)鍵詞密度)
3.隨機圖片插入(文章沒(méi)有圖片可以隨機插入相關(guān)圖片)
4、搜索引擎推送(文章發(fā)布成功后,主動(dòng)將文章推送給搜索引擎,保證新鏈接能及時(shí)被搜索引擎收錄獲?。?br /> 5.隨機點(diǎn)贊-隨機閱讀-隨機作者(增加頁(yè)面原創(chuàng )度)
6.內容與標題一致(使內容與標題一致)
7、自動(dòng)內鏈(在執行發(fā)布任務(wù)時(shí),在文章內容中自動(dòng)生成內鏈,有助于引導頁(yè)面蜘蛛爬行,增加頁(yè)面權重)
8、定時(shí)發(fā)布(定時(shí)發(fā)布網(wǎng)站內容可以讓搜索引擎養成定時(shí)抓取網(wǎng)頁(yè)的習慣,從而提高網(wǎng)站的收錄)
可以統一管理數十萬(wàn)個(gè)不同的cms網(wǎng)站。一個(gè)人維護數百個(gè)網(wǎng)站文章更新不是問(wèn)題。
1. 批量監控不同的cms網(wǎng)站數據(無(wú)論你的網(wǎng)站是帝國、易游、ZBLOG、織夢(mèng)、WP、小旋風(fēng)、站群、PB、蘋(píng)果、搜外等各大cms,可以同時(shí)管理和批量發(fā)布的工具)
2.設置批量發(fā)布次數(可設置發(fā)布間隔/每天發(fā)布總數)
3.可以設置不同的關(guān)鍵詞文章發(fā)布不同的欄目
4、偽原創(chuàng )保留字(在文章原創(chuàng )中設置核心字不要為偽原創(chuàng ))
5、軟件直接監控已發(fā)布、待發(fā)布、是否偽原創(chuàng )、發(fā)布狀態(tài)、URL、程序、發(fā)布時(shí)間等。
6、通過(guò)軟件可以直接查看蜘蛛、收錄、網(wǎng)站的每日體重
我們需要注意的一件事是,SEO優(yōu)化排名有時(shí)會(huì )發(fā)生變化是正常的。例如,外部鏈接中死鏈接的出現會(huì )引起排名的變化。如果是老站,權重高,異常鏈接也會(huì )影響排名。但是像那些大的網(wǎng)站,它的權重比較高,一點(diǎn)點(diǎn)外鏈對他影響不大。如果你的是新站,結果會(huì )不一樣。
其次,每個(gè)網(wǎng)站的SEO優(yōu)化一定要提前分析好,這樣以后的排名結果才會(huì )在你的預期之內,才不會(huì )像無(wú)頭雞一樣迷失方向。你要提前看好關(guān)鍵詞,只有確定了關(guān)鍵詞才去做。這樣會(huì )降低難度,否則沒(méi)有結果你就去優(yōu)化。
新站優(yōu)化一般三個(gè)月內沒(méi)有排名,即使有排名也只是偽排名?;蛘哒f(shuō),可以說(shuō)是可有可無(wú)。也許今天有排名,明天就沒(méi)有了。一周后有排名,但還是會(huì )下降。為什么是這樣?這是因為百度處理數據的時(shí)候,有些人網(wǎng)站倒下了,你的就上來(lái)了,然后百度給你處理數據的時(shí)候,你的排名就沒(méi)有了。也就是說(shuō),三個(gè)月之內,你的網(wǎng)站將沒(méi)有排名的能力,因為百度有一個(gè)檢驗期(沙盒期)。
網(wǎng)站關(guān)鍵詞的選擇,一些新站長(cháng)在不知不覺(jué)中選擇了難的關(guān)鍵詞。這樣的后果可想而知,簡(jiǎn)直是打中打。不要目標太高,這樣做會(huì )打擊你的信心。如果選擇關(guān)鍵詞,也是優(yōu)化的重要一步。關(guān)鍵詞選的好,不僅會(huì )有流量,而且優(yōu)化難度也不高。這是關(guān)于分析。
優(yōu)化網(wǎng)站關(guān)鍵詞當然要分析,不然怎么優(yōu)化。有的站長(cháng)會(huì )說(shuō),你發(fā)原創(chuàng ),發(fā)高質(zhì)量的外鏈,堅持下去,一定能讓關(guān)鍵詞上去。那就大錯特錯了,seo高手是不會(huì )這么做的,即使有,偶爾也會(huì )這么做。高手是分析,分析百度的數據,做好自己的網(wǎng)站,排名就會(huì )慢慢上升。
具體是怎么分析的?每個(gè)行業(yè),每個(gè)關(guān)鍵詞都有不同的數據,很難統一。例如:網(wǎng)站從事婚紗攝影。想要拍出“三亞婚紗攝影”這個(gè)詞,接下來(lái)我們就要研究一下,想拍三亞婚紗攝影的用戶(hù)到底想看什么?第二個(gè)是什么?,也就是三亞婚紗攝影的圖片,不信可以搜索“三亞婚紗攝影”,百度圖片第一。也就是說(shuō),百度需要的是三亞的婚紗攝影圖片。如果你的 網(wǎng)站 有高質(zhì)量的圖片,百度就會(huì )給你排名。如果這還不夠排名,讓我們看看下一步是什么?想拍婚紗照的都想知道價(jià)格是多少。也就是說(shuō),如果我們 網(wǎng)站 有高質(zhì)量的圖片,價(jià)格也注明了。這樣才能更好的滿(mǎn)足用戶(hù)的需求。還是那句話(huà),想拍婚紗照的人一定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。想拍婚紗照的人,肯定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。想拍婚紗照的人,肯定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。
看完這篇文章,如果您覺(jué)得還不錯,不妨采集或轉發(fā)給需要的朋友和同事。每天跟隨博主帶你了解各種SEO經(jīng)驗,打通你的二脈! 查看全部
技巧:經(jīng)驗分享:如何才能讓EXCEL計算速度更快?跑起來(lái)嗖嗖的
筆記:
這篇文章是我給知乎的回答,分享給大家。
原問(wèn)答地址:
?。?br /> 本來(lái)打算關(guān)了電腦睡覺(jué),結果打開(kāi)知乎又看了一遍,就睡著(zhù)了,少睡了兩個(gè)小時(shí)。為了回答這個(gè)問(wèn)題,我將利用Excel的概念和方法,結合采集到的資料,對我新出版的《“懶”科技:打造財務(wù)Excel專(zhuān)家》第一章的內容進(jìn)行補充完善,修正成本盡量回答。系統化、學(xué)術(shù)化,符合知乎的專(zhuān)業(yè)性。希望對你有幫助。
當表的計算效率較低時(shí),可以考慮以下幾個(gè)方面進(jìn)行優(yōu)化:
1、首先要合理設計數據的布局,這是保證計算效率的前提
由于 Excel 以不同的速度引用此工作表、不同工作簿或工作表中的訪(fǎng)問(wèn)數據,因此計算對其他工作表的引用通常比計算工作表內的引用慢。當數據計算量較大時(shí),必須考慮數據的整體布局:數據是保存在單獨的工作簿中,還是保存在單獨的工作表中,還是保存在同一個(gè)工作表中。
基于完整性的原則,如果是列表類(lèi)型的數據表,如果可能,盡量將數據整合到同一個(gè)工作表中,至少盡量在同一個(gè)工作簿中。如果不能將它們合并到同一個(gè)工作簿中,則寧可使用少量大工作簿,也不要使用大量小工作簿。盡可能避免工作簿之間的鏈接。鏈接外部工作簿不僅會(huì )影響表格的打開(kāi)速度,而且在移動(dòng)或刪除工作簿時(shí)會(huì )造成鏈接斷開(kāi),不易查找和修復。
2. 不可避免要參考其他作業(yè)本時(shí)的提速技巧
嘗試對已關(guān)閉的工作簿使用簡(jiǎn)單的直接單元格引用。這樣做可以避免在重新計算任何工作簿時(shí)重新計算所有鏈接的工作簿。
如果不能避免使用鏈接工作簿,最好全部打開(kāi)而不是關(guān)閉,而且打開(kāi)工作表的順序也有講究,先打開(kāi)要鏈接的工作簿,再打開(kāi)收錄鏈接的工作簿。通常,從打開(kāi)的工作簿中讀取鏈接比從關(guān)閉的工作簿中讀取鏈接更快。
進(jìn)一步提速的“離家出走”方法:
Break:對于數據量較大的表格,將已經(jīng)計算出結果且不會(huì )更新的單元格的公式計算結果,通過(guò)專(zhuān)用粘貼轉換為數值,減少計算量;
處置:盡量不要在大范圍內使用需要大量計算的函數或公式。例如:條件格式和數據有效性函數雖然很強大,數組公式運算功能也很強大,但是大量使用會(huì )明顯降低計算速度,除非你愿意忍受蝸牛般的運算速度,否則,不要大規模使用數據Validation、條件格式、數組公式;
關(guān)閉:如果工作表需要大量計算,而其他工作表很少引用它,請考慮將其從本工作簿中移出。以免每次重新計算時(shí)影響工作簿的整體計算速度。
3、原創(chuàng )數據要標準化
原創(chuàng )數據必須標準化,否則會(huì )用函數公式清洗不規范的數據,增加中間環(huán)節,影響計算速度。比如數據的來(lái)源不是手動(dòng)輸入的,而是從其他系統導出的。導出的數據可能未標準化。比如數字是文本格式,數字后面有空格,還有不可見(jiàn)字符。這些數據不能直接參與計算。如果不手動(dòng)去組織標準化的數據,就不得不使用函數公式來(lái)避免,這大大影響了計算速度。
4、注意公式函數的計算效率,盡量使用效率高的函數,或者改用其他函數。

1.除非必要,否則不要使用變量函數(volatile functions)。
Excel的變量函數有:RAND、NOW、TODAY、OFFSET、CELL、INDIRECT和INFO。變量函數有一個(gè)特點(diǎn),當值發(fā)生變化時(shí),每次都要重新計算,會(huì )影響表的計算性能。
例如,我們經(jīng)常使用下面的公式來(lái)定義動(dòng)態(tài)區域:
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)
優(yōu)點(diǎn)是會(huì )自動(dòng)擴充收錄新條目,但是會(huì )降低表的計算性能,因為OFFSET是volatile函數,而且OFFSET中的COUNTA函數要查很多行,計算效率較低.
一般情況下,我們可以使用Excel的表格函數來(lái)代替動(dòng)態(tài)范圍(Excel 2003中稱(chēng)為list)。
2. 使用其他行和列計算并存儲一次中間結果,以便在其他公式中重復使用。并且,如前所述,盡可能多地參考其他cell已有的計算結果,可以提高計算效率。
在單元格 C2 中輸入公式:
=SUM($A$2:$A2)
然后將公式填寫(xiě)到 C2000。如上所示。B列的公式是前面累加的結果加上這一行的數字。B列的公式是指上一行單元格的計算結果。B列公式與C列公式相比,引用單元格總數減少了500倍,計算量大大減少。
3. 減少每個(gè)公式中的引用數量,最大限度地減少函數中引用的單元格范圍。
雖然數組公式可以在 Excel 2007 之后的版本中處理整列引用,但這會(huì )強制計算列中的所有單元格,包括空單元格。這會(huì )使表計算非常慢。
4、盡量使用最有效的函數(一般自定義函數比Excel內置函數慢),準備合適的公式,盡量減少公式的計算次數
=IF(ISERROR(VLOOKUP("龍一凡",$A$2:$C$1000,3,0)),"沒(méi)有這個(gè)人",VLOOKUP("龍一凡",$A$2:$C$1000, 3 ,0))
如果表格A2:A1000中有“龍一帆”,使用上面的公式,Excel會(huì )計算兩次VLOOKUP函數。在Excel 2007之后的版本中,可以使用IFERROR來(lái)減少操作次數:
=IFERROR(VLOOKUP("龍一凡",$A$2:$C$1000,3,0),"沒(méi)有找到這個(gè)人")
5.非必要不要使用會(huì )觸發(fā)重新計算的操作
以下操作會(huì )觸發(fā)重新計算:

1. 在自動(dòng)模式下單擊:?jiǎn)螕粜谢蛄蟹指舴?br /> 2. 在工作表中插入或刪除行、列或單元格。
3. 添加、更改或刪除定義的名稱(chēng)。
4. 重命名工作表或在自動(dòng)模式下更改工作表位置。
5. 使用過(guò)濾器,隱藏或取消隱藏表中的行。
6. 以自動(dòng)模式打開(kāi)工作簿。如果工作簿上次由不同版本的 Excel 計算,則打開(kāi)工作簿通常會(huì )導致完整計算。
7. 以手動(dòng)模式保存工作簿,并選中“保存前自動(dòng)重新計算”選項。
6. 如果可能,在使用查找引用之前對數據進(jìn)行排序。盡可能避免對未排序的數據執行查找,因為它們很慢。
1. 如果使用精確匹配選項,則函數的計算時(shí)間與找到匹配之前掃描的單元格數成正比。對于大面積執行的查找,這個(gè)時(shí)間可能會(huì )很長(cháng)。使用 VLOOKUP、HLOOKUP 和 MATCH 的近似匹配選項對已排序數據的查找時(shí)間很短,并且不會(huì )顯著(zhù)增加,具體取決于要查找的區域的長(cháng)度。
2. 由于精確匹配查找可能很慢,您應該考慮使用以下可以提高性能的方法:
? 使用工作表。使同一工作表中的查找和數據運行得更快。
? 如果可以,先對數據進(jìn)行排序,使用近似匹配。
?如果必須使用精確匹配搜索,請將掃描的單元格范圍限制在最小范圍內。使用動(dòng)態(tài)范圍名稱(chēng)或表(列表)函數,而不是引用大量的行或列。
7、前面四點(diǎn)都實(shí)現后,如果表格的計算速度還是很慢,將Excel的計算方式改為手動(dòng)計算,需要的時(shí)候再重新計算。
在手動(dòng)計算模式下,按[F9]可以觸發(fā)智能重新計算。使用 [Shift+F9] 僅重新計算選定的工作表,按 [Ctrl+Alt+F9] 強制完全計算所有公式,或按 [Ctrl+Shift+Alt+F9] 強制完全重建依賴(lài)關(guān)系和執行完成計算。
F9 計算所有打開(kāi)的工作簿中的所有工作表。
按 Shift+F9 計算活動(dòng)工作表。
按 Ctrl+Alt+F9 可計算所有打開(kāi)的工作簿中的所有工作表,而不管它們自上次計算以來(lái)是否發(fā)生了變化。
如果按 Ctrl+Alt+Shift+F9,將重新檢查相關(guān)公式,然后計算所有打開(kāi)的工作簿中的所有單元格,包括未標記為計算的單元格。
解決方案:利用人人站CMS插件讓網(wǎng)站快速收錄以及關(guān)鍵詞排名
應該如何使用人人網(wǎng)cms插件讓網(wǎng)站快速收錄和關(guān)鍵詞排名。多年來(lái),為了營(yíng)造良好的搜索生態(tài)環(huán)境,百度煞費苦心。推出各種算法整治網(wǎng)站,在互聯(lián)網(wǎng)行業(yè)引起不小風(fēng)波。像青峰算法、Beacon算法、Drizzle算法等,每一次算法改動(dòng)都會(huì )震動(dòng)大量的網(wǎng)站,尤其是那些用戶(hù)體驗極差、通過(guò)作弊手段優(yōu)化的網(wǎng)站受到影響。用力打。所以由此,我們應該認識到,網(wǎng)站優(yōu)化必須堅持白帽技術(shù),以用戶(hù)體驗為中心。和作者一樣,所有的優(yōu)化都是基于用戶(hù)體驗。高質(zhì)量的內容和清晰的 網(wǎng)站 結構可以大大增加用戶(hù)的喜愛(ài)度,打下堅實(shí)的基礎。自然不會(huì )怕百度算法影響排名。
網(wǎng)站被黑影響排名:網(wǎng)站被黑也讓很多站長(cháng)束手無(wú)策,防不勝防。網(wǎng)站不言而喻,每個(gè)人都知道被黑客攻擊的嚴重性。網(wǎng)站被黑客攻擊的影響不僅僅是流量異常那么簡(jiǎn)單。網(wǎng)站被黑,首先網(wǎng)站的名譽(yù)會(huì )大大降低。嚴重的話(huà),好不容易積累起來(lái)的良好信用也會(huì )被一口氣毀掉,面臨網(wǎng)站被黑的風(fēng)險。而如果網(wǎng)站被標記為危險網(wǎng)站,那么百度搜索引擎對網(wǎng)站的好感度也會(huì )急劇下降,他們不會(huì )光顧你的網(wǎng)站,更不會(huì )期待它也給你排名。因此,我們在做網(wǎng)站優(yōu)化的時(shí)候,
網(wǎng)站結構影響排名:網(wǎng)站 結構對排名優(yōu)化也有一定的影響,主要體現在兩個(gè)方面:用戶(hù)體驗和搜索引擎蜘蛛抓取的方便性。網(wǎng)站結構優(yōu)化是樹(shù)狀結構還是扁平結構,層次會(huì )更清晰,用戶(hù)體驗會(huì )更好,方便用戶(hù)獲取網(wǎng)站信息,也能讓用戶(hù)注意到其他精彩內容展示。因此感興趣。同時(shí)也可以引導百度蜘蛛有序的沿著(zhù)結構,逐層爬取索引。
競爭對手網(wǎng)站優(yōu)化影響排名:就像我們在比賽中所做的,這次你獲得了第一頁(yè),但如果你在后期不繼續努力保持分數,那么你將面臨有在接下來(lái)的比賽中被排擠出名次的危險。所以在關(guān)鍵詞優(yōu)化中,為了從競爭對手中脫穎而出,我們在優(yōu)化網(wǎng)站的時(shí)候,需要分析關(guān)鍵詞,選擇關(guān)鍵詞來(lái)優(yōu)化競爭小,但是搜索量高的詞,其次,不斷提高優(yōu)化技巧,注重優(yōu)化的細節,在內容上堅持優(yōu)質(zhì)內容。
高質(zhì)量、有需求的 原創(chuàng ) 內容:高質(zhì)量 文章 內容是一個(gè)常見(jiàn)的話(huà)題,這恰恰說(shuō)明了它的重要性。也就是說(shuō),如果你的網(wǎng)站內容質(zhì)量低,用戶(hù)自然不會(huì )喜歡它,而對于百度搜索引擎來(lái)說(shuō),如果有很多用戶(hù)喜歡網(wǎng)站,它也會(huì )認為它是有價(jià)值的網(wǎng)站,通常捐贈 收錄 也會(huì )增加。但是如果你的網(wǎng)站糟糕到用戶(hù)一刻都不想停留,你怎么能讓搜索引擎蜘蛛喜歡你的網(wǎng)站呢?搜索引擎蜘蛛不會(huì )抓取內容,那么排名呢?我們可以使用人人網(wǎng)cms插件快速制作網(wǎng)站收錄和關(guān)鍵詞排名。
1.根據關(guān)鍵詞采集文章,通過(guò)人人站cms插件采集填寫(xiě)內容。(人人網(wǎng)cms插件還自帶關(guān)鍵詞采集功能)
2.自動(dòng)過(guò)濾其他網(wǎng)站推廣信息/支持其他網(wǎng)站信息替換
3. 支持多采集來(lái)源采集(涵蓋所有行業(yè)新聞來(lái)源[新聞來(lái)源權威可讀],海量?jì)热輲?,采集內容新鮮)
4.支持圖片本地化或存儲到其他平臺
5.全自動(dòng)批量掛機采集,無(wú)縫對接各大cms發(fā)布商,采集偽原創(chuàng )自動(dòng)發(fā)布并推送至搜索引擎

這個(gè)人人站cms插件工具還搭載了很多SEO功能,不僅可以通過(guò)人人站cms插件實(shí)現采集偽原創(chuàng )發(fā)布,還有很多搜索引擎優(yōu)化功能??梢栽黾雨P(guān)鍵詞密度,增加頁(yè)面原創(chuàng )度,增加用戶(hù)體驗,實(shí)現優(yōu)質(zhì)內容。
1.設置標題的前綴和后綴(標題的區分度更好收錄)
2.內容關(guān)鍵詞插入(合理增加關(guān)鍵詞密度)
3.隨機圖片插入(文章沒(méi)有圖片可以隨機插入相關(guān)圖片)
4、搜索引擎推送(文章發(fā)布成功后,主動(dòng)將文章推送給搜索引擎,保證新鏈接能及時(shí)被搜索引擎收錄獲?。?br /> 5.隨機點(diǎn)贊-隨機閱讀-隨機作者(增加頁(yè)面原創(chuàng )度)
6.內容與標題一致(使內容與標題一致)
7、自動(dòng)內鏈(在執行發(fā)布任務(wù)時(shí),在文章內容中自動(dòng)生成內鏈,有助于引導頁(yè)面蜘蛛爬行,增加頁(yè)面權重)
8、定時(shí)發(fā)布(定時(shí)發(fā)布網(wǎng)站內容可以讓搜索引擎養成定時(shí)抓取網(wǎng)頁(yè)的習慣,從而提高網(wǎng)站的收錄)
可以統一管理數十萬(wàn)個(gè)不同的cms網(wǎng)站。一個(gè)人維護數百個(gè)網(wǎng)站文章更新不是問(wèn)題。
1. 批量監控不同的cms網(wǎng)站數據(無(wú)論你的網(wǎng)站是帝國、易游、ZBLOG、織夢(mèng)、WP、小旋風(fēng)、站群、PB、蘋(píng)果、搜外等各大cms,可以同時(shí)管理和批量發(fā)布的工具)

2.設置批量發(fā)布次數(可設置發(fā)布間隔/每天發(fā)布總數)
3.可以設置不同的關(guān)鍵詞文章發(fā)布不同的欄目
4、偽原創(chuàng )保留字(在文章原創(chuàng )中設置核心字不要為偽原創(chuàng ))
5、軟件直接監控已發(fā)布、待發(fā)布、是否偽原創(chuàng )、發(fā)布狀態(tài)、URL、程序、發(fā)布時(shí)間等。
6、通過(guò)軟件可以直接查看蜘蛛、收錄、網(wǎng)站的每日體重
我們需要注意的一件事是,SEO優(yōu)化排名有時(shí)會(huì )發(fā)生變化是正常的。例如,外部鏈接中死鏈接的出現會(huì )引起排名的變化。如果是老站,權重高,異常鏈接也會(huì )影響排名。但是像那些大的網(wǎng)站,它的權重比較高,一點(diǎn)點(diǎn)外鏈對他影響不大。如果你的是新站,結果會(huì )不一樣。
其次,每個(gè)網(wǎng)站的SEO優(yōu)化一定要提前分析好,這樣以后的排名結果才會(huì )在你的預期之內,才不會(huì )像無(wú)頭雞一樣迷失方向。你要提前看好關(guān)鍵詞,只有確定了關(guān)鍵詞才去做。這樣會(huì )降低難度,否則沒(méi)有結果你就去優(yōu)化。
新站優(yōu)化一般三個(gè)月內沒(méi)有排名,即使有排名也只是偽排名?;蛘哒f(shuō),可以說(shuō)是可有可無(wú)。也許今天有排名,明天就沒(méi)有了。一周后有排名,但還是會(huì )下降。為什么是這樣?這是因為百度處理數據的時(shí)候,有些人網(wǎng)站倒下了,你的就上來(lái)了,然后百度給你處理數據的時(shí)候,你的排名就沒(méi)有了。也就是說(shuō),三個(gè)月之內,你的網(wǎng)站將沒(méi)有排名的能力,因為百度有一個(gè)檢驗期(沙盒期)。
網(wǎng)站關(guān)鍵詞的選擇,一些新站長(cháng)在不知不覺(jué)中選擇了難的關(guān)鍵詞。這樣的后果可想而知,簡(jiǎn)直是打中打。不要目標太高,這樣做會(huì )打擊你的信心。如果選擇關(guān)鍵詞,也是優(yōu)化的重要一步。關(guān)鍵詞選的好,不僅會(huì )有流量,而且優(yōu)化難度也不高。這是關(guān)于分析。
優(yōu)化網(wǎng)站關(guān)鍵詞當然要分析,不然怎么優(yōu)化。有的站長(cháng)會(huì )說(shuō),你發(fā)原創(chuàng ),發(fā)高質(zhì)量的外鏈,堅持下去,一定能讓關(guān)鍵詞上去。那就大錯特錯了,seo高手是不會(huì )這么做的,即使有,偶爾也會(huì )這么做。高手是分析,分析百度的數據,做好自己的網(wǎng)站,排名就會(huì )慢慢上升。
具體是怎么分析的?每個(gè)行業(yè),每個(gè)關(guān)鍵詞都有不同的數據,很難統一。例如:網(wǎng)站從事婚紗攝影。想要拍出“三亞婚紗攝影”這個(gè)詞,接下來(lái)我們就要研究一下,想拍三亞婚紗攝影的用戶(hù)到底想看什么?第二個(gè)是什么?,也就是三亞婚紗攝影的圖片,不信可以搜索“三亞婚紗攝影”,百度圖片第一。也就是說(shuō),百度需要的是三亞的婚紗攝影圖片。如果你的 網(wǎng)站 有高質(zhì)量的圖片,百度就會(huì )給你排名。如果這還不夠排名,讓我們看看下一步是什么?想拍婚紗照的都想知道價(jià)格是多少。也就是說(shuō),如果我們 網(wǎng)站 有高質(zhì)量的圖片,價(jià)格也注明了。這樣才能更好的滿(mǎn)足用戶(hù)的需求。還是那句話(huà),想拍婚紗照的人一定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。想拍婚紗照的人,肯定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。想拍婚紗照的人,肯定是想拍出漂亮的布景,所以才會(huì )挑三揀四,不知如何取舍。這時(shí)候我們在網(wǎng)站上加一個(gè)“關(guān)注”“熱度”“點(diǎn)贊”的功能,這樣會(huì )不會(huì )增加用戶(hù)點(diǎn)擊和用戶(hù)互動(dòng)?但是,它可以改善用戶(hù)體驗并獲得 網(wǎng)站 交互性。百度怎么能不給我們排名呢?百度和360都有站長(cháng)平臺。注冊后提交網(wǎng)站 主頁(yè)可能會(huì )更新 對于文章鏈接,您可以每天或一段時(shí)間手動(dòng)提交鏈接摘要。
看完這篇文章,如果您覺(jué)得還不錯,不妨采集或轉發(fā)給需要的朋友和同事。每天跟隨博主帶你了解各種SEO經(jīng)驗,打通你的二脈!
解決方案:小功能有大作為丨亞馬遜評論采集應用
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 98 次瀏覽 ? 2022-12-02 05:06
應用介紹
當一個(gè)全新的產(chǎn)品在沒(méi)有其他買(mǎi)家評論的情況下被放置在頁(yè)面上時(shí),會(huì )引起客戶(hù)一定程度的關(guān)注。大家都不愿意做第一個(gè)吃螃蟹的人,那么這些吸引過(guò)來(lái)的流量可能就白白流失了,這時(shí)候就凸顯了評論的重要性。
通過(guò)亞馬遜評論采集應用,商家可以將亞馬遜產(chǎn)品評論和圖片采集到SHOPYY系統中,讓買(mǎi)家在瀏覽網(wǎng)站時(shí)增加用戶(hù)體驗,提高轉化率。
腳步:
第一步:在后臺應用商店點(diǎn)擊安裝后,在我的應用列表中找到對應的應用,點(diǎn)擊“訪(fǎng)問(wèn)應用”
第二步:首先設置“采集規則”,根據頁(yè)面提示和具體需求進(jìn)行設置
第三步:設置好采集
規則后,點(diǎn)擊“采集
設置”選項卡,在右上角添加項目選擇商品
第四步:在商品采集設置頁(yè)面,點(diǎn)擊下拉框,根據需要選擇亞馬遜對應國家的URL進(jìn)行采集評論。一個(gè)產(chǎn)品可以同時(shí)采集
多個(gè)亞馬遜產(chǎn)品的評論,或者同時(shí)采集
多個(gè)不同國家站點(diǎn)的亞馬遜產(chǎn)品評論
打開(kāi)亞馬遜網(wǎng)站,進(jìn)入商品詳情頁(yè),復制商品鏈接中的amazon_asin,如上圖“Bxxxxxx”
第五步:設置提交后,可以在采集
設置列表中查看新增的商品,點(diǎn)擊右側操作欄“手動(dòng)采集
”,頁(yè)面會(huì )提示采集
結果,并在采集
列表中顯示相應數據,如圖所示:
第六步:采集
成功的評論顯示在“亞馬遜評論”列表中。對于不符合采集
規則的評論,黑名單欄會(huì )顯示紅色“是”,發(fā)布狀態(tài)關(guān)閉。如需開(kāi)啟,可直接手動(dòng)開(kāi)啟
第七步:可以在系統后臺的商品評論列表中查看同步評論
第八步:可以將采集成功的評論通過(guò)條件過(guò)濾導出到表格中,表格中的評論內容可以自定義修改后再導入系統。
直觀(guān):常用的大數據采集工具有哪些
有哪些大數據采集
工具?讓我們帶你了解一下:
常用的大數據采集工具Apache Flume,Fluentd,Logstash,Chukwa,Splunk Forwarder,優(yōu)采云
等。
1. Flume是Apache旗下開(kāi)源、高可靠、高度可擴展、易于管理、客戶(hù)擴展的數據采集系統。
2)Fluentd是另一個(gè)開(kāi)源數據采集
框架。Fluentd 是使用 C/Ruby 開(kāi)發(fā)的,使用 JSON 文件來(lái)統一日志數據。
3.Logstash 是著(zhù)名的開(kāi)源數據堆棧 ELK(ElasticSearch、Logstash、Kibana)中的 L。
4、Logstash 是在 JRuby 中開(kāi)發(fā)的,所有運行時(shí)都依賴(lài)于 JVM。
阿帕奇·楚夸,
Apache擁有的另一個(gè)開(kāi)源數據采集
平臺遠不如其他平臺那么出名,Chukwa建立在Hadoop的HDFS和Map Reduce上(顯然,它是用Java實(shí)現的),提供了可擴展性和可靠性。
6、在商用大數據平臺產(chǎn)品中,Splunk提供完整的數據挖掘、數據存儲、數據分析處理、數據顯示能力。
7. 優(yōu)采云
是一款免費、可視化、免編程的網(wǎng)頁(yè)采集軟件,可以快速提取不同網(wǎng)站的歸一化數據。 查看全部
解決方案:小功能有大作為丨亞馬遜評論采集應用
應用介紹
當一個(gè)全新的產(chǎn)品在沒(méi)有其他買(mǎi)家評論的情況下被放置在頁(yè)面上時(shí),會(huì )引起客戶(hù)一定程度的關(guān)注。大家都不愿意做第一個(gè)吃螃蟹的人,那么這些吸引過(guò)來(lái)的流量可能就白白流失了,這時(shí)候就凸顯了評論的重要性。
通過(guò)亞馬遜評論采集應用,商家可以將亞馬遜產(chǎn)品評論和圖片采集到SHOPYY系統中,讓買(mǎi)家在瀏覽網(wǎng)站時(shí)增加用戶(hù)體驗,提高轉化率。
腳步:
第一步:在后臺應用商店點(diǎn)擊安裝后,在我的應用列表中找到對應的應用,點(diǎn)擊“訪(fǎng)問(wèn)應用”
第二步:首先設置“采集規則”,根據頁(yè)面提示和具體需求進(jìn)行設置

第三步:設置好采集
規則后,點(diǎn)擊“采集
設置”選項卡,在右上角添加項目選擇商品
第四步:在商品采集設置頁(yè)面,點(diǎn)擊下拉框,根據需要選擇亞馬遜對應國家的URL進(jìn)行采集評論。一個(gè)產(chǎn)品可以同時(shí)采集
多個(gè)亞馬遜產(chǎn)品的評論,或者同時(shí)采集
多個(gè)不同國家站點(diǎn)的亞馬遜產(chǎn)品評論
打開(kāi)亞馬遜網(wǎng)站,進(jìn)入商品詳情頁(yè),復制商品鏈接中的amazon_asin,如上圖“Bxxxxxx”
第五步:設置提交后,可以在采集
設置列表中查看新增的商品,點(diǎn)擊右側操作欄“手動(dòng)采集
”,頁(yè)面會(huì )提示采集
結果,并在采集
列表中顯示相應數據,如圖所示:

第六步:采集
成功的評論顯示在“亞馬遜評論”列表中。對于不符合采集
規則的評論,黑名單欄會(huì )顯示紅色“是”,發(fā)布狀態(tài)關(guān)閉。如需開(kāi)啟,可直接手動(dòng)開(kāi)啟
第七步:可以在系統后臺的商品評論列表中查看同步評論
第八步:可以將采集成功的評論通過(guò)條件過(guò)濾導出到表格中,表格中的評論內容可以自定義修改后再導入系統。
直觀(guān):常用的大數據采集工具有哪些
有哪些大數據采集
工具?讓我們帶你了解一下:
常用的大數據采集工具Apache Flume,Fluentd,Logstash,Chukwa,Splunk Forwarder,優(yōu)采云
等。
1. Flume是Apache旗下開(kāi)源、高可靠、高度可擴展、易于管理、客戶(hù)擴展的數據采集系統。

2)Fluentd是另一個(gè)開(kāi)源數據采集
框架。Fluentd 是使用 C/Ruby 開(kāi)發(fā)的,使用 JSON 文件來(lái)統一日志數據。
3.Logstash 是著(zhù)名的開(kāi)源數據堆棧 ELK(ElasticSearch、Logstash、Kibana)中的 L。
4、Logstash 是在 JRuby 中開(kāi)發(fā)的,所有運行時(shí)都依賴(lài)于 JVM。
阿帕奇·楚夸,

Apache擁有的另一個(gè)開(kāi)源數據采集
平臺遠不如其他平臺那么出名,Chukwa建立在Hadoop的HDFS和Map Reduce上(顯然,它是用Java實(shí)現的),提供了可擴展性和可靠性。
6、在商用大數據平臺產(chǎn)品中,Splunk提供完整的數據挖掘、數據存儲、數據分析處理、數據顯示能力。
7. 優(yōu)采云
是一款免費、可視化、免編程的網(wǎng)頁(yè)采集軟件,可以快速提取不同網(wǎng)站的歸一化數據。
解決方案:算法自動(dòng)采集模塊.5+程序編寫(xiě)的方法
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 125 次瀏覽 ? 2022-12-02 04:26
算法自動(dòng)采集列表,采集出來(lái)的數據可以用python編寫(xiě)腳本,或者使用python框架編寫(xiě),采用的python方法主要分兩種:第一種:向后端返回指定的txt格式文本,這種方法非常的簡(jiǎn)單,不用再返回多余的文本,這種方法也可以在windows上或者linux系統下使用,其后端主要分成兩部分,一部分是數據采集模塊,采集txt格式的數據,第二部分就是爬蟲(chóng)程序,可以根據內容定位內容,然后采集想要內容到瀏覽器保存到本地。
第二種:爬蟲(chóng)程序編寫(xiě),這種方法對于爬蟲(chóng)人員來(lái)說(shuō),簡(jiǎn)單好操作,可以讓程序自動(dòng)獲取網(wǎng)頁(yè)中的內容,無(wú)需人工勞動(dòng)。下面分別介紹兩種方法:數據采集模塊:gitclone-framework/pythonitemslib/csstexts.python爬蟲(chóng)程序編寫(xiě):使用python3.5+來(lái)編寫(xiě)這兩種方法都是采用selenium模塊,關(guān)于這個(gè)模塊的安裝,官方有很多示例,其中我最常用的有3種:官方的webdriver的3.5.1,這個(gè)配置其實(shí)也就是在瀏覽器中提交代碼,在安裝目錄找到.selenium-all.py文件,把這部分內容加入其他內容即可。
官方的selenium-python3.5.2,這個(gè)配置需要重啟服務(wù)器以及重啟瀏覽器,解決方法的話(huà)可以使用pip3安裝pip3installselenium-python-3.5.2這兩種方法的不同在于selenium模塊的安裝,然后需要重啟瀏覽器,重啟瀏覽器的話(huà),瀏覽器會(huì )彈出提示,重啟服務(wù)器,如果服務(wù)器放在本地可以用上面那個(gè)方法,如果服務(wù)器不在本地,可以借助于notepad++這類(lèi)編輯器,找到這個(gè)文件,然后使用記事本打開(kāi)編輯即可。 查看全部
解決方案:算法自動(dòng)采集模塊.5+程序編寫(xiě)的方法

算法自動(dòng)采集列表,采集出來(lái)的數據可以用python編寫(xiě)腳本,或者使用python框架編寫(xiě),采用的python方法主要分兩種:第一種:向后端返回指定的txt格式文本,這種方法非常的簡(jiǎn)單,不用再返回多余的文本,這種方法也可以在windows上或者linux系統下使用,其后端主要分成兩部分,一部分是數據采集模塊,采集txt格式的數據,第二部分就是爬蟲(chóng)程序,可以根據內容定位內容,然后采集想要內容到瀏覽器保存到本地。

第二種:爬蟲(chóng)程序編寫(xiě),這種方法對于爬蟲(chóng)人員來(lái)說(shuō),簡(jiǎn)單好操作,可以讓程序自動(dòng)獲取網(wǎng)頁(yè)中的內容,無(wú)需人工勞動(dòng)。下面分別介紹兩種方法:數據采集模塊:gitclone-framework/pythonitemslib/csstexts.python爬蟲(chóng)程序編寫(xiě):使用python3.5+來(lái)編寫(xiě)這兩種方法都是采用selenium模塊,關(guān)于這個(gè)模塊的安裝,官方有很多示例,其中我最常用的有3種:官方的webdriver的3.5.1,這個(gè)配置其實(shí)也就是在瀏覽器中提交代碼,在安裝目錄找到.selenium-all.py文件,把這部分內容加入其他內容即可。
官方的selenium-python3.5.2,這個(gè)配置需要重啟服務(wù)器以及重啟瀏覽器,解決方法的話(huà)可以使用pip3安裝pip3installselenium-python-3.5.2這兩種方法的不同在于selenium模塊的安裝,然后需要重啟瀏覽器,重啟瀏覽器的話(huà),瀏覽器會(huì )彈出提示,重啟服務(wù)器,如果服務(wù)器放在本地可以用上面那個(gè)方法,如果服務(wù)器不在本地,可以借助于notepad++這類(lèi)編輯器,找到這個(gè)文件,然后使用記事本打開(kāi)編輯即可。
解決方案:2 - JVM垃圾回收
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 150 次瀏覽 ? 2022-12-01 13:33
JVM內存分配與回收介紹 判斷對象是否死亡 垃圾回收算法 Garbage collector
主要邏輯流程:
內存是如何分配和回收的?--> 什么垃圾需要回收?--> 什么時(shí)候回收?--> 如何回收?
一、JVM內存分配與回收簡(jiǎn)介
Java的自動(dòng)內存管理主要是對象內存的回收和對象內存的分配。同時(shí),Java自動(dòng)內存管理的核心功能是堆內存中對象的分配和回收。
Java堆是垃圾采集
器管理的主要區域,因此也稱(chēng)為GC堆(Garbage Collected Heap)。從垃圾回收的角度來(lái)看,由于目前的回收器基本采用分代垃圾回收算法,所以Java堆還可以細分為:新生代和老年代:更細化:Eden空間,From Survivor,To Survivor空間等.進(jìn)一步劃分的目的是為了更好的回收內存,或者更快的分配內存。
Java堆空間的基本結構
上圖中的Eden區、From Survivor0(“From”)區、To Survivor1(“To”)區都屬于新生代,Old Memory區屬于老年代。
大多數情況下,對象會(huì )先分配到伊甸區。新生代垃圾回收后,如果對象還活著(zhù),則進(jìn)入s0或s1,對象年齡加1(Eden區->Survivor區)。初始age變成1),當它的age增長(cháng)到一定程度(默認15歲),就會(huì )被提升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
新生代一次垃圾回收后,Hotspot遍歷所有對象時(shí),按照年齡從小到大的順序累加它們占用的大小。當累計年齡超過(guò)幸存者區域的一半時(shí),將這個(gè)年齡和MaxTenuringThreshold中的更新值取一個(gè)小值,作為下一次垃圾回收的提升年齡閾值。
動(dòng)態(tài)年齡計算代碼:
uint ageTable::compute_tenuring_threshold(size_t survivor_capacity) {
//survivor_capacity是survivor空間的大小
size_t desired_survivor_size = (size_t)((((double) survivor_capacity)*TargetSurvivorRatio)/100);
size_t total = 0;
uint age = 1;
while (age < table_size) {
total += sizes[age];//sizes數組是每個(gè)年齡段對象大小
if (total > desired_survivor_size) break;
age++;
}
uint result = age < MaxTenuringThreshold ? age : MaxTenuringThreshold;
...
}
一開(kāi)始,兩個(gè)幸存者區和伊甸園區都是空的。慢慢的eden區就滿(mǎn)了,那就是第一次操作。gc之后,eden區會(huì )被清理,活著(zhù)的對象會(huì )被復制到“From”survivor區。因為是從eden區復制過(guò)來(lái)的,所以使用的是連續空間,沒(méi)有碎片。然后eden繼續添加新的對象,直到eden再次滿(mǎn)為止。此時(shí)eden區和“From”區都有數據,不為空。然后gc之后,eden區有幸存者,“From”區也凈化后,也有幸存者。此時(shí)“To”區域為空,然后將“From”和eden區域的幸存者Copy到“To”區域。復制時(shí),“收件人”中的空格 area也是挨著(zhù)分配的,沒(méi)有碎片。然后,清空eden區和“From”區,這說(shuō)明:“總有一個(gè)幸存者空間是空的,另一個(gè)非空的幸存者空間沒(méi)有碎片。
這時(shí)候“From”和“To”就會(huì )互換角色,即新的“To”就是上次GC之前的“From”,新的“From”就是上次GC之前的“To”。在任何情況下,名為 To 的 Survivor 區域都保證為空。Minor GC會(huì )重復這個(gè)過(guò)程,直到“To”區域被填滿(mǎn),“To”區域被填滿(mǎn)后,所有對象都會(huì )被移動(dòng)到老年代。
1.1 對象先分配在eden區
目前主流的垃圾采集
器都是采用分代采集
算法,所以需要將堆內存劃分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾采集
算法。
大多數情況下,對象都分配在年輕代的eden區。當eden區沒(méi)有足夠的空間分配時(shí),虛擬機會(huì )發(fā)起一次Minor GC。
Minor GC 和 Full GC 有什么區別?
下面測試一下Minor GC的流程:
package jvm.gc;
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2,allocation3,allocation4,allocation5;
allocation1 = new byte[60000*1024];
//allocation2 = new byte[2000*1024];
//allocation3 = new byte[1000*1024];
//allocation4 = new byte[1000*1024];
//allocation5 = new byte[1000*1024];
}
}
打印的內存占用是:
內存使用信息.png
從圖中可以看出,eden區基本分配完畢。如果此時(shí)為allocation2分配空間,運行結果為:
分配保障機制的實(shí)施
出現這種情況的原因:
因為在allocation2分配內存的時(shí)候eden區的內存已經(jīng)分配的差不多了,剛才我們說(shuō)了當Eden區沒(méi)有足夠的空間可以分配的時(shí)候,虛擬機就會(huì )發(fā)起一次Minor GC。在GC的時(shí)候,虛擬機發(fā)現allocation1不能存放到Survivor空間,所以需要通過(guò)分配保證機制將新生代中的對象提前轉移到老年代。old generation中的空間足夠存放allocation1,所以不會(huì )發(fā)生Full GC。Minor GC執行后,如果后面分配的對象可以存在于eden區,內存仍會(huì )分配在eden區。
1.2 大對象直接進(jìn)入老年代
大對象是需要大量連續內存空間的對象(例如字符串、數組)。
為了避免在為大對象分配內存時(shí)由于分配保證機制帶來(lái)的復制而降低效率。
1.3 長(cháng)壽對象會(huì )進(jìn)入老年代
由于虛擬機采用了分代采集
的思想來(lái)管理內存,因此在內存回收時(shí)必須能夠識別出哪些對象應該放在新生代,哪些對象應該放在老年代。為了做到這一點(diǎn),虛擬機給每個(gè)對象一個(gè)對象年齡(Age)計數器。
如果對象出生在Eden,在第一次Minor GC后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并將對象的年齡設置為1。每一次對象存活一次MinorGC在Survivor中,年齡增加1年,當它的年齡增加到一定程度(默認15歲),就會(huì )晉升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
2.判斷對象是否死亡
幾乎所有的對象實(shí)例都放在堆中,在堆上進(jìn)行垃圾回收之前的第一步是確定那些對象已經(jīng)死了(即無(wú)論如何都不能再使用的對象)。
判斷對象是否死亡
2.1 引用計數
向對象添加一個(gè)引用計數器。每當有對它的引用時(shí),計數器就會(huì )加 1;
這種方法實(shí)現簡(jiǎn)單,效率高,但是目前主流的虛擬機并沒(méi)有選擇這種算法來(lái)管理內存。主要原因是很難解決對象之間的循環(huán)引用問(wèn)題。所謂對象之間的相互引用問(wèn)題如下代碼所示:除了對象objA和objB相互引用外,這兩個(gè)對象之間沒(méi)有任何引用。但是因為它們相互引用,它們的引用計數器不為0,所以引用計數算法無(wú)法通知GC采集
器回收它們。
package jvm.gc;
public class ReferenceCountingGc {
private Object instance;
public static void main(String[] args) {
ReferenceCountingGc t1 = new ReferenceCountingGc();
ReferenceCountingGc t2 = new ReferenceCountingGc();
t1.instance = t2;
t2.instance = t1;
t1 = null;
t2 = null;
}
}
2.2 可達性分析算法
這個(gè)算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索。節點(diǎn)經(jīng)過(guò)的路徑稱(chēng)為引用鏈。當一個(gè)對象沒(méi)有任何引用鏈到 GC Roots 連接時(shí),證明該對象不可用。
可達性分析
可以作為 GC Root 的對象包括:
2.3 參考資料
無(wú)論是通過(guò)引用計數的方法判斷對象的引用次數,還是通過(guò)可達性分析的方法判斷對象的引用鏈是否可達,判斷對象的存活與“引用”有關(guān)。
在JDK1.2之前,Java中對引用的定義很傳統:如果數據的引用類(lèi)型中存儲的值代表了另一塊內存的起始地址,就說(shuō)這塊內存代表了一個(gè)引用。
JDK1.2之后,Java擴展了引用的概念,將引用分為四種:強引用、軟引用、弱引用、虛引用(引用強度逐漸減弱)
引用之間的繼承關(guān)系
1.強引用(StrongReference)
以前用的大部分引用其實(shí)都是強引用,也就是最常用的引用。如果一個(gè)對象有強引用,它就類(lèi)似于生活必需品,垃圾采集
器永遠不會(huì )回收它。當內存空間不足時(shí),Java虛擬機寧愿拋出OutOfMemoryError錯誤導致程序異常終止,也不會(huì )通過(guò)任意回收強引用對象來(lái)解決內存不足問(wèn)題。
例子:
package jvm.gc.reference;
<p>
public class StrongReferenceDemo {
/**
* 輸出結果:
* java.lang.Object@135fbaa4
* 能打印出來(lái)說(shuō)明obj2沒(méi)有被回收
*
* @param args
*/
public static void main(String[] args) {
Object obj1 = new Object();//這樣定義就是強引用
Object obj2 = obj1;
obj1 = null;//置空
System.gc();
System.out.println(obj2); //能打印出來(lái)說(shuō)明沒(méi)有被回收
}
}
</p>
2. 軟引用(SoftReference)
如果一個(gè)對象只有軟引用,那么它類(lèi)似于可有可無(wú)的家居用品。如果有足夠的內存空間,垃圾采集
器將不會(huì )回收它。如果內存空間不夠,這些對象的內存就會(huì )被回收。只要垃圾采集
器不采集
它,該對象就可以被程序使用。軟引用可用于實(shí)現對內存敏感的緩存。
軟引用可以與引用隊列(ReferenceQueue)結合使用。如果軟引用引用的對象被垃圾回收,JAVA虛擬機會(huì )將軟引用添加到與其關(guān)聯(lián)的引用隊列中。
軟引用可以加快JVM對垃圾內存的回收,維護系統的安全,防止內存溢出(OutOfMemory)等問(wèn)題。
適用場(chǎng)景
假設一個(gè)應用需要讀取大量的本地圖片:
使用軟引用解決了這個(gè)問(wèn)題。
設計思路:
使用HashMap保存圖片的路徑與對應圖片對象關(guān)聯(lián)的軟引用的映射關(guān)系。當內存不足時(shí),JVM會(huì )自動(dòng)回收這些緩存的圖片對象占用的空間,避免OOM問(wèn)題。
Map imageCache = new HashMap();
3.弱引用(WeakReference)
如果一個(gè)對象只有弱引用,它類(lèi)似于可有可無(wú)的家居用品。弱引用和軟引用的區別在于只有弱引用的對象生命周期更短。在垃圾回收線(xiàn)程掃描其管轄內存區域的過(guò)程中,一旦發(fā)現只有弱引用的對象,無(wú)論當前內存空間是否足夠,都會(huì )回收其內存。然而,由于垃圾采集
器是一個(gè)非常低優(yōu)先級的線(xiàn)程,只有弱引用的對象可能無(wú)法快速找到。
弱引用可以與引用隊列(ReferenceQueue)結合使用。如果弱引用引用的對象被垃圾回收,Java虛擬機會(huì )將弱引用添加到與其關(guān)聯(lián)的引用隊列中。
例子:
package jvm.gc.reference;
import java.lang.ref.WeakReference;
public class WeakReferenceDemo {
/**
* 輸出結果為:
* java.lang.Object@135fbaa4
* java.lang.Object@135fbaa4
* =========================
* null
* null
*
* 這就體現了:
* 在垃圾回收器線(xiàn)程掃描它所管轄的內存區域的過(guò)程中,
* 一旦發(fā)現了只具有弱引用的對象,不管當前內存空間足夠與否,都會(huì )回收它的內存。
* @param args
*/
public static void main(String[] args) {
Object o1 = new Object();
WeakReference weakReference = new WeakReference(o1);
System.out.println(o1);
System.out.println(weakReference.get());
o1 = null;
System.gc();
System.out.println("=========================");
System.out.println(o1);
System.out.println(weakReference.get());
}
}
適用場(chǎng)景
WeakHashmap的應用:
代碼:
package jvm.gc.reference;
import java.util.HashMap;
import java.util.WeakHashMap;
public class WeakHashmapDemo {
public static void main(String[] args) {
myHashmap();
System.out.println("========================");
myWeakHashmap();
}
private static void myWeakHashmap() {
WeakHashMap map = new WeakHashMap();
//HashMap map = new HashMap();
Integer key = new Integer(1);
String value = "HashMap";
map.put(key,value);
System.out.println(map);
key = null;
System.out.println(map);
System.gc();
System.out.println(map+"\t"+map.size());
}
private static void myHashmap() {
//WeakHashMap map = new WeakHashMap();
<p>
HashMap map = new HashMap();
Integer key = new Integer(1);
String value = "HashMap";
map.put(key,value);
System.out.println(map);
key = null;
System.out.println(map);
System.gc();
System.out.println(map+"\t"+map.size());
}
}
</p>
4.幻影參考(PhantomReference)
“Phantom reference”,顧名思義,是沒(méi)有用的。與其他類(lèi)型的引用不同,幻象引用不決定對象的生命周期。如果一個(gè)對象只收錄
虛引用,就好像它沒(méi)有引用一樣,可以隨時(shí)被垃圾回收。
幻影引用主要用于跟蹤被垃圾采集
的對象的活動(dòng)。
幻影引用與軟引用和弱引用的區別之一是幻影引用必須與引用隊列(ReferenceQueue)結合使用。當垃圾回收器要回收一個(gè)對象時(shí),如果發(fā)現它還有一個(gè)虛引用,就會(huì )把這個(gè)虛引用添加到與之關(guān)聯(lián)的引用隊列中,然后再回收該對象的內存。程序可以通過(guò)判斷引用隊列中是否加入了幻引用來(lái)獲知被引用對象是否會(huì )被垃圾回收。如果程序發(fā)現引用隊列中加入了虛引用,則可以在被引用對象的內存被回收之前采取必要的動(dòng)作。
2.4 不可達對象不是“必死”
即使是可達性分析方法中的不可達對象也不是“必死”的。對屬性分析不可達的對象進(jìn)行第一次標記,篩選一次,篩選條件為是否需要對該對象執行finalize方法。當對象沒(méi)有覆蓋finalize方法,或者finalize方法已經(jīng)被虛擬機調用過(guò),虛擬機認為這兩種情況不需要執行。
判斷需要執行的對象會(huì )被放入隊列中進(jìn)行二次標記,除非該對象與引用鏈上的任何對象相關(guān)聯(lián),才會(huì )真正被回收。
2.5 判斷常量是廢棄對象
運行常量池主要是回收廢棄的常量。
常量是否為廢棄常量的判斷標準: 如果常量池中存在字符串“abc”,如果當前沒(méi)有String對象引用該字符串常量,則說(shuō)明常量“abc”為廢棄常量。如果此時(shí)發(fā)生內存回收 必要時(shí),“abc”會(huì )被系統從常量池中清除。
2.6 判斷一個(gè)類(lèi)是無(wú)用類(lèi)
方法區主要是回收無(wú)用的類(lèi)。
判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”,一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
虛擬機可以回收滿(mǎn)足以上三個(gè)條件的無(wú)用類(lèi)。這里說(shuō)的只是“可以”,并不是像對象一樣不使用就會(huì )被回收。
3. 垃圾采集
算法 3.1 Mark-Sweep 算法
該算法分為“標記”和“清除”兩個(gè)階段:首先標記所有不需要回收的對象,標記完成后統一回收所有未標記的對象。它是最基本的采集算法,后續的算法都是通過(guò)改進(jìn)它的缺點(diǎn)得到的。這種垃圾采集
算法產(chǎn)生了兩個(gè)明顯的問(wèn)題:
效率問(wèn)題空間問(wèn)題(標記清除后會(huì )產(chǎn)生大量不連續的碎片)
標記掃描算法
3.2 復制
為了解決效率問(wèn)題,出現了“復制”采集
算法。它可以將內存分成大小相同的兩塊,一次使用其中的一塊。當這塊內存用完后,將存活的對象復制到另一塊內存中,然后一次性清理已用空間。這樣每次內存回收就是回收一半的內存范圍。
復制算法
3.3 標記整理算法
根據老年代的特點(diǎn)提出的一種標記算法。標記過(guò)程還是和“mark-clear”算法一樣,只是后面的步驟不是直接回收可回收對象,而是將所有存活的對象移到一端,然后直接清理。超出字節序邊界的內存。
標記算法
3.4 分代采集
算法
目前虛擬機的垃圾回收采用的是分代回收算法。這個(gè)算法沒(méi)有什么新意,只是根據對象生命周期的不同,把內存分成若干塊。一般java堆分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾回收算法。
比如在新生代中,每次回收都會(huì )有大量對象死亡,所以可以選擇復制算法,只需要付出少量的對象復制成本就可以完成每次垃圾回收。對象在老年代存活的概率比較高,沒(méi)有額外的空間來(lái)保證它的分配,所以我們必須選擇“mark-clear”或者“mark-compact”算法進(jìn)行垃圾回收。
4.垃圾采集
器
如果說(shuō)回收算法是內存回收的方法論,那么垃圾回收器就是內存回收的具體實(shí)現。
當我們比較采集器
時(shí),并不是要挑出最好的。因為到目前為止還沒(méi)有最好的垃圾采集
器,更不用說(shuō)通用的垃圾采集
器了,我們能做的就是根據具體的應用場(chǎng)景選擇適合自己的垃圾采集
器。
除G1外,年輕代都是copy算法,老年代是mark-clean或mark-compact方式。
老年代和新生代垃圾采集
器分類(lèi)
垃圾采集
器的組合
4.1 串行采集
器
串行采集
器
虛擬機的設計者當然知道Stop The World帶來(lái)的糟糕的用戶(hù)體驗,所以在后續的垃圾采集
器設計中不斷縮短停頓時(shí)間(停頓還是有的,尋找最佳垃圾采集
器的過(guò)程還在繼續) .
Serial采集
器對應的參數
4.2 ParNew 采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾采集
外,其余行為(控制參數、采集
算法、回收策略等)與Serial采集
器完全相同。
ParNew采集
器
ParNew采集
器的參數
它是許多以服務(wù)器模式運行的虛擬機的首選。除了Serial采集
器,只有CMS采集
器(真正的并發(fā)采集
器,后面會(huì )介紹)可以配合使用。
添加了并行和并發(fā)概念:
4.3 并行清除采集
器
并行清除采集
器
Parallel Scavenge 采集
器側重于吞吐量(CPU 的有效使用)。CMS 等垃圾采集
器更關(guān)注用戶(hù)線(xiàn)程暫停時(shí)間(改善用戶(hù)體驗)。所謂吞吐量就是CPU中用于運行用戶(hù)代碼的時(shí)間與CPU消耗的總時(shí)間的比值。Parallel Scavenge 采集
器提供了很多參數供用戶(hù)找到最合適的暫停時(shí)間或最大吞吐量。如果對采集
器的運行不太了解,手動(dòng)優(yōu)化有難度,可以選擇將內存管理優(yōu)化交給虛擬機來(lái)完成。好的選擇。
4.4 系列老采集器
Serial采集
器的老年代版本,也是單線(xiàn)程采集
器。它主要有兩個(gè)用途:一是在JDK1.5及更早版本中與Parallel Scavenge采集
器配合使用,二是作為CMS采集
器的備份方案。
4.5 并行舊采集
器
Parallel Scavenge 采集
器的老一代版本。使用多線(xiàn)程和“標記和排序”算法。在吞吐量和 CPU 資源很重要的地方,可以?xún)?yōu)先考慮 Parallel Scavenge 采集
器和 Parallel Old 采集
器。
4.6 CMS 采集
器
氣相色譜儀
CMS 的四個(gè)步驟和優(yōu)缺點(diǎn)
CMS(Concurrent Mark Sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。非常適合用在注重用戶(hù)體驗的應用上。
CMS(Concurrent Mark Sweep)采集
器是HotSpot虛擬機第一個(gè)真正意義上的并發(fā)采集
器。這是垃圾采集
線(xiàn)程和用戶(hù)線(xiàn)程(基本上)同時(shí)工作的第一次。
從名字中的Mark Sweep這兩個(gè)字可以看出,CMS采集
器是通過(guò)“標記-清除”算法實(shí)現的,其運行過(guò)程比以往的垃圾采集
器都要復雜。整個(gè)過(guò)程分為四個(gè)步驟:
主要優(yōu)勢:
- 并發(fā)采集
,低暫停
缺點(diǎn):
- 對CPU資源敏感
- 無(wú)法處理漂浮垃圾
- 它使用的回收算法——“標記和清除”算法會(huì )導致采集
結束時(shí)產(chǎn)生大量空間碎片
4.7 G1 采集
器
G1采集
器
G1采集
器核心理念
G1標志回收流程
G1(Garbage-First)是一個(gè)面向服務(wù)器的垃圾采集
器,主要針對配備多處理器和大容量?jì)却娴臋C器。在大概率滿(mǎn)足GC停頓時(shí)間要求的同時(shí),還具有高吞吐量的性能特點(diǎn)。
G1采集
器的特點(diǎn):
G1采集
器的幾個(gè)步驟:
G1采集
器在后臺維護一個(gè)優(yōu)先級列表,每次根據允許的采集
時(shí)間,優(yōu)先回收價(jià)值最高的Region(這就是它名字Garbage-First的由來(lái))。這種使用Region劃分內存空間和優(yōu)先區域回收的方式保證了G1采集
器在有限的時(shí)間內盡可能多地采集
(通過(guò)將內存打零)
參考:%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6.md
解決方案:搞定JVM垃圾回收就是這么簡(jiǎn)單
回顧以上:
寫(xiě)在這部分前面的常見(jiàn)面試問(wèn)題:
文中提到了問(wèn)題的答案
這篇文章的導火索
當需要排查各種內存溢出問(wèn)題,當垃圾回收被稱(chēng)為系統達到更高并發(fā)的瓶頸時(shí),我們需要對這些“自動(dòng)化”技術(shù)進(jìn)行必要的監控和調整。
Java 程序員必讀的文檔
哈哈皮啦!本人開(kāi)源的一個(gè)Java學(xué)習指導文檔。一本涵蓋大多數Java程序員需要掌握的核心知識的書(shū)正在逐步完善中,期待您的參與。Github 地址:. 看看吧,我想你不會(huì )后悔的,如果可以的話(huà),可以給個(gè)Star鼓勵一下!
1 揭開(kāi)JVM內存分配與回收的神秘面紗
Java的自動(dòng)內存管理主要是對象內存回收和對象內存分配。同時(shí),Java自動(dòng)內存管理的核心功能是堆內存中對象的分配和回收。
JDK1.8之前的堆內存示意圖:
從上圖可以看出,堆內存分為新生代、老年代和永久代。新生代又分為:Eden區+Survior1區+Survior2區。值得注意的是,在JDK 1.8中整個(gè)永久代被移除,取而代之的是一個(gè)叫做Metaspace的區域(永久代使用JVM的堆內存空間,而元空間使用物理內存,直接受物理內存限制機)。
1.1 對象先分配在eden區
目前主流的垃圾采集
器都是采用分代采集
算法,所以需要將堆內存劃分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾采集
算法。
大多數情況下,對象都分配在年輕代的eden區。當eden區沒(méi)有足夠的空間分配時(shí),虛擬機會(huì )發(fā)起一次Minor GC。下面我們來(lái)做一下實(shí)際測試。
在測試之前,我們先來(lái)看看Minor Gc和Full GC的區別?
測試:
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2;
allocation1 = new byte[30900*1024];
//allocation2 = new byte[900*1024];
}
}
復制
運行它:
添加參數:-XX:+PrintGCDetails
運行結果:
從上圖可以看出,eden區的內存幾乎已經(jīng)全部分配完畢(即使程序什么都不做,新生代也會(huì )使用2000k多的內存)。如果我們?yōu)?allocation2 分配內存會(huì )怎樣?
allocation2 = new byte[900*1024];
復制
簡(jiǎn)單解釋一下為什么會(huì )這樣:因為分配內存到allocation2的時(shí)候eden區的內存已經(jīng)分配的差不多了,剛才我們說(shuō)了當Eden區沒(méi)有足夠的空間分配時(shí),虛擬機就會(huì )發(fā)起一次Minor GC。在GC的時(shí)候,虛擬機也發(fā)現allocation1不能存放在Survior空間,所以不得不通過(guò)allocation guarantee機制,提前將新生代中的對象轉移到老年代。old generation中的空間足夠存放allocation1,所以不會(huì )發(fā)生Full GC。Minor GC執行后,如果后面分配的對象在eden區可以存在,內存仍然會(huì )分配在eden區。代碼驗證可以如下進(jìn)行:
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2,allocation3,allocation4,allocation5;
allocation1 = new byte[32000*1024];
allocation2 = new byte[1000*1024];
allocation3 = new byte[1000*1024];
allocation4 = new byte[1000*1024];
allocation5 = new byte[1000*1024];
}
}
復制
1.2 大對象直接進(jìn)入老年代
大對象是需要大量連續內存空間的對象(例如字符串、數組)。
為什么一定要這樣?
為了避免在為大對象分配內存時(shí)由于分配保證機制帶來(lái)的復制而降低效率。
1.3 長(cháng)壽對象會(huì )進(jìn)入老年代
由于虛擬機采用了分代采集
的思想來(lái)管理內存,因此在內存回收時(shí),它必須能夠識別出哪些對象應該放在新生代,哪些對象應該放在老年代。為了做到這一點(diǎn),虛擬機給每個(gè)對象一個(gè)對象年齡(Age)計數器。
如果對象出生在Eden,在第一次Minor GC后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并將對象的年齡設置為1。每一次對象存活一次MinorGC在 Survivor 中,age 增加 1 年,當它的 age 增加到一定程度時(shí)(默認是 15 歲),就會(huì )被提升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
1.4 動(dòng)態(tài)對象年齡判定
為了更好地適應不同程序的內存情況,虛擬機并不總是要求對象年齡必須達到一定的值才能進(jìn)入老年代。如果Survivor空間中所有同齡對象的大小之和大于Survivor空間的一半,則年齡大于等于該年齡的對象可以直接進(jìn)入老年代,無(wú)需達到要求的年齡。
2 對象死了?
幾乎所有的對象實(shí)例都放在堆中,在堆上進(jìn)行垃圾回收之前的第一步是確定那些對象已經(jīng)死了(即無(wú)論如何都不能再使用的對象)。
2.1 引用計數
向對象添加一個(gè)引用計數器。每當有對它的引用時(shí),計數器就會(huì )加 1;
這種方法實(shí)現簡(jiǎn)單,效率高,但是目前主流的虛擬機并沒(méi)有選擇這種算法來(lái)管理內存。主要原因是很難解決對象之間的循環(huán)引用問(wèn)題。所謂對象之間的相互引用問(wèn)題如下代碼所示:除了對象objA和objB相互引用外,這兩個(gè)對象之間沒(méi)有任何引用。但是因為它們相互引用,它們的引用計數器不為0,所以引用計數算法無(wú)法通知GC采集
器回收它們。
public class ReferenceCountingGc {
Object instance = null;
public static void main(String[] args) {
ReferenceCountingGc objA = new ReferenceCountingGc();
ReferenceCountingGc objB = new ReferenceCountingGc();
objA.instance = objB;
objB.instance = objA;
objA = null;
objB = null;
}
}
復制
2.2 可達性分析算法
這個(gè)算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索。節點(diǎn)經(jīng)過(guò)的路徑稱(chēng)為引用鏈。當一個(gè)對象沒(méi)有任何引用鏈到 GC Roots 連接時(shí),證明該對象不可用。
可達性分析算法
2.3 更多參考資料
無(wú)論是通過(guò)引用計數的方法判斷對象的引用次數,還是通過(guò)可達性分析的方法判斷對象的引用鏈是否可達,判斷對象的存活與“引用”有關(guān)。
在JDK1.2之前,Java中對引用的定義很傳統:如果引用類(lèi)型數據中存儲的值代表了另一塊內存的起始地址,就說(shuō)這塊內存代表了一個(gè)引用。
JDK1.2之后,Java擴展了引用的概念,將引用分為四種:強引用、軟引用、弱引用、虛引用(引用強度逐漸減弱)
1. 強引用
我們之前使用的大部分引用其實(shí)都是強引用,也就是最常用的引用。如果一個(gè)對象有強引用,它就類(lèi)似于生活必需品,垃圾采集
器永遠不會(huì )回收它。當內存空間不足時(shí),Java虛擬機寧愿拋出OutOfMemoryError錯誤導致程序異常終止,也不會(huì )通過(guò)任意回收強引用對象來(lái)解決內存不足問(wèn)題。
2. 軟引用(SoftReference)
如果一個(gè)對象只有軟引用,那么它類(lèi)似于可以購買(mǎi)的商品。如果有足夠的內存空間,垃圾采集
器將不會(huì )回收它。如果內存空間不夠,這些對象的內存就會(huì )被回收。只要垃圾采集
器不采集
它,該對象就可以被程序使用。軟引用可用于實(shí)現對內存敏感的緩存。
軟引用可以與引用隊列(ReferenceQueue)結合使用。如果軟引用引用的對象被垃圾回收,JAVA虛擬機會(huì )將軟引用添加到與其關(guān)聯(lián)的引用隊列中。
3.弱引用(WeakReference)
如果一個(gè)對象只有弱引用,那么它類(lèi)似于可以購買(mǎi)的商品。弱引用和軟引用的區別在于只有弱引用的對象生命周期更短。在垃圾回收線(xiàn)程掃描其管轄內存區域的過(guò)程中,一旦發(fā)現只有弱引用的對象,無(wú)論當前內存空間是否足夠,都會(huì )回收其內存。然而,由于垃圾采集
器是一個(gè)非常低優(yōu)先級的線(xiàn)程,只有弱引用的對象可能無(wú)法快速找到。
弱引用可以與引用隊列(ReferenceQueue)結合使用。如果弱引用引用的對象被垃圾回收,Java虛擬機會(huì )將弱引用添加到與其關(guān)聯(lián)的引用隊列中。
4.幻影參考(PhantomReference)
“Phantom reference”,顧名思義,是沒(méi)有用的。與其他類(lèi)型的引用不同,幻象引用不決定對象的生命周期。如果一個(gè)對象只收錄
虛引用,就好像它沒(méi)有引用一樣,可以隨時(shí)被垃圾回收。
幻影引用主要用于跟蹤被垃圾采集
的對象的活動(dòng)。
幻影引用與軟引用和弱引用的區別之一是幻影引用必須與引用隊列(ReferenceQueue)結合使用。當垃圾回收器要回收一個(gè)對象時(shí),如果發(fā)現它還有一個(gè)虛引用,就會(huì )把這個(gè)虛引用添加到與之關(guān)聯(lián)的引用隊列中,然后再回收該對象的內存。程序可以通過(guò)判斷引用隊列中是否加入了幻引用來(lái)獲知被引用對象是否會(huì )被垃圾回收。如果程序發(fā)現引用隊列中加入了虛引用,則可以在被引用對象的內存被回收之前采取必要的動(dòng)作。
特別要注意的是,弱引用和幻引用在編程中很少用到,軟引用經(jīng)常用到。這是因為軟引用可以加快JVM對垃圾內存的回收,維護系統的安全,防止內存溢出。(OutOfMemory) 等問(wèn)題。
2.4 不可達對象不是“必死”
即使是可達性分析方法中的不可達對象也不是“必死”的。對屬性分析不可達的對象進(jìn)行第一次標記,篩選一次,篩選條件為是否需要對該對象執行finalize方法。當對象沒(méi)有覆蓋finalize方法,或者finalize方法已經(jīng)被虛擬機調用過(guò),虛擬機認為這兩種情況不需要執行。
判斷需要執行的對象會(huì )被放入隊列中進(jìn)行二次標記,除非該對象與引用鏈上的任何對象相關(guān)聯(lián),才會(huì )真正被回收。
2.5 如何判斷一個(gè)常量是廢棄常量
運行時(shí)常量池主要回收廢棄的常量。那么,我們如何判斷一個(gè)常量是一個(gè)過(guò)時(shí)常量呢?
如果常量池中存在字符串“abc”,如果當前不存在引用該字符串常量的String對象,則說(shuō)明常量“abc”為廢棄常量。如果此時(shí)發(fā)生內存回收并且有必要,“abc”就會(huì )被系統從常量池中清除掉。
注意:我們也說(shuō)過(guò),JDK1.7及以后版本的JVM把運行時(shí)常量池移出了方法區,在Java堆(Heap)中開(kāi)辟了一塊區域來(lái)存放運行時(shí)常量池。
2.6 如何判斷一個(gè)類(lèi)是無(wú)用類(lèi)
方法區主要是回收無(wú)用類(lèi),那么如何判斷一個(gè)類(lèi)是否為無(wú)用類(lèi)呢?
判斷一個(gè)常量是否為“廢棄的常量”比較簡(jiǎn)單,但是判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”的條件就比較苛刻。一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
虛擬機可以回收滿(mǎn)足以上三個(gè)條件的無(wú)用類(lèi)。這里說(shuō)的只是“可以”,并不是像對象一樣不使用就會(huì )被回收。
3 垃圾回收算法
垃圾采集
算法
3.1 標記-掃描算法
該算法分為“標記”和“清除”兩個(gè)階段:首先標記所有需要回收的對象,標記完成后統一回收所有標記的對象。它是最基本的采集
算法,效率很高,但是會(huì )帶來(lái)兩個(gè)明顯的問(wèn)題:
效率問(wèn)題空間問(wèn)題(標記清除后會(huì )產(chǎn)生大量不連續的碎片)
標記掃描算法
3.2 復制算法
為了解決效率問(wèn)題,出現了“復制”采集
算法。它可以將內存分成大小相同的兩塊,一次使用其中的一塊。當這塊內存用完后,將存活的對象復制到另一塊內存中,然后一次性清理已用空間。這樣每次內存回收就是回收一半的內存范圍。
復制算法
3.3 標記整理算法
根據一種特殊的基于老年代特點(diǎn)的標記算法,標記過(guò)程還是和“標記-清除”算法一樣,只是后面的步驟不是直接回收可回收對象,而是移動(dòng)所有存活的對象到一個(gè)section,然后直接清理掉end boundary之外的Memory。
標記整理算法
3.4 分代采集
算法
目前虛擬機的垃圾回收采用分代回收算法。這個(gè)算法沒(méi)有什么新意,只是根據對象生命周期的不同,把內存分成若干塊。Java堆一般分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾回收算法。
比如在新生代中,每次回收都會(huì )有大量對象死亡,所以可以選擇復制算法,只需要付出少量的對象復制成本就可以完成每次垃圾回收。對象在老年代存活的概率比較高,沒(méi)有額外的空間來(lái)保證它的分配,所以我們必須選擇“標記-清除”或“標記-排序”算法進(jìn)行垃圾回收。
采訪(fǎng)延伸問(wèn)題:HotSpot為什么分新生代和老年代?
根據上面對分代采集
算法的介紹回答。
4 垃圾采集
器
如果說(shuō)回收算法是內存回收的方法論,那么垃圾回收器就是內存回收的具體實(shí)現。
當我們比較采集器
時(shí),我們并不是要挑選一個(gè)最好的采集器
。因為我們知道目前沒(méi)有最好的垃圾采集
器,更談不上萬(wàn)能的垃圾采集
器,我們能做的就是根據具體的應用場(chǎng)景選擇適合自己的垃圾采集
器。試想一下:如果有一個(gè)完美的采集
器適用于四海之內的任何場(chǎng)景,那么我們的HotSpot虛擬機就不會(huì )實(shí)現這么多不同的垃圾采集
器。
4.1 串行采集
器
串行(serial)采集
器 采集
器是最基本也是最古老的垃圾采集
器。大家看名字就知道這個(gè)采集
器是單線(xiàn)程采集
器。它的“單線(xiàn)程”的含義不僅僅意味著(zhù)它只會(huì )使用一個(gè)垃圾采集
線(xiàn)程來(lái)完成垃圾采集
工作,更重要的是它在執行垃圾采集
工作時(shí)必須暫停所有其他工作線(xiàn)程(“Stop The World”)直到采集
完畢。
新生代采用復制算法,老年代采用標記-排序算法。
串行采集
器
虛擬機的設計者當然知道Stop The World帶來(lái)的糟糕的用戶(hù)體驗,所以在后續的垃圾采集
器設計中不斷縮短停頓時(shí)間(停頓還是有的,尋找最佳垃圾采集
器的過(guò)程還在繼續) .
但是串行采集
器與其他垃圾采集
器相比有什么優(yōu)勢嗎?當然有,簡(jiǎn)單高效(相對單線(xiàn)程的其他采集
器)。Serial采集
器由于沒(méi)有線(xiàn)程交互開(kāi)銷(xiāo),自然可以獲得很高的單線(xiàn)程采集
效率。Serial 采集
器是在客戶(hù)端模式下運行的虛擬機的不錯選擇。
4.2 ParNew 采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾采集
外,其余行為(控制參數、采集
算法、回收策略等)與Serial采集
器完全相同。
新生代采用復制算法,老年代采用標記-排序算法。
ParNew采集
器
它是許多以服務(wù)器模式運行的虛擬機的首選。除了Serial采集
器,只有CMS采集
器(真正的并發(fā)采集
器,后面會(huì )介紹)可以配合使用。
添加了并行和并發(fā)概念:
4.3 并行清除采集
器
Parallel Scavenge 采集
器類(lèi)似于 ParNew 采集
器。那么它有什么特別之處呢?
-XX:+UseParallelGC
使用Parallel收集器+ 老年代串行
-XX:+UseParallelOldGC
使用Parallel收集器+ 老年代并行
復制
Parallel Scavenge 采集
器側重于吞吐量(CPU 的有效使用)。CMS等垃圾采集
器的關(guān)注點(diǎn)更多的是用戶(hù)線(xiàn)程的停頓時(shí)間(提升用戶(hù)體驗)。所謂吞吐量就是CPU中運行用戶(hù)代碼所花費的時(shí)間與CPU總消耗時(shí)間的比值。Parallel Scavenge 采集
器提供了許多參數供用戶(hù)找到最合適的暫停時(shí)間或最大吞吐量。如果你不太了解采集
器的運行,如果存在手動(dòng)優(yōu)化,你可以選擇將內存管理優(yōu)化交給虛擬機來(lái)完成。這也是一個(gè)不錯的選擇。
新生代采用復制算法,老年代采用標記-排序算法。
ParNew采集
器
4.4.系列老采集器
Serial采集
器的老年代版本,也是單線(xiàn)程采集
器。它主要有兩個(gè)用途:一是與JDK1.5及更早版本的Parallel Scavenge采集
器一起使用,二是作為CMS采集
器的備份解決方案。
4.5 并行舊采集
器
Parallel Scavenge 采集
器的老一代版本。使用多線(xiàn)程和“標記和排序”算法。在注重吞吐量和CPU資源的情況下,可以?xún)?yōu)先考慮Parallel Scavenge采集
器和Parallel Old采集
器。
4.6 CMS 采集
器
CMS(Concurrent Mark Sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。非常適合用在注重用戶(hù)體驗的應用上。
CMS(Concurrent Mark Sweep)采集
器是HotSpot虛擬機第一個(gè)真正意義上的并發(fā)采集
器。這是垃圾采集
線(xiàn)程和用戶(hù)線(xiàn)程(基本上)同時(shí)工作的第一次。
從名字中的Mark Sweep這兩個(gè)字可以看出,CMS采集
器是通過(guò)“標記-清除”算法實(shí)現的,其運行過(guò)程比以往的垃圾采集
器都要復雜。整個(gè)過(guò)程分為四個(gè)步驟:
CMS 垃圾采集
器
從它的名字就可以看出它是一個(gè)優(yōu)秀的垃圾采集
器,主要優(yōu)點(diǎn):并發(fā)采集
,低暫停。但它有以下三個(gè)明顯的缺點(diǎn):
4.7 G1 采集
器
G1(Garbage-First)是一個(gè)面向服務(wù)器的垃圾采集
器,主要針對配備多處理器和大容量?jì)却娴臋C器。大概率滿(mǎn)足GC停頓時(shí)間要求,同時(shí)具有高吞吐量的性能特點(diǎn)。
在JDK1.7中被視為HotSpot虛擬機的一個(gè)重要的進(jìn)化特征。它具有以下特點(diǎn):
G1采集
器的運行大致分為以下幾個(gè)步驟:
G1采集
器在后臺維護一個(gè)優(yōu)先級列表,每次根據允許的采集
時(shí)間選擇回收值最高的Region(這就是它名字Garbage-First的由來(lái))。這種使用Region劃分內存空間和優(yōu)先區域回收的方法保證了GF采集
器在有限的時(shí)間內(通過(guò)將內存打零)采集
盡可能多的內存。
參考: 查看全部
解決方案:2 - JVM垃圾回收
JVM內存分配與回收介紹 判斷對象是否死亡 垃圾回收算法 Garbage collector
主要邏輯流程:
內存是如何分配和回收的?--> 什么垃圾需要回收?--> 什么時(shí)候回收?--> 如何回收?
一、JVM內存分配與回收簡(jiǎn)介
Java的自動(dòng)內存管理主要是對象內存的回收和對象內存的分配。同時(shí),Java自動(dòng)內存管理的核心功能是堆內存中對象的分配和回收。
Java堆是垃圾采集
器管理的主要區域,因此也稱(chēng)為GC堆(Garbage Collected Heap)。從垃圾回收的角度來(lái)看,由于目前的回收器基本采用分代垃圾回收算法,所以Java堆還可以細分為:新生代和老年代:更細化:Eden空間,From Survivor,To Survivor空間等.進(jìn)一步劃分的目的是為了更好的回收內存,或者更快的分配內存。
Java堆空間的基本結構
上圖中的Eden區、From Survivor0(“From”)區、To Survivor1(“To”)區都屬于新生代,Old Memory區屬于老年代。
大多數情況下,對象會(huì )先分配到伊甸區。新生代垃圾回收后,如果對象還活著(zhù),則進(jìn)入s0或s1,對象年齡加1(Eden區->Survivor區)。初始age變成1),當它的age增長(cháng)到一定程度(默認15歲),就會(huì )被提升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
新生代一次垃圾回收后,Hotspot遍歷所有對象時(shí),按照年齡從小到大的順序累加它們占用的大小。當累計年齡超過(guò)幸存者區域的一半時(shí),將這個(gè)年齡和MaxTenuringThreshold中的更新值取一個(gè)小值,作為下一次垃圾回收的提升年齡閾值。
動(dòng)態(tài)年齡計算代碼:
uint ageTable::compute_tenuring_threshold(size_t survivor_capacity) {
//survivor_capacity是survivor空間的大小
size_t desired_survivor_size = (size_t)((((double) survivor_capacity)*TargetSurvivorRatio)/100);
size_t total = 0;
uint age = 1;
while (age < table_size) {
total += sizes[age];//sizes數組是每個(gè)年齡段對象大小
if (total > desired_survivor_size) break;
age++;
}
uint result = age < MaxTenuringThreshold ? age : MaxTenuringThreshold;
...
}
一開(kāi)始,兩個(gè)幸存者區和伊甸園區都是空的。慢慢的eden區就滿(mǎn)了,那就是第一次操作。gc之后,eden區會(huì )被清理,活著(zhù)的對象會(huì )被復制到“From”survivor區。因為是從eden區復制過(guò)來(lái)的,所以使用的是連續空間,沒(méi)有碎片。然后eden繼續添加新的對象,直到eden再次滿(mǎn)為止。此時(shí)eden區和“From”區都有數據,不為空。然后gc之后,eden區有幸存者,“From”區也凈化后,也有幸存者。此時(shí)“To”區域為空,然后將“From”和eden區域的幸存者Copy到“To”區域。復制時(shí),“收件人”中的空格 area也是挨著(zhù)分配的,沒(méi)有碎片。然后,清空eden區和“From”區,這說(shuō)明:“總有一個(gè)幸存者空間是空的,另一個(gè)非空的幸存者空間沒(méi)有碎片。
這時(shí)候“From”和“To”就會(huì )互換角色,即新的“To”就是上次GC之前的“From”,新的“From”就是上次GC之前的“To”。在任何情況下,名為 To 的 Survivor 區域都保證為空。Minor GC會(huì )重復這個(gè)過(guò)程,直到“To”區域被填滿(mǎn),“To”區域被填滿(mǎn)后,所有對象都會(huì )被移動(dòng)到老年代。
1.1 對象先分配在eden區
目前主流的垃圾采集
器都是采用分代采集
算法,所以需要將堆內存劃分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾采集
算法。
大多數情況下,對象都分配在年輕代的eden區。當eden區沒(méi)有足夠的空間分配時(shí),虛擬機會(huì )發(fā)起一次Minor GC。
Minor GC 和 Full GC 有什么區別?
下面測試一下Minor GC的流程:
package jvm.gc;
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2,allocation3,allocation4,allocation5;
allocation1 = new byte[60000*1024];
//allocation2 = new byte[2000*1024];
//allocation3 = new byte[1000*1024];
//allocation4 = new byte[1000*1024];
//allocation5 = new byte[1000*1024];
}
}
打印的內存占用是:
內存使用信息.png
從圖中可以看出,eden區基本分配完畢。如果此時(shí)為allocation2分配空間,運行結果為:
分配保障機制的實(shí)施
出現這種情況的原因:
因為在allocation2分配內存的時(shí)候eden區的內存已經(jīng)分配的差不多了,剛才我們說(shuō)了當Eden區沒(méi)有足夠的空間可以分配的時(shí)候,虛擬機就會(huì )發(fā)起一次Minor GC。在GC的時(shí)候,虛擬機發(fā)現allocation1不能存放到Survivor空間,所以需要通過(guò)分配保證機制將新生代中的對象提前轉移到老年代。old generation中的空間足夠存放allocation1,所以不會(huì )發(fā)生Full GC。Minor GC執行后,如果后面分配的對象可以存在于eden區,內存仍會(huì )分配在eden區。
1.2 大對象直接進(jìn)入老年代
大對象是需要大量連續內存空間的對象(例如字符串、數組)。
為了避免在為大對象分配內存時(shí)由于分配保證機制帶來(lái)的復制而降低效率。
1.3 長(cháng)壽對象會(huì )進(jìn)入老年代
由于虛擬機采用了分代采集
的思想來(lái)管理內存,因此在內存回收時(shí)必須能夠識別出哪些對象應該放在新生代,哪些對象應該放在老年代。為了做到這一點(diǎn),虛擬機給每個(gè)對象一個(gè)對象年齡(Age)計數器。
如果對象出生在Eden,在第一次Minor GC后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并將對象的年齡設置為1。每一次對象存活一次MinorGC在Survivor中,年齡增加1年,當它的年齡增加到一定程度(默認15歲),就會(huì )晉升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
2.判斷對象是否死亡
幾乎所有的對象實(shí)例都放在堆中,在堆上進(jìn)行垃圾回收之前的第一步是確定那些對象已經(jīng)死了(即無(wú)論如何都不能再使用的對象)。
判斷對象是否死亡
2.1 引用計數
向對象添加一個(gè)引用計數器。每當有對它的引用時(shí),計數器就會(huì )加 1;
這種方法實(shí)現簡(jiǎn)單,效率高,但是目前主流的虛擬機并沒(méi)有選擇這種算法來(lái)管理內存。主要原因是很難解決對象之間的循環(huán)引用問(wèn)題。所謂對象之間的相互引用問(wèn)題如下代碼所示:除了對象objA和objB相互引用外,這兩個(gè)對象之間沒(méi)有任何引用。但是因為它們相互引用,它們的引用計數器不為0,所以引用計數算法無(wú)法通知GC采集
器回收它們。
package jvm.gc;
public class ReferenceCountingGc {
private Object instance;
public static void main(String[] args) {
ReferenceCountingGc t1 = new ReferenceCountingGc();
ReferenceCountingGc t2 = new ReferenceCountingGc();
t1.instance = t2;
t2.instance = t1;
t1 = null;
t2 = null;
}
}
2.2 可達性分析算法
這個(gè)算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索。節點(diǎn)經(jīng)過(guò)的路徑稱(chēng)為引用鏈。當一個(gè)對象沒(méi)有任何引用鏈到 GC Roots 連接時(shí),證明該對象不可用。
可達性分析
可以作為 GC Root 的對象包括:
2.3 參考資料
無(wú)論是通過(guò)引用計數的方法判斷對象的引用次數,還是通過(guò)可達性分析的方法判斷對象的引用鏈是否可達,判斷對象的存活與“引用”有關(guān)。
在JDK1.2之前,Java中對引用的定義很傳統:如果數據的引用類(lèi)型中存儲的值代表了另一塊內存的起始地址,就說(shuō)這塊內存代表了一個(gè)引用。
JDK1.2之后,Java擴展了引用的概念,將引用分為四種:強引用、軟引用、弱引用、虛引用(引用強度逐漸減弱)
引用之間的繼承關(guān)系
1.強引用(StrongReference)
以前用的大部分引用其實(shí)都是強引用,也就是最常用的引用。如果一個(gè)對象有強引用,它就類(lèi)似于生活必需品,垃圾采集
器永遠不會(huì )回收它。當內存空間不足時(shí),Java虛擬機寧愿拋出OutOfMemoryError錯誤導致程序異常終止,也不會(huì )通過(guò)任意回收強引用對象來(lái)解決內存不足問(wèn)題。
例子:
package jvm.gc.reference;
<p>

public class StrongReferenceDemo {
/**
* 輸出結果:
* java.lang.Object@135fbaa4
* 能打印出來(lái)說(shuō)明obj2沒(méi)有被回收
*
* @param args
*/
public static void main(String[] args) {
Object obj1 = new Object();//這樣定義就是強引用
Object obj2 = obj1;
obj1 = null;//置空
System.gc();
System.out.println(obj2); //能打印出來(lái)說(shuō)明沒(méi)有被回收
}
}
</p>
2. 軟引用(SoftReference)
如果一個(gè)對象只有軟引用,那么它類(lèi)似于可有可無(wú)的家居用品。如果有足夠的內存空間,垃圾采集
器將不會(huì )回收它。如果內存空間不夠,這些對象的內存就會(huì )被回收。只要垃圾采集
器不采集
它,該對象就可以被程序使用。軟引用可用于實(shí)現對內存敏感的緩存。
軟引用可以與引用隊列(ReferenceQueue)結合使用。如果軟引用引用的對象被垃圾回收,JAVA虛擬機會(huì )將軟引用添加到與其關(guān)聯(lián)的引用隊列中。
軟引用可以加快JVM對垃圾內存的回收,維護系統的安全,防止內存溢出(OutOfMemory)等問(wèn)題。
適用場(chǎng)景
假設一個(gè)應用需要讀取大量的本地圖片:
使用軟引用解決了這個(gè)問(wèn)題。
設計思路:
使用HashMap保存圖片的路徑與對應圖片對象關(guān)聯(lián)的軟引用的映射關(guān)系。當內存不足時(shí),JVM會(huì )自動(dòng)回收這些緩存的圖片對象占用的空間,避免OOM問(wèn)題。
Map imageCache = new HashMap();
3.弱引用(WeakReference)
如果一個(gè)對象只有弱引用,它類(lèi)似于可有可無(wú)的家居用品。弱引用和軟引用的區別在于只有弱引用的對象生命周期更短。在垃圾回收線(xiàn)程掃描其管轄內存區域的過(guò)程中,一旦發(fā)現只有弱引用的對象,無(wú)論當前內存空間是否足夠,都會(huì )回收其內存。然而,由于垃圾采集
器是一個(gè)非常低優(yōu)先級的線(xiàn)程,只有弱引用的對象可能無(wú)法快速找到。
弱引用可以與引用隊列(ReferenceQueue)結合使用。如果弱引用引用的對象被垃圾回收,Java虛擬機會(huì )將弱引用添加到與其關(guān)聯(lián)的引用隊列中。
例子:
package jvm.gc.reference;
import java.lang.ref.WeakReference;
public class WeakReferenceDemo {
/**
* 輸出結果為:
* java.lang.Object@135fbaa4
* java.lang.Object@135fbaa4
* =========================
* null
* null
*
* 這就體現了:
* 在垃圾回收器線(xiàn)程掃描它所管轄的內存區域的過(guò)程中,
* 一旦發(fā)現了只具有弱引用的對象,不管當前內存空間足夠與否,都會(huì )回收它的內存。
* @param args
*/
public static void main(String[] args) {
Object o1 = new Object();
WeakReference weakReference = new WeakReference(o1);
System.out.println(o1);
System.out.println(weakReference.get());
o1 = null;
System.gc();
System.out.println("=========================");
System.out.println(o1);
System.out.println(weakReference.get());
}
}
適用場(chǎng)景
WeakHashmap的應用:
代碼:
package jvm.gc.reference;
import java.util.HashMap;
import java.util.WeakHashMap;
public class WeakHashmapDemo {
public static void main(String[] args) {
myHashmap();
System.out.println("========================");
myWeakHashmap();
}
private static void myWeakHashmap() {
WeakHashMap map = new WeakHashMap();
//HashMap map = new HashMap();
Integer key = new Integer(1);
String value = "HashMap";
map.put(key,value);
System.out.println(map);
key = null;
System.out.println(map);
System.gc();
System.out.println(map+"\t"+map.size());
}
private static void myHashmap() {
//WeakHashMap map = new WeakHashMap();
<p>

HashMap map = new HashMap();
Integer key = new Integer(1);
String value = "HashMap";
map.put(key,value);
System.out.println(map);
key = null;
System.out.println(map);
System.gc();
System.out.println(map+"\t"+map.size());
}
}
</p>
4.幻影參考(PhantomReference)
“Phantom reference”,顧名思義,是沒(méi)有用的。與其他類(lèi)型的引用不同,幻象引用不決定對象的生命周期。如果一個(gè)對象只收錄
虛引用,就好像它沒(méi)有引用一樣,可以隨時(shí)被垃圾回收。
幻影引用主要用于跟蹤被垃圾采集
的對象的活動(dòng)。
幻影引用與軟引用和弱引用的區別之一是幻影引用必須與引用隊列(ReferenceQueue)結合使用。當垃圾回收器要回收一個(gè)對象時(shí),如果發(fā)現它還有一個(gè)虛引用,就會(huì )把這個(gè)虛引用添加到與之關(guān)聯(lián)的引用隊列中,然后再回收該對象的內存。程序可以通過(guò)判斷引用隊列中是否加入了幻引用來(lái)獲知被引用對象是否會(huì )被垃圾回收。如果程序發(fā)現引用隊列中加入了虛引用,則可以在被引用對象的內存被回收之前采取必要的動(dòng)作。
2.4 不可達對象不是“必死”
即使是可達性分析方法中的不可達對象也不是“必死”的。對屬性分析不可達的對象進(jìn)行第一次標記,篩選一次,篩選條件為是否需要對該對象執行finalize方法。當對象沒(méi)有覆蓋finalize方法,或者finalize方法已經(jīng)被虛擬機調用過(guò),虛擬機認為這兩種情況不需要執行。
判斷需要執行的對象會(huì )被放入隊列中進(jìn)行二次標記,除非該對象與引用鏈上的任何對象相關(guān)聯(lián),才會(huì )真正被回收。
2.5 判斷常量是廢棄對象
運行常量池主要是回收廢棄的常量。
常量是否為廢棄常量的判斷標準: 如果常量池中存在字符串“abc”,如果當前沒(méi)有String對象引用該字符串常量,則說(shuō)明常量“abc”為廢棄常量。如果此時(shí)發(fā)生內存回收 必要時(shí),“abc”會(huì )被系統從常量池中清除。
2.6 判斷一個(gè)類(lèi)是無(wú)用類(lèi)
方法區主要是回收無(wú)用的類(lèi)。
判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”,一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
虛擬機可以回收滿(mǎn)足以上三個(gè)條件的無(wú)用類(lèi)。這里說(shuō)的只是“可以”,并不是像對象一樣不使用就會(huì )被回收。
3. 垃圾采集
算法 3.1 Mark-Sweep 算法
該算法分為“標記”和“清除”兩個(gè)階段:首先標記所有不需要回收的對象,標記完成后統一回收所有未標記的對象。它是最基本的采集算法,后續的算法都是通過(guò)改進(jìn)它的缺點(diǎn)得到的。這種垃圾采集
算法產(chǎn)生了兩個(gè)明顯的問(wèn)題:
效率問(wèn)題空間問(wèn)題(標記清除后會(huì )產(chǎn)生大量不連續的碎片)
標記掃描算法
3.2 復制
為了解決效率問(wèn)題,出現了“復制”采集
算法。它可以將內存分成大小相同的兩塊,一次使用其中的一塊。當這塊內存用完后,將存活的對象復制到另一塊內存中,然后一次性清理已用空間。這樣每次內存回收就是回收一半的內存范圍。
復制算法
3.3 標記整理算法
根據老年代的特點(diǎn)提出的一種標記算法。標記過(guò)程還是和“mark-clear”算法一樣,只是后面的步驟不是直接回收可回收對象,而是將所有存活的對象移到一端,然后直接清理。超出字節序邊界的內存。
標記算法
3.4 分代采集
算法
目前虛擬機的垃圾回收采用的是分代回收算法。這個(gè)算法沒(méi)有什么新意,只是根據對象生命周期的不同,把內存分成若干塊。一般java堆分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾回收算法。
比如在新生代中,每次回收都會(huì )有大量對象死亡,所以可以選擇復制算法,只需要付出少量的對象復制成本就可以完成每次垃圾回收。對象在老年代存活的概率比較高,沒(méi)有額外的空間來(lái)保證它的分配,所以我們必須選擇“mark-clear”或者“mark-compact”算法進(jìn)行垃圾回收。
4.垃圾采集
器
如果說(shuō)回收算法是內存回收的方法論,那么垃圾回收器就是內存回收的具體實(shí)現。
當我們比較采集器
時(shí),并不是要挑出最好的。因為到目前為止還沒(méi)有最好的垃圾采集
器,更不用說(shuō)通用的垃圾采集
器了,我們能做的就是根據具體的應用場(chǎng)景選擇適合自己的垃圾采集
器。
除G1外,年輕代都是copy算法,老年代是mark-clean或mark-compact方式。
老年代和新生代垃圾采集
器分類(lèi)
垃圾采集
器的組合
4.1 串行采集
器
串行采集
器
虛擬機的設計者當然知道Stop The World帶來(lái)的糟糕的用戶(hù)體驗,所以在后續的垃圾采集
器設計中不斷縮短停頓時(shí)間(停頓還是有的,尋找最佳垃圾采集
器的過(guò)程還在繼續) .
Serial采集
器對應的參數
4.2 ParNew 采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾采集
外,其余行為(控制參數、采集
算法、回收策略等)與Serial采集
器完全相同。
ParNew采集
器
ParNew采集
器的參數
它是許多以服務(wù)器模式運行的虛擬機的首選。除了Serial采集
器,只有CMS采集
器(真正的并發(fā)采集
器,后面會(huì )介紹)可以配合使用。
添加了并行和并發(fā)概念:
4.3 并行清除采集
器
并行清除采集
器
Parallel Scavenge 采集
器側重于吞吐量(CPU 的有效使用)。CMS 等垃圾采集
器更關(guān)注用戶(hù)線(xiàn)程暫停時(shí)間(改善用戶(hù)體驗)。所謂吞吐量就是CPU中用于運行用戶(hù)代碼的時(shí)間與CPU消耗的總時(shí)間的比值。Parallel Scavenge 采集
器提供了很多參數供用戶(hù)找到最合適的暫停時(shí)間或最大吞吐量。如果對采集
器的運行不太了解,手動(dòng)優(yōu)化有難度,可以選擇將內存管理優(yōu)化交給虛擬機來(lái)完成。好的選擇。
4.4 系列老采集器
Serial采集
器的老年代版本,也是單線(xiàn)程采集
器。它主要有兩個(gè)用途:一是在JDK1.5及更早版本中與Parallel Scavenge采集
器配合使用,二是作為CMS采集
器的備份方案。
4.5 并行舊采集
器
Parallel Scavenge 采集
器的老一代版本。使用多線(xiàn)程和“標記和排序”算法。在吞吐量和 CPU 資源很重要的地方,可以?xún)?yōu)先考慮 Parallel Scavenge 采集
器和 Parallel Old 采集
器。
4.6 CMS 采集
器
氣相色譜儀
CMS 的四個(gè)步驟和優(yōu)缺點(diǎn)
CMS(Concurrent Mark Sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。非常適合用在注重用戶(hù)體驗的應用上。
CMS(Concurrent Mark Sweep)采集
器是HotSpot虛擬機第一個(gè)真正意義上的并發(fā)采集
器。這是垃圾采集
線(xiàn)程和用戶(hù)線(xiàn)程(基本上)同時(shí)工作的第一次。
從名字中的Mark Sweep這兩個(gè)字可以看出,CMS采集
器是通過(guò)“標記-清除”算法實(shí)現的,其運行過(guò)程比以往的垃圾采集
器都要復雜。整個(gè)過(guò)程分為四個(gè)步驟:
主要優(yōu)勢:
- 并發(fā)采集
,低暫停
缺點(diǎn):
- 對CPU資源敏感
- 無(wú)法處理漂浮垃圾
- 它使用的回收算法——“標記和清除”算法會(huì )導致采集
結束時(shí)產(chǎn)生大量空間碎片
4.7 G1 采集
器
G1采集
器
G1采集
器核心理念
G1標志回收流程
G1(Garbage-First)是一個(gè)面向服務(wù)器的垃圾采集
器,主要針對配備多處理器和大容量?jì)却娴臋C器。在大概率滿(mǎn)足GC停頓時(shí)間要求的同時(shí),還具有高吞吐量的性能特點(diǎn)。
G1采集
器的特點(diǎn):
G1采集
器的幾個(gè)步驟:
G1采集
器在后臺維護一個(gè)優(yōu)先級列表,每次根據允許的采集
時(shí)間,優(yōu)先回收價(jià)值最高的Region(這就是它名字Garbage-First的由來(lái))。這種使用Region劃分內存空間和優(yōu)先區域回收的方式保證了G1采集
器在有限的時(shí)間內盡可能多地采集
(通過(guò)將內存打零)
參考:%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6.md
解決方案:搞定JVM垃圾回收就是這么簡(jiǎn)單
回顧以上:
寫(xiě)在這部分前面的常見(jiàn)面試問(wèn)題:
文中提到了問(wèn)題的答案
這篇文章的導火索
當需要排查各種內存溢出問(wèn)題,當垃圾回收被稱(chēng)為系統達到更高并發(fā)的瓶頸時(shí),我們需要對這些“自動(dòng)化”技術(shù)進(jìn)行必要的監控和調整。
Java 程序員必讀的文檔
哈哈皮啦!本人開(kāi)源的一個(gè)Java學(xué)習指導文檔。一本涵蓋大多數Java程序員需要掌握的核心知識的書(shū)正在逐步完善中,期待您的參與。Github 地址:. 看看吧,我想你不會(huì )后悔的,如果可以的話(huà),可以給個(gè)Star鼓勵一下!
1 揭開(kāi)JVM內存分配與回收的神秘面紗
Java的自動(dòng)內存管理主要是對象內存回收和對象內存分配。同時(shí),Java自動(dòng)內存管理的核心功能是堆內存中對象的分配和回收。
JDK1.8之前的堆內存示意圖:
從上圖可以看出,堆內存分為新生代、老年代和永久代。新生代又分為:Eden區+Survior1區+Survior2區。值得注意的是,在JDK 1.8中整個(gè)永久代被移除,取而代之的是一個(gè)叫做Metaspace的區域(永久代使用JVM的堆內存空間,而元空間使用物理內存,直接受物理內存限制機)。
1.1 對象先分配在eden區
目前主流的垃圾采集
器都是采用分代采集
算法,所以需要將堆內存劃分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾采集
算法。
大多數情況下,對象都分配在年輕代的eden區。當eden區沒(méi)有足夠的空間分配時(shí),虛擬機會(huì )發(fā)起一次Minor GC。下面我們來(lái)做一下實(shí)際測試。
在測試之前,我們先來(lái)看看Minor Gc和Full GC的區別?
測試:
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2;
allocation1 = new byte[30900*1024];
//allocation2 = new byte[900*1024];
}
}
復制
運行它:
添加參數:-XX:+PrintGCDetails
運行結果:
從上圖可以看出,eden區的內存幾乎已經(jīng)全部分配完畢(即使程序什么都不做,新生代也會(huì )使用2000k多的內存)。如果我們?yōu)?allocation2 分配內存會(huì )怎樣?
allocation2 = new byte[900*1024];
復制
簡(jiǎn)單解釋一下為什么會(huì )這樣:因為分配內存到allocation2的時(shí)候eden區的內存已經(jīng)分配的差不多了,剛才我們說(shuō)了當Eden區沒(méi)有足夠的空間分配時(shí),虛擬機就會(huì )發(fā)起一次Minor GC。在GC的時(shí)候,虛擬機也發(fā)現allocation1不能存放在Survior空間,所以不得不通過(guò)allocation guarantee機制,提前將新生代中的對象轉移到老年代。old generation中的空間足夠存放allocation1,所以不會(huì )發(fā)生Full GC。Minor GC執行后,如果后面分配的對象在eden區可以存在,內存仍然會(huì )分配在eden區。代碼驗證可以如下進(jìn)行:
public class GCTest {
public static void main(String[] args) {
byte[] allocation1, allocation2,allocation3,allocation4,allocation5;
allocation1 = new byte[32000*1024];
allocation2 = new byte[1000*1024];
allocation3 = new byte[1000*1024];
allocation4 = new byte[1000*1024];
allocation5 = new byte[1000*1024];
}
}
復制
1.2 大對象直接進(jìn)入老年代
大對象是需要大量連續內存空間的對象(例如字符串、數組)。
為什么一定要這樣?
為了避免在為大對象分配內存時(shí)由于分配保證機制帶來(lái)的復制而降低效率。
1.3 長(cháng)壽對象會(huì )進(jìn)入老年代
由于虛擬機采用了分代采集
的思想來(lái)管理內存,因此在內存回收時(shí),它必須能夠識別出哪些對象應該放在新生代,哪些對象應該放在老年代。為了做到這一點(diǎn),虛擬機給每個(gè)對象一個(gè)對象年齡(Age)計數器。
如果對象出生在Eden,在第一次Minor GC后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并將對象的年齡設置為1。每一次對象存活一次MinorGC在 Survivor 中,age 增加 1 年,當它的 age 增加到一定程度時(shí)(默認是 15 歲),就會(huì )被提升到老年代??梢酝ㄟ^(guò)參數-XX:MaxTenuringThreshold 設置將對象提升到Old Age 的年齡閾值。
1.4 動(dòng)態(tài)對象年齡判定
為了更好地適應不同程序的內存情況,虛擬機并不總是要求對象年齡必須達到一定的值才能進(jìn)入老年代。如果Survivor空間中所有同齡對象的大小之和大于Survivor空間的一半,則年齡大于等于該年齡的對象可以直接進(jìn)入老年代,無(wú)需達到要求的年齡。
2 對象死了?

幾乎所有的對象實(shí)例都放在堆中,在堆上進(jìn)行垃圾回收之前的第一步是確定那些對象已經(jīng)死了(即無(wú)論如何都不能再使用的對象)。
2.1 引用計數
向對象添加一個(gè)引用計數器。每當有對它的引用時(shí),計數器就會(huì )加 1;
這種方法實(shí)現簡(jiǎn)單,效率高,但是目前主流的虛擬機并沒(méi)有選擇這種算法來(lái)管理內存。主要原因是很難解決對象之間的循環(huán)引用問(wèn)題。所謂對象之間的相互引用問(wèn)題如下代碼所示:除了對象objA和objB相互引用外,這兩個(gè)對象之間沒(méi)有任何引用。但是因為它們相互引用,它們的引用計數器不為0,所以引用計數算法無(wú)法通知GC采集
器回收它們。
public class ReferenceCountingGc {
Object instance = null;
public static void main(String[] args) {
ReferenceCountingGc objA = new ReferenceCountingGc();
ReferenceCountingGc objB = new ReferenceCountingGc();
objA.instance = objB;
objB.instance = objA;
objA = null;
objB = null;
}
}
復制
2.2 可達性分析算法
這個(gè)算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索。節點(diǎn)經(jīng)過(guò)的路徑稱(chēng)為引用鏈。當一個(gè)對象沒(méi)有任何引用鏈到 GC Roots 連接時(shí),證明該對象不可用。
可達性分析算法
2.3 更多參考資料
無(wú)論是通過(guò)引用計數的方法判斷對象的引用次數,還是通過(guò)可達性分析的方法判斷對象的引用鏈是否可達,判斷對象的存活與“引用”有關(guān)。
在JDK1.2之前,Java中對引用的定義很傳統:如果引用類(lèi)型數據中存儲的值代表了另一塊內存的起始地址,就說(shuō)這塊內存代表了一個(gè)引用。
JDK1.2之后,Java擴展了引用的概念,將引用分為四種:強引用、軟引用、弱引用、虛引用(引用強度逐漸減弱)
1. 強引用
我們之前使用的大部分引用其實(shí)都是強引用,也就是最常用的引用。如果一個(gè)對象有強引用,它就類(lèi)似于生活必需品,垃圾采集
器永遠不會(huì )回收它。當內存空間不足時(shí),Java虛擬機寧愿拋出OutOfMemoryError錯誤導致程序異常終止,也不會(huì )通過(guò)任意回收強引用對象來(lái)解決內存不足問(wèn)題。
2. 軟引用(SoftReference)
如果一個(gè)對象只有軟引用,那么它類(lèi)似于可以購買(mǎi)的商品。如果有足夠的內存空間,垃圾采集
器將不會(huì )回收它。如果內存空間不夠,這些對象的內存就會(huì )被回收。只要垃圾采集
器不采集
它,該對象就可以被程序使用。軟引用可用于實(shí)現對內存敏感的緩存。
軟引用可以與引用隊列(ReferenceQueue)結合使用。如果軟引用引用的對象被垃圾回收,JAVA虛擬機會(huì )將軟引用添加到與其關(guān)聯(lián)的引用隊列中。
3.弱引用(WeakReference)
如果一個(gè)對象只有弱引用,那么它類(lèi)似于可以購買(mǎi)的商品。弱引用和軟引用的區別在于只有弱引用的對象生命周期更短。在垃圾回收線(xiàn)程掃描其管轄內存區域的過(guò)程中,一旦發(fā)現只有弱引用的對象,無(wú)論當前內存空間是否足夠,都會(huì )回收其內存。然而,由于垃圾采集
器是一個(gè)非常低優(yōu)先級的線(xiàn)程,只有弱引用的對象可能無(wú)法快速找到。
弱引用可以與引用隊列(ReferenceQueue)結合使用。如果弱引用引用的對象被垃圾回收,Java虛擬機會(huì )將弱引用添加到與其關(guān)聯(lián)的引用隊列中。
4.幻影參考(PhantomReference)
“Phantom reference”,顧名思義,是沒(méi)有用的。與其他類(lèi)型的引用不同,幻象引用不決定對象的生命周期。如果一個(gè)對象只收錄
虛引用,就好像它沒(méi)有引用一樣,可以隨時(shí)被垃圾回收。
幻影引用主要用于跟蹤被垃圾采集
的對象的活動(dòng)。
幻影引用與軟引用和弱引用的區別之一是幻影引用必須與引用隊列(ReferenceQueue)結合使用。當垃圾回收器要回收一個(gè)對象時(shí),如果發(fā)現它還有一個(gè)虛引用,就會(huì )把這個(gè)虛引用添加到與之關(guān)聯(lián)的引用隊列中,然后再回收該對象的內存。程序可以通過(guò)判斷引用隊列中是否加入了幻引用來(lái)獲知被引用對象是否會(huì )被垃圾回收。如果程序發(fā)現引用隊列中加入了虛引用,則可以在被引用對象的內存被回收之前采取必要的動(dòng)作。
特別要注意的是,弱引用和幻引用在編程中很少用到,軟引用經(jīng)常用到。這是因為軟引用可以加快JVM對垃圾內存的回收,維護系統的安全,防止內存溢出。(OutOfMemory) 等問(wèn)題。
2.4 不可達對象不是“必死”
即使是可達性分析方法中的不可達對象也不是“必死”的。對屬性分析不可達的對象進(jìn)行第一次標記,篩選一次,篩選條件為是否需要對該對象執行finalize方法。當對象沒(méi)有覆蓋finalize方法,或者finalize方法已經(jīng)被虛擬機調用過(guò),虛擬機認為這兩種情況不需要執行。
判斷需要執行的對象會(huì )被放入隊列中進(jìn)行二次標記,除非該對象與引用鏈上的任何對象相關(guān)聯(lián),才會(huì )真正被回收。
2.5 如何判斷一個(gè)常量是廢棄常量
運行時(shí)常量池主要回收廢棄的常量。那么,我們如何判斷一個(gè)常量是一個(gè)過(guò)時(shí)常量呢?
如果常量池中存在字符串“abc”,如果當前不存在引用該字符串常量的String對象,則說(shuō)明常量“abc”為廢棄常量。如果此時(shí)發(fā)生內存回收并且有必要,“abc”就會(huì )被系統從常量池中清除掉。
注意:我們也說(shuō)過(guò),JDK1.7及以后版本的JVM把運行時(shí)常量池移出了方法區,在Java堆(Heap)中開(kāi)辟了一塊區域來(lái)存放運行時(shí)常量池。
2.6 如何判斷一個(gè)類(lèi)是無(wú)用類(lèi)
方法區主要是回收無(wú)用類(lèi),那么如何判斷一個(gè)類(lèi)是否為無(wú)用類(lèi)呢?
判斷一個(gè)常量是否為“廢棄的常量”比較簡(jiǎn)單,但是判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”的條件就比較苛刻。一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
虛擬機可以回收滿(mǎn)足以上三個(gè)條件的無(wú)用類(lèi)。這里說(shuō)的只是“可以”,并不是像對象一樣不使用就會(huì )被回收。
3 垃圾回收算法
垃圾采集
算法
3.1 標記-掃描算法
該算法分為“標記”和“清除”兩個(gè)階段:首先標記所有需要回收的對象,標記完成后統一回收所有標記的對象。它是最基本的采集
算法,效率很高,但是會(huì )帶來(lái)兩個(gè)明顯的問(wèn)題:
效率問(wèn)題空間問(wèn)題(標記清除后會(huì )產(chǎn)生大量不連續的碎片)
標記掃描算法
3.2 復制算法

為了解決效率問(wèn)題,出現了“復制”采集
算法。它可以將內存分成大小相同的兩塊,一次使用其中的一塊。當這塊內存用完后,將存活的對象復制到另一塊內存中,然后一次性清理已用空間。這樣每次內存回收就是回收一半的內存范圍。
復制算法
3.3 標記整理算法
根據一種特殊的基于老年代特點(diǎn)的標記算法,標記過(guò)程還是和“標記-清除”算法一樣,只是后面的步驟不是直接回收可回收對象,而是移動(dòng)所有存活的對象到一個(gè)section,然后直接清理掉end boundary之外的Memory。
標記整理算法
3.4 分代采集
算法
目前虛擬機的垃圾回收采用分代回收算法。這個(gè)算法沒(méi)有什么新意,只是根據對象生命周期的不同,把內存分成若干塊。Java堆一般分為新生代和老年代,這樣我們就可以根據各個(gè)年代的特點(diǎn)選擇合適的垃圾回收算法。
比如在新生代中,每次回收都會(huì )有大量對象死亡,所以可以選擇復制算法,只需要付出少量的對象復制成本就可以完成每次垃圾回收。對象在老年代存活的概率比較高,沒(méi)有額外的空間來(lái)保證它的分配,所以我們必須選擇“標記-清除”或“標記-排序”算法進(jìn)行垃圾回收。
采訪(fǎng)延伸問(wèn)題:HotSpot為什么分新生代和老年代?
根據上面對分代采集
算法的介紹回答。
4 垃圾采集
器
如果說(shuō)回收算法是內存回收的方法論,那么垃圾回收器就是內存回收的具體實(shí)現。
當我們比較采集器
時(shí),我們并不是要挑選一個(gè)最好的采集器
。因為我們知道目前沒(méi)有最好的垃圾采集
器,更談不上萬(wàn)能的垃圾采集
器,我們能做的就是根據具體的應用場(chǎng)景選擇適合自己的垃圾采集
器。試想一下:如果有一個(gè)完美的采集
器適用于四海之內的任何場(chǎng)景,那么我們的HotSpot虛擬機就不會(huì )實(shí)現這么多不同的垃圾采集
器。
4.1 串行采集
器
串行(serial)采集
器 采集
器是最基本也是最古老的垃圾采集
器。大家看名字就知道這個(gè)采集
器是單線(xiàn)程采集
器。它的“單線(xiàn)程”的含義不僅僅意味著(zhù)它只會(huì )使用一個(gè)垃圾采集
線(xiàn)程來(lái)完成垃圾采集
工作,更重要的是它在執行垃圾采集
工作時(shí)必須暫停所有其他工作線(xiàn)程(“Stop The World”)直到采集
完畢。
新生代采用復制算法,老年代采用標記-排序算法。
串行采集
器
虛擬機的設計者當然知道Stop The World帶來(lái)的糟糕的用戶(hù)體驗,所以在后續的垃圾采集
器設計中不斷縮短停頓時(shí)間(停頓還是有的,尋找最佳垃圾采集
器的過(guò)程還在繼續) .
但是串行采集
器與其他垃圾采集
器相比有什么優(yōu)勢嗎?當然有,簡(jiǎn)單高效(相對單線(xiàn)程的其他采集
器)。Serial采集
器由于沒(méi)有線(xiàn)程交互開(kāi)銷(xiāo),自然可以獲得很高的單線(xiàn)程采集
效率。Serial 采集
器是在客戶(hù)端模式下運行的虛擬機的不錯選擇。
4.2 ParNew 采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾采集
外,其余行為(控制參數、采集
算法、回收策略等)與Serial采集
器完全相同。
新生代采用復制算法,老年代采用標記-排序算法。
ParNew采集
器
它是許多以服務(wù)器模式運行的虛擬機的首選。除了Serial采集
器,只有CMS采集
器(真正的并發(fā)采集
器,后面會(huì )介紹)可以配合使用。
添加了并行和并發(fā)概念:
4.3 并行清除采集
器
Parallel Scavenge 采集
器類(lèi)似于 ParNew 采集
器。那么它有什么特別之處呢?
-XX:+UseParallelGC
使用Parallel收集器+ 老年代串行
-XX:+UseParallelOldGC
使用Parallel收集器+ 老年代并行
復制
Parallel Scavenge 采集
器側重于吞吐量(CPU 的有效使用)。CMS等垃圾采集
器的關(guān)注點(diǎn)更多的是用戶(hù)線(xiàn)程的停頓時(shí)間(提升用戶(hù)體驗)。所謂吞吐量就是CPU中運行用戶(hù)代碼所花費的時(shí)間與CPU總消耗時(shí)間的比值。Parallel Scavenge 采集
器提供了許多參數供用戶(hù)找到最合適的暫停時(shí)間或最大吞吐量。如果你不太了解采集
器的運行,如果存在手動(dòng)優(yōu)化,你可以選擇將內存管理優(yōu)化交給虛擬機來(lái)完成。這也是一個(gè)不錯的選擇。
新生代采用復制算法,老年代采用標記-排序算法。
ParNew采集
器
4.4.系列老采集器
Serial采集
器的老年代版本,也是單線(xiàn)程采集
器。它主要有兩個(gè)用途:一是與JDK1.5及更早版本的Parallel Scavenge采集
器一起使用,二是作為CMS采集
器的備份解決方案。
4.5 并行舊采集
器
Parallel Scavenge 采集
器的老一代版本。使用多線(xiàn)程和“標記和排序”算法。在注重吞吐量和CPU資源的情況下,可以?xún)?yōu)先考慮Parallel Scavenge采集
器和Parallel Old采集
器。
4.6 CMS 采集
器
CMS(Concurrent Mark Sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。非常適合用在注重用戶(hù)體驗的應用上。
CMS(Concurrent Mark Sweep)采集
器是HotSpot虛擬機第一個(gè)真正意義上的并發(fā)采集
器。這是垃圾采集
線(xiàn)程和用戶(hù)線(xiàn)程(基本上)同時(shí)工作的第一次。
從名字中的Mark Sweep這兩個(gè)字可以看出,CMS采集
器是通過(guò)“標記-清除”算法實(shí)現的,其運行過(guò)程比以往的垃圾采集
器都要復雜。整個(gè)過(guò)程分為四個(gè)步驟:
CMS 垃圾采集
器
從它的名字就可以看出它是一個(gè)優(yōu)秀的垃圾采集
器,主要優(yōu)點(diǎn):并發(fā)采集
,低暫停。但它有以下三個(gè)明顯的缺點(diǎn):
4.7 G1 采集
器
G1(Garbage-First)是一個(gè)面向服務(wù)器的垃圾采集
器,主要針對配備多處理器和大容量?jì)却娴臋C器。大概率滿(mǎn)足GC停頓時(shí)間要求,同時(shí)具有高吞吐量的性能特點(diǎn)。
在JDK1.7中被視為HotSpot虛擬機的一個(gè)重要的進(jìn)化特征。它具有以下特點(diǎn):
G1采集
器的運行大致分為以下幾個(gè)步驟:
G1采集
器在后臺維護一個(gè)優(yōu)先級列表,每次根據允許的采集
時(shí)間選擇回收值最高的Region(這就是它名字Garbage-First的由來(lái))。這種使用Region劃分內存空間和優(yōu)先區域回收的方法保證了GF采集
器在有限的時(shí)間內(通過(guò)將內存打零)采集
盡可能多的內存。
參考:
解決方案:JVM(2)垃圾收集器
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 60 次瀏覽 ? 2022-12-01 13:33
1.對象存活
內存回收和分配主要集中在堆內存和方法區內存(程序計數器占用空間小,虛擬機棧和本地方法棧與線(xiàn)程有相同的生命周期)。
1.1、引用計數算法
向對象添加引用計數。只要有對它的引用,計數器就會(huì )加一;當引用無(wú)效時(shí),計數器減一;
優(yōu)點(diǎn):實(shí)現簡(jiǎn)單,判斷效率高;
缺點(diǎn):難以解決對象間相互循環(huán)引用的問(wèn)題,不能回收;
1.2. 可達性分析算法
該算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索,形成一條引用鏈。當一個(gè)對象沒(méi)有任何到 GC Roots 的引用鏈時(shí),它就被判定為死亡。Java語(yǔ)言中可以作為GC Roots的對象包括:
1.3、對象引用類(lèi)型
java中有四種類(lèi)型的引用:
1.4. 物標回收流程
即使是在可達性分析算法中不可達的對象也不是“必死”的。此時(shí),他們暫時(shí)處于“試用期”階段。真正要告死一個(gè)對象,至少要經(jīng)過(guò)兩個(gè)標記過(guò)程:如果對象經(jīng)過(guò)reachability分析后,發(fā)現沒(méi)有引用鏈連接到GC Roots,就會(huì )第一次被標記并篩選一次。篩選條件是是否需要對該對象執行finalize()方法。當對象沒(méi)有覆蓋finalize()方法,或者finalize()方法已經(jīng)被虛擬機調用過(guò)時(shí),虛擬機將這兩種情況都視為“不需要執行”。
如果確定這個(gè)對象需要執行finalize()方法,那么這個(gè)對象就會(huì )被放入一個(gè)叫做F-Queue的隊列中,之后由虛擬機自動(dòng)創(chuàng )建一個(gè)低優(yōu)先級的Finalizer線(xiàn)程來(lái)執行它。這里所謂的“執行”是指虛擬機觸發(fā)這個(gè)方法,但并不承諾等待它結束。這樣做的原因是,如果一個(gè)對象在finalizer方法中執行緩慢,或者出現死循環(huán)(更極端的情況),很可能會(huì )導致F-Queue中的其他對象永遠等待,甚至導致整個(gè)內存回收系統墜毀。finalize()方法是對象逃脫死亡命運的最后機會(huì )。稍后,GC 會(huì )標記 F-Queue 中的對象,進(jìn)行第二次小范圍的標記。
1.5. 回收方法區
永久代垃圾回收主要回收兩部分;過(guò)時(shí)的常量和無(wú)用的類(lèi)?;厥者^(guò)時(shí)的常量與回收 Java 堆中的對象非常相似。以常量池中字面量的回收為例,如果一個(gè)字符串“abe”進(jìn)入了常量池,但是當前系統中沒(méi)有任何名為“abc”的字符串對象,也就是說(shuō)沒(méi)有字符串對象常量池中的“abc”常量被引用,沒(méi)有其他引用這個(gè)字面量。如果此時(shí)發(fā)生內存回收,必要時(shí)系統會(huì )將“abc”常量從常量池中清除。常量池中其他類(lèi)(接口)、方法、字段的符號引用也類(lèi)似。
判斷一個(gè)常量是否為“廢棄的常量”比較簡(jiǎn)單,但是判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”的條件就比較苛刻。
一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
2. 垃圾采集
算法 2.1. 標記清除算法:
最基本的采集
算法是“標記-清除”(Mark-Sweep)算法。該算法分為兩個(gè)階段:“標記”和“清除”。首先標記所有需要回收的對象,標記的都是Object。
標記清除.png
主要有兩個(gè)缺點(diǎn):
2.2. 復制算法
復制算法根據容量將可用內存分成兩個(gè)大小相等的塊,并且一次只使用其中一個(gè)。當這塊內存用完后,將存活的對象復制到另一塊中,然后一次性清理掉已使用的內存空間。這樣每次都回收了整個(gè)半個(gè)區域,分配內存時(shí)就不用考慮內存碎片等復雜情況。只需要移動(dòng)堆頂指針,按順序分配內存即可,實(shí)現簡(jiǎn)單,運行高效。只是這個(gè)算法的代價(jià)是將內存減少到原來(lái)的一半大小,有點(diǎn)太高了。
2.3. 標記排序算法
復制采集
算法在對象存活率高的時(shí)候會(huì )執行更多的復制操作,效率會(huì )變低。更重要的是,如果不想浪費50%的空間,就需要有額外的空間分配保證來(lái)應對已用內存中所有對象都是100%存活的極端情況,所以不能直接在老年代算法中選擇這個(gè)選項。根據老年代的特點(diǎn),提出了另一種“標記緊湊”(Mark-Compact)算法。標記過(guò)程還是和“mark-clear”算法一樣,只是后面的步驟不是直接清理可回收對象,而是讓所有存活的對象移動(dòng)到一端,然后直接清理內存之外的內存結束邊界。
標記完成.png
2.4. 世代相傳的想法
分代采集
算法根據對象的生命周期將內存分成若干塊。一般Java堆分為新生代和老年代,這樣可以根據各個(gè)年代的特點(diǎn)采用最合適的采集
算法。
在新生代中,每次垃圾回收時(shí)發(fā)現大量對象死亡,只回收少數存活的對象,所以采用復制算法,只需要付出a的復制成本就可以完成回收少數幸存的對象。在老年代,由于對象存活率高,沒(méi)有多余的空間分配給它,所以需要使用“mark-clean”或“mark-clean”算法進(jìn)行回收。
3. HotSpot算法的實(shí)現 3.1.枚舉根節點(diǎn)
GC Root 查找引用鏈的缺點(diǎn):
在 HotsPoL 的實(shí)現中,使用了一組稱(chēng)為 OopMap 的數據結構來(lái)存儲對象引用。當類(lèi)加載完成后,HotSpot會(huì )計算出對象偏移處數據的類(lèi)型,并在JIT編譯過(guò)程中,在具體位置也會(huì )記錄棧和寄存器中哪些位置是引用。這樣GC在掃描的時(shí)候就可以直接知道參考信息。
3.2. 安全要點(diǎn)
Hotspot可以通過(guò)OopMap快速完成GC Root的遍歷,但是有很多東西會(huì )導致OopMap的內容發(fā)生變化。如果每條指令都生成對應的OopMap,需要額外占用大量空間,GC的空間成本會(huì )很高。變得很高大。
實(shí)際上,Hotspot 只記錄“特定位置”的 OopMap 信息。這些位置被稱(chēng)為安全點(diǎn)(safepoino,即程序執行不會(huì )在所有地方都停下來(lái)開(kāi)始GC,只有到了安全點(diǎn)才能暫停。一般選擇方法調用、循環(huán)跳轉、異常跳轉等指令被用作安全點(diǎn)。
safepoint需要考慮的問(wèn)題是GC發(fā)生時(shí),如何在safepoint停止所有線(xiàn)程。
有兩種選擇:
搶占式中斷:搶占式中斷不需要線(xiàn)程的執行代碼主動(dòng)配合。當GC發(fā)生時(shí),所有線(xiàn)程首先被中斷。如果發(fā)現線(xiàn)程中斷的地方不在安全點(diǎn),就恢復線(xiàn)程,讓它跑到安全點(diǎn)。點(diǎn)擊中斷。很少有虛擬機實(shí)現使用搶占式中斷來(lái)掛起線(xiàn)程以響應 GC 事件。
主動(dòng)中斷:當GC需要中斷線(xiàn)程時(shí),并不直接對線(xiàn)程進(jìn)行操作,而是簡(jiǎn)單地設置一個(gè)標志,每個(gè)線(xiàn)程在執行時(shí)主動(dòng)輪詢(xún)該標志,發(fā)現中斷標志是時(shí),中斷并掛起自己真的。輪詢(xún)標志與安全點(diǎn)重合的地方,加上創(chuàng )建對象需要分配內存的地方。
執行 JNI 調用的線(xiàn)程)“運行”到最近的安全點(diǎn),然后停止。這里有兩種選擇:搶占式中斷(Preemptivc suspension)和主動(dòng)中斷(volunta port suspension)。所有線(xiàn)程全部中斷。如果發(fā)現線(xiàn)程中斷的地方不在安全點(diǎn),就會(huì )恢復線(xiàn)程,讓它“跑”到安全點(diǎn)。很少有虛擬機實(shí)現使用搶占式中斷來(lái)掛起線(xiàn)程以響應 GC 事件。主動(dòng)中斷的思想是當GC需要中斷線(xiàn)程時(shí),并不直接對線(xiàn)程進(jìn)行操作,而是簡(jiǎn)單地設置一個(gè)標志,每個(gè)線(xiàn)程在執行時(shí)主動(dòng)輪詢(xún)這個(gè)標志,發(fā)現時(shí)中斷并掛起自己中斷標志為真。上升。輪詢(xún)標志與安全點(diǎn)重合的地方,加上創(chuàng )建對象需要分配內存的地方。下面代碼清單3中的測試命令是Hotspot生成的輪詢(xún)命令。當線(xiàn)程需要掛起時(shí),虛擬機就會(huì )掛起。, 1 60 100內存頁(yè)被設置為不可讀,當線(xiàn)程執行測試指令時(shí),會(huì )產(chǎn)生自陷異常信號,線(xiàn)程會(huì )被掛起在預先注冊的異常處理器中等待,這樣的匯編指令將完成安全點(diǎn)輪詢(xún)并觸發(fā)線(xiàn)程中斷。
safepoints的選擇既不能太小導致GC等待時(shí)間太長(cháng),也不能太頻繁導致運行時(shí)負載過(guò)大。因此,安全點(diǎn)的選擇基本上是以“程序是否具有允許程序長(cháng)時(shí)間執行的特性”為標準——因為每條指令的執行時(shí)間很短,程序不太可能被因為指令流的長(cháng)度太長(cháng)而執行?!伴L(cháng)執行”最明顯的特征是指令序列的多路復用,比如方法調用、循環(huán)跳轉、異常跳轉等,所以帶有這些功能的指令會(huì )產(chǎn)生安全點(diǎn)。
3.3. 安全區
使用safepoint貌似完美解決了如何進(jìn)入Gc的問(wèn)題,但實(shí)際情況不一定。安全點(diǎn)機制保證了程序在執行的時(shí)候,會(huì )在不太長(cháng)的時(shí)間內遇到一個(gè)可以進(jìn)入GC的安全點(diǎn)。但是,當程序沒(méi)有運行的時(shí)候,也就是沒(méi)有分配CPU時(shí)間的時(shí)候,一個(gè)典型的例子就是線(xiàn)程處于休眠狀態(tài)或者Blocked狀態(tài)。此時(shí)線(xiàn)程無(wú)法響應JVM的中斷請求,跑到安全的地方中斷掛起。JVM 也顯然不太可能等待線(xiàn)程重新分配 CPU 時(shí)間。對于這種情況,就需要一個(gè)安全區域(safe Region)來(lái)解決。安全區是指在一段代碼內,引用關(guān)系不會(huì )發(fā)生變化。
當線(xiàn)程執行到SafeRegion中的代碼時(shí),首先標志自己進(jìn)入了Safe Region狀態(tài)。在這段時(shí)間里,當JVM要發(fā)起GC時(shí),它并不關(guān)心標記自己為安全Region狀態(tài)的線(xiàn)程。當一個(gè)線(xiàn)程即將離開(kāi)安全區域時(shí),它會(huì )檢查系統是否完成了根節點(diǎn)的枚舉(或整個(gè)GC過(guò)程)。如果完成了,線(xiàn)程會(huì )繼續執行,否則必須等待,直到收到safe to leave signal在safe Region。
4. 與垃圾回收相關(guān)的概念 4.1。垃圾采集
性能指標 4.2.分代采集
模型
世代采集
(Generation 采集
)是指在內存空間劃分不同的區域,每個(gè)區域存儲不同年齡的對象,每個(gè)區域可以根據自身特點(diǎn)靈活采用自己的采集
策略。
根據存儲對象的年齡,分代可以分為3種類(lèi)型:
根據垃圾回收在不同代中的作用,垃圾回收類(lèi)型分為兩種:
分配空間的時(shí)候,先在new era的伊甸區分配。當Eden區內存耗盡時(shí),會(huì )觸發(fā)Minor GC;在復制鏈接中,存活對象會(huì )被復制到一個(gè)Survivor區。如果 Survivor 區已滿(mǎn),將允許對象的一個(gè)??子集被提升到老年代。當提升時(shí)發(fā)現老年代沒(méi)有多余空間時(shí),會(huì )通過(guò)Full GC回收整個(gè)堆空間(CMS除外)。
JVM通過(guò)兩個(gè)參數來(lái)判斷一個(gè)對象是否可以晉升到老年代:
4.3. 快速配送
通常,系統具有可用于分配對象的最大且最連續的內存塊。在這種情況下,如果使用指針碰撞算法來(lái)分配對象內存空間,效率是相當可觀(guān)的。這個(gè)算法的思路是:記錄下一個(gè)分配對象的位置,當有新的對象要分配時(shí),如果檢查剩余空間容納該對象,那么只需要一次移動(dòng)指針的操作完成內存分配。
對于多線(xiàn)程應用,分配操作需要保證線(xiàn)程安全。如果使用全局鎖來(lái)保證線(xiàn)程安全的內存分配,就會(huì )成為性能瓶頸。所以Hotspot采用了thread-local allocation cache技術(shù)(即Thread-Local Allocation Buffers,簡(jiǎn)稱(chēng)TLABs)。每個(gè)線(xiàn)程都會(huì )有自己的TLAB,就是Eden區的一個(gè)小空間。因為每個(gè) TLAB 只對一個(gè)線(xiàn)程可見(jiàn),分配操作可以使用 bump-the-pointer 技術(shù)快速完成,無(wú)需使用任何鎖定機制:只有當一個(gè)線(xiàn)程填滿(mǎn)一個(gè) TLAB 并需要獲取一個(gè)新的時(shí),同步是必須的. 在虛擬機開(kāi)啟了UseTLAB選項的前提下,在分配新的對象空間時(shí),會(huì )先嘗試在TLAB空間中分配對象空間。如果空間分配請求失敗,
4.4. 堆棧分配和逃逸分析
棧上分配的基本思想是這樣的:分析局部變量的范圍僅限于方法內部。然后 JVM 直接在棧幀中分配對象空間,避免在堆中分配。這個(gè)分析過(guò)程稱(chēng)為逃逸分析,在棧幀中分配對象的方法稱(chēng)為棧上分配。這樣做的目的是減少新生代的集合數量,間接提高JVM的性能。
4.5. 垃圾采集
器的設計演變 5. 垃圾采集
器介紹 5.1.串行采集
器
串行采集
器是一個(gè)單線(xiàn)程采集
器。它的“單線(xiàn)程”意義不僅僅意味著(zhù)它只會(huì )使用一個(gè)CPU或一個(gè)采集
線(xiàn)程來(lái)完成垃圾采集
,更重要的是,當它采集
垃圾時(shí),必須掛起所有其他工作線(xiàn)程,直到它完成采集
。
與其他采集
器相比,它也有優(yōu)勢:簡(jiǎn)單高效(相對于其他采集
器的單線(xiàn)程),對于僅限于單CPU的環(huán)境,Serial采集
器沒(méi)有線(xiàn)程交互開(kāi)銷(xiāo),自然而然會(huì )專(zhuān)注于垃圾采集
Get單線(xiàn)程采集
效率最高。在用戶(hù)的桌面應用場(chǎng)景中,分配給虛擬機管理的內存一般都不會(huì )很大,采集
新生代的幾十兆甚至一兩百兆(僅新生代使用的內存,桌面應用基本上做不管它有多大),停頓時(shí)間可以控制在幾十毫秒以?xún)?,最多一百毫秒。只要不是?jīng)常發(fā)生,這種停頓是可以接受的。所以,
串口.png
5.2、ParNew采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾回收外,其行為還包括Serial采集
器可用的所有控制參數(例如:-XX:SurvivorRatio、-XX:PretenureSizeThreshold、-XX:HandlePromotionFailure等)、采集
算法、Stop The World、對象分配規則、回收策略等與Serial采集
器完全相同。事實(shí)上,這兩個(gè)采集
器共享相當多的代碼。
ParNew 采集
器除了多線(xiàn)程采集
器之外,與Serial 采集
器相比并沒(méi)有太多創(chuàng )新之處,但它是許多運行在Server 模式下的虛擬機的首選新生代采集
器。其中之一是與性能無(wú)關(guān)但重要的原因是,除了Serial采集
器之外,目前只有它與CMS采集
器一起使用。
ParNew 采集
器在單 CPU 環(huán)境下永遠不會(huì )比 Serial 采集
器有更好的效果。即使由于線(xiàn)程交互的開(kāi)銷(xiāo),采集
器在超線(xiàn)程技術(shù)實(shí)現的雙 CPU 環(huán)境中也不能 100% 有效。保證覆蓋串行采集
器。當然,隨著(zhù)可以使用的CPU數量的增加,對于GC時(shí)有效利用系統資源還是很有好處的。
ParNew.png
5.3、Parallel Scavenge采集
器
Parallel scavenge collector是新一代的使用復制算法的采集
器,是一種并行的多線(xiàn)程采集
器。Parallel scavenge 采集
器的特點(diǎn)是它的側重點(diǎn)不同于其他采集
器。Parallel scavenge collector的目標是達到一個(gè)可控的吞吐量(Throughput)。所謂吞吐量就是運行用戶(hù)代碼的CPU時(shí)間占總CPU時(shí)間的比值,即吞吐量=運行用戶(hù)代碼時(shí)間/(運行用戶(hù)代碼時(shí)間+垃圾回收時(shí)間),虛擬機已經(jīng)運行了一共100分鐘,其中垃圾回收用了1分鐘,也就是99%的吞吐量。
暫停時(shí)間越短,越適合需要與用戶(hù)交互的程序。良好的響應速度可以提升用戶(hù)體驗,而高吞吐量可以高效利用CPU時(shí)間,盡快完成程序的計算任務(wù)。主要適用于后臺計算,而不是需要過(guò)多交互的Tasks。Parallel Scavenge采集
器提供了兩個(gè)參數來(lái)精確控制吞吐量,分別是控制最大垃圾采集
暫停時(shí)間的-XX:MaxGCPauseMillis參數和直接設置吞吐量大小的-XX:GCTimeRatio參數。
MaxGCPauseMillis參數允許的值為大于0的毫秒數,采集
器會(huì )盡量保證內存回收花費的時(shí)間不超過(guò)設定值。但是不要以為這個(gè)參數的值設置的小一點(diǎn),系統的垃圾回收速度就會(huì )快一些。GC暫停時(shí)間的縮短是以吞吐量和新生代空間為代價(jià)的;更小,采集
新生代的300MB肯定比采集
500MB快,這直接導致垃圾采集
更頻繁。以前是10秒采集一次,停頓100毫秒,現在是5秒采集一次,停頓70毫秒。毫秒,停頓時(shí)間確實(shí)下降了,但是吞吐量也下降了。
GCTimeRatio參數的值應該是一個(gè)大于0小于100的整數,即垃圾回收時(shí)間占總時(shí)間的比例,相當于吞吐量的倒數。如果這個(gè)參數設置為19,最大允許的GC時(shí)間會(huì )占總時(shí)間的5%(即 1 / ( 1 + 19 ) ),默認為99,也就是允許最多占1%(即1 / ( 1 + 99 ) ) 垃圾采集
時(shí)間。
由于與吞吐量的密切關(guān)系,Parallel scavenge 采集
器也常被稱(chēng)為“吞吐量?jì)?yōu)先”的采集
器。除了以上兩個(gè)參數,Parallel scavenge collector還有一個(gè)參數-xx:+UseAdaptiveSizePolicy值得關(guān)注。這是一個(gè)開(kāi)關(guān)參數。開(kāi)啟該參數后,無(wú)需手動(dòng)指定新生代的大?。?Xmn)、Eden占幸存者區域的比例(-xx:SurvivorRatio)、老年代對象的年齡( -xx : PretenureSizeThreshold )等詳細參數,虛擬機根據當前系統運行狀態(tài)采集
性能監控信息,動(dòng)態(tài)調整這些參數以提供最合適的停頓時(shí)間或最大吞吐量。
5.4、Serial老采集器
Serial old是老版本的Serial采集
器,也是單線(xiàn)程采集
器,使用“標記-排序”算法。這個(gè)采集
器的主要意義也是在客戶(hù)端模式下用于虛擬機。如果是server模式,主要有兩個(gè)用途:一是配合JDK 1.5及更早版本中的Parallel scavenge collector使用。,另一個(gè)用途是作為CMS采集
器的備份計劃,在并發(fā)采集
出現Concurrcnt Mode Failure時(shí)使用。這兩點(diǎn)將在后面的內容中詳細說(shuō)明。
SerialOld.png
5.5、并行舊采集
器
Parallel old 是 Parallel 清道夫采集
器的老一代版本,它使用多線(xiàn)程和“標記與排序”算法。如果新生代選擇Para??llel Scavenge采集
器,那么老年代就只能選擇Serial Old (Ps Markswccp)采集
器了。由于老年代Serial Old采集
器對服務(wù)器應用程序性能的“拖累”,使用Parallel Scavcnge采集
服務(wù)器可能無(wú)法最大化整體應用程序的吞吐量,因為單線(xiàn)程老年代采集
器不能充分利用服務(wù)器的多CPU處理能力。在老年代很大、硬件比較先進(jìn)的環(huán)境下,這種組合的吞吐量可能甚至沒(méi)有那么“強大” 作為 ParNew 和 CMS 的組合。直到Parallel Old采集
器的出現,“吞吐量?jì)?yōu)先”的采集
器終于有了更名副其實(shí)的應用組合。在注重吞吐量和對CPU資源敏感的場(chǎng)合,可以?xún)?yōu)先考慮Parallcl Scavcnge plus Parallel Old collector。
ParallelOld.png
5.6、CMS采集
器
CMS(Concurrent Mark sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。目前,很大一部分Java應用都集中在互聯(lián)網(wǎng)網(wǎng)站或B/S系統的服務(wù)器端。這類(lèi)應用特別注重服務(wù)的響應速度,希望系統停頓時(shí)間最短,給用戶(hù)帶來(lái)更好的體驗。CMS采集
器非常適合這類(lèi)應用的需求。
CMS采集
器基于“mark-clear”算法實(shí)現,整個(gè)過(guò)程分為四步:
由于整個(gè)過(guò)程中耗時(shí)最長(cháng)的采集
器線(xiàn)程可以和用戶(hù)線(xiàn)程一起工作,所以CMS采集
器的內存回收過(guò)程是和用戶(hù)線(xiàn)程并發(fā)執行的。
cms.png
CMS的缺點(diǎn)是:
5.7、G1采集
器
G1采集
器具有以下特點(diǎn):
G1中的堆內存布局:
G1將整個(gè)Java堆劃分為多個(gè)大小相等的獨立區域(Region)。雖然仍然保留了新生代和老年代的概念,但新生代和老年代不再是物理隔離的。它們都是區域的一部分(不需要連續)。
G1跟蹤每個(gè)Region的垃圾堆積值(回收獲得的空間大小和回收所需時(shí)間的經(jīng)驗值),并在后臺維護一個(gè)優(yōu)先級列表。每次根據允許的采集時(shí)間,優(yōu)先采集值最大的Region。(這就是 Garbage-First 名稱(chēng)的來(lái)源)。這種使用Region劃分內存空間和優(yōu)先區域回收的方式,保證了G1采集
器在有限的時(shí)間內獲得盡可能高的采集
效率。
在Gl采集
器中,對于Region之間的對象引用以及其他采集
器中新生代和老年代之間的對象引用,虛擬機使用Remembered Set來(lái)避免全堆掃描。G1 中的每個(gè) Region 都有對應的 Remembered Set。當虛擬機發(fā)現程序正在寫(xiě)入引用類(lèi)型的數據時(shí),會(huì )生成一個(gè)Write Barrier暫時(shí)中斷寫(xiě)入操作,并檢查Reference所引用的對象是否在不同的Region中。其中(在generation的例子中,就是檢查old generation中的對象是否引用了new generation中的對象),如果是,則通過(guò)Card Table。將相關(guān)引用信息記錄到引用對象所屬Region的Remembered Set中。在執行內存恢復時(shí),
如果不算維護Remembered set的操作,GI采集
器的操作大致可以分為以下幾步:
最后,在篩選回收階段,首先,根據Sun公開(kāi)的信息,這個(gè)階段其實(shí)可以和用戶(hù)程序并發(fā)執行,但是因為只回收了一部分Region,所以時(shí)間是可控的user,而暫停用戶(hù)線(xiàn)程會(huì )大大提高采集效率。
5.8. 垃圾采集
器參數匯總參數說(shuō)明
-XX:+UseSerialGC
在年輕代和老年代使用串行采集
器
-XX:幸存者比率
設置eden區大小與survivor區大小的比例
-XX:PretenureSizeThreshold
設置大對象直接進(jìn)入老年代的閾值。當對象的大小超過(guò)這個(gè)值時(shí),會(huì )直接分配到老年代。
-XX:MaxTenuringThreshold
設置對象進(jìn)入老年代的最大年齡。每次Minor GC后,對象的年齡加1,任何超過(guò)這個(gè)年齡的對象都必須進(jìn)入老年代
參數說(shuō)明
-XX:+UseParNewGC
在年輕代使用并行采集
器
-XX:+UseParallelOldGC
老年代使用并行采集
器
-XX:并行GC線(xiàn)程
設置用于垃圾回收的線(xiàn)程數。通??梢缘扔贑PU個(gè)數,但在CPU個(gè)數較多的情況下,設置一個(gè)比較小的值比較合理。
-XX:MaxGCPauseMillis
設置最大垃圾采集
暫停時(shí)間。它的值是一個(gè)大于0的整數。采集
器在工作時(shí),會(huì )調整Java堆大小或其他參數,盡可能將停頓時(shí)間控制在MaxGCPauseMillis以?xún)取?br /> -XX:GCTimeRatio
設置吞吐量大小。它是一個(gè)從 0 到 100 的整數。假設 GCTimeRatio 的值為 n,系統將花費不超過(guò) 1/(1+n) 的時(shí)間進(jìn)行垃圾回收。
-XX:+UseAdaptiveSizePolicy
開(kāi)啟自適應 GC 策略。在這種模式下,新生代的大小、eden 和 survivor 的比例、晉升到老年代的對象的年齡等參數都會(huì )自動(dòng)調整,以在堆大小、吞吐量和停頓時(shí)間之間達到平衡。
參數說(shuō)明
-XX:+UseConcMarkSweepGC
新生代使用并行采集
器,老年代使用CMS+串行采集
器
-XX:并行CMS線(xiàn)程
設置 CMS 的線(xiàn)程數
-XX:CMSInitiatingOccupancyFraction
設置CMS采集
器在老年代空間使用后觸發(fā),默認68%
-XX:+UseCMSCompactAtFull采集
設置CMS采集
器完成垃圾回收后是否進(jìn)行內存整理
-XX:CMSFullGCsBeforeCompaction
設置好CMS垃圾回收次數后,進(jìn)行一次內存壓縮
-XX:+CMSClassUnloadingEnabled
允許回收類(lèi)元數據區域
-XX:CMSInitiatingPermOccupancyFraction
當永久區域占用達到這個(gè)百分比時(shí),開(kāi)始CMS回收(前提是-XX:+CMSClassUnloadingEnabled被激活)
-XX:UseCMSInitiatingOccupancyOnlyn
表示只有達到閾值才會(huì )執行CMS回收
-XX:+CMSIncrementalMode
使用增量模式更適合單CPU。增量模式在 JDK8 中被標記為過(guò)時(shí),并將在 JDK 9 中完全刪除。
參數說(shuō)明
-XX:+使用G1GC
使用 G1 采集
器
-XX:MaxGCPauseMillis
設置最大垃圾回收暫停時(shí)間
-XX:GCPauseIntervalMillis
設置暫停間隔
參數說(shuō)明
-XX:+使用TLAB
啟用 TLAB 分配
-XX:+PrintTLAB
打印TLAB相關(guān)分配信息
-XX:TLABSize
設置 TLAB 大小
自動(dòng)調整 TLAB 大小
參數說(shuō)明
-XX:+DisableExplicitGC
禁用顯式 GC
-XX:+ExplicitGCInvokesConcurrent
使用并發(fā)處理顯式 GC
5.9 垃圾采集
器比較
比較.png
采集
器算法并發(fā)并行 STW 適用生成
連續劇
復制
不
不
是的
新一代
標準桿新
復制
是的
是的
不
新一代
并行清除
復制
是的
是的
不
新一代
序列號舊
標記組織
不
不
是的
老一輩
并行老
標記組織
是的
是的
不
老一輩
內容管理系統
清除標記
是的
是的
是的
老一輩
G1
世代采集
是的
是的
不
舊時(shí)代,新一代
Collector適用場(chǎng)景優(yōu)缺點(diǎn)
連續劇
單CPU,客戶(hù)端模式
簡(jiǎn)單高效,無(wú)線(xiàn)程切換開(kāi)銷(xiāo),專(zhuān)注于GC
STW
標準桿新
多CPU,服務(wù)器模式
并行并發(fā) GC
STW
并行清除
吞吐量?jì)?yōu)先級,客戶(hù)端或服務(wù)器模式
吞吐量?jì)?yōu)先級,設置吞吐量以適應不同的場(chǎng)景
序列號舊
單CPU,客戶(hù)端模式
簡(jiǎn)單高效,無(wú)線(xiàn)程切換開(kāi)銷(xiāo),專(zhuān)注于GC
STW
并行老
吞吐量?jì)?yōu)先級,客戶(hù)端或服務(wù)器模式
吞吐量?jì)?yōu)先級,設置吞吐量以適應不同的場(chǎng)景
內容管理系統
互聯(lián)網(wǎng); B/S系統服務(wù)
并發(fā)采集
,低暫停
對CPU資源敏感,無(wú)法處理浮動(dòng)垃圾,內存碎片
G1
對于服務(wù)器端應用程序
并發(fā)并行、分代采集
、可測停頓、空間整合
6. 內存分配與回收策略 6.1. 對象首先在伊甸園分配
大多數時(shí)候對象是在伊甸園中分配的。當Eden中沒(méi)有足夠的空間分配時(shí),JVM會(huì )發(fā)起一次Minor GC。,
次要垃圾回收(Minor GC):指發(fā)生在新生代的垃圾回收。由于大多數JAVA對象都有注冊和死亡的特點(diǎn),所以Minor GC非常頻繁,回收速度普遍較快。
老年代GC(Major GC/Full GC):指發(fā)生在老年代的GC。Major GC 的發(fā)生,通常伴隨著(zhù)至少一次 Minor GC。Major GC 一般比 Minor GC 快 10 倍。
6.2. 大對象直接進(jìn)入老年代
所謂大對象是指需要大量連續內存空間的java對象,比如很長(cháng)的字符串、數組等。大對象對于虛擬機的內存分配來(lái)說(shuō)是個(gè)壞消息(抱怨Java虛擬機,比遇到大對象更壞的消息是遇到一群“生死存亡”的“短命大對象”,寫(xiě)programs should be avoided),頻繁的大對象很可能導致垃圾回收在內存中還有大量空間獲取足夠的連續空間來(lái)“放置”它們時(shí)被提前觸發(fā)。虛擬機提供了一個(gè)-XX:PretenureSizeThreshold參數,讓大于這個(gè)設置值的對象直接在老年代分配。這樣做的目的是為了避免在Eden區和兩個(gè)Survivor區之間進(jìn)行大量的內存復制(回收新生代使用復制算法采集
內存)。PretenureSizeThreshold 參數僅對 Serial 和 ParNew 采集
器有效。
6.3. 長(cháng)壽對象會(huì )進(jìn)入老年代
虛擬機為每個(gè)對象定義一個(gè)對象年齡(Age)計數器。如果對象出生在Eden,在第一個(gè)Minor GG后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并設置對象的age為1。每有一個(gè)對象“存活”一個(gè)Survivor區的Minor GC,其年齡會(huì )增加1年。當它的年齡增長(cháng)到一定程度(默認是15歲),就會(huì )被提升到老年代。將對象提升到 Old Age 的年齡閾值可以通過(guò)參數 -xx : MaxTenuringThreshold 設置。
6.4. 動(dòng)態(tài)對象的年齡確定
為了更好的適應不同程序的內存狀態(tài),虛擬機并不總是要求對象的年齡必須達到MaxTenuringThreshold才能提升到老年代。如果survivor空間中所有同age的對象size之和大于Survivor空間的一半,則age大于等于這個(gè)age的對象可以直接進(jìn)入老年代,無(wú)需等待MaxTenuringThreshold中要求的age .
6.5. 空間分配保證
在Minor GC發(fā)生之前,虛擬機首先檢查老年代中的最大可用連續空間是否大于新生代中所有對象的總空間。如果這個(gè)條件為真,那么Minor GC可以保證它是安全的。如果不是,則虛擬機檢查 HandlePromotionFailure 設置值是否允許保證失敗。如果允許,它會(huì )繼續檢查老年代的最大可用連續空間是否大于提升到老年代的對象的平均大小。如果大于,它會(huì )嘗試進(jìn)行一次Minor GC,雖然這個(gè)Minor GC有風(fēng)險:如果小于,或者HandlePromotionFailure設置不允許風(fēng)險,那么此時(shí)也應該進(jìn)行一次Full GC。
解決方案:Meta宣布將通過(guò)保護Facebook的標識符來(lái)阻止采集行為
作為我們正在進(jìn)行的解決數據濫用問(wèn)題系列的一部分,Meta 最近分享了有關(guān)我們的外部數據濫用 (EDM) 團隊如何保護人們免受克隆網(wǎng)站侵害的最新消息。今天,官方博客詳細介紹了如何阻止在 Facebook 上采集
Facebook 標識符 (FBID)。
大多數公司在其網(wǎng)站的 URL 中使用唯一標識符。標識符是一種唯一引用人或內容的方式,例如帖子、圖像和視頻。在 Facebook 內部,這些標識符被稱(chēng)為 FBID,它們用于為人們加載內容。
采集
是指從網(wǎng)站或應用程序自動(dòng)采集
數據,可以是授權的也可以是未授權的。未經(jīng)授權的采集
通常涉及猜測標識符,或使用購買(mǎi)的標識符來(lái)采集
有關(guān)人員的數據。在某些情況下,收割者采集
標識符并碰撞和交叉過(guò)濾電話(huà)號碼或其他公開(kāi)可用的數據,以創(chuàng )建可重復使用的數據集,這些數據集有時(shí)會(huì )被出售以牟利。
圖為 URL 中帶有 PFBID 的 Facebook 帖子示例
考慮到這一點(diǎn),Meta 創(chuàng )建了假名化的 Facebook 標識符 (PFBID),它將時(shí)間戳和 FBID 結合起來(lái)生成一個(gè)唯一的時(shí)間旋轉標識符。隨著(zhù)訪(fǎng)問(wèn)原創(chuàng )
標識符的能力被逐步淘汰,這有助于防止未經(jīng)授權的數據抓取,使攻擊者更難猜測、連接和重新訪(fǎng)問(wèn)數據。
這些標識符并非旨在防止瀏覽器工具從 URL 中刪除跟蹤組件,該過(guò)程是為了更好地保護人們的隱私免受某些類(lèi)型的枚舉和延遲攻擊,同時(shí)保留持久鏈接的能力。
用戶(hù)可以在 Facebook 的“隱私問(wèn)題”頁(yè)面上閱讀有關(guān)隱私倡議的更多更新和見(jiàn)解: 查看全部
解決方案:JVM(2)垃圾收集器
1.對象存活
內存回收和分配主要集中在堆內存和方法區內存(程序計數器占用空間小,虛擬機棧和本地方法棧與線(xiàn)程有相同的生命周期)。
1.1、引用計數算法
向對象添加引用計數。只要有對它的引用,計數器就會(huì )加一;當引用無(wú)效時(shí),計數器減一;
優(yōu)點(diǎn):實(shí)現簡(jiǎn)單,判斷效率高;
缺點(diǎn):難以解決對象間相互循環(huán)引用的問(wèn)題,不能回收;
1.2. 可達性分析算法
該算法的基本思想是以一系列稱(chēng)為“GC Roots”的對象為起點(diǎn),從這些節點(diǎn)開(kāi)始向下搜索,形成一條引用鏈。當一個(gè)對象沒(méi)有任何到 GC Roots 的引用鏈時(shí),它就被判定為死亡。Java語(yǔ)言中可以作為GC Roots的對象包括:
1.3、對象引用類(lèi)型
java中有四種類(lèi)型的引用:
1.4. 物標回收流程
即使是在可達性分析算法中不可達的對象也不是“必死”的。此時(shí),他們暫時(shí)處于“試用期”階段。真正要告死一個(gè)對象,至少要經(jīng)過(guò)兩個(gè)標記過(guò)程:如果對象經(jīng)過(guò)reachability分析后,發(fā)現沒(méi)有引用鏈連接到GC Roots,就會(huì )第一次被標記并篩選一次。篩選條件是是否需要對該對象執行finalize()方法。當對象沒(méi)有覆蓋finalize()方法,或者finalize()方法已經(jīng)被虛擬機調用過(guò)時(shí),虛擬機將這兩種情況都視為“不需要執行”。
如果確定這個(gè)對象需要執行finalize()方法,那么這個(gè)對象就會(huì )被放入一個(gè)叫做F-Queue的隊列中,之后由虛擬機自動(dòng)創(chuàng )建一個(gè)低優(yōu)先級的Finalizer線(xiàn)程來(lái)執行它。這里所謂的“執行”是指虛擬機觸發(fā)這個(gè)方法,但并不承諾等待它結束。這樣做的原因是,如果一個(gè)對象在finalizer方法中執行緩慢,或者出現死循環(huán)(更極端的情況),很可能會(huì )導致F-Queue中的其他對象永遠等待,甚至導致整個(gè)內存回收系統墜毀。finalize()方法是對象逃脫死亡命運的最后機會(huì )。稍后,GC 會(huì )標記 F-Queue 中的對象,進(jìn)行第二次小范圍的標記。
1.5. 回收方法區
永久代垃圾回收主要回收兩部分;過(guò)時(shí)的常量和無(wú)用的類(lèi)?;厥者^(guò)時(shí)的常量與回收 Java 堆中的對象非常相似。以常量池中字面量的回收為例,如果一個(gè)字符串“abe”進(jìn)入了常量池,但是當前系統中沒(méi)有任何名為“abc”的字符串對象,也就是說(shuō)沒(méi)有字符串對象常量池中的“abc”常量被引用,沒(méi)有其他引用這個(gè)字面量。如果此時(shí)發(fā)生內存回收,必要時(shí)系統會(huì )將“abc”常量從常量池中清除。常量池中其他類(lèi)(接口)、方法、字段的符號引用也類(lèi)似。
判斷一個(gè)常量是否為“廢棄的常量”比較簡(jiǎn)單,但是判斷一個(gè)類(lèi)是否為“無(wú)用類(lèi)”的條件就比較苛刻。
一個(gè)類(lèi)需要同時(shí)滿(mǎn)足以下三個(gè)條件才能被認為是“無(wú)用類(lèi)”:
2. 垃圾采集
算法 2.1. 標記清除算法:
最基本的采集
算法是“標記-清除”(Mark-Sweep)算法。該算法分為兩個(gè)階段:“標記”和“清除”。首先標記所有需要回收的對象,標記的都是Object。
標記清除.png
主要有兩個(gè)缺點(diǎn):
2.2. 復制算法
復制算法根據容量將可用內存分成兩個(gè)大小相等的塊,并且一次只使用其中一個(gè)。當這塊內存用完后,將存活的對象復制到另一塊中,然后一次性清理掉已使用的內存空間。這樣每次都回收了整個(gè)半個(gè)區域,分配內存時(shí)就不用考慮內存碎片等復雜情況。只需要移動(dòng)堆頂指針,按順序分配內存即可,實(shí)現簡(jiǎn)單,運行高效。只是這個(gè)算法的代價(jià)是將內存減少到原來(lái)的一半大小,有點(diǎn)太高了。
2.3. 標記排序算法
復制采集
算法在對象存活率高的時(shí)候會(huì )執行更多的復制操作,效率會(huì )變低。更重要的是,如果不想浪費50%的空間,就需要有額外的空間分配保證來(lái)應對已用內存中所有對象都是100%存活的極端情況,所以不能直接在老年代算法中選擇這個(gè)選項。根據老年代的特點(diǎn),提出了另一種“標記緊湊”(Mark-Compact)算法。標記過(guò)程還是和“mark-clear”算法一樣,只是后面的步驟不是直接清理可回收對象,而是讓所有存活的對象移動(dòng)到一端,然后直接清理內存之外的內存結束邊界。
標記完成.png
2.4. 世代相傳的想法
分代采集
算法根據對象的生命周期將內存分成若干塊。一般Java堆分為新生代和老年代,這樣可以根據各個(gè)年代的特點(diǎn)采用最合適的采集
算法。
在新生代中,每次垃圾回收時(shí)發(fā)現大量對象死亡,只回收少數存活的對象,所以采用復制算法,只需要付出a的復制成本就可以完成回收少數幸存的對象。在老年代,由于對象存活率高,沒(méi)有多余的空間分配給它,所以需要使用“mark-clean”或“mark-clean”算法進(jìn)行回收。
3. HotSpot算法的實(shí)現 3.1.枚舉根節點(diǎn)
GC Root 查找引用鏈的缺點(diǎn):
在 HotsPoL 的實(shí)現中,使用了一組稱(chēng)為 OopMap 的數據結構來(lái)存儲對象引用。當類(lèi)加載完成后,HotSpot會(huì )計算出對象偏移處數據的類(lèi)型,并在JIT編譯過(guò)程中,在具體位置也會(huì )記錄棧和寄存器中哪些位置是引用。這樣GC在掃描的時(shí)候就可以直接知道參考信息。
3.2. 安全要點(diǎn)
Hotspot可以通過(guò)OopMap快速完成GC Root的遍歷,但是有很多東西會(huì )導致OopMap的內容發(fā)生變化。如果每條指令都生成對應的OopMap,需要額外占用大量空間,GC的空間成本會(huì )很高。變得很高大。
實(shí)際上,Hotspot 只記錄“特定位置”的 OopMap 信息。這些位置被稱(chēng)為安全點(diǎn)(safepoino,即程序執行不會(huì )在所有地方都停下來(lái)開(kāi)始GC,只有到了安全點(diǎn)才能暫停。一般選擇方法調用、循環(huán)跳轉、異常跳轉等指令被用作安全點(diǎn)。
safepoint需要考慮的問(wèn)題是GC發(fā)生時(shí),如何在safepoint停止所有線(xiàn)程。
有兩種選擇:
搶占式中斷:搶占式中斷不需要線(xiàn)程的執行代碼主動(dòng)配合。當GC發(fā)生時(shí),所有線(xiàn)程首先被中斷。如果發(fā)現線(xiàn)程中斷的地方不在安全點(diǎn),就恢復線(xiàn)程,讓它跑到安全點(diǎn)。點(diǎn)擊中斷。很少有虛擬機實(shí)現使用搶占式中斷來(lái)掛起線(xiàn)程以響應 GC 事件。
主動(dòng)中斷:當GC需要中斷線(xiàn)程時(shí),并不直接對線(xiàn)程進(jìn)行操作,而是簡(jiǎn)單地設置一個(gè)標志,每個(gè)線(xiàn)程在執行時(shí)主動(dòng)輪詢(xún)該標志,發(fā)現中斷標志是時(shí),中斷并掛起自己真的。輪詢(xún)標志與安全點(diǎn)重合的地方,加上創(chuàng )建對象需要分配內存的地方。
執行 JNI 調用的線(xiàn)程)“運行”到最近的安全點(diǎn),然后停止。這里有兩種選擇:搶占式中斷(Preemptivc suspension)和主動(dòng)中斷(volunta port suspension)。所有線(xiàn)程全部中斷。如果發(fā)現線(xiàn)程中斷的地方不在安全點(diǎn),就會(huì )恢復線(xiàn)程,讓它“跑”到安全點(diǎn)。很少有虛擬機實(shí)現使用搶占式中斷來(lái)掛起線(xiàn)程以響應 GC 事件。主動(dòng)中斷的思想是當GC需要中斷線(xiàn)程時(shí),并不直接對線(xiàn)程進(jìn)行操作,而是簡(jiǎn)單地設置一個(gè)標志,每個(gè)線(xiàn)程在執行時(shí)主動(dòng)輪詢(xún)這個(gè)標志,發(fā)現時(shí)中斷并掛起自己中斷標志為真。上升。輪詢(xún)標志與安全點(diǎn)重合的地方,加上創(chuàng )建對象需要分配內存的地方。下面代碼清單3中的測試命令是Hotspot生成的輪詢(xún)命令。當線(xiàn)程需要掛起時(shí),虛擬機就會(huì )掛起。, 1 60 100內存頁(yè)被設置為不可讀,當線(xiàn)程執行測試指令時(shí),會(huì )產(chǎn)生自陷異常信號,線(xiàn)程會(huì )被掛起在預先注冊的異常處理器中等待,這樣的匯編指令將完成安全點(diǎn)輪詢(xún)并觸發(fā)線(xiàn)程中斷。
safepoints的選擇既不能太小導致GC等待時(shí)間太長(cháng),也不能太頻繁導致運行時(shí)負載過(guò)大。因此,安全點(diǎn)的選擇基本上是以“程序是否具有允許程序長(cháng)時(shí)間執行的特性”為標準——因為每條指令的執行時(shí)間很短,程序不太可能被因為指令流的長(cháng)度太長(cháng)而執行?!伴L(cháng)執行”最明顯的特征是指令序列的多路復用,比如方法調用、循環(huán)跳轉、異常跳轉等,所以帶有這些功能的指令會(huì )產(chǎn)生安全點(diǎn)。
3.3. 安全區
使用safepoint貌似完美解決了如何進(jìn)入Gc的問(wèn)題,但實(shí)際情況不一定。安全點(diǎn)機制保證了程序在執行的時(shí)候,會(huì )在不太長(cháng)的時(shí)間內遇到一個(gè)可以進(jìn)入GC的安全點(diǎn)。但是,當程序沒(méi)有運行的時(shí)候,也就是沒(méi)有分配CPU時(shí)間的時(shí)候,一個(gè)典型的例子就是線(xiàn)程處于休眠狀態(tài)或者Blocked狀態(tài)。此時(shí)線(xiàn)程無(wú)法響應JVM的中斷請求,跑到安全的地方中斷掛起。JVM 也顯然不太可能等待線(xiàn)程重新分配 CPU 時(shí)間。對于這種情況,就需要一個(gè)安全區域(safe Region)來(lái)解決。安全區是指在一段代碼內,引用關(guān)系不會(huì )發(fā)生變化。
當線(xiàn)程執行到SafeRegion中的代碼時(shí),首先標志自己進(jìn)入了Safe Region狀態(tài)。在這段時(shí)間里,當JVM要發(fā)起GC時(shí),它并不關(guān)心標記自己為安全Region狀態(tài)的線(xiàn)程。當一個(gè)線(xiàn)程即將離開(kāi)安全區域時(shí),它會(huì )檢查系統是否完成了根節點(diǎn)的枚舉(或整個(gè)GC過(guò)程)。如果完成了,線(xiàn)程會(huì )繼續執行,否則必須等待,直到收到safe to leave signal在safe Region。
4. 與垃圾回收相關(guān)的概念 4.1。垃圾采集
性能指標 4.2.分代采集
模型
世代采集
(Generation 采集
)是指在內存空間劃分不同的區域,每個(gè)區域存儲不同年齡的對象,每個(gè)區域可以根據自身特點(diǎn)靈活采用自己的采集
策略。
根據存儲對象的年齡,分代可以分為3種類(lèi)型:
根據垃圾回收在不同代中的作用,垃圾回收類(lèi)型分為兩種:
分配空間的時(shí)候,先在new era的伊甸區分配。當Eden區內存耗盡時(shí),會(huì )觸發(fā)Minor GC;在復制鏈接中,存活對象會(huì )被復制到一個(gè)Survivor區。如果 Survivor 區已滿(mǎn),將允許對象的一個(gè)??子集被提升到老年代。當提升時(shí)發(fā)現老年代沒(méi)有多余空間時(shí),會(huì )通過(guò)Full GC回收整個(gè)堆空間(CMS除外)。
JVM通過(guò)兩個(gè)參數來(lái)判斷一個(gè)對象是否可以晉升到老年代:
4.3. 快速配送
通常,系統具有可用于分配對象的最大且最連續的內存塊。在這種情況下,如果使用指針碰撞算法來(lái)分配對象內存空間,效率是相當可觀(guān)的。這個(gè)算法的思路是:記錄下一個(gè)分配對象的位置,當有新的對象要分配時(shí),如果檢查剩余空間容納該對象,那么只需要一次移動(dòng)指針的操作完成內存分配。
對于多線(xiàn)程應用,分配操作需要保證線(xiàn)程安全。如果使用全局鎖來(lái)保證線(xiàn)程安全的內存分配,就會(huì )成為性能瓶頸。所以Hotspot采用了thread-local allocation cache技術(shù)(即Thread-Local Allocation Buffers,簡(jiǎn)稱(chēng)TLABs)。每個(gè)線(xiàn)程都會(huì )有自己的TLAB,就是Eden區的一個(gè)小空間。因為每個(gè) TLAB 只對一個(gè)線(xiàn)程可見(jiàn),分配操作可以使用 bump-the-pointer 技術(shù)快速完成,無(wú)需使用任何鎖定機制:只有當一個(gè)線(xiàn)程填滿(mǎn)一個(gè) TLAB 并需要獲取一個(gè)新的時(shí),同步是必須的. 在虛擬機開(kāi)啟了UseTLAB選項的前提下,在分配新的對象空間時(shí),會(huì )先嘗試在TLAB空間中分配對象空間。如果空間分配請求失敗,
4.4. 堆棧分配和逃逸分析
棧上分配的基本思想是這樣的:分析局部變量的范圍僅限于方法內部。然后 JVM 直接在棧幀中分配對象空間,避免在堆中分配。這個(gè)分析過(guò)程稱(chēng)為逃逸分析,在棧幀中分配對象的方法稱(chēng)為棧上分配。這樣做的目的是減少新生代的集合數量,間接提高JVM的性能。
4.5. 垃圾采集
器的設計演變 5. 垃圾采集
器介紹 5.1.串行采集
器
串行采集
器是一個(gè)單線(xiàn)程采集
器。它的“單線(xiàn)程”意義不僅僅意味著(zhù)它只會(huì )使用一個(gè)CPU或一個(gè)采集
線(xiàn)程來(lái)完成垃圾采集
,更重要的是,當它采集
垃圾時(shí),必須掛起所有其他工作線(xiàn)程,直到它完成采集
。
與其他采集
器相比,它也有優(yōu)勢:簡(jiǎn)單高效(相對于其他采集
器的單線(xiàn)程),對于僅限于單CPU的環(huán)境,Serial采集
器沒(méi)有線(xiàn)程交互開(kāi)銷(xiāo),自然而然會(huì )專(zhuān)注于垃圾采集
Get單線(xiàn)程采集
效率最高。在用戶(hù)的桌面應用場(chǎng)景中,分配給虛擬機管理的內存一般都不會(huì )很大,采集
新生代的幾十兆甚至一兩百兆(僅新生代使用的內存,桌面應用基本上做不管它有多大),停頓時(shí)間可以控制在幾十毫秒以?xún)?,最多一百毫秒。只要不是?jīng)常發(fā)生,這種停頓是可以接受的。所以,
串口.png
5.2、ParNew采集
器
ParNew 采集
器實(shí)際上是 Serial 采集
器的多線(xiàn)程版本。除了使用多線(xiàn)程進(jìn)行垃圾回收外,其行為還包括Serial采集
器可用的所有控制參數(例如:-XX:SurvivorRatio、-XX:PretenureSizeThreshold、-XX:HandlePromotionFailure等)、采集
算法、Stop The World、對象分配規則、回收策略等與Serial采集
器完全相同。事實(shí)上,這兩個(gè)采集
器共享相當多的代碼。
ParNew 采集
器除了多線(xiàn)程采集
器之外,與Serial 采集
器相比并沒(méi)有太多創(chuàng )新之處,但它是許多運行在Server 模式下的虛擬機的首選新生代采集
器。其中之一是與性能無(wú)關(guān)但重要的原因是,除了Serial采集
器之外,目前只有它與CMS采集
器一起使用。
ParNew 采集
器在單 CPU 環(huán)境下永遠不會(huì )比 Serial 采集
器有更好的效果。即使由于線(xiàn)程交互的開(kāi)銷(xiāo),采集
器在超線(xiàn)程技術(shù)實(shí)現的雙 CPU 環(huán)境中也不能 100% 有效。保證覆蓋串行采集
器。當然,隨著(zhù)可以使用的CPU數量的增加,對于GC時(shí)有效利用系統資源還是很有好處的。
ParNew.png
5.3、Parallel Scavenge采集
器
Parallel scavenge collector是新一代的使用復制算法的采集
器,是一種并行的多線(xiàn)程采集
器。Parallel scavenge 采集
器的特點(diǎn)是它的側重點(diǎn)不同于其他采集
器。Parallel scavenge collector的目標是達到一個(gè)可控的吞吐量(Throughput)。所謂吞吐量就是運行用戶(hù)代碼的CPU時(shí)間占總CPU時(shí)間的比值,即吞吐量=運行用戶(hù)代碼時(shí)間/(運行用戶(hù)代碼時(shí)間+垃圾回收時(shí)間),虛擬機已經(jīng)運行了一共100分鐘,其中垃圾回收用了1分鐘,也就是99%的吞吐量。
暫停時(shí)間越短,越適合需要與用戶(hù)交互的程序。良好的響應速度可以提升用戶(hù)體驗,而高吞吐量可以高效利用CPU時(shí)間,盡快完成程序的計算任務(wù)。主要適用于后臺計算,而不是需要過(guò)多交互的Tasks。Parallel Scavenge采集
器提供了兩個(gè)參數來(lái)精確控制吞吐量,分別是控制最大垃圾采集
暫停時(shí)間的-XX:MaxGCPauseMillis參數和直接設置吞吐量大小的-XX:GCTimeRatio參數。
MaxGCPauseMillis參數允許的值為大于0的毫秒數,采集
器會(huì )盡量保證內存回收花費的時(shí)間不超過(guò)設定值。但是不要以為這個(gè)參數的值設置的小一點(diǎn),系統的垃圾回收速度就會(huì )快一些。GC暫停時(shí)間的縮短是以吞吐量和新生代空間為代價(jià)的;更小,采集
新生代的300MB肯定比采集
500MB快,這直接導致垃圾采集
更頻繁。以前是10秒采集一次,停頓100毫秒,現在是5秒采集一次,停頓70毫秒。毫秒,停頓時(shí)間確實(shí)下降了,但是吞吐量也下降了。
GCTimeRatio參數的值應該是一個(gè)大于0小于100的整數,即垃圾回收時(shí)間占總時(shí)間的比例,相當于吞吐量的倒數。如果這個(gè)參數設置為19,最大允許的GC時(shí)間會(huì )占總時(shí)間的5%(即 1 / ( 1 + 19 ) ),默認為99,也就是允許最多占1%(即1 / ( 1 + 99 ) ) 垃圾采集
時(shí)間。
由于與吞吐量的密切關(guān)系,Parallel scavenge 采集
器也常被稱(chēng)為“吞吐量?jì)?yōu)先”的采集
器。除了以上兩個(gè)參數,Parallel scavenge collector還有一個(gè)參數-xx:+UseAdaptiveSizePolicy值得關(guān)注。這是一個(gè)開(kāi)關(guān)參數。開(kāi)啟該參數后,無(wú)需手動(dòng)指定新生代的大?。?Xmn)、Eden占幸存者區域的比例(-xx:SurvivorRatio)、老年代對象的年齡( -xx : PretenureSizeThreshold )等詳細參數,虛擬機根據當前系統運行狀態(tài)采集
性能監控信息,動(dòng)態(tài)調整這些參數以提供最合適的停頓時(shí)間或最大吞吐量。
5.4、Serial老采集器
Serial old是老版本的Serial采集
器,也是單線(xiàn)程采集
器,使用“標記-排序”算法。這個(gè)采集
器的主要意義也是在客戶(hù)端模式下用于虛擬機。如果是server模式,主要有兩個(gè)用途:一是配合JDK 1.5及更早版本中的Parallel scavenge collector使用。,另一個(gè)用途是作為CMS采集
器的備份計劃,在并發(fā)采集
出現Concurrcnt Mode Failure時(shí)使用。這兩點(diǎn)將在后面的內容中詳細說(shuō)明。
SerialOld.png
5.5、并行舊采集
器
Parallel old 是 Parallel 清道夫采集
器的老一代版本,它使用多線(xiàn)程和“標記與排序”算法。如果新生代選擇Para??llel Scavenge采集
器,那么老年代就只能選擇Serial Old (Ps Markswccp)采集
器了。由于老年代Serial Old采集
器對服務(wù)器應用程序性能的“拖累”,使用Parallel Scavcnge采集
服務(wù)器可能無(wú)法最大化整體應用程序的吞吐量,因為單線(xiàn)程老年代采集
器不能充分利用服務(wù)器的多CPU處理能力。在老年代很大、硬件比較先進(jìn)的環(huán)境下,這種組合的吞吐量可能甚至沒(méi)有那么“強大” 作為 ParNew 和 CMS 的組合。直到Parallel Old采集
器的出現,“吞吐量?jì)?yōu)先”的采集
器終于有了更名副其實(shí)的應用組合。在注重吞吐量和對CPU資源敏感的場(chǎng)合,可以?xún)?yōu)先考慮Parallcl Scavcnge plus Parallel Old collector。

ParallelOld.png
5.6、CMS采集
器
CMS(Concurrent Mark sweep)采集
器是一種旨在獲得最短恢復停頓時(shí)間的采集
器。目前,很大一部分Java應用都集中在互聯(lián)網(wǎng)網(wǎng)站或B/S系統的服務(wù)器端。這類(lèi)應用特別注重服務(wù)的響應速度,希望系統停頓時(shí)間最短,給用戶(hù)帶來(lái)更好的體驗。CMS采集
器非常適合這類(lèi)應用的需求。
CMS采集
器基于“mark-clear”算法實(shí)現,整個(gè)過(guò)程分為四步:
由于整個(gè)過(guò)程中耗時(shí)最長(cháng)的采集
器線(xiàn)程可以和用戶(hù)線(xiàn)程一起工作,所以CMS采集
器的內存回收過(guò)程是和用戶(hù)線(xiàn)程并發(fā)執行的。
cms.png
CMS的缺點(diǎn)是:
5.7、G1采集
器
G1采集
器具有以下特點(diǎn):
G1中的堆內存布局:
G1將整個(gè)Java堆劃分為多個(gè)大小相等的獨立區域(Region)。雖然仍然保留了新生代和老年代的概念,但新生代和老年代不再是物理隔離的。它們都是區域的一部分(不需要連續)。
G1跟蹤每個(gè)Region的垃圾堆積值(回收獲得的空間大小和回收所需時(shí)間的經(jīng)驗值),并在后臺維護一個(gè)優(yōu)先級列表。每次根據允許的采集時(shí)間,優(yōu)先采集值最大的Region。(這就是 Garbage-First 名稱(chēng)的來(lái)源)。這種使用Region劃分內存空間和優(yōu)先區域回收的方式,保證了G1采集
器在有限的時(shí)間內獲得盡可能高的采集
效率。
在Gl采集
器中,對于Region之間的對象引用以及其他采集
器中新生代和老年代之間的對象引用,虛擬機使用Remembered Set來(lái)避免全堆掃描。G1 中的每個(gè) Region 都有對應的 Remembered Set。當虛擬機發(fā)現程序正在寫(xiě)入引用類(lèi)型的數據時(shí),會(huì )生成一個(gè)Write Barrier暫時(shí)中斷寫(xiě)入操作,并檢查Reference所引用的對象是否在不同的Region中。其中(在generation的例子中,就是檢查old generation中的對象是否引用了new generation中的對象),如果是,則通過(guò)Card Table。將相關(guān)引用信息記錄到引用對象所屬Region的Remembered Set中。在執行內存恢復時(shí),
如果不算維護Remembered set的操作,GI采集
器的操作大致可以分為以下幾步:
最后,在篩選回收階段,首先,根據Sun公開(kāi)的信息,這個(gè)階段其實(shí)可以和用戶(hù)程序并發(fā)執行,但是因為只回收了一部分Region,所以時(shí)間是可控的user,而暫停用戶(hù)線(xiàn)程會(huì )大大提高采集效率。
5.8. 垃圾采集
器參數匯總參數說(shuō)明
-XX:+UseSerialGC
在年輕代和老年代使用串行采集
器
-XX:幸存者比率
設置eden區大小與survivor區大小的比例
-XX:PretenureSizeThreshold
設置大對象直接進(jìn)入老年代的閾值。當對象的大小超過(guò)這個(gè)值時(shí),會(huì )直接分配到老年代。
-XX:MaxTenuringThreshold
設置對象進(jìn)入老年代的最大年齡。每次Minor GC后,對象的年齡加1,任何超過(guò)這個(gè)年齡的對象都必須進(jìn)入老年代
參數說(shuō)明
-XX:+UseParNewGC
在年輕代使用并行采集
器
-XX:+UseParallelOldGC
老年代使用并行采集
器
-XX:并行GC線(xiàn)程
設置用于垃圾回收的線(xiàn)程數。通??梢缘扔贑PU個(gè)數,但在CPU個(gè)數較多的情況下,設置一個(gè)比較小的值比較合理。
-XX:MaxGCPauseMillis
設置最大垃圾采集
暫停時(shí)間。它的值是一個(gè)大于0的整數。采集
器在工作時(shí),會(huì )調整Java堆大小或其他參數,盡可能將停頓時(shí)間控制在MaxGCPauseMillis以?xún)取?br /> -XX:GCTimeRatio
設置吞吐量大小。它是一個(gè)從 0 到 100 的整數。假設 GCTimeRatio 的值為 n,系統將花費不超過(guò) 1/(1+n) 的時(shí)間進(jìn)行垃圾回收。
-XX:+UseAdaptiveSizePolicy
開(kāi)啟自適應 GC 策略。在這種模式下,新生代的大小、eden 和 survivor 的比例、晉升到老年代的對象的年齡等參數都會(huì )自動(dòng)調整,以在堆大小、吞吐量和停頓時(shí)間之間達到平衡。
參數說(shuō)明
-XX:+UseConcMarkSweepGC
新生代使用并行采集
器,老年代使用CMS+串行采集
器
-XX:并行CMS線(xiàn)程
設置 CMS 的線(xiàn)程數
-XX:CMSInitiatingOccupancyFraction
設置CMS采集
器在老年代空間使用后觸發(fā),默認68%
-XX:+UseCMSCompactAtFull采集
設置CMS采集
器完成垃圾回收后是否進(jìn)行內存整理
-XX:CMSFullGCsBeforeCompaction
設置好CMS垃圾回收次數后,進(jìn)行一次內存壓縮
-XX:+CMSClassUnloadingEnabled
允許回收類(lèi)元數據區域
-XX:CMSInitiatingPermOccupancyFraction
當永久區域占用達到這個(gè)百分比時(shí),開(kāi)始CMS回收(前提是-XX:+CMSClassUnloadingEnabled被激活)
-XX:UseCMSInitiatingOccupancyOnlyn
表示只有達到閾值才會(huì )執行CMS回收
-XX:+CMSIncrementalMode
使用增量模式更適合單CPU。增量模式在 JDK8 中被標記為過(guò)時(shí),并將在 JDK 9 中完全刪除。
參數說(shuō)明
-XX:+使用G1GC
使用 G1 采集
器
-XX:MaxGCPauseMillis
設置最大垃圾回收暫停時(shí)間
-XX:GCPauseIntervalMillis
設置暫停間隔
參數說(shuō)明
-XX:+使用TLAB
啟用 TLAB 分配
-XX:+PrintTLAB
打印TLAB相關(guān)分配信息
-XX:TLABSize
設置 TLAB 大小
自動(dòng)調整 TLAB 大小
參數說(shuō)明
-XX:+DisableExplicitGC
禁用顯式 GC
-XX:+ExplicitGCInvokesConcurrent
使用并發(fā)處理顯式 GC
5.9 垃圾采集
器比較
比較.png

采集
器算法并發(fā)并行 STW 適用生成
連續劇
復制
不
不
是的
新一代
標準桿新
復制
是的
是的
不
新一代
并行清除
復制
是的
是的
不
新一代
序列號舊
標記組織
不
不
是的
老一輩
并行老
標記組織
是的
是的
不
老一輩
內容管理系統
清除標記
是的
是的
是的
老一輩
G1
世代采集
是的
是的
不
舊時(shí)代,新一代
Collector適用場(chǎng)景優(yōu)缺點(diǎn)
連續劇
單CPU,客戶(hù)端模式
簡(jiǎn)單高效,無(wú)線(xiàn)程切換開(kāi)銷(xiāo),專(zhuān)注于GC
STW
標準桿新
多CPU,服務(wù)器模式
并行并發(fā) GC
STW
并行清除
吞吐量?jì)?yōu)先級,客戶(hù)端或服務(wù)器模式
吞吐量?jì)?yōu)先級,設置吞吐量以適應不同的場(chǎng)景
序列號舊
單CPU,客戶(hù)端模式
簡(jiǎn)單高效,無(wú)線(xiàn)程切換開(kāi)銷(xiāo),專(zhuān)注于GC
STW
并行老
吞吐量?jì)?yōu)先級,客戶(hù)端或服務(wù)器模式
吞吐量?jì)?yōu)先級,設置吞吐量以適應不同的場(chǎng)景
內容管理系統
互聯(lián)網(wǎng); B/S系統服務(wù)
并發(fā)采集
,低暫停
對CPU資源敏感,無(wú)法處理浮動(dòng)垃圾,內存碎片
G1
對于服務(wù)器端應用程序
并發(fā)并行、分代采集
、可測停頓、空間整合
6. 內存分配與回收策略 6.1. 對象首先在伊甸園分配
大多數時(shí)候對象是在伊甸園中分配的。當Eden中沒(méi)有足夠的空間分配時(shí),JVM會(huì )發(fā)起一次Minor GC。,
次要垃圾回收(Minor GC):指發(fā)生在新生代的垃圾回收。由于大多數JAVA對象都有注冊和死亡的特點(diǎn),所以Minor GC非常頻繁,回收速度普遍較快。
老年代GC(Major GC/Full GC):指發(fā)生在老年代的GC。Major GC 的發(fā)生,通常伴隨著(zhù)至少一次 Minor GC。Major GC 一般比 Minor GC 快 10 倍。
6.2. 大對象直接進(jìn)入老年代
所謂大對象是指需要大量連續內存空間的java對象,比如很長(cháng)的字符串、數組等。大對象對于虛擬機的內存分配來(lái)說(shuō)是個(gè)壞消息(抱怨Java虛擬機,比遇到大對象更壞的消息是遇到一群“生死存亡”的“短命大對象”,寫(xiě)programs should be avoided),頻繁的大對象很可能導致垃圾回收在內存中還有大量空間獲取足夠的連續空間來(lái)“放置”它們時(shí)被提前觸發(fā)。虛擬機提供了一個(gè)-XX:PretenureSizeThreshold參數,讓大于這個(gè)設置值的對象直接在老年代分配。這樣做的目的是為了避免在Eden區和兩個(gè)Survivor區之間進(jìn)行大量的內存復制(回收新生代使用復制算法采集
內存)。PretenureSizeThreshold 參數僅對 Serial 和 ParNew 采集
器有效。
6.3. 長(cháng)壽對象會(huì )進(jìn)入老年代
虛擬機為每個(gè)對象定義一個(gè)對象年齡(Age)計數器。如果對象出生在Eden,在第一個(gè)Minor GG后存活下來(lái),并且可以被Survivor容納,則將其移動(dòng)到Survivor空間,并設置對象的age為1。每有一個(gè)對象“存活”一個(gè)Survivor區的Minor GC,其年齡會(huì )增加1年。當它的年齡增長(cháng)到一定程度(默認是15歲),就會(huì )被提升到老年代。將對象提升到 Old Age 的年齡閾值可以通過(guò)參數 -xx : MaxTenuringThreshold 設置。
6.4. 動(dòng)態(tài)對象的年齡確定
為了更好的適應不同程序的內存狀態(tài),虛擬機并不總是要求對象的年齡必須達到MaxTenuringThreshold才能提升到老年代。如果survivor空間中所有同age的對象size之和大于Survivor空間的一半,則age大于等于這個(gè)age的對象可以直接進(jìn)入老年代,無(wú)需等待MaxTenuringThreshold中要求的age .
6.5. 空間分配保證
在Minor GC發(fā)生之前,虛擬機首先檢查老年代中的最大可用連續空間是否大于新生代中所有對象的總空間。如果這個(gè)條件為真,那么Minor GC可以保證它是安全的。如果不是,則虛擬機檢查 HandlePromotionFailure 設置值是否允許保證失敗。如果允許,它會(huì )繼續檢查老年代的最大可用連續空間是否大于提升到老年代的對象的平均大小。如果大于,它會(huì )嘗試進(jìn)行一次Minor GC,雖然這個(gè)Minor GC有風(fēng)險:如果小于,或者HandlePromotionFailure設置不允許風(fēng)險,那么此時(shí)也應該進(jìn)行一次Full GC。
解決方案:Meta宣布將通過(guò)保護Facebook的標識符來(lái)阻止采集行為
作為我們正在進(jìn)行的解決數據濫用問(wèn)題系列的一部分,Meta 最近分享了有關(guān)我們的外部數據濫用 (EDM) 團隊如何保護人們免受克隆網(wǎng)站侵害的最新消息。今天,官方博客詳細介紹了如何阻止在 Facebook 上采集
Facebook 標識符 (FBID)。
大多數公司在其網(wǎng)站的 URL 中使用唯一標識符。標識符是一種唯一引用人或內容的方式,例如帖子、圖像和視頻。在 Facebook 內部,這些標識符被稱(chēng)為 FBID,它們用于為人們加載內容。

采集
是指從網(wǎng)站或應用程序自動(dòng)采集
數據,可以是授權的也可以是未授權的。未經(jīng)授權的采集
通常涉及猜測標識符,或使用購買(mǎi)的標識符來(lái)采集
有關(guān)人員的數據。在某些情況下,收割者采集
標識符并碰撞和交叉過(guò)濾電話(huà)號碼或其他公開(kāi)可用的數據,以創(chuàng )建可重復使用的數據集,這些數據集有時(shí)會(huì )被出售以牟利。
圖為 URL 中帶有 PFBID 的 Facebook 帖子示例

考慮到這一點(diǎn),Meta 創(chuàng )建了假名化的 Facebook 標識符 (PFBID),它將時(shí)間戳和 FBID 結合起來(lái)生成一個(gè)唯一的時(shí)間旋轉標識符。隨著(zhù)訪(fǎng)問(wèn)原創(chuàng )
標識符的能力被逐步淘汰,這有助于防止未經(jīng)授權的數據抓取,使攻擊者更難猜測、連接和重新訪(fǎng)問(wèn)數據。
這些標識符并非旨在防止瀏覽器工具從 URL 中刪除跟蹤組件,該過(guò)程是為了更好地保護人們的隱私免受某些類(lèi)型的枚舉和延遲攻擊,同時(shí)保留持久鏈接的能力。
用戶(hù)可以在 Facebook 的“隱私問(wèn)題”頁(yè)面上閱讀有關(guān)隱私倡議的更多更新和見(jiàn)解:
解決方案:審查指南征求意見(jiàn) 針對含算法特征或商業(yè)規則和方法特征的發(fā)明專(zhuān)利申請審查
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 77 次瀏覽 ? 2022-12-01 03:29
關(guān)于公開(kāi)征求對專(zhuān)利審查指南第二部分第九章修正案草案(征求意見(jiàn)稿)征求意見(jiàn)的通知
?。?。
為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體需求,進(jìn)一步明確涉及人工智能、區塊鏈、業(yè)務(wù)規則和方法的新領(lǐng)域、新業(yè)態(tài)的專(zhuān)利審查規則, 國家知識產(chǎn)權局起草并形成了《專(zhuān)利審查指南第二編第九章修正案草案(征求意見(jiàn)稿)》(以下簡(jiǎn)稱(chēng)《征求意見(jiàn)稿》)。為征求社會(huì )各界意見(jiàn),現將草案及其起草說(shuō)明公布。有關(guān)單位和社會(huì )各界人士可在2019年12月11日前選擇下列方式之一,對《征求意見(jiàn)稿》的修改完善提出具體意見(jiàn):
1. 電子郵件: 2. 傳真: 3. 信件: 考試
北京市海淀區西土城路6號國家知識產(chǎn)權局條款法律司政策處 郵編100088(請在信封左下角注明“審查指南”) 附件: 1. 預告“專(zhuān)利審查指南第九章修正案第二部分(征求意見(jiàn)稿) 2.關(guān)于這些的注意事項
草案
對《專(zhuān)利審查指南》第二部分第九章的修正
?。ㄕ髑笠庖?jiàn)稿)。
6. 關(guān)于對含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請進(jìn)行審查的規定
專(zhuān)利申請
涉及人工智能、互聯(lián)網(wǎng)+、大數據、區塊鏈等的發(fā)明,一般收錄
算法或商業(yè)規則方法等智力活動(dòng)的規則和方法特征,本節旨在根據《專(zhuān)利法》及其實(shí)施細則對此類(lèi)申請進(jìn)行審查的特殊性作出規定。
6.1 審查基準
審查應針對要求保護的解決方案進(jìn)行,即受權利要求限制的解決方案。在審查中,不應簡(jiǎn)單地將技術(shù)特征與算法特征或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記載的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和取得的技術(shù)效果。6.1.1
根據專(zhuān)利法第25.1.2條進(jìn)行審查
權利要求涉及抽象算法或者簡(jiǎn)單的商業(yè)規則和方法,且不收錄
任何技術(shù)特征的,屬于專(zhuān)利法第二十五條第一款第2款規定的智力活動(dòng)規則和方法,不得申請專(zhuān)利。例如,基于抽象算法建立數學(xué)模型且不收錄
任何技術(shù)特征的方法,屬于專(zhuān)利法第25.1.2條規定的不應授予專(zhuān)利權的情形。再如基于用戶(hù)消費額度的返利方式,該方法所收錄
的特征均為與返利規則相關(guān)的商業(yè)規則和方法特征,不收錄
任何技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項第2項規定的不應授予專(zhuān)利權的情形。
如果索賠除
算法特征或者商業(yè)規則和方法外,還含有技術(shù)特征,權利要求整體上不是智力活動(dòng)的規則或者方法的,依照專(zhuān)利法第二十五條第一款第2項的規定,不排除取得專(zhuān)利權的可能性。
6.1.2 根據專(zhuān)利法第2.2條進(jìn)行審查如果權利要求的整體不屬于專(zhuān)利法第25條第1款第2項第
2項排除專(zhuān)利權取得的情形,則有必要審查其是否屬于專(zhuān)利法第2條第2款所指的技術(shù)方案。
在檢查收錄
算法特征或業(yè)務(wù)規則和方法特征的權利要求是否為技術(shù)解決方案時(shí),有必要將權利要求中描述的所有特征作為一個(gè)整體來(lái)考慮。如果權利要求記載了利用自然規律的技術(shù)手段用于要解決的技術(shù)問(wèn)題,并由此獲得符合自然規律的技術(shù)效果的,則權利要求的解決方案屬于專(zhuān)利法第二條第二款所述的技術(shù)方案。例如,如果權利要求中算法涉及的步驟與要解決的技術(shù)問(wèn)題密切相關(guān),例如算法處理的數據是技術(shù)領(lǐng)域具有確切技術(shù)意義的數據,并且算法的執行可以直接反映利用自然規律解決技術(shù)問(wèn)題的過(guò)程, 并且取得了技術(shù)效果,那么通常權利要求的解決方案屬于專(zhuān)利法第2條第2款所述的技術(shù)方案。
6.1.3 新穎性和創(chuàng )造性的審查在審查含有算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請的新穎性時(shí),應當考慮權利要求中記錄的所有特征,包括技術(shù)特征和算法特征或者商業(yè)規則和方法特征。審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并在技術(shù)特征方面相互作用的算法特征或者商業(yè)規則和方法特征作為一個(gè)整體來(lái)考慮?!肮δ苌舷嗷ブС?、相互作用”是指算法特征或業(yè)務(wù)規則、方法特征與技術(shù)特征緊密結合,共同構成解決技術(shù)問(wèn)題的技術(shù)手段,并能獲得相應的技術(shù)效果。
例如,如果權利要求中的算法應用于特定的技術(shù)領(lǐng)域,可以解決特定的技術(shù)問(wèn)題,那么可以認為算法特征和技術(shù)特征是
功能上相互支持,具有交互關(guān)系,算法特征成為所采取技術(shù)手段的組成部分,在進(jìn)行創(chuàng )造性審查時(shí)應考慮算法特征對方案的貢獻。
再如,如果權利要求中商業(yè)規則和方法特征的實(shí)施需要對技術(shù)手段進(jìn)行調整或者改進(jìn),可以認為業(yè)務(wù)規則和方法特征和技術(shù)特征在
功能上是相互支持和相互作用的,在進(jìn)行創(chuàng )造性審查時(shí)應考慮所述業(yè)務(wù)規則和方法特征對程序的貢獻。
6.2 復習示例
下面,根據上述審查標準給出收錄
算法特征或業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請的審查示例。
?。ㄒ唬┖袑?zhuān)利法第二十五條第一款第2項范圍內的算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不屬于專(zhuān)利保護標的。
[例1]。
一種構建數學(xué)模型的方法
應用程序內容概述
發(fā)明專(zhuān)利申請的解決方案是一種構建數學(xué)模型的方法,該方法通過(guò)增加訓練樣本的數量來(lái)提高模型的準確性。建模方法還使用與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù)的訓練樣本作為第一分類(lèi)任務(wù)數學(xué)模型的訓練樣本,從而增加訓練樣本的數量,并利用訓練樣本的特征值,提取特征值、標簽值等來(lái)訓練相關(guān)的數學(xué)模型, 最后得到第一個(gè)分類(lèi)任務(wù)的數學(xué)模型,由于訓練樣本數量少,過(guò)度擬合,建模精度差。
申請的權利要求
一種構建數學(xué)模型的方法,其特征在于它包括以下步驟:
根據第一個(gè)分類(lèi)任務(wù)的訓練樣本中的特征值和特征
在訓練樣本中至少一秒的分類(lèi)任務(wù)中,對初始特征提取模型進(jìn)行訓練,得到目標特征提取模型。 其中,所述第二分類(lèi)任務(wù)為與所述第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù);
根據目標特征提取模型,特征值
分別處理第一分類(lèi)任務(wù)的每個(gè)訓練樣本,得到每個(gè)訓練樣本對應的提取特征值;
將提取的每個(gè)訓練樣本對應的特征值和標簽值組成,提取訓練樣本,訓練初始分類(lèi)模型得到目標分類(lèi)模型;
目標分類(lèi)模型
目標特征提取模型由第一分類(lèi)任務(wù)的數學(xué)模型組成。
分析和結論
該解決方案不涉及任何特定的應用領(lǐng)域,其中訓練樣本的特征值、提取的特征值、標簽值、目標分類(lèi)模型和目標特征提取模型是抽象的一般數據,利用訓練樣本的相關(guān)數據訓練數學(xué)模型的處理過(guò)程是一系列抽象的數學(xué)方法步驟, 最終結果也是一個(gè)抽象的通用分類(lèi)數學(xué)模型。該方案是一種抽象模型建立方法,其處理對象、過(guò)程和結果不涉及與具體應用領(lǐng)域的結合,屬于抽象數學(xué)方法的優(yōu)化,整個(gè)方案不收錄
任何技術(shù)特征,本發(fā)明專(zhuān)利申請的解決屬于第25條規定的智力活動(dòng)規則和方法, 專(zhuān)利法第1條第(2)項,不屬于專(zhuān)利保護的客體。
?。ǘ┖兴惴ㄌ卣骰蛘呱虡I(yè)規則、方法特征的發(fā)明專(zhuān)利申請,利用技術(shù)手段解決技術(shù)問(wèn)題,取得技術(shù)效果的,屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,屬于專(zhuān)利保護客體。
[例2]。
一種卷積神經(jīng)網(wǎng)絡(luò )模型的訓練方法
應用程序內容概述
本發(fā)明專(zhuān)利申請在各級卷積層上對訓練圖像進(jìn)行卷積操作和最大池化操作,并對最大池化操作后獲得的特征圖像進(jìn)一步執行水平池化操作,使得經(jīng)過(guò)訓練的CNN模型在識別圖像類(lèi)別時(shí)可以識別任何大小的圖像。
申請的權利要求
一種用于卷積神經(jīng)網(wǎng)絡(luò )CNN模型的訓練方法,其中該方法包括:
獲取待訓練的CNN模型,初始模型參數包括各卷積層的初始卷積核、各層級卷積層的初始偏置矩陣、全連接層的初始
權重矩陣和全連層的初始偏置向量;
獲取多個(gè)訓練圖像;在各級卷積層
上,各級卷積層上的初始卷積核和初始偏置矩陣分別對每個(gè)訓練圖像
進(jìn)行卷積運算和最大池化運算,得到每個(gè)訓練圖像在卷積層各層次上的第一個(gè)特征圖像;
每個(gè)訓練圖像的第一個(gè)特征圖像水平
池化至少一個(gè)卷積層,獲得每個(gè)卷積層上每個(gè)訓練圖像的第二特征圖像。
確定功能
根據每個(gè)訓練圖像在卷積層上各水平的第二特征圖像的向量;
根據初始權重矩陣和初始偏差向量對每個(gè)特征向量進(jìn)行處理,得到每個(gè)訓練圖像的類(lèi)概率向量;根據每個(gè)訓練圖像的
類(lèi)概率向量和每個(gè)訓練圖像的初始類(lèi)別,計算類(lèi)誤差;
基于分類(lèi)誤差,調整待訓練CNN模型的模型參數;
基于調整后的模型參數和多個(gè)訓練圖像,繼續模型參數調整過(guò)程,直到迭代次數達到預設次數;
模型參數
當迭代次數達到預設次數時(shí)獲得的作為訓練好的CNN模型的模型參數。
分析和結論
該解決方案是卷積神經(jīng)網(wǎng)絡(luò )CNN模型的一種訓練方法,闡明了模型訓練方法每一步處理的數據都是圖像數據以及每一步如何處理圖像數據,說(shuō)明神經(jīng)網(wǎng)絡(luò )訓練算法與圖像信息處理密切相關(guān)。該方案解決了如何克服CNN模型只能識別固定尺寸圖像的技術(shù)難題,該方案采用不同卷積層對圖像進(jìn)行不同處理和訓練的手段,利用遵循自然規律的技術(shù)手段,獲得訓練好的CNN模型可以識別任意大小圖像的技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體。
[例3]。
共享單車(chē)的使用方式
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種共享單車(chē)的使用方法,通過(guò)獲取用戶(hù)終端設備的位置信息和一定距離內的共享單車(chē)狀態(tài)信息,使用戶(hù)根據共享單車(chē)的狀態(tài)信息準確找到可以騎行的共享單車(chē), 通過(guò)提示騎行和引導用戶(hù)停車(chē),方便了租賃自行車(chē)的使用和管理,節省了用戶(hù)的時(shí)間,改善了用戶(hù)體驗。
申請的權利要求
共享單車(chē)的使用方法,包括以下步驟:
步驟1:用戶(hù)通過(guò)終端設備向服務(wù)器發(fā)送使用共享單車(chē)的請求;
步驟二,服務(wù)器獲取用戶(hù)的第一位置信息,查找共享單車(chē)在一定距離范圍內對應的第一位置信息,以及這些共享單車(chē)的狀態(tài)信息,并發(fā)送第二位置信息和
共享單車(chē)的狀態(tài)信息發(fā)送給終端設備,其中,第一位置信息和第二位置信息通過(guò)GPS信號獲取;
第三步:根據終端設備上顯示的共享單車(chē)位置信息,用戶(hù)找到可以騎行的目標共享單車(chē);
第四步:用戶(hù)通過(guò)終端設備掃描目標共享單車(chē)車(chē)身上的二維碼,通過(guò)服務(wù)器認證,獲得目標共享單車(chē)使用權限;
第五步:服務(wù)器根據乘車(chē)情況向用戶(hù)推送停車(chē)提示,如果用戶(hù)將車(chē)停在指定區域,則以?xún)?yōu)惠資費計費,否則按標準資費計費;
步驟6,用戶(hù)
根據提示選擇,騎行結束后,用戶(hù)執行共享單車(chē)的鎖定動(dòng)作,共享單車(chē)檢測鎖定狀態(tài)并向服務(wù)器發(fā)送騎行完成的信號。
分析和結論該方案涉及共享單車(chē)的使用方法,解決共享單車(chē)
位置匹配、獲得共享單車(chē)使用權的技術(shù)問(wèn)題,程序實(shí)現對共享單車(chē)的控制和引導。用戶(hù)使用共享單車(chē)
的行為通過(guò)在終端設備和服務(wù)器上執行計算機程序,體現對位置信息的控制、認證等數據的采集
和計算,利用遵循自然規律的技術(shù)手段實(shí)現共享單車(chē)位置的匹配,獲得共享單車(chē)使用權等技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體。
[例4]。
一種區塊鏈節點(diǎn)間通信方法及裝置
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種區塊鏈節點(diǎn)通信方法及裝置,區塊鏈中的業(yè)務(wù)節點(diǎn)可以根據通信請求中攜帶的CA證書(shū)和
在建立通信連接之前預先配置CA信任列表,從而降低業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,提高存儲在區塊鏈中的數據的安全性。
申請的權利要求
1.一種區塊鏈節點(diǎn)通信方法,即區塊鏈區塊鏈網(wǎng)絡(luò )中的節點(diǎn)包括業(yè)務(wù)節點(diǎn),
其中業(yè)務(wù)節點(diǎn)存儲由CA證書(shū)頒發(fā)機構中心發(fā)送的證書(shū),并預配置有CA信任列表,該方法包括:
第一個(gè)區塊鏈節點(diǎn)收到通信請求由第二區塊鏈節點(diǎn)
發(fā)送,其中通信請求攜帶第二區塊鏈節點(diǎn)的第二證書(shū);
確定與第二個(gè)證書(shū)對應的 CA ID;
確定第二個(gè)證書(shū)對應的 CA ID 是否在 CA 信任列表中;
如果是這樣,則與第二個(gè)區塊鏈節點(diǎn)建立通信連接;
否則,不會(huì )與第二個(gè)區塊鏈節點(diǎn)建立通信連接。
分析和結論
問(wèn)題在于
本申請要解決的是如何防止區塊鏈業(yè)務(wù)節點(diǎn)泄露聯(lián)盟鏈網(wǎng)絡(luò )中的用戶(hù)隱私數據,這是提高區塊鏈數據安全性的技術(shù)難題;通過(guò)在通信請求中攜帶CA證書(shū),并預先配置CA信任列表來(lái)確定是否建立連接,業(yè)務(wù)節點(diǎn)僅限于可以建立連接的對象,從而提高區塊鏈中數據的安全性。因此,本申請中的區塊鏈節點(diǎn)間通信方式實(shí)現了業(yè)務(wù)節點(diǎn)之間的安全通信,降低了業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,屬于專(zhuān)利法保護的對象。
?。ㄈ┖兴惴ㄌ卣骰蛘呱虡I(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不解決技術(shù)問(wèn)題,或者不使用技術(shù)手段,或者未取得技術(shù)效果,不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,因此不屬于專(zhuān)利保護客體。
[例5]。
一種消費回扣的方法
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種消費返利的方法,通過(guò)計算機執行設定的返利規則,向消費的用戶(hù)發(fā)放現金券,從而提高用戶(hù)的消費意愿,為商家獲取更多利潤。
申請的權利要求
一種支出回扣方法,其特點(diǎn)是以下步驟:
當用戶(hù)在商家購物時(shí),商家會(huì )根據花費的金額返還一定數量的現金券,具體
商家使用計算機計算用戶(hù)的消費金額,并且將用戶(hù)的消費金額R劃分為M區間,其中M為整數,范圍1到范圍M的值由小到大,
退回代金券的金額F也劃分為M值,M值也從小到大排列;
根據計算機的計算值判斷,當用戶(hù)當前消費金額在范圍1時(shí),返利金額為第一值,當用戶(hù)當前消費金額在范圍2范圍內時(shí),返利金額為:
第二個(gè)值,依此類(lèi)推,將相應范圍的返利金額返回給用戶(hù)。
分析和結論解決方案涉及計算機執行的消費返利
方法,它處理用戶(hù)的消費數據,解決如何促進(jìn)用戶(hù)消費的問(wèn)題,不構成技術(shù)問(wèn)題,所使用的手段是通過(guò)計算機實(shí)現人為設定的返利規則,但計算機的限制只是
按照規定的規則根據用戶(hù)的消費量來(lái)確定返利金額,不受自然規律的約束,所以不使用任何技術(shù)手段,程序的效果只是促進(jìn)用戶(hù)消費,而不是符合自然規律的技術(shù)效果。因此,發(fā)明專(zhuān)利申請不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,不屬于專(zhuān)利保護的客體。
[例6]。
一種基于電力消費特征的經(jīng)濟景氣指數分析方法
應用程序內容概述
發(fā)明專(zhuān)利申請通過(guò)計算各種經(jīng)濟指標和電力消耗指標來(lái)評估待測試地區的經(jīng)濟景氣指數。
申請的權利要求
一種基于區域電力消費特征的經(jīng)濟景氣指數分析方法,其特征在于包括以下步驟:
根據待測地區的經(jīng)濟數據和用電量數據,選擇經(jīng)濟初步指標
待測區域的景氣指數,其中初步指標包括經(jīng)濟指標和用電量指標;
通過(guò)聚類(lèi)分析方法和
時(shí)差相關(guān)分析方法,確定待檢測區域的經(jīng)濟景氣指數體系,包括領(lǐng)先指標、一致指標和滯后指標;
根據待測地區的經(jīng)濟景氣指數體系
,采用綜合指數計算方法得到待測地區的經(jīng)濟景氣指數。
分析和結論
解決方案是一種經(jīng)濟景氣指數分析計算方法,其處理對象是各種經(jīng)濟指標、電力指標、
問(wèn)題解決的是判斷經(jīng)濟趨勢,不構成技術(shù)問(wèn)題,所使用的手段都是根據經(jīng)濟數據和用電量數據來(lái)分析經(jīng)濟形勢,只有按照經(jīng)濟規律進(jìn)行經(jīng)濟管理手段,不受自然規律的約束,所以使用技術(shù)手段,方案最終可以得到經(jīng)濟景氣指數來(lái)評價(jià)經(jīng)濟, 它不是符合自然規律的技術(shù)效果,因此解決方案不屬于專(zhuān)利法第2條第2款規定的技術(shù)解決方案,不屬于專(zhuān)利保護的客體。
?。?) 在進(jìn)行創(chuàng )造性審查時(shí),應考慮算法特征或商業(yè)規則和方法特征對解決的貢獻,這些特征在功能上相互支持并與技術(shù)特征相互作用。
[例7]。
一種基于多傳感器信息的人形機器人墜落狀態(tài)檢測方法
應用程序內容概述
現有的人形機器人行走時(shí)墜落狀態(tài)的判斷主要使用姿態(tài)信息或ZMP點(diǎn)位置信息,但這種判斷并不全面。發(fā)明專(zhuān)利申請提出了一種基于多個(gè)傳感器的人形機器人墜落狀態(tài)檢測方法,該方法實(shí)時(shí)集成了機器人步態(tài)階段信息、姿態(tài)信息和ZMP點(diǎn)位置信息,并利用模糊決策系統確定機器人當前的穩定性和可控性,從而為機器人的下一步動(dòng)作提供參考。
申請的權利要求
一種基于多傳感器信息的人形機器人跌落狀態(tài)檢測方法,其特點(diǎn)是以下步驟:
?。?)融合姿態(tài)傳感器信息、零扭矩點(diǎn)ZMP傳感器信息和機器人行走階段信息,建立分層傳感器信息融合模型,實(shí)現人形機器人的穩定性確定;
?。?)前后模糊決策系統及左右
分別采用模糊決策系統確定機器人在前后方向和左右方向的穩定性,具體步驟如下:
?。?)根據機器人支撐腳與地面的接觸和離線(xiàn)步態(tài)規劃確定機器人行走階段;
?。?)采用模糊推理算法對ZMP點(diǎn)的位置信息進(jìn)行模糊處理;
?。?)采用模糊推理算法對機器人的俯仰角或滾動(dòng)角進(jìn)行模糊化;
?。?)確定輸出隸屬函數;(5)按步驟(
1)~步驟(4)確定模糊推理規則;
?。?)去模糊。
分析和結論
對比文件1公開(kāi)了基于人形機器人傳感器信息的步態(tài)規劃和反饋控制,并根據
相關(guān)融合信息,包括根據多個(gè)傳感器信息對人形機器人的穩定狀態(tài)評估,即對比文件1公開(kāi)了本發(fā)明專(zhuān)利申請解決方案中步驟(1)中的步驟(1),與比較文件1中采用步驟(2)特定算法的模糊決策方法進(jìn)行了區分。
基于應用文檔,該方案有效提高了機器人的穩態(tài)及其可能下落方向的可靠性和準確性。以姿態(tài)信息、ZMP點(diǎn)位置信息和行走階段信息為輸入參數,通過(guò)模糊算法輸出確定人形機器人穩定狀態(tài)的信息,為進(jìn)一步準確的姿態(tài)調整指令提供了依據。因此,上述算法特征和技術(shù)特征在功能上相互支持并具有交互關(guān)系,并且相對于比較文件1,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何判斷機器人的穩定狀態(tài)并準確預測其可能的下降方向。上述模糊決策的實(shí)現算法及其對機器人穩態(tài)應用的判斷在其他比較文獻中未公開(kāi),也不是本領(lǐng)域的常識,現有技術(shù)整體上不存在使本領(lǐng)域技術(shù)人員改進(jìn)比較文件1以獲得要求保護的發(fā)明的靈感, 并且要求保護的發(fā)明相對于最接近的現有技術(shù)是非顯而易見(jiàn)的和創(chuàng )造性的。
[例8]。
基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統
應用程序內容概述現有的多移動(dòng)機器人運動(dòng)規劃
控制結構通常采用集中規劃方法,將多機器人系統視為具有多個(gè)自由度的復雜機器人,系統中的規劃器統一完成所有機器人的運動(dòng)規劃,存在計算時(shí)間長(cháng)、實(shí)用性差的缺點(diǎn)。發(fā)明專(zhuān)利申請提供了一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統。機器人的每條路徑都由一條染色體表示,以最短距離、平滑度和安全距離作為設計路徑適應度函數的三個(gè)目標,利用Messy遺傳算法優(yōu)化每個(gè)機器人的最優(yōu)路徑。
申請的權利要求
基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統,其特點(diǎn)是:(
1)機器人的路徑由染色體表示,染色體以節點(diǎn)鏈表的形式表示,即[(x,y),time],(x,y,time
∈R),(x,y)表示機器人的位置坐標,時(shí)間表示從前一個(gè)節點(diǎn)移動(dòng)該節點(diǎn)所需的時(shí)間消耗,起始節點(diǎn)的時(shí)間等于0,除初始節點(diǎn)的初始位置和結束節點(diǎn)的目標位置外,每個(gè)機器人個(gè)體的染色體是固定的。中間節點(diǎn)和節點(diǎn)的數量都是可變的;(
2)每個(gè)機器人機器人(i)的路徑路徑(j)的適應度函數表示為φ(pi,j):|| pi,j|| =Distance(pi,j)+ws×smooth(pi,j)
+wt×Time(pi,j)
這些 pi,j|| ||是距離、平滑度和時(shí)間消耗的線(xiàn)性組合,ws 是平滑度加權因子,wt 是時(shí)間加權因子;距離(pi,j)表示路徑長(cháng)度,smooth(pi,j)表示路徑的平滑度,Time(pi,j)表示路徑pi,j的時(shí)間消耗;每個(gè)機器人使用所描述的適應度函數,并通過(guò)Messy遺傳算法優(yōu)化最佳路徑。
分析和結論
對比文件1公開(kāi)了一種基于協(xié)同進(jìn)化的多機器人路徑規劃方法,其中使用自適應混沌算法獲得最優(yōu)路徑。發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于通過(guò)Messy遺傳算法實(shí)現多機器人路徑規劃。
在該解決方案中,利用適應度函數約束Messy遺傳算法,通過(guò)遺傳算法優(yōu)化后得到機器人的前向路徑,算法特征和
該解決方案的技術(shù)特點(diǎn)相互支持,在功能上相互交互,從而實(shí)現機器人前進(jìn)路徑的優(yōu)化。與對比文獻1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何使機器人基于特定算法在最優(yōu)路徑上前進(jìn)。對比文件2揭示了包括混沌算法在內的多種遺傳算法可用于路徑優(yōu)化,使用Messy遺傳算法可以解決其他算法的缺點(diǎn),獲得更合理的優(yōu)化結果?;趯Ρ任募?給出的啟示,本領(lǐng)域技術(shù)人員有動(dòng)機將比較文件1和比較文件2結合起來(lái),得到發(fā)明專(zhuān)利申請的技術(shù)方案。因此,要求保護的發(fā)明相對于比較文件1和比較2的組合是顯而易見(jiàn)的,并且不具有創(chuàng )造性。
[例9]。
一種物流配送方法
應用程序內容概述
在貨物配送過(guò)程中,
如何有效提高商品配送效率,降低配送成本,是發(fā)明專(zhuān)利申請所要解決的問(wèn)題。物流人員到達配送地點(diǎn)后,可以通知特定配送區域內的多個(gè)訂貨用戶(hù)以服務(wù)器推送消息的形式同時(shí)提貨到訂貨用戶(hù)終端,從而提高配送效率,降低配送成本。
申請的權利要求
一種通過(guò)分批通知用戶(hù)取貨來(lái)提高物流配送效率的物流配送方法,該方法包括:
當調度員
需要通知用戶(hù)取貨的,調度員通過(guò)手持物流終端向服務(wù)器發(fā)送貨物已到達的通知;
服務(wù)器分批通知調度員交貨范圍內的所有訂單;
收到通知的訂購用戶(hù)根據通知信息完成取件;
其中,用于批量通知的服務(wù)器的具體實(shí)現方式是,服務(wù)器根據配送操作員ID確定配送距離范圍內的所有目標訂單信息,并以物流終端的當前位置、物流終端的當前位置和到達時(shí)攜帶的相應配送范圍為中心。
由物流終端發(fā)送通知,然后將通知信息推送到訂單用戶(hù)終端中所有目標訂單信息中對應的訂單用戶(hù)賬戶(hù)。
分析和結論
比對文件1公開(kāi)了一種物流配送方法,其中物流終端掃描配送單上的條形碼,并將掃描到的信息發(fā)送到服務(wù)器,通知服務(wù)器貨物已經(jīng)到達;服務(wù)器獲取掃描信息中的排序用戶(hù)信息,并向排序用戶(hù)發(fā)送通知;收到通知的訂購用戶(hù)根據通知信息完成取件。
兩者之間的區別
本發(fā)明專(zhuān)利申請與對比文件1的解決方案是,批量通知用戶(hù)訂單的到來(lái),為了實(shí)現批量通知,方案中服務(wù)器、物流終端和用戶(hù)終端之間的物理架構和數據通信都進(jìn)行了相應的調整,因此取件通知規則和具體的批量通知實(shí)現方法在功能上相互支持,具有交互關(guān)系。與比較文檔1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是如何提高訂單到達通知的效率,從而提高貨物配送的效率。從用戶(hù)的角度來(lái)看,用戶(hù)可以更快地獲得有關(guān)訂單到達的信息,這也改善了用戶(hù)體驗。由于現有技術(shù)不具備對上述比較文獻1的技術(shù)啟發(fā)進(jìn)行改進(jìn),以獲得用于發(fā)明專(zhuān)利申請的解決方案,該解決方案具有創(chuàng )造性。
[例10]。
動(dòng)態(tài)視角演變的視覺(jué)方法
應用程序內容概述近年來(lái),人們
越來(lái)越多地通過(guò)社交平臺表達自己的觀(guān)點(diǎn)和想法,人們在社交平臺上發(fā)布的情感內容反映了人們觀(guān)點(diǎn)的演變,可以看到事件的發(fā)展、變化和趨勢。該發(fā)明專(zhuān)利申請通過(guò)自動(dòng)采集
人們在社交平臺上發(fā)布的信息并分析其中的情緒,通過(guò)計算機繪制情緒可視化地圖,幫助人們更好地了解不同時(shí)期的情緒強度和隨時(shí)間演變的趨勢。
申請的權利要求
一種可視化動(dòng)態(tài)視圖演變的方法,該方法包括:
步驟1)情感隸屬程度和情感分類(lèi)信息
在采集
的信息采集
中由計算設備確定,信息的情感隸屬程度表示信息屬于某種情感分類(lèi)的概率;
步驟2)情緒分類(lèi)為正面、中性或負面,具體分類(lèi)方法是:如果點(diǎn)贊數p除以踩在值r上的點(diǎn)數大于閾值a,則認為情緒分類(lèi)為正,如果值r小于閾值b,則情感分類(lèi)為
如果值 b ≤r ≤a,則情緒分類(lèi)為中性,其中 a >b;
步驟3)基于信息的情緒分類(lèi),
自動(dòng)建立信息集合的情感可視化圖形的幾何布局,橫軸表示信息生成時(shí)間,縱軸表示屬于每個(gè)情感分類(lèi)的信息數量;
步驟4)計算設備根據信息的情感隸屬關(guān)系對已建立的幾何布局進(jìn)行著(zhù)色,并根據信息顏色的梯度順序對各情感分類(lèi)層上的信息進(jìn)行著(zhù)色。
分析和結論
比較文件1公開(kāi)了一種基于情感的可視化分析方法,其中時(shí)間表示為橫軸,不同時(shí)間的每個(gè)色帶的寬度代表當時(shí)的情感度量,不同的色帶代表不同的情緒。
這
本發(fā)明專(zhuān)利申請的解決方案與比較文件1的不同之處在于步驟2中設置的情緒的具體分類(lèi)規則)。從應用內容可以看出,即使情感分類(lèi)規則不同,對應數據著(zhù)色的技術(shù)手段也可以不變,即上述情感分類(lèi)規則和具體的可視化方法在功能上并不相互支持和交互。與對比文獻1相比,發(fā)明專(zhuān)利申請僅提出了情緒分類(lèi)的新規則,并未實(shí)際解決任何技術(shù)問(wèn)題,對現有技術(shù)沒(méi)有做出技術(shù)貢獻。因此,要求保護的發(fā)明不具有相對于比較文件1的創(chuàng )造性步驟。
6.3 描述和權利要求的準備
6.3.1 說(shuō)明書(shū)的準備
含有算法特征或者業(yè)務(wù)規則、方法特征的發(fā)明專(zhuān)利申請說(shuō)明書(shū),應當清楚、完整地說(shuō)明發(fā)明為解決其技術(shù)問(wèn)題而采用的解決方案。在技術(shù)特征的基礎上,解決方案還可以包括算法特征或業(yè)務(wù)規則和方法特征,它們在功能上相互支持并與技術(shù)特征交互。
規范應明確技術(shù)特性與功能支持和交互的算法特征或業(yè)務(wù)規則與方法特性如何相互作用并產(chǎn)生有益效果。例如,在收錄
算法特征時(shí),抽象算法應與特定的技術(shù)領(lǐng)域相結合,至少一個(gè)參數的定義應與技術(shù)領(lǐng)域的特定數據相關(guān)聯(lián);當包括業(yè)務(wù)規則和方法的特點(diǎn)時(shí),應詳細描述和解釋解決技術(shù)問(wèn)題的整個(gè)過(guò)程,以便技術(shù)領(lǐng)域的技術(shù)人員能夠按照描述中描述的內容實(shí)現本發(fā)明的解決。
說(shuō)明書(shū)應清楚客觀(guān)地陳述本發(fā)明與現有技術(shù)相比的有益效果,如質(zhì)量、準確性或效率的提高,系統內部性能的改進(jìn)等。如果從用戶(hù)的角度,客觀(guān)上改善用戶(hù)體驗,也可以在說(shuō)明書(shū)中解釋?zhuān)谶@種情況下,還應該說(shuō)明構成本發(fā)明的技術(shù)特征,以及在其功能中相互支持并相互作用的算法特征或業(yè)務(wù)規則和方法特征如何帶來(lái)或產(chǎn)生用戶(hù)體驗的改善。
6.3.2 索賠的準備
這
權利要求書(shū)中含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,應當以說(shuō)明書(shū)為依據,簡(jiǎn)明扼要地界定所要求保護的專(zhuān)利保護范圍。權利要求應當記錄功能上相互支持并與技術(shù)特征相互作用的技術(shù)特征和算法特征或者業(yè)務(wù)規則和方法特征。
附件2:
關(guān)于《專(zhuān)利審查指南》第二部分第九章
修訂草案說(shuō)明(征求意見(jiàn)稿)
?。?。
一、修改后臺和主進(jìn)程
隨著(zhù)互聯(lián)網(wǎng)技術(shù)和信息技術(shù)的不斷發(fā)展,涉及新技術(shù)、新領(lǐng)域、新業(yè)態(tài)的發(fā)明創(chuàng )造不斷涌現。因此,為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體進(jìn)一步明確涉及人工智能等新技術(shù)、新領(lǐng)域的專(zhuān)利申請審查規則的需要,支持創(chuàng )新驅動(dòng)發(fā)展宗旨, 國家知識產(chǎn)權局已啟動(dòng)《專(zhuān)利審查指南》的相關(guān)修訂工作。
涉及新技術(shù)的發(fā)明專(zhuān)利申請,例如
人工智能和新領(lǐng)域、新業(yè)態(tài)與其他發(fā)明專(zhuān)利申請明顯不同,其特點(diǎn)是,在發(fā)明解決方案中,除技術(shù)外,一般還收錄
算法或商業(yè)方法等智力活動(dòng)規則和方法的特征。修訂后的《指南》明確了此類(lèi)申請的審查規則,并通過(guò)典型案例進(jìn)行了解釋。一方面,將審查實(shí)踐中探索的有益做法提升為《專(zhuān)利審查指南》,有助于統一審查標準,同時(shí)為如何更好地撰寫(xiě)此類(lèi)申請、促進(jìn)申請質(zhì)量的提高提供指導。另一方面,明確規定此類(lèi)應用的特點(diǎn)應與算法或商業(yè)方法等智力活動(dòng)規則的技術(shù)特征和特征相結合,正確把握發(fā)明的技術(shù)貢獻,從而提高審查的質(zhì)量和效率,促進(jìn)新興技術(shù)和新業(yè)態(tài)、新模式的進(jìn)一步發(fā)展和成長(cháng)。應當指出的是,修正案的指導思想是在現行《專(zhuān)利法》和《實(shí)施細則》的框架內及時(shí)響應實(shí)際需求和及時(shí)解決實(shí)際問(wèn)題,同時(shí)盡可能與現行指南第9章的框架結構保持一致,以便于審查員和公眾的理解。
在充分調查社會(huì )需求和一線(xiàn)審查員具體工作實(shí)踐的基礎上,國家知識產(chǎn)權局制定了《專(zhuān)利審查指南》第二部分第九章修正草案(
初稿)于2019年9月中旬,征求局內有關(guān)部門(mén)意見(jiàn),并專(zhuān)門(mén)召開(kāi)創(chuàng )新主體和代理人咨詢(xún)會(huì ),聽(tīng)取各方意見(jiàn),經(jīng)完善后形成《專(zhuān)利審查指南第二編第九章修正草案(征求意見(jiàn)稿)》及其說(shuō)明。
2. 主要修訂
這
《修訂草案》在第二部分第九章中專(zhuān)門(mén)增加了第六節,根據具體情況,明確了此類(lèi)申請的授權、新穎性和創(chuàng )造性、權利要求和說(shuō)明書(shū)的起草。主要變化如下:
?。?)強調專(zhuān)利審查中的技術(shù)特征和算法特征、商業(yè)規則和方法特征不應簡(jiǎn)單分開(kāi)各復審
條款的一般原則在第6.1節“復審標準”一節中確立:“在審查中,不應將技術(shù)特征與算法或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記錄的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和產(chǎn)生的技術(shù)效果。"
?。?) 明確根據專(zhuān)利法第二十五條的規定,不排除技術(shù)特征的納入如果權利要求
除算法特征或者商業(yè)規則和方法外還收錄
技術(shù)特征,則權利要求整體上不是智力活動(dòng)的規則和方法,不應根據專(zhuān)利法第二十五條第一款第2項的規定排除獲得專(zhuān)利權的可能性。
?。?) 明確專(zhuān)利法第二條的審查標準
對于判決
對于是否為技術(shù)方案,審查標準在《指南》總章技術(shù)問(wèn)題、技術(shù)手段和技術(shù)效果“三要素”的判斷方法下進(jìn)一步細化。只要該算法能結合特定的技術(shù)應用領(lǐng)域解決一定的技術(shù)問(wèn)題,就可以通過(guò)專(zhuān)利第2條的審查。
?。?)考慮算法特征與業(yè)務(wù)規則和方法特征在技術(shù)特征方面相互作用、功能上相互支持對創(chuàng )造力的技術(shù)貢獻審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法
的發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并與技術(shù)特征相互作用的算法特征或者商業(yè)規則和方法作為一個(gè)整體來(lái)考慮。修正案草案進(jìn)一步解釋了其含義。
?。?)從正面和負面兩個(gè)方面增加了10個(gè)關(guān)于授權主題和創(chuàng )造性的審查案例
實(shí)施例1為抽象模型構建方法,不涉及與具體應用領(lǐng)域的組合,不收錄
技術(shù)特征,屬于專(zhuān)利法第25.1.2條規定的智力活動(dòng)規則和方法。示例 2、3 和 4 屬于人工智能、商業(yè)模式和區塊鏈領(lǐng)域的授權對象,而示例 5 和 6 是反面示例。例7和例9是創(chuàng )造性是由于將技術(shù)特征的功能支持和相互作用作為一個(gè)整體考慮而引起的情況,以及由于相應的內容已在比較文件中公開(kāi)而使技術(shù)特征不具有創(chuàng )造性的情況。
?。┘毣f(shuō)明書(shū)和權利要求書(shū)的起草要求
進(jìn)一步細化了編寫(xiě)手冊的要求,例如提及算法如何與特定技術(shù)領(lǐng)域相結合,并指定用戶(hù)體驗效果。權利要求書(shū)的起草強調,權利要求應當記錄技術(shù)特征與功能上相互支持、與技術(shù)特征相互作用的算法或者業(yè)務(wù)規則和方法。
小技巧:京東關(guān)鍵詞鏈接在哪復制?關(guān)鍵詞優(yōu)化技巧
大家應該都知道,京東的每一個(gè)商品都有一個(gè)鏈接,就是為了方便消費者找到我們的商品。作為消費者,如果看到滿(mǎn)意的商品,可以復制鏈接分享出去。
1. 關(guān)鍵詞 鏈接復制到哪里了?
1、打開(kāi)手機【京東】APP,在商城中找到您想要的商品,點(diǎn)擊商品頁(yè)面;
2. 產(chǎn)品頁(yè)面右上角有分享圖標,點(diǎn)擊分享圖標。點(diǎn)擊后,在屏幕下方彈出的選項中點(diǎn)擊【復制鏈接】。復制完成后,屏幕上會(huì )短暫提示【復制成功】!
2. 關(guān)鍵詞 優(yōu)化技術(shù)
1、對于京東關(guān)鍵詞的選擇,作為商家,這個(gè)時(shí)候需要多關(guān)注與商品相關(guān)度高的流量詞和熱詞,一網(wǎng)打盡。選詞一般有三種方法,一是通過(guò)京東搜索引擎選擇合適的關(guān)鍵詞,二是從京東商智的行業(yè)關(guān)鍵詞中選擇,最后一種是選擇對 關(guān)鍵詞 通過(guò) Express 的產(chǎn)品推送詞。所以在關(guān)鍵詞的區域,采集
的越多,組合的可能性就越多,所以關(guān)鍵詞的采集
千萬(wàn)不能馬虎。
2.完成關(guān)鍵詞的采集后,下一步就是對采集到的關(guān)鍵詞進(jìn)行篩選。篩選所有采集
的關(guān)鍵詞,然后選擇與您的產(chǎn)品最相關(guān)、流量大、引流效果好的關(guān)鍵詞。
3.標題越多越好。至少在京東,標題越短,得分越高。所以在組合關(guān)鍵詞的時(shí)候,一定要多注意標題的長(cháng)度。此外,還需要注意關(guān)鍵詞之間的距離,以及關(guān)鍵詞的順序,這些都會(huì )影響題目的得分。一般來(lái)說(shuō),關(guān)鍵詞的組合多為品牌詞+熱搜詞/流量詞+產(chǎn)品名稱(chēng)+產(chǎn)品賣(mài)點(diǎn)+規格+關(guān)鍵詞。
在京東,一件商品能獲得多少流量,與商家的推廣方式有關(guān)。同時(shí),如果為產(chǎn)品設置鏈接,方便消費者分享我們的產(chǎn)品,也有助于增加產(chǎn)品流量。 查看全部
解決方案:審查指南征求意見(jiàn) 針對含算法特征或商業(yè)規則和方法特征的發(fā)明專(zhuān)利申請審查
關(guān)于公開(kāi)征求對專(zhuān)利審查指南第二部分第九章修正案草案(征求意見(jiàn)稿)征求意見(jiàn)的通知
?。?。
為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體需求,進(jìn)一步明確涉及人工智能、區塊鏈、業(yè)務(wù)規則和方法的新領(lǐng)域、新業(yè)態(tài)的專(zhuān)利審查規則, 國家知識產(chǎn)權局起草并形成了《專(zhuān)利審查指南第二編第九章修正案草案(征求意見(jiàn)稿)》(以下簡(jiǎn)稱(chēng)《征求意見(jiàn)稿》)。為征求社會(huì )各界意見(jiàn),現將草案及其起草說(shuō)明公布。有關(guān)單位和社會(huì )各界人士可在2019年12月11日前選擇下列方式之一,對《征求意見(jiàn)稿》的修改完善提出具體意見(jiàn):
1. 電子郵件: 2. 傳真: 3. 信件: 考試
北京市海淀區西土城路6號國家知識產(chǎn)權局條款法律司政策處 郵編100088(請在信封左下角注明“審查指南”) 附件: 1. 預告“專(zhuān)利審查指南第九章修正案第二部分(征求意見(jiàn)稿) 2.關(guān)于這些的注意事項
草案
對《專(zhuān)利審查指南》第二部分第九章的修正
?。ㄕ髑笠庖?jiàn)稿)。
6. 關(guān)于對含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請進(jìn)行審查的規定
專(zhuān)利申請
涉及人工智能、互聯(lián)網(wǎng)+、大數據、區塊鏈等的發(fā)明,一般收錄
算法或商業(yè)規則方法等智力活動(dòng)的規則和方法特征,本節旨在根據《專(zhuān)利法》及其實(shí)施細則對此類(lèi)申請進(jìn)行審查的特殊性作出規定。
6.1 審查基準
審查應針對要求保護的解決方案進(jìn)行,即受權利要求限制的解決方案。在審查中,不應簡(jiǎn)單地將技術(shù)特征與算法特征或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記載的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和取得的技術(shù)效果。6.1.1
根據專(zhuān)利法第25.1.2條進(jìn)行審查
權利要求涉及抽象算法或者簡(jiǎn)單的商業(yè)規則和方法,且不收錄
任何技術(shù)特征的,屬于專(zhuān)利法第二十五條第一款第2款規定的智力活動(dòng)規則和方法,不得申請專(zhuān)利。例如,基于抽象算法建立數學(xué)模型且不收錄
任何技術(shù)特征的方法,屬于專(zhuān)利法第25.1.2條規定的不應授予專(zhuān)利權的情形。再如基于用戶(hù)消費額度的返利方式,該方法所收錄
的特征均為與返利規則相關(guān)的商業(yè)規則和方法特征,不收錄
任何技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項第2項規定的不應授予專(zhuān)利權的情形。
如果索賠除
算法特征或者商業(yè)規則和方法外,還含有技術(shù)特征,權利要求整體上不是智力活動(dòng)的規則或者方法的,依照專(zhuān)利法第二十五條第一款第2項的規定,不排除取得專(zhuān)利權的可能性。
6.1.2 根據專(zhuān)利法第2.2條進(jìn)行審查如果權利要求的整體不屬于專(zhuān)利法第25條第1款第2項第
2項排除專(zhuān)利權取得的情形,則有必要審查其是否屬于專(zhuān)利法第2條第2款所指的技術(shù)方案。
在檢查收錄
算法特征或業(yè)務(wù)規則和方法特征的權利要求是否為技術(shù)解決方案時(shí),有必要將權利要求中描述的所有特征作為一個(gè)整體來(lái)考慮。如果權利要求記載了利用自然規律的技術(shù)手段用于要解決的技術(shù)問(wèn)題,并由此獲得符合自然規律的技術(shù)效果的,則權利要求的解決方案屬于專(zhuān)利法第二條第二款所述的技術(shù)方案。例如,如果權利要求中算法涉及的步驟與要解決的技術(shù)問(wèn)題密切相關(guān),例如算法處理的數據是技術(shù)領(lǐng)域具有確切技術(shù)意義的數據,并且算法的執行可以直接反映利用自然規律解決技術(shù)問(wèn)題的過(guò)程, 并且取得了技術(shù)效果,那么通常權利要求的解決方案屬于專(zhuān)利法第2條第2款所述的技術(shù)方案。
6.1.3 新穎性和創(chuàng )造性的審查在審查含有算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請的新穎性時(shí),應當考慮權利要求中記錄的所有特征,包括技術(shù)特征和算法特征或者商業(yè)規則和方法特征。審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并在技術(shù)特征方面相互作用的算法特征或者商業(yè)規則和方法特征作為一個(gè)整體來(lái)考慮?!肮δ苌舷嗷ブС?、相互作用”是指算法特征或業(yè)務(wù)規則、方法特征與技術(shù)特征緊密結合,共同構成解決技術(shù)問(wèn)題的技術(shù)手段,并能獲得相應的技術(shù)效果。
例如,如果權利要求中的算法應用于特定的技術(shù)領(lǐng)域,可以解決特定的技術(shù)問(wèn)題,那么可以認為算法特征和技術(shù)特征是
功能上相互支持,具有交互關(guān)系,算法特征成為所采取技術(shù)手段的組成部分,在進(jìn)行創(chuàng )造性審查時(shí)應考慮算法特征對方案的貢獻。
再如,如果權利要求中商業(yè)規則和方法特征的實(shí)施需要對技術(shù)手段進(jìn)行調整或者改進(jìn),可以認為業(yè)務(wù)規則和方法特征和技術(shù)特征在
功能上是相互支持和相互作用的,在進(jìn)行創(chuàng )造性審查時(shí)應考慮所述業(yè)務(wù)規則和方法特征對程序的貢獻。
6.2 復習示例
下面,根據上述審查標準給出收錄
算法特征或業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請的審查示例。
?。ㄒ唬┖袑?zhuān)利法第二十五條第一款第2項范圍內的算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不屬于專(zhuān)利保護標的。
[例1]。
一種構建數學(xué)模型的方法
應用程序內容概述
發(fā)明專(zhuān)利申請的解決方案是一種構建數學(xué)模型的方法,該方法通過(guò)增加訓練樣本的數量來(lái)提高模型的準確性。建模方法還使用與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù)的訓練樣本作為第一分類(lèi)任務(wù)數學(xué)模型的訓練樣本,從而增加訓練樣本的數量,并利用訓練樣本的特征值,提取特征值、標簽值等來(lái)訓練相關(guān)的數學(xué)模型, 最后得到第一個(gè)分類(lèi)任務(wù)的數學(xué)模型,由于訓練樣本數量少,過(guò)度擬合,建模精度差。
申請的權利要求
一種構建數學(xué)模型的方法,其特征在于它包括以下步驟:
根據第一個(gè)分類(lèi)任務(wù)的訓練樣本中的特征值和特征
在訓練樣本中至少一秒的分類(lèi)任務(wù)中,對初始特征提取模型進(jìn)行訓練,得到目標特征提取模型。 其中,所述第二分類(lèi)任務(wù)為與所述第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù);
根據目標特征提取模型,特征值
分別處理第一分類(lèi)任務(wù)的每個(gè)訓練樣本,得到每個(gè)訓練樣本對應的提取特征值;
將提取的每個(gè)訓練樣本對應的特征值和標簽值組成,提取訓練樣本,訓練初始分類(lèi)模型得到目標分類(lèi)模型;
目標分類(lèi)模型
目標特征提取模型由第一分類(lèi)任務(wù)的數學(xué)模型組成。
分析和結論
該解決方案不涉及任何特定的應用領(lǐng)域,其中訓練樣本的特征值、提取的特征值、標簽值、目標分類(lèi)模型和目標特征提取模型是抽象的一般數據,利用訓練樣本的相關(guān)數據訓練數學(xué)模型的處理過(guò)程是一系列抽象的數學(xué)方法步驟, 最終結果也是一個(gè)抽象的通用分類(lèi)數學(xué)模型。該方案是一種抽象模型建立方法,其處理對象、過(guò)程和結果不涉及與具體應用領(lǐng)域的結合,屬于抽象數學(xué)方法的優(yōu)化,整個(gè)方案不收錄
任何技術(shù)特征,本發(fā)明專(zhuān)利申請的解決屬于第25條規定的智力活動(dòng)規則和方法, 專(zhuān)利法第1條第(2)項,不屬于專(zhuān)利保護的客體。
?。ǘ┖兴惴ㄌ卣骰蛘呱虡I(yè)規則、方法特征的發(fā)明專(zhuān)利申請,利用技術(shù)手段解決技術(shù)問(wèn)題,取得技術(shù)效果的,屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,屬于專(zhuān)利保護客體。
[例2]。
一種卷積神經(jīng)網(wǎng)絡(luò )模型的訓練方法
應用程序內容概述
本發(fā)明專(zhuān)利申請在各級卷積層上對訓練圖像進(jìn)行卷積操作和最大池化操作,并對最大池化操作后獲得的特征圖像進(jìn)一步執行水平池化操作,使得經(jīng)過(guò)訓練的CNN模型在識別圖像類(lèi)別時(shí)可以識別任何大小的圖像。
申請的權利要求
一種用于卷積神經(jīng)網(wǎng)絡(luò )CNN模型的訓練方法,其中該方法包括:
獲取待訓練的CNN模型,初始模型參數包括各卷積層的初始卷積核、各層級卷積層的初始偏置矩陣、全連接層的初始
權重矩陣和全連層的初始偏置向量;
獲取多個(gè)訓練圖像;在各級卷積層
上,各級卷積層上的初始卷積核和初始偏置矩陣分別對每個(gè)訓練圖像
進(jìn)行卷積運算和最大池化運算,得到每個(gè)訓練圖像在卷積層各層次上的第一個(gè)特征圖像;
每個(gè)訓練圖像的第一個(gè)特征圖像水平
池化至少一個(gè)卷積層,獲得每個(gè)卷積層上每個(gè)訓練圖像的第二特征圖像。
確定功能
根據每個(gè)訓練圖像在卷積層上各水平的第二特征圖像的向量;
根據初始權重矩陣和初始偏差向量對每個(gè)特征向量進(jìn)行處理,得到每個(gè)訓練圖像的類(lèi)概率向量;根據每個(gè)訓練圖像的
類(lèi)概率向量和每個(gè)訓練圖像的初始類(lèi)別,計算類(lèi)誤差;
基于分類(lèi)誤差,調整待訓練CNN模型的模型參數;
基于調整后的模型參數和多個(gè)訓練圖像,繼續模型參數調整過(guò)程,直到迭代次數達到預設次數;
模型參數
當迭代次數達到預設次數時(shí)獲得的作為訓練好的CNN模型的模型參數。
分析和結論
該解決方案是卷積神經(jīng)網(wǎng)絡(luò )CNN模型的一種訓練方法,闡明了模型訓練方法每一步處理的數據都是圖像數據以及每一步如何處理圖像數據,說(shuō)明神經(jīng)網(wǎng)絡(luò )訓練算法與圖像信息處理密切相關(guān)。該方案解決了如何克服CNN模型只能識別固定尺寸圖像的技術(shù)難題,該方案采用不同卷積層對圖像進(jìn)行不同處理和訓練的手段,利用遵循自然規律的技術(shù)手段,獲得訓練好的CNN模型可以識別任意大小圖像的技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體。
[例3]。
共享單車(chē)的使用方式
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種共享單車(chē)的使用方法,通過(guò)獲取用戶(hù)終端設備的位置信息和一定距離內的共享單車(chē)狀態(tài)信息,使用戶(hù)根據共享單車(chē)的狀態(tài)信息準確找到可以騎行的共享單車(chē), 通過(guò)提示騎行和引導用戶(hù)停車(chē),方便了租賃自行車(chē)的使用和管理,節省了用戶(hù)的時(shí)間,改善了用戶(hù)體驗。
申請的權利要求
共享單車(chē)的使用方法,包括以下步驟:
步驟1:用戶(hù)通過(guò)終端設備向服務(wù)器發(fā)送使用共享單車(chē)的請求;
步驟二,服務(wù)器獲取用戶(hù)的第一位置信息,查找共享單車(chē)在一定距離范圍內對應的第一位置信息,以及這些共享單車(chē)的狀態(tài)信息,并發(fā)送第二位置信息和
共享單車(chē)的狀態(tài)信息發(fā)送給終端設備,其中,第一位置信息和第二位置信息通過(guò)GPS信號獲取;

第三步:根據終端設備上顯示的共享單車(chē)位置信息,用戶(hù)找到可以騎行的目標共享單車(chē);
第四步:用戶(hù)通過(guò)終端設備掃描目標共享單車(chē)車(chē)身上的二維碼,通過(guò)服務(wù)器認證,獲得目標共享單車(chē)使用權限;
第五步:服務(wù)器根據乘車(chē)情況向用戶(hù)推送停車(chē)提示,如果用戶(hù)將車(chē)停在指定區域,則以?xún)?yōu)惠資費計費,否則按標準資費計費;
步驟6,用戶(hù)
根據提示選擇,騎行結束后,用戶(hù)執行共享單車(chē)的鎖定動(dòng)作,共享單車(chē)檢測鎖定狀態(tài)并向服務(wù)器發(fā)送騎行完成的信號。
分析和結論該方案涉及共享單車(chē)的使用方法,解決共享單車(chē)
位置匹配、獲得共享單車(chē)使用權的技術(shù)問(wèn)題,程序實(shí)現對共享單車(chē)的控制和引導。用戶(hù)使用共享單車(chē)
的行為通過(guò)在終端設備和服務(wù)器上執行計算機程序,體現對位置信息的控制、認證等數據的采集
和計算,利用遵循自然規律的技術(shù)手段實(shí)現共享單車(chē)位置的匹配,獲得共享單車(chē)使用權等技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體。
[例4]。
一種區塊鏈節點(diǎn)間通信方法及裝置
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種區塊鏈節點(diǎn)通信方法及裝置,區塊鏈中的業(yè)務(wù)節點(diǎn)可以根據通信請求中攜帶的CA證書(shū)和
在建立通信連接之前預先配置CA信任列表,從而降低業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,提高存儲在區塊鏈中的數據的安全性。
申請的權利要求
1.一種區塊鏈節點(diǎn)通信方法,即區塊鏈區塊鏈網(wǎng)絡(luò )中的節點(diǎn)包括業(yè)務(wù)節點(diǎn),
其中業(yè)務(wù)節點(diǎn)存儲由CA證書(shū)頒發(fā)機構中心發(fā)送的證書(shū),并預配置有CA信任列表,該方法包括:
第一個(gè)區塊鏈節點(diǎn)收到通信請求由第二區塊鏈節點(diǎn)
發(fā)送,其中通信請求攜帶第二區塊鏈節點(diǎn)的第二證書(shū);
確定與第二個(gè)證書(shū)對應的 CA ID;
確定第二個(gè)證書(shū)對應的 CA ID 是否在 CA 信任列表中;
如果是這樣,則與第二個(gè)區塊鏈節點(diǎn)建立通信連接;
否則,不會(huì )與第二個(gè)區塊鏈節點(diǎn)建立通信連接。
分析和結論
問(wèn)題在于
本申請要解決的是如何防止區塊鏈業(yè)務(wù)節點(diǎn)泄露聯(lián)盟鏈網(wǎng)絡(luò )中的用戶(hù)隱私數據,這是提高區塊鏈數據安全性的技術(shù)難題;通過(guò)在通信請求中攜帶CA證書(shū),并預先配置CA信任列表來(lái)確定是否建立連接,業(yè)務(wù)節點(diǎn)僅限于可以建立連接的對象,從而提高區塊鏈中數據的安全性。因此,本申請中的區塊鏈節點(diǎn)間通信方式實(shí)現了業(yè)務(wù)節點(diǎn)之間的安全通信,降低了業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,屬于專(zhuān)利法保護的對象。
?。ㄈ┖兴惴ㄌ卣骰蛘呱虡I(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不解決技術(shù)問(wèn)題,或者不使用技術(shù)手段,或者未取得技術(shù)效果,不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,因此不屬于專(zhuān)利保護客體。
[例5]。
一種消費回扣的方法
應用程序內容概述
發(fā)明專(zhuān)利申請提出了一種消費返利的方法,通過(guò)計算機執行設定的返利規則,向消費的用戶(hù)發(fā)放現金券,從而提高用戶(hù)的消費意愿,為商家獲取更多利潤。
申請的權利要求
一種支出回扣方法,其特點(diǎn)是以下步驟:
當用戶(hù)在商家購物時(shí),商家會(huì )根據花費的金額返還一定數量的現金券,具體
商家使用計算機計算用戶(hù)的消費金額,并且將用戶(hù)的消費金額R劃分為M區間,其中M為整數,范圍1到范圍M的值由小到大,
退回代金券的金額F也劃分為M值,M值也從小到大排列;
根據計算機的計算值判斷,當用戶(hù)當前消費金額在范圍1時(shí),返利金額為第一值,當用戶(hù)當前消費金額在范圍2范圍內時(shí),返利金額為:
第二個(gè)值,依此類(lèi)推,將相應范圍的返利金額返回給用戶(hù)。
分析和結論解決方案涉及計算機執行的消費返利
方法,它處理用戶(hù)的消費數據,解決如何促進(jìn)用戶(hù)消費的問(wèn)題,不構成技術(shù)問(wèn)題,所使用的手段是通過(guò)計算機實(shí)現人為設定的返利規則,但計算機的限制只是
按照規定的規則根據用戶(hù)的消費量來(lái)確定返利金額,不受自然規律的約束,所以不使用任何技術(shù)手段,程序的效果只是促進(jìn)用戶(hù)消費,而不是符合自然規律的技術(shù)效果。因此,發(fā)明專(zhuān)利申請不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,不屬于專(zhuān)利保護的客體。
[例6]。
一種基于電力消費特征的經(jīng)濟景氣指數分析方法
應用程序內容概述
發(fā)明專(zhuān)利申請通過(guò)計算各種經(jīng)濟指標和電力消耗指標來(lái)評估待測試地區的經(jīng)濟景氣指數。
申請的權利要求
一種基于區域電力消費特征的經(jīng)濟景氣指數分析方法,其特征在于包括以下步驟:
根據待測地區的經(jīng)濟數據和用電量數據,選擇經(jīng)濟初步指標
待測區域的景氣指數,其中初步指標包括經(jīng)濟指標和用電量指標;
通過(guò)聚類(lèi)分析方法和
時(shí)差相關(guān)分析方法,確定待檢測區域的經(jīng)濟景氣指數體系,包括領(lǐng)先指標、一致指標和滯后指標;
根據待測地區的經(jīng)濟景氣指數體系
,采用綜合指數計算方法得到待測地區的經(jīng)濟景氣指數。
分析和結論
解決方案是一種經(jīng)濟景氣指數分析計算方法,其處理對象是各種經(jīng)濟指標、電力指標、
問(wèn)題解決的是判斷經(jīng)濟趨勢,不構成技術(shù)問(wèn)題,所使用的手段都是根據經(jīng)濟數據和用電量數據來(lái)分析經(jīng)濟形勢,只有按照經(jīng)濟規律進(jìn)行經(jīng)濟管理手段,不受自然規律的約束,所以使用技術(shù)手段,方案最終可以得到經(jīng)濟景氣指數來(lái)評價(jià)經(jīng)濟, 它不是符合自然規律的技術(shù)效果,因此解決方案不屬于專(zhuān)利法第2條第2款規定的技術(shù)解決方案,不屬于專(zhuān)利保護的客體。
?。?) 在進(jìn)行創(chuàng )造性審查時(shí),應考慮算法特征或商業(yè)規則和方法特征對解決的貢獻,這些特征在功能上相互支持并與技術(shù)特征相互作用。
[例7]。
一種基于多傳感器信息的人形機器人墜落狀態(tài)檢測方法
應用程序內容概述
現有的人形機器人行走時(shí)墜落狀態(tài)的判斷主要使用姿態(tài)信息或ZMP點(diǎn)位置信息,但這種判斷并不全面。發(fā)明專(zhuān)利申請提出了一種基于多個(gè)傳感器的人形機器人墜落狀態(tài)檢測方法,該方法實(shí)時(shí)集成了機器人步態(tài)階段信息、姿態(tài)信息和ZMP點(diǎn)位置信息,并利用模糊決策系統確定機器人當前的穩定性和可控性,從而為機器人的下一步動(dòng)作提供參考。
申請的權利要求
一種基于多傳感器信息的人形機器人跌落狀態(tài)檢測方法,其特點(diǎn)是以下步驟:
?。?)融合姿態(tài)傳感器信息、零扭矩點(diǎn)ZMP傳感器信息和機器人行走階段信息,建立分層傳感器信息融合模型,實(shí)現人形機器人的穩定性確定;
?。?)前后模糊決策系統及左右
分別采用模糊決策系統確定機器人在前后方向和左右方向的穩定性,具體步驟如下:
?。?)根據機器人支撐腳與地面的接觸和離線(xiàn)步態(tài)規劃確定機器人行走階段;
?。?)采用模糊推理算法對ZMP點(diǎn)的位置信息進(jìn)行模糊處理;
?。?)采用模糊推理算法對機器人的俯仰角或滾動(dòng)角進(jìn)行模糊化;
?。?)確定輸出隸屬函數;(5)按步驟(
1)~步驟(4)確定模糊推理規則;
?。?)去模糊。
分析和結論
對比文件1公開(kāi)了基于人形機器人傳感器信息的步態(tài)規劃和反饋控制,并根據
相關(guān)融合信息,包括根據多個(gè)傳感器信息對人形機器人的穩定狀態(tài)評估,即對比文件1公開(kāi)了本發(fā)明專(zhuān)利申請解決方案中步驟(1)中的步驟(1),與比較文件1中采用步驟(2)特定算法的模糊決策方法進(jìn)行了區分。
基于應用文檔,該方案有效提高了機器人的穩態(tài)及其可能下落方向的可靠性和準確性。以姿態(tài)信息、ZMP點(diǎn)位置信息和行走階段信息為輸入參數,通過(guò)模糊算法輸出確定人形機器人穩定狀態(tài)的信息,為進(jìn)一步準確的姿態(tài)調整指令提供了依據。因此,上述算法特征和技術(shù)特征在功能上相互支持并具有交互關(guān)系,并且相對于比較文件1,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何判斷機器人的穩定狀態(tài)并準確預測其可能的下降方向。上述模糊決策的實(shí)現算法及其對機器人穩態(tài)應用的判斷在其他比較文獻中未公開(kāi),也不是本領(lǐng)域的常識,現有技術(shù)整體上不存在使本領(lǐng)域技術(shù)人員改進(jìn)比較文件1以獲得要求保護的發(fā)明的靈感, 并且要求保護的發(fā)明相對于最接近的現有技術(shù)是非顯而易見(jiàn)的和創(chuàng )造性的。
[例8]。
基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統
應用程序內容概述現有的多移動(dòng)機器人運動(dòng)規劃
控制結構通常采用集中規劃方法,將多機器人系統視為具有多個(gè)自由度的復雜機器人,系統中的規劃器統一完成所有機器人的運動(dòng)規劃,存在計算時(shí)間長(cháng)、實(shí)用性差的缺點(diǎn)。發(fā)明專(zhuān)利申請提供了一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統。機器人的每條路徑都由一條染色體表示,以最短距離、平滑度和安全距離作為設計路徑適應度函數的三個(gè)目標,利用Messy遺傳算法優(yōu)化每個(gè)機器人的最優(yōu)路徑。

申請的權利要求
基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統,其特點(diǎn)是:(
1)機器人的路徑由染色體表示,染色體以節點(diǎn)鏈表的形式表示,即[(x,y),time],(x,y,time
∈R),(x,y)表示機器人的位置坐標,時(shí)間表示從前一個(gè)節點(diǎn)移動(dòng)該節點(diǎn)所需的時(shí)間消耗,起始節點(diǎn)的時(shí)間等于0,除初始節點(diǎn)的初始位置和結束節點(diǎn)的目標位置外,每個(gè)機器人個(gè)體的染色體是固定的。中間節點(diǎn)和節點(diǎn)的數量都是可變的;(
2)每個(gè)機器人機器人(i)的路徑路徑(j)的適應度函數表示為φ(pi,j):|| pi,j|| =Distance(pi,j)+ws×smooth(pi,j)
+wt×Time(pi,j)
這些 pi,j|| ||是距離、平滑度和時(shí)間消耗的線(xiàn)性組合,ws 是平滑度加權因子,wt 是時(shí)間加權因子;距離(pi,j)表示路徑長(cháng)度,smooth(pi,j)表示路徑的平滑度,Time(pi,j)表示路徑pi,j的時(shí)間消耗;每個(gè)機器人使用所描述的適應度函數,并通過(guò)Messy遺傳算法優(yōu)化最佳路徑。
分析和結論
對比文件1公開(kāi)了一種基于協(xié)同進(jìn)化的多機器人路徑規劃方法,其中使用自適應混沌算法獲得最優(yōu)路徑。發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于通過(guò)Messy遺傳算法實(shí)現多機器人路徑規劃。
在該解決方案中,利用適應度函數約束Messy遺傳算法,通過(guò)遺傳算法優(yōu)化后得到機器人的前向路徑,算法特征和
該解決方案的技術(shù)特點(diǎn)相互支持,在功能上相互交互,從而實(shí)現機器人前進(jìn)路徑的優(yōu)化。與對比文獻1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何使機器人基于特定算法在最優(yōu)路徑上前進(jìn)。對比文件2揭示了包括混沌算法在內的多種遺傳算法可用于路徑優(yōu)化,使用Messy遺傳算法可以解決其他算法的缺點(diǎn),獲得更合理的優(yōu)化結果?;趯Ρ任募?給出的啟示,本領(lǐng)域技術(shù)人員有動(dòng)機將比較文件1和比較文件2結合起來(lái),得到發(fā)明專(zhuān)利申請的技術(shù)方案。因此,要求保護的發(fā)明相對于比較文件1和比較2的組合是顯而易見(jiàn)的,并且不具有創(chuàng )造性。
[例9]。
一種物流配送方法
應用程序內容概述
在貨物配送過(guò)程中,
如何有效提高商品配送效率,降低配送成本,是發(fā)明專(zhuān)利申請所要解決的問(wèn)題。物流人員到達配送地點(diǎn)后,可以通知特定配送區域內的多個(gè)訂貨用戶(hù)以服務(wù)器推送消息的形式同時(shí)提貨到訂貨用戶(hù)終端,從而提高配送效率,降低配送成本。
申請的權利要求
一種通過(guò)分批通知用戶(hù)取貨來(lái)提高物流配送效率的物流配送方法,該方法包括:
當調度員
需要通知用戶(hù)取貨的,調度員通過(guò)手持物流終端向服務(wù)器發(fā)送貨物已到達的通知;
服務(wù)器分批通知調度員交貨范圍內的所有訂單;
收到通知的訂購用戶(hù)根據通知信息完成取件;
其中,用于批量通知的服務(wù)器的具體實(shí)現方式是,服務(wù)器根據配送操作員ID確定配送距離范圍內的所有目標訂單信息,并以物流終端的當前位置、物流終端的當前位置和到達時(shí)攜帶的相應配送范圍為中心。
由物流終端發(fā)送通知,然后將通知信息推送到訂單用戶(hù)終端中所有目標訂單信息中對應的訂單用戶(hù)賬戶(hù)。
分析和結論
比對文件1公開(kāi)了一種物流配送方法,其中物流終端掃描配送單上的條形碼,并將掃描到的信息發(fā)送到服務(wù)器,通知服務(wù)器貨物已經(jīng)到達;服務(wù)器獲取掃描信息中的排序用戶(hù)信息,并向排序用戶(hù)發(fā)送通知;收到通知的訂購用戶(hù)根據通知信息完成取件。
兩者之間的區別
本發(fā)明專(zhuān)利申請與對比文件1的解決方案是,批量通知用戶(hù)訂單的到來(lái),為了實(shí)現批量通知,方案中服務(wù)器、物流終端和用戶(hù)終端之間的物理架構和數據通信都進(jìn)行了相應的調整,因此取件通知規則和具體的批量通知實(shí)現方法在功能上相互支持,具有交互關(guān)系。與比較文檔1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是如何提高訂單到達通知的效率,從而提高貨物配送的效率。從用戶(hù)的角度來(lái)看,用戶(hù)可以更快地獲得有關(guān)訂單到達的信息,這也改善了用戶(hù)體驗。由于現有技術(shù)不具備對上述比較文獻1的技術(shù)啟發(fā)進(jìn)行改進(jìn),以獲得用于發(fā)明專(zhuān)利申請的解決方案,該解決方案具有創(chuàng )造性。
[例10]。
動(dòng)態(tài)視角演變的視覺(jué)方法
應用程序內容概述近年來(lái),人們
越來(lái)越多地通過(guò)社交平臺表達自己的觀(guān)點(diǎn)和想法,人們在社交平臺上發(fā)布的情感內容反映了人們觀(guān)點(diǎn)的演變,可以看到事件的發(fā)展、變化和趨勢。該發(fā)明專(zhuān)利申請通過(guò)自動(dòng)采集
人們在社交平臺上發(fā)布的信息并分析其中的情緒,通過(guò)計算機繪制情緒可視化地圖,幫助人們更好地了解不同時(shí)期的情緒強度和隨時(shí)間演變的趨勢。
申請的權利要求
一種可視化動(dòng)態(tài)視圖演變的方法,該方法包括:
步驟1)情感隸屬程度和情感分類(lèi)信息
在采集
的信息采集
中由計算設備確定,信息的情感隸屬程度表示信息屬于某種情感分類(lèi)的概率;
步驟2)情緒分類(lèi)為正面、中性或負面,具體分類(lèi)方法是:如果點(diǎn)贊數p除以踩在值r上的點(diǎn)數大于閾值a,則認為情緒分類(lèi)為正,如果值r小于閾值b,則情感分類(lèi)為
如果值 b ≤r ≤a,則情緒分類(lèi)為中性,其中 a >b;
步驟3)基于信息的情緒分類(lèi),
自動(dòng)建立信息集合的情感可視化圖形的幾何布局,橫軸表示信息生成時(shí)間,縱軸表示屬于每個(gè)情感分類(lèi)的信息數量;
步驟4)計算設備根據信息的情感隸屬關(guān)系對已建立的幾何布局進(jìn)行著(zhù)色,并根據信息顏色的梯度順序對各情感分類(lèi)層上的信息進(jìn)行著(zhù)色。
分析和結論
比較文件1公開(kāi)了一種基于情感的可視化分析方法,其中時(shí)間表示為橫軸,不同時(shí)間的每個(gè)色帶的寬度代表當時(shí)的情感度量,不同的色帶代表不同的情緒。
這
本發(fā)明專(zhuān)利申請的解決方案與比較文件1的不同之處在于步驟2中設置的情緒的具體分類(lèi)規則)。從應用內容可以看出,即使情感分類(lèi)規則不同,對應數據著(zhù)色的技術(shù)手段也可以不變,即上述情感分類(lèi)規則和具體的可視化方法在功能上并不相互支持和交互。與對比文獻1相比,發(fā)明專(zhuān)利申請僅提出了情緒分類(lèi)的新規則,并未實(shí)際解決任何技術(shù)問(wèn)題,對現有技術(shù)沒(méi)有做出技術(shù)貢獻。因此,要求保護的發(fā)明不具有相對于比較文件1的創(chuàng )造性步驟。
6.3 描述和權利要求的準備
6.3.1 說(shuō)明書(shū)的準備
含有算法特征或者業(yè)務(wù)規則、方法特征的發(fā)明專(zhuān)利申請說(shuō)明書(shū),應當清楚、完整地說(shuō)明發(fā)明為解決其技術(shù)問(wèn)題而采用的解決方案。在技術(shù)特征的基礎上,解決方案還可以包括算法特征或業(yè)務(wù)規則和方法特征,它們在功能上相互支持并與技術(shù)特征交互。
規范應明確技術(shù)特性與功能支持和交互的算法特征或業(yè)務(wù)規則與方法特性如何相互作用并產(chǎn)生有益效果。例如,在收錄
算法特征時(shí),抽象算法應與特定的技術(shù)領(lǐng)域相結合,至少一個(gè)參數的定義應與技術(shù)領(lǐng)域的特定數據相關(guān)聯(lián);當包括業(yè)務(wù)規則和方法的特點(diǎn)時(shí),應詳細描述和解釋解決技術(shù)問(wèn)題的整個(gè)過(guò)程,以便技術(shù)領(lǐng)域的技術(shù)人員能夠按照描述中描述的內容實(shí)現本發(fā)明的解決。
說(shuō)明書(shū)應清楚客觀(guān)地陳述本發(fā)明與現有技術(shù)相比的有益效果,如質(zhì)量、準確性或效率的提高,系統內部性能的改進(jìn)等。如果從用戶(hù)的角度,客觀(guān)上改善用戶(hù)體驗,也可以在說(shuō)明書(shū)中解釋?zhuān)谶@種情況下,還應該說(shuō)明構成本發(fā)明的技術(shù)特征,以及在其功能中相互支持并相互作用的算法特征或業(yè)務(wù)規則和方法特征如何帶來(lái)或產(chǎn)生用戶(hù)體驗的改善。
6.3.2 索賠的準備
這
權利要求書(shū)中含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,應當以說(shuō)明書(shū)為依據,簡(jiǎn)明扼要地界定所要求保護的專(zhuān)利保護范圍。權利要求應當記錄功能上相互支持并與技術(shù)特征相互作用的技術(shù)特征和算法特征或者業(yè)務(wù)規則和方法特征。
附件2:
關(guān)于《專(zhuān)利審查指南》第二部分第九章
修訂草案說(shuō)明(征求意見(jiàn)稿)
?。?。
一、修改后臺和主進(jìn)程
隨著(zhù)互聯(lián)網(wǎng)技術(shù)和信息技術(shù)的不斷發(fā)展,涉及新技術(shù)、新領(lǐng)域、新業(yè)態(tài)的發(fā)明創(chuàng )造不斷涌現。因此,為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體進(jìn)一步明確涉及人工智能等新技術(shù)、新領(lǐng)域的專(zhuān)利申請審查規則的需要,支持創(chuàng )新驅動(dòng)發(fā)展宗旨, 國家知識產(chǎn)權局已啟動(dòng)《專(zhuān)利審查指南》的相關(guān)修訂工作。
涉及新技術(shù)的發(fā)明專(zhuān)利申請,例如
人工智能和新領(lǐng)域、新業(yè)態(tài)與其他發(fā)明專(zhuān)利申請明顯不同,其特點(diǎn)是,在發(fā)明解決方案中,除技術(shù)外,一般還收錄
算法或商業(yè)方法等智力活動(dòng)規則和方法的特征。修訂后的《指南》明確了此類(lèi)申請的審查規則,并通過(guò)典型案例進(jìn)行了解釋。一方面,將審查實(shí)踐中探索的有益做法提升為《專(zhuān)利審查指南》,有助于統一審查標準,同時(shí)為如何更好地撰寫(xiě)此類(lèi)申請、促進(jìn)申請質(zhì)量的提高提供指導。另一方面,明確規定此類(lèi)應用的特點(diǎn)應與算法或商業(yè)方法等智力活動(dòng)規則的技術(shù)特征和特征相結合,正確把握發(fā)明的技術(shù)貢獻,從而提高審查的質(zhì)量和效率,促進(jìn)新興技術(shù)和新業(yè)態(tài)、新模式的進(jìn)一步發(fā)展和成長(cháng)。應當指出的是,修正案的指導思想是在現行《專(zhuān)利法》和《實(shí)施細則》的框架內及時(shí)響應實(shí)際需求和及時(shí)解決實(shí)際問(wèn)題,同時(shí)盡可能與現行指南第9章的框架結構保持一致,以便于審查員和公眾的理解。
在充分調查社會(huì )需求和一線(xiàn)審查員具體工作實(shí)踐的基礎上,國家知識產(chǎn)權局制定了《專(zhuān)利審查指南》第二部分第九章修正草案(
初稿)于2019年9月中旬,征求局內有關(guān)部門(mén)意見(jiàn),并專(zhuān)門(mén)召開(kāi)創(chuàng )新主體和代理人咨詢(xún)會(huì ),聽(tīng)取各方意見(jiàn),經(jīng)完善后形成《專(zhuān)利審查指南第二編第九章修正草案(征求意見(jiàn)稿)》及其說(shuō)明。
2. 主要修訂
這
《修訂草案》在第二部分第九章中專(zhuān)門(mén)增加了第六節,根據具體情況,明確了此類(lèi)申請的授權、新穎性和創(chuàng )造性、權利要求和說(shuō)明書(shū)的起草。主要變化如下:
?。?)強調專(zhuān)利審查中的技術(shù)特征和算法特征、商業(yè)規則和方法特征不應簡(jiǎn)單分開(kāi)各復審
條款的一般原則在第6.1節“復審標準”一節中確立:“在審查中,不應將技術(shù)特征與算法或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記錄的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和產(chǎn)生的技術(shù)效果。"
?。?) 明確根據專(zhuān)利法第二十五條的規定,不排除技術(shù)特征的納入如果權利要求
除算法特征或者商業(yè)規則和方法外還收錄
技術(shù)特征,則權利要求整體上不是智力活動(dòng)的規則和方法,不應根據專(zhuān)利法第二十五條第一款第2項的規定排除獲得專(zhuān)利權的可能性。
?。?) 明確專(zhuān)利法第二條的審查標準
對于判決
對于是否為技術(shù)方案,審查標準在《指南》總章技術(shù)問(wèn)題、技術(shù)手段和技術(shù)效果“三要素”的判斷方法下進(jìn)一步細化。只要該算法能結合特定的技術(shù)應用領(lǐng)域解決一定的技術(shù)問(wèn)題,就可以通過(guò)專(zhuān)利第2條的審查。
?。?)考慮算法特征與業(yè)務(wù)規則和方法特征在技術(shù)特征方面相互作用、功能上相互支持對創(chuàng )造力的技術(shù)貢獻審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法
的發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并與技術(shù)特征相互作用的算法特征或者商業(yè)規則和方法作為一個(gè)整體來(lái)考慮。修正案草案進(jìn)一步解釋了其含義。
?。?)從正面和負面兩個(gè)方面增加了10個(gè)關(guān)于授權主題和創(chuàng )造性的審查案例
實(shí)施例1為抽象模型構建方法,不涉及與具體應用領(lǐng)域的組合,不收錄
技術(shù)特征,屬于專(zhuān)利法第25.1.2條規定的智力活動(dòng)規則和方法。示例 2、3 和 4 屬于人工智能、商業(yè)模式和區塊鏈領(lǐng)域的授權對象,而示例 5 和 6 是反面示例。例7和例9是創(chuàng )造性是由于將技術(shù)特征的功能支持和相互作用作為一個(gè)整體考慮而引起的情況,以及由于相應的內容已在比較文件中公開(kāi)而使技術(shù)特征不具有創(chuàng )造性的情況。
?。┘毣f(shuō)明書(shū)和權利要求書(shū)的起草要求
進(jìn)一步細化了編寫(xiě)手冊的要求,例如提及算法如何與特定技術(shù)領(lǐng)域相結合,并指定用戶(hù)體驗效果。權利要求書(shū)的起草強調,權利要求應當記錄技術(shù)特征與功能上相互支持、與技術(shù)特征相互作用的算法或者業(yè)務(wù)規則和方法。
小技巧:京東關(guān)鍵詞鏈接在哪復制?關(guān)鍵詞優(yōu)化技巧
大家應該都知道,京東的每一個(gè)商品都有一個(gè)鏈接,就是為了方便消費者找到我們的商品。作為消費者,如果看到滿(mǎn)意的商品,可以復制鏈接分享出去。
1. 關(guān)鍵詞 鏈接復制到哪里了?
1、打開(kāi)手機【京東】APP,在商城中找到您想要的商品,點(diǎn)擊商品頁(yè)面;

2. 產(chǎn)品頁(yè)面右上角有分享圖標,點(diǎn)擊分享圖標。點(diǎn)擊后,在屏幕下方彈出的選項中點(diǎn)擊【復制鏈接】。復制完成后,屏幕上會(huì )短暫提示【復制成功】!
2. 關(guān)鍵詞 優(yōu)化技術(shù)
1、對于京東關(guān)鍵詞的選擇,作為商家,這個(gè)時(shí)候需要多關(guān)注與商品相關(guān)度高的流量詞和熱詞,一網(wǎng)打盡。選詞一般有三種方法,一是通過(guò)京東搜索引擎選擇合適的關(guān)鍵詞,二是從京東商智的行業(yè)關(guān)鍵詞中選擇,最后一種是選擇對 關(guān)鍵詞 通過(guò) Express 的產(chǎn)品推送詞。所以在關(guān)鍵詞的區域,采集
的越多,組合的可能性就越多,所以關(guān)鍵詞的采集
千萬(wàn)不能馬虎。

2.完成關(guān)鍵詞的采集后,下一步就是對采集到的關(guān)鍵詞進(jìn)行篩選。篩選所有采集
的關(guān)鍵詞,然后選擇與您的產(chǎn)品最相關(guān)、流量大、引流效果好的關(guān)鍵詞。
3.標題越多越好。至少在京東,標題越短,得分越高。所以在組合關(guān)鍵詞的時(shí)候,一定要多注意標題的長(cháng)度。此外,還需要注意關(guān)鍵詞之間的距離,以及關(guān)鍵詞的順序,這些都會(huì )影響題目的得分。一般來(lái)說(shuō),關(guān)鍵詞的組合多為品牌詞+熱搜詞/流量詞+產(chǎn)品名稱(chēng)+產(chǎn)品賣(mài)點(diǎn)+規格+關(guān)鍵詞。
在京東,一件商品能獲得多少流量,與商家的推廣方式有關(guān)。同時(shí),如果為產(chǎn)品設置鏈接,方便消費者分享我們的產(chǎn)品,也有助于增加產(chǎn)品流量。
解決方案:專(zhuān)利審查指南修改草案 | 關(guān)于算法和商業(yè)規則的10個(gè)案例
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 80 次瀏覽 ? 2022-12-01 03:26
說(shuō)明一、修訂的背景和主要過(guò)程 隨著(zhù)互聯(lián)網(wǎng)技術(shù)和信息技術(shù)的不斷發(fā)展,涉及新技術(shù)、新領(lǐng)域、新業(yè)態(tài)的發(fā)明創(chuàng )造不斷涌現。因此,為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體進(jìn)一步明確涉及人工智能等新技術(shù)、新領(lǐng)域的專(zhuān)利申請審查規則的需要,支持創(chuàng )新驅動(dòng)發(fā)展宗旨, 國家知識產(chǎn)權局已啟動(dòng)《專(zhuān)利審查指南》的相關(guān)修訂工作。涉及人工智能等新技術(shù)和新領(lǐng)域、新業(yè)態(tài)的發(fā)明專(zhuān)利申請與其他發(fā)明專(zhuān)利申請明顯不同,其特點(diǎn)是,在發(fā)明解決方案中,除技術(shù)外,一般還收錄
算法或商業(yè)方法等智力活動(dòng)規則和方法的特征。修訂后的《指南》明確了此類(lèi)申請的審查規則,并通過(guò)典型案例進(jìn)行了解釋。一方面,將審查實(shí)踐中探索的有益做法提升為《專(zhuān)利審查指南》,有助于統一審查標準,同時(shí)為如何更好地撰寫(xiě)此類(lèi)申請、促進(jìn)申請質(zhì)量的提高提供指導。另一方面,明確規定此類(lèi)應用的特點(diǎn)應與算法或商業(yè)方法等智力活動(dòng)規則的技術(shù)特征和特征相結合,正確把握發(fā)明的技術(shù)貢獻,從而提高審查的質(zhì)量和效率,促進(jìn)新興技術(shù)和新業(yè)態(tài)、新模式的進(jìn)一步發(fā)展和成長(cháng)。應當指出的是,修正案的指導思想是在現行《專(zhuān)利法》和《實(shí)施細則》的框架內及時(shí)響應實(shí)際需求和及時(shí)解決實(shí)際問(wèn)題,同時(shí)盡可能與現行指南第9章的框架結構保持一致,以便于審查員和公眾的理解。
在充分調查社會(huì )需求和一線(xiàn)審查員具體工作實(shí)踐的基礎上,國家知識產(chǎn)權局制定了《專(zhuān)利審查指南》第二部分第九章修正草案(
初稿)于2019年9月中旬,征求局內有關(guān)部門(mén)意見(jiàn),并專(zhuān)門(mén)召開(kāi)創(chuàng )新主體和代理人咨詢(xún)會(huì ),聽(tīng)取各方意見(jiàn),經(jīng)完善后形成《專(zhuān)利審查指南第二編第九章修正草案(征求意見(jiàn)稿)》及其說(shuō)明。二、《主要修正案草案》在第二部分第九章中專(zhuān)門(mén)增加了第六節,根據具體情況,明確了申請的授權、新穎性和創(chuàng )造性、權利要求和說(shuō)明書(shū)撰寫(xiě)等主題。主要修改如下:(1)強調專(zhuān)利審查中不應簡(jiǎn)單地將技術(shù)特征和算法特征、業(yè)務(wù)規則和方法特征分開(kāi) 第6.1節“審查標準”確立了各審查條款的一般原則:“在審查中,不應將技術(shù)特征與算法或者商業(yè)規則和方法特征分開(kāi), 但權利要求書(shū)記載的所有內容都要整體分析,涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和產(chǎn)生的技術(shù)效果都要進(jìn)行分析?!埃?)明確了根據專(zhuān)利法第二十五條不排除技術(shù)特征的加入,如果權利要求除算法特征或者商業(yè)規則和方法外還含有技術(shù)特征,則權利要求整體不是智力活動(dòng)的規則和方法,根據專(zhuān)利法第二十五條第一款第2項的規定,不得排除獲得專(zhuān)利權的可能性。(3)明確了專(zhuān)利法第2條審查標準是否為技術(shù)方案的判斷,進(jìn)一步細化了指南總章技術(shù)問(wèn)題、技術(shù)手段和技術(shù)效果“三要素”判斷方法下的審查標準。
只要該算法能結合特定的技術(shù)應用領(lǐng)域解決一定的技術(shù)問(wèn)題,就可以通過(guò)專(zhuān)利第2條的審查。(4) 考慮到算法特征與在技術(shù)特征和功能方面相互作用的商業(yè)規則和方法特征對發(fā)明步驟的技術(shù)貢獻,在審查同時(shí)收錄
技術(shù)特征和算法特征的發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并與技術(shù)特征相互作用的算法特征或商業(yè)規則和方法作為一個(gè)整體考慮,或者 商業(yè)規則和方法。修正案草案進(jìn)一步解釋了其含義。(5)從正反兩方面增加了10個(gè)關(guān)于資助主題和創(chuàng )造性的審查案例,實(shí)施例1為抽象模型建立方法,不涉及與具體應用領(lǐng)域的結合,不收錄
技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項規定的智力活動(dòng)規則和方法。示例 2、3 和 4 屬于人工智能、商業(yè)模式和區塊鏈領(lǐng)域的授權對象,而示例 5 和 6 是反面示例。例7和例9是創(chuàng )造性是由于將技術(shù)特征的功能支持和相互作用作為一個(gè)整體考慮而引起的情況,以及由于相應的內容已在比較文件中公開(kāi)而使技術(shù)特征不具有創(chuàng )造性的情況。(6)細化說(shuō)明書(shū)和權利要求書(shū)的編寫(xiě)要求,進(jìn)一步細化說(shuō)明書(shū)的編寫(xiě)要求,如提及如何將算法與特定技術(shù)領(lǐng)域相結合,明確用戶(hù)體驗效果等。權利要求書(shū)的起草強調,權利要求應當記錄技術(shù)特征與功能上相互支持、與技術(shù)特征相互作用的算法或者業(yè)務(wù)規則和方法。
附件1:《專(zhuān)利審查指南》第二部分第九章修正案草案(征求意見(jiàn)稿) 6.《含有算法特征或者業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請審查規定》涉及人工智能、互聯(lián)網(wǎng)+、大數據、區塊鏈等發(fā)明專(zhuān)利申請,一般收錄
算法或業(yè)務(wù)規則和方法等智力活動(dòng)的規則和方法特征,本節旨在根據 專(zhuān)利法及其實(shí)施細則。6.1 審查基準審查應針對要求保護的解決方案進(jìn)行,即權利要求定義的解決方案。在審查中,不應簡(jiǎn)單地將技術(shù)特征與算法特征或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記載的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和取得的技術(shù)效果。6.1.1 根據《專(zhuān)利法》第25.1.2條的規定,權利要求涉及抽象算法或者簡(jiǎn)單的商業(yè)規則和方法,且不收錄
任何技術(shù)特征的,屬于專(zhuān)利法第25.1.2條規定的智力活動(dòng)規則和方法,不得申請專(zhuān)利。例如,基于抽象算法建立數學(xué)模型且不收錄
任何技術(shù)特征的方法,屬于專(zhuān)利法第25.1.2條規定的不應授予專(zhuān)利權的情形。再如基于用戶(hù)消費額度的返利方式,該方法所收錄
的特征均為與返利規則相關(guān)的商業(yè)規則和方法特征,不收錄
任何技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項第2項規定的不應授予專(zhuān)利權的情形。
如果索賠除算法特征或者
商業(yè)規則和方法外,還含有技術(shù)特征,權利要求整體上不是智力活動(dòng)的規則或者方法的,依照專(zhuān)利法第二十五條第一款第2項的規定,不排除取得專(zhuān)利權的可能性。 6.1.2 根據專(zhuān)利法第2.2條進(jìn)行審查如果權利要求的整體權利要求不屬于第25.1.2條的情況專(zhuān)利法排除了專(zhuān)利權的取得,有必要審查其是否屬于專(zhuān)利法第2.2條所指的技術(shù)方案。在檢查收錄
算法特征或業(yè)務(wù)規則和方法特征的權利要求是否為技術(shù)解決方案時(shí),有必要將權利要求中描述的所有特征作為一個(gè)整體來(lái)考慮。如果權利要求記載了利用自然規律的技術(shù)手段用于要解決的技術(shù)問(wèn)題,并由此獲得符合自然規律的技術(shù)效果的,則權利要求的解決方案屬于專(zhuān)利法第二條第二款所述的技術(shù)方案。例如,如果權利要求中算法涉及的步驟與要解決的技術(shù)問(wèn)題密切相關(guān),例如算法處理的數據是技術(shù)領(lǐng)域具有確切技術(shù)意義的數據,并且算法的執行可以直接反映利用自然規律解決技術(shù)問(wèn)題的過(guò)程, 并且取得了技術(shù)效果,那么通常權利要求的解決方案屬于專(zhuān)利法第2條第2款所述的技術(shù)方案。6.1.3 新穎性和創(chuàng )造性的審查 審查含有算法特征或者商業(yè)規則和方法特征的發(fā)明專(zhuān)利申請的新穎性時(shí),應當考慮權利要求書(shū)中描述的所有特征,包括技術(shù)特征和算法特征或者商業(yè)規則和方法特征。審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并在技術(shù)特征方面相互作用的算法特征或者商業(yè)規則和方法特征作為一個(gè)整體來(lái)考慮?!肮δ苌舷嗷ブС?、相互作用”是指算法特征或業(yè)務(wù)規則、方法特征與技術(shù)特征緊密結合,共同構成解決技術(shù)問(wèn)題的技術(shù)手段,并能獲得相應的技術(shù)效果。例如,如果權利要求中的算法應用于特定的技術(shù)領(lǐng)域,能夠解決特定的技術(shù)問(wèn)題,那么可以認為算法特征和技術(shù)特征在功能上是相互支持的,具有交互關(guān)系,算法特征成為所采取技術(shù)手段的組成部分, 在進(jìn)行創(chuàng )造性審查時(shí)應考慮算法特征對方案的貢獻。再如,如果權利要求中商業(yè)規則和方法特征的實(shí)現需要對技術(shù)手段進(jìn)行調整或改進(jìn),則可以認為業(yè)務(wù)規則和方法特征與技術(shù)特征在功能上是相互支持和相互作用的,在進(jìn)行創(chuàng )造性審查時(shí)應考慮所述業(yè)務(wù)規則和方法特征對程序的貢獻。6.2 審查示例 以下根據上述審查標準,對含有算法特征或業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請給出審查實(shí)例。(一)含有專(zhuān)利法第二十五條第一款第2項范圍內的算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不屬于專(zhuān)利保護標的。
【實(shí)施例1】一種建立數學(xué)模型的方法應用內容概述發(fā)明專(zhuān)利申請的解決方案是通過(guò)增加訓練樣本的數量來(lái)提高模型精度的數學(xué)模型的方法。建模方法還使用與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù)的訓練樣本作為第一分類(lèi)任務(wù)數學(xué)模型的訓練樣本,從而增加訓練樣本的數量,并利用訓練樣本的特征值,提取特征值、標簽值等來(lái)訓練相關(guān)的數學(xué)模型, 最后得到第一個(gè)分類(lèi)任務(wù)的數學(xué)模型,由于訓練樣本數量少,過(guò)度擬合,建模精度差。3.根據權利要求所述的一種建立數學(xué)模型的方法,其特征在于,其特征在于,其包括以下步驟:根據所述第一分類(lèi)任務(wù)的訓練樣本中的特征值和所述第二分類(lèi)任務(wù)的訓練樣本中的特征值,對所述初始特征提取模型進(jìn)行訓練,得到所述目標特征提取模型;其中,第二分類(lèi)任務(wù)是與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù);根據目標特征提取模型,分別處理第一分類(lèi)任務(wù)各訓練樣本中的特征值,得到各訓練樣本對應的提取特征值;將提取的每個(gè)訓練樣本對應的特征值和標簽值組成,提取訓練樣本,訓練初始分類(lèi)模型得到目標分類(lèi)模型;目標分類(lèi)模型和目標特征提取模型由第一個(gè)分類(lèi)任務(wù)的數學(xué)模型組成。分析與結論 該方案不涉及任何具體的應用領(lǐng)域,其中訓練樣本的特征值、提取的特征值、標簽值、目標分類(lèi)模型和目標特征提取模型是抽象的通用數據,利用訓練樣本的相關(guān)數據訓練數學(xué)模型的處理過(guò)程是一系列抽象的數學(xué)方法步驟, 最終結果也是一個(gè)抽象的通用分類(lèi)數學(xué)模型。
該方案是一種抽象模型建立方法,其處理對象、過(guò)程和結果不涉及與具體應用領(lǐng)域的結合,屬于抽象數學(xué)方法的優(yōu)化,整個(gè)方案不收錄
任何技術(shù)特征,本發(fā)明專(zhuān)利申請的解決屬于第25條規定的智力活動(dòng)規則和方法, 專(zhuān)利法第1條第(2)項,不屬于專(zhuān)利保護的客體。(二)含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,利用技術(shù)手段解決技術(shù)問(wèn)題,取得技術(shù)效果的,屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,屬于專(zhuān)利保護客體?!緦?shí)施例2】卷積神經(jīng)網(wǎng)絡(luò )模型訓練方法的應用內容概述 本發(fā)明專(zhuān)利申請對卷積層各級訓練圖像進(jìn)行卷積運算和最大池化運算,并對最大池化運算后獲得的特征圖像進(jìn)一步進(jìn)行水平池化運算,使訓練好的CNN模型在識別圖像類(lèi)別時(shí)能夠識別出任何大小的圖像。 申請要求一種卷積神經(jīng)網(wǎng)絡(luò )CNN模型的訓練方法,其特征在于,該方法包括:獲取待訓練CNN模型的初始模型參數,初始模型參數包括各卷積層的初始卷積核、各層級卷積層的初始偏置矩陣、全連接層的初始權重矩陣和全連接層的初始偏置向量;獲取多個(gè)訓練圖像;在各層級卷積層上,利用各層級卷積層的初始卷積核和初始偏置矩陣分別對各訓練圖像進(jìn)行卷積運算和最大池化運算,得到各層次卷積層上各訓練圖像的第一特征圖像;對至少一個(gè)卷積層上每個(gè)訓練圖像的第一特征圖像進(jìn)行水平池化,得到每個(gè)卷積層上每個(gè)訓練圖像的第二特征圖像。根據各水平卷積層上每個(gè)訓練圖像的第二特征圖像確定每個(gè)訓練圖像的特征向量;根據初始權重矩陣和初始偏差向量對每個(gè)特征向量進(jìn)行處理,得到每個(gè)訓練圖像的類(lèi)概率向量;根據每個(gè)訓練圖像的類(lèi)概率向量和每個(gè)訓練圖像的初始類(lèi)別,計算類(lèi)誤差;基于分類(lèi)誤差,調整待訓練CNN模型的模型參數;基于調整后的模型參數和多個(gè)訓練圖像,繼續模型參數調整過(guò)程,直到迭代次數達到預設次數;迭代次數達到預設次數時(shí)得到的模型參數作為訓練好的CNN模型的模型參數。
分析與結論 該解決方案是卷積神經(jīng)網(wǎng)絡(luò )CNN模型的一種訓練方法,闡明了模型訓練方法每一步處理的數據都是圖像數據以及每一步如何處理圖像數據,體現了神經(jīng)網(wǎng)絡(luò )訓練算法與圖像信息處理密切相關(guān)。該方案解決了如何克服CNN模型只能識別固定尺寸圖像的技術(shù)難題,該方案采用不同卷積層對圖像進(jìn)行不同處理和訓練的手段,利用遵循自然規律的技術(shù)手段,獲得訓練好的CNN模型可以識別任意大小圖像的技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體?!纠?】共享單車(chē)使用概述 申請內容發(fā)明專(zhuān)利申請提出了一種共享單車(chē)的使用方法,通過(guò)獲取用戶(hù)終端設備的位置信息和一定距離內的共享單車(chē)狀態(tài)信息,使用戶(hù)根據共享單車(chē)的狀態(tài)信息準確找到可以騎行的共享單車(chē), 通過(guò)提示騎行和引導用戶(hù)停車(chē),方便了租賃自行車(chē)的使用和管理,節省了用戶(hù)的時(shí)間,改善了用戶(hù)體驗。申請要求一種共享單車(chē)的使用方法,其特征在于其包括以下步驟:第一步,用戶(hù)通過(guò)終端設備向服務(wù)器發(fā)送使用共享單車(chē)的請求;步驟二,服務(wù)器獲取用戶(hù)的第一位置信息,查找與第一位置信息對應的一定距離范圍內的共享單車(chē)的第二位置信息,以及這些共享單車(chē)的狀態(tài)信息,并將共享單車(chē)的第二位置信息和狀態(tài)信息發(fā)送給終端設備,其中第一位置信息和第二位置信息通過(guò)GPS信號獲取;第三步:根據終端設備上顯示的共享單車(chē)位置信息,用戶(hù)找到可以騎行的目標共享單車(chē);第四步:用戶(hù)通過(guò)終端設備掃描目標共享單車(chē)車(chē)身上的二維碼,通過(guò)服務(wù)器認證,獲得目標共享單車(chē)使用權限;第五步:服務(wù)器根據乘車(chē)情況向用戶(hù)推送停車(chē)提示,如果用戶(hù)將車(chē)停在指定區域,則以?xún)?yōu)惠資費計費,否則按標準資費計費;步驟6,用戶(hù)根據提示進(jìn)行選擇,騎行結束后,用戶(hù)對共享單車(chē)進(jìn)行鎖定動(dòng)作,共享單車(chē)檢測鎖定狀態(tài)并向服務(wù)器發(fā)送騎行完成的信號。
分析與結論 解決方案涉及共享單車(chē)的使用方法,解決共享單車(chē)位置匹配并獲得共享單車(chē)使用權的技術(shù)問(wèn)題,
方案通過(guò)在終端設備和服務(wù)器上執行計算機程序,實(shí)現對用戶(hù)使用共享單車(chē)行為的控制和引導,體現對位置信息的控制、認證等數據采集和計算,利用遵循自然規律的技術(shù)手段實(shí)現共享單車(chē)位置的匹配, 獲得共享單車(chē)使用權等技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體?!緦?shí)施例4】區塊鏈節點(diǎn)間通信方法及設備應用內容概述本發(fā)明專(zhuān)利申請提出了一種區塊鏈節點(diǎn)通信方法及裝置,其中區塊鏈中的業(yè)務(wù)節點(diǎn)可以在建立通信連接之前,根據通信請求中攜帶的CA證書(shū)和預配置的CA信任列表判斷是否建立通信連接, 從而降低業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,提高存儲在區塊鏈中的數據的安全性。權利要求1.一種區塊鏈節點(diǎn)通信方法,所述區塊鏈網(wǎng)絡(luò )中的區塊鏈節點(diǎn)包括業(yè)務(wù)節點(diǎn),其中,所述業(yè)務(wù)節點(diǎn)存儲由CA授權中心發(fā)送的證書(shū),并預配置有CA信任列表,該方法包括:所述第一區塊鏈節點(diǎn)接收所述第二區塊鏈節點(diǎn)發(fā)送的通信請求,其中所述通信請求攜帶所述第二區塊鏈節點(diǎn)的第二證書(shū);確定與第二個(gè)證書(shū)對應的 CA 標識;確定第二個(gè)證書(shū)對應的 CA ID 是否存在于CA信任列表中;如果是這樣,則與第二個(gè)區塊鏈節點(diǎn)建立通信連接;否則,不會(huì )與第二個(gè)區塊鏈節點(diǎn)建立通信連接。
分析與結論 本申請需要解決的問(wèn)題是如何防止區塊鏈業(yè)務(wù)節點(diǎn)在聯(lián)盟鏈網(wǎng)絡(luò )中泄露用戶(hù)隱私數據,這是提高區塊鏈數據安全性的技術(shù)問(wèn)題;通過(guò)在通信請求中攜帶CA證書(shū),并預先配置CA信任列表來(lái)確定是否建立連接,業(yè)務(wù)節點(diǎn)僅限于可以建立連接的對象,從而提高區塊鏈中數據的安全性。因此,本申請中的區塊鏈節點(diǎn)間通信方式實(shí)現了業(yè)務(wù)節點(diǎn)之間的安全通信,降低了業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,屬于專(zhuān)利法保護的對象。(三)含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不解決技術(shù)問(wèn)題,或者不使用技術(shù)手段,或者未取得技術(shù)效果,不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,因此不屬于專(zhuān)利保護客體?!緦?shí)施例5】一種消費返利方法應用內容概述發(fā)明專(zhuān)利申請提出了一種消費返利方法,通過(guò)計算機實(shí)現設定的返利規則,向用戶(hù)發(fā)放消費現金券,從而提高用戶(hù)的消費意愿,為商家獲取更多利潤。該應用程序要求一種消費返利的方法,其特征在于它包括以下步驟:當用戶(hù)在商家消費時(shí),商家根據消費金額返還一定的現金券,具體來(lái)說(shuō),商家使用計算機計算用戶(hù)的消費金額,并將用戶(hù)的消費金額R除以M區間, 其中M為整數,范圍1到范圍M的值由小到大,返還代金券的金額F也分為M值,M值也從小到大排列;根據計算機的計算值,判斷當用戶(hù)當前消費金額在范圍1時(shí),返利金額為第一值,當用戶(hù)當前消費金額在范圍2范圍內時(shí),返利金額為第二值,依此類(lèi)推,將相應范圍的返利金額返還給用戶(hù)。
分析與結論 解決方案涉及計算機執行的消費返利方法,該方法處理用戶(hù)的消費數據,要解決的問(wèn)題是如何促進(jìn)用戶(hù)的消費,這并不構成技術(shù)問(wèn)題,所使用的手段是通過(guò)計算機實(shí)現人為設定的返利規則,
但計算機的限制只是按照規定的規則,根據用戶(hù)的消費量來(lái)確定返利金額,不受自然規律的約束,因此沒(méi)有使用任何技術(shù)手段。該程序獲得的效果只是促進(jìn)用戶(hù)消費,而不是符合自然規律的技術(shù)效果。因此,發(fā)明專(zhuān)利申請不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,不屬于專(zhuān)利保護的客體?!緦?shí)施例6】一種基于電力消費特征的經(jīng)濟景氣指數分析方法 應用內容概述 發(fā)明專(zhuān)利申請通過(guò)統計各種經(jīng)濟指標和用電量指標來(lái)評估待測地區的經(jīng)濟景氣指數?;趨^域用電量特征的聲稱(chēng)經(jīng)濟景氣指數分析方法,其特征在于其包括以下步驟:根據待測區域的經(jīng)濟數據和用電量數據,選取待測地區經(jīng)濟景氣指數的初步指標,其中初步指標包括經(jīng)濟指標和用電量指標;通過(guò)聚類(lèi)分析法和時(shí)差相關(guān)分析法,確定待檢測區域經(jīng)濟景氣指數體系,包括領(lǐng)先指標、一致指標和滯后指標;根據待測區域的經(jīng)濟景氣指數體系,采用綜合指數計算方法得到被測地區的經(jīng)濟景氣指數。分析與結論 解決方案是一種經(jīng)濟景氣指數分析計算方法,其處理對象是各種經(jīng)濟指標、用電指標,所解決的問(wèn)題就是判斷經(jīng)濟走勢,不構成技術(shù)問(wèn)題,采用的手段是根據經(jīng)濟數據和用電量數據來(lái)分析經(jīng)濟形勢, 只有按照經(jīng)濟規律使用經(jīng)濟管理手段,不受自然規律的約束,所以不使用技術(shù)手段,程序最終才能獲得經(jīng)濟景氣指數來(lái)評價(jià)經(jīng)濟,它不是符合自然規律的技術(shù)效果,因此解決方案不屬于專(zhuān)利法第2條第2款規定的技術(shù)解決方案,也不是專(zhuān)利保護的客體。
?。?)在進(jìn)行創(chuàng )造性審查時(shí),應考慮在功能上相互支持并與技術(shù)特征相互作用的算法特征或商業(yè)規則和方法特征對解決的貢獻。 【例7】一種基于多傳感器信息的人工機器人跌倒狀態(tài)檢測方法 應用內容概述 現有的人形機器人行走時(shí)墜落狀態(tài)的判斷主要使用姿態(tài)信息或ZMP 點(diǎn)位置信息,但這個(gè)判斷并不全面。發(fā)明專(zhuān)利申請提出了一種基于多個(gè)傳感器的人形機器人墜落狀態(tài)檢測方法,該方法實(shí)時(shí)集成了機器人步態(tài)階段信息、姿態(tài)信息和ZMP點(diǎn)位置信息,并利用模糊決策系統確定機器人當前的穩定性和可控性,從而為機器人的下一步動(dòng)作提供參考。權利要求2.根據權利要求所述的一種基于多傳感器信息的人形機器人跌落狀態(tài)檢測方法,其特征在于,該方法收錄
以下步驟:(1)將姿態(tài)傳感器信息、零扭矩點(diǎn)ZMP傳感器信息和機器人行走階段信息融合,建立分層傳感器信息融合模型,實(shí)現人形機器人的穩定性確定;(2)采用前后模糊決策系統和左右模糊決策系統分別確定機器人在前后和左右方向的穩定性,具體步驟如下:(1)根據機器人支撐腳與地面的接觸和離線(xiàn)步態(tài)規劃確定機器人行走階段;(2)采用模糊推理算法對ZMP點(diǎn)的位置信息進(jìn)行模糊處理;(3)采用模糊推理算法對機器人的俯仰角或滾動(dòng)角進(jìn)行模糊化;(4)確定輸出隸屬函數;(5)按步驟(1)~步驟(4)確定模糊推理規則;(6)去模糊。分析與結論 對比文獻1公開(kāi)
了基于人形機器人傳感器信息的步態(tài)規劃和反饋控制,并根據相關(guān)融合信息判斷機器人的穩定性,包括基于多個(gè)傳感器信息的人形機器人穩定狀態(tài)評價(jià),即對比文獻1公開(kāi)了發(fā)明專(zhuān)利申請解決方案中的步驟(1), 與比較文檔1的區別在于使用步驟(2)特定算法的模糊決策方法?;趹梦臋n,該方案有效提高了機器人的穩態(tài)及其可能下落方向的可靠性和準確性。以姿態(tài)信息、ZMP點(diǎn)位置信息和行走階段信息為輸入參數,通過(guò)模糊算法輸出確定人形機器人穩定狀態(tài)的信息,為進(jìn)一步準確的姿態(tài)調整指令提供了依據。因此,上述算法特征和技術(shù)特征在功能上相互支持并具有交互關(guān)系,并且相對于比較文件1,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何判斷機器人的穩定狀態(tài)并準確預測其可能的下降方向。上述模糊決策的實(shí)現算法及其對機器人穩態(tài)應用的判斷在其他比較文獻中未公開(kāi),也不是本領(lǐng)域的常識,現有技術(shù)整體上不存在使本領(lǐng)域技術(shù)人員改進(jìn)比較文件1以獲得要求保護的發(fā)明的靈感, 并且要求保護的發(fā)明相對于最接近的現有技術(shù)是非顯而易見(jiàn)的和創(chuàng )造性的。 【實(shí)施例8】基于協(xié)同進(jìn)化和多群遺傳算法的多機器人路徑規劃系統應用內容概述 現有的多移動(dòng)機器人運動(dòng)規劃控制結構通常采用集中規劃方法,將多機器人系統視為具有多個(gè)自由度的復雜機器人, 系統內有規劃員統一完成所有機器人的運動(dòng)規劃,存在計算時(shí)間長(cháng)、實(shí)用性差的缺點(diǎn)。
發(fā)明專(zhuān)利申請提供了一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統。機器人的每條路徑都由一條染色體表示,以最短距離、平滑度和安全距離作為設計路徑適應度函數的三個(gè)目標,利用Messy遺傳算法優(yōu)化每個(gè)機器人的最優(yōu)路徑。申請要求一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統,其特征在于:(1)機器人的路徑由染色體表示,染色體以節點(diǎn)鏈表的形式表示,即[(x,y),time],(x,y,time∈R),(x,y)表示機器人的位置坐標, 時(shí)間表示將該節點(diǎn)從前一個(gè)節點(diǎn)移出所需的時(shí)間消耗,起始節點(diǎn)的時(shí)間等于0,除初始節點(diǎn)的初始位置和結束節點(diǎn)的固定目標位置外,每個(gè)機器人個(gè)體的染色體都是可變的;(2)每個(gè)機器人機器人(i)的路徑路徑(j)的適應度函數表示為φ(pi,j):||圓周率,J||=距離(pi,j)+ws×smooth(pi,j)+wt×Time(pi,j) 其中||圓周率,J||是距離、平滑度和時(shí)間消耗的線(xiàn)性組合,ws是平滑度加權因子,wt是時(shí)間加權因子;距離(pi,j)表示路徑長(cháng)度,smooth(pi,j)表示路徑的平滑度,Time(pi,j)表示路徑pi,j的時(shí)間消耗;每個(gè)機器人使用所描述的適應度函數,并通過(guò)Messy遺傳算法優(yōu)化最佳路徑。
分析與結論 對比文檔1公開(kāi)了一種基于協(xié)同進(jìn)化的多機器人路徑規劃方法,其中采用自適應混沌算法獲得最優(yōu)路徑。發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于通過(guò)Messy遺傳算法實(shí)現多機器人路徑規劃。在該方案中,利用適應度函數約束Messy遺傳算法,通過(guò)遺傳算法優(yōu)化后得到機器人的前向路徑,該解的算法特征和技術(shù)特點(diǎn)相互支持,在功能上相互作用,從而實(shí)現機器人前進(jìn)路徑的優(yōu)化。與對比文獻1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何使機器人基于特定算法在最優(yōu)路徑上前進(jìn)。對比文件2揭示了包括混沌算法在內的多種遺傳算法可用于路徑優(yōu)化,使用Messy遺傳算法可以解決其他算法的缺點(diǎn),獲得更合理的優(yōu)化結果?;趯Ρ任募?給出的啟示,本領(lǐng)域技術(shù)人員有動(dòng)機將比較文件1和比較文件2結合起來(lái),得到發(fā)明專(zhuān)利申請的技術(shù)方案。因此,要求保護的發(fā)明相對于比較文件1和比較2的組合是顯而易見(jiàn)的,并且不具有創(chuàng )造性?!緦?shí)施例9】一種物流配送方法的申請概述了如何在貨物配送過(guò)程中有效提高貨物配送效率,降低配送成本,這是發(fā)明專(zhuān)利申請所要解決的問(wèn)題。物流人員到達配送地點(diǎn)后,可以通知特定配送區域內的多個(gè)訂貨用戶(hù)以服務(wù)器推送消息的形式同時(shí)提貨到訂貨用戶(hù)終端,從而提高配送效率,降低配送成本。
申請要求一種物流配送方法通過(guò)分批通知用戶(hù)取貨
來(lái)提高物流配送的效率,該方法包括:當調度員需要通知用戶(hù)取貨時(shí),調度員通過(guò)手持物流終端向服務(wù)器發(fā)送貨物已經(jīng)到達的通知;服務(wù)器分批通知調度員交貨范圍內的所有訂單;收到通知的訂購用戶(hù)根據通知信息完成取件;其中,用于批量通知的服務(wù)器的具體實(shí)現方式是,服務(wù)器根據配送操作員ID確定調度員ID對應的配送距離范圍內的所有目標訂單信息,并以物流終端的當前位置、物流終端的當前位置以及物流終端發(fā)送的到達通知中攜帶的相應配送范圍為中心, 然后將通知信息推送到所有目標訂單信息中訂單用戶(hù)賬戶(hù)對應的訂單用戶(hù)終端。分析結論對比文件1公開(kāi)了一種物流配送方法,其中物流終端掃描配送單上的條形碼,并將掃描到的信息發(fā)送到服務(wù)器,通知服務(wù)器貨物已經(jīng)到達;服務(wù)器獲取掃描信息中的排序用戶(hù)信息,并向排序用戶(hù)發(fā)送通知;收到通知的訂購用戶(hù)根據通知信息完成取件。本發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于,批量通知用戶(hù)訂單的到來(lái),為了實(shí)現批量通知,方案中服務(wù)器、物流終端和用戶(hù)終端之間的物理架構和數據通信進(jìn)行了相應的調整,因此取件通知規則和具體的批量通知實(shí)現方法在功能上相互支持,并具有 交互關(guān)系。
與比較文檔1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是如何提高訂單到達通知的效率,從而提高貨物配送的效率。從用戶(hù)的角度來(lái)看,用戶(hù)可以更快地獲得有關(guān)訂單到達的信息,這也改善了用戶(hù)體驗。由于現有技術(shù)不具備對上述比較文獻1的技術(shù)啟發(fā)進(jìn)行改進(jìn),以獲得用于發(fā)明專(zhuān)利申請的解決方案,該解決方案具有創(chuàng )造性?!纠?0】一種動(dòng)態(tài)觀(guān)點(diǎn)演化的可視化方法 應用內容概述 近年來(lái),人們越來(lái)越多地通過(guò)社交平臺表達自己的觀(guān)點(diǎn)和想法,人們在社交平臺上發(fā)布的情感內容反映了人們觀(guān)點(diǎn)的演變,可以看到事件的發(fā)展、變化和趨勢。該發(fā)明專(zhuān)利申請通過(guò)自動(dòng)采集
人們在社交平臺上發(fā)布的信息并分析其中的情緒,通過(guò)計算機繪制情緒可視化地圖,幫助人們更好地了解不同時(shí)期的情緒強度和隨時(shí)間演變的趨勢。權利要求保護要求是一種動(dòng)態(tài)視圖演變的可視化方法,該方法包括:步驟1)通過(guò)計算設備確定所采集
信息集中信息的情感隸屬關(guān)系和情感分類(lèi),信息的情感隸屬程度表示信息屬于某種情感分類(lèi)的概率;步驟2)將情緒分類(lèi)為正面、中性或負面,具體分類(lèi)方法是:如果點(diǎn)數p除以點(diǎn)數Q值r大于閾值a,則認為情緒分類(lèi)為正,如果值r小于閾值b,則認為情緒分類(lèi)為負, 如果值 b ≤ r≤a,則情緒分類(lèi)為中性,其中 a > b; 步驟3)基于信息的情感分類(lèi),自動(dòng)建立信息集合的情感可視化圖形的幾何布局,橫軸表示信息生成時(shí)間,縱軸表示屬于每個(gè)情感分類(lèi)的信息數量;步驟4)計算設備根據信息的情感隸屬性對已建立的幾何布局進(jìn)行著(zhù)色,并根據信息顏色的梯度順序對每個(gè)情感分類(lèi)層上的信息進(jìn)行著(zhù)色。分析
與結論 比較文件1公開(kāi)了一種基于情感的可視化分析方法,其中時(shí)間表示為橫軸,不同時(shí)間的每個(gè)色帶的寬度表示當時(shí)的情緒度量,不同的色帶表示不同的情緒。本發(fā)明專(zhuān)利申請的解決方案與比較文件1的區別在于步驟2中設置的情緒的具體分類(lèi)規則)。從應用內容可以看出,即使情感分類(lèi)規則不同,對應數據著(zhù)色的技術(shù)手段也可以不變,即上述情感分類(lèi)規則和具體的可視化方法在功能上并不相互支持和交互。與對比文獻1相比,發(fā)明專(zhuān)利申請僅提出了情緒分類(lèi)的新規則,并未實(shí)際解決任何技術(shù)問(wèn)題,對現有技術(shù)沒(méi)有做出技術(shù)貢獻。因此,要求保護的發(fā)明不具有相對于比較文件1的創(chuàng )造性步驟。6.3 說(shuō)明書(shū)和權利要求的起草6.3.1 說(shuō)明書(shū)的起草:發(fā)明專(zhuān)利申請說(shuō)明書(shū)含有算法特征或者業(yè)務(wù)規則和方法特征的,說(shuō)明書(shū)應當清楚、完整地描述發(fā)明為解決其技術(shù)問(wèn)題而采用的解決方案。在技術(shù)特征的基礎上,解決方案還可以包括算法特征或業(yè)務(wù)規則和方法特征,它們在功能上相互支持并與技術(shù)特征交互。規范應明確技術(shù)特性與功能支持和交互的算法特征或業(yè)務(wù)規則與方法特性如何相互作用并產(chǎn)生有益效果。
例如,在收錄
算法特征時(shí),抽象算法應與特定的技術(shù)領(lǐng)域相結合,至少一個(gè)參數的定義應與技術(shù)領(lǐng)域的特定數據相關(guān)聯(lián);當包括業(yè)務(wù)規則和方法的特點(diǎn)時(shí),應詳細描述和解釋解決技術(shù)問(wèn)題的整個(gè)過(guò)程,以便技術(shù)領(lǐng)域的技術(shù)人員能夠按照描述中描述的內容實(shí)現本發(fā)明的解決。說(shuō)明書(shū)應清楚客觀(guān)地陳述本發(fā)明與現有技術(shù)相比的有益效果,如質(zhì)量、準確性或效率的提高,系統內部性能的改進(jìn)等。如果從用戶(hù)的角度,客觀(guān)上改善用戶(hù)體驗,也可以在說(shuō)明書(shū)中解釋?zhuān)谶@種情況下,還應該說(shuō)明構成本發(fā)明的技術(shù)特征,以及在其功能中相互支持并相互作用的算法特征或業(yè)務(wù)規則和方法特征如何帶來(lái)或產(chǎn)生用戶(hù)體驗的改善。6.3.2 發(fā)明專(zhuān)利申請中含有算法特征或者商業(yè)規則、方法特征的權利要求,應當以說(shuō)明書(shū)為依據,簡(jiǎn)明扼要地界定所主張的專(zhuān)利保護范圍。權利要求應當記錄功能上相互支持并與技術(shù)特征相互作用的技術(shù)特征和算法特征或者業(yè)務(wù)規則和方法特征。
-結束-
來(lái)源:每篇文章的版權歸其原作者所有。文章僅供參考,不提供法律建議。
工作日上午7點(diǎn)長(cháng)按關(guān)注大菱IP,分享每日IP英文/IP實(shí)務(wù)文章
隨時(shí)留下您的評論,閱讀后請點(diǎn)擊“再看”
如果本文對你有幫助,請分享給朋友圈 專(zhuān)利實(shí)務(wù)工作很難上手,要想真正上手,不是要掌握一些寫(xiě)作或回復模板、陳詞濫調,而是要真正了解法律的規定,把握問(wèn)題的本質(zhì),這樣當你面對不同的案件時(shí), 不同的技術(shù)解決方案,你可以整合并使用自己的語(yǔ)言來(lái)說(shuō)服審查員和法官。一旦你開(kāi)始,你會(huì )發(fā)現,其實(shí)在知識產(chǎn)權這個(gè)大范疇下,專(zhuān)利法是最簡(jiǎn)單的,因為它是相對客觀(guān)的。但是,商標和著(zhù)作權涉及許多主觀(guān)判斷,反不正當競爭和反壟斷案件涉及市場(chǎng)界定等問(wèn)題,較為復雜,難以確定。那么,如何學(xué)習專(zhuān)利實(shí)務(wù)呢?最好的辦法是研究復審、無(wú)效決定和專(zhuān)利訴訟的判決,找出當事人在實(shí)際案件中陳述意見(jiàn)和舉證的想法,學(xué)習法官進(jìn)行分析判斷的思路。案件的結果和裁決的目的并不是最重要的,許多指導性案例也存在爭議,可能會(huì )被推翻。但是,如果你能了解案件中法律分析的方法和適用法律的思路,就會(huì )大大提高你的實(shí)踐水平和能力。
為了通過(guò)實(shí)際案例幫助您提高實(shí)踐能力,我設置了兩門(mén)專(zhuān)利實(shí)務(wù)課程: 專(zhuān)利申請與無(wú)效實(shí)務(wù)通識課程:本課程為基礎課程,主要結合復審委員會(huì )指導性案例集的《案例理論》一書(shū),用實(shí)際案例講解專(zhuān)利法和審查指南的規定, 并具體說(shuō)明專(zhuān)利撰寫(xiě)、回應和無(wú)效的方法和技巧;專(zhuān)利侵權訴訟實(shí)踐明確:這門(mén)課程是改進(jìn)課程,因為專(zhuān)利是基于保護和最終目標,不了解專(zhuān)利侵權訴訟,一切專(zhuān)利工作都將是膚淺的。在本課程中,我將系統地講解專(zhuān)利保護范圍的認定、侵權認定、抗辯和侵權責任,以及證據和程序,同樣,我將結合最高人民法院的指導性案例,講解專(zhuān)利訴訟的實(shí)務(wù)要點(diǎn)和技巧。
匯總:采集規則(精品)
比如阿里巴巴,后期采集可能會(huì )針對一些門(mén)戶(hù)網(wǎng)站,比如阿里巴巴、慧聰網(wǎng)、百度新聞、燈飾行業(yè)的門(mén)戶(hù)網(wǎng)站進(jìn)行固定采集。我們的網(wǎng)站欄目必須分為幾個(gè)類(lèi)別,公司,供應,采購,新聞,行業(yè)知識。當然,新聞下面還會(huì )有幾個(gè)小版塊。每個(gè)欄目最好定期去,不一定非得是相關(guān)新聞。這樣一來(lái),似乎會(huì )有一些新聞內容。示例說(shuō)明目標網(wǎng)站: 1. 采集
內容 %B5%C6%CA%CE_n-y.html Lighting 關(guān)鍵字,這是 lighting 'supply' 關(guān)鍵字 2. 采集
內容 %B5%C6_n-y.html Lighting 關(guān)鍵字,這個(gè)這是關(guān)鍵字“光” 3。以上舉例說(shuō)明,這兩個(gè)關(guān)鍵詞也是兩個(gè)版塊的合集內容,而且頁(yè)數比較多,內容也挺多的。關(guān)鍵詞可自行設置,如吸頂燈、羊皮燈、LED、水晶燈等可自行設置采集
。當然,最好不要怕重復,只要采集
到的信息能夠正確地輸入到自己的系統中并顯示出來(lái)即可。在采集
過(guò)程中,供應商可以采集
圖片地址或采集
到自己的服務(wù)器中。因為燈飾行業(yè)對實(shí)物的看法不同,其他產(chǎn)品都是用文字描述的。4.新聞信息采集說(shuō)明新聞采集頁(yè)面百度;搜索關(guān)鍵詞'水晶燈' %CB%AE%BE%A7%B5%C6& tn=news&from=news&ie=gb2312&bs=%B5%C6%CA%CE&sr=0&cl=2&rn= 20&ct=1&prevc 這是百度的新聞采集頁(yè)。您可以在手機通訊中通過(guò)一些關(guān)鍵詞來(lái)采集
新聞內容,這樣就方便多了。
我們可以使用關(guān)鍵詞來(lái)采集
和存儲一些新聞,包括內容標題,圖片可以省略,但最好能夠下載圖片。能在不影響大家工作的情況下完成就最好了。合集分為燈飾新聞、配件新聞、行業(yè)新聞等幾個(gè)版塊,幾個(gè)版塊顯示的數量是平均的,說(shuō)明你是。有些新聞我們要求不高,只要是關(guān)于照明行業(yè)的,我們就可以采集
,內容可以從幾年前到現在。你安排它并自動(dòng)采集
它。我們現在需要的數據量也需要有針對性的信息,采集
非百度的新聞模塊,可能還有一些阿里巴巴、慧聰、照明行業(yè)的網(wǎng)站,這樣我們采集
的信息可能會(huì )更加準確。5. 公司模塊的收購標的是百度或者阿里巴巴%B5%C6%CA%CE_n-y.html目前是照明行業(yè)的公司信息。我們需要將一些公司的名稱(chēng)存儲到我們的系統中,用戶(hù)也有我們網(wǎng)站上的一些模板客戶(hù),例如:福建政和縣寶陵竹藝燈飾廠(chǎng)。我們采集
它們并對應于我們自己的數據庫。在我們的會(huì )員模板中,福建省政和縣寶陵竹藝燈飾就是在此基礎上展示的。我需要你回復我是否將他們的姓名和公司信息,包括一些產(chǎn)品信息采集
到我們的模板中。因為我們也有免費的企業(yè)模板,所以我想表達的是把這些公司的名字錄入我們的數據庫,也有免費的。企業(yè)網(wǎng)站。只要您可以在我們的網(wǎng)站上搜索他們的公司。里面最好有一些相關(guān)的內容 6. 行業(yè)知識采集
內容 比如百度知道搜索'lighting' %B5%C6%CA%CE&fr=wwwt 我們需要采集
一些我們行業(yè)知識中的大量?jì)热莶糠忠詷藴驶绞桨ㄅc回答問(wèn)題相對應的表格以供采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的!fr=wwwt 我們的行業(yè)知識板塊需要大量的內容進(jìn)行標準化的采集
,包括回答問(wèn)題對應的表格進(jìn)行采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的!fr=wwwt 我們的行業(yè)知識板塊需要大量的內容進(jìn)行標準化的采集
,包括回答問(wèn)題對應的表格進(jìn)行采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的! 查看全部
解決方案:專(zhuān)利審查指南修改草案 | 關(guān)于算法和商業(yè)規則的10個(gè)案例
說(shuō)明一、修訂的背景和主要過(guò)程 隨著(zhù)互聯(lián)網(wǎng)技術(shù)和信息技術(shù)的不斷發(fā)展,涉及新技術(shù)、新領(lǐng)域、新業(yè)態(tài)的發(fā)明創(chuàng )造不斷涌現。因此,為全面貫徹落實(shí)黨中央、國務(wù)院關(guān)于加強知識產(chǎn)權保護的一系列指示精神,響應創(chuàng )新主體進(jìn)一步明確涉及人工智能等新技術(shù)、新領(lǐng)域的專(zhuān)利申請審查規則的需要,支持創(chuàng )新驅動(dòng)發(fā)展宗旨, 國家知識產(chǎn)權局已啟動(dòng)《專(zhuān)利審查指南》的相關(guān)修訂工作。涉及人工智能等新技術(shù)和新領(lǐng)域、新業(yè)態(tài)的發(fā)明專(zhuān)利申請與其他發(fā)明專(zhuān)利申請明顯不同,其特點(diǎn)是,在發(fā)明解決方案中,除技術(shù)外,一般還收錄
算法或商業(yè)方法等智力活動(dòng)規則和方法的特征。修訂后的《指南》明確了此類(lèi)申請的審查規則,并通過(guò)典型案例進(jìn)行了解釋。一方面,將審查實(shí)踐中探索的有益做法提升為《專(zhuān)利審查指南》,有助于統一審查標準,同時(shí)為如何更好地撰寫(xiě)此類(lèi)申請、促進(jìn)申請質(zhì)量的提高提供指導。另一方面,明確規定此類(lèi)應用的特點(diǎn)應與算法或商業(yè)方法等智力活動(dòng)規則的技術(shù)特征和特征相結合,正確把握發(fā)明的技術(shù)貢獻,從而提高審查的質(zhì)量和效率,促進(jìn)新興技術(shù)和新業(yè)態(tài)、新模式的進(jìn)一步發(fā)展和成長(cháng)。應當指出的是,修正案的指導思想是在現行《專(zhuān)利法》和《實(shí)施細則》的框架內及時(shí)響應實(shí)際需求和及時(shí)解決實(shí)際問(wèn)題,同時(shí)盡可能與現行指南第9章的框架結構保持一致,以便于審查員和公眾的理解。
在充分調查社會(huì )需求和一線(xiàn)審查員具體工作實(shí)踐的基礎上,國家知識產(chǎn)權局制定了《專(zhuān)利審查指南》第二部分第九章修正草案(
初稿)于2019年9月中旬,征求局內有關(guān)部門(mén)意見(jiàn),并專(zhuān)門(mén)召開(kāi)創(chuàng )新主體和代理人咨詢(xún)會(huì ),聽(tīng)取各方意見(jiàn),經(jīng)完善后形成《專(zhuān)利審查指南第二編第九章修正草案(征求意見(jiàn)稿)》及其說(shuō)明。二、《主要修正案草案》在第二部分第九章中專(zhuān)門(mén)增加了第六節,根據具體情況,明確了申請的授權、新穎性和創(chuàng )造性、權利要求和說(shuō)明書(shū)撰寫(xiě)等主題。主要修改如下:(1)強調專(zhuān)利審查中不應簡(jiǎn)單地將技術(shù)特征和算法特征、業(yè)務(wù)規則和方法特征分開(kāi) 第6.1節“審查標準”確立了各審查條款的一般原則:“在審查中,不應將技術(shù)特征與算法或者商業(yè)規則和方法特征分開(kāi), 但權利要求書(shū)記載的所有內容都要整體分析,涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和產(chǎn)生的技術(shù)效果都要進(jìn)行分析?!埃?)明確了根據專(zhuān)利法第二十五條不排除技術(shù)特征的加入,如果權利要求除算法特征或者商業(yè)規則和方法外還含有技術(shù)特征,則權利要求整體不是智力活動(dòng)的規則和方法,根據專(zhuān)利法第二十五條第一款第2項的規定,不得排除獲得專(zhuān)利權的可能性。(3)明確了專(zhuān)利法第2條審查標準是否為技術(shù)方案的判斷,進(jìn)一步細化了指南總章技術(shù)問(wèn)題、技術(shù)手段和技術(shù)效果“三要素”判斷方法下的審查標準。
只要該算法能結合特定的技術(shù)應用領(lǐng)域解決一定的技術(shù)問(wèn)題,就可以通過(guò)專(zhuān)利第2條的審查。(4) 考慮到算法特征與在技術(shù)特征和功能方面相互作用的商業(yè)規則和方法特征對發(fā)明步驟的技術(shù)貢獻,在審查同時(shí)收錄
技術(shù)特征和算法特征的發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并與技術(shù)特征相互作用的算法特征或商業(yè)規則和方法作為一個(gè)整體考慮,或者 商業(yè)規則和方法。修正案草案進(jìn)一步解釋了其含義。(5)從正反兩方面增加了10個(gè)關(guān)于資助主題和創(chuàng )造性的審查案例,實(shí)施例1為抽象模型建立方法,不涉及與具體應用領(lǐng)域的結合,不收錄
技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項規定的智力活動(dòng)規則和方法。示例 2、3 和 4 屬于人工智能、商業(yè)模式和區塊鏈領(lǐng)域的授權對象,而示例 5 和 6 是反面示例。例7和例9是創(chuàng )造性是由于將技術(shù)特征的功能支持和相互作用作為一個(gè)整體考慮而引起的情況,以及由于相應的內容已在比較文件中公開(kāi)而使技術(shù)特征不具有創(chuàng )造性的情況。(6)細化說(shuō)明書(shū)和權利要求書(shū)的編寫(xiě)要求,進(jìn)一步細化說(shuō)明書(shū)的編寫(xiě)要求,如提及如何將算法與特定技術(shù)領(lǐng)域相結合,明確用戶(hù)體驗效果等。權利要求書(shū)的起草強調,權利要求應當記錄技術(shù)特征與功能上相互支持、與技術(shù)特征相互作用的算法或者業(yè)務(wù)規則和方法。
附件1:《專(zhuān)利審查指南》第二部分第九章修正案草案(征求意見(jiàn)稿) 6.《含有算法特征或者業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請審查規定》涉及人工智能、互聯(lián)網(wǎng)+、大數據、區塊鏈等發(fā)明專(zhuān)利申請,一般收錄
算法或業(yè)務(wù)規則和方法等智力活動(dòng)的規則和方法特征,本節旨在根據 專(zhuān)利法及其實(shí)施細則。6.1 審查基準審查應針對要求保護的解決方案進(jìn)行,即權利要求定義的解決方案。在審查中,不應簡(jiǎn)單地將技術(shù)特征與算法特征或商業(yè)規則與方法特征分開(kāi),而應將權利要求中記載的所有內容作為一個(gè)整體進(jìn)行分析,分析所涉及的技術(shù)手段、解決的技術(shù)問(wèn)題和取得的技術(shù)效果。6.1.1 根據《專(zhuān)利法》第25.1.2條的規定,權利要求涉及抽象算法或者簡(jiǎn)單的商業(yè)規則和方法,且不收錄
任何技術(shù)特征的,屬于專(zhuān)利法第25.1.2條規定的智力活動(dòng)規則和方法,不得申請專(zhuān)利。例如,基于抽象算法建立數學(xué)模型且不收錄
任何技術(shù)特征的方法,屬于專(zhuān)利法第25.1.2條規定的不應授予專(zhuān)利權的情形。再如基于用戶(hù)消費額度的返利方式,該方法所收錄
的特征均為與返利規則相關(guān)的商業(yè)規則和方法特征,不收錄
任何技術(shù)特征,屬于專(zhuān)利法第25條第1款第2項第2項規定的不應授予專(zhuān)利權的情形。
如果索賠除算法特征或者
商業(yè)規則和方法外,還含有技術(shù)特征,權利要求整體上不是智力活動(dòng)的規則或者方法的,依照專(zhuān)利法第二十五條第一款第2項的規定,不排除取得專(zhuān)利權的可能性。 6.1.2 根據專(zhuān)利法第2.2條進(jìn)行審查如果權利要求的整體權利要求不屬于第25.1.2條的情況專(zhuān)利法排除了專(zhuān)利權的取得,有必要審查其是否屬于專(zhuān)利法第2.2條所指的技術(shù)方案。在檢查收錄
算法特征或業(yè)務(wù)規則和方法特征的權利要求是否為技術(shù)解決方案時(shí),有必要將權利要求中描述的所有特征作為一個(gè)整體來(lái)考慮。如果權利要求記載了利用自然規律的技術(shù)手段用于要解決的技術(shù)問(wèn)題,并由此獲得符合自然規律的技術(shù)效果的,則權利要求的解決方案屬于專(zhuān)利法第二條第二款所述的技術(shù)方案。例如,如果權利要求中算法涉及的步驟與要解決的技術(shù)問(wèn)題密切相關(guān),例如算法處理的數據是技術(shù)領(lǐng)域具有確切技術(shù)意義的數據,并且算法的執行可以直接反映利用自然規律解決技術(shù)問(wèn)題的過(guò)程, 并且取得了技術(shù)效果,那么通常權利要求的解決方案屬于專(zhuān)利法第2條第2款所述的技術(shù)方案。6.1.3 新穎性和創(chuàng )造性的審查 審查含有算法特征或者商業(yè)規則和方法特征的發(fā)明專(zhuān)利申請的新穎性時(shí),應當考慮權利要求書(shū)中描述的所有特征,包括技術(shù)特征和算法特征或者商業(yè)規則和方法特征。審查同時(shí)收錄
技術(shù)特征和算法特征或者商業(yè)規則和方法特征的
發(fā)明專(zhuān)利申請時(shí),應當將功能上相互支持并在技術(shù)特征方面相互作用的算法特征或者商業(yè)規則和方法特征作為一個(gè)整體來(lái)考慮?!肮δ苌舷嗷ブС?、相互作用”是指算法特征或業(yè)務(wù)規則、方法特征與技術(shù)特征緊密結合,共同構成解決技術(shù)問(wèn)題的技術(shù)手段,并能獲得相應的技術(shù)效果。例如,如果權利要求中的算法應用于特定的技術(shù)領(lǐng)域,能夠解決特定的技術(shù)問(wèn)題,那么可以認為算法特征和技術(shù)特征在功能上是相互支持的,具有交互關(guān)系,算法特征成為所采取技術(shù)手段的組成部分, 在進(jìn)行創(chuàng )造性審查時(shí)應考慮算法特征對方案的貢獻。再如,如果權利要求中商業(yè)規則和方法特征的實(shí)現需要對技術(shù)手段進(jìn)行調整或改進(jìn),則可以認為業(yè)務(wù)規則和方法特征與技術(shù)特征在功能上是相互支持和相互作用的,在進(jìn)行創(chuàng )造性審查時(shí)應考慮所述業(yè)務(wù)規則和方法特征對程序的貢獻。6.2 審查示例 以下根據上述審查標準,對含有算法特征或業(yè)務(wù)規則和方法特征的發(fā)明專(zhuān)利申請給出審查實(shí)例。(一)含有專(zhuān)利法第二十五條第一款第2項范圍內的算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不屬于專(zhuān)利保護標的。
【實(shí)施例1】一種建立數學(xué)模型的方法應用內容概述發(fā)明專(zhuān)利申請的解決方案是通過(guò)增加訓練樣本的數量來(lái)提高模型精度的數學(xué)模型的方法。建模方法還使用與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù)的訓練樣本作為第一分類(lèi)任務(wù)數學(xué)模型的訓練樣本,從而增加訓練樣本的數量,并利用訓練樣本的特征值,提取特征值、標簽值等來(lái)訓練相關(guān)的數學(xué)模型, 最后得到第一個(gè)分類(lèi)任務(wù)的數學(xué)模型,由于訓練樣本數量少,過(guò)度擬合,建模精度差。3.根據權利要求所述的一種建立數學(xué)模型的方法,其特征在于,其特征在于,其包括以下步驟:根據所述第一分類(lèi)任務(wù)的訓練樣本中的特征值和所述第二分類(lèi)任務(wù)的訓練樣本中的特征值,對所述初始特征提取模型進(jìn)行訓練,得到所述目標特征提取模型;其中,第二分類(lèi)任務(wù)是與第一分類(lèi)任務(wù)相關(guān)的其他分類(lèi)任務(wù);根據目標特征提取模型,分別處理第一分類(lèi)任務(wù)各訓練樣本中的特征值,得到各訓練樣本對應的提取特征值;將提取的每個(gè)訓練樣本對應的特征值和標簽值組成,提取訓練樣本,訓練初始分類(lèi)模型得到目標分類(lèi)模型;目標分類(lèi)模型和目標特征提取模型由第一個(gè)分類(lèi)任務(wù)的數學(xué)模型組成。分析與結論 該方案不涉及任何具體的應用領(lǐng)域,其中訓練樣本的特征值、提取的特征值、標簽值、目標分類(lèi)模型和目標特征提取模型是抽象的通用數據,利用訓練樣本的相關(guān)數據訓練數學(xué)模型的處理過(guò)程是一系列抽象的數學(xué)方法步驟, 最終結果也是一個(gè)抽象的通用分類(lèi)數學(xué)模型。
該方案是一種抽象模型建立方法,其處理對象、過(guò)程和結果不涉及與具體應用領(lǐng)域的結合,屬于抽象數學(xué)方法的優(yōu)化,整個(gè)方案不收錄
任何技術(shù)特征,本發(fā)明專(zhuān)利申請的解決屬于第25條規定的智力活動(dòng)規則和方法, 專(zhuān)利法第1條第(2)項,不屬于專(zhuān)利保護的客體。(二)含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,利用技術(shù)手段解決技術(shù)問(wèn)題,取得技術(shù)效果的,屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,屬于專(zhuān)利保護客體?!緦?shí)施例2】卷積神經(jīng)網(wǎng)絡(luò )模型訓練方法的應用內容概述 本發(fā)明專(zhuān)利申請對卷積層各級訓練圖像進(jìn)行卷積運算和最大池化運算,并對最大池化運算后獲得的特征圖像進(jìn)一步進(jìn)行水平池化運算,使訓練好的CNN模型在識別圖像類(lèi)別時(shí)能夠識別出任何大小的圖像。 申請要求一種卷積神經(jīng)網(wǎng)絡(luò )CNN模型的訓練方法,其特征在于,該方法包括:獲取待訓練CNN模型的初始模型參數,初始模型參數包括各卷積層的初始卷積核、各層級卷積層的初始偏置矩陣、全連接層的初始權重矩陣和全連接層的初始偏置向量;獲取多個(gè)訓練圖像;在各層級卷積層上,利用各層級卷積層的初始卷積核和初始偏置矩陣分別對各訓練圖像進(jìn)行卷積運算和最大池化運算,得到各層次卷積層上各訓練圖像的第一特征圖像;對至少一個(gè)卷積層上每個(gè)訓練圖像的第一特征圖像進(jìn)行水平池化,得到每個(gè)卷積層上每個(gè)訓練圖像的第二特征圖像。根據各水平卷積層上每個(gè)訓練圖像的第二特征圖像確定每個(gè)訓練圖像的特征向量;根據初始權重矩陣和初始偏差向量對每個(gè)特征向量進(jìn)行處理,得到每個(gè)訓練圖像的類(lèi)概率向量;根據每個(gè)訓練圖像的類(lèi)概率向量和每個(gè)訓練圖像的初始類(lèi)別,計算類(lèi)誤差;基于分類(lèi)誤差,調整待訓練CNN模型的模型參數;基于調整后的模型參數和多個(gè)訓練圖像,繼續模型參數調整過(guò)程,直到迭代次數達到預設次數;迭代次數達到預設次數時(shí)得到的模型參數作為訓練好的CNN模型的模型參數。

分析與結論 該解決方案是卷積神經(jīng)網(wǎng)絡(luò )CNN模型的一種訓練方法,闡明了模型訓練方法每一步處理的數據都是圖像數據以及每一步如何處理圖像數據,體現了神經(jīng)網(wǎng)絡(luò )訓練算法與圖像信息處理密切相關(guān)。該方案解決了如何克服CNN模型只能識別固定尺寸圖像的技術(shù)難題,該方案采用不同卷積層對圖像進(jìn)行不同處理和訓練的手段,利用遵循自然規律的技術(shù)手段,獲得訓練好的CNN模型可以識別任意大小圖像的技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體?!纠?】共享單車(chē)使用概述 申請內容發(fā)明專(zhuān)利申請提出了一種共享單車(chē)的使用方法,通過(guò)獲取用戶(hù)終端設備的位置信息和一定距離內的共享單車(chē)狀態(tài)信息,使用戶(hù)根據共享單車(chē)的狀態(tài)信息準確找到可以騎行的共享單車(chē), 通過(guò)提示騎行和引導用戶(hù)停車(chē),方便了租賃自行車(chē)的使用和管理,節省了用戶(hù)的時(shí)間,改善了用戶(hù)體驗。申請要求一種共享單車(chē)的使用方法,其特征在于其包括以下步驟:第一步,用戶(hù)通過(guò)終端設備向服務(wù)器發(fā)送使用共享單車(chē)的請求;步驟二,服務(wù)器獲取用戶(hù)的第一位置信息,查找與第一位置信息對應的一定距離范圍內的共享單車(chē)的第二位置信息,以及這些共享單車(chē)的狀態(tài)信息,并將共享單車(chē)的第二位置信息和狀態(tài)信息發(fā)送給終端設備,其中第一位置信息和第二位置信息通過(guò)GPS信號獲取;第三步:根據終端設備上顯示的共享單車(chē)位置信息,用戶(hù)找到可以騎行的目標共享單車(chē);第四步:用戶(hù)通過(guò)終端設備掃描目標共享單車(chē)車(chē)身上的二維碼,通過(guò)服務(wù)器認證,獲得目標共享單車(chē)使用權限;第五步:服務(wù)器根據乘車(chē)情況向用戶(hù)推送停車(chē)提示,如果用戶(hù)將車(chē)停在指定區域,則以?xún)?yōu)惠資費計費,否則按標準資費計費;步驟6,用戶(hù)根據提示進(jìn)行選擇,騎行結束后,用戶(hù)對共享單車(chē)進(jìn)行鎖定動(dòng)作,共享單車(chē)檢測鎖定狀態(tài)并向服務(wù)器發(fā)送騎行完成的信號。
分析與結論 解決方案涉及共享單車(chē)的使用方法,解決共享單車(chē)位置匹配并獲得共享單車(chē)使用權的技術(shù)問(wèn)題,
方案通過(guò)在終端設備和服務(wù)器上執行計算機程序,實(shí)現對用戶(hù)使用共享單車(chē)行為的控制和引導,體現對位置信息的控制、認證等數據采集和計算,利用遵循自然規律的技術(shù)手段實(shí)現共享單車(chē)位置的匹配, 獲得共享單車(chē)使用權等技術(shù)效果。因此,發(fā)明專(zhuān)利申請的解決方案屬于專(zhuān)利法第二條第二款規定的技術(shù)解決方案,屬于專(zhuān)利保護的客體?!緦?shí)施例4】區塊鏈節點(diǎn)間通信方法及設備應用內容概述本發(fā)明專(zhuān)利申請提出了一種區塊鏈節點(diǎn)通信方法及裝置,其中區塊鏈中的業(yè)務(wù)節點(diǎn)可以在建立通信連接之前,根據通信請求中攜帶的CA證書(shū)和預配置的CA信任列表判斷是否建立通信連接, 從而降低業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,提高存儲在區塊鏈中的數據的安全性。權利要求1.一種區塊鏈節點(diǎn)通信方法,所述區塊鏈網(wǎng)絡(luò )中的區塊鏈節點(diǎn)包括業(yè)務(wù)節點(diǎn),其中,所述業(yè)務(wù)節點(diǎn)存儲由CA授權中心發(fā)送的證書(shū),并預配置有CA信任列表,該方法包括:所述第一區塊鏈節點(diǎn)接收所述第二區塊鏈節點(diǎn)發(fā)送的通信請求,其中所述通信請求攜帶所述第二區塊鏈節點(diǎn)的第二證書(shū);確定與第二個(gè)證書(shū)對應的 CA 標識;確定第二個(gè)證書(shū)對應的 CA ID 是否存在于CA信任列表中;如果是這樣,則與第二個(gè)區塊鏈節點(diǎn)建立通信連接;否則,不會(huì )與第二個(gè)區塊鏈節點(diǎn)建立通信連接。
分析與結論 本申請需要解決的問(wèn)題是如何防止區塊鏈業(yè)務(wù)節點(diǎn)在聯(lián)盟鏈網(wǎng)絡(luò )中泄露用戶(hù)隱私數據,這是提高區塊鏈數據安全性的技術(shù)問(wèn)題;通過(guò)在通信請求中攜帶CA證書(shū),并預先配置CA信任列表來(lái)確定是否建立連接,業(yè)務(wù)節點(diǎn)僅限于可以建立連接的對象,從而提高區塊鏈中數據的安全性。因此,本申請中的區塊鏈節點(diǎn)間通信方式實(shí)現了業(yè)務(wù)節點(diǎn)之間的安全通信,降低了業(yè)務(wù)節點(diǎn)泄露私有數據的可能性,屬于專(zhuān)利法保護的對象。(三)含有算法特征或者商業(yè)規則、方法特征的發(fā)明專(zhuān)利申請,不解決技術(shù)問(wèn)題,或者不使用技術(shù)手段,或者未取得技術(shù)效果,不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,因此不屬于專(zhuān)利保護客體?!緦?shí)施例5】一種消費返利方法應用內容概述發(fā)明專(zhuān)利申請提出了一種消費返利方法,通過(guò)計算機實(shí)現設定的返利規則,向用戶(hù)發(fā)放消費現金券,從而提高用戶(hù)的消費意愿,為商家獲取更多利潤。該應用程序要求一種消費返利的方法,其特征在于它包括以下步驟:當用戶(hù)在商家消費時(shí),商家根據消費金額返還一定的現金券,具體來(lái)說(shuō),商家使用計算機計算用戶(hù)的消費金額,并將用戶(hù)的消費金額R除以M區間, 其中M為整數,范圍1到范圍M的值由小到大,返還代金券的金額F也分為M值,M值也從小到大排列;根據計算機的計算值,判斷當用戶(hù)當前消費金額在范圍1時(shí),返利金額為第一值,當用戶(hù)當前消費金額在范圍2范圍內時(shí),返利金額為第二值,依此類(lèi)推,將相應范圍的返利金額返還給用戶(hù)。
分析與結論 解決方案涉及計算機執行的消費返利方法,該方法處理用戶(hù)的消費數據,要解決的問(wèn)題是如何促進(jìn)用戶(hù)的消費,這并不構成技術(shù)問(wèn)題,所使用的手段是通過(guò)計算機實(shí)現人為設定的返利規則,
但計算機的限制只是按照規定的規則,根據用戶(hù)的消費量來(lái)確定返利金額,不受自然規律的約束,因此沒(méi)有使用任何技術(shù)手段。該程序獲得的效果只是促進(jìn)用戶(hù)消費,而不是符合自然規律的技術(shù)效果。因此,發(fā)明專(zhuān)利申請不屬于專(zhuān)利法第二條第二款規定的技術(shù)方案,不屬于專(zhuān)利保護的客體?!緦?shí)施例6】一種基于電力消費特征的經(jīng)濟景氣指數分析方法 應用內容概述 發(fā)明專(zhuān)利申請通過(guò)統計各種經(jīng)濟指標和用電量指標來(lái)評估待測地區的經(jīng)濟景氣指數?;趨^域用電量特征的聲稱(chēng)經(jīng)濟景氣指數分析方法,其特征在于其包括以下步驟:根據待測區域的經(jīng)濟數據和用電量數據,選取待測地區經(jīng)濟景氣指數的初步指標,其中初步指標包括經(jīng)濟指標和用電量指標;通過(guò)聚類(lèi)分析法和時(shí)差相關(guān)分析法,確定待檢測區域經(jīng)濟景氣指數體系,包括領(lǐng)先指標、一致指標和滯后指標;根據待測區域的經(jīng)濟景氣指數體系,采用綜合指數計算方法得到被測地區的經(jīng)濟景氣指數。分析與結論 解決方案是一種經(jīng)濟景氣指數分析計算方法,其處理對象是各種經(jīng)濟指標、用電指標,所解決的問(wèn)題就是判斷經(jīng)濟走勢,不構成技術(shù)問(wèn)題,采用的手段是根據經(jīng)濟數據和用電量數據來(lái)分析經(jīng)濟形勢, 只有按照經(jīng)濟規律使用經(jīng)濟管理手段,不受自然規律的約束,所以不使用技術(shù)手段,程序最終才能獲得經(jīng)濟景氣指數來(lái)評價(jià)經(jīng)濟,它不是符合自然規律的技術(shù)效果,因此解決方案不屬于專(zhuān)利法第2條第2款規定的技術(shù)解決方案,也不是專(zhuān)利保護的客體。
?。?)在進(jìn)行創(chuàng )造性審查時(shí),應考慮在功能上相互支持并與技術(shù)特征相互作用的算法特征或商業(yè)規則和方法特征對解決的貢獻。 【例7】一種基于多傳感器信息的人工機器人跌倒狀態(tài)檢測方法 應用內容概述 現有的人形機器人行走時(shí)墜落狀態(tài)的判斷主要使用姿態(tài)信息或ZMP 點(diǎn)位置信息,但這個(gè)判斷并不全面。發(fā)明專(zhuān)利申請提出了一種基于多個(gè)傳感器的人形機器人墜落狀態(tài)檢測方法,該方法實(shí)時(shí)集成了機器人步態(tài)階段信息、姿態(tài)信息和ZMP點(diǎn)位置信息,并利用模糊決策系統確定機器人當前的穩定性和可控性,從而為機器人的下一步動(dòng)作提供參考。權利要求2.根據權利要求所述的一種基于多傳感器信息的人形機器人跌落狀態(tài)檢測方法,其特征在于,該方法收錄
以下步驟:(1)將姿態(tài)傳感器信息、零扭矩點(diǎn)ZMP傳感器信息和機器人行走階段信息融合,建立分層傳感器信息融合模型,實(shí)現人形機器人的穩定性確定;(2)采用前后模糊決策系統和左右模糊決策系統分別確定機器人在前后和左右方向的穩定性,具體步驟如下:(1)根據機器人支撐腳與地面的接觸和離線(xiàn)步態(tài)規劃確定機器人行走階段;(2)采用模糊推理算法對ZMP點(diǎn)的位置信息進(jìn)行模糊處理;(3)采用模糊推理算法對機器人的俯仰角或滾動(dòng)角進(jìn)行模糊化;(4)確定輸出隸屬函數;(5)按步驟(1)~步驟(4)確定模糊推理規則;(6)去模糊。分析與結論 對比文獻1公開(kāi)
了基于人形機器人傳感器信息的步態(tài)規劃和反饋控制,并根據相關(guān)融合信息判斷機器人的穩定性,包括基于多個(gè)傳感器信息的人形機器人穩定狀態(tài)評價(jià),即對比文獻1公開(kāi)了發(fā)明專(zhuān)利申請解決方案中的步驟(1), 與比較文檔1的區別在于使用步驟(2)特定算法的模糊決策方法?;趹梦臋n,該方案有效提高了機器人的穩態(tài)及其可能下落方向的可靠性和準確性。以姿態(tài)信息、ZMP點(diǎn)位置信息和行走階段信息為輸入參數,通過(guò)模糊算法輸出確定人形機器人穩定狀態(tài)的信息,為進(jìn)一步準確的姿態(tài)調整指令提供了依據。因此,上述算法特征和技術(shù)特征在功能上相互支持并具有交互關(guān)系,并且相對于比較文件1,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何判斷機器人的穩定狀態(tài)并準確預測其可能的下降方向。上述模糊決策的實(shí)現算法及其對機器人穩態(tài)應用的判斷在其他比較文獻中未公開(kāi),也不是本領(lǐng)域的常識,現有技術(shù)整體上不存在使本領(lǐng)域技術(shù)人員改進(jìn)比較文件1以獲得要求保護的發(fā)明的靈感, 并且要求保護的發(fā)明相對于最接近的現有技術(shù)是非顯而易見(jiàn)的和創(chuàng )造性的。 【實(shí)施例8】基于協(xié)同進(jìn)化和多群遺傳算法的多機器人路徑規劃系統應用內容概述 現有的多移動(dòng)機器人運動(dòng)規劃控制結構通常采用集中規劃方法,將多機器人系統視為具有多個(gè)自由度的復雜機器人, 系統內有規劃員統一完成所有機器人的運動(dòng)規劃,存在計算時(shí)間長(cháng)、實(shí)用性差的缺點(diǎn)。
發(fā)明專(zhuān)利申請提供了一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統。機器人的每條路徑都由一條染色體表示,以最短距離、平滑度和安全距離作為設計路徑適應度函數的三個(gè)目標,利用Messy遺傳算法優(yōu)化每個(gè)機器人的最優(yōu)路徑。申請要求一種基于協(xié)同進(jìn)化和多群體遺傳算法的多機器人路徑規劃系統,其特征在于:(1)機器人的路徑由染色體表示,染色體以節點(diǎn)鏈表的形式表示,即[(x,y),time],(x,y,time∈R),(x,y)表示機器人的位置坐標, 時(shí)間表示將該節點(diǎn)從前一個(gè)節點(diǎn)移出所需的時(shí)間消耗,起始節點(diǎn)的時(shí)間等于0,除初始節點(diǎn)的初始位置和結束節點(diǎn)的固定目標位置外,每個(gè)機器人個(gè)體的染色體都是可變的;(2)每個(gè)機器人機器人(i)的路徑路徑(j)的適應度函數表示為φ(pi,j):||圓周率,J||=距離(pi,j)+ws×smooth(pi,j)+wt×Time(pi,j) 其中||圓周率,J||是距離、平滑度和時(shí)間消耗的線(xiàn)性組合,ws是平滑度加權因子,wt是時(shí)間加權因子;距離(pi,j)表示路徑長(cháng)度,smooth(pi,j)表示路徑的平滑度,Time(pi,j)表示路徑pi,j的時(shí)間消耗;每個(gè)機器人使用所描述的適應度函數,并通過(guò)Messy遺傳算法優(yōu)化最佳路徑。
分析與結論 對比文檔1公開(kāi)了一種基于協(xié)同進(jìn)化的多機器人路徑規劃方法,其中采用自適應混沌算法獲得最優(yōu)路徑。發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于通過(guò)Messy遺傳算法實(shí)現多機器人路徑規劃。在該方案中,利用適應度函數約束Messy遺傳算法,通過(guò)遺傳算法優(yōu)化后得到機器人的前向路徑,該解的算法特征和技術(shù)特點(diǎn)相互支持,在功能上相互作用,從而實(shí)現機器人前進(jìn)路徑的優(yōu)化。與對比文獻1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是:如何使機器人基于特定算法在最優(yōu)路徑上前進(jìn)。對比文件2揭示了包括混沌算法在內的多種遺傳算法可用于路徑優(yōu)化,使用Messy遺傳算法可以解決其他算法的缺點(diǎn),獲得更合理的優(yōu)化結果?;趯Ρ任募?給出的啟示,本領(lǐng)域技術(shù)人員有動(dòng)機將比較文件1和比較文件2結合起來(lái),得到發(fā)明專(zhuān)利申請的技術(shù)方案。因此,要求保護的發(fā)明相對于比較文件1和比較2的組合是顯而易見(jiàn)的,并且不具有創(chuàng )造性?!緦?shí)施例9】一種物流配送方法的申請概述了如何在貨物配送過(guò)程中有效提高貨物配送效率,降低配送成本,這是發(fā)明專(zhuān)利申請所要解決的問(wèn)題。物流人員到達配送地點(diǎn)后,可以通知特定配送區域內的多個(gè)訂貨用戶(hù)以服務(wù)器推送消息的形式同時(shí)提貨到訂貨用戶(hù)終端,從而提高配送效率,降低配送成本。
申請要求一種物流配送方法通過(guò)分批通知用戶(hù)取貨

來(lái)提高物流配送的效率,該方法包括:當調度員需要通知用戶(hù)取貨時(shí),調度員通過(guò)手持物流終端向服務(wù)器發(fā)送貨物已經(jīng)到達的通知;服務(wù)器分批通知調度員交貨范圍內的所有訂單;收到通知的訂購用戶(hù)根據通知信息完成取件;其中,用于批量通知的服務(wù)器的具體實(shí)現方式是,服務(wù)器根據配送操作員ID確定調度員ID對應的配送距離范圍內的所有目標訂單信息,并以物流終端的當前位置、物流終端的當前位置以及物流終端發(fā)送的到達通知中攜帶的相應配送范圍為中心, 然后將通知信息推送到所有目標訂單信息中訂單用戶(hù)賬戶(hù)對應的訂單用戶(hù)終端。分析結論對比文件1公開(kāi)了一種物流配送方法,其中物流終端掃描配送單上的條形碼,并將掃描到的信息發(fā)送到服務(wù)器,通知服務(wù)器貨物已經(jīng)到達;服務(wù)器獲取掃描信息中的排序用戶(hù)信息,并向排序用戶(hù)發(fā)送通知;收到通知的訂購用戶(hù)根據通知信息完成取件。本發(fā)明專(zhuān)利申請的解決方案與對比文件1的區別在于,批量通知用戶(hù)訂單的到來(lái),為了實(shí)現批量通知,方案中服務(wù)器、物流終端和用戶(hù)終端之間的物理架構和數據通信進(jìn)行了相應的調整,因此取件通知規則和具體的批量通知實(shí)現方法在功能上相互支持,并具有 交互關(guān)系。
與比較文檔1相比,確定本發(fā)明實(shí)際解決的技術(shù)問(wèn)題是如何提高訂單到達通知的效率,從而提高貨物配送的效率。從用戶(hù)的角度來(lái)看,用戶(hù)可以更快地獲得有關(guān)訂單到達的信息,這也改善了用戶(hù)體驗。由于現有技術(shù)不具備對上述比較文獻1的技術(shù)啟發(fā)進(jìn)行改進(jìn),以獲得用于發(fā)明專(zhuān)利申請的解決方案,該解決方案具有創(chuàng )造性?!纠?0】一種動(dòng)態(tài)觀(guān)點(diǎn)演化的可視化方法 應用內容概述 近年來(lái),人們越來(lái)越多地通過(guò)社交平臺表達自己的觀(guān)點(diǎn)和想法,人們在社交平臺上發(fā)布的情感內容反映了人們觀(guān)點(diǎn)的演變,可以看到事件的發(fā)展、變化和趨勢。該發(fā)明專(zhuān)利申請通過(guò)自動(dòng)采集
人們在社交平臺上發(fā)布的信息并分析其中的情緒,通過(guò)計算機繪制情緒可視化地圖,幫助人們更好地了解不同時(shí)期的情緒強度和隨時(shí)間演變的趨勢。權利要求保護要求是一種動(dòng)態(tài)視圖演變的可視化方法,該方法包括:步驟1)通過(guò)計算設備確定所采集
信息集中信息的情感隸屬關(guān)系和情感分類(lèi),信息的情感隸屬程度表示信息屬于某種情感分類(lèi)的概率;步驟2)將情緒分類(lèi)為正面、中性或負面,具體分類(lèi)方法是:如果點(diǎn)數p除以點(diǎn)數Q值r大于閾值a,則認為情緒分類(lèi)為正,如果值r小于閾值b,則認為情緒分類(lèi)為負, 如果值 b ≤ r≤a,則情緒分類(lèi)為中性,其中 a > b; 步驟3)基于信息的情感分類(lèi),自動(dòng)建立信息集合的情感可視化圖形的幾何布局,橫軸表示信息生成時(shí)間,縱軸表示屬于每個(gè)情感分類(lèi)的信息數量;步驟4)計算設備根據信息的情感隸屬性對已建立的幾何布局進(jìn)行著(zhù)色,并根據信息顏色的梯度順序對每個(gè)情感分類(lèi)層上的信息進(jìn)行著(zhù)色。分析
與結論 比較文件1公開(kāi)了一種基于情感的可視化分析方法,其中時(shí)間表示為橫軸,不同時(shí)間的每個(gè)色帶的寬度表示當時(shí)的情緒度量,不同的色帶表示不同的情緒。本發(fā)明專(zhuān)利申請的解決方案與比較文件1的區別在于步驟2中設置的情緒的具體分類(lèi)規則)。從應用內容可以看出,即使情感分類(lèi)規則不同,對應數據著(zhù)色的技術(shù)手段也可以不變,即上述情感分類(lèi)規則和具體的可視化方法在功能上并不相互支持和交互。與對比文獻1相比,發(fā)明專(zhuān)利申請僅提出了情緒分類(lèi)的新規則,并未實(shí)際解決任何技術(shù)問(wèn)題,對現有技術(shù)沒(méi)有做出技術(shù)貢獻。因此,要求保護的發(fā)明不具有相對于比較文件1的創(chuàng )造性步驟。6.3 說(shuō)明書(shū)和權利要求的起草6.3.1 說(shuō)明書(shū)的起草:發(fā)明專(zhuān)利申請說(shuō)明書(shū)含有算法特征或者業(yè)務(wù)規則和方法特征的,說(shuō)明書(shū)應當清楚、完整地描述發(fā)明為解決其技術(shù)問(wèn)題而采用的解決方案。在技術(shù)特征的基礎上,解決方案還可以包括算法特征或業(yè)務(wù)規則和方法特征,它們在功能上相互支持并與技術(shù)特征交互。規范應明確技術(shù)特性與功能支持和交互的算法特征或業(yè)務(wù)規則與方法特性如何相互作用并產(chǎn)生有益效果。
例如,在收錄
算法特征時(shí),抽象算法應與特定的技術(shù)領(lǐng)域相結合,至少一個(gè)參數的定義應與技術(shù)領(lǐng)域的特定數據相關(guān)聯(lián);當包括業(yè)務(wù)規則和方法的特點(diǎn)時(shí),應詳細描述和解釋解決技術(shù)問(wèn)題的整個(gè)過(guò)程,以便技術(shù)領(lǐng)域的技術(shù)人員能夠按照描述中描述的內容實(shí)現本發(fā)明的解決。說(shuō)明書(shū)應清楚客觀(guān)地陳述本發(fā)明與現有技術(shù)相比的有益效果,如質(zhì)量、準確性或效率的提高,系統內部性能的改進(jìn)等。如果從用戶(hù)的角度,客觀(guān)上改善用戶(hù)體驗,也可以在說(shuō)明書(shū)中解釋?zhuān)谶@種情況下,還應該說(shuō)明構成本發(fā)明的技術(shù)特征,以及在其功能中相互支持并相互作用的算法特征或業(yè)務(wù)規則和方法特征如何帶來(lái)或產(chǎn)生用戶(hù)體驗的改善。6.3.2 發(fā)明專(zhuān)利申請中含有算法特征或者商業(yè)規則、方法特征的權利要求,應當以說(shuō)明書(shū)為依據,簡(jiǎn)明扼要地界定所主張的專(zhuān)利保護范圍。權利要求應當記錄功能上相互支持并與技術(shù)特征相互作用的技術(shù)特征和算法特征或者業(yè)務(wù)規則和方法特征。
-結束-
來(lái)源:每篇文章的版權歸其原作者所有。文章僅供參考,不提供法律建議。
工作日上午7點(diǎn)長(cháng)按關(guān)注大菱IP,分享每日IP英文/IP實(shí)務(wù)文章
隨時(shí)留下您的評論,閱讀后請點(diǎn)擊“再看”
如果本文對你有幫助,請分享給朋友圈 專(zhuān)利實(shí)務(wù)工作很難上手,要想真正上手,不是要掌握一些寫(xiě)作或回復模板、陳詞濫調,而是要真正了解法律的規定,把握問(wèn)題的本質(zhì),這樣當你面對不同的案件時(shí), 不同的技術(shù)解決方案,你可以整合并使用自己的語(yǔ)言來(lái)說(shuō)服審查員和法官。一旦你開(kāi)始,你會(huì )發(fā)現,其實(shí)在知識產(chǎn)權這個(gè)大范疇下,專(zhuān)利法是最簡(jiǎn)單的,因為它是相對客觀(guān)的。但是,商標和著(zhù)作權涉及許多主觀(guān)判斷,反不正當競爭和反壟斷案件涉及市場(chǎng)界定等問(wèn)題,較為復雜,難以確定。那么,如何學(xué)習專(zhuān)利實(shí)務(wù)呢?最好的辦法是研究復審、無(wú)效決定和專(zhuān)利訴訟的判決,找出當事人在實(shí)際案件中陳述意見(jiàn)和舉證的想法,學(xué)習法官進(jìn)行分析判斷的思路。案件的結果和裁決的目的并不是最重要的,許多指導性案例也存在爭議,可能會(huì )被推翻。但是,如果你能了解案件中法律分析的方法和適用法律的思路,就會(huì )大大提高你的實(shí)踐水平和能力。
為了通過(guò)實(shí)際案例幫助您提高實(shí)踐能力,我設置了兩門(mén)專(zhuān)利實(shí)務(wù)課程: 專(zhuān)利申請與無(wú)效實(shí)務(wù)通識課程:本課程為基礎課程,主要結合復審委員會(huì )指導性案例集的《案例理論》一書(shū),用實(shí)際案例講解專(zhuān)利法和審查指南的規定, 并具體說(shuō)明專(zhuān)利撰寫(xiě)、回應和無(wú)效的方法和技巧;專(zhuān)利侵權訴訟實(shí)踐明確:這門(mén)課程是改進(jìn)課程,因為專(zhuān)利是基于保護和最終目標,不了解專(zhuān)利侵權訴訟,一切專(zhuān)利工作都將是膚淺的。在本課程中,我將系統地講解專(zhuān)利保護范圍的認定、侵權認定、抗辯和侵權責任,以及證據和程序,同樣,我將結合最高人民法院的指導性案例,講解專(zhuān)利訴訟的實(shí)務(wù)要點(diǎn)和技巧。
匯總:采集規則(精品)

比如阿里巴巴,后期采集可能會(huì )針對一些門(mén)戶(hù)網(wǎng)站,比如阿里巴巴、慧聰網(wǎng)、百度新聞、燈飾行業(yè)的門(mén)戶(hù)網(wǎng)站進(jìn)行固定采集。我們的網(wǎng)站欄目必須分為幾個(gè)類(lèi)別,公司,供應,采購,新聞,行業(yè)知識。當然,新聞下面還會(huì )有幾個(gè)小版塊。每個(gè)欄目最好定期去,不一定非得是相關(guān)新聞。這樣一來(lái),似乎會(huì )有一些新聞內容。示例說(shuō)明目標網(wǎng)站: 1. 采集
內容 %B5%C6%CA%CE_n-y.html Lighting 關(guān)鍵字,這是 lighting 'supply' 關(guān)鍵字 2. 采集
內容 %B5%C6_n-y.html Lighting 關(guān)鍵字,這個(gè)這是關(guān)鍵字“光” 3。以上舉例說(shuō)明,這兩個(gè)關(guān)鍵詞也是兩個(gè)版塊的合集內容,而且頁(yè)數比較多,內容也挺多的。關(guān)鍵詞可自行設置,如吸頂燈、羊皮燈、LED、水晶燈等可自行設置采集
。當然,最好不要怕重復,只要采集
到的信息能夠正確地輸入到自己的系統中并顯示出來(lái)即可。在采集
過(guò)程中,供應商可以采集
圖片地址或采集
到自己的服務(wù)器中。因為燈飾行業(yè)對實(shí)物的看法不同,其他產(chǎn)品都是用文字描述的。4.新聞信息采集說(shuō)明新聞采集頁(yè)面百度;搜索關(guān)鍵詞'水晶燈' %CB%AE%BE%A7%B5%C6& tn=news&from=news&ie=gb2312&bs=%B5%C6%CA%CE&sr=0&cl=2&rn= 20&ct=1&prevc 這是百度的新聞采集頁(yè)。您可以在手機通訊中通過(guò)一些關(guān)鍵詞來(lái)采集
新聞內容,這樣就方便多了。

我們可以使用關(guān)鍵詞來(lái)采集
和存儲一些新聞,包括內容標題,圖片可以省略,但最好能夠下載圖片。能在不影響大家工作的情況下完成就最好了。合集分為燈飾新聞、配件新聞、行業(yè)新聞等幾個(gè)版塊,幾個(gè)版塊顯示的數量是平均的,說(shuō)明你是。有些新聞我們要求不高,只要是關(guān)于照明行業(yè)的,我們就可以采集
,內容可以從幾年前到現在。你安排它并自動(dòng)采集
它。我們現在需要的數據量也需要有針對性的信息,采集
非百度的新聞模塊,可能還有一些阿里巴巴、慧聰、照明行業(yè)的網(wǎng)站,這樣我們采集
的信息可能會(huì )更加準確。5. 公司模塊的收購標的是百度或者阿里巴巴%B5%C6%CA%CE_n-y.html目前是照明行業(yè)的公司信息。我們需要將一些公司的名稱(chēng)存儲到我們的系統中,用戶(hù)也有我們網(wǎng)站上的一些模板客戶(hù),例如:福建政和縣寶陵竹藝燈飾廠(chǎng)。我們采集
它們并對應于我們自己的數據庫。在我們的會(huì )員模板中,福建省政和縣寶陵竹藝燈飾就是在此基礎上展示的。我需要你回復我是否將他們的姓名和公司信息,包括一些產(chǎn)品信息采集
到我們的模板中。因為我們也有免費的企業(yè)模板,所以我想表達的是把這些公司的名字錄入我們的數據庫,也有免費的。企業(yè)網(wǎng)站。只要您可以在我們的網(wǎng)站上搜索他們的公司。里面最好有一些相關(guān)的內容 6. 行業(yè)知識采集
內容 比如百度知道搜索'lighting' %B5%C6%CA%CE&fr=wwwt 我們需要采集
一些我們行業(yè)知識中的大量?jì)热莶糠忠詷藴驶绞桨ㄅc回答問(wèn)題相對應的表格以供采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的!fr=wwwt 我們的行業(yè)知識板塊需要大量的內容進(jìn)行標準化的采集
,包括回答問(wèn)題對應的表格進(jìn)行采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的!fr=wwwt 我們的行業(yè)知識板塊需要大量的內容進(jìn)行標準化的采集
,包括回答問(wèn)題對應的表格進(jìn)行采集
。7.人才照明人才相關(guān)信息采集。內容不限于你所了解的!
解決方案:標準化數據采集平臺構建及在臨床試驗數據質(zhì)量控制的應用
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 316 次瀏覽 ? 2022-12-01 03:25
資料來(lái)源:臨床藥理學(xué) 2016, 21(12):1384-1388
收到日期:2016-08-30
?。壅菀幏?、完整的試驗數據是臨床試驗進(jìn)行統計分析的前提,也是臨床試驗結果真實(shí)可信的有力保證。目前電子數據采集系統(EDC)以其優(yōu)化試驗設計、保證數據真實(shí)可靠、控制試驗成本和風(fēng)險等優(yōu)勢,受到國內臨床試驗數據管理行業(yè)的高度重視。但是,仍然存在數據采集
規范化和不足的問(wèn)題。問(wèn)題。本文以基于ClinCapture二次開(kāi)發(fā)的藥物臨床試驗數據采集平臺eClinicaXY為例,說(shuō)明標準化數據采集平臺的架構設計,符合標準,
?。坳P(guān)鍵詞]臨床試驗;數據采集??平臺;標準化; 數據質(zhì)量控制
臨床試驗數據管理的目的是通過(guò)嚴格的質(zhì)量控制獲得完整可靠的臨床研究數據,然后通過(guò)科學(xué)嚴謹的統計分析來(lái)確定研究治療的有效性和安全性。目前,我國臨床試驗數據規范化管理尚處于發(fā)展階段,數據和執行過(guò)程質(zhì)量控制不足與臨床研究整體統一規范化要求之間的矛盾尚未充分顯現[ l],這使得試驗數據的解釋和異常數據的驗證往往具有一定的延遲性和局部性,無(wú)謂地增加了數據清理審查周期和試驗結果的不確定性。
電子數據采集系統(electronic data capture,EDC)是一個(gè)適用于臨床試驗數據采集、傳輸和管理的軟件平臺,包括活動(dòng)策劃和用戶(hù)溝通程序。據統計,EDC平均可以同時(shí)篩選81.3%的數據查詢(xún),將整個(gè)試驗的成本降低60%以上[2-3]。自2015年CFDA開(kāi)展藥物臨床試驗自查和2016年發(fā)布《臨床試驗電子數據采集技術(shù)指導原則》以來(lái),標準化的數據采集平臺可對關(guān)鍵數據節點(diǎn)進(jìn)行協(xié)同、有計劃的跟蹤監控。臨床試驗。引起我國醫藥行業(yè)的重視。這項研究采用 eClinicaXY,
1 數據采集平臺架構設計
eClinicaXY是基于GNU LGPL協(xié)議,基于開(kāi)源電子數據采集系統ClinCapture二次編譯開(kāi)發(fā)的藥物臨床試驗數據采集平臺。它集成了臨床數據交換標準聯(lián)盟(CDISC)和電子通用技術(shù)文檔(Electronic Common Technical Document,eCID)等臨床試驗標準化數據結構和操作痕跡快速檢查等技術(shù),并使用SpagoBI作為數據的輔助工具報告和顯示。
eClinicaXY 構建為基于平臺的軟件操作模型(SaaS,軟件即服務(wù))。它采用不同臨床試驗項目共享標準數據結構但具有獨立模式的模式,將不同的試驗項目分配給各個(gè)運行實(shí)例[4],以滿(mǎn)足不同臨床試驗的需要。測試項目方案異構,測試數據均滿(mǎn)足統一報送標準要求。整體數據服務(wù)框架由交互表現層、應用業(yè)務(wù)層和支撐環(huán)境層組成。采用基于B/S的MVC架構模式設計,使用HITP/HITPS作為傳輸協(xié)議,Oracle高可用數據庫作為數據存儲方案。數據采集??平臺采用JQuery+Ajax技術(shù)構建實(shí)時(shí)數據交互系統,通過(guò)頁(yè)面并行請求、異步響應、局部更新等方式在瀏覽器中實(shí)時(shí)跟蹤監控多中心整體測試過(guò)程[5] . 與授權的后端數據庫交互。平臺層次結構圖如圖1所示。
交互表現層:位于系統框架的頂層,采用HTML5、JSP等技術(shù)接收和展示用戶(hù)輸入和自動(dòng)生成的外部數據,為用戶(hù)提供交互的Web界面;
應用業(yè)務(wù)層:位于交互表現層和支撐環(huán)境層之間,負責系統業(yè)務(wù)處理和邏輯功能實(shí)現,根據臨床試驗執行需求,封裝業(yè)務(wù)功能單元并將各功能模塊動(dòng)態(tài)耦合成一個(gè)整體框架,進(jìn)行數據傳輸,映射的作用,同時(shí)具有水平可擴展性[6];
支撐環(huán)境層:位于系統框架的最底層,主要負責支撐數據平臺的穩定運行和數據庫訪(fǎng)問(wèn)。
此外,XML(eXtensibleMarkupLanguage,可擴展標記語(yǔ)言)由于其支持異構數據和語(yǔ)義的自解釋能力而被用于數據存儲和傳輸[7]。利用XML文檔的特性,將其與關(guān)系型數據庫相結合,即可以在不改變原有數據標準結構的情況下,滿(mǎn)足支持異構數據集合彈性擴展的需求。
2 符合相關(guān)法規和行業(yè)標準
目前臨床試驗的設計和實(shí)施大多采用各家公司慣用的方案和數據標準,這使得各試驗項目的執行標準、驗證規則和業(yè)務(wù)數據規范各不相同,導致數據采集
不全、同義數據多樣化表達式[8]。eClinicaXY數據采集平臺采用FDA推薦的標準數據結構和驗證規則作為基礎數據框架,同時(shí)融合了國家藥監部門(mén)的相關(guān)規定和行業(yè)標準要求,確保采集、報送和整個(gè)臨床試驗數據的存儲都是“標準化”、“統一”的。
2.1 臨床數據交換標準(CDISC)
CDISC 標準由臨床數據交換標準協(xié)會(huì )制定,作為臨床試驗數據和元數據交換、提交和存檔的行業(yè)標準。表模型(SDTM)、分析數據模型(ADaM)等部分。CDISC規定了統一的臨床試驗數據框架和元數據[9]。例如AE表示不良事件域,其中包括AETERM(不良事件報告術(shù)語(yǔ))、AEBODSYS(身體系統或器官分類(lèi))、AESER(嚴重不良事件)、AEREL(因果關(guān)系)等固定數據字段,每個(gè)數據字段是七元組(變量名、描述性變量標簽、數據類(lèi)型、受控術(shù)語(yǔ)集或數據格式、變量來(lái)源、變量作用、注釋?zhuān)?。目前,CDISC已被FDA、EMEA等推薦。
2.2 ICH 國際醫學(xué)術(shù)語(yǔ)詞典 (MedDRA) 術(shù)語(yǔ)
MedDRA 術(shù)語(yǔ)集是由 ICH 開(kāi)發(fā)的用于醫療產(chǎn)品文檔編制和安全監測的標準術(shù)語(yǔ)集。常用于藥物臨床試驗中不良事件的標準化編碼,包括五級系統器官分類(lèi)、高級組術(shù)語(yǔ)、高級術(shù)語(yǔ)、首選術(shù)語(yǔ)和低級術(shù)語(yǔ)結構[10]。eClinicaXY 數據采集平臺整合了我
2.3 WHO 藥物編碼詞典 (WHODDE)
WHODDE是世界衛生組織開(kāi)發(fā)的用于編碼、分析和報告臨床試驗中的藥物信息和藥物安全數據的分級藥物編碼系統。eClinicaXY數據采集平臺借鑒了WHO DDE中藥物術(shù)語(yǔ)的命名和編碼,并將其整合到數據庫中,作為受試者聯(lián)合用藥的參考術(shù)語(yǔ)。
此外,eClinicaXY數據采集平臺的建設也符合21CFRPartll中的電子記錄和電子簽名、FDA《計算機系統在臨床試驗中的應用技術(shù)指南》中的數據安全和追溯檢查,以及CFDA“臨床試驗電子數據采集技術(shù)”?!吨笇г瓌t》、《藥物臨床試驗質(zhì)量管理規范》(GCP)和HL7等國家和行業(yè)對電子化臨床試驗的法規要求。
3 數據采集平臺模塊框架
隨著(zhù)信息技術(shù)的進(jìn)步和物聯(lián)網(wǎng)的發(fā)展,臨床電子數據采集已經(jīng)從最初的單一數據庫軟件發(fā)展成為以中心服務(wù)器為核心、智能終端輔助數據采集的多層次網(wǎng)絡(luò )化數據采集系統識別和處理。在此基礎上,根據需要衍生出中央隨機化、交互式網(wǎng)絡(luò )反應(IVRS)、電子蹤跡檢查、定制化報告等功能[11]。eClinicaXY數據采集平臺結合現階段電子化數據采集的主流趨勢,主要收錄
以下功能模塊:
3.1 研究項目/測試中心設計模塊
(1) 可以嚴格設置試驗類(lèi)型、研究項目階段、方案驗證/IRB批準日期、受試者特征等;(2) 可以通過(guò)jQuery語(yǔ)句設置受試者驗證條件,系統會(huì )在每個(gè)受試者入組時(shí)進(jìn)行檢查,自檢是否符合進(jìn)/出條件,避免誤入群;(3)自定義是否允許動(dòng)態(tài)提問(wèn)、SDV查詢(xún)、行政編輯、CRF和文本評價(jià);(4) 通過(guò)用戶(hù)級別、用戶(hù)類(lèi)型、用戶(hù)角色設置多級訪(fǎng)問(wèn)權限,保證用戶(hù)處于滿(mǎn)足功能需求的工作域。
3.2 主題/研究事件分配模塊
(1) 基于Ran第三方接口的受試者隨機化可根據實(shí)驗設計選擇基于盲表的中心/中心隨機化或動(dòng)態(tài)隨機化算法;統計、動(dòng)態(tài)或自定義分組,受試者可根據測試計劃按單組或多組權重得到不同的預測;(3) 根據符合CDSIC數據采集域的eCRF模板文件生成研究事件,將所有研究事件分解為計劃、計劃外和普通三種類(lèi)型,每個(gè)事件分配到相應的隨訪(fǎng)時(shí)間點(diǎn)以形成整體測試流程。
3.3 數據采集與管理模塊
該模塊包括數據提交、數據監控與管理、數據提取三個(gè)部分??梢詫?shí)現(1)根據計劃執行時(shí)間流創(chuàng )建受試者數據錄入列表,根據不同受試者的實(shí)驗階段進(jìn)行時(shí)間點(diǎn)對應操作;(2) 創(chuàng )建MedDRA、WHODDE術(shù)語(yǔ)編碼和兼容的藥物詞典資源,并在測試數據生成時(shí)完成術(shù)語(yǔ)表達標準化;(3) 以XML標準格式編輯數據校驗規則,從數據質(zhì)量和邏輯角度實(shí)時(shí)校驗數據流的可靠性和時(shí)序準確性;(4) 集成源數據驗證(SDV)、標注和查詢(xún)管理,從多角色層面保證測試數據的真實(shí)性、準確性和完整性;
3.4 測試結果上報模塊
(1) 以?xún)x表板和交互圖表的形式實(shí)時(shí)展示各階段研究事件的完成情況和數據分布;(2) 可對接SpagoBI智能商務(wù)BI套件,發(fā)起人和項目主管可以在不導出測試數據的前提下,通過(guò)數據圖表實(shí)時(shí)跟蹤研究項目的進(jìn)度,以及及早發(fā)現試驗異常操作、受試者不良事件、異常數據或異常趨勢的數據;(3) 數據可按需求自定義導出,簡(jiǎn)化統計分析數據的確定和提交數據的整合;(4) 生成多種格式(PDF/SAS/EXCEL/SPSS/TXT)的主題病例報告數據和帶注釋的CRF(annotatedCRF),
4 執行技術(shù)路線(xiàn)
eClinicaXY數據采集平臺以研究事件(如個(gè)體特征、實(shí)驗室檢測等)為數據采集域單元,將整個(gè)臨床試驗分解為時(shí)序性的時(shí)間節點(diǎn)關(guān)鍵點(diǎn),其中研究事件由eCRF模板自動(dòng)生成基于 CDASH 標準的文件。它分為三類(lèi):與時(shí)間相關(guān)的重復事件、與時(shí)間相關(guān)的獨立事件和累積事件。每個(gè)研究事件都伴隨著(zhù)特定的 XML 檢查驗證規則。系統根據臨床試驗執行流程,將各個(gè)研究項目安排到相應的執行時(shí)間點(diǎn),通過(guò)特定的“時(shí)間窗-研究事件”順序組合模式構建電子化臨床試驗流程。
eClinicaXY數據采集平臺臨床試驗實(shí)施技術(shù)路線(xiàn)可分為以下幾個(gè)步驟:(1)項目設置,項目管理員設置研究項目的詳細信息、受試者的進(jìn)入條件和分組、項目參數等. 根據具體的臨床試驗方案,數據管理員根據方案CRF和數據管理計劃編寫(xiě)eCRF源文件和XML數據驗證文件,并以同名配對的形式導入系統。項目管理員將生成的研究事件組合成試執行流程,在系統內通過(guò)技術(shù)測試和小規模驗收后,將研究項目的狀態(tài)設置為“有效”;(2) 受試者被錄取,并且每個(gè)中心都會(huì )將測試人員的信息輸入到系統中。篩選完成后,系統會(huì )根據預先設定的測試類(lèi)型和隨機化方式,自動(dòng)為受試者分配一個(gè)唯一標識符(SUBJID)?!皟?yōu)旭藥包材號”盲聯(lián)的藥號分離方式,保證試驗盲聯(lián)的順利實(shí)施;(3)試驗數據的錄入,研究者或CRC將根據各受試者的試驗進(jìn)度分離產(chǎn)生的研究數據。相應的數據錄入以復式錄入的形式錄入。如果第一次錄入有邏輯錯誤或第二次錄入與第一次錄入不一致時(shí),會(huì )觸發(fā)預設的校驗條件,并在數據保存前提醒操作人員,循環(huán)往復,直到所有數據都通過(guò)驗證。如有疑問(wèn),可隨時(shí)通過(guò)互動(dòng)回復系統向研究人員提問(wèn);(4) 數據導出,當最后一個(gè)受試者完成試驗后仍有疑問(wèn)時(shí),數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,然后分段并由統計程序員重新組裝成統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,由統計程序員將數據切分重組為統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,由統計程序員將數據切分重組為統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。
5 優(yōu)勢特點(diǎn)及實(shí)現效果
通過(guò)構建符合國家相關(guān)法規和行業(yè)標準的質(zhì)量控制體系,將整體臨床試驗按計劃劃分節點(diǎn)要素,建立嚴謹一致的驗證文件,不僅可以縮短數據清洗周期,確保測試數據真實(shí)完整。前提下及早發(fā)現異?;蛴挟惓Z厔莸臄祿?當前臨床試驗數據質(zhì)量問(wèn)題主要體現在轉錄錯誤、不完整、安全性不夠、語(yǔ)義表達支離破碎[12]。標準化的數據采集平臺可以最大程度避免上述問(wèn)題,保證ALCOA+數據質(zhì)量控制原則(歸因于易讀性、同步性、原創(chuàng )性、準確性、完整性、
5.1 數據完整性和真實(shí)性驗證
以紙質(zhì)CRF為數據媒介的傳統臨床試驗最大的弊端是只有參與者自覺(jué)遵守GCP指南才能保證試驗數據的完整性和真實(shí)性,無(wú)法對數據及相關(guān)文件的訪(fǎng)問(wèn)和修改進(jìn)行有效檢查并被追蹤。標準化數據采集平臺基于CDISC數據框架建立通用臨床試驗數據模型,最大限度匹配臨床試驗實(shí)際產(chǎn)生的數據與需要提交的標準數據。在此基礎上,結合標準術(shù)語(yǔ)、MedDRA術(shù)語(yǔ)詞典、XSL模板文檔、XML和JQuery驗證規則文件,共同構建一個(gè)比較健壯的橫向數據和縱向數據相結合的eCRF庫,
此外,標準化的數據采集平臺集成了基于身份密碼(IBC)的多級用戶(hù)權限和操作痕跡檢查功能。跡檢業(yè)務(wù)對象模型是一個(gè)六元組A=(U,S,D,R,VB,VA),其中U為操作者,S為操作對象,D為操作日期和時(shí)間,R為操作目的,VB為更新前值,VA為更新后值,保證測試數據性的安全性和可追溯性。
5.2 數據錄入驗證
在藥物臨床試驗中,常有數據錄入錯誤,直到統計分析才發(fā)現,如收縮壓為80mmHg,舒張壓為110nunHg。標準化數據采集平臺的數據校驗功能可以利用數據庫中的函數依賴(lài),進(jìn)一步定制近似函數依賴(lài)作為數據質(zhì)量規則,降低半結構化數據清洗的復雜度[13-14]。
數據校驗的主要對象是數據缺失和冗余、事件數據的邏輯一致性、正常值范圍和臨床意義判斷、隨機化和方案違背等,根據預先設定的XML校驗規則文件,系統進(jìn)行100%校驗在數據錄入初期或標準化代碼映射入庫后,對方案中規定的主要、次要療效指標和關(guān)鍵安全性指標進(jìn)行審核。監測到異常數據后,及時(shí)對具有相應職責和權限的平臺運營(yíng)者進(jìn)行警示和審查,并對異常數據的變化情況進(jìn)行跟蹤分析。
5,3 總體數據自適應決策
臨床試驗有效性和安全性數據流是一組面板數據序列。實(shí)時(shí)數據流在數據庫中被劃分為原創(chuàng )
數據段。標準化映射完成后,根據目標領(lǐng)域固有的統計特征,進(jìn)一步建立描述其整體分布的可視化。同時(shí),它不斷修正當前相關(guān)模型與新采集
的數據段的擬合,并探索統計上顯著(zhù)的事件,以分析臨床試驗的進(jìn)展并識別數據流中的異常和異常值?;貜?。通過(guò)研究人員從專(zhuān)業(yè)角度對異?;蛱囟〞r(shí)間、區間數據進(jìn)行整體對比,趨勢異?;蚺c以往研究數據對比,綜合分析,可以及早發(fā)現療效數據的分布趨勢和安全性數據異常的發(fā)生[15]。在試驗數據標準化整合和全面質(zhì)量控制的總體框架下,對試驗實(shí)施做出科學(xué)嚴謹的適應性決策(如樣本日重估、適應隨機化等),提前采取調整措施在保障受試者權益的同時(shí),全面把控臨床試驗的整體執行質(zhì)量。
6結語(yǔ)
真實(shí)、完整、可追溯的高質(zhì)量臨床研究數據對檢測結果的可靠性和準確性起著(zhù)至關(guān)重要的作用?,F代標準的臨床試驗數據管理不再局限于傳統的簡(jiǎn)單數據錄入,還包括嚴格一致的質(zhì)量控制措施,以確保數據的標準化和準確性[16]。結合CDISC標準數據框架、MedDRA術(shù)語(yǔ)詞典、XML和JQuery數據驗證文件等標準化文件的模型驅動(dòng)架構和需求驅動(dòng)架構的標準化臨床試驗數據采集平臺,不僅具有統一標準化的源數據管理、動(dòng)態(tài)數據編碼聯(lián)動(dòng),具有數據異常實(shí)時(shí)校驗、數據安全生命周期可控等優(yōu)勢,并可在臨床試驗執行過(guò)程中實(shí)現數據誤錄的及時(shí)糾正、異常數據的早期篩查等功能,協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少因質(zhì)量管控問(wèn)題導致的質(zhì)量管控泛化。傳統臨床試驗數據采集模式中采集、編碼、驗證的隔離。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。從而協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少傳統臨床試驗數據采集模式中由于采集、編碼、驗證各自為政造成的質(zhì)量管控普遍化。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。從而協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少傳統臨床試驗數據采集模式中由于采集、編碼、驗證各自為政造成的質(zhì)量管控普遍化。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。
參考
歡迎留言發(fā)表您的看法和意見(jiàn)
生物統計學(xué)/數據管理數據庫/IT職位推薦
北京:
廣州:
上海:
官方數據:基于STM32(HAL庫)的水質(zhì)檢測(渾濁度、PH值、溫度、手機APP顯示、wi
系統將采集到的濁度、PH值、溫度等數據通過(guò)wifi發(fā)送至手機APP,超過(guò)閾值報警。
一、硬件材料清單:
1、STM32C8T6:控制器
2、OLED顯示屏:顯示傳感器采集到的數據
3、PH傳感器:檢測PH值
4. TDS傳感器:檢測濁度
5、DS18B02水溫傳感器:檢測溫度
6. ESP8266:發(fā)送數據到手機
7、蜂鳴器:超閾值報警
二、實(shí)物圖:
3.部分源碼:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//定時(shí)器中斷回調函數
{
HAL_TIM_Base_Stop_IT(&htim2);//停止定時(shí)器中斷
靜態(tài) uint8_t cot = 0;
char temp_a[50] = {0};
字符 humidity_a[20] = {0};
uint16_t ADC_Value,PH_Value1;
雙 ADC_ValueFF,PH_Value;
char charadc[50]={0};
char charph[50]={0};
beep_OFF();//關(guān)閉蜂鳴器
if(flag == 1)//關(guān)燈
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
}
else // 開(kāi)燈
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
}
如果 (htim == (&htim2))
{
if(cot == 25)//5s發(fā)送心跳包
{
HAL_UART_Transmit(&huart2,(uint8_t *)xtb, 2, 200);//發(fā)送心跳包
cot = 0;//定時(shí)器計數歸0
}
溫度 = DS18B20_Get_Temperature(); //讀取溫度值
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&AD_Value,2); //打開(kāi)DMA
ADC_ValueFF = -865.68*(AD_Value[0]*3.3/4096.0)+3291.3;//通過(guò)公式得到濁度值
PH_Value = AD_Value[1]*3.3/4096; //獲取采集PH值的電壓
PH_Value = -5.9647*PH_Value+22.255; //通過(guò)公式轉換為PH值
如果(PH_Value=14)PH_Value = 14;//PH值大于14修正為14
sprintf(temp_a,"%d.%dC",(int)temperature/10,(((int)temperature)));//將溫度轉換成字符串格式
sprintf(charph,"%.2F",PH_Value); //將PH轉換為字符串格式
sprintf(charadc,"%.2F",ADC_ValueFF); //將濁度轉化為字符串格式
發(fā)布((char*)“temp”,(char*)temp_a);//在手機APP上顯示溫度
釋放((char*)"PH",(char*)charph); //在手機APP上顯示PH值
Release((char*)"濁度",(char*)charadc); //在手機APP上顯示濁度
OLED_ShowString(0,16,(uint8_t *)"temp:",16,1); //在OLED顯示屏上顯示溫度:
OLED_ShowString(40,16,(uint8_t *)temp_a,16,1); //在OLED顯示屏上顯示溫度
OLED_ShowString(0,32,(uint8_t *)"PH:",16,1); //在OLED顯示屏上顯示PH:
OLED_ShowString(40,32,(uint8_t *)charph,16,1); //在OLED顯示屏上顯示pH值
OLED_ShowString(0,48,(uint8_t *)"ZD:",16,1); //在OLED顯示屏上顯示ZD:
OLED_ShowString(40,48,(uint8_t *)charadc,16,1); //在OLED顯示屏上顯示濁度值
OLED_刷新(); //刷新OLED顯示
if((int)(temperature/10)T_MAX)//判斷溫度是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
else if((int)(ADC_ValueFF)TDS_MAX)//判斷濁度是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
否則如果((int)(PH_Value)
PH_MAX)//判斷PH值是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
else beep_OFF();//不滿(mǎn)足所有條件則關(guān)閉蜂鳴器
cot++;//定時(shí)器計數加1
}
HAL_TIM_Base_Start_IT(&htim2);//啟動(dòng)定時(shí)器
}
4、示意圖:
下面是整個(gè)項目各個(gè)模塊的示意圖:
五。更多的:
如果想更詳細的了解整個(gè)項目,可以去b站觀(guān)看這個(gè)視頻演示,以下是視頻鏈接:
SCM畢業(yè)設計:基于stm32的遠程水質(zhì)檢測_嗶哩嗶哩_bilibili
贈送三重?。?! 查看全部
解決方案:標準化數據采集平臺構建及在臨床試驗數據質(zhì)量控制的應用
資料來(lái)源:臨床藥理學(xué) 2016, 21(12):1384-1388
收到日期:2016-08-30
?。壅菀幏?、完整的試驗數據是臨床試驗進(jìn)行統計分析的前提,也是臨床試驗結果真實(shí)可信的有力保證。目前電子數據采集系統(EDC)以其優(yōu)化試驗設計、保證數據真實(shí)可靠、控制試驗成本和風(fēng)險等優(yōu)勢,受到國內臨床試驗數據管理行業(yè)的高度重視。但是,仍然存在數據采集
規范化和不足的問(wèn)題。問(wèn)題。本文以基于ClinCapture二次開(kāi)發(fā)的藥物臨床試驗數據采集平臺eClinicaXY為例,說(shuō)明標準化數據采集平臺的架構設計,符合標準,
?。?a href="http://www.hqbet6457.com/caiji/public_dict/" target="_blank">關(guān)鍵詞]臨床試驗;數據采集??平臺;標準化; 數據質(zhì)量控制
臨床試驗數據管理的目的是通過(guò)嚴格的質(zhì)量控制獲得完整可靠的臨床研究數據,然后通過(guò)科學(xué)嚴謹的統計分析來(lái)確定研究治療的有效性和安全性。目前,我國臨床試驗數據規范化管理尚處于發(fā)展階段,數據和執行過(guò)程質(zhì)量控制不足與臨床研究整體統一規范化要求之間的矛盾尚未充分顯現[ l],這使得試驗數據的解釋和異常數據的驗證往往具有一定的延遲性和局部性,無(wú)謂地增加了數據清理審查周期和試驗結果的不確定性。
電子數據采集系統(electronic data capture,EDC)是一個(gè)適用于臨床試驗數據采集、傳輸和管理的軟件平臺,包括活動(dòng)策劃和用戶(hù)溝通程序。據統計,EDC平均可以同時(shí)篩選81.3%的數據查詢(xún),將整個(gè)試驗的成本降低60%以上[2-3]。自2015年CFDA開(kāi)展藥物臨床試驗自查和2016年發(fā)布《臨床試驗電子數據采集技術(shù)指導原則》以來(lái),標準化的數據采集平臺可對關(guān)鍵數據節點(diǎn)進(jìn)行協(xié)同、有計劃的跟蹤監控。臨床試驗。引起我國醫藥行業(yè)的重視。這項研究采用 eClinicaXY,
1 數據采集平臺架構設計
eClinicaXY是基于GNU LGPL協(xié)議,基于開(kāi)源電子數據采集系統ClinCapture二次編譯開(kāi)發(fā)的藥物臨床試驗數據采集平臺。它集成了臨床數據交換標準聯(lián)盟(CDISC)和電子通用技術(shù)文檔(Electronic Common Technical Document,eCID)等臨床試驗標準化數據結構和操作痕跡快速檢查等技術(shù),并使用SpagoBI作為數據的輔助工具報告和顯示。
eClinicaXY 構建為基于平臺的軟件操作模型(SaaS,軟件即服務(wù))。它采用不同臨床試驗項目共享標準數據結構但具有獨立模式的模式,將不同的試驗項目分配給各個(gè)運行實(shí)例[4],以滿(mǎn)足不同臨床試驗的需要。測試項目方案異構,測試數據均滿(mǎn)足統一報送標準要求。整體數據服務(wù)框架由交互表現層、應用業(yè)務(wù)層和支撐環(huán)境層組成。采用基于B/S的MVC架構模式設計,使用HITP/HITPS作為傳輸協(xié)議,Oracle高可用數據庫作為數據存儲方案。數據采集??平臺采用JQuery+Ajax技術(shù)構建實(shí)時(shí)數據交互系統,通過(guò)頁(yè)面并行請求、異步響應、局部更新等方式在瀏覽器中實(shí)時(shí)跟蹤監控多中心整體測試過(guò)程[5] . 與授權的后端數據庫交互。平臺層次結構圖如圖1所示。
交互表現層:位于系統框架的頂層,采用HTML5、JSP等技術(shù)接收和展示用戶(hù)輸入和自動(dòng)生成的外部數據,為用戶(hù)提供交互的Web界面;
應用業(yè)務(wù)層:位于交互表現層和支撐環(huán)境層之間,負責系統業(yè)務(wù)處理和邏輯功能實(shí)現,根據臨床試驗執行需求,封裝業(yè)務(wù)功能單元并將各功能模塊動(dòng)態(tài)耦合成一個(gè)整體框架,進(jìn)行數據傳輸,映射的作用,同時(shí)具有水平可擴展性[6];
支撐環(huán)境層:位于系統框架的最底層,主要負責支撐數據平臺的穩定運行和數據庫訪(fǎng)問(wèn)。
此外,XML(eXtensibleMarkupLanguage,可擴展標記語(yǔ)言)由于其支持異構數據和語(yǔ)義的自解釋能力而被用于數據存儲和傳輸[7]。利用XML文檔的特性,將其與關(guān)系型數據庫相結合,即可以在不改變原有數據標準結構的情況下,滿(mǎn)足支持異構數據集合彈性擴展的需求。
2 符合相關(guān)法規和行業(yè)標準
目前臨床試驗的設計和實(shí)施大多采用各家公司慣用的方案和數據標準,這使得各試驗項目的執行標準、驗證規則和業(yè)務(wù)數據規范各不相同,導致數據采集
不全、同義數據多樣化表達式[8]。eClinicaXY數據采集平臺采用FDA推薦的標準數據結構和驗證規則作為基礎數據框架,同時(shí)融合了國家藥監部門(mén)的相關(guān)規定和行業(yè)標準要求,確保采集、報送和整個(gè)臨床試驗數據的存儲都是“標準化”、“統一”的。
2.1 臨床數據交換標準(CDISC)
CDISC 標準由臨床數據交換標準協(xié)會(huì )制定,作為臨床試驗數據和元數據交換、提交和存檔的行業(yè)標準。表模型(SDTM)、分析數據模型(ADaM)等部分。CDISC規定了統一的臨床試驗數據框架和元數據[9]。例如AE表示不良事件域,其中包括AETERM(不良事件報告術(shù)語(yǔ))、AEBODSYS(身體系統或器官分類(lèi))、AESER(嚴重不良事件)、AEREL(因果關(guān)系)等固定數據字段,每個(gè)數據字段是七元組(變量名、描述性變量標簽、數據類(lèi)型、受控術(shù)語(yǔ)集或數據格式、變量來(lái)源、變量作用、注釋?zhuān)?。目前,CDISC已被FDA、EMEA等推薦。

2.2 ICH 國際醫學(xué)術(shù)語(yǔ)詞典 (MedDRA) 術(shù)語(yǔ)
MedDRA 術(shù)語(yǔ)集是由 ICH 開(kāi)發(fā)的用于醫療產(chǎn)品文檔編制和安全監測的標準術(shù)語(yǔ)集。常用于藥物臨床試驗中不良事件的標準化編碼,包括五級系統器官分類(lèi)、高級組術(shù)語(yǔ)、高級術(shù)語(yǔ)、首選術(shù)語(yǔ)和低級術(shù)語(yǔ)結構[10]。eClinicaXY 數據采集平臺整合了我
2.3 WHO 藥物編碼詞典 (WHODDE)
WHODDE是世界衛生組織開(kāi)發(fā)的用于編碼、分析和報告臨床試驗中的藥物信息和藥物安全數據的分級藥物編碼系統。eClinicaXY數據采集平臺借鑒了WHO DDE中藥物術(shù)語(yǔ)的命名和編碼,并將其整合到數據庫中,作為受試者聯(lián)合用藥的參考術(shù)語(yǔ)。
此外,eClinicaXY數據采集平臺的建設也符合21CFRPartll中的電子記錄和電子簽名、FDA《計算機系統在臨床試驗中的應用技術(shù)指南》中的數據安全和追溯檢查,以及CFDA“臨床試驗電子數據采集技術(shù)”?!吨笇г瓌t》、《藥物臨床試驗質(zhì)量管理規范》(GCP)和HL7等國家和行業(yè)對電子化臨床試驗的法規要求。
3 數據采集平臺模塊框架
隨著(zhù)信息技術(shù)的進(jìn)步和物聯(lián)網(wǎng)的發(fā)展,臨床電子數據采集已經(jīng)從最初的單一數據庫軟件發(fā)展成為以中心服務(wù)器為核心、智能終端輔助數據采集的多層次網(wǎng)絡(luò )化數據采集系統識別和處理。在此基礎上,根據需要衍生出中央隨機化、交互式網(wǎng)絡(luò )反應(IVRS)、電子蹤跡檢查、定制化報告等功能[11]。eClinicaXY數據采集平臺結合現階段電子化數據采集的主流趨勢,主要收錄
以下功能模塊:
3.1 研究項目/測試中心設計模塊
(1) 可以嚴格設置試驗類(lèi)型、研究項目階段、方案驗證/IRB批準日期、受試者特征等;(2) 可以通過(guò)jQuery語(yǔ)句設置受試者驗證條件,系統會(huì )在每個(gè)受試者入組時(shí)進(jìn)行檢查,自檢是否符合進(jìn)/出條件,避免誤入群;(3)自定義是否允許動(dòng)態(tài)提問(wèn)、SDV查詢(xún)、行政編輯、CRF和文本評價(jià);(4) 通過(guò)用戶(hù)級別、用戶(hù)類(lèi)型、用戶(hù)角色設置多級訪(fǎng)問(wèn)權限,保證用戶(hù)處于滿(mǎn)足功能需求的工作域。
3.2 主題/研究事件分配模塊
(1) 基于Ran第三方接口的受試者隨機化可根據實(shí)驗設計選擇基于盲表的中心/中心隨機化或動(dòng)態(tài)隨機化算法;統計、動(dòng)態(tài)或自定義分組,受試者可根據測試計劃按單組或多組權重得到不同的預測;(3) 根據符合CDSIC數據采集域的eCRF模板文件生成研究事件,將所有研究事件分解為計劃、計劃外和普通三種類(lèi)型,每個(gè)事件分配到相應的隨訪(fǎng)時(shí)間點(diǎn)以形成整體測試流程。
3.3 數據采集與管理模塊
該模塊包括數據提交、數據監控與管理、數據提取三個(gè)部分??梢詫?shí)現(1)根據計劃執行時(shí)間流創(chuàng )建受試者數據錄入列表,根據不同受試者的實(shí)驗階段進(jìn)行時(shí)間點(diǎn)對應操作;(2) 創(chuàng )建MedDRA、WHODDE術(shù)語(yǔ)編碼和兼容的藥物詞典資源,并在測試數據生成時(shí)完成術(shù)語(yǔ)表達標準化;(3) 以XML標準格式編輯數據校驗規則,從數據質(zhì)量和邏輯角度實(shí)時(shí)校驗數據流的可靠性和時(shí)序準確性;(4) 集成源數據驗證(SDV)、標注和查詢(xún)管理,從多角色層面保證測試數據的真實(shí)性、準確性和完整性;
3.4 測試結果上報模塊
(1) 以?xún)x表板和交互圖表的形式實(shí)時(shí)展示各階段研究事件的完成情況和數據分布;(2) 可對接SpagoBI智能商務(wù)BI套件,發(fā)起人和項目主管可以在不導出測試數據的前提下,通過(guò)數據圖表實(shí)時(shí)跟蹤研究項目的進(jìn)度,以及及早發(fā)現試驗異常操作、受試者不良事件、異常數據或異常趨勢的數據;(3) 數據可按需求自定義導出,簡(jiǎn)化統計分析數據的確定和提交數據的整合;(4) 生成多種格式(PDF/SAS/EXCEL/SPSS/TXT)的主題病例報告數據和帶注釋的CRF(annotatedCRF),
4 執行技術(shù)路線(xiàn)
eClinicaXY數據采集平臺以研究事件(如個(gè)體特征、實(shí)驗室檢測等)為數據采集域單元,將整個(gè)臨床試驗分解為時(shí)序性的時(shí)間節點(diǎn)關(guān)鍵點(diǎn),其中研究事件由eCRF模板自動(dòng)生成基于 CDASH 標準的文件。它分為三類(lèi):與時(shí)間相關(guān)的重復事件、與時(shí)間相關(guān)的獨立事件和累積事件。每個(gè)研究事件都伴隨著(zhù)特定的 XML 檢查驗證規則。系統根據臨床試驗執行流程,將各個(gè)研究項目安排到相應的執行時(shí)間點(diǎn),通過(guò)特定的“時(shí)間窗-研究事件”順序組合模式構建電子化臨床試驗流程。
eClinicaXY數據采集平臺臨床試驗實(shí)施技術(shù)路線(xiàn)可分為以下幾個(gè)步驟:(1)項目設置,項目管理員設置研究項目的詳細信息、受試者的進(jìn)入條件和分組、項目參數等. 根據具體的臨床試驗方案,數據管理員根據方案CRF和數據管理計劃編寫(xiě)eCRF源文件和XML數據驗證文件,并以同名配對的形式導入系統。項目管理員將生成的研究事件組合成試執行流程,在系統內通過(guò)技術(shù)測試和小規模驗收后,將研究項目的狀態(tài)設置為“有效”;(2) 受試者被錄取,并且每個(gè)中心都會(huì )將測試人員的信息輸入到系統中。篩選完成后,系統會(huì )根據預先設定的測試類(lèi)型和隨機化方式,自動(dòng)為受試者分配一個(gè)唯一標識符(SUBJID)?!皟?yōu)旭藥包材號”盲聯(lián)的藥號分離方式,保證試驗盲聯(lián)的順利實(shí)施;(3)試驗數據的錄入,研究者或CRC將根據各受試者的試驗進(jìn)度分離產(chǎn)生的研究數據。相應的數據錄入以復式錄入的形式錄入。如果第一次錄入有邏輯錯誤或第二次錄入與第一次錄入不一致時(shí),會(huì )觸發(fā)預設的校驗條件,并在數據保存前提醒操作人員,循環(huán)往復,直到所有數據都通過(guò)驗證。如有疑問(wèn),可隨時(shí)通過(guò)互動(dòng)回復系統向研究人員提問(wèn);(4) 數據導出,當最后一個(gè)受試者完成試驗后仍有疑問(wèn)時(shí),數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,然后分段并由統計程序員重新組裝成統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,由統計程序員將數據切分重組為統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。數據管理員可以根據數據庫鎖定列表鎖定數據庫,按照CDISCODM格式的試驗計劃導出受試者數據,由統計程序員將數據切分重組為統計分析數據集和提交數據集。整體執行技術(shù)路線(xiàn)如圖2所示。
5 優(yōu)勢特點(diǎn)及實(shí)現效果

通過(guò)構建符合國家相關(guān)法規和行業(yè)標準的質(zhì)量控制體系,將整體臨床試驗按計劃劃分節點(diǎn)要素,建立嚴謹一致的驗證文件,不僅可以縮短數據清洗周期,確保測試數據真實(shí)完整。前提下及早發(fā)現異?;蛴挟惓Z厔莸臄祿?當前臨床試驗數據質(zhì)量問(wèn)題主要體現在轉錄錯誤、不完整、安全性不夠、語(yǔ)義表達支離破碎[12]。標準化的數據采集平臺可以最大程度避免上述問(wèn)題,保證ALCOA+數據質(zhì)量控制原則(歸因于易讀性、同步性、原創(chuàng )性、準確性、完整性、
5.1 數據完整性和真實(shí)性驗證
以紙質(zhì)CRF為數據媒介的傳統臨床試驗最大的弊端是只有參與者自覺(jué)遵守GCP指南才能保證試驗數據的完整性和真實(shí)性,無(wú)法對數據及相關(guān)文件的訪(fǎng)問(wèn)和修改進(jìn)行有效檢查并被追蹤。標準化數據采集平臺基于CDISC數據框架建立通用臨床試驗數據模型,最大限度匹配臨床試驗實(shí)際產(chǎn)生的數據與需要提交的標準數據。在此基礎上,結合標準術(shù)語(yǔ)、MedDRA術(shù)語(yǔ)詞典、XSL模板文檔、XML和JQuery驗證規則文件,共同構建一個(gè)比較健壯的橫向數據和縱向數據相結合的eCRF庫,
此外,標準化的數據采集平臺集成了基于身份密碼(IBC)的多級用戶(hù)權限和操作痕跡檢查功能。跡檢業(yè)務(wù)對象模型是一個(gè)六元組A=(U,S,D,R,VB,VA),其中U為操作者,S為操作對象,D為操作日期和時(shí)間,R為操作目的,VB為更新前值,VA為更新后值,保證測試數據性的安全性和可追溯性。
5.2 數據錄入驗證
在藥物臨床試驗中,常有數據錄入錯誤,直到統計分析才發(fā)現,如收縮壓為80mmHg,舒張壓為110nunHg。標準化數據采集平臺的數據校驗功能可以利用數據庫中的函數依賴(lài),進(jìn)一步定制近似函數依賴(lài)作為數據質(zhì)量規則,降低半結構化數據清洗的復雜度[13-14]。
數據校驗的主要對象是數據缺失和冗余、事件數據的邏輯一致性、正常值范圍和臨床意義判斷、隨機化和方案違背等,根據預先設定的XML校驗規則文件,系統進(jìn)行100%校驗在數據錄入初期或標準化代碼映射入庫后,對方案中規定的主要、次要療效指標和關(guān)鍵安全性指標進(jìn)行審核。監測到異常數據后,及時(shí)對具有相應職責和權限的平臺運營(yíng)者進(jìn)行警示和審查,并對異常數據的變化情況進(jìn)行跟蹤分析。
5,3 總體數據自適應決策
臨床試驗有效性和安全性數據流是一組面板數據序列。實(shí)時(shí)數據流在數據庫中被劃分為原創(chuàng )
數據段。標準化映射完成后,根據目標領(lǐng)域固有的統計特征,進(jìn)一步建立描述其整體分布的可視化。同時(shí),它不斷修正當前相關(guān)模型與新采集
的數據段的擬合,并探索統計上顯著(zhù)的事件,以分析臨床試驗的進(jìn)展并識別數據流中的異常和異常值?;貜?。通過(guò)研究人員從專(zhuān)業(yè)角度對異?;蛱囟〞r(shí)間、區間數據進(jìn)行整體對比,趨勢異?;蚺c以往研究數據對比,綜合分析,可以及早發(fā)現療效數據的分布趨勢和安全性數據異常的發(fā)生[15]。在試驗數據標準化整合和全面質(zhì)量控制的總體框架下,對試驗實(shí)施做出科學(xué)嚴謹的適應性決策(如樣本日重估、適應隨機化等),提前采取調整措施在保障受試者權益的同時(shí),全面把控臨床試驗的整體執行質(zhì)量。
6結語(yǔ)
真實(shí)、完整、可追溯的高質(zhì)量臨床研究數據對檢測結果的可靠性和準確性起著(zhù)至關(guān)重要的作用?,F代標準的臨床試驗數據管理不再局限于傳統的簡(jiǎn)單數據錄入,還包括嚴格一致的質(zhì)量控制措施,以確保數據的標準化和準確性[16]。結合CDISC標準數據框架、MedDRA術(shù)語(yǔ)詞典、XML和JQuery數據驗證文件等標準化文件的模型驅動(dòng)架構和需求驅動(dòng)架構的標準化臨床試驗數據采集平臺,不僅具有統一標準化的源數據管理、動(dòng)態(tài)數據編碼聯(lián)動(dòng),具有數據異常實(shí)時(shí)校驗、數據安全生命周期可控等優(yōu)勢,并可在臨床試驗執行過(guò)程中實(shí)現數據誤錄的及時(shí)糾正、異常數據的早期篩查等功能,協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少因質(zhì)量管控問(wèn)題導致的質(zhì)量管控泛化。傳統臨床試驗數據采集模式中采集、編碼、驗證的隔離。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。從而協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少傳統臨床試驗數據采集模式中由于采集、編碼、驗證各自為政造成的質(zhì)量管控普遍化。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。從而協(xié)助藥企優(yōu)化質(zhì)控資源配置,減少傳統臨床試驗數據采集模式中由于采集、編碼、驗證各自為政造成的質(zhì)量管控普遍化。一個(gè)標準化的臨床試驗數據采集平臺,結合協(xié)調的組織環(huán)境、執行流程、人員配置和管控機制,必將成為未來(lái)臨床試驗數據管理的發(fā)展趨勢。
參考
歡迎留言發(fā)表您的看法和意見(jiàn)
生物統計學(xué)/數據管理數據庫/IT職位推薦
北京:
廣州:
上海:
官方數據:基于STM32(HAL庫)的水質(zhì)檢測(渾濁度、PH值、溫度、手機APP顯示、wi
系統將采集到的濁度、PH值、溫度等數據通過(guò)wifi發(fā)送至手機APP,超過(guò)閾值報警。
一、硬件材料清單:
1、STM32C8T6:控制器
2、OLED顯示屏:顯示傳感器采集到的數據
3、PH傳感器:檢測PH值
4. TDS傳感器:檢測濁度
5、DS18B02水溫傳感器:檢測溫度
6. ESP8266:發(fā)送數據到手機
7、蜂鳴器:超閾值報警
二、實(shí)物圖:
3.部分源碼:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//定時(shí)器中斷回調函數
{
HAL_TIM_Base_Stop_IT(&htim2);//停止定時(shí)器中斷
靜態(tài) uint8_t cot = 0;
char temp_a[50] = {0};
字符 humidity_a[20] = {0};
uint16_t ADC_Value,PH_Value1;
雙 ADC_ValueFF,PH_Value;
char charadc[50]={0};
char charph[50]={0};
beep_OFF();//關(guān)閉蜂鳴器
if(flag == 1)//關(guān)燈
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);

}
else // 開(kāi)燈
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
}
如果 (htim == (&htim2))
{
if(cot == 25)//5s發(fā)送心跳包
{
HAL_UART_Transmit(&huart2,(uint8_t *)xtb, 2, 200);//發(fā)送心跳包
cot = 0;//定時(shí)器計數歸0
}
溫度 = DS18B20_Get_Temperature(); //讀取溫度值
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&AD_Value,2); //打開(kāi)DMA
ADC_ValueFF = -865.68*(AD_Value[0]*3.3/4096.0)+3291.3;//通過(guò)公式得到濁度值
PH_Value = AD_Value[1]*3.3/4096; //獲取采集PH值的電壓
PH_Value = -5.9647*PH_Value+22.255; //通過(guò)公式轉換為PH值
如果(PH_Value=14)PH_Value = 14;//PH值大于14修正為14
sprintf(temp_a,"%d.%dC",(int)temperature/10,(((int)temperature)));//將溫度轉換成字符串格式
sprintf(charph,"%.2F",PH_Value); //將PH轉換為字符串格式
sprintf(charadc,"%.2F",ADC_ValueFF); //將濁度轉化為字符串格式
發(fā)布((char*)“temp”,(char*)temp_a);//在手機APP上顯示溫度
釋放((char*)"PH",(char*)charph); //在手機APP上顯示PH值
Release((char*)"濁度",(char*)charadc); //在手機APP上顯示濁度
OLED_ShowString(0,16,(uint8_t *)"temp:",16,1); //在OLED顯示屏上顯示溫度:
OLED_ShowString(40,16,(uint8_t *)temp_a,16,1); //在OLED顯示屏上顯示溫度
OLED_ShowString(0,32,(uint8_t *)"PH:",16,1); //在OLED顯示屏上顯示PH:
OLED_ShowString(40,32,(uint8_t *)charph,16,1); //在OLED顯示屏上顯示pH值

OLED_ShowString(0,48,(uint8_t *)"ZD:",16,1); //在OLED顯示屏上顯示ZD:
OLED_ShowString(40,48,(uint8_t *)charadc,16,1); //在OLED顯示屏上顯示濁度值
OLED_刷新(); //刷新OLED顯示
if((int)(temperature/10)T_MAX)//判斷溫度是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
else if((int)(ADC_ValueFF)TDS_MAX)//判斷濁度是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
否則如果((int)(PH_Value)
PH_MAX)//判斷PH值是否在設定范圍內,蜂鳴器響起
{
beep_On();//蜂鳴器響起
}
else beep_OFF();//不滿(mǎn)足所有條件則關(guān)閉蜂鳴器
cot++;//定時(shí)器計數加1
}
HAL_TIM_Base_Start_IT(&htim2);//啟動(dòng)定時(shí)器
}
4、示意圖:
下面是整個(gè)項目各個(gè)模塊的示意圖:
五。更多的:
如果想更詳細的了解整個(gè)項目,可以去b站觀(guān)看這個(gè)視頻演示,以下是視頻鏈接:
SCM畢業(yè)設計:基于stm32的遠程水質(zhì)檢測_嗶哩嗶哩_bilibili
贈送三重?。?!
解決方案:自動(dòng)機器學(xué)習簡(jiǎn)述(AutoML)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 75 次瀏覽 ? 2022-11-30 00:30
為什么需要自動(dòng)化機器學(xué)習
對于機器學(xué)習的新用戶(hù)來(lái)說(shuō),使用機器學(xué)習算法的一個(gè)主要障礙是算法的性能受到許多設計決策的影響。隨著(zhù)深度學(xué)習的普及,工程師需要選擇相應的神經(jīng)網(wǎng)絡(luò )架構、訓練過(guò)程、正則化方法、超參數等,這些都對算法的性能有很大的影響。因此,深度學(xué)習工程師也被戲稱(chēng)為調參工程師。
自動(dòng)化機器學(xué)習 (AutoML) 的目標是使用自動(dòng)化的、數據驅動(dòng)的方法來(lái)做出上述決策。用戶(hù)只需提供數據,自動(dòng)機器學(xué)習系統將自動(dòng)確定最佳方案。領(lǐng)域專(zhuān)家不再需要為學(xué)習各種機器學(xué)習算法而煩惱。
自動(dòng)機器學(xué)習不僅包括眾所周知的算法選擇、超參數優(yōu)化和神經(jīng)網(wǎng)絡(luò )架構搜索,還涵蓋了機器學(xué)習工作流程的每一步:
超參數優(yōu)化超參數優(yōu)化
學(xué)習器模型中一般有兩類(lèi)參數,一類(lèi)可以從數據中學(xué)習和估計,另一類(lèi)參數不能從數據中估計,只能根據人類(lèi)經(jīng)驗設計和指定,而后者成為超參數。比如支持向量機中的C、Kernal、game;樸素貝葉斯等中的 alpha
超參數優(yōu)化有很多方法:
最常見(jiàn)的類(lèi)型是黑盒功能優(yōu)化。所謂黑盒優(yōu)化,就是將決策網(wǎng)絡(luò )作為黑盒進(jìn)行優(yōu)化,只關(guān)心輸入輸出,而忽略其內部機制。決策網(wǎng)絡(luò )通??梢詤祷?。這時(shí)候我們在優(yōu)化的時(shí)候首先要考慮的就是收斂性。
以下幾類(lèi)方法屬于黑盒優(yōu)化:
在很多情況下,隨機搜索比網(wǎng)格搜索效果更好,但是從上圖我們可以看出,兩者都不能保證找到最優(yōu)解。
黑盒優(yōu)化的一些工具:
由于優(yōu)化目標的不連續和不可微的數學(xué)特性,一些搜索和非梯度優(yōu)化算法被用來(lái)解決這個(gè)問(wèn)題,包括我們上面提到的黑盒算法。此類(lèi)算法通過(guò)抽樣和抽樣的評價(jià)進(jìn)行搜索,往往需要對抽樣進(jìn)行大量的評價(jià)才能獲得較好的結果。然而,自動(dòng)機器學(xué)習任務(wù)中的評估通常是通過(guò) k 折交叉驗證獲得的。在具有大數據集的機器學(xué)習任務(wù)上,獲得評估的時(shí)間成本是巨大的。這也會(huì )影響優(yōu)化算法在自動(dòng)機器學(xué)習問(wèn)題上的效果。因此,一些降低評估成本的方法被提出,其中多保真度優(yōu)化(multi-fidelity methods)就是其中之一。
此外,一些研究基于梯度下降優(yōu)化。
超參數優(yōu)化面臨許多挑戰:
相關(guān)參考
元學(xué)習 元學(xué)習
元學(xué)習也是“學(xué)習如何學(xué)習”。通過(guò)系統地觀(guān)察現有學(xué)習任務(wù)之間的性能差異,進(jìn)而學(xué)習現有的經(jīng)驗和元數據,可以用來(lái)更好地執行新的學(xué)習任務(wù)。這樣做可以極大地改進(jìn)機器學(xué)習流水線(xiàn)或神經(jīng)網(wǎng)絡(luò )架構的設計,也可以以數據驅動(dòng)的方式取代手工車(chē)間式的算法工程工作。
從某種意義上說(shuō),元學(xué)習涵蓋了超參數優(yōu)化,因為元數據學(xué)習包括:超參數、管道組成、神經(jīng)網(wǎng)絡(luò )架構、模型組成、元特征等。
機器學(xué)習的算法也稱(chēng)為“學(xué)習者”。學(xué)習者假設一個(gè)模型有很多未知參數,使用訓練數據和優(yōu)化算法找到最適合這些訓練數據的參數,并生成一個(gè)新的算法,或者一個(gè)參數已知的模型并使用模型/算法預測新的未知數據。如果世界上只有一個(gè)模型,那么問(wèn)題就簡(jiǎn)單了。問(wèn)題是模型很多,不同的模型有不同的超參數。我們經(jīng)常將模型和算法組裝在一起,形成復合模型和機器學(xué)習管道。這 時(shí)不時(shí)地,我需要知道構建哪些不同的模型來(lái)解決不同的問(wèn)題。元學(xué)習就在這個(gè)時(shí)候。我們可以考慮超參數、管道、和神經(jīng)網(wǎng)絡(luò )架構作為新模型的未知參數,并將不同學(xué)習任務(wù)的性能指標作為輸入數據,以便我們可以使用優(yōu)化算法找到性能最佳的參數集。這個(gè)模式是可以一直嵌套的,也就是說(shuō),你可以有'元-元-元-學(xué)習',當然希望你不要走得太遠,找不到回頭路。
元學(xué)習的方法包括:
元學(xué)習的一大挑戰是用很少的訓練數據學(xué)習一個(gè)復雜的模型,這是一個(gè)one-shot或few-shot的問(wèn)題。
就像人類(lèi)的學(xué)習一樣,每次學(xué)習,無(wú)論成敗,都會(huì )獲得一定的經(jīng)驗,而人類(lèi)很少從頭開(kāi)始學(xué)習。在構建自動(dòng)學(xué)習時(shí),我們還應該充分利用現有的每一個(gè)學(xué)習經(jīng)驗,并逐步改進(jìn)它,使新的學(xué)習更加有效。
相關(guān)參考:
神經(jīng)架構搜索 神經(jīng)架構搜索
說(shuō)到 AutoML,大多數人都知道這個(gè)故事是因為 Google 的 AutoML 系統。隨著(zhù)深度學(xué)習的普及,神經(jīng)網(wǎng)絡(luò )的架構變得越來(lái)越復雜,隨之而來(lái)的人工工程也越來(lái)越多。神經(jīng)網(wǎng)絡(luò )架構搜索就是為了解決這個(gè)問(wèn)題而設計的。
NAS主要由三部分組成:
相關(guān)參考
自動(dòng)化特征工程
自動(dòng)化特征工程可以幫助數據科學(xué)家根據數據集自動(dòng)創(chuàng )建用于訓練的最佳特征。
Featuretools 是一個(gè)用于自動(dòng)化特征工程的開(kāi)源庫。這是一個(gè)很棒的工具,旨在加快特征生成過(guò)程,讓您有時(shí)間專(zhuān)注于構建機器學(xué)習模型的其他方面。換句話(huà)說(shuō),它將您的數據置于“等待機器學(xué)習”狀態(tài)。
Featuretools 包中收錄
三個(gè)主要組件:
參考:
其他自動(dòng)化機器學(xué)習工具集
這里有一些開(kāi)源的自動(dòng)化機器學(xué)習工具供大家參考和選擇。
參考:
解決方案:初級電商,如何通過(guò)策略快速擴充電商詞庫以及后續運用
好久沒(méi)有更新了,我會(huì )一如既往的繼續分享一些電商搜索推薦的實(shí)用知識。畢竟,紙上談兵不是長(cháng)久之計。每個(gè)公司對自己電商平臺的搜索和推薦需求,以及現狀,差異太大。結果,我熟悉的套路無(wú)法完美地轉移到新的工作操作計劃中。這也給了我一些不同的想法,搜索和構建不適用的解決方案。接下來(lái)我們就來(lái)看看電商新手詞庫策略如何快速擴充,以及以后如何應用到電商領(lǐng)域。
按照我之前的想法,如果一個(gè)新的電子商務(wù)公司剛剛起步,在搜索中缺少特定的詞庫,如何創(chuàng )建它是一個(gè)難題。目前,我正在尋找一些聲稱(chēng)在網(wǎng)站上擁有完整電子商務(wù)詞典的付費供應商。但是評價(jià)都是低的,評價(jià)不靠譜,不是數量少就是質(zhì)量很差。如果沒(méi)有用戶(hù)的基本搜索詞庫,可以從自己的產(chǎn)品庫中的產(chǎn)品名稱(chēng)進(jìn)行詞頻統計進(jìn)行批量n-gram分詞處理,然后通過(guò)簡(jiǎn)單的tf-idf策略進(jìn)行品類(lèi)對應篩選. 當然也可以進(jìn)行人工點(diǎn)檢,但是這樣會(huì )消耗更多的人工成本。
如果你有用戶(hù)搜索的基本關(guān)鍵詞詞庫,這些詞的搜索數據分布不均,錯別字較多。如果能采集
到10000+左右的單詞,可以進(jìn)行如下操作:
可以直接用已有的詞庫對沖京東/淘寶,可以得到這些詞的聯(lián)想詞和熱詞,還有錯別字。只需要開(kāi)發(fā)寫(xiě)一個(gè)爬蟲(chóng),目前估計詞庫的規??梢粤⒖虜U大30倍。如果沒(méi)有爬蟲(chóng)人員,可以采用人工標注的方式完成操作,每周需要2個(gè)人左右完成,簡(jiǎn)單的Excel復制粘貼即可。
以上操作需要注意幾個(gè)問(wèn)題:
初始詞典需要限制字符數。一般初始詞庫只需要有1-7個(gè)字數,即最多7個(gè)漢字,最多14個(gè)數字/英文字符,因為如果字符太長(cháng),可能不會(huì )能帶出聯(lián)想詞。而且用戶(hù)不會(huì )主動(dòng)輸入太長(cháng)的關(guān)鍵詞。爬蟲(chóng)需要注意規避法律風(fēng)險。目前,京東無(wú)需登錄即可在其網(wǎng)頁(yè)上獲取關(guān)鍵詞,而淘寶則需要登錄才能操作。很容易觸發(fā)反爬蟲(chóng)機制??梢赃x擇幾個(gè)電商平臺進(jìn)行操作,最后合并去重。
拿到關(guān)鍵詞詞庫后,其實(shí)就可以開(kāi)始篩選數據了。對于相關(guān)的關(guān)鍵詞對,進(jìn)行敏感詞過(guò)濾、黑名單過(guò)濾等,不進(jìn)行結果過(guò)濾。然后它可以直接在自己相關(guān)的 關(guān)鍵詞 推薦和演示中重復使用。也可以重復使用在熱詞的個(gè)性化展示中。關(guān)聯(lián)詞也可以使用相同的過(guò)濾邏輯。過(guò)濾后直接導入詞庫,戰略產(chǎn)品可以根據自己的需要對聯(lián)想詞進(jìn)行排序。一般左匹配、收錄
匹配、相關(guān)模糊匹配等都可以作為策略參考。在排序方面,可以用use-usage排序:即哪個(gè)詞的使用率越高,就越高等(因為比較簡(jiǎn)單)。
這些擴展的詞庫也可以用作用戶(hù)標簽。在前期沒(méi)有任何用戶(hù)行為數據的情況下,可以對外推廣這些詞庫:比如熱詞、聯(lián)想詞、默認詞、相關(guān)關(guān)鍵詞等。吸引用戶(hù)點(diǎn)擊,作為用戶(hù)行為畫(huà)像的基礎標簽,商品推薦模塊的素材等。對于前期沒(méi)有在算法上投入的電商來(lái)說(shuō),無(wú)疑是一種比較劃算的操作。如果算法人力不多,也可以把這些關(guān)鍵詞和商品信息對沖,獲取關(guān)鍵詞和商品的向量關(guān)系等。
當然,以上方案僅供參考,并非完美方案。它還收錄
許多風(fēng)險,例如合規風(fēng)險等,并不適用于所有電子商務(wù)場(chǎng)景。 查看全部
解決方案:自動(dòng)機器學(xué)習簡(jiǎn)述(AutoML)
為什么需要自動(dòng)化機器學(xué)習
對于機器學(xué)習的新用戶(hù)來(lái)說(shuō),使用機器學(xué)習算法的一個(gè)主要障礙是算法的性能受到許多設計決策的影響。隨著(zhù)深度學(xué)習的普及,工程師需要選擇相應的神經(jīng)網(wǎng)絡(luò )架構、訓練過(guò)程、正則化方法、超參數等,這些都對算法的性能有很大的影響。因此,深度學(xué)習工程師也被戲稱(chēng)為調參工程師。
自動(dòng)化機器學(xué)習 (AutoML) 的目標是使用自動(dòng)化的、數據驅動(dòng)的方法來(lái)做出上述決策。用戶(hù)只需提供數據,自動(dòng)機器學(xué)習系統將自動(dòng)確定最佳方案。領(lǐng)域專(zhuān)家不再需要為學(xué)習各種機器學(xué)習算法而煩惱。
自動(dòng)機器學(xué)習不僅包括眾所周知的算法選擇、超參數優(yōu)化和神經(jīng)網(wǎng)絡(luò )架構搜索,還涵蓋了機器學(xué)習工作流程的每一步:
超參數優(yōu)化超參數優(yōu)化
學(xué)習器模型中一般有兩類(lèi)參數,一類(lèi)可以從數據中學(xué)習和估計,另一類(lèi)參數不能從數據中估計,只能根據人類(lèi)經(jīng)驗設計和指定,而后者成為超參數。比如支持向量機中的C、Kernal、game;樸素貝葉斯等中的 alpha
超參數優(yōu)化有很多方法:
最常見(jiàn)的類(lèi)型是黑盒功能優(yōu)化。所謂黑盒優(yōu)化,就是將決策網(wǎng)絡(luò )作為黑盒進(jìn)行優(yōu)化,只關(guān)心輸入輸出,而忽略其內部機制。決策網(wǎng)絡(luò )通??梢詤祷?。這時(shí)候我們在優(yōu)化的時(shí)候首先要考慮的就是收斂性。
以下幾類(lèi)方法屬于黑盒優(yōu)化:
在很多情況下,隨機搜索比網(wǎng)格搜索效果更好,但是從上圖我們可以看出,兩者都不能保證找到最優(yōu)解。
黑盒優(yōu)化的一些工具:

由于優(yōu)化目標的不連續和不可微的數學(xué)特性,一些搜索和非梯度優(yōu)化算法被用來(lái)解決這個(gè)問(wèn)題,包括我們上面提到的黑盒算法。此類(lèi)算法通過(guò)抽樣和抽樣的評價(jià)進(jìn)行搜索,往往需要對抽樣進(jìn)行大量的評價(jià)才能獲得較好的結果。然而,自動(dòng)機器學(xué)習任務(wù)中的評估通常是通過(guò) k 折交叉驗證獲得的。在具有大數據集的機器學(xué)習任務(wù)上,獲得評估的時(shí)間成本是巨大的。這也會(huì )影響優(yōu)化算法在自動(dòng)機器學(xué)習問(wèn)題上的效果。因此,一些降低評估成本的方法被提出,其中多保真度優(yōu)化(multi-fidelity methods)就是其中之一。
此外,一些研究基于梯度下降優(yōu)化。
超參數優(yōu)化面臨許多挑戰:
相關(guān)參考
元學(xué)習 元學(xué)習
元學(xué)習也是“學(xué)習如何學(xué)習”。通過(guò)系統地觀(guān)察現有學(xué)習任務(wù)之間的性能差異,進(jìn)而學(xué)習現有的經(jīng)驗和元數據,可以用來(lái)更好地執行新的學(xué)習任務(wù)。這樣做可以極大地改進(jìn)機器學(xué)習流水線(xiàn)或神經(jīng)網(wǎng)絡(luò )架構的設計,也可以以數據驅動(dòng)的方式取代手工車(chē)間式的算法工程工作。
從某種意義上說(shuō),元學(xué)習涵蓋了超參數優(yōu)化,因為元數據學(xué)習包括:超參數、管道組成、神經(jīng)網(wǎng)絡(luò )架構、模型組成、元特征等。
機器學(xué)習的算法也稱(chēng)為“學(xué)習者”。學(xué)習者假設一個(gè)模型有很多未知參數,使用訓練數據和優(yōu)化算法找到最適合這些訓練數據的參數,并生成一個(gè)新的算法,或者一個(gè)參數已知的模型并使用模型/算法預測新的未知數據。如果世界上只有一個(gè)模型,那么問(wèn)題就簡(jiǎn)單了。問(wèn)題是模型很多,不同的模型有不同的超參數。我們經(jīng)常將模型和算法組裝在一起,形成復合模型和機器學(xué)習管道。這 時(shí)不時(shí)地,我需要知道構建哪些不同的模型來(lái)解決不同的問(wèn)題。元學(xué)習就在這個(gè)時(shí)候。我們可以考慮超參數、管道、和神經(jīng)網(wǎng)絡(luò )架構作為新模型的未知參數,并將不同學(xué)習任務(wù)的性能指標作為輸入數據,以便我們可以使用優(yōu)化算法找到性能最佳的參數集。這個(gè)模式是可以一直嵌套的,也就是說(shuō),你可以有'元-元-元-學(xué)習',當然希望你不要走得太遠,找不到回頭路。
元學(xué)習的方法包括:
元學(xué)習的一大挑戰是用很少的訓練數據學(xué)習一個(gè)復雜的模型,這是一個(gè)one-shot或few-shot的問(wèn)題。
就像人類(lèi)的學(xué)習一樣,每次學(xué)習,無(wú)論成敗,都會(huì )獲得一定的經(jīng)驗,而人類(lèi)很少從頭開(kāi)始學(xué)習。在構建自動(dòng)學(xué)習時(shí),我們還應該充分利用現有的每一個(gè)學(xué)習經(jīng)驗,并逐步改進(jìn)它,使新的學(xué)習更加有效。
相關(guān)參考:
神經(jīng)架構搜索 神經(jīng)架構搜索

說(shuō)到 AutoML,大多數人都知道這個(gè)故事是因為 Google 的 AutoML 系統。隨著(zhù)深度學(xué)習的普及,神經(jīng)網(wǎng)絡(luò )的架構變得越來(lái)越復雜,隨之而來(lái)的人工工程也越來(lái)越多。神經(jīng)網(wǎng)絡(luò )架構搜索就是為了解決這個(gè)問(wèn)題而設計的。
NAS主要由三部分組成:
相關(guān)參考
自動(dòng)化特征工程
自動(dòng)化特征工程可以幫助數據科學(xué)家根據數據集自動(dòng)創(chuàng )建用于訓練的最佳特征。
Featuretools 是一個(gè)用于自動(dòng)化特征工程的開(kāi)源庫。這是一個(gè)很棒的工具,旨在加快特征生成過(guò)程,讓您有時(shí)間專(zhuān)注于構建機器學(xué)習模型的其他方面。換句話(huà)說(shuō),它將您的數據置于“等待機器學(xué)習”狀態(tài)。
Featuretools 包中收錄
三個(gè)主要組件:
參考:
其他自動(dòng)化機器學(xué)習工具集
這里有一些開(kāi)源的自動(dòng)化機器學(xué)習工具供大家參考和選擇。
參考:
解決方案:初級電商,如何通過(guò)策略快速擴充電商詞庫以及后續運用
好久沒(méi)有更新了,我會(huì )一如既往的繼續分享一些電商搜索推薦的實(shí)用知識。畢竟,紙上談兵不是長(cháng)久之計。每個(gè)公司對自己電商平臺的搜索和推薦需求,以及現狀,差異太大。結果,我熟悉的套路無(wú)法完美地轉移到新的工作操作計劃中。這也給了我一些不同的想法,搜索和構建不適用的解決方案。接下來(lái)我們就來(lái)看看電商新手詞庫策略如何快速擴充,以及以后如何應用到電商領(lǐng)域。
按照我之前的想法,如果一個(gè)新的電子商務(wù)公司剛剛起步,在搜索中缺少特定的詞庫,如何創(chuàng )建它是一個(gè)難題。目前,我正在尋找一些聲稱(chēng)在網(wǎng)站上擁有完整電子商務(wù)詞典的付費供應商。但是評價(jià)都是低的,評價(jià)不靠譜,不是數量少就是質(zhì)量很差。如果沒(méi)有用戶(hù)的基本搜索詞庫,可以從自己的產(chǎn)品庫中的產(chǎn)品名稱(chēng)進(jìn)行詞頻統計進(jìn)行批量n-gram分詞處理,然后通過(guò)簡(jiǎn)單的tf-idf策略進(jìn)行品類(lèi)對應篩選. 當然也可以進(jìn)行人工點(diǎn)檢,但是這樣會(huì )消耗更多的人工成本。
如果你有用戶(hù)搜索的基本關(guān)鍵詞詞庫,這些詞的搜索數據分布不均,錯別字較多。如果能采集
到10000+左右的單詞,可以進(jìn)行如下操作:

可以直接用已有的詞庫對沖京東/淘寶,可以得到這些詞的聯(lián)想詞和熱詞,還有錯別字。只需要開(kāi)發(fā)寫(xiě)一個(gè)爬蟲(chóng),目前估計詞庫的規??梢粤⒖虜U大30倍。如果沒(méi)有爬蟲(chóng)人員,可以采用人工標注的方式完成操作,每周需要2個(gè)人左右完成,簡(jiǎn)單的Excel復制粘貼即可。
以上操作需要注意幾個(gè)問(wèn)題:
初始詞典需要限制字符數。一般初始詞庫只需要有1-7個(gè)字數,即最多7個(gè)漢字,最多14個(gè)數字/英文字符,因為如果字符太長(cháng),可能不會(huì )能帶出聯(lián)想詞。而且用戶(hù)不會(huì )主動(dòng)輸入太長(cháng)的關(guān)鍵詞。爬蟲(chóng)需要注意規避法律風(fēng)險。目前,京東無(wú)需登錄即可在其網(wǎng)頁(yè)上獲取關(guān)鍵詞,而淘寶則需要登錄才能操作。很容易觸發(fā)反爬蟲(chóng)機制??梢赃x擇幾個(gè)電商平臺進(jìn)行操作,最后合并去重。

拿到關(guān)鍵詞詞庫后,其實(shí)就可以開(kāi)始篩選數據了。對于相關(guān)的關(guān)鍵詞對,進(jìn)行敏感詞過(guò)濾、黑名單過(guò)濾等,不進(jìn)行結果過(guò)濾。然后它可以直接在自己相關(guān)的 關(guān)鍵詞 推薦和演示中重復使用。也可以重復使用在熱詞的個(gè)性化展示中。關(guān)聯(lián)詞也可以使用相同的過(guò)濾邏輯。過(guò)濾后直接導入詞庫,戰略產(chǎn)品可以根據自己的需要對聯(lián)想詞進(jìn)行排序。一般左匹配、收錄
匹配、相關(guān)模糊匹配等都可以作為策略參考。在排序方面,可以用use-usage排序:即哪個(gè)詞的使用率越高,就越高等(因為比較簡(jiǎn)單)。
這些擴展的詞庫也可以用作用戶(hù)標簽。在前期沒(méi)有任何用戶(hù)行為數據的情況下,可以對外推廣這些詞庫:比如熱詞、聯(lián)想詞、默認詞、相關(guān)關(guān)鍵詞等。吸引用戶(hù)點(diǎn)擊,作為用戶(hù)行為畫(huà)像的基礎標簽,商品推薦模塊的素材等。對于前期沒(méi)有在算法上投入的電商來(lái)說(shuō),無(wú)疑是一種比較劃算的操作。如果算法人力不多,也可以把這些關(guān)鍵詞和商品信息對沖,獲取關(guān)鍵詞和商品的向量關(guān)系等。
當然,以上方案僅供參考,并非完美方案。它還收錄
許多風(fēng)險,例如合規風(fēng)險等,并不適用于所有電子商務(wù)場(chǎng)景。
解決方案:Simulink與自動(dòng)駕駛(ADAS)算法的開(kāi)發(fā)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2022-11-29 23:42
點(diǎn)擊上方藍字,您的關(guān)注就是對我最大的鼓勵!
美國大選已經(jīng)落下帷幕。不知道白哥對我們Matlab/Simulink是什么態(tài)度,是繼續禁,還是?其實(shí)我還是支持的,繼續禁用。只有這樣才能激發(fā)我們的自主創(chuàng )新能力,您怎么看?哈哈哈!
好久沒(méi)更新了 一直忙這忙那,還沒(méi)有靜下心來(lái)總結這些東西。這次聊一個(gè)高端的話(huà)題---自動(dòng)駕駛,閑聊,總結一下最近的一些學(xué)習工作,Simulink在自動(dòng)駕駛的發(fā)展過(guò)程中是如何存在的?話(huà)不多說(shuō),開(kāi)始說(shuō)吧!自動(dòng)駕駛軟件開(kāi)發(fā)的基本架構逃不開(kāi)我們常說(shuō)的三大法寶,感知---決策(規劃)---執行(控制),這三個(gè)內容,軟件開(kāi)發(fā)的基本思路是不一樣的,聽(tīng)聽(tīng)本的解說(shuō)!
感知:雷達的感知大部分是通過(guò)傅里葉變換等算法對具有多普勒效應的脈沖波信號進(jìn)行處理。目前主流是使用C作為代碼。雷達有很多種。這個(gè)算法僅限于毫米波雷達,激光雷達不懂。
大多數相機對應的是圖像處理。雖然Simulink目前已經(jīng)收錄
了相應的圖像處理算法模型,但是這些算法模型只是對大家寫(xiě)論文有用,容易出結果,容易仿真!然而,大多數實(shí)際算法都是與 OpenCV 和 C++ 一起使用的。
慣性導航和 GPS 中的算法是另一類(lèi)。Simulink 涉及的不多。輪速和車(chē)身姿態(tài)大多來(lái)源于ESC,EPS,這些對應的模塊!
綜上所述,Simulink在感知層面用的不多。Decision-making:L3以上的層級,由于有地圖的參與,我們稱(chēng)之為規劃,L3以下的層級大部分稱(chēng)為決策層,即融合多個(gè)目標源進(jìn)行決策.
融合算法目前大部分在雷達和攝像頭,但有走向獨立和向域控制器靠攏的趨勢,相當一部分算法軟在里面。軟件開(kāi)發(fā)雖然說(shuō)是用Simulink開(kāi)發(fā),但是很多都是用C和C++開(kāi)發(fā)的,尤其是多維目標跟蹤融合!執行(控制):執行分為橫向控制域和縱向控制。橫向控制主要是和EPS交互角度和力矩??v控主要與動(dòng)力總成和底盤(pán)進(jìn)行交互,交互的核心是加速和制動(dòng)的需求。
這些控制邏輯,通俗的說(shuō)就是簡(jiǎn)單的門(mén)控邏輯,大部分是OR,AND,NOT的邏輯,這些都是Simulink的強項,所以相關(guān)邏輯的執行都是用Simulink開(kāi)發(fā),然后自動(dòng)生成代碼,終于軟了!
綜上所述,目前Simulink對自動(dòng)駕駛的支持其實(shí)還不是很廣泛。大多側重于功能的控制,其他相關(guān)圖像,以及雷達算法的應用。他們中的大多數還處于寫(xiě)論文的階段??偨Y如下,呵呵!
目前從事自動(dòng)駕駛算法開(kāi)發(fā),Simulink中有很多對應的庫文件和例子可以參考。下圖所示的庫文件可以直接使用。
還有對應的示例文件,點(diǎn)Help自己學(xué)習就好了,應該問(wèn)題不大。
然后說(shuō)說(shuō)相應的算法生成和集成!至于所謂的可以做融合和感知算法的Simulink,我不能否認,但是實(shí)踐是檢驗真理的唯一標準,現在在實(shí)際項目中還是很少用到!
但是,當你在開(kāi)發(fā)某個(gè)功能時(shí),如何進(jìn)行前期驗證呢?如何建立一個(gè)模擬感知算法,如何建立一個(gè)模擬融合算法,如何在前期驗證你的功能算法,這就需要我們的大殺器出來(lái)了!這兩個(gè)東西是ADAS系統開(kāi)發(fā)的主角,因為真正的功能開(kāi)發(fā)肯定沒(méi)有發(fā)動(dòng)機和變速箱那么復雜,但是ADAS系統的數據量和仿真要求遠大于其他系統,因為這個(gè)東西不模擬,直接測試太貴了!
ADAS系統是一個(gè)非常復雜的東西。在開(kāi)發(fā)初期,如果使用特定階段或特定場(chǎng)景的驗證,使用實(shí)車(chē)成本太高,不切實(shí)際!所以我們前期做場(chǎng)景驗證的時(shí)候,如果后面問(wèn)題重現,就需要我們的大殺器Simulink了!尤其是L3、L4級別的功能,必須要有這個(gè)大殺器才能完成百萬(wàn)公里的驗證。ADAS系統仿真與驗證 在Simulink環(huán)境中建立仿真環(huán)境,進(jìn)行算法驗證與開(kāi)發(fā)。目前Simulink集成了Driving Scenario Designer的庫。這個(gè)庫可以完成場(chǎng)景的規劃和定義,如下圖:
場(chǎng)景建模完成后,Matab可以將其轉換成Mat文件(類(lèi)似自動(dòng)代碼生成的S-function格式),然后導入到Simulink環(huán)境中,添加相應的傳感器模型,進(jìn)行open-循環(huán)和閉環(huán)模擬!如下圖開(kāi)環(huán)仿真來(lái)驗證對應的融合算法!
閉環(huán)仿真增加了車(chē)輛動(dòng)力學(xué)和相應的路徑設計。把它變成一個(gè)閉環(huán)來(lái)驗證相應的功能算法,比如ACC、AEB、TJA等功能。這兩個(gè)就是我們所說(shuō)的SIL,軟件在環(huán)仿真的學(xué)術(shù)定義!
當設計這些場(chǎng)景和算法時(shí),需要對其進(jìn)行測試。測試工具和方法與前面提到的代碼自動(dòng)生成測試方法相同。Simulink 的測試管理器可用于執行動(dòng)態(tài)測試用例和靜態(tài)代碼。覆蓋測試,如下圖,和基本的測試方法是一樣的!
以上都是形式化的算法驗證流程,適用于基礎功能開(kāi)發(fā),但目前大多用于面向應用的項目中。面向應用的項目主要測試工作是采集道路數據,然后進(jìn)行驗證,比較符合實(shí)際。它是可靠的,并且在建立仿真模型時(shí)也省去了很多工作。省錢(qián)又高效!哈哈哈。
中國貼牌的傳統做法。具體操作方法同上!通過(guò)導入場(chǎng)景數據,可以驗證具體的傳感器算法,通過(guò)導入目標列表數據,可以驗證具體的功能算法,如下圖!
設計、仿真、測試,這個(gè)閉環(huán)形成了ADSA算法的開(kāi)發(fā)和驗證,展示了Simulink軟件的NB:
ADAS數據處理
在實(shí)際測試驗證的過(guò)程中,會(huì )采集到大量的數據,比如攝像頭圖像數據、雷達數據、車(chē)道檢測數據、激光雷達數據、慣性測量單元數據等,這些結果如何處理?如何標記真值?
Simulink中的ADST工具箱收錄
了相應的函數,然后就可以說(shuō)說(shuō)相應的圖像數據,分析后的目標列表,統一用一個(gè)圖表來(lái)展示分析,進(jìn)行我們所謂的真值標定,然后可視化,就是比我們的好 肉眼看,比NB還要多,請參考下圖!
在做可視化時(shí),Simulink可以在同一屏幕上轉換車(chē)輛坐標系和圖像坐標系,從而繪制出不同的點(diǎn)云數據,便于傳感器信號的分析和驗證。
小才小學(xué),這些總結僅供朋友參考,啟發(fā)大家,大家一起學(xué)習吧!ADSA系統的算法研究猶如星辰大海。只要抓住一顆閃亮的星星,你就可以在智慧的潮汐中屹立于橋上,成為潮汐中的潮人。一起學(xué)習,一起進(jìn)步,一起征服燦爛的星海!
學(xué)無(wú)止境,深入淺出,細細研讀,必成大器!分享給有志之士!
解決方案:使用樹(shù)莓派3B+開(kāi)發(fā)智能音樂(lè )播放器(續---加入自動(dòng)喚醒功能)
下次預定。. .
上次講到給智能音樂(lè )播放器增加語(yǔ)音喚醒功能。我google了一下相關(guān)資料。目前有百度AI、科大訊飛、谷歌、snowboy。最簡(jiǎn)單的大概就是snowboy了。去github下載源碼,然后去官網(wǎng)查看相關(guān)說(shuō)明。注意下載的源碼中有四個(gè)demo。四個(gè)源碼最好都看一遍,可以解決大部分應用問(wèn)題。
我這里用demo.py這個(gè)框架就夠了。其次最重要的是登錄snowboy官網(wǎng)注冊用戶(hù)(需要用谷歌賬號登錄),然后錄制自己的個(gè)性化喚醒詞(例如:你好小愛(ài)),下載您記錄的喚醒詞文件 pmdl 作為程序運行的參數 (python3 demo.py XXX.pmdl)。
好了,我們直接上代碼:
# -*- coding: utf-8 -*-
from aip import AipSpeech #百度語(yǔ)音識別庫
import pyaudio #麥克風(fēng)聲音采集庫
import wave
import requests,json #音樂(lè )搜索
import pygame #mp3播放
import snowboydecoder
import sys
import signal
import os
import time
import sys
interrupted = False
""" 我的 APPID AK SK """
APP_ID = 'xxxxxxxxx'
API_KEY = 'xxxxxxxxxxxxxx'
SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
#定義采集聲音文件參數
CHUNK = 1024
FORMAT = pyaudio.paInt16 #16位采集
CHANNELS = 1 #單聲道
RATE = 16000 #采樣率
RECORD_SECONDS = 9 #采樣時(shí)長(cháng) 定義為9秒的錄音
WAVE_OUTPUT_FILENAME = "./myvoice.pcm" #采集聲音文件存儲路徑
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
#獲取下載地址
def get_down_url(songid):
req=requests.get("http://tingapi.ting.baidu.com/ ... ot%3B %songid)
req.encoding='utf-8'
#print(json.loads(req.text))
json1=json.loads(req.text.replace("jQuery17206073972467458864_1511011710426(","").replace(");",""))
print("下載地址:",json1["bitrate"]['show_link'])
return json1["bitrate"]['show_link']
#下載保存文件
def music_down(url,music_name,artistname):
f=open(music_name+'-'+artistname+'.mp3','wb')
req_mp3=requests.get(url)
f.write(req_mp3.content)
f.close()
#調用百度AI,將文字轉化為聲音輸出,用于提示音
def word_to_voice(text):
result = client.synthesis(text, 'zh', 1, {
'vol': 5, 'spd': 3, 'per': 3})
if not isinstance(result, dict):
with open('./audio.mp3', 'wb') as f:
f.write(result)
f.close()
pygame.mixer.music.load('./audio.mp3')#text文字轉化的語(yǔ)音文件
<p>
pygame.mixer.music.play(loops=0)
while pygame.mixer.music.get_busy() == True:
print('waiting')
def word_to_voice1(text):
result = client.synthesis(text, 'zh', 1, {
'vol': 5, 'spd': 3, 'per': 3})
if not isinstance(result, dict):
with open('./audio1.mp3', 'wb') as f:
f.write(result)
f.close()
pygame.mixer.music.load('./audio1.mp3')
pygame.mixer.music.play(loops=0)
while pygame.mixer.music.get_busy() == True:
print('waiting')
#獲得麥克風(fēng)輸入的聲音文件,保存在myvoice.pcm
def get_mic_voice_file(p):
word_to_voice('請說(shuō)出歌名')
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
#p.terminate()#這里先不使用p.terminate(),否則 p = pyaudio.PyAudio()將失效,還得重新初始化。
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
print('recording finished')
#百度語(yǔ)音識別出歌名文字并返回
def baidu_get_song_name(client):
results = client.asr(get_file_content(WAVE_OUTPUT_FILENAME), 'pcm', 16000, { 'dev_pid': 1536, })
# print(results['result'])
song_name=results['result'][0]
print(song_name)
return song_name
#百度音樂(lè )下載歌曲
def download_music_file(song_name):
req_url = "http://sug.music.baidu.com/inf ... ot%3B % song_name
req_so = requests.get(req_url)
data = json.loads(req_so.text.replace("window.baidu.sug(", "").replace(");", ""))
for i in data["data"]["song"]:
print("\tsongid:" + str(i["songid"]), "音樂(lè )名字:" + i["songname"], "\t歌手:" + i["artistname"])
input_songid = data["data"]["song"][0]["songid"] # input("請輸入你要下載的songid:")
for i in data["data"]["song"]:
if input_songid == str(i["songid"]):
url = get_down_url(i["songid"])
music_down(url, i["songname"], i["artistname"])
print("下載完成")
music_name = i['songname'] # 獲取MP3文件中的歌曲名
artistname = i["artistname"] # 獲取MP3文件中的歌手名
filename = './' + music_name + '-' + artistname + '.mp3'
print(filename)
word_to_voice1('請欣賞')
return filename
def play_mp3(music_file):
pygame.mixer.music.load(music_file)
'''while True:
# 檢查音樂(lè )流播放,有返回True,沒(méi)有返回False
# 如果一直有音樂(lè )流則選擇播放
if pygame.mixer.music.get_busy() == False:
pygame.mixer.music.play()'''
pygame.mixer.music.play(loops=0) #該函數運行后立即返回,音樂(lè )一直在后臺運行
def one_time_process(p,detector):#一次麥克采樣+語(yǔ)音識別+音樂(lè )下載+自動(dòng)播放
detector.terminate() #該條代碼很重要,因為detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)已經(jīng)在內部使用pyaudio庫獲取了MIC的權限,如果我們再次魯莽的使用pyaudio,將造成程序出錯
get_mic_voice_file(p)
play_mp3(download_music_file(baidu_get_song_name(client)))
#snowboy 相關(guān)代碼
def signal_handler(signal, frame):#改變全局變量interrupted值
global interrupted
interrupted = True
def interrupt_callback():#鍵盤(pán)輸入ctrl+c終端程序運行
global interrupted
return interrupted
if __name__=='__main__':
#麥克風(fēng)采集初始化、百度語(yǔ)音識別初始化、mp3文件播放初始化
p = pyaudio.PyAudio()
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
pygame.mixer.init()
model = sys.argv[1]
#
# capture SIGINT signal, e.g., Ctrl+C
signal.signal(signal.SIGINT, signal_handler)
detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)
print('Listening... Press Ctrl+C to exit')
# main loop
while 1:
detector.start(detected_callback=lambda: one_time_process(p,detector),interrupt_check=interrupt_callback,sleep_time=0.03)#detector作為回調函數的一個(gè)參數,目的是將MIC的權限進(jìn)行釋放
detector.terminate()
</p> 查看全部
解決方案:Simulink與自動(dòng)駕駛(ADAS)算法的開(kāi)發(fā)
點(diǎn)擊上方藍字,您的關(guān)注就是對我最大的鼓勵!
美國大選已經(jīng)落下帷幕。不知道白哥對我們Matlab/Simulink是什么態(tài)度,是繼續禁,還是?其實(shí)我還是支持的,繼續禁用。只有這樣才能激發(fā)我們的自主創(chuàng )新能力,您怎么看?哈哈哈!
好久沒(méi)更新了 一直忙這忙那,還沒(méi)有靜下心來(lái)總結這些東西。這次聊一個(gè)高端的話(huà)題---自動(dòng)駕駛,閑聊,總結一下最近的一些學(xué)習工作,Simulink在自動(dòng)駕駛的發(fā)展過(guò)程中是如何存在的?話(huà)不多說(shuō),開(kāi)始說(shuō)吧!自動(dòng)駕駛軟件開(kāi)發(fā)的基本架構逃不開(kāi)我們常說(shuō)的三大法寶,感知---決策(規劃)---執行(控制),這三個(gè)內容,軟件開(kāi)發(fā)的基本思路是不一樣的,聽(tīng)聽(tīng)本的解說(shuō)!
感知:雷達的感知大部分是通過(guò)傅里葉變換等算法對具有多普勒效應的脈沖波信號進(jìn)行處理。目前主流是使用C作為代碼。雷達有很多種。這個(gè)算法僅限于毫米波雷達,激光雷達不懂。
大多數相機對應的是圖像處理。雖然Simulink目前已經(jīng)收錄
了相應的圖像處理算法模型,但是這些算法模型只是對大家寫(xiě)論文有用,容易出結果,容易仿真!然而,大多數實(shí)際算法都是與 OpenCV 和 C++ 一起使用的。
慣性導航和 GPS 中的算法是另一類(lèi)。Simulink 涉及的不多。輪速和車(chē)身姿態(tài)大多來(lái)源于ESC,EPS,這些對應的模塊!
綜上所述,Simulink在感知層面用的不多。Decision-making:L3以上的層級,由于有地圖的參與,我們稱(chēng)之為規劃,L3以下的層級大部分稱(chēng)為決策層,即融合多個(gè)目標源進(jìn)行決策.
融合算法目前大部分在雷達和攝像頭,但有走向獨立和向域控制器靠攏的趨勢,相當一部分算法軟在里面。軟件開(kāi)發(fā)雖然說(shuō)是用Simulink開(kāi)發(fā),但是很多都是用C和C++開(kāi)發(fā)的,尤其是多維目標跟蹤融合!執行(控制):執行分為橫向控制域和縱向控制。橫向控制主要是和EPS交互角度和力矩??v控主要與動(dòng)力總成和底盤(pán)進(jìn)行交互,交互的核心是加速和制動(dòng)的需求。
這些控制邏輯,通俗的說(shuō)就是簡(jiǎn)單的門(mén)控邏輯,大部分是OR,AND,NOT的邏輯,這些都是Simulink的強項,所以相關(guān)邏輯的執行都是用Simulink開(kāi)發(fā),然后自動(dòng)生成代碼,終于軟了!
綜上所述,目前Simulink對自動(dòng)駕駛的支持其實(shí)還不是很廣泛。大多側重于功能的控制,其他相關(guān)圖像,以及雷達算法的應用。他們中的大多數還處于寫(xiě)論文的階段??偨Y如下,呵呵!

目前從事自動(dòng)駕駛算法開(kāi)發(fā),Simulink中有很多對應的庫文件和例子可以參考。下圖所示的庫文件可以直接使用。
還有對應的示例文件,點(diǎn)Help自己學(xué)習就好了,應該問(wèn)題不大。
然后說(shuō)說(shuō)相應的算法生成和集成!至于所謂的可以做融合和感知算法的Simulink,我不能否認,但是實(shí)踐是檢驗真理的唯一標準,現在在實(shí)際項目中還是很少用到!
但是,當你在開(kāi)發(fā)某個(gè)功能時(shí),如何進(jìn)行前期驗證呢?如何建立一個(gè)模擬感知算法,如何建立一個(gè)模擬融合算法,如何在前期驗證你的功能算法,這就需要我們的大殺器出來(lái)了!這兩個(gè)東西是ADAS系統開(kāi)發(fā)的主角,因為真正的功能開(kāi)發(fā)肯定沒(méi)有發(fā)動(dòng)機和變速箱那么復雜,但是ADAS系統的數據量和仿真要求遠大于其他系統,因為這個(gè)東西不模擬,直接測試太貴了!
ADAS系統是一個(gè)非常復雜的東西。在開(kāi)發(fā)初期,如果使用特定階段或特定場(chǎng)景的驗證,使用實(shí)車(chē)成本太高,不切實(shí)際!所以我們前期做場(chǎng)景驗證的時(shí)候,如果后面問(wèn)題重現,就需要我們的大殺器Simulink了!尤其是L3、L4級別的功能,必須要有這個(gè)大殺器才能完成百萬(wàn)公里的驗證。ADAS系統仿真與驗證 在Simulink環(huán)境中建立仿真環(huán)境,進(jìn)行算法驗證與開(kāi)發(fā)。目前Simulink集成了Driving Scenario Designer的庫。這個(gè)庫可以完成場(chǎng)景的規劃和定義,如下圖:
場(chǎng)景建模完成后,Matab可以將其轉換成Mat文件(類(lèi)似自動(dòng)代碼生成的S-function格式),然后導入到Simulink環(huán)境中,添加相應的傳感器模型,進(jìn)行open-循環(huán)和閉環(huán)模擬!如下圖開(kāi)環(huán)仿真來(lái)驗證對應的融合算法!
閉環(huán)仿真增加了車(chē)輛動(dòng)力學(xué)和相應的路徑設計。把它變成一個(gè)閉環(huán)來(lái)驗證相應的功能算法,比如ACC、AEB、TJA等功能。這兩個(gè)就是我們所說(shuō)的SIL,軟件在環(huán)仿真的學(xué)術(shù)定義!
當設計這些場(chǎng)景和算法時(shí),需要對其進(jìn)行測試。測試工具和方法與前面提到的代碼自動(dòng)生成測試方法相同。Simulink 的測試管理器可用于執行動(dòng)態(tài)測試用例和靜態(tài)代碼。覆蓋測試,如下圖,和基本的測試方法是一樣的!
以上都是形式化的算法驗證流程,適用于基礎功能開(kāi)發(fā),但目前大多用于面向應用的項目中。面向應用的項目主要測試工作是采集道路數據,然后進(jìn)行驗證,比較符合實(shí)際。它是可靠的,并且在建立仿真模型時(shí)也省去了很多工作。省錢(qián)又高效!哈哈哈。

中國貼牌的傳統做法。具體操作方法同上!通過(guò)導入場(chǎng)景數據,可以驗證具體的傳感器算法,通過(guò)導入目標列表數據,可以驗證具體的功能算法,如下圖!
設計、仿真、測試,這個(gè)閉環(huán)形成了ADSA算法的開(kāi)發(fā)和驗證,展示了Simulink軟件的NB:
ADAS數據處理
在實(shí)際測試驗證的過(guò)程中,會(huì )采集到大量的數據,比如攝像頭圖像數據、雷達數據、車(chē)道檢測數據、激光雷達數據、慣性測量單元數據等,這些結果如何處理?如何標記真值?
Simulink中的ADST工具箱收錄
了相應的函數,然后就可以說(shuō)說(shuō)相應的圖像數據,分析后的目標列表,統一用一個(gè)圖表來(lái)展示分析,進(jìn)行我們所謂的真值標定,然后可視化,就是比我們的好 肉眼看,比NB還要多,請參考下圖!
在做可視化時(shí),Simulink可以在同一屏幕上轉換車(chē)輛坐標系和圖像坐標系,從而繪制出不同的點(diǎn)云數據,便于傳感器信號的分析和驗證。
小才小學(xué),這些總結僅供朋友參考,啟發(fā)大家,大家一起學(xué)習吧!ADSA系統的算法研究猶如星辰大海。只要抓住一顆閃亮的星星,你就可以在智慧的潮汐中屹立于橋上,成為潮汐中的潮人。一起學(xué)習,一起進(jìn)步,一起征服燦爛的星海!
學(xué)無(wú)止境,深入淺出,細細研讀,必成大器!分享給有志之士!
解決方案:使用樹(shù)莓派3B+開(kāi)發(fā)智能音樂(lè )播放器(續---加入自動(dòng)喚醒功能)
下次預定。. .
上次講到給智能音樂(lè )播放器增加語(yǔ)音喚醒功能。我google了一下相關(guān)資料。目前有百度AI、科大訊飛、谷歌、snowboy。最簡(jiǎn)單的大概就是snowboy了。去github下載源碼,然后去官網(wǎng)查看相關(guān)說(shuō)明。注意下載的源碼中有四個(gè)demo。四個(gè)源碼最好都看一遍,可以解決大部分應用問(wèn)題。
我這里用demo.py這個(gè)框架就夠了。其次最重要的是登錄snowboy官網(wǎng)注冊用戶(hù)(需要用谷歌賬號登錄),然后錄制自己的個(gè)性化喚醒詞(例如:你好小愛(ài)),下載您記錄的喚醒詞文件 pmdl 作為程序運行的參數 (python3 demo.py XXX.pmdl)。
好了,我們直接上代碼:
# -*- coding: utf-8 -*-
from aip import AipSpeech #百度語(yǔ)音識別庫
import pyaudio #麥克風(fēng)聲音采集庫
import wave
import requests,json #音樂(lè )搜索
import pygame #mp3播放
import snowboydecoder
import sys
import signal
import os
import time
import sys
interrupted = False
""" 我的 APPID AK SK """
APP_ID = 'xxxxxxxxx'
API_KEY = 'xxxxxxxxxxxxxx'
SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
#定義采集聲音文件參數
CHUNK = 1024
FORMAT = pyaudio.paInt16 #16位采集
CHANNELS = 1 #單聲道
RATE = 16000 #采樣率
RECORD_SECONDS = 9 #采樣時(shí)長(cháng) 定義為9秒的錄音
WAVE_OUTPUT_FILENAME = "./myvoice.pcm" #采集聲音文件存儲路徑
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
#獲取下載地址
def get_down_url(songid):
req=requests.get("http://tingapi.ting.baidu.com/ ... ot%3B %songid)
req.encoding='utf-8'
#print(json.loads(req.text))
json1=json.loads(req.text.replace("jQuery17206073972467458864_1511011710426(","").replace(");",""))
print("下載地址:",json1["bitrate"]['show_link'])
return json1["bitrate"]['show_link']
#下載保存文件
def music_down(url,music_name,artistname):
f=open(music_name+'-'+artistname+'.mp3','wb')
req_mp3=requests.get(url)
f.write(req_mp3.content)
f.close()
#調用百度AI,將文字轉化為聲音輸出,用于提示音
def word_to_voice(text):
result = client.synthesis(text, 'zh', 1, {
'vol': 5, 'spd': 3, 'per': 3})
if not isinstance(result, dict):
with open('./audio.mp3', 'wb') as f:
f.write(result)
f.close()
pygame.mixer.music.load('./audio.mp3')#text文字轉化的語(yǔ)音文件
<p>

pygame.mixer.music.play(loops=0)
while pygame.mixer.music.get_busy() == True:
print('waiting')
def word_to_voice1(text):
result = client.synthesis(text, 'zh', 1, {
'vol': 5, 'spd': 3, 'per': 3})
if not isinstance(result, dict):
with open('./audio1.mp3', 'wb') as f:
f.write(result)
f.close()
pygame.mixer.music.load('./audio1.mp3')
pygame.mixer.music.play(loops=0)
while pygame.mixer.music.get_busy() == True:
print('waiting')
#獲得麥克風(fēng)輸入的聲音文件,保存在myvoice.pcm
def get_mic_voice_file(p):
word_to_voice('請說(shuō)出歌名')
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
#p.terminate()#這里先不使用p.terminate(),否則 p = pyaudio.PyAudio()將失效,還得重新初始化。
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
print('recording finished')
#百度語(yǔ)音識別出歌名文字并返回
def baidu_get_song_name(client):
results = client.asr(get_file_content(WAVE_OUTPUT_FILENAME), 'pcm', 16000, { 'dev_pid': 1536, })
# print(results['result'])
song_name=results['result'][0]
print(song_name)
return song_name
#百度音樂(lè )下載歌曲
def download_music_file(song_name):
req_url = "http://sug.music.baidu.com/inf ... ot%3B % song_name
req_so = requests.get(req_url)
data = json.loads(req_so.text.replace("window.baidu.sug(", "").replace(");", ""))
for i in data["data"]["song"]:
print("\tsongid:" + str(i["songid"]), "音樂(lè )名字:" + i["songname"], "\t歌手:" + i["artistname"])
input_songid = data["data"]["song"][0]["songid"] # input("請輸入你要下載的songid:")
for i in data["data"]["song"]:
if input_songid == str(i["songid"]):

url = get_down_url(i["songid"])
music_down(url, i["songname"], i["artistname"])
print("下載完成")
music_name = i['songname'] # 獲取MP3文件中的歌曲名
artistname = i["artistname"] # 獲取MP3文件中的歌手名
filename = './' + music_name + '-' + artistname + '.mp3'
print(filename)
word_to_voice1('請欣賞')
return filename
def play_mp3(music_file):
pygame.mixer.music.load(music_file)
'''while True:
# 檢查音樂(lè )流播放,有返回True,沒(méi)有返回False
# 如果一直有音樂(lè )流則選擇播放
if pygame.mixer.music.get_busy() == False:
pygame.mixer.music.play()'''
pygame.mixer.music.play(loops=0) #該函數運行后立即返回,音樂(lè )一直在后臺運行
def one_time_process(p,detector):#一次麥克采樣+語(yǔ)音識別+音樂(lè )下載+自動(dòng)播放
detector.terminate() #該條代碼很重要,因為detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)已經(jīng)在內部使用pyaudio庫獲取了MIC的權限,如果我們再次魯莽的使用pyaudio,將造成程序出錯
get_mic_voice_file(p)
play_mp3(download_music_file(baidu_get_song_name(client)))
#snowboy 相關(guān)代碼
def signal_handler(signal, frame):#改變全局變量interrupted值
global interrupted
interrupted = True
def interrupt_callback():#鍵盤(pán)輸入ctrl+c終端程序運行
global interrupted
return interrupted
if __name__=='__main__':
#麥克風(fēng)采集初始化、百度語(yǔ)音識別初始化、mp3文件播放初始化
p = pyaudio.PyAudio()
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
pygame.mixer.init()
model = sys.argv[1]
#
# capture SIGINT signal, e.g., Ctrl+C
signal.signal(signal.SIGINT, signal_handler)
detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)
print('Listening... Press Ctrl+C to exit')
# main loop
while 1:
detector.start(detected_callback=lambda: one_time_process(p,detector),interrupt_check=interrupt_callback,sleep_time=0.03)#detector作為回調函數的一個(gè)參數,目的是將MIC的權限進(jìn)行釋放
detector.terminate()
</p>
解決方案:分布式調用鏈沒(méi)那么難搞,好用的開(kāi)源工具實(shí)踐在這
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 65 次瀏覽 ? 2022-11-29 12:37
在微服務(wù)架構中,一個(gè)請求往往會(huì )涉及到多個(gè)模塊、多個(gè)中間件,需要多臺機器相互協(xié)作才能完成。在這一系列的調用請求中,有的是串行的,有的是并行的,那么如何確定這個(gè)請求后面調用了哪些應用程序、哪些模塊、哪些節點(diǎn)以及調用順序呢?如何定位各個(gè)模塊的性能問(wèn)題?本文將為您揭曉答案。
本文將從以下幾個(gè)方面進(jìn)行闡述:
分布式溯源系統原理與作用
如何衡量一個(gè)接口的性能,一般我們至少會(huì )關(guān)注以下三個(gè)指標:
單體架構
早期,公司剛起步的時(shí)候,可能會(huì )采用如下單體架構。對于單體結構,我們應該如何計算以上三個(gè)指標呢?
最容易想到的顯然是使用AOP
使用AOP打印調用具體業(yè)務(wù)邏輯前后的時(shí)間來(lái)計算整體調用時(shí)間,使用AOP捕獲異常,知道是哪里的調用導致了異常。
微服務(wù)架構
在單體架構中,由于所有的服務(wù)和組件都在一臺機器上,所以這些監控指標相對容易實(shí)現。但是隨著(zhù)業(yè)務(wù)的快速發(fā)展,單體架構必然會(huì )向微服務(wù)架構發(fā)展,具體如下:
如圖:一個(gè)稍微復雜的微服務(wù)架構
如果用戶(hù)反映某個(gè)頁(yè)面很慢,我們知道這個(gè)頁(yè)面的請求調用鏈是A -----> C -----> B -----> D,如何定位哪個(gè)可能是模塊在這個(gè)時(shí)候出現了問(wèn)題。每個(gè)服務(wù)Service A、B、C、D都有幾臺機器。您如何知道請求在哪臺特定機器上調用服務(wù)?
可以明顯看出,由于無(wú)法準確定位每個(gè)請求的準確路徑,微服務(wù)架構下存在以下痛點(diǎn):
分布式調用鏈就是為解決上述問(wèn)題而誕生的,其主要作用如下:
通過(guò)分布式跟蹤系統,可以很好地定位后續請求的各個(gè)具體請求鏈接,從而輕松實(shí)現請求鏈接跟蹤,輕松實(shí)現各模塊的性能瓶頸定位和分析。
分布式調用鏈標準——OpenTracing
了解了分布式調用鏈的作用,下面我們來(lái)看看分布式調用鏈的實(shí)現和原理是如何實(shí)現的。首先,為了解決不同分布式跟蹤系統API不兼容的問(wèn)題,OpenTracing規范誕生了。OpenTracing 是一個(gè)輕量級的規范化層,位于應用程序/庫和跟蹤或日志分析器之間。
通過(guò)這種方式,OpenTracing 使開(kāi)發(fā)人員能夠通過(guò)提供獨立于平臺和供應商的 API 輕松添加跟蹤系統的實(shí)現。
說(shuō)到這里,你有沒(méi)有想過(guò)在 Java 中有類(lèi)似的實(shí)現?還記得JDBC嗎,通過(guò)提供一套標準的接口供各個(gè)廠(chǎng)商實(shí)現,程序員可以針對接口進(jìn)行編程,而不用關(guān)心具體的實(shí)現。這里的接口其實(shí)就是一個(gè)標準,所以制定一套標準非常重要,可以實(shí)現組件的可插拔性。
接下來(lái)我們看一下OpenTracing的數據模型。主要有以下三種類(lèi)型:
理解這三個(gè)概念非常重要。為了讓大家更好的理解這三個(gè)概念,我特地畫(huà)了一張圖:
如圖所示,一個(gè)完整的訂單請求就是一個(gè)Trace。顯然,對于這個(gè)請求,必須有一個(gè)全局標識來(lái)標識這個(gè)請求。每次調用調用一個(gè)Span,每次調用都必須攜帶全局TraceId,這樣全局TraceId才能與每次調用相關(guān)聯(lián)。這個(gè)TraceId是通過(guò)SpanContext傳遞過(guò)來(lái)的。既然要傳輸,就必須按照協(xié)議來(lái)調用。如圖所示,如果把transport protocol比作汽車(chē),SpanContext比作貨物,Span比作公路,應該更容易理解。
了解了這三個(gè)概念之后,我再來(lái)看看分布式追蹤系統是如何在統一圖中采集
微服務(wù)調用鏈的:
我們可以看到底層有一個(gè)Collector一直在默默的采集
數據,那么每次調用Collector都會(huì )采集
什么信息:
有了這些信息,采集
器為每次調用采集
的信息如下:
根據這些圖表信息,顯然可以畫(huà)出調用鏈的可視化視圖如下:
這樣就實(shí)現了一個(gè)完整的分布式跟蹤系統。
上面的實(shí)現看起來(lái)很簡(jiǎn)單,但是有幾個(gè)問(wèn)題需要我們仔細思考:
下面我就來(lái)看看SkyWalking是如何解決以上四個(gè)問(wèn)題的。
SkyWalking的原理和架構設計
如何自動(dòng)采集
跨度數據
SkyWalking采用插件+javaagent的形式實(shí)現span數據的自動(dòng)采集,可以對代碼無(wú)侵入。插件意味著(zhù)可插拔和良好的擴展性(稍后我們將介紹如何定義自己的插件。)。
如何跨進(jìn)程傳遞上下文
我們知道數據一般分為header和body,就像http有header和body一樣,RocketMQ也有MessageHeader,Message Body,body一般收錄
業(yè)務(wù)數據,所以body不宜傳context,應該傳入表頭,如圖:
dubbo中的attachment相當于header,所以我們把context放在attachment中,這樣就解決了context傳遞的問(wèn)題。
提示:這里的上下文傳遞過(guò)程都是dubbo插件處理的,業(yè)務(wù)是不知道的。下面將分析這個(gè)插件是如何實(shí)現的。
traceId如何保證全局唯一性?
為了確保全局唯一性,我們可以使用分布式或本地生成的 ID。如果我們使用分布式,我們需要一個(gè)數字生成器。每個(gè)請求必須首先請求數字生成器。會(huì )有網(wǎng)絡(luò )調用開(kāi)銷(xiāo),所以SkyWalking最終采用了本地生成ID的方式,并且采用了著(zhù)名的snowflow算法,性能較高。
圖解:雪花算法生成的id
但是,雪花算法有一個(gè)眾所周知的問(wèn)題:時(shí)間回調,可能會(huì )導致重復生成id。那么SkyWalking是如何解決時(shí)間回調問(wèn)題的呢?
每產(chǎn)生一個(gè)id,就會(huì )記錄這個(gè)id產(chǎn)生的時(shí)間(lastTimestamp)。如果發(fā)現當前時(shí)間小于上次生成id的時(shí)間(lastTimestamp),說(shuō)明發(fā)生了時(shí)間回調,此時(shí)會(huì )生成一個(gè)隨機數作為traceId。
這里可能有些同學(xué)想認真點(diǎn)。他們可能認為生成的隨機數也將與生成的全局 id 相同。最好再加一層驗證。
這里想談?wù)勏到y設計中方案的選擇。首先,如果對生成的隨機數進(jìn)行唯一性校驗,無(wú)疑會(huì )多出一層調用,會(huì )有一定的性能損失,但實(shí)際上時(shí)間回調的概率很小。(發(fā)生后,由于機器時(shí)間的紊亂,業(yè)務(wù)會(huì )受到很大的影響,所以機器時(shí)間的調整一定要謹慎),而且生成的隨機數重合的概率也很小。綜合考慮,確實(shí)沒(méi)有必要再增加一個(gè)Layer全局唯一性校驗。對于技術(shù)方案的選擇,一定要避免過(guò)度設計,太多就是太多。
這么多請求,全部采集
會(huì )不會(huì )影響性能?
如果每一個(gè)請求都采集
起來(lái),毫無(wú)疑問(wèn)數據量會(huì )非常大,但是反過(guò)來(lái)想想,是不是真的有必要把每一個(gè)請求都采集
起來(lái)。其實(shí)大可不必。我們可以設置采樣頻率,只采樣部分數據,SkyWalking默認設置為3秒采樣3次,其余請求不采樣,如圖:
這樣的采樣頻率其實(shí)已經(jīng)足夠我們分析元器件的性能了。以每 3 秒 3 個(gè)樣本的頻率采樣數據有什么問(wèn)題?理想情況下,每次服務(wù)調用都是在同一個(gè)時(shí)間點(diǎn)(如下圖),所以每次都在同一個(gè)時(shí)間點(diǎn)采樣真的沒(méi)問(wèn)題。
但是在生產(chǎn)中,基本上不可能每個(gè)服務(wù)調用都在同一個(gè)時(shí)間點(diǎn)被調用,因為期間存在網(wǎng)絡(luò )調用延遲,實(shí)際調用情況很可能如下圖所示:
在這種情況下,有些調用會(huì )在服務(wù)A上被采樣,而不會(huì )在服務(wù)B和C上被采樣,無(wú)法分析調用鏈的性能。那么SkyWalking是如何解決的呢?
是這樣解決的:如果上游帶了Context(說(shuō)明上游已經(jīng)采樣),下游會(huì )強制采集數據。這使鏈接保持完整。
SkyWalking的基礎設施
SkyWalking 的基礎是以下架構??梢哉f(shuō)幾乎所有的分布式調用都是由以下幾個(gè)部分組成的:
首先當然是節點(diǎn)數據的定期采樣。數據采樣后定期上報,存儲在ES、MySQL等持久層。有了數據,自然要根據數據做可視化分析。
SkyWalking 的表現如何?
接下來(lái)想必大家比較關(guān)心的是SkyWalking的性能表現,那么我們就來(lái)看看官方的評測數據吧:
圖中藍色代表未使用SkyWalking時(shí)的表現,橙色代表使用SkyWalking時(shí)的表現。以上是TPS為5000時(shí)測得的數據,可以看出無(wú)論是CPU、內存,還是響應時(shí)間,使用SkyWalking帶帶來(lái)的性能損失幾乎可以忽略不計。
接下來(lái)看一下SkyWalking與業(yè)界另一知名分布式追蹤工具Zipkin、Pinpoint的對比(采樣率為1秒,線(xiàn)程數為500,總請求數時(shí)進(jìn)行對比)是 5000)??梢?jiàn)Zipkin(117ms)和PinPoint(201ms)在臨界響應時(shí)間上遠不如SkyWalking(22ms)!
從性能損失來(lái)看,SkyWalking 勝出!
讓我們看另一個(gè)指標:代碼的侵入性如何?ZipKin需要埋在應用中,代碼侵入性大。SkyWalking使用javaagent+插件修改字節碼。沒(méi)有侵入代碼。除了代碼的性能和侵入性,SkyWaking 表現出色,還有以下優(yōu)勢:
我司在分布式調用鏈上的實(shí)踐
SkyWalking在我司的應用架構
從上面可以看出SkyWalking有很多優(yōu)點(diǎn),那么它的組件我們都用上了嗎?事實(shí)上,并非如此。我們來(lái)看看它在我們公司的應用架構:
從圖中可以看出,我們只使用了SkyWalking代理進(jìn)行采樣,而放棄了“數據上報與分析”、“數據存儲”、“數據可視化”等其他三個(gè)組件。
那為什么不直接采用SkyWalking完整的解決方案呢,因為我們的Marvin監控生態(tài)在接入SkyWalking之前就已經(jīng)比較完整了。如果換成SkyWalking,就完全沒(méi)有必要了。兩者都能滿(mǎn)足我們的需求。其次,系統更換成本高。第三,如果重新連接到用戶(hù),學(xué)習成本非常高。
這也給了我們一個(gè)啟示:任何產(chǎn)品抓住機會(huì )都是非常重要的,后續產(chǎn)品的更換成本會(huì )非常高。搶占先機,就是搶占用戶(hù)心智。國外還是做不了Whatsapp一樣的,因為機會(huì )沒(méi)了。
另一方面,對于架構,沒(méi)有最好的,只有最合適的。架構設計的本質(zhì)是結合當前業(yè)務(wù)場(chǎng)景進(jìn)行折衷的平衡。
我們公司對SkyWalking做了哪些改造和實(shí)踐?
我公司主要做了以下改造和實(shí)踐:
1)預發(fā)布環(huán)境因調試需要強制采樣
從上面的分析可以看出,Collector是在后臺定時(shí)采樣的。這不好嗎?為什么我們需要實(shí)施強制采樣?或者排查定位問(wèn)題,有時(shí)線(xiàn)上出現問(wèn)題,我們希望在預發(fā)布上復現,希望看到這個(gè)請求完整的調用鏈,所以需要在預發(fā)布上進(jìn)行強制采樣。所以我們修改了Skywalking的dubbo插件來(lái)實(shí)現強制采樣。
我們在request cookie上放一個(gè)類(lèi)似force_flag = true的key-value對,表示我們要強制采樣。網(wǎng)關(guān)收到這個(gè)cookie后,會(huì )在dubbo附件中帶上鍵值對force_flag = true,然后skywalking的dubbo插件就可以根據這個(gè)來(lái)判斷是否是強制采樣。如果有這個(gè)值,就是強制采樣。如果沒(méi)有這個(gè)值,則進(jìn)行正常定時(shí)采樣。
2)實(shí)現更細粒度的采樣?
Ha 稱(chēng)為更細粒度的采樣。我們先來(lái)看一下skywalking默認的采樣方式,即uniform sampling。
我們知道這個(gè)方法默認是在3秒前采樣3次,其他的請求都被丟棄。在這種情況下,有一個(gè)問(wèn)題。假設3秒內本機有多次dubbo、mysql、redis調用,但是如果前3次都是dubbo調用的話(huà),其他像mysql、redis等調用無(wú)法采樣,所以我們修改了skywalking實(shí)現分組抽樣,如下:
也就是說(shuō)3秒內采樣redis、dubbo、mysql等3次就可以避免這個(gè)問(wèn)題。
3)如何在日志中嵌入traceId?
在輸出日志中嵌入traceId,方便我們排查問(wèn)題,所以打印traceId是非常有必要的,如何在日志中嵌入traceId呢?我們使用log4j,這里我們需要了解一下log4j的插件機制,log4j允許我們自定義插件輸出日志的格式,首先我們需要定義日志的格式,在自定義日志格式,作為賬號字符,如下:
然后我們實(shí)現一個(gè)log4j插件,如下:
首先,log4j插件需要定義一個(gè)類(lèi),該類(lèi)繼承LogEventPatternConverter類(lèi),并用標準Plugin聲明自己為Plugin,通過(guò)@ConverterKeys注解指定需要替換的占位符,然后在format方法中替換失去。這樣日志中就會(huì )出現我們想要的TraceId,如下:
4)我司開(kāi)發(fā)了哪些skywalking插件?
SkyWalking 實(shí)現了很多插件,但是沒(méi)有提供memcached 和druid 的插件,所以我們按照其規范開(kāi)發(fā)了這兩個(gè)插件:
插件是如何實(shí)現的,可以看到主要由三部分組成:
可能大家看了還是不太明白,下面就用dubbo plugin來(lái)簡(jiǎn)單說(shuō)明一下。我們知道,在dubbo服務(wù)中,每次請求都會(huì )收到來(lái)自netty的消息,提交給業(yè)務(wù)線(xiàn)程池處理,真正調用到業(yè)務(wù)方法時(shí)結束。中間經(jīng)過(guò)十幾個(gè)Filter處理。
而MonitorFilter可以攔截所有客戶(hù)端請求或者服務(wù)端處理請求,所以我們可以增強MonitorFilter,在調用invoke方法之前,將全局traceId注入到它的Invocation attachment中,從而保證請求到達真正業(yè)務(wù)之前全局traceId已經(jīng)存在邏輯。
那么顯然我們需要在插件中指定我們要增強的類(lèi)(MonitorFilter),并增強它的方法(invoke)。應該對此方法進(jìn)行哪些改進(jìn)?這就是攔截器(Inteceptor)要做的事情。我們來(lái)看看Dubbo插件(DubboInstrumentation)中的插樁。
我們來(lái)看看代碼中描述的攔截器(Inteceptor)是干什么的。關(guān)鍵步驟如下:
首先,beforeMethod表示這里的方法會(huì )在MonitorFilter的invoke方法執行之前被調用,而afterMethod與之對應,表示invoke方法執行之后才會(huì )執行增強邏輯。
其次,從第2點(diǎn)和第3點(diǎn)我們可以看出,無(wú)論是消費者還是提供者,其全局ID都做了相應的處理,以保證到達真正的業(yè)務(wù)層時(shí),全局traceid是可用的。在定義了 Instrumentation 和 Interceptor 之后,最后一步是在 skywalking.def 中指定定義的類(lèi)。
// skywalking-plugin.def 文件
dubbo=org.apache.skywalking.apm.plugin.asf.dubbo.DubboInstrumentation
這樣封裝的插件會(huì )增強MonitorFilter的invoke方法,在invoke方法執行前,將全局的traceId等操作注入到attachment中,對代碼都是靜默無(wú)侵入的。
總結
本文由淺入深地介紹了分布式跟蹤系統的原理。相信大家對它的作用和工作機制有了更深入的了解。尤其需要注意的是,在引入某項技術(shù)時(shí),一定要結合現有的技術(shù)架構,做出最佳方案。一個(gè)合理的選擇,就像SkyWalking有四個(gè)模塊,而我們公司只使用它的代理采樣功能。
沒(méi)有最好的技術(shù),只有最合適的技術(shù)。通過(guò)這篇文章,相信大家應該對SkyWalking的實(shí)現機制有了清晰的認識。本文只介紹SkyWalking的插件實(shí)現,但畢竟是工業(yè)級軟件。要了解它的深奧,還需要多閱讀源碼。
作者丨碼海源丨公眾號:碼海(ID:seaofcode)dbaplus社區歡迎技術(shù)人員投稿,投稿郵箱:
操作方法:流量工具流量寶使用方法
流量工具是用來(lái)輔助網(wǎng)站增加流量的。有很多交通工具。在之前的文章《輔助網(wǎng)站提升流量有哪些工具》中也提到了幾種工具,那么今天我們就來(lái)說(shuō)說(shuō)其中的一種,說(shuō)說(shuō)使用方法以及使用過(guò)程中需要注意的事項使用它,這個(gè)工具也是很多站長(cháng)經(jīng)常使用的,它就是“流量寶”。
FlowBao在一些免費工具中算是比較強大的,包括提升流量、增加人氣、廣告優(yōu)化、提升電商人氣、關(guān)鍵詞排名、使用Alexa等功能。功能很多,但是在我們seo行業(yè)用到的就那么幾個(gè),所以就說(shuō)說(shuō)seo行業(yè)相關(guān)功能的使用,其他的就不多說(shuō)了。
1.刷流量
刷流量可以提高網(wǎng)站的pv。在流量刷卡界面,有基礎設置、來(lái)源URL設置、點(diǎn)擊設置、流量時(shí)間控制、ua設置、流量區域設置。
1.基本設置
把我們要刷的網(wǎng)站復制粘貼到“網(wǎng)頁(yè)地址”寫(xiě)入框里,ip/pv比就是你要刷的ip和pv的比值,比如1:3,那么一個(gè)ip被瀏覽了3次,這里我們設置1:3就好了,PV停留時(shí)間可以根據自己的情況選擇,我一般是隨機選擇3-30秒。
2. 源地址設置
如果我們要訪(fǎng)問(wèn)百度用戶(hù),可以在“自定義來(lái)源”中選擇“百度搜索詞”。比如我們要增加長(cháng)沙seo這個(gè)詞的流量,那么我們就在上面寫(xiě)上“長(cháng)沙seo”就可以了。注意后面的%,是根據我們自己的字數分配的。比如你想讓那個(gè)詞的流量高,就可以多給分。如果只有一個(gè)字,建議不要超過(guò)50%。
3.點(diǎn)擊設置
如果您不在此處設置點(diǎn)擊 URL,該工具將默認刷新主頁(yè)。如果添加點(diǎn)擊網(wǎng)址,它會(huì )點(diǎn)擊我們填寫(xiě)的網(wǎng)址。點(diǎn)擊的百分比要適當添加,同樣不要超過(guò)50%。如果要點(diǎn)擊的頁(yè)面排名不錯,您可以添加更多。
4.流動(dòng)時(shí)間控制
通過(guò)流量時(shí)間控制,我們可以控制點(diǎn)擊的流量。網(wǎng)民可以在上網(wǎng)的時(shí)候多瀏覽,其他時(shí)間少用。這樣比較自然,效果也不錯。
5.ua設置
一般這里不用設置
6.交通區域設置
首先我們要去掉國外和港澳臺地區,根據自己的網(wǎng)站選擇國內地區。比如我的關(guān)鍵詞是“長(cháng)沙seo”,那么我要選擇的地區就是湖南,其他地區就不用選了。,如果你滑動(dòng)的詞不是區域詞,你也可以選擇更多的區域。
2. 關(guān)鍵詞 排名
基本設置:這里的基本設置同上,復制我們要掃描的頁(yè)面排名的網(wǎng)址關(guān)鍵詞,可以?huà)呙鑼?zhuān)欄,可以?huà)呙栉恼马?yè),也可以?huà)呙枋醉?yè)頁(yè)面,然后在“搜索引擎”中選擇,比如我們使用360搜索引擎,那就選擇360搜索引擎,百度等搜索引擎也一樣。
注意:我們刷的頁(yè)面關(guān)鍵詞一定要收錄
進(jìn)去,否則沒(méi)有效果,否則會(huì )影響我們的網(wǎng)站。
3.刷Alexa
刷Alexa并沒(méi)有那么復雜,填寫(xiě)我們的主域名即可。
4. 最后一步
流量寶首頁(yè)左下角和右下角都有“優(yōu)化速度選擇”。如果網(wǎng)站SEO基礎好,選擇高速模式。一般我們選擇普通模式,差一點(diǎn)就選擇低速模式。
也就是說(shuō),一個(gè)普通家庭養育一個(gè)孩子至少要花費70萬(wàn)元。
對于大多數普通工薪家庭來(lái)說(shuō),確實(shí)是一筆不小的數目。
小夏SEO有話(huà)要說(shuō):其實(shí)不管是什么工具,我們都不能太依賴(lài)它。該工具可以在短時(shí)間內提高網(wǎng)站的排名,但網(wǎng)站仍然需要優(yōu)化。沒(méi)有優(yōu)化的網(wǎng)站如果只用一些手段,成本會(huì )很大,這樣就失去了seo的意義。做seo的網(wǎng)站都希望低成本帶來(lái)轉化。
最后提醒,新站一定不要用這些工具,新站要好好優(yōu)化! 查看全部
解決方案:分布式調用鏈沒(méi)那么難搞,好用的開(kāi)源工具實(shí)踐在這
在微服務(wù)架構中,一個(gè)請求往往會(huì )涉及到多個(gè)模塊、多個(gè)中間件,需要多臺機器相互協(xié)作才能完成。在這一系列的調用請求中,有的是串行的,有的是并行的,那么如何確定這個(gè)請求后面調用了哪些應用程序、哪些模塊、哪些節點(diǎn)以及調用順序呢?如何定位各個(gè)模塊的性能問(wèn)題?本文將為您揭曉答案。
本文將從以下幾個(gè)方面進(jìn)行闡述:
分布式溯源系統原理與作用
如何衡量一個(gè)接口的性能,一般我們至少會(huì )關(guān)注以下三個(gè)指標:
單體架構
早期,公司剛起步的時(shí)候,可能會(huì )采用如下單體架構。對于單體結構,我們應該如何計算以上三個(gè)指標呢?
最容易想到的顯然是使用AOP
使用AOP打印調用具體業(yè)務(wù)邏輯前后的時(shí)間來(lái)計算整體調用時(shí)間,使用AOP捕獲異常,知道是哪里的調用導致了異常。
微服務(wù)架構
在單體架構中,由于所有的服務(wù)和組件都在一臺機器上,所以這些監控指標相對容易實(shí)現。但是隨著(zhù)業(yè)務(wù)的快速發(fā)展,單體架構必然會(huì )向微服務(wù)架構發(fā)展,具體如下:
如圖:一個(gè)稍微復雜的微服務(wù)架構
如果用戶(hù)反映某個(gè)頁(yè)面很慢,我們知道這個(gè)頁(yè)面的請求調用鏈是A -----> C -----> B -----> D,如何定位哪個(gè)可能是模塊在這個(gè)時(shí)候出現了問(wèn)題。每個(gè)服務(wù)Service A、B、C、D都有幾臺機器。您如何知道請求在哪臺特定機器上調用服務(wù)?
可以明顯看出,由于無(wú)法準確定位每個(gè)請求的準確路徑,微服務(wù)架構下存在以下痛點(diǎn):
分布式調用鏈就是為解決上述問(wèn)題而誕生的,其主要作用如下:
通過(guò)分布式跟蹤系統,可以很好地定位后續請求的各個(gè)具體請求鏈接,從而輕松實(shí)現請求鏈接跟蹤,輕松實(shí)現各模塊的性能瓶頸定位和分析。
分布式調用鏈標準——OpenTracing
了解了分布式調用鏈的作用,下面我們來(lái)看看分布式調用鏈的實(shí)現和原理是如何實(shí)現的。首先,為了解決不同分布式跟蹤系統API不兼容的問(wèn)題,OpenTracing規范誕生了。OpenTracing 是一個(gè)輕量級的規范化層,位于應用程序/庫和跟蹤或日志分析器之間。
通過(guò)這種方式,OpenTracing 使開(kāi)發(fā)人員能夠通過(guò)提供獨立于平臺和供應商的 API 輕松添加跟蹤系統的實(shí)現。
說(shuō)到這里,你有沒(méi)有想過(guò)在 Java 中有類(lèi)似的實(shí)現?還記得JDBC嗎,通過(guò)提供一套標準的接口供各個(gè)廠(chǎng)商實(shí)現,程序員可以針對接口進(jìn)行編程,而不用關(guān)心具體的實(shí)現。這里的接口其實(shí)就是一個(gè)標準,所以制定一套標準非常重要,可以實(shí)現組件的可插拔性。
接下來(lái)我們看一下OpenTracing的數據模型。主要有以下三種類(lèi)型:
理解這三個(gè)概念非常重要。為了讓大家更好的理解這三個(gè)概念,我特地畫(huà)了一張圖:
如圖所示,一個(gè)完整的訂單請求就是一個(gè)Trace。顯然,對于這個(gè)請求,必須有一個(gè)全局標識來(lái)標識這個(gè)請求。每次調用調用一個(gè)Span,每次調用都必須攜帶全局TraceId,這樣全局TraceId才能與每次調用相關(guān)聯(lián)。這個(gè)TraceId是通過(guò)SpanContext傳遞過(guò)來(lái)的。既然要傳輸,就必須按照協(xié)議來(lái)調用。如圖所示,如果把transport protocol比作汽車(chē),SpanContext比作貨物,Span比作公路,應該更容易理解。
了解了這三個(gè)概念之后,我再來(lái)看看分布式追蹤系統是如何在統一圖中采集
微服務(wù)調用鏈的:
我們可以看到底層有一個(gè)Collector一直在默默的采集
數據,那么每次調用Collector都會(huì )采集
什么信息:
有了這些信息,采集
器為每次調用采集
的信息如下:
根據這些圖表信息,顯然可以畫(huà)出調用鏈的可視化視圖如下:
這樣就實(shí)現了一個(gè)完整的分布式跟蹤系統。
上面的實(shí)現看起來(lái)很簡(jiǎn)單,但是有幾個(gè)問(wèn)題需要我們仔細思考:
下面我就來(lái)看看SkyWalking是如何解決以上四個(gè)問(wèn)題的。
SkyWalking的原理和架構設計
如何自動(dòng)采集
跨度數據

SkyWalking采用插件+javaagent的形式實(shí)現span數據的自動(dòng)采集,可以對代碼無(wú)侵入。插件意味著(zhù)可插拔和良好的擴展性(稍后我們將介紹如何定義自己的插件。)。
如何跨進(jìn)程傳遞上下文
我們知道數據一般分為header和body,就像http有header和body一樣,RocketMQ也有MessageHeader,Message Body,body一般收錄
業(yè)務(wù)數據,所以body不宜傳context,應該傳入表頭,如圖:
dubbo中的attachment相當于header,所以我們把context放在attachment中,這樣就解決了context傳遞的問(wèn)題。
提示:這里的上下文傳遞過(guò)程都是dubbo插件處理的,業(yè)務(wù)是不知道的。下面將分析這個(gè)插件是如何實(shí)現的。
traceId如何保證全局唯一性?
為了確保全局唯一性,我們可以使用分布式或本地生成的 ID。如果我們使用分布式,我們需要一個(gè)數字生成器。每個(gè)請求必須首先請求數字生成器。會(huì )有網(wǎng)絡(luò )調用開(kāi)銷(xiāo),所以SkyWalking最終采用了本地生成ID的方式,并且采用了著(zhù)名的snowflow算法,性能較高。
圖解:雪花算法生成的id
但是,雪花算法有一個(gè)眾所周知的問(wèn)題:時(shí)間回調,可能會(huì )導致重復生成id。那么SkyWalking是如何解決時(shí)間回調問(wèn)題的呢?
每產(chǎn)生一個(gè)id,就會(huì )記錄這個(gè)id產(chǎn)生的時(shí)間(lastTimestamp)。如果發(fā)現當前時(shí)間小于上次生成id的時(shí)間(lastTimestamp),說(shuō)明發(fā)生了時(shí)間回調,此時(shí)會(huì )生成一個(gè)隨機數作為traceId。
這里可能有些同學(xué)想認真點(diǎn)。他們可能認為生成的隨機數也將與生成的全局 id 相同。最好再加一層驗證。
這里想談?wù)勏到y設計中方案的選擇。首先,如果對生成的隨機數進(jìn)行唯一性校驗,無(wú)疑會(huì )多出一層調用,會(huì )有一定的性能損失,但實(shí)際上時(shí)間回調的概率很小。(發(fā)生后,由于機器時(shí)間的紊亂,業(yè)務(wù)會(huì )受到很大的影響,所以機器時(shí)間的調整一定要謹慎),而且生成的隨機數重合的概率也很小。綜合考慮,確實(shí)沒(méi)有必要再增加一個(gè)Layer全局唯一性校驗。對于技術(shù)方案的選擇,一定要避免過(guò)度設計,太多就是太多。
這么多請求,全部采集
會(huì )不會(huì )影響性能?
如果每一個(gè)請求都采集
起來(lái),毫無(wú)疑問(wèn)數據量會(huì )非常大,但是反過(guò)來(lái)想想,是不是真的有必要把每一個(gè)請求都采集
起來(lái)。其實(shí)大可不必。我們可以設置采樣頻率,只采樣部分數據,SkyWalking默認設置為3秒采樣3次,其余請求不采樣,如圖:
這樣的采樣頻率其實(shí)已經(jīng)足夠我們分析元器件的性能了。以每 3 秒 3 個(gè)樣本的頻率采樣數據有什么問(wèn)題?理想情況下,每次服務(wù)調用都是在同一個(gè)時(shí)間點(diǎn)(如下圖),所以每次都在同一個(gè)時(shí)間點(diǎn)采樣真的沒(méi)問(wèn)題。
但是在生產(chǎn)中,基本上不可能每個(gè)服務(wù)調用都在同一個(gè)時(shí)間點(diǎn)被調用,因為期間存在網(wǎng)絡(luò )調用延遲,實(shí)際調用情況很可能如下圖所示:
在這種情況下,有些調用會(huì )在服務(wù)A上被采樣,而不會(huì )在服務(wù)B和C上被采樣,無(wú)法分析調用鏈的性能。那么SkyWalking是如何解決的呢?
是這樣解決的:如果上游帶了Context(說(shuō)明上游已經(jīng)采樣),下游會(huì )強制采集數據。這使鏈接保持完整。
SkyWalking的基礎設施
SkyWalking 的基礎是以下架構??梢哉f(shuō)幾乎所有的分布式調用都是由以下幾個(gè)部分組成的:
首先當然是節點(diǎn)數據的定期采樣。數據采樣后定期上報,存儲在ES、MySQL等持久層。有了數據,自然要根據數據做可視化分析。
SkyWalking 的表現如何?
接下來(lái)想必大家比較關(guān)心的是SkyWalking的性能表現,那么我們就來(lái)看看官方的評測數據吧:
圖中藍色代表未使用SkyWalking時(shí)的表現,橙色代表使用SkyWalking時(shí)的表現。以上是TPS為5000時(shí)測得的數據,可以看出無(wú)論是CPU、內存,還是響應時(shí)間,使用SkyWalking帶帶來(lái)的性能損失幾乎可以忽略不計。
接下來(lái)看一下SkyWalking與業(yè)界另一知名分布式追蹤工具Zipkin、Pinpoint的對比(采樣率為1秒,線(xiàn)程數為500,總請求數時(shí)進(jìn)行對比)是 5000)??梢?jiàn)Zipkin(117ms)和PinPoint(201ms)在臨界響應時(shí)間上遠不如SkyWalking(22ms)!
從性能損失來(lái)看,SkyWalking 勝出!
讓我們看另一個(gè)指標:代碼的侵入性如何?ZipKin需要埋在應用中,代碼侵入性大。SkyWalking使用javaagent+插件修改字節碼。沒(méi)有侵入代碼。除了代碼的性能和侵入性,SkyWaking 表現出色,還有以下優(yōu)勢:
我司在分布式調用鏈上的實(shí)踐
SkyWalking在我司的應用架構
從上面可以看出SkyWalking有很多優(yōu)點(diǎn),那么它的組件我們都用上了嗎?事實(shí)上,并非如此。我們來(lái)看看它在我們公司的應用架構:
從圖中可以看出,我們只使用了SkyWalking代理進(jìn)行采樣,而放棄了“數據上報與分析”、“數據存儲”、“數據可視化”等其他三個(gè)組件。

那為什么不直接采用SkyWalking完整的解決方案呢,因為我們的Marvin監控生態(tài)在接入SkyWalking之前就已經(jīng)比較完整了。如果換成SkyWalking,就完全沒(méi)有必要了。兩者都能滿(mǎn)足我們的需求。其次,系統更換成本高。第三,如果重新連接到用戶(hù),學(xué)習成本非常高。
這也給了我們一個(gè)啟示:任何產(chǎn)品抓住機會(huì )都是非常重要的,后續產(chǎn)品的更換成本會(huì )非常高。搶占先機,就是搶占用戶(hù)心智。國外還是做不了Whatsapp一樣的,因為機會(huì )沒(méi)了。
另一方面,對于架構,沒(méi)有最好的,只有最合適的。架構設計的本質(zhì)是結合當前業(yè)務(wù)場(chǎng)景進(jìn)行折衷的平衡。
我們公司對SkyWalking做了哪些改造和實(shí)踐?
我公司主要做了以下改造和實(shí)踐:
1)預發(fā)布環(huán)境因調試需要強制采樣
從上面的分析可以看出,Collector是在后臺定時(shí)采樣的。這不好嗎?為什么我們需要實(shí)施強制采樣?或者排查定位問(wèn)題,有時(shí)線(xiàn)上出現問(wèn)題,我們希望在預發(fā)布上復現,希望看到這個(gè)請求完整的調用鏈,所以需要在預發(fā)布上進(jìn)行強制采樣。所以我們修改了Skywalking的dubbo插件來(lái)實(shí)現強制采樣。
我們在request cookie上放一個(gè)類(lèi)似force_flag = true的key-value對,表示我們要強制采樣。網(wǎng)關(guān)收到這個(gè)cookie后,會(huì )在dubbo附件中帶上鍵值對force_flag = true,然后skywalking的dubbo插件就可以根據這個(gè)來(lái)判斷是否是強制采樣。如果有這個(gè)值,就是強制采樣。如果沒(méi)有這個(gè)值,則進(jìn)行正常定時(shí)采樣。
2)實(shí)現更細粒度的采樣?
Ha 稱(chēng)為更細粒度的采樣。我們先來(lái)看一下skywalking默認的采樣方式,即uniform sampling。
我們知道這個(gè)方法默認是在3秒前采樣3次,其他的請求都被丟棄。在這種情況下,有一個(gè)問(wèn)題。假設3秒內本機有多次dubbo、mysql、redis調用,但是如果前3次都是dubbo調用的話(huà),其他像mysql、redis等調用無(wú)法采樣,所以我們修改了skywalking實(shí)現分組抽樣,如下:
也就是說(shuō)3秒內采樣redis、dubbo、mysql等3次就可以避免這個(gè)問(wèn)題。
3)如何在日志中嵌入traceId?
在輸出日志中嵌入traceId,方便我們排查問(wèn)題,所以打印traceId是非常有必要的,如何在日志中嵌入traceId呢?我們使用log4j,這里我們需要了解一下log4j的插件機制,log4j允許我們自定義插件輸出日志的格式,首先我們需要定義日志的格式,在自定義日志格式,作為賬號字符,如下:
然后我們實(shí)現一個(gè)log4j插件,如下:
首先,log4j插件需要定義一個(gè)類(lèi),該類(lèi)繼承LogEventPatternConverter類(lèi),并用標準Plugin聲明自己為Plugin,通過(guò)@ConverterKeys注解指定需要替換的占位符,然后在format方法中替換失去。這樣日志中就會(huì )出現我們想要的TraceId,如下:
4)我司開(kāi)發(fā)了哪些skywalking插件?
SkyWalking 實(shí)現了很多插件,但是沒(méi)有提供memcached 和druid 的插件,所以我們按照其規范開(kāi)發(fā)了這兩個(gè)插件:
插件是如何實(shí)現的,可以看到主要由三部分組成:
可能大家看了還是不太明白,下面就用dubbo plugin來(lái)簡(jiǎn)單說(shuō)明一下。我們知道,在dubbo服務(wù)中,每次請求都會(huì )收到來(lái)自netty的消息,提交給業(yè)務(wù)線(xiàn)程池處理,真正調用到業(yè)務(wù)方法時(shí)結束。中間經(jīng)過(guò)十幾個(gè)Filter處理。
而MonitorFilter可以攔截所有客戶(hù)端請求或者服務(wù)端處理請求,所以我們可以增強MonitorFilter,在調用invoke方法之前,將全局traceId注入到它的Invocation attachment中,從而保證請求到達真正業(yè)務(wù)之前全局traceId已經(jīng)存在邏輯。
那么顯然我們需要在插件中指定我們要增強的類(lèi)(MonitorFilter),并增強它的方法(invoke)。應該對此方法進(jìn)行哪些改進(jìn)?這就是攔截器(Inteceptor)要做的事情。我們來(lái)看看Dubbo插件(DubboInstrumentation)中的插樁。
我們來(lái)看看代碼中描述的攔截器(Inteceptor)是干什么的。關(guān)鍵步驟如下:
首先,beforeMethod表示這里的方法會(huì )在MonitorFilter的invoke方法執行之前被調用,而afterMethod與之對應,表示invoke方法執行之后才會(huì )執行增強邏輯。
其次,從第2點(diǎn)和第3點(diǎn)我們可以看出,無(wú)論是消費者還是提供者,其全局ID都做了相應的處理,以保證到達真正的業(yè)務(wù)層時(shí),全局traceid是可用的。在定義了 Instrumentation 和 Interceptor 之后,最后一步是在 skywalking.def 中指定定義的類(lèi)。
// skywalking-plugin.def 文件
dubbo=org.apache.skywalking.apm.plugin.asf.dubbo.DubboInstrumentation
這樣封裝的插件會(huì )增強MonitorFilter的invoke方法,在invoke方法執行前,將全局的traceId等操作注入到attachment中,對代碼都是靜默無(wú)侵入的。
總結
本文由淺入深地介紹了分布式跟蹤系統的原理。相信大家對它的作用和工作機制有了更深入的了解。尤其需要注意的是,在引入某項技術(shù)時(shí),一定要結合現有的技術(shù)架構,做出最佳方案。一個(gè)合理的選擇,就像SkyWalking有四個(gè)模塊,而我們公司只使用它的代理采樣功能。
沒(méi)有最好的技術(shù),只有最合適的技術(shù)。通過(guò)這篇文章,相信大家應該對SkyWalking的實(shí)現機制有了清晰的認識。本文只介紹SkyWalking的插件實(shí)現,但畢竟是工業(yè)級軟件。要了解它的深奧,還需要多閱讀源碼。
作者丨碼海源丨公眾號:碼海(ID:seaofcode)dbaplus社區歡迎技術(shù)人員投稿,投稿郵箱:
操作方法:流量工具流量寶使用方法
流量工具是用來(lái)輔助網(wǎng)站增加流量的。有很多交通工具。在之前的文章《輔助網(wǎng)站提升流量有哪些工具》中也提到了幾種工具,那么今天我們就來(lái)說(shuō)說(shuō)其中的一種,說(shuō)說(shuō)使用方法以及使用過(guò)程中需要注意的事項使用它,這個(gè)工具也是很多站長(cháng)經(jīng)常使用的,它就是“流量寶”。
FlowBao在一些免費工具中算是比較強大的,包括提升流量、增加人氣、廣告優(yōu)化、提升電商人氣、關(guān)鍵詞排名、使用Alexa等功能。功能很多,但是在我們seo行業(yè)用到的就那么幾個(gè),所以就說(shuō)說(shuō)seo行業(yè)相關(guān)功能的使用,其他的就不多說(shuō)了。
1.刷流量
刷流量可以提高網(wǎng)站的pv。在流量刷卡界面,有基礎設置、來(lái)源URL設置、點(diǎn)擊設置、流量時(shí)間控制、ua設置、流量區域設置。
1.基本設置
把我們要刷的網(wǎng)站復制粘貼到“網(wǎng)頁(yè)地址”寫(xiě)入框里,ip/pv比就是你要刷的ip和pv的比值,比如1:3,那么一個(gè)ip被瀏覽了3次,這里我們設置1:3就好了,PV停留時(shí)間可以根據自己的情況選擇,我一般是隨機選擇3-30秒。
2. 源地址設置
如果我們要訪(fǎng)問(wèn)百度用戶(hù),可以在“自定義來(lái)源”中選擇“百度搜索詞”。比如我們要增加長(cháng)沙seo這個(gè)詞的流量,那么我們就在上面寫(xiě)上“長(cháng)沙seo”就可以了。注意后面的%,是根據我們自己的字數分配的。比如你想讓那個(gè)詞的流量高,就可以多給分。如果只有一個(gè)字,建議不要超過(guò)50%。

3.點(diǎn)擊設置
如果您不在此處設置點(diǎn)擊 URL,該工具將默認刷新主頁(yè)。如果添加點(diǎn)擊網(wǎng)址,它會(huì )點(diǎn)擊我們填寫(xiě)的網(wǎng)址。點(diǎn)擊的百分比要適當添加,同樣不要超過(guò)50%。如果要點(diǎn)擊的頁(yè)面排名不錯,您可以添加更多。
4.流動(dòng)時(shí)間控制
通過(guò)流量時(shí)間控制,我們可以控制點(diǎn)擊的流量。網(wǎng)民可以在上網(wǎng)的時(shí)候多瀏覽,其他時(shí)間少用。這樣比較自然,效果也不錯。
5.ua設置
一般這里不用設置
6.交通區域設置
首先我們要去掉國外和港澳臺地區,根據自己的網(wǎng)站選擇國內地區。比如我的關(guān)鍵詞是“長(cháng)沙seo”,那么我要選擇的地區就是湖南,其他地區就不用選了。,如果你滑動(dòng)的詞不是區域詞,你也可以選擇更多的區域。
2. 關(guān)鍵詞 排名
基本設置:這里的基本設置同上,復制我們要掃描的頁(yè)面排名的網(wǎng)址關(guān)鍵詞,可以?huà)呙鑼?zhuān)欄,可以?huà)呙栉恼马?yè),也可以?huà)呙枋醉?yè)頁(yè)面,然后在“搜索引擎”中選擇,比如我們使用360搜索引擎,那就選擇360搜索引擎,百度等搜索引擎也一樣。

注意:我們刷的頁(yè)面關(guān)鍵詞一定要收錄
進(jìn)去,否則沒(méi)有效果,否則會(huì )影響我們的網(wǎng)站。
3.刷Alexa
刷Alexa并沒(méi)有那么復雜,填寫(xiě)我們的主域名即可。
4. 最后一步
流量寶首頁(yè)左下角和右下角都有“優(yōu)化速度選擇”。如果網(wǎng)站SEO基礎好,選擇高速模式。一般我們選擇普通模式,差一點(diǎn)就選擇低速模式。
也就是說(shuō),一個(gè)普通家庭養育一個(gè)孩子至少要花費70萬(wàn)元。
對于大多數普通工薪家庭來(lái)說(shuō),確實(shí)是一筆不小的數目。
小夏SEO有話(huà)要說(shuō):其實(shí)不管是什么工具,我們都不能太依賴(lài)它。該工具可以在短時(shí)間內提高網(wǎng)站的排名,但網(wǎng)站仍然需要優(yōu)化。沒(méi)有優(yōu)化的網(wǎng)站如果只用一些手段,成本會(huì )很大,這樣就失去了seo的意義。做seo的網(wǎng)站都希望低成本帶來(lái)轉化。
最后提醒,新站一定不要用這些工具,新站要好好優(yōu)化!
解決方案:一種基于A(yíng)I算法自動(dòng)采集并歸類(lèi)圖像的方法及系統與流程
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 149 次瀏覽 ? 2022-11-27 20:39
一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統
技術(shù)領(lǐng)域
1.本發(fā)明涉及圖像處理AI算法技術(shù)領(lǐng)域,具體涉及一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統。
背景技術(shù):
2、隨著(zhù)AI技術(shù)的普及,生活中的很多場(chǎng)景都可以看到智能化改造的身影,其中以計算機視覺(jué)識別技術(shù)為基礎的圖像識別技術(shù)尤為突出。機器視覺(jué)識別是計算機對圖像進(jìn)行處理、分析和理解,以識別各種模式的目標和物體的技術(shù)。簡(jiǎn)單的說(shuō),就是讓計算機學(xué)會(huì )從圖像中理解圖片。深度學(xué)習技術(shù)是用于理解圖像和形成模型的計算機視覺(jué)識別技術(shù)之一。計算機視覺(jué)識別技術(shù)可以對大量標記圖像進(jìn)行分析,得到人工智能算法推理模型。通過(guò)該模型,可以在更多的場(chǎng)景下使用,實(shí)現圖像識別過(guò)程。
3. 然而,在實(shí)際的智能化改造場(chǎng)景中,總會(huì )存在一般圖像庫無(wú)法分析的圖像特征,導致計算機視覺(jué)識別技術(shù)在實(shí)際場(chǎng)景中的表現不盡如人意。而且,如果在圖像分類(lèi)和標注的過(guò)程中使用人力,需要大量的人力。
技術(shù)實(shí)現要素:
4、針對上述技術(shù)問(wèn)題,本發(fā)明的目的在于提供一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統,以解決普通圖片庫無(wú)法分析的問(wèn)題圖像識別過(guò)程中圖像的特征,或者大量圖像需要人工分析標注和分類(lèi)帶來(lái)的人工成本高的問(wèn)題。
5、本發(fā)明采用以下技術(shù)方案:
6、一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法,包括以下步驟:
7、定期從視頻設備中采集圖像進(jìn)行處理;
8、將待處理圖像輸入到預設的ai算法模型中,通過(guò)ai算法模型得到待處理圖像的推理結果;
9、根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
10、可選的,通過(guò)ai算法模型得到待處理圖像的推理結果,包括:
11、ai算法模型獲取預設的圖像分類(lèi)規則和評分規則,根據圖像分類(lèi)規則和評分規則,得到待處理圖像的分類(lèi)結果。
12、可選地,推理結果包括待處理圖像的推理目標類(lèi)型、推理目標在待處理圖像中的位置、目標對應的推理分數中的一種或多種。
13、可選的,根據推理結果對待處理圖像進(jìn)行濾波,得到待處理圖像的分類(lèi)結果并存儲,包括:
14、剔除待處理圖像推理結果中目標類(lèi)型不滿(mǎn)足預設類(lèi)型范圍的待處理圖像,剔除推理得分小于預設閾值得分的待處理圖像,然后進(jìn)行分類(lèi)剩余待處理圖像按目標類(lèi)型存儲。
15、可選的,所述定時(shí)采集視頻設備的待處理圖像包括:
16、按照一定的時(shí)間間隔采集視頻設備輸出的視頻數據;
17、通過(guò)對視頻數據進(jìn)行抓圖獲取圖像或者通過(guò)分析視頻流獲取圖像;
18.將獲取的圖片存儲到本地,并向本地消息隊列推送圖片獲取消息。
19、可選的,ai算法模型采用yolov5模型,通過(guò)yolov5模型得到待處理圖像的推理結果,存儲推理結果,推理結果作為其他ai模型的訓練樣本.
20、一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)系統,包括:
21、圖像采集單元,用于定時(shí)采集視頻設備的待處理圖像;
22、推理單元,用于將所述待處理圖像輸入預設的ai算法模型,通過(guò)所述ai算法模型得到所述待處理圖像的推理結果;
23、分類(lèi)單元,用于根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
24、可選的,所述圖像采集單元包括:視頻接入模塊、定時(shí)執行模塊、圖像采集模塊、圖像存儲模塊和本地消息隊列模塊;其中,
25、視頻接入模塊,用于將視頻設備的視頻數據連接到圖像采集模塊;
26、定時(shí)執行模塊,用于按照一定的時(shí)間間隔調用圖像采集模塊,通過(guò)對視頻數據進(jìn)行圖像采集或分析視頻流來(lái)獲取圖像;
27、圖像存儲模塊,用于將獲取的圖像存儲在本地;
28、本地消息隊列模塊,用于接收和發(fā)送待處理的圖像信息。
29. 一種電子設備,包括: 至少一個(gè)處理器,以及通信連接到所述至少一個(gè)處理器的存儲器,其中所述存儲器存儲可由所述至少一個(gè)處理器執行的指令,并且所述指令由所述至少一個(gè)處理器執行,使得至少一個(gè)處理器可以執行基于A(yíng)I算法的自動(dòng)采集和分類(lèi)圖像的方法。
30、一種計算機存儲介質(zhì),其上存儲有計算機程序,當計算機程序被處理器執行時(shí),實(shí)現了基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法。
31、與現有技術(shù)相比,本發(fā)明的有益效果是:
32、本發(fā)明定時(shí)從視頻設備采集待處理圖像,將待處理圖像輸入到預設的ai算法模型中,通過(guò)ai算法模型得到待處理圖像的推理結果,并基于推理結果,對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲;其中,在采集待處理圖像的過(guò)程中,視頻設備可以為實(shí)際場(chǎng)景中的視頻設備,實(shí)際場(chǎng)景中的視頻設備采集圖像,使圖像數據更符合業(yè)務(wù)場(chǎng)景,而使用這些圖像數據訓練出來(lái)的模型會(huì )更貼合實(shí)際場(chǎng)景;并且在不更換現有視頻設備的情況下采集圖像,可減少大量視頻設備升級所帶來(lái)的巨大成本;通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練??梢员苊馐褂猛ㄓ脠D像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練??梢员苊馐褂猛ㄓ脠D像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。
圖紙說(shuō)明
33、圖1為本發(fā)明實(shí)施例提供的基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法的流程示意圖;
34、圖2為本發(fā)明實(shí)施例提供的視頻設備自動(dòng)獲取圖像的方法流程示意圖;
35、圖3為本發(fā)明實(shí)施例提供的AI算法對圖像進(jìn)行分類(lèi)的方法流程示意圖;
36. 圖。圖4是根據本發(fā)明實(shí)施例的基于A(yíng)I算法的圖像自動(dòng)采集和分類(lèi)系統的示意圖;
37. 圖。圖5為本發(fā)明實(shí)施例提供的電子設備的結構示意圖。
詳細方法
38、下面結合附圖和具體實(shí)施方法對本發(fā)明作進(jìn)一步說(shuō)明。需要說(shuō)明的是,在不沖突的前提下,下述各實(shí)施例或者技術(shù)特征可以任意組合形成新的實(shí)施例:
39、實(shí)施例一:
40、參見(jiàn)圖1-5,圖1所示的一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法包括以下步驟:
41、步驟s1:定時(shí)從視頻設備采集待處理圖像;
42、本實(shí)施例中,視頻設備可以是實(shí)際場(chǎng)景中的視頻設備,在實(shí)際場(chǎng)景中的視頻設備上進(jìn)行圖像采集,使得圖像數據更符合業(yè)務(wù)場(chǎng)景,模型使用這些圖像數據進(jìn)行訓練會(huì )更符合實(shí)際場(chǎng)景。并且采集圖像無(wú)需更換現有的視頻設備,減少了升級大量視頻設備的巨大成本。
43、步驟s2:將待處理圖像輸入預設的ai算法模型,通過(guò)ai算法模型得到待處理圖像的推理結果;
44、步驟s3:根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
45、可選的,通過(guò)ai算法模型得到待處理圖像的推理結果,包括:
46、ai算法模型獲取預設的圖像分類(lèi)規則和評分規則,根據圖像分類(lèi)規則和評分規則,得到待處理圖像的分類(lèi)結果。
47、在本實(shí)施例中,圖像分類(lèi)規則和評分規則可以根據實(shí)際需要進(jìn)行設置。
48、例如,預設評分規則定義為:推理得分為100分,如果待處理圖像的目標不在待處理圖像的中心位置,則扣50分,推理分值為50分,或者待處理圖像的圖像分辨率小于預設分辨率,再扣20分,推理分等于滿(mǎn)分減去扣除的推理分,即,推理分數=100-50-20=30分。
49、可選的,ai算法模型采用yolov5模型,通過(guò)yolov5模型得到待處理圖像的推理結果,存儲推理結果,將推理結果作為其他ai模型的訓練樣本。
50.需要說(shuō)明的是,yolov5模型起源于cnn的基本思想從分類(lèi)任務(wù)到檢測的擴展。它由主干網(wǎng)絡(luò )、頸部和頭部組成。實(shí)現步驟包括將數據輸入模型,獲取推理信息;nms處理獲取Forecast信息,此時(shí)會(huì )獲取到所有的預測幀;遍歷預測信息,同時(shí)獲取標簽信息進(jìn)行統計。
51. 在實(shí)際實(shí)現中,承載AI算法模型的硬件設備具體可以包括gpu芯片、計算內存、本地硬盤(pán)存儲、計算機的通用配置。GPU芯片和計算內存承載AI模型進(jìn)行推理和使用,本地硬盤(pán)用于存儲圖像數據。.
52、具體地,所述推理結果包括所述待處理圖像的推理目標類(lèi)型、所述推理目標在所述待處理圖像中的位置、以及所述目標對應的推理分數中的一種或多種。
53、可選地,根據推理結果對待處理圖像進(jìn)行濾波得到待處理圖像的分類(lèi)結果并存儲,包括:
54、去除待處理圖像推理結果中目標類(lèi)型不滿(mǎn)足預設類(lèi)型范圍的待處理圖像,去除推理得分小于預設閾值得分的待處理圖像,然后分類(lèi)剩余待處理圖像按目標類(lèi)型存儲。
55、具體實(shí)施時(shí),如果待處理圖像的推理結果中的目標類(lèi)型不在預設的類(lèi)型范圍內,則丟棄該待處理圖像。
56、例如,預設類(lèi)型范圍為人物圖像,而待處理圖像的推斷結果中的目標類(lèi)型為花卉,則確定待處理圖像不滿(mǎn)足預設類(lèi)型范圍。
57、例如預設閾值分值為60分,如果待處理圖像的推理分值為30分,則該待處理圖像將被淘汰,不進(jìn)入分類(lèi)存儲類(lèi)別;
58、如果待處理圖像的推理得分為80分,目標類(lèi)型為人物圖像,且預設類(lèi)型范圍為人物圖像,則可將待處理圖像分類(lèi)為人物圖像并存儲.
59、可選地,步驟s1可以包括:
60、步驟s11:每隔一定時(shí)間采集視頻設備輸出的視頻數據;
61、步驟s12:通過(guò)抓圖獲取視頻數據的圖像或者通過(guò)分析視頻流獲取圖像;
62、在本實(shí)施例中,圖像抓取可以使用視頻設備交付時(shí)附帶的設備廠(chǎng)商的設備截圖能力,視頻流獲取圖像是對視頻流進(jìn)行解析后從視頻流中截取圖像的能力。
63、步驟s13:將采集到的圖像存儲到本地,并向本地消息隊列推送圖像采集消息。
64、本實(shí)施例中,推送圖片獲取消息具體可以包括圖片本地存儲地址和設備信息。
65、上述實(shí)現過(guò)程中,定時(shí)從視頻設備采集待處理圖像,將待處理圖像輸入到預設的ai算法模型中,通過(guò)獲取待處理圖像的推理結果ai算法模型,根據推理結果篩選待處理圖像,得到待處理圖像的分類(lèi)結果,并存儲;其中,在采集待處理圖像的過(guò)程中,視頻設備可以為實(shí)際場(chǎng)景中的視頻設備,實(shí)際場(chǎng)景中的視頻設備采集圖像,使圖像數據更符合業(yè)務(wù)場(chǎng)景,而使用這些圖像數據訓練出來(lái)的模型會(huì )更符合實(shí)際場(chǎng)景。并且無(wú)需更換現有視頻設備即可獲取圖像,可減少升級大量視頻設備的巨大成本;通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。
66. 下面結合具體實(shí)施例對本發(fā)明的方法進(jìn)行說(shuō)明:
67. 1. 自動(dòng)采集視頻設備圖像;請參閱圖2,為本發(fā)明視頻設備自動(dòng)獲取圖像的方法流程示意圖。
68.1。視頻訪(fǎng)問(wèn);
69.2。定時(shí)圖像采集;
70.3。本地存儲;
71.4。將圖像信息發(fā)送到消息隊列。
72. 2.通過(guò)AI算法對圖片進(jìn)行分類(lèi);請參考圖。圖3為本發(fā)明AI算法對圖像進(jìn)行分類(lèi)的方法流程示意圖;
73.1。獲取算法啟動(dòng)時(shí)需要采集的圖像類(lèi)型規則和評分規則;
74.2。得到推理結果后,判斷推理結果中收錄
的目標類(lèi)型是否在目標規則規定的范圍內,如果不在,則丟棄該圖像;
75.3。判斷推理結果中收錄
的目標的推理分數是否高于評分規則設置,若低于規則則丟棄該圖像;
76.4。根據目標類(lèi)型對通過(guò)目標規則和評分規則規定范圍的圖像進(jìn)行分類(lèi)存儲。
77.實(shí)施例二:
78.請參考圖4,圖4為基于本發(fā)明AI算法的圖像自動(dòng)采集分類(lèi)系統,包括:
79、圖像獲取單元10,用于定時(shí)從視頻設備獲取待處理圖像;
80、推理單元20,用于將待處理圖像輸入預設的ai算法模型,通過(guò)ai算法模型得到待處理圖像的推理結果;
81、分類(lèi)單元30,用于根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
82、具體地,圖像獲取單元10包括:視頻訪(fǎng)問(wèn)模塊、定時(shí)執行模塊、圖像獲取模塊、圖像存儲模塊、本地消息隊列模塊;其中,
83、視頻接入模塊,用于將視頻設備的視頻數據連接到圖像采集模塊;
84、定時(shí)執行模塊,用于按照一定的時(shí)間間隔調用圖像采集模塊,通過(guò)對視頻數據進(jìn)行圖像采集或分析視頻流來(lái)獲取圖像;
85、圖像存儲模塊,用于將獲取的圖像存儲在本地;
86、本地消息隊列模塊,用于接收和發(fā)送待處理的圖像信息。
87、具體地,推理單元20和分類(lèi)單元30具體可以包括圖像接收模塊、ai算法推理模塊、圖像分類(lèi)模塊、數據存儲模塊、數據服務(wù)器和本地消息隊列。獲取圖像信息,AI算法推理模塊將圖像信息輸入AI模型進(jìn)行推理并得到推理結果,圖像分類(lèi)模塊根據推理結果對圖像進(jìn)行篩選,數據存儲模塊存儲將所選圖像的推理信息存入數據服務(wù)器。
88.實(shí)施例三:
89、圖5為本技術(shù)實(shí)施例提供的一種電子設備的結構示意圖。在本技術(shù)中,可以用圖5所示的示意圖來(lái)描述一個(gè)基于本技術(shù)實(shí)施例的AI算法的自動(dòng)采集。以及圖像分類(lèi)方法的電子設備100。
90、如圖9所示的電子設備的結構示意圖。如圖5所示,電子設備100包括一個(gè)或多個(gè)處理器102、一個(gè)或多個(gè)存儲設備104,這些部件之間通過(guò)總線(xiàn)系統和/或其他形式(未示出)互連。值得一提的是,圖1所示的電子裝置100的組件及結構僅由圖1所示的電子裝置100構成。
如果需要,電子設備可以具有圖1所示的一些部件。也可以具有圖5中未示出的其他部件和結構。5.
91、處理器102可以是中央處理器(cpu)或其他形式的具有數據處理能力和/或指令執行能力的處理單元,并且可以控制電子設備100中的其他組件執行期望的功能。
92.存儲設備104可以包括一個(gè)或多個(gè)計算機程序產(chǎn)品,其可以包括各種形式的計算機可讀存儲介質(zhì),例如易失性存儲器和/或非易失性存儲器。易失性存儲器可以包括例如隨機存取存儲器(ram)和/或高速緩沖存儲器(cache)。非易失性存儲器可包括例如只讀存儲器(rom)、硬盤(pán)、閃存等。計算機可讀存儲介質(zhì)上可以存儲有一個(gè)或多個(gè)計算機程序指令,處理器102可以執行該程序指令以實(shí)現下述技術(shù)實(shí)施例中描述的功能(由處理器實(shí)現)和/或其他期望的功能。各種應用程序和各種數據,例如應用程序使用和/或產(chǎn)生的各種數據,
93.本發(fā)明還提供了一種計算機存儲介質(zhì),其上存儲有計算機程序。本發(fā)明的方法如果以軟件功能單元的形式實(shí)現并作為獨立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲在計算機存儲介質(zhì)中?;诖死斫?,本發(fā)明實(shí)現了上述實(shí)施例的方法中的全部或部分過(guò)程,也可以通過(guò)計算機程序指令相關(guān)硬件來(lái)完成。該計算機程序可以存儲在一個(gè)計算機存儲介質(zhì)中,該計算機程序在處理器執行時(shí),可以實(shí)現上述各方法實(shí)施例中的步驟。其中,計算機程序包括計算機程序代碼,計算機程序代碼可以是源代碼、目標代碼、可執行文件或某種中間形式。計算機存儲介質(zhì)可以包括:任何能夠承載計算機程序代碼的實(shí)體或設備、記錄介質(zhì)、U盤(pán)、移動(dòng)硬盤(pán)、磁盤(pán)、光盤(pán)、計算機存儲器、只讀存儲器(rom, read-only memory), Random access memory (ram, random access memory), 電載波信號, 電信信號, 軟件分發(fā)介質(zhì)等。需要注意的是,計算機存儲介質(zhì)中收錄
的內容可以適當根據司法管轄區的立法和專(zhuān)利實(shí)踐的要求增加或減少。例如,在一些司法管轄區,根據立法和專(zhuān)利慣例,計算機存儲介質(zhì)不包括電載波信號和電信信號。
94、對于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),根據上述技術(shù)方案和思想,還可以做出其他各種相應的變化和變形,這些變化和變形均應收錄
在本發(fā)明的權利要求的保護范圍之內。
解決方案:NLP之文本匹配及語(yǔ)義匹配應用介紹
Pytorch-based Chinese semantic similarity matching model Pytorch-based Chinese semantic similarity matching model 本項目會(huì )持續更新,對比目前業(yè)界主流的中文文本匹配模型。運行環(huán)境:python3.7、pytorch1.2、transformers2.5.1 數據集使用LCQMC數據(對一個(gè)句子對進(jìn)行分類(lèi),判斷兩個(gè)句子的語(yǔ)義是否相同(兩個(gè)分類(lèi)任務(wù)))。因為懷疑數據,所以不提供下載。有需要的可以向官方提交數據申請,解壓數據。到數據文件夾。模型評價(jià)指標有:ACC、AUC和預測總耗時(shí)。Embedding:本項目的輸入統一采用分詞策略,所以通過(guò)維基百科中文語(yǔ)料庫,詞向量被訓練為嵌入。訓練語(yǔ)料、向量模型和詞匯可通過(guò)百度網(wǎng)盤(pán)下載。鏈接: : 提取碼:s830 模型文件:本項目訓練的模型文件(不一定是最優(yōu)的,可以通過(guò)超參繼續調優(yōu)),或者通過(guò)網(wǎng)盤(pán)下載。鏈接:: 提取碼:s830測試集結果對比:模型ACC AUC耗時(shí)(s
查看全部
解決方案:一種基于A(yíng)I算法自動(dòng)采集并歸類(lèi)圖像的方法及系統與流程
一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統
技術(shù)領(lǐng)域
1.本發(fā)明涉及圖像處理AI算法技術(shù)領(lǐng)域,具體涉及一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統。
背景技術(shù):
2、隨著(zhù)AI技術(shù)的普及,生活中的很多場(chǎng)景都可以看到智能化改造的身影,其中以計算機視覺(jué)識別技術(shù)為基礎的圖像識別技術(shù)尤為突出。機器視覺(jué)識別是計算機對圖像進(jìn)行處理、分析和理解,以識別各種模式的目標和物體的技術(shù)。簡(jiǎn)單的說(shuō),就是讓計算機學(xué)會(huì )從圖像中理解圖片。深度學(xué)習技術(shù)是用于理解圖像和形成模型的計算機視覺(jué)識別技術(shù)之一。計算機視覺(jué)識別技術(shù)可以對大量標記圖像進(jìn)行分析,得到人工智能算法推理模型。通過(guò)該模型,可以在更多的場(chǎng)景下使用,實(shí)現圖像識別過(guò)程。
3. 然而,在實(shí)際的智能化改造場(chǎng)景中,總會(huì )存在一般圖像庫無(wú)法分析的圖像特征,導致計算機視覺(jué)識別技術(shù)在實(shí)際場(chǎng)景中的表現不盡如人意。而且,如果在圖像分類(lèi)和標注的過(guò)程中使用人力,需要大量的人力。
技術(shù)實(shí)現要素:
4、針對上述技術(shù)問(wèn)題,本發(fā)明的目的在于提供一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法及系統,以解決普通圖片庫無(wú)法分析的問(wèn)題圖像識別過(guò)程中圖像的特征,或者大量圖像需要人工分析標注和分類(lèi)帶來(lái)的人工成本高的問(wèn)題。
5、本發(fā)明采用以下技術(shù)方案:
6、一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法,包括以下步驟:
7、定期從視頻設備中采集圖像進(jìn)行處理;
8、將待處理圖像輸入到預設的ai算法模型中,通過(guò)ai算法模型得到待處理圖像的推理結果;
9、根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
10、可選的,通過(guò)ai算法模型得到待處理圖像的推理結果,包括:
11、ai算法模型獲取預設的圖像分類(lèi)規則和評分規則,根據圖像分類(lèi)規則和評分規則,得到待處理圖像的分類(lèi)結果。
12、可選地,推理結果包括待處理圖像的推理目標類(lèi)型、推理目標在待處理圖像中的位置、目標對應的推理分數中的一種或多種。
13、可選的,根據推理結果對待處理圖像進(jìn)行濾波,得到待處理圖像的分類(lèi)結果并存儲,包括:
14、剔除待處理圖像推理結果中目標類(lèi)型不滿(mǎn)足預設類(lèi)型范圍的待處理圖像,剔除推理得分小于預設閾值得分的待處理圖像,然后進(jìn)行分類(lèi)剩余待處理圖像按目標類(lèi)型存儲。
15、可選的,所述定時(shí)采集視頻設備的待處理圖像包括:
16、按照一定的時(shí)間間隔采集視頻設備輸出的視頻數據;
17、通過(guò)對視頻數據進(jìn)行抓圖獲取圖像或者通過(guò)分析視頻流獲取圖像;
18.將獲取的圖片存儲到本地,并向本地消息隊列推送圖片獲取消息。
19、可選的,ai算法模型采用yolov5模型,通過(guò)yolov5模型得到待處理圖像的推理結果,存儲推理結果,推理結果作為其他ai模型的訓練樣本.
20、一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)系統,包括:
21、圖像采集單元,用于定時(shí)采集視頻設備的待處理圖像;
22、推理單元,用于將所述待處理圖像輸入預設的ai算法模型,通過(guò)所述ai算法模型得到所述待處理圖像的推理結果;
23、分類(lèi)單元,用于根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
24、可選的,所述圖像采集單元包括:視頻接入模塊、定時(shí)執行模塊、圖像采集模塊、圖像存儲模塊和本地消息隊列模塊;其中,
25、視頻接入模塊,用于將視頻設備的視頻數據連接到圖像采集模塊;
26、定時(shí)執行模塊,用于按照一定的時(shí)間間隔調用圖像采集模塊,通過(guò)對視頻數據進(jìn)行圖像采集或分析視頻流來(lái)獲取圖像;
27、圖像存儲模塊,用于將獲取的圖像存儲在本地;
28、本地消息隊列模塊,用于接收和發(fā)送待處理的圖像信息。
29. 一種電子設備,包括: 至少一個(gè)處理器,以及通信連接到所述至少一個(gè)處理器的存儲器,其中所述存儲器存儲可由所述至少一個(gè)處理器執行的指令,并且所述指令由所述至少一個(gè)處理器執行,使得至少一個(gè)處理器可以執行基于A(yíng)I算法的自動(dòng)采集和分類(lèi)圖像的方法。

30、一種計算機存儲介質(zhì),其上存儲有計算機程序,當計算機程序被處理器執行時(shí),實(shí)現了基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法。
31、與現有技術(shù)相比,本發(fā)明的有益效果是:
32、本發(fā)明定時(shí)從視頻設備采集待處理圖像,將待處理圖像輸入到預設的ai算法模型中,通過(guò)ai算法模型得到待處理圖像的推理結果,并基于推理結果,對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲;其中,在采集待處理圖像的過(guò)程中,視頻設備可以為實(shí)際場(chǎng)景中的視頻設備,實(shí)際場(chǎng)景中的視頻設備采集圖像,使圖像數據更符合業(yè)務(wù)場(chǎng)景,而使用這些圖像數據訓練出來(lái)的模型會(huì )更貼合實(shí)際場(chǎng)景;并且在不更換現有視頻設備的情況下采集圖像,可減少大量視頻設備升級所帶來(lái)的巨大成本;通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。通過(guò)AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,可以避免使用通用圖像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練??梢员苊馐褂猛ㄓ脠D像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練??梢员苊馐褂猛ㄓ脠D像庫直接分析圖像,無(wú)法分析圖像特征的問(wèn)題;同時(shí),一方面可以降低人工篩選成本;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型的訓練。
圖紙說(shuō)明
33、圖1為本發(fā)明實(shí)施例提供的基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法的流程示意圖;
34、圖2為本發(fā)明實(shí)施例提供的視頻設備自動(dòng)獲取圖像的方法流程示意圖;
35、圖3為本發(fā)明實(shí)施例提供的AI算法對圖像進(jìn)行分類(lèi)的方法流程示意圖;
36. 圖。圖4是根據本發(fā)明實(shí)施例的基于A(yíng)I算法的圖像自動(dòng)采集和分類(lèi)系統的示意圖;
37. 圖。圖5為本發(fā)明實(shí)施例提供的電子設備的結構示意圖。
詳細方法
38、下面結合附圖和具體實(shí)施方法對本發(fā)明作進(jìn)一步說(shuō)明。需要說(shuō)明的是,在不沖突的前提下,下述各實(shí)施例或者技術(shù)特征可以任意組合形成新的實(shí)施例:
39、實(shí)施例一:
40、參見(jiàn)圖1-5,圖1所示的一種基于A(yíng)I算法的圖像自動(dòng)采集分類(lèi)方法包括以下步驟:
41、步驟s1:定時(shí)從視頻設備采集待處理圖像;
42、本實(shí)施例中,視頻設備可以是實(shí)際場(chǎng)景中的視頻設備,在實(shí)際場(chǎng)景中的視頻設備上進(jìn)行圖像采集,使得圖像數據更符合業(yè)務(wù)場(chǎng)景,模型使用這些圖像數據進(jìn)行訓練會(huì )更符合實(shí)際場(chǎng)景。并且采集圖像無(wú)需更換現有的視頻設備,減少了升級大量視頻設備的巨大成本。
43、步驟s2:將待處理圖像輸入預設的ai算法模型,通過(guò)ai算法模型得到待處理圖像的推理結果;
44、步驟s3:根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
45、可選的,通過(guò)ai算法模型得到待處理圖像的推理結果,包括:
46、ai算法模型獲取預設的圖像分類(lèi)規則和評分規則,根據圖像分類(lèi)規則和評分規則,得到待處理圖像的分類(lèi)結果。
47、在本實(shí)施例中,圖像分類(lèi)規則和評分規則可以根據實(shí)際需要進(jìn)行設置。
48、例如,預設評分規則定義為:推理得分為100分,如果待處理圖像的目標不在待處理圖像的中心位置,則扣50分,推理分值為50分,或者待處理圖像的圖像分辨率小于預設分辨率,再扣20分,推理分等于滿(mǎn)分減去扣除的推理分,即,推理分數=100-50-20=30分。
49、可選的,ai算法模型采用yolov5模型,通過(guò)yolov5模型得到待處理圖像的推理結果,存儲推理結果,將推理結果作為其他ai模型的訓練樣本。
50.需要說(shuō)明的是,yolov5模型起源于cnn的基本思想從分類(lèi)任務(wù)到檢測的擴展。它由主干網(wǎng)絡(luò )、頸部和頭部組成。實(shí)現步驟包括將數據輸入模型,獲取推理信息;nms處理獲取Forecast信息,此時(shí)會(huì )獲取到所有的預測幀;遍歷預測信息,同時(shí)獲取標簽信息進(jìn)行統計。
51. 在實(shí)際實(shí)現中,承載AI算法模型的硬件設備具體可以包括gpu芯片、計算內存、本地硬盤(pán)存儲、計算機的通用配置。GPU芯片和計算內存承載AI模型進(jìn)行推理和使用,本地硬盤(pán)用于存儲圖像數據。.
52、具體地,所述推理結果包括所述待處理圖像的推理目標類(lèi)型、所述推理目標在所述待處理圖像中的位置、以及所述目標對應的推理分數中的一種或多種。
53、可選地,根據推理結果對待處理圖像進(jìn)行濾波得到待處理圖像的分類(lèi)結果并存儲,包括:
54、去除待處理圖像推理結果中目標類(lèi)型不滿(mǎn)足預設類(lèi)型范圍的待處理圖像,去除推理得分小于預設閾值得分的待處理圖像,然后分類(lèi)剩余待處理圖像按目標類(lèi)型存儲。
55、具體實(shí)施時(shí),如果待處理圖像的推理結果中的目標類(lèi)型不在預設的類(lèi)型范圍內,則丟棄該待處理圖像。
56、例如,預設類(lèi)型范圍為人物圖像,而待處理圖像的推斷結果中的目標類(lèi)型為花卉,則確定待處理圖像不滿(mǎn)足預設類(lèi)型范圍。
57、例如預設閾值分值為60分,如果待處理圖像的推理分值為30分,則該待處理圖像將被淘汰,不進(jìn)入分類(lèi)存儲類(lèi)別;
58、如果待處理圖像的推理得分為80分,目標類(lèi)型為人物圖像,且預設類(lèi)型范圍為人物圖像,則可將待處理圖像分類(lèi)為人物圖像并存儲.
59、可選地,步驟s1可以包括:
60、步驟s11:每隔一定時(shí)間采集視頻設備輸出的視頻數據;
61、步驟s12:通過(guò)抓圖獲取視頻數據的圖像或者通過(guò)分析視頻流獲取圖像;

62、在本實(shí)施例中,圖像抓取可以使用視頻設備交付時(shí)附帶的設備廠(chǎng)商的設備截圖能力,視頻流獲取圖像是對視頻流進(jìn)行解析后從視頻流中截取圖像的能力。
63、步驟s13:將采集到的圖像存儲到本地,并向本地消息隊列推送圖像采集消息。
64、本實(shí)施例中,推送圖片獲取消息具體可以包括圖片本地存儲地址和設備信息。
65、上述實(shí)現過(guò)程中,定時(shí)從視頻設備采集待處理圖像,將待處理圖像輸入到預設的ai算法模型中,通過(guò)獲取待處理圖像的推理結果ai算法模型,根據推理結果篩選待處理圖像,得到待處理圖像的分類(lèi)結果,并存儲;其中,在采集待處理圖像的過(guò)程中,視頻設備可以為實(shí)際場(chǎng)景中的視頻設備,實(shí)際場(chǎng)景中的視頻設備采集圖像,使圖像數據更符合業(yè)務(wù)場(chǎng)景,而使用這些圖像數據訓練出來(lái)的模型會(huì )更符合實(shí)際場(chǎng)景。并且無(wú)需更換現有視頻設備即可獲取圖像,可減少升級大量視頻設備的巨大成本;通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。通過(guò)使用AI算法模型獲取待處理圖像的推理結果,進(jìn)而進(jìn)行圖像篩選,一方面可以減少人工操作。篩查費用;另一方面,可以將推理結果保留為圖像標注信息,例如可以將推理結果中待處理圖像中的目標位置保留為圖像標注信息,這樣可以減少巨大的人力成本標注圖像,也可以用于其他AI模型訓練。
66. 下面結合具體實(shí)施例對本發(fā)明的方法進(jìn)行說(shuō)明:
67. 1. 自動(dòng)采集視頻設備圖像;請參閱圖2,為本發(fā)明視頻設備自動(dòng)獲取圖像的方法流程示意圖。
68.1。視頻訪(fǎng)問(wèn);
69.2。定時(shí)圖像采集;
70.3。本地存儲;
71.4。將圖像信息發(fā)送到消息隊列。
72. 2.通過(guò)AI算法對圖片進(jìn)行分類(lèi);請參考圖。圖3為本發(fā)明AI算法對圖像進(jìn)行分類(lèi)的方法流程示意圖;
73.1。獲取算法啟動(dòng)時(shí)需要采集的圖像類(lèi)型規則和評分規則;
74.2。得到推理結果后,判斷推理結果中收錄
的目標類(lèi)型是否在目標規則規定的范圍內,如果不在,則丟棄該圖像;
75.3。判斷推理結果中收錄
的目標的推理分數是否高于評分規則設置,若低于規則則丟棄該圖像;
76.4。根據目標類(lèi)型對通過(guò)目標規則和評分規則規定范圍的圖像進(jìn)行分類(lèi)存儲。
77.實(shí)施例二:
78.請參考圖4,圖4為基于本發(fā)明AI算法的圖像自動(dòng)采集分類(lèi)系統,包括:
79、圖像獲取單元10,用于定時(shí)從視頻設備獲取待處理圖像;
80、推理單元20,用于將待處理圖像輸入預設的ai算法模型,通過(guò)ai算法模型得到待處理圖像的推理結果;
81、分類(lèi)單元30,用于根據推理結果對待處理圖像進(jìn)行篩選,得到待處理圖像的分類(lèi)結果,并存儲。
82、具體地,圖像獲取單元10包括:視頻訪(fǎng)問(wèn)模塊、定時(shí)執行模塊、圖像獲取模塊、圖像存儲模塊、本地消息隊列模塊;其中,
83、視頻接入模塊,用于將視頻設備的視頻數據連接到圖像采集模塊;
84、定時(shí)執行模塊,用于按照一定的時(shí)間間隔調用圖像采集模塊,通過(guò)對視頻數據進(jìn)行圖像采集或分析視頻流來(lái)獲取圖像;
85、圖像存儲模塊,用于將獲取的圖像存儲在本地;
86、本地消息隊列模塊,用于接收和發(fā)送待處理的圖像信息。
87、具體地,推理單元20和分類(lèi)單元30具體可以包括圖像接收模塊、ai算法推理模塊、圖像分類(lèi)模塊、數據存儲模塊、數據服務(wù)器和本地消息隊列。獲取圖像信息,AI算法推理模塊將圖像信息輸入AI模型進(jìn)行推理并得到推理結果,圖像分類(lèi)模塊根據推理結果對圖像進(jìn)行篩選,數據存儲模塊存儲將所選圖像的推理信息存入數據服務(wù)器。
88.實(shí)施例三:
89、圖5為本技術(shù)實(shí)施例提供的一種電子設備的結構示意圖。在本技術(shù)中,可以用圖5所示的示意圖來(lái)描述一個(gè)基于本技術(shù)實(shí)施例的AI算法的自動(dòng)采集。以及圖像分類(lèi)方法的電子設備100。
90、如圖9所示的電子設備的結構示意圖。如圖5所示,電子設備100包括一個(gè)或多個(gè)處理器102、一個(gè)或多個(gè)存儲設備104,這些部件之間通過(guò)總線(xiàn)系統和/或其他形式(未示出)互連。值得一提的是,圖1所示的電子裝置100的組件及結構僅由圖1所示的電子裝置100構成。
如果需要,電子設備可以具有圖1所示的一些部件。也可以具有圖5中未示出的其他部件和結構。5.
91、處理器102可以是中央處理器(cpu)或其他形式的具有數據處理能力和/或指令執行能力的處理單元,并且可以控制電子設備100中的其他組件執行期望的功能。
92.存儲設備104可以包括一個(gè)或多個(gè)計算機程序產(chǎn)品,其可以包括各種形式的計算機可讀存儲介質(zhì),例如易失性存儲器和/或非易失性存儲器。易失性存儲器可以包括例如隨機存取存儲器(ram)和/或高速緩沖存儲器(cache)。非易失性存儲器可包括例如只讀存儲器(rom)、硬盤(pán)、閃存等。計算機可讀存儲介質(zhì)上可以存儲有一個(gè)或多個(gè)計算機程序指令,處理器102可以執行該程序指令以實(shí)現下述技術(shù)實(shí)施例中描述的功能(由處理器實(shí)現)和/或其他期望的功能。各種應用程序和各種數據,例如應用程序使用和/或產(chǎn)生的各種數據,
93.本發(fā)明還提供了一種計算機存儲介質(zhì),其上存儲有計算機程序。本發(fā)明的方法如果以軟件功能單元的形式實(shí)現并作為獨立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲在計算機存儲介質(zhì)中?;诖死斫?,本發(fā)明實(shí)現了上述實(shí)施例的方法中的全部或部分過(guò)程,也可以通過(guò)計算機程序指令相關(guān)硬件來(lái)完成。該計算機程序可以存儲在一個(gè)計算機存儲介質(zhì)中,該計算機程序在處理器執行時(shí),可以實(shí)現上述各方法實(shí)施例中的步驟。其中,計算機程序包括計算機程序代碼,計算機程序代碼可以是源代碼、目標代碼、可執行文件或某種中間形式。計算機存儲介質(zhì)可以包括:任何能夠承載計算機程序代碼的實(shí)體或設備、記錄介質(zhì)、U盤(pán)、移動(dòng)硬盤(pán)、磁盤(pán)、光盤(pán)、計算機存儲器、只讀存儲器(rom, read-only memory), Random access memory (ram, random access memory), 電載波信號, 電信信號, 軟件分發(fā)介質(zhì)等。需要注意的是,計算機存儲介質(zhì)中收錄
的內容可以適當根據司法管轄區的立法和專(zhuān)利實(shí)踐的要求增加或減少。例如,在一些司法管轄區,根據立法和專(zhuān)利慣例,計算機存儲介質(zhì)不包括電載波信號和電信信號。
94、對于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),根據上述技術(shù)方案和思想,還可以做出其他各種相應的變化和變形,這些變化和變形均應收錄
在本發(fā)明的權利要求的保護范圍之內。
解決方案:NLP之文本匹配及語(yǔ)義匹配應用介紹

Pytorch-based Chinese semantic similarity matching model Pytorch-based Chinese semantic similarity matching model 本項目會(huì )持續更新,對比目前業(yè)界主流的中文文本匹配模型。運行環(huán)境:python3.7、pytorch1.2、transformers2.5.1 數據集使用LCQMC數據(對一個(gè)句子對進(jìn)行分類(lèi),判斷兩個(gè)句子的語(yǔ)義是否相同(兩個(gè)分類(lèi)任務(wù)))。因為懷疑數據,所以不提供下載。有需要的可以向官方提交數據申請,解壓數據。到數據文件夾。模型評價(jià)指標有:ACC、AUC和預測總耗時(shí)。Embedding:本項目的輸入統一采用分詞策略,所以通過(guò)維基百科中文語(yǔ)料庫,詞向量被訓練為嵌入。訓練語(yǔ)料、向量模型和詞匯可通過(guò)百度網(wǎng)盤(pán)下載。鏈接: : 提取碼:s830 模型文件:本項目訓練的模型文件(不一定是最優(yōu)的,可以通過(guò)超參繼續調優(yōu)),或者通過(guò)網(wǎng)盤(pán)下載。鏈接:: 提取碼:s830測試集結果對比:模型ACC AUC耗時(shí)(s
解決方案:百度號稱(chēng)人臉識別算法國內第一?安防廠(chǎng)商表示不服...
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 115 次瀏覽 ? 2022-11-27 09:41
1月20日晚,萬(wàn)眾矚目的“人機大戰”在《最強大腦》的舞臺上演。最終的結果是,百度的人工智能機器人“小度”戰勝了“水哥”王玉衡。游戲規則是兩名玩家同時(shí)觀(guān)察3個(gè)人的模糊影像,然后從30人中找出將要被選中的3人。然而節目一播出,就遭到不少網(wǎng)友的質(zhì)疑,“黑幕”、“百度公關(guān)廣告”之聲甚囂塵上。即使魏醫生和王禹衡澄清直播中沒(méi)有黑幕,也依然無(wú)法打消網(wǎng)友的疑慮。
視頻數據顯示,人們戴著(zhù)口罩和帽子,周?chē)饩€(xiàn)昏暗
也是人機大戰,也是機器打敗人類(lèi)。為什么AlphaGo在世界上取得了震撼的效果,小度卻不斷被質(zhì)疑?一個(gè)重要的原因是廣播方式不同。即使有科學(xué)屬性,《最強大腦》也只是一檔綜藝節目,經(jīng)過(guò)后期制作,播放效果遠沒(méi)有直播帶來(lái)的震撼和真實(shí)。
事實(shí)如何我們不得而知,這也不是我們今天討論的重點(diǎn)(有興趣的朋友可以上網(wǎng)搜索,網(wǎng)友和百度都給出了相關(guān)解釋?zhuān)?。今天我們要說(shuō)的是,百度號稱(chēng)是國內人臉識別算法第一。有效依據是什么?并且,在安防領(lǐng)域,人臉識別技術(shù)到底走到了多遠。
1個(gè)
LFW 和 FDDB 排名有意義嗎?
相信研究過(guò)人臉識別算法的同學(xué)對LFW和FDDB也有一定的了解。LFW(Labeled Faces in the Wild)和FDDB(Face Detection Data Set and Benchmark)是全球權威的人臉識別檢測平臺。做人臉識別算法的公司或多或少都會(huì )用到LFW和FDDB做檢測。
LFW 數據庫共有 5749 個(gè)人的 13233 張圖像,其中 1680 個(gè)人有兩張或更多圖像,4069 個(gè)人只有一張圖像。FDDB和LFW一樣,是馬薩諸塞大學(xué)的人臉數據庫。收錄
2845張圖片,共5171張人臉作為測試集。測試集的范圍包括:不同姿勢、不同分辨率、旋轉和遮擋的圖片。
百度號稱(chēng)人臉識別算法第一,因為2015年百度在LFW上的準確率達到了99.77%,排名第一。2016年,小米和大華分別獲得了FDDB和LFW數據集的第一名。
LFW和FDDB的權威性毋庸置疑,但值得說(shuō)明的是,由于LFW和FDDB的樣本是固定的,相當于一場(chǎng)考試。您已經(jīng)知道這些問(wèn)題,然后不斷改進(jìn)您的答案。這種計分意義不大。
2個(gè)
人臉識別在安防領(lǐng)域有多厲害
當我們談?wù)撊四樧R別時(shí),會(huì )出現兩個(gè)常見(jiàn)且重要的概念,即 1:1 和 1:N。
簡(jiǎn)單來(lái)說(shuō),1:1就是一對一的人臉“核對”,解決的是“這個(gè)人是你嗎?”的問(wèn)題。1:N是從眾多對象中找出目標人物,解決“這個(gè)人是誰(shuí)”的問(wèn)題。
人臉識別考勤、安檢時(shí)的身份驗證等應用,都是1:1概念下的人臉識別應用。
1:N更多的用在安防行業(yè),比如在人多的地方安裝人臉識別防控系統。它與1:1最大的區別是1:N采集的是動(dòng)態(tài)數據,會(huì )根據位置、環(huán)境、光線(xiàn)等不同影響識別的準確性和效果。
一個(gè)基本的人臉識別布控系統將具備以下功能:
(1)人臉抓拍追蹤功能
人臉抓拍是指在一張圖片或一幀視頻流中檢測到人,并將人從背景中分離出來(lái),并自動(dòng)保存。人像追蹤是指利用人像抓拍技術(shù),在指定人像在相機抓拍范圍內移動(dòng)時(shí)自動(dòng)進(jìn)行跟蹤。
(2)人臉識別計算
人臉識別分為驗證型和搜索型兩種比對計算方式。驗證方法是指將拍攝的人像或指定的人像與數據庫中注冊的對象進(jìn)行比對,判斷是否為同一人。搜索式比對是指搜索數據庫中所有已注冊的人像,查找是否存在指定的人像。
(3) 人臉的建模與檢索
可以對注冊的人像數據進(jìn)行建模,提取人臉特征,生成的人臉模板保存在數據庫中。在進(jìn)行人臉搜索時(shí),對指定的人像進(jìn)行建模,然后與數據庫中所有人的模板進(jìn)行比對識別,最后根據比對的相似度值列出最相似的人物列表。
因此,數據成為提高人臉識別算法性能的關(guān)鍵因素。許多應用更關(guān)注低誤報條件下的識別性能。比如刷臉支付需要將錯誤接受率控制在0.00001以?xún)?,所以未?lái)的算法改進(jìn)也會(huì )著(zhù)重于提高低誤報的識別率。對于安防監控,可能需要控制在0.00000001以?xún)龋ū热鐜资f(wàn)人的登記庫),安防領(lǐng)域的人臉識別技術(shù)更具挑戰性。
隨著(zhù)深度學(xué)習的演進(jìn),基于深度學(xué)習的人臉識別將取得突破性進(jìn)展。它所需要的只是越來(lái)越多的數據和樣本。數據和樣本越多,重復訓練的次數越多,就越容易捕捉到準確的結果,給你準確的答案。因此,當一套人臉識別系統設備全面引入深度學(xué)習算法后,幾乎完美解決了以往長(cháng)期存在的各種變化。
但即便如此,人臉識別技術(shù)仍面臨實(shí)際應用等諸多挑戰。如何在各種復雜場(chǎng)景下成功應用,還需要眾多安防廠(chǎng)商的共同努力。
解決方案:超智能的AI偽原創(chuàng )工具是?
不知道大家有沒(méi)有注意到,大家在網(wǎng)上看到的偽原創(chuàng )工具,大多只是用于偽原創(chuàng )文章。不過(guò)今天要分享的智能AI文章偽原創(chuàng )工具,不僅可以用于文章偽原創(chuàng ),還可以搜索文章。網(wǎng)上這種智能AI偽原創(chuàng )工具的文章應該不多,至少我沒(méi)見(jiàn)過(guò)多少,所以今天想把這個(gè)好東西分享給大家,讓大家有更便捷的工作方式。就是這款智能偽原創(chuàng )AI軟件優(yōu)采云
,你只需要在優(yōu)采云
的全網(wǎng)素材中搜索一篇你想寫(xiě)的文章,系統就會(huì )對整篇文章進(jìn)行語(yǔ)義分析軟文文字實(shí)現智能偽造原創(chuàng ),您可以重新創(chuàng )建一篇新文章。應該只需要正常時(shí)間的四分之一,節省大量時(shí)間。
我們以前在網(wǎng)上找的工具有:搜索文章和偽原創(chuàng )文章是兩種不同的工具。但是想要得到偽原創(chuàng )文章,首先要采集
文章,然后再找一個(gè)可用的偽原創(chuàng )工具對偽原創(chuàng )文章進(jìn)行處理。也就是說(shuō),如果你想對采集
文章做偽原創(chuàng )處理,但是又沒(méi)有好的工具,只能直接使用采集
文章。但這往往是無(wú)效的,發(fā)出文章收錄的效果并不好。
所以最好的辦法是:搜索到的文章可以同時(shí)偽原創(chuàng )。如今,隨著(zhù)大家需求的不斷涌現,網(wǎng)絡(luò )上誕生了那種采集
偽原創(chuàng )的工具,也就是今天要說(shuō)的智能AI文章偽原創(chuàng )工具。有了這樣一款智能的AI文章偽原創(chuàng )工具,大家解決文章搜索和文章偽原創(chuàng )問(wèn)題就方便多了。行動(dòng)不如心動(dòng),趕緊百度一下。 查看全部
解決方案:百度號稱(chēng)人臉識別算法國內第一?安防廠(chǎng)商表示不服...
1月20日晚,萬(wàn)眾矚目的“人機大戰”在《最強大腦》的舞臺上演。最終的結果是,百度的人工智能機器人“小度”戰勝了“水哥”王玉衡。游戲規則是兩名玩家同時(shí)觀(guān)察3個(gè)人的模糊影像,然后從30人中找出將要被選中的3人。然而節目一播出,就遭到不少網(wǎng)友的質(zhì)疑,“黑幕”、“百度公關(guān)廣告”之聲甚囂塵上。即使魏醫生和王禹衡澄清直播中沒(méi)有黑幕,也依然無(wú)法打消網(wǎng)友的疑慮。
視頻數據顯示,人們戴著(zhù)口罩和帽子,周?chē)饩€(xiàn)昏暗
也是人機大戰,也是機器打敗人類(lèi)。為什么AlphaGo在世界上取得了震撼的效果,小度卻不斷被質(zhì)疑?一個(gè)重要的原因是廣播方式不同。即使有科學(xué)屬性,《最強大腦》也只是一檔綜藝節目,經(jīng)過(guò)后期制作,播放效果遠沒(méi)有直播帶來(lái)的震撼和真實(shí)。
事實(shí)如何我們不得而知,這也不是我們今天討論的重點(diǎn)(有興趣的朋友可以上網(wǎng)搜索,網(wǎng)友和百度都給出了相關(guān)解釋?zhuān)?。今天我們要說(shuō)的是,百度號稱(chēng)是國內人臉識別算法第一。有效依據是什么?并且,在安防領(lǐng)域,人臉識別技術(shù)到底走到了多遠。
1個(gè)
LFW 和 FDDB 排名有意義嗎?
相信研究過(guò)人臉識別算法的同學(xué)對LFW和FDDB也有一定的了解。LFW(Labeled Faces in the Wild)和FDDB(Face Detection Data Set and Benchmark)是全球權威的人臉識別檢測平臺。做人臉識別算法的公司或多或少都會(huì )用到LFW和FDDB做檢測。
LFW 數據庫共有 5749 個(gè)人的 13233 張圖像,其中 1680 個(gè)人有兩張或更多圖像,4069 個(gè)人只有一張圖像。FDDB和LFW一樣,是馬薩諸塞大學(xué)的人臉數據庫。收錄
2845張圖片,共5171張人臉作為測試集。測試集的范圍包括:不同姿勢、不同分辨率、旋轉和遮擋的圖片。

百度號稱(chēng)人臉識別算法第一,因為2015年百度在LFW上的準確率達到了99.77%,排名第一。2016年,小米和大華分別獲得了FDDB和LFW數據集的第一名。
LFW和FDDB的權威性毋庸置疑,但值得說(shuō)明的是,由于LFW和FDDB的樣本是固定的,相當于一場(chǎng)考試。您已經(jīng)知道這些問(wèn)題,然后不斷改進(jìn)您的答案。這種計分意義不大。
2個(gè)
人臉識別在安防領(lǐng)域有多厲害
當我們談?wù)撊四樧R別時(shí),會(huì )出現兩個(gè)常見(jiàn)且重要的概念,即 1:1 和 1:N。
簡(jiǎn)單來(lái)說(shuō),1:1就是一對一的人臉“核對”,解決的是“這個(gè)人是你嗎?”的問(wèn)題。1:N是從眾多對象中找出目標人物,解決“這個(gè)人是誰(shuí)”的問(wèn)題。
人臉識別考勤、安檢時(shí)的身份驗證等應用,都是1:1概念下的人臉識別應用。
1:N更多的用在安防行業(yè),比如在人多的地方安裝人臉識別防控系統。它與1:1最大的區別是1:N采集的是動(dòng)態(tài)數據,會(huì )根據位置、環(huán)境、光線(xiàn)等不同影響識別的準確性和效果。
一個(gè)基本的人臉識別布控系統將具備以下功能:

(1)人臉抓拍追蹤功能
人臉抓拍是指在一張圖片或一幀視頻流中檢測到人,并將人從背景中分離出來(lái),并自動(dòng)保存。人像追蹤是指利用人像抓拍技術(shù),在指定人像在相機抓拍范圍內移動(dòng)時(shí)自動(dòng)進(jìn)行跟蹤。
(2)人臉識別計算
人臉識別分為驗證型和搜索型兩種比對計算方式。驗證方法是指將拍攝的人像或指定的人像與數據庫中注冊的對象進(jìn)行比對,判斷是否為同一人。搜索式比對是指搜索數據庫中所有已注冊的人像,查找是否存在指定的人像。
(3) 人臉的建模與檢索
可以對注冊的人像數據進(jìn)行建模,提取人臉特征,生成的人臉模板保存在數據庫中。在進(jìn)行人臉搜索時(shí),對指定的人像進(jìn)行建模,然后與數據庫中所有人的模板進(jìn)行比對識別,最后根據比對的相似度值列出最相似的人物列表。
因此,數據成為提高人臉識別算法性能的關(guān)鍵因素。許多應用更關(guān)注低誤報條件下的識別性能。比如刷臉支付需要將錯誤接受率控制在0.00001以?xún)?,所以未?lái)的算法改進(jìn)也會(huì )著(zhù)重于提高低誤報的識別率。對于安防監控,可能需要控制在0.00000001以?xún)龋ū热鐜资f(wàn)人的登記庫),安防領(lǐng)域的人臉識別技術(shù)更具挑戰性。
隨著(zhù)深度學(xué)習的演進(jìn),基于深度學(xué)習的人臉識別將取得突破性進(jìn)展。它所需要的只是越來(lái)越多的數據和樣本。數據和樣本越多,重復訓練的次數越多,就越容易捕捉到準確的結果,給你準確的答案。因此,當一套人臉識別系統設備全面引入深度學(xué)習算法后,幾乎完美解決了以往長(cháng)期存在的各種變化。
但即便如此,人臉識別技術(shù)仍面臨實(shí)際應用等諸多挑戰。如何在各種復雜場(chǎng)景下成功應用,還需要眾多安防廠(chǎng)商的共同努力。
解決方案:超智能的AI偽原創(chuàng )工具是?
不知道大家有沒(méi)有注意到,大家在網(wǎng)上看到的偽原創(chuàng )工具,大多只是用于偽原創(chuàng )文章。不過(guò)今天要分享的智能AI文章偽原創(chuàng )工具,不僅可以用于文章偽原創(chuàng ),還可以搜索文章。網(wǎng)上這種智能AI偽原創(chuàng )工具的文章應該不多,至少我沒(méi)見(jiàn)過(guò)多少,所以今天想把這個(gè)好東西分享給大家,讓大家有更便捷的工作方式。就是這款智能偽原創(chuàng )AI軟件優(yōu)采云
,你只需要在優(yōu)采云
的全網(wǎng)素材中搜索一篇你想寫(xiě)的文章,系統就會(huì )對整篇文章進(jìn)行語(yǔ)義分析軟文文字實(shí)現智能偽造原創(chuàng ),您可以重新創(chuàng )建一篇新文章。應該只需要正常時(shí)間的四分之一,節省大量時(shí)間。

我們以前在網(wǎng)上找的工具有:搜索文章和偽原創(chuàng )文章是兩種不同的工具。但是想要得到偽原創(chuàng )文章,首先要采集
文章,然后再找一個(gè)可用的偽原創(chuàng )工具對偽原創(chuàng )文章進(jìn)行處理。也就是說(shuō),如果你想對采集
文章做偽原創(chuàng )處理,但是又沒(méi)有好的工具,只能直接使用采集
文章。但這往往是無(wú)效的,發(fā)出文章收錄的效果并不好。

所以最好的辦法是:搜索到的文章可以同時(shí)偽原創(chuàng )。如今,隨著(zhù)大家需求的不斷涌現,網(wǎng)絡(luò )上誕生了那種采集
偽原創(chuàng )的工具,也就是今天要說(shuō)的智能AI文章偽原創(chuàng )工具。有了這樣一款智能的AI文章偽原創(chuàng )工具,大家解決文章搜索和文章偽原創(chuàng )問(wèn)題就方便多了。行動(dòng)不如心動(dòng),趕緊百度一下。
總結:自動(dòng)機器學(xué)習綜述
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 64 次瀏覽 ? 2022-11-26 21:25
自動(dòng)化機器學(xué)習概述
自計算機時(shí)代開(kāi)始以來(lái),科學(xué)家和工程師就一直在思考如何像人類(lèi)一樣為計算機注入學(xué)習能力。艾倫·圖靈(Alan Turing)是最早提出智能理論的科學(xué)家之一,該理論設想有一天計算機可以達到與人類(lèi)相同的智能水平。從那時(shí)起,機器學(xué)習領(lǐng)域發(fā)生了一系列巨大的飛躍。我們已經(jīng)看到機器學(xué)習在許多情況下?lián)魯』蛑辽倨ヅ涮囟ǖ娜祟?lèi)認知能力,例如在ResNet,深度殘差網(wǎng)絡(luò )架構或微軟的語(yǔ)音轉錄系統幾乎達到人類(lèi)水平的情況下,在圖像識別方面超越人類(lèi)的表現。
機器學(xué)習的好處:機器學(xué)習的最大好處之一是它可以應用于人類(lèi)今天面臨的幾乎所有問(wèn)題。然而,有了這些好處,也存在一些挑戰。
痛點(diǎn):機器學(xué)習算法需要針對每個(gè)不同的現實(shí)場(chǎng)景進(jìn)行配置和優(yōu)化。這使得手工工作非常密集,并且需要監督開(kāi)發(fā)的人員花費大量時(shí)間。這種手動(dòng)過(guò)程也容易出錯、效率低下且難以管理。更不用說(shuō)缺乏配置和優(yōu)化不同類(lèi)型算法的專(zhuān)業(yè)知識。自動(dòng)化
機器學(xué)習:如果配置、調優(yōu)和模型選擇是自動(dòng)化的,則部署過(guò)程更加高效,人們可以專(zhuān)注于更重要的任務(wù),例如模型可解釋性、道德規范和業(yè)務(wù)成果。因此,機器學(xué)習模型構建過(guò)程的自動(dòng)化具有重要的現實(shí)意義。
轉到自動(dòng)化機器學(xué)習
注意:在自動(dòng)化機器學(xué)習的定義中,包括:
這篇文章將探討目前可用于上述每個(gè)自動(dòng)化流程的框架,以幫助讀者了解當今自動(dòng)化機器學(xué)習的可能性。在探索每個(gè)過(guò)程之前,讓我們簡(jiǎn)要討論端到端機器學(xué)習過(guò)程,并指出每個(gè)過(guò)程在該過(guò)程中發(fā)生的位置。
從上圖中可以清楚地看出,機器學(xué)習過(guò)程不僅僅包括建模階段。它還包括問(wèn)題定義、數據采集
和部署。這篇博文的重點(diǎn)仍將放在“建?!焙汀安渴稹彪A段。這就是我們想要從自動(dòng)化角度探索的內容。如果建模和部署階段可以自動(dòng)化,專(zhuān)家可以更多地關(guān)注問(wèn)題定義、數據理解、遵守道德標準,并確保部署的模型在不引發(fā)任何道德問(wèn)題的情況下為業(yè)務(wù)生成有影響力的見(jiàn)解。
對于建模和部署階段的每個(gè)部分,我們將探索來(lái)自開(kāi)源社區、谷歌、微軟和亞馬遜等供應商以及其他參與者的框架。
自動(dòng)特征工程
通常,機器學(xué)習算法的良好性能在很大程度上取決于模型使用的特征的質(zhì)量。對于數據科學(xué)家來(lái)說(shuō),特征工程是一項非常手動(dòng)和勞動(dòng)密集型的任務(wù),涉及大量的試錯、深厚的領(lǐng)域知識,以及(目前)機器不擅長(cháng)的東西:直覺(jué)。自動(dòng)化特征工程的目的是迭代地創(chuàng )建新的特征集,直到 ML 模型達到令人滿(mǎn)意的準確性分數?,F在讓我們構建我們試圖自動(dòng)化的過(guò)程。
功能工程過(guò)程通常是這樣的:例如,從電子商務(wù)網(wǎng)站采集
有關(guān)客戶(hù)行為的數據集。作為數據科學(xué)家,如果您的數據中還沒(méi)有新功能,您通常會(huì )喜歡創(chuàng )建新功能,例如
目的是創(chuàng )建一種算法,從數據自動(dòng)生成或合成這些類(lèi)型的特征?,F在我們將列出并簡(jiǎn)要描述一些自動(dòng)化特征工程的框架。請注意,在稱(chēng)為深度學(xué)習的特殊形式的機器學(xué)習中,通常通過(guò)深度學(xué)習模型層中的多個(gè)矩陣轉換自動(dòng)從圖像、文本和視頻中提取特征。我們在這篇文章中討論的特征工程類(lèi)型主要涉及結構化事務(wù)和關(guān)系數據集,盡管我們還將簡(jiǎn)要討論深度學(xué)習中的特征工程。
框架:
自動(dòng)化特征工程仍然是一項艱巨的任務(wù)。還有很多爭論不支持自動(dòng)化特征工程,因為它會(huì )產(chǎn)生不正確的結果或以不透明的方式使用錯誤標簽對觀(guān)察進(jìn)行分類(lèi)。因此,需要謹慎對待自動(dòng)化特征工程,尤其是在金融服務(wù)等高度監管的環(huán)境中,其中可解釋性和可解釋性在每個(gè)決策過(guò)程中都至關(guān)重要。
自動(dòng)模型選擇和超參數調整
一旦功能
經(jīng)過(guò)預處理后,您需要找到一種機器學(xué)習算法來(lái)訓練這些特征并能夠預測新觀(guān)測值的目標值。與功能工程不同,模型選擇具有豐富的選擇和選項。有聚類(lèi)模型、分類(lèi)和回歸模型、基于神經(jīng)網(wǎng)絡(luò )的模型、基于關(guān)聯(lián)規則的模型等。每種算法都應用于某一類(lèi)問(wèn)題和自動(dòng)模型選擇 對于該模型,我們可以過(guò)濾所有適合特定任務(wù)的模型的空間,選擇產(chǎn)生最高精度(例如最低AIC)或最低誤碼率(例如RMSE)的模型??梢岳斫獾氖?,沒(méi)有機器學(xué)習算法在所有數據集上表現最佳(無(wú)免費午餐理論),有些算法需要超參數調優(yōu)。事實(shí)上,在選擇模型時(shí),我們傾向于嘗試不同的變量、不同的系數或不同的超參數。在回歸問(wèn)題中,有一種方法可以使用 F 檢驗、t 檢驗、ajdusted R 平方等技術(shù)自動(dòng)選擇最終模型中使用的預測變量。這種方法稱(chēng)為逐步回歸。但這種方法很容易出錯。
自動(dòng)選擇模型的框架:
神經(jīng)網(wǎng)絡(luò )結構選擇
在機器學(xué)習領(lǐng)域,最繁瑣的任務(wù)之一是設計和構建神經(jīng)網(wǎng)絡(luò )架構。通常,人們花費數小時(shí)或數天的時(shí)間嘗試使用不同的超參數迭代不同的神經(jīng)網(wǎng)絡(luò )架構,以?xún)?yōu)化手頭任務(wù)的目標函數。這既耗時(shí)又容易出錯。谷歌引入了使用進(jìn)化算法和強化學(xué)習來(lái)實(shí)現神經(jīng)網(wǎng)絡(luò )搜索的想法,以設計和找到最佳的神經(jīng)網(wǎng)絡(luò )結構。從本質(zhì)上講,這是訓練創(chuàng )建一個(gè)層,然后堆疊這些層以創(chuàng )建深度神經(jīng)網(wǎng)絡(luò )架構。近年來(lái),該領(lǐng)域的研究引起了很多關(guān)注,并提出了許多研究論文。以下是該領(lǐng)域所有研究論文的最新列表: 值得注意的研究論文是:
自動(dòng)化部署
機器學(xué)習的大部分注意力
社區專(zhuān)注于學(xué)習算法的開(kāi)發(fā),而不是端到端機器學(xué)習過(guò)程中最重要的部分,即ML模型的部署和商業(yè)化。將機器學(xué)習模型部署到生產(chǎn)環(huán)境存在許多固有的挑戰。
有些公司和開(kāi)源項目正試圖自動(dòng)化這一過(guò)程,并最大限度地減少數據科學(xué)家的痛苦,因為他們不一定具備DevOps技能。以下是在該領(lǐng)域工作的框架和公司列表:
引用:
[1] J. M. Kanter 和 K. Veeramachaneni,“深度特征合成:邁向自動(dòng)化數據科學(xué)工作”,IEEE 國際數據科學(xué)與高級分析會(huì )議,2015 年,第 1-10 頁(yè)。
[2] 自動(dòng)選型的危險 /743/自動(dòng)選型的危險/
[3] 查找數據中的重要變量 /603/變量重要性/
攝影:Rafael Zamoraon Unsplash
解決方案:自動(dòng)網(wǎng)站seo診斷_是否可靠?
我們在做SEO的過(guò)程中,需要不斷管理網(wǎng)站,其實(shí)這是在網(wǎng)站的診斷上,有時(shí)候
因為網(wǎng)站排名的問(wèn)題,有時(shí)候也是定期診斷,防止預防的需要,而這些操作,可以算作自動(dòng)網(wǎng)站SEO診斷方法,我們經(jīng)常自己做,而且是補充工具,但有時(shí)候,我們也在想,網(wǎng)站SEO自動(dòng)診斷靠譜嗎?
1. 常用的網(wǎng)站SEO自動(dòng)診斷工具有哪些常用
的網(wǎng)站SEO自動(dòng)診斷工具有很多,主要是根據SEOER的使用習慣,所以我們就只講解一些常用的類(lèi)型:
?。?)百度診所站百度
推出百度診所入口,我們
只需要搜索百度診所就可以登錄,就可以顯示網(wǎng)站的各種公開(kāi)信息,包括:瀏覽器性能、網(wǎng)站證書(shū)信息、網(wǎng)站安全信息等,通過(guò)這些信息我們可以大致判斷網(wǎng)站的健康狀況,當然還有很多類(lèi)似的免費或付費的自動(dòng)網(wǎng)站SEO診斷工具, 但是我們還是推薦百度診斷站,畢竟老師出門(mén),信息會(huì )更準確。
?。?)資源平臺
比較權威的也是一個(gè)資源平臺,在其中我們可以診斷網(wǎng)站最近的抓取、收錄、關(guān)鍵詞排名等數據,這個(gè)數據我們認為是可信的,我們做網(wǎng)站SEO自動(dòng)診斷,不僅可以?xún)H限于方便,還可以追求數據的準確性。
?。?) 統計工具
做網(wǎng)站SEO自動(dòng)診斷也可以從數據入手,通過(guò)網(wǎng)站統計來(lái)
做診斷,常用的工具有:站長(cháng)統計、51拉統計、百度統計等,通過(guò)工具更新數據我們可以分析網(wǎng)站流量相關(guān)信息。
?。?) 查詢(xún)工具
SEO查詢(xún)工具很多,一般常用:站長(cháng)首頁(yè)、愛(ài)站工具、5118等,
這些工具各有優(yōu)勢,如:站長(cháng)首頁(yè)權威、愛(ài)站工具信任、5118數據全面,因此我們建議大家全面使用,然后再做出判斷。
以上只是我們常用的自動(dòng)網(wǎng)站SEO診斷工具,那么這些工具靠譜嗎?
2.網(wǎng)站SEO自動(dòng)診斷是否可靠
要討論自動(dòng)網(wǎng)站SEO診斷是否可靠,我們還需要澄清一個(gè)問(wèn)題,我們網(wǎng)站診斷的目的是什么,如果只是常規診斷,
我們認為以上工具完全可以滿(mǎn)足我們的需求,而且仍然是免費的,但如果是診斷網(wǎng)站排名,選擇上述工具只能說(shuō)有幫助,并不能有明顯的改善,就好像你只有儀器而沒(méi)有醫生,不能完全治療疑難雜癥, 所以我們必須對網(wǎng)站進(jìn)行深入診斷 你不能選擇聲稱(chēng)可以自動(dòng)進(jìn)行網(wǎng)站診斷的工具,而且這些工具中的大多數都是收費的。SEO診斷
是一項思考和體驗的工作,不是自動(dòng)網(wǎng)站SEO診斷就能做的事,所以做網(wǎng)站診斷還是尋求人工診斷。
總結:網(wǎng)站SEO自動(dòng)診斷,是否是靠譜的問(wèn)題,我們這里討論一下,以上內容,僅供參考。 查看全部
總結:自動(dòng)機器學(xué)習綜述
自動(dòng)化機器學(xué)習概述
自計算機時(shí)代開(kāi)始以來(lái),科學(xué)家和工程師就一直在思考如何像人類(lèi)一樣為計算機注入學(xué)習能力。艾倫·圖靈(Alan Turing)是最早提出智能理論的科學(xué)家之一,該理論設想有一天計算機可以達到與人類(lèi)相同的智能水平。從那時(shí)起,機器學(xué)習領(lǐng)域發(fā)生了一系列巨大的飛躍。我們已經(jīng)看到機器學(xué)習在許多情況下?lián)魯』蛑辽倨ヅ涮囟ǖ娜祟?lèi)認知能力,例如在ResNet,深度殘差網(wǎng)絡(luò )架構或微軟的語(yǔ)音轉錄系統幾乎達到人類(lèi)水平的情況下,在圖像識別方面超越人類(lèi)的表現。
機器學(xué)習的好處:機器學(xué)習的最大好處之一是它可以應用于人類(lèi)今天面臨的幾乎所有問(wèn)題。然而,有了這些好處,也存在一些挑戰。
痛點(diǎn):機器學(xué)習算法需要針對每個(gè)不同的現實(shí)場(chǎng)景進(jìn)行配置和優(yōu)化。這使得手工工作非常密集,并且需要監督開(kāi)發(fā)的人員花費大量時(shí)間。這種手動(dòng)過(guò)程也容易出錯、效率低下且難以管理。更不用說(shuō)缺乏配置和優(yōu)化不同類(lèi)型算法的專(zhuān)業(yè)知識。自動(dòng)化
機器學(xué)習:如果配置、調優(yōu)和模型選擇是自動(dòng)化的,則部署過(guò)程更加高效,人們可以專(zhuān)注于更重要的任務(wù),例如模型可解釋性、道德規范和業(yè)務(wù)成果。因此,機器學(xué)習模型構建過(guò)程的自動(dòng)化具有重要的現實(shí)意義。
轉到自動(dòng)化機器學(xué)習
注意:在自動(dòng)化機器學(xué)習的定義中,包括:
這篇文章將探討目前可用于上述每個(gè)自動(dòng)化流程的框架,以幫助讀者了解當今自動(dòng)化機器學(xué)習的可能性。在探索每個(gè)過(guò)程之前,讓我們簡(jiǎn)要討論端到端機器學(xué)習過(guò)程,并指出每個(gè)過(guò)程在該過(guò)程中發(fā)生的位置。
從上圖中可以清楚地看出,機器學(xué)習過(guò)程不僅僅包括建模階段。它還包括問(wèn)題定義、數據采集
和部署。這篇博文的重點(diǎn)仍將放在“建?!焙汀安渴稹彪A段。這就是我們想要從自動(dòng)化角度探索的內容。如果建模和部署階段可以自動(dòng)化,專(zhuān)家可以更多地關(guān)注問(wèn)題定義、數據理解、遵守道德標準,并確保部署的模型在不引發(fā)任何道德問(wèn)題的情況下為業(yè)務(wù)生成有影響力的見(jiàn)解。
對于建模和部署階段的每個(gè)部分,我們將探索來(lái)自開(kāi)源社區、谷歌、微軟和亞馬遜等供應商以及其他參與者的框架。
自動(dòng)特征工程

通常,機器學(xué)習算法的良好性能在很大程度上取決于模型使用的特征的質(zhì)量。對于數據科學(xué)家來(lái)說(shuō),特征工程是一項非常手動(dòng)和勞動(dòng)密集型的任務(wù),涉及大量的試錯、深厚的領(lǐng)域知識,以及(目前)機器不擅長(cháng)的東西:直覺(jué)。自動(dòng)化特征工程的目的是迭代地創(chuàng )建新的特征集,直到 ML 模型達到令人滿(mǎn)意的準確性分數?,F在讓我們構建我們試圖自動(dòng)化的過(guò)程。
功能工程過(guò)程通常是這樣的:例如,從電子商務(wù)網(wǎng)站采集
有關(guān)客戶(hù)行為的數據集。作為數據科學(xué)家,如果您的數據中還沒(méi)有新功能,您通常會(huì )喜歡創(chuàng )建新功能,例如
目的是創(chuàng )建一種算法,從數據自動(dòng)生成或合成這些類(lèi)型的特征?,F在我們將列出并簡(jiǎn)要描述一些自動(dòng)化特征工程的框架。請注意,在稱(chēng)為深度學(xué)習的特殊形式的機器學(xué)習中,通常通過(guò)深度學(xué)習模型層中的多個(gè)矩陣轉換自動(dòng)從圖像、文本和視頻中提取特征。我們在這篇文章中討論的特征工程類(lèi)型主要涉及結構化事務(wù)和關(guān)系數據集,盡管我們還將簡(jiǎn)要討論深度學(xué)習中的特征工程。
框架:
自動(dòng)化特征工程仍然是一項艱巨的任務(wù)。還有很多爭論不支持自動(dòng)化特征工程,因為它會(huì )產(chǎn)生不正確的結果或以不透明的方式使用錯誤標簽對觀(guān)察進(jìn)行分類(lèi)。因此,需要謹慎對待自動(dòng)化特征工程,尤其是在金融服務(wù)等高度監管的環(huán)境中,其中可解釋性和可解釋性在每個(gè)決策過(guò)程中都至關(guān)重要。
自動(dòng)模型選擇和超參數調整
一旦功能
經(jīng)過(guò)預處理后,您需要找到一種機器學(xué)習算法來(lái)訓練這些特征并能夠預測新觀(guān)測值的目標值。與功能工程不同,模型選擇具有豐富的選擇和選項。有聚類(lèi)模型、分類(lèi)和回歸模型、基于神經(jīng)網(wǎng)絡(luò )的模型、基于關(guān)聯(lián)規則的模型等。每種算法都應用于某一類(lèi)問(wèn)題和自動(dòng)模型選擇 對于該模型,我們可以過(guò)濾所有適合特定任務(wù)的模型的空間,選擇產(chǎn)生最高精度(例如最低AIC)或最低誤碼率(例如RMSE)的模型??梢岳斫獾氖?,沒(méi)有機器學(xué)習算法在所有數據集上表現最佳(無(wú)免費午餐理論),有些算法需要超參數調優(yōu)。事實(shí)上,在選擇模型時(shí),我們傾向于嘗試不同的變量、不同的系數或不同的超參數。在回歸問(wèn)題中,有一種方法可以使用 F 檢驗、t 檢驗、ajdusted R 平方等技術(shù)自動(dòng)選擇最終模型中使用的預測變量。這種方法稱(chēng)為逐步回歸。但這種方法很容易出錯。
自動(dòng)選擇模型的框架:

神經(jīng)網(wǎng)絡(luò )結構選擇
在機器學(xué)習領(lǐng)域,最繁瑣的任務(wù)之一是設計和構建神經(jīng)網(wǎng)絡(luò )架構。通常,人們花費數小時(shí)或數天的時(shí)間嘗試使用不同的超參數迭代不同的神經(jīng)網(wǎng)絡(luò )架構,以?xún)?yōu)化手頭任務(wù)的目標函數。這既耗時(shí)又容易出錯。谷歌引入了使用進(jìn)化算法和強化學(xué)習來(lái)實(shí)現神經(jīng)網(wǎng)絡(luò )搜索的想法,以設計和找到最佳的神經(jīng)網(wǎng)絡(luò )結構。從本質(zhì)上講,這是訓練創(chuàng )建一個(gè)層,然后堆疊這些層以創(chuàng )建深度神經(jīng)網(wǎng)絡(luò )架構。近年來(lái),該領(lǐng)域的研究引起了很多關(guān)注,并提出了許多研究論文。以下是該領(lǐng)域所有研究論文的最新列表: 值得注意的研究論文是:
自動(dòng)化部署
機器學(xué)習的大部分注意力
社區專(zhuān)注于學(xué)習算法的開(kāi)發(fā),而不是端到端機器學(xué)習過(guò)程中最重要的部分,即ML模型的部署和商業(yè)化。將機器學(xué)習模型部署到生產(chǎn)環(huán)境存在許多固有的挑戰。
有些公司和開(kāi)源項目正試圖自動(dòng)化這一過(guò)程,并最大限度地減少數據科學(xué)家的痛苦,因為他們不一定具備DevOps技能。以下是在該領(lǐng)域工作的框架和公司列表:
引用:
[1] J. M. Kanter 和 K. Veeramachaneni,“深度特征合成:邁向自動(dòng)化數據科學(xué)工作”,IEEE 國際數據科學(xué)與高級分析會(huì )議,2015 年,第 1-10 頁(yè)。
[2] 自動(dòng)選型的危險 /743/自動(dòng)選型的危險/
[3] 查找數據中的重要變量 /603/變量重要性/
攝影:Rafael Zamoraon Unsplash
解決方案:自動(dòng)網(wǎng)站seo診斷_是否可靠?
我們在做SEO的過(guò)程中,需要不斷管理網(wǎng)站,其實(shí)這是在網(wǎng)站的診斷上,有時(shí)候
因為網(wǎng)站排名的問(wèn)題,有時(shí)候也是定期診斷,防止預防的需要,而這些操作,可以算作自動(dòng)網(wǎng)站SEO診斷方法,我們經(jīng)常自己做,而且是補充工具,但有時(shí)候,我們也在想,網(wǎng)站SEO自動(dòng)診斷靠譜嗎?
1. 常用的網(wǎng)站SEO自動(dòng)診斷工具有哪些常用
的網(wǎng)站SEO自動(dòng)診斷工具有很多,主要是根據SEOER的使用習慣,所以我們就只講解一些常用的類(lèi)型:
?。?)百度診所站百度
推出百度診所入口,我們
只需要搜索百度診所就可以登錄,就可以顯示網(wǎng)站的各種公開(kāi)信息,包括:瀏覽器性能、網(wǎng)站證書(shū)信息、網(wǎng)站安全信息等,通過(guò)這些信息我們可以大致判斷網(wǎng)站的健康狀況,當然還有很多類(lèi)似的免費或付費的自動(dòng)網(wǎng)站SEO診斷工具, 但是我們還是推薦百度診斷站,畢竟老師出門(mén),信息會(huì )更準確。

?。?)資源平臺
比較權威的也是一個(gè)資源平臺,在其中我們可以診斷網(wǎng)站最近的抓取、收錄、關(guān)鍵詞排名等數據,這個(gè)數據我們認為是可信的,我們做網(wǎng)站SEO自動(dòng)診斷,不僅可以?xún)H限于方便,還可以追求數據的準確性。
?。?) 統計工具
做網(wǎng)站SEO自動(dòng)診斷也可以從數據入手,通過(guò)網(wǎng)站統計來(lái)
做診斷,常用的工具有:站長(cháng)統計、51拉統計、百度統計等,通過(guò)工具更新數據我們可以分析網(wǎng)站流量相關(guān)信息。
?。?) 查詢(xún)工具
SEO查詢(xún)工具很多,一般常用:站長(cháng)首頁(yè)、愛(ài)站工具、5118等,

這些工具各有優(yōu)勢,如:站長(cháng)首頁(yè)權威、愛(ài)站工具信任、5118數據全面,因此我們建議大家全面使用,然后再做出判斷。
以上只是我們常用的自動(dòng)網(wǎng)站SEO診斷工具,那么這些工具靠譜嗎?
2.網(wǎng)站SEO自動(dòng)診斷是否可靠
要討論自動(dòng)網(wǎng)站SEO診斷是否可靠,我們還需要澄清一個(gè)問(wèn)題,我們網(wǎng)站診斷的目的是什么,如果只是常規診斷,
我們認為以上工具完全可以滿(mǎn)足我們的需求,而且仍然是免費的,但如果是診斷網(wǎng)站排名,選擇上述工具只能說(shuō)有幫助,并不能有明顯的改善,就好像你只有儀器而沒(méi)有醫生,不能完全治療疑難雜癥, 所以我們必須對網(wǎng)站進(jìn)行深入診斷 你不能選擇聲稱(chēng)可以自動(dòng)進(jìn)行網(wǎng)站診斷的工具,而且這些工具中的大多數都是收費的。SEO診斷
是一項思考和體驗的工作,不是自動(dòng)網(wǎng)站SEO診斷就能做的事,所以做網(wǎng)站診斷還是尋求人工診斷。
總結:網(wǎng)站SEO自動(dòng)診斷,是否是靠譜的問(wèn)題,我們這里討論一下,以上內容,僅供參考。


