您當前位置: 南順網絡>> 官方資訊
  • 正月初七,開工大吉

    大年初七,人壽年豐。攤煎餅吃七寶羹,安頓身心,休養生息。亦稱“人勝節”、“人慶節”、“人口日”、“人七日”等。傳說女媧初創世,在造出了雞狗豬牛馬等動物后,于第七天造出了人,所以這一天是人類的生日。漢朝開始有人日節俗,魏晉后開始重視。古代人日有戴“人勝”的習俗,人勝是一種頭飾,從晉朝開始有剪彩為花、剪彩為人,或鏤金箔為人來貼屏風,也戴在頭發上。道教認為:“天地先生雞,次狗,次豬,次羊,次牛,次馬,始生人。”漢代東方朔的《占書》也說:“歲正月一日占雞,二日占狗,三日占豬,四日占羊,五日占牛,六日占馬,七日占人,八日占谷。”在中國傳統習俗中,大年初七“人日”,人過生日,要以七種蔬菜,煮成七寶羹,也就是將七種蔬菜,煮成雜菜湯,在農業社會,大家都祈望吃了七寶羹,來年大豐收。今天是鼓足干勁再奮斗的節后第一個上班日,你準備好了嗎?

  • 南順網絡恭祝大家新春快樂!

    北風擋不住春天的腳步,2018已向我們揮手告別;冰雪封不住青春的熱情,2019正隨春潮滾滾而來!春節即將如期而至,在合作伙伴的關注與支持下,本年度南順網絡的工作也將要畫上圓滿的句號。感謝各位合作伙伴在這一年,對我們工作的支持與配合!在此公布南順網絡2019年春節放假時間:                                  2019年2月2日--2019年2月10日,2月11號(初七)正式開工。     南順網絡恭祝大家在新的一年里,諸事順利,萬事如意,財源滾滾,心想事成!

  • 南順網絡技術開發部戶外團建活動

    今年公司接手多個重大項目,技術部同事為項目付出了辛勤的汗水,加班加點,任勞任怨,終于把多個項目順利完成,做為IT人員,每天面對著代碼,是很枯燥無味的,在公司領導關懷體恤下,伙伴們趁著冬日暖陽,抓著年底的尾巴,南順網絡技術部伙伴結伴而行,組織到安義千年古村游山玩水,吃喝玩樂,曬曬太陽,看看風景,好不愜意!大家邊走邊看,有說有笑,陽光照進每個人的心中,美好的心情洋溢在每個伙伴的臉上,這一年的辛酸,這一年的苦辣,都不算什么!走在千年古村的石堅小路上,遠遠的就能感受到古村的神秘風采,一覽古村田園風光,鄉村風貌,讓平時待在市中心的我們,有著另一番體驗。這些古老的玩意,現在怕是很難再見到了吧,是不是讓你想起了小時候在鄉村的時光啦,伙伴們還是玩得挺開心的!時間過得飛快,讓我們把這一刻保存下來,成為我們美好的回憶吧!

  • 南順網絡團隊建設與企業文化建設

    2018年是南順網絡創新團隊,樹品牌的重要轉折年,在2018年12月,南順網絡進行了一次團建文化會議,會議中南順網絡總經理張總,運營總監葉總對這一年團隊建設與企業文化建設做了重要講話。    在會中,南順網絡運營總監葉總對成長型企業應該傭有怎樣的團隊和企業文化做了詳細的分解,同事們都細心聽講,深刻理解,一個公司大到團隊,小到個人,都是需要包容與合作,需要自我提升,才能讓公司得到更大的發展,并鼓勵團隊的每一個人都要敢于提出問題,分享自己,團隊才會更有凝聚力,企業文化氛圍才會更濃厚!    會議后,南順網絡總經理張總也為此次會議做了總結,為團隊建設與企業文化建設提出了自己的建議,并為在坐的每一位家人鼓勵,提出在團隊中,每一個人把簡單的事情都做好,那就是不簡單,相信通過此次團建會議,大家會更加努力工作,團隊協作更融洽!

  • 盈科(南昌)律師事務所:互聯網+律師事務所平臺建設合作項目

    11月15日,南順網絡與合作伙伴北京市盈科(南昌)律師事務所簽訂互聯網+律師事務所平臺建設合作項目。律師介紹  于豐愷主任律師:盈科股權高級合伙人,華東政法大學法律碩士,公司法與企業風險管理法律事務部主任,江西省知識產權局特聘特派員,勞動人事爭議仲裁委員會仲裁員,江西衛視《金牌調解》欄目特邀觀察員,江西衛視《都市現場》欄目特邀律師。擔任多家國家機關、團體、企事業單位的常年法律顧問,承辦了多起各類重大、疑難民商事訴訟案件,具有豐富的訴訟和非訴訟實務經驗。  擅長為企事業單位進行法律風險管理,建立法律風險管理制度與體系,對高層管理人員進行法律培訓;在企業應收賬款管理、合同風險診斷、分析、評估、出具解決方案,對投資項目法律風險分析論證有十分豐富的經驗和獨到的見解。熟悉建設工程行業、房地產業、金融投資、抵押擔保、交通物流、化工涂料行業、環保行業、IT 行業、銀行、生產加工銷售業、電子行業、租賃市場所涉及的法律知識和實踐經驗。項目分析“互聯網+”時代,任何互聯網技術在律師事務所領域的應用都能夠產生非常巨大和直接的力量。用戶需求不數年出現,互聯網律師事務所不能徹底滿足、其實,互聯網技術在律師事務所行業的應用就是借助新的技術滿足用戶新需求的過程。南順將從市場的角度和客戶需求出發,融合視覺美學及有效策略,為客戶提供專業化、品牌化的網站界面設計、網站策劃,網站建設與研發等。南順優勢1、專注互聯網+技術解決方案:構建有生命力的平臺體系南順網絡創造出“電腦營銷型網站+手機營銷型網站+微信網站+APP客戶端”為一體的四網合一網站建站系統。2、案例更多經驗更加豐富超過1000多例成功為政企信息提供完整的解決方案,20個互聯網行業應用,讓互聯網+重塑傳統企業邊界,我們始終堅持為每個客戶定制網站。

  • 南順網絡面向智慧校園布局

         2017年,教育部辦公廳關于印發《2017年教育信息化工作要點》的通知中明確指出:引導各級各類學校開展數字校園、智慧校園建設與應用。數字校園和智慧校園成了學校信息化的代名詞,各省市也相繼出臺相關政策,明確數字校園和智慧校園要建設的內容,無線網絡作為一個基礎接入網絡,是數字校園和智慧校園必不可少的組成部分。2018年,教育部か公廳關于印發《2018年教育信息化和網絡安全工作要點》的通知,該通知中第二條明確提到,鼓勵具備條件的學校開展“無線校園”建設,配備師生用教學終端。第三條提出引導各級各類學校結合實際特色發展,開展數字校園、智慧校園建設與應用。南順網絡自主研發的智慧校園三大特征:智慧消息、智慧生活、智慧家校      南順網絡經過十年的高速發展,跟隨互聯網時代的步伐,不斷創新與實踐,在不同的技術領域實現更大的可能,從當初的網站建設到高端APP開發到布局智慧校園、始終堅持以技術開發為核心,提升行業競爭力!      南順網絡開發的智慧校園項目是公司自主研發的“智慧校園”管理系統,依托應用人臉識別、視頻監控和無線網絡等物聯網先進技術,實現對人和物身份及狀態信息的智能傳感,構建一個創新的、安全的、和諧的校園綜合管理模式。

  • 南順網絡被邀請入圍中國科學家論壇

    中國科學家論壇提名入圍函

  • 南順網絡開啟江西人工智能技術開發

    人工智能影響(1)人工智能對自然科學的影響。在需要使用數學計算機工具解決問題的學科,AI帶來的幫助不言而喻。更重要的是,AI反過來有助于人類認識自身智能的形成。(2)人工智能對經濟的影響。專家系統更深入各行各業,帶來巨大的宏觀效益。AI也促進了計算機工業網絡工業的發展。但同時,也帶來了勞務就業問題。由于AI在科技和工程中的應用,能夠代替人類進行各種技術工作和腦力勞動,會造成社會結構的劇烈變化。(3)人工智能對社會的影響。AI也為人類文化生活提供了新的模式。現有的游戲將逐步發展為更高智能的交互式文化娛樂手段,今天,游戲中的人工智能應用已經深入到各大游戲制造商的開發中。   伴隨著人工智能和智能機器人的發展,不得不討論是人工智能本身就是超前研究,需要用未來的眼光開展現代的科研,因此很可能觸及倫理底線。作為科學研究可能涉及到的敏感問題,需要針對可能產生的沖突及早預防,而不是等到問題矛盾到了不可解決的時候才去想辦法化解。

  • 2018年南順網絡推出H5場景在線制作平臺

    2018年南順網絡推出H5場景在線制作平臺! 南順網絡制作了700多套H5模板,提供給各行業選擇,快速制作屬于自己的H5宣傳片。 南順H5宣傳融合了各大行業,可以接入視頻、音樂、語言等,是目前主流的H5制作平臺。南順網絡歡迎新老客戶前來體驗,請登錄官方體驗:www.ns868.com。

  • 祝賀:南順網絡與搜學360成為戰略合作伙伴

    祝賀:南順網絡與搜學360成為戰略合作伙伴!搜學360項目啟動于2017年11月,項目預計2018年3月份結束,2018年新型的互聯網教育模式從這里開始!搜學360新型的教育門戶平臺,打造互聯網交易新模式搜學網技術二次研討會議

  • 北京市盈科(南昌)事務所:互聯網+律師事務所平臺建設合作項目

    8月26日,南順網絡與新的合作伙伴北京市盈科(南昌)事務所簽訂互聯網+律師事務所平臺建設合作項目。 律師介紹 萬冬琴,華東交通大學法學學士,北京市盈科(南昌)律師事務所國際投資與貿易法律事務部部門骨干律師,盈科南昌黨支部副書記;南昌市律師協會法律顧問專業委員會委員;南昌市律師協會公司法專業委員會委員。擅長公司法律事務、保險合同糾紛、二手房買賣合同糾紛、企 業法律顧問、婚姻家庭糾紛及刑事辯護等。積極參與社會公益曾先后參與江西省法律援助中心指派的被判處無期徒刑以上的重大刑事案件的二審程序或死刑復核程序。參與南 昌市政府信訪局多起重大信訪案件律師接訪活動,參與南昌市政府信 訪局律師接訪工作,多次為公民提供免費法律咨詢活動,多次走進基 層社區、街辦,開展“送法進社區活動”等活動。 萬冬琴律師一貫堅持誠信、負責、效率的執業理念,并致力于不 斷提升專業化、規范化、標準化、精細化的法律服務水平。持續深入 研究學習,以良好的誠信鑄就品牌,以優質服務鍛造未來。 項目分析 “互聯網+”時代,任何互聯網技術在律師事務所領域的應用都能夠產生非常巨大和直接的力量。用戶需求不數年出現,互聯網律師事務所不能徹底滿足、其實,互聯網技術在律師事務所行業的應用就是借助新的技術滿足用戶新需求的過程。南順將從市場的角度和客戶需求出發,融合視覺美學及有效策略,為客戶提供專業化、品牌化的網站界面設計、網站策劃,網站建設與研發等。 南順優勢 1、專注互聯網+技術解決方案:構建有生命力的平臺體系 南順網絡創造出“電腦營銷型網站+手機營銷型網站+微信網站+APP客戶端”為一體的四網合一網站建站系統。 2、案例更多經驗更加豐富 超過1000多例成功為政企信息提供完整的解決方案,20個互聯網行業應用,讓互聯網+重塑傳統企業邊界,我們始終堅持為每個客戶定制網站。

  • 海優歌:互聯網+親子游泳平臺建設合作項目

    8月14日,南順網絡與新的合作伙伴江西海歌親子企業管理有限公司簽訂互聯網+親子游泳平臺建設合作項目。 公司介紹 海優歌是全省第一家也是唯一 一家親子游泳的早教機構。我們的課程是來自全球最大的母嬰啟蒙機構,英國劍橋的生之光教程體系。我們的每位教練包括老板,都是獲得了英國STA國際游泳協會培訓及認證上崗的。課程根據小朋友的年齡段及他們的發育特點和需求分齡分課。聲之光課程特色是遵從孩子的天性和意愿,在最親密的親子關系中培養健康親子關系和興趣,從而達到最好的課程效果。 項目分析 “互聯網+”時代,任何互聯網技術在親子游泳培訓領域的應用都能夠產生非常巨大和直接的力量。用戶需求不數年出現,互聯網親子游泳培訓不能徹底滿足、其實,互聯網技術在親子游泳培訓行業的應用就是借助新的技術滿足用戶新需求的過程。南順將從市場的角度和客戶需求出發,融合視覺 美學及有效策略,為客戶提供專業化、品牌化的網站界面設計、網站策劃,網站建設與研發等。 南順優勢 1、專注互聯網+技術解決方案:構建有生命力的平臺體系 南順網絡創造出“電腦營銷型網站+手機營銷型網站+微信網站+APP客戶端”為一體的四網合一網站建站系統。 2、案例更多經驗更加豐富 超過1000多例成功為政企信息提供完整的解決方案,20個互聯網行業應用,讓互聯網+重塑傳統企業邊界,我們始終堅持為每個客戶定制網站。

  • 奧新遮陽簾:互聯網+奧新遮陽簾平臺建設合作項目

    7月1日,南順網絡與新的合作伙伴奧新遮陽簾經營部簽訂互聯網+奧新遮陽簾平臺建設合作項目。 公司介紹   南昌奧新窗簾遮陽技術有限公司是一家南昌窗簾安裝辦公窗簾專業從事南昌安裝辦公窗簾窗簾安裝遮陽產品制作銷售的專業公司,是集研制、生產、銷售窗簾產品為一體的專業南昌窗簾公司產品有百葉窗簾軌、卷簾窗簾、垂簾窗簾、鋁百葉窗簾、木百葉窗簾安裝(法國SOMFY電機,面料為法國梅爾梅陽光面料)等產品分為手動和電動系列.公司承接電動窗簾系統電動舞臺幕及戶外和室內外電動遮陽系統工程.公司總部設在廣州、湖南、江西,四川,湖北等設有分公司在南昌西湖區云飛路設有展示廳。本公司專業制作銷售:南昌窗簾安裝電動開合簾、安裝窗簾電動卷簾、普通拉珠辦公卷簾窗簾,百葉簾,中高檔布藝專業設計,專業制作,專業精神,上門送樣,量尺等。主題專營:南昌辦公窗簾 家居酒店窗簾 智能遮陽 智能遙控電動窗簾 絲印廣告窗簾 戶外電動遮陽 電動開窗 卷簾 百葉簾 天棚簾 開合簾 戶外遮陽棚。 項目分析 “互聯網+”時代,任何互聯網技術在奧新遮陽簾領域的應用都能夠產生非常巨大和直接的力量。用戶需求不數年出現,互聯網奧新遮陽簾不能徹底滿足、其實,互聯網技術在遮陽簾行業的應用就是借助新的技術滿足用戶新需求的過程。南順將從市場的角度和客戶需求出發,融合視覺美學及有效策略,為客戶提供專業化、品牌化的網站界面設計、網站策劃,網站建設與研發等。 南順優勢 1、專注互聯網+技術解決方案:構建有生命力的平臺體系 南順網絡創造出“電腦營銷型網站+手機營銷型網站+微信網站+APP客戶端”為一體的四網合一網站建站系統。 2、案例更多經驗更加豐富 超過1000多例成功為政企信息提供完整的解決方案,20個互聯網行業應用,讓互聯網+重塑傳統企業邊界,我們始終堅持為每個客戶定制網站。

  • 工業物聯網應用發展場景及市場預期

    工業物聯網將在哪里得到施展才能的機會,它的市場預期會帶給社會怎樣的表現,都是工業物聯網發展歷程中所必須要思考和構建的重要思維模型。物聯網的底層邏輯物聯網作為信息技術,其本質是信息和計算。感知層負責信息的獲取,網絡層負責信息的傳輸,應用層負責信息的處理計算。物聯網連接了大量物品數據,這些數據都是以往不曾處理的全新數據,新的數據加上新的處理方式,造就大量新的產品、新的商業模式、全面的效率提升,這是物聯網帶來的根本價值。物聯網在工業的應用工業物聯網是一個多元化整合、不同元素之間相互探索的平臺,能夠將生產現場的各種傳感器、控制器、數控機床等生產設備連接起來。隨著工業物聯網的發展,連入工業物聯網的智能設備將日趨多元化,網絡互連所產生的海量數據能夠輸送到全球任何一個地方。通過將感知技術、通信技術、傳輸技術、數據處理技術、控制技術,運用到生產、配料、倉儲等所有階段,實現生產及控制的數字化、智能化、網絡化,提高制造效率,改善產品質量,降低產品成本和資源消耗,最終實現將傳統工業提升到智能化的新階段。同時,通過云服務平臺,面向工業客戶,融合云計算、大數據能力,助力傳統工業企業轉型。隨著數據量的增大,傾向于在數據源頭處理數據的邊緣計算不需要將數據傳輸到云端,更加適合數據的實時和智能化處理,因此更加安全、快捷、易于管理,在可預見的未來將得到更加有效的利用。工業物聯網的價值物聯網強調的是將生活和生產中一切硬件設備的連接;工業物聯網是指在工業環境下,生產設備和產品的連接。工業物聯網將生產過程的每一個環節、設備變成數據終端,全方位采集底層基礎數據,并進行更深層面的數據分析與挖掘,從而提高效率、優化運營。與物聯網在消費行業的應用不同,物聯網在工業領域的基礎已經存在了幾十年。如過程控制和自動化系統、工業化以太網連接和無線局域網等系統已經在工廠運行多年,并接連可編程邏輯控制器、無線傳感器和射頻識別技術標簽。但是在傳統工業自動化環境下,一切都只是發生在工廠自己的系統里,從來沒有與外部世界連接。工業物聯網特點:到2020年,世界上物物互聯的業務將是人人互聯業務的30倍。工業領域目前是物聯網項目最多的應用領域。制造業在物聯網應用的占比約為15%—25%,制造業在物聯網中的重要地位顯而易見。·數據收集范圍:工業物聯網利用RFID、傳感器、二維碼等手段隨時獲取產品從生產到銷售到最終用戶使用各個階段的信息數據,而傳統工業自動化的數據采集往往局限于生產質檢階段。·互聯傳輸:工業物聯網利用專用網絡與互聯網相結合的方式,實時準確地傳遞物體信息,對網絡依賴性更高,更強調數據交互。·智能處理:工業物聯網綜合利用云計算、云存儲、模糊識別、神經網絡等智能計算技術,對海量數據和信息進行分析和處理,并結合大數據技術,深入挖掘數據價值。·自組織與自維護:工業物聯網的每個節點為整個系統提供自己處理獲得的信息或決策數據,當某個節點失效或數據發生變化時,整個系統會自動根據邏輯關系做出相應調整。工業物聯網的應用場景·預測性維護在過去,工廠生產設備的運營管理通常采用定期維護的方式進行。按預定計劃每年定期中斷生產設備,進行機器的維護和檢修。這種維護可以減少意外事件和停機的風險,但也存在一些不足。不是所有機器都需要在同一時間進行維護,通過工業物聯網技術企業可以做預測性維護。設備處于實時監控的環境下,公司可以在設備需要維護的時候進行維護,而不是在任意時間進行維護。·可視化供應鏈未來制造業中供應鏈的可視化是必不可少的,也是極具挑戰性的環節。尤其是在某些些領域,如食品,生產成本可能來自各種各樣的供應商,而新的法規會要求完全透明化。通過工業物聯網,制造商可以實時預見所發生的一切事件,確保產品從原料采購、生產加工到銷售過程都是可控的。·設備效率分析當需要對生產線上各設備的生產效率和產品質量做比較時,在過去是很難作出詳細的回答的。今天,制造商可以使用工業物聯網技術收集和分析來自多個設備的數據,他們可以為更好了解設備的工作狀況,并為提升生產效率、質量控制等作出更好的決策,這就是使用工業物聯網的好處。·自動化工業物聯網的本質是讓機器在沒有人干預的情況下彼此通信。這使得更多的自動化解決方案采用了成群結隊方式,從而提高機器的效率和產品質量,產品更一致的化。·安全控制當你接觸工業物聯網時可能不會想到安全問題,然而,在工廠安全方面可以通過物聯網獲聯很多的幫助。安全一直存在的,只是沒有人真正收集所需的數據,利用物聯網能解決安全問題。我國工業物聯網的預期價值物聯網在工業的應用,是物聯網最重要的領域之一。 “中國制造 2025”、“智能制造”、“互聯網+”等戰略規劃,“中國智造”已經成為未來制造企業的發展方向。而工業物聯網正是實現“中國智造”的基礎。中國物聯網生態環境日趨成熟,物聯網在工業領域的應用需求逐漸強烈。2016 年我國工業物聯網規模達到 1896 億元,在整體物聯網產業中的占比約為 18%。預計在政策推動以及應用需求帶動下,到 2020 年,工業物聯網在整體物聯網產業中的占比將達到 25%,規模將突破 4500 億元。對一些中小型工業企業來說,傳統的系統集成、定制開發的理念無法應用到中小型企業中,工業物聯網建設成本過高,使得大企業的成功模式無法在小企業復制,導致我國工業物聯網應用呈現出兩極分化的狀態。隨著 NB-IOT,eMTC 等物聯網技術的推進,以及在 5G 網絡的應用場景中,工業物聯網才可以具備快速發展的空間。傳感器識別技術、傳感器網絡技術、感知節點及終端服務、業務支撐及智能處理技術等都是助力物聯網產業快速發展的動力。工業物聯網的未來趨勢未來企業工業物聯網應用的重點由設備和資產轉向產品和客戶。工業企業借助物聯網實現業務成長的主要途徑包括新的產品和服務和更緊密的客戶關系。為了開發更具吸引力的產品或提升現有客戶關系,企業將需要大量產品和客戶的相關信息支持。數據能力提升將以數據分析計算能力提升為投資優先選擇。物聯網的整體突破不僅依賴于硬件能力和商業模式創新,算法與數據同樣不可或缺。中國制造企業多年基于應用研發積累了大量經驗數據,如果將這些數據提取并模型化,形成可實用的專家算法,數據將變成具有良好盈利能力的金礦。技術的進步大大增加了物聯網解決方案在工業領域的潛在實力,物聯網解決方案將提高工業企業運營效率,增加其收入來源并激發創新。物聯網也證明了它可以幫助企業制造更多的持續性價值,像是從過去一次性的交易轉變成長久的客戶關系。雖然面臨連接性和安全性的問題,但我們仍可預期物聯網將襲卷工業領域各大產業。

  • Windows Lite OS曝光:頁面清爽 最快年內推

     所謂WCOS即Windows Core OS,是構建客戶端、服務器、Xbox等平臺Win10系統的基礎,看來LiteOS同樣基于它搭建。至于“Web”,似乎進一步確認了Windows LiteOS對抗Chrome OS的戰略宗旨,據說其只允許運行UWP和PWA(漸進式網頁應用)程序。        UI視覺方面,Windows Lite和Win10基本類似但更加彈性,目前流出的接近內部開發樣式的效果圖顯示,開始按鈕在底部居中,一個碩大的搜索框涵蓋了賬戶管理、網頁/文件/設置搜索、應用程序抽屜等。        綜合目前資料,芯片廠商和OEM協作順利的話,搭載Windows Lite OS的雙屏產品最快今年末亮相。

  • 解決這4個難題,IoT低功耗設備也能有高清視頻通話

    解決這4個難題,IoT低功耗設備也能有高清視頻通話如果有人跟你聊“實時音視頻通話功能”,你會想起什么?視頻聊天、在線課堂,還是朋友之間的游戲開黑?其實,還有一個復雜且巨大的領域,有著旺盛的“互動”需求,那就是 IoT 領域。不少大廠商都紛紛布局推出了相應產品,例如在去年由“能打電話的智能手表”變為“能視頻的電話手表”的小天才手表;在今年2019 CES 上,多家廠商都推出了支持實時視頻的智能門禁。總體來講,希望集成實時音視頻功能的低功耗智能設備有以下幾類:?智能手表:“能打電話”已成很多兒童智能手表的標配,而“能視頻通話”的智能手表已經紛紛出現在海內外市場上。?智能眼鏡:基于實時音視頻與后處理技術(如 AR、計算機視覺算法)可以實現多種場景?智能攝像頭:安防監控、視頻交互一直是智能攝像頭的重要功能?機器人:家庭機器人及少數公共場所的機器人,需要實時音視頻功能?智能門禁:通過實時音視頻實現遠程安防、通話低功耗設備上視頻通話的難點事實上,利用WebRTC方案是可以在手機上實現實時音視頻通話的,但如果將這套方案照搬到低功耗設備,則無法做到。這是由于低功耗智能設備在硬件、軟件方面都與手機不同,所以對實時音視頻通信的要求也有所不同,這導致了手機的方案無法直接拿來套用。以智能手表為例,如果要實現實時音視頻,需要滿足以下要求:1. 功耗要低很多低功耗智能設備的電池容量,以及可支持的功率有限。另一方面,很多智能設備采用的 CPU 性能有限,在進行音視頻通話的同時,還要支持系統、常駐功能的運轉。一般的解決方案,無法做到稍長時間的視頻通話,最大的障礙就在于能耗。隨著通話時長的積累,高負荷運轉的設備會發熱。所以低功耗十分必要。2. 實時音視頻不可占用過多內存智能設備的內存有的高,有的低,要看是什么類型的設備。但智能手表這類產品的內存一般都不高。在這樣的背景下,如果要在設備上進行實時音視頻通話時,不能占用太多內存資源,否則會影響設備的正常使用。3. 跨平臺、跨設備的通話支持智能設備并不像手機這樣普及,所以當你在通過智能手表、智能眼鏡與他人通話時,對方所使用的可能是手機或 Web 瀏覽器。所以還需要支持智能設備與其它平臺的通話。4. 提供高音質高畫質體驗音視頻通話的質量始終是關鍵,畫面的卡頓、模糊,聲音出現回聲、噪聲都是用戶無法接受的。但是,一套音視頻方案在別人的智能手表上跑通了的時候,并不意味著完全能用于你的設備。還是以 WebRTC 為例,它本身具備回聲消除模塊,但一個回聲消除算法的設計實現與設備、系統狀態緊密相關。 聲音經過揚聲器傳導到麥克風,經過了多少路徑就被處理多少次。不同的設備材質,甚至設備發熱,都會導致聲傳導特性不一樣,都會導致回聲消除算法不一樣。這是設備的差異帶來的影響。另一方面,回聲消除里有兩大模塊,自適應濾波和非線性處理。自適應濾波前置第一個模塊就是延時搜索。延時估計要在一定范圍內估計,就是要有一個預先設計的delay值,如果在一個很大的范圍內搜索,會極大消耗CPU資源。而Android系統的線程調度設計存在特殊性,一旦資源搶占,會在Android底層buffer產生延時,可能會導致之前預設的delay值不準。而低功耗智能設備的系統存在很多細微差異,就更需要有針對性地優化算法了。所以,在低功耗智能設備上實現視頻通話,并不是用一套通用的 demo,通過短短幾步的配置、接口調用就能實現的。想要好的通話體驗,都需要圍繞你的設備進行調優。這也是難點之一。聲網Agora低功耗智能設備場景方案而針對以上大部分問題,尤其是針對低功耗設備的硬件、軟件系統的特點,聲網對 Agora SDK 進行了多方面的優化,包括編碼算法、降噪算法,幀率和分辨率的優化算法,推出了低功耗版本 Agora SDK ,支持低功耗智能設備與其它設備與平臺進行視頻通話。聲網低功耗智能設備場景方案的特點:1. 跨平臺實時語音通話聲網Agora創建了基于UDP協議的軟件定義實時網絡SD-RTN?,并在全球部署的近200個數據中心。通過 Agora SD-RTN?虛擬通信網絡,集成聲網方案的低功耗設備,可以與 Web 瀏覽器、手機端進行實時的音視頻通話。2. 低功耗、低內存占用占用的內存小,正常通話發熱量小,可以保證用戶之間的較長時間的正常通話,經測試在小天才智能手表上可進行15分鐘的長時間視頻通話。 3. 支持主流軟硬件平臺該方案適用于基于 ARM 架構、Android 系統平臺的低功耗智能設備,只需要在集成后調優setVideoProfile、setAudioProfile參數即可正常通話。目前,聲網智能設備低功耗 SDK 已經應用于多類智能硬件產品上,包括智能手表、智能眼鏡、智能音箱、智能攝像頭、機器人、智能門禁等 IoT 設備,被集成于小天才、亮亮視野、小米等多個品牌的產品中。

  • 支付寶小程序向個人開發開放公測:處于限量狀態

    支付寶小程序在2018年8月開放公測給企業之后,一直沒有開放給個人開發的消息,不過現在有用戶發現,支付寶小程序在2月26日開始向個人開發開放公測,開發只要登陸支付寶賬號就可以進入公測申請。據悉,支付寶這一次開放的個人開發公測處于限量狀態,每天審核1000人左右的項目,由于支付寶發現有大量的個人開發申請創建支付寶小程序,因此目前支付寶決定開啟個人開發的小程序開發功能。根據支付寶小程序提供的開發文檔顯示,個人開發與企業開發開發支付寶小程序所采用的流程、框架、開發工具相差不大,只是在類目和功能上會相對少一些。阿里支付寶小程序是一種全新的開放模式,它運行在支付寶客戶端,可以被便捷地獲取和傳播,為終端用戶提供更優的用戶體驗。在支付寶最近公布的數據中,支付寶小程序的總用戶數超過了5億,日活躍用戶達到了1.7億,春節期間的峰值一度達到了2.8億。

  • 從家居智能場景看聯想SloT2.0的制勝關鍵點

    萬物互聯正成為科技互聯網行業下一個風口,而眼下AI、IoT已然成為了智能物聯新時代的關鍵字符。而我們的生活也將被這場智能革命改變。試想一下,下班回到家門口,不用鑰匙或卡片,指紋密碼直接將智能門鎖打開,智能攝像頭識別出你的身份,直接進行隱私保護,家里燈光、空調等設備隨當時的環境啟動并調至最佳狀態,電視自動開機續播之前沒看完的節目,空氣凈化器開啟強力工作模式。而手機、電腦、平板等設備自動連接到云端,共享“家庭云”里的照片、音樂等數據,音箱會根據你日常的使用習慣播放合時宜的歌曲等......隨著AI和IoT技術的不斷進步,這樣的場景不用等到未來,現在已經部分實現并逐步完善,而5G,更讓智能物聯如虎添翼,勢不可擋。作為智能物聯時代的引領者和推動者,聯想在這片領域早有布局。在聯想云服務部新晉掌門人阿木的帶領下,立足全面轉型智能物聯服務提供商的戰略,更積極賦能行業合作伙伴,構建SIoT云服務平臺,用UDS體系構建開放的智能物聯網生態圈,重新布局軟硬一體化,為用戶提供更加智能、能夠無縫連接到云內容、云應用和云服務的智能物聯設備,帶來極致的多場景互聯新體驗。聯想集團中國區戰略副總裁云服務部總經理阿木2019CES拉斯維加斯專訪現場介紹云服務平臺聯想品牌日,用SIoT云服務守護您的家在消費端,聯想這次能提供的不僅是傳統的硬件產品,軟件服務能力也大大提升。根據最新數據,目前聯想SIoT云服務平臺已經有了超過百家合作伙伴,SIoT云服務平臺全終端月活用戶亦進一步突破2000萬。為了服務好越來越多的用戶,切實考慮他們的日常需求,聯想云服務平臺將各種智能物聯設備的聯動進行了優化,實現了不同場景中細微需求的滿足,充分發揮了不同設備的優勢,讓它們在場景中更好地配合起來。比如“看家寶”聯想智能攝像頭R1+聯想Lecoo智能門鎖R1就被用戶視為看家護院的“黃金搭檔”。如果你安裝了這一套設備(需要搭配聯想門磁和Zigbee網關),借助聯想SIoT云服務,就可以使用“智慧聯想”APP把聯想智能攝像頭R1與智能指紋鎖R1網絡尊享版連接到一起。當快遞小哥或者保姆需要臨時進門,用戶一方面可以遠程下發臨時密碼給聯想Lecoo智能門鎖R1網絡尊享版,另一方面開鎖后攝像頭還可以自動進入監控狀態并跟蹤,再也不用擔心安全隱患。而當房子的主人回家時,系統會識別主人的回家動作,關閉攝像頭,從而保護主人的隱私;而當主人離家的時候,系統識別后會自動開啟攝像頭,保衛家庭的安全。可以說聯想云服務平臺給家庭安全“加了一重保險”,解決了安全和隱私雙重問題,可謂是當下更貼心的護家使者。聯想SIoT云服務打造的智能家庭聯動場景示例另外,對大多數人來說,家人的身體健康和房屋的安全同等重要,日新月異的科技從不同維度守護我們的安全。聯想智能體脂秤能幫我們守護這道安全底線。它1次上秤可測量包括體重、脂肪率、BMI、水分率等20項身體健康數據,讓人獲得更全的健康衡量指標,通過云平臺支持的智慧聯想APP,用戶可以隨時查看,并獲得云服務健康建議,時刻注意。同時,聯想智能體脂秤可同時智能識別10個用戶并記錄相關測量數據,家庭中每個人都可以分別科學地管理體脂、飲食、運動計,全家一起使用更便捷。想要這些智能物聯新品?2.26上京東聯想品牌日!上述這些智能產品在2月26日聯想品牌日中還有鉅惠活動,不僅是硬件的實惠價格,還有來自軟件層面的優惠服務。當然,類似的SIoT產品還有很多,要嘗鮮和感知智能家居的消費者,不妨就從這里起步,保你在這個春天用極震撼的價格就能體驗到更驚喜的軟硬一體化服務。提前感受場景互聯聯想SIoT云服務平臺搶足風頭當下幾乎各家都推出了智能物聯的打法,但是聯想SIoT云服務平臺卻脫穎而出,可以說給智能物聯行業發展提供了新的思路。從前述的幾個場景案例可以看出聯想SIoT2.0軟硬一體化服務的完整性和科學性。除了設備,場景互聯更大的價值就在數據的分析和整合,更有針對性地服務用戶,并在互聯世界里讓人們的體驗得到提升,這都離不開軟件層面的支持。而數據、計算力、算法正是浸淫互聯網科技行業多年的聯想的長項。聯想提早布局,建立了一張開放的、共生共贏的智能生態網絡。這也是楊元慶眼中聯想智能物聯戰略的另一個亮點,劉軍“砸10億做智能物聯網的領軍者”的基石——搭建SIoT智能物聯生態平臺,聯合業界共同推動設備的智能化創新。聯想在2017年提出“智慧聯想服務中國”大戰略愿景,基于此構建起了開放共贏的智慧物聯生態平臺,從產品、渠道、服務、AI、資本給其他合作伙伴輸送養料,帶動了一張包羅廣泛的智能互聯生態網的良性發展,打破“智能孤島”,協助更多的中小企業能乘上智能升級的東風,提升更大程度實現萬物互聯的可能,也更快地推動契合用戶場景的智能方案落地。這種賦能產業的做法,為更多謀求智能化發展的企業帶去了紅利,得到了行業好評,聯想也獲得了2018中國最有影響力物聯網云平臺企業等認可聯想SIoT云平臺榮獲賽迪網2018中國最有影響力物聯網云平臺獎在萬物互聯的潮頭,聯想將聯合更多合作伙伴一起,編織出一張無形的將人、物、數據服務等結合在一起的大網,這種帶有生命的有機連接將讓萬物互動無限膨脹、變化,創造出新的價值。相信,聯想有望在這波浪潮里創造出更大的輝煌

  • 百度Q4營收272億元超預期:盤后股價漲3.38%

            對此,百度董事長兼CEO李彥宏表示,“百度在2018年打下了堅實的基礎,全年營收達1023億元人民幣,同比增長28%。同樣2018年對百度來說是關鍵的一年,我們將人工智能應用從搜索拓展到更多業務領域,如信息流、語音助手、AI解決方案和自動駕駛,讓更多用戶、客戶和合作伙伴從百度的人工智能技術和應用中受益。”       百度CFO余正鈞表示:“百度業務正在由移動互聯網向智能家居、智能交通、云和自動駕駛多元化拓展,并將堅定持續地投資。我們希望看到這些投資結出碩果,并在未來幾年持續推動百度的收入增長。”第四季度主要業績       百度第四季度總營收為人民幣272億元(約合39.6億美元),與上年同期相比增長22%,不計入公司已經宣布的資產剝離交易的影響為同比增長28%。“百度核心”(Baidu Core,即搜索服務與交易服務的組合)第四季度總營收為人民幣205億元(約合29.8億美元),比上年同期增長14%,不計入公司已經宣布的資產剝離交易的影響為同比增長20%;  百度第四季度運營利潤為人民幣11億元(約合1.62億美元),比上年同期下降77%;運營利潤率為4%,相比之下上年同期為21%;“百度核心”第四季度運營利潤為人民幣44億元(約合6.45億美元),比上年同期下降26%;運營利潤率為22%,相比之下上年同期為33%;  不計入股權獎勵支出,百度第四季度運營利潤為人民幣27億元(約合3.86億美元),比上年同期下降54%;運營利潤率為10%,相比之下上年同期為26%。不計入股權獎勵支出(不按照美國通用會計準則),“百度核心”第四季度運營利潤為人民幣58億元(約合8.37億美元),比上年同期下降17%;運營利潤率為28%,相比之下上年同期為38%;   百度第四季度凈利潤為21億元(約合3.03億美元),比上年同期下降50%。百度第四季度每股美國存托憑證攤薄收益為人民幣6元(約合0.86美元),比上年同期下降52%。“百度核心”第四季度凈利潤為41億元(約合5.89億美元),比上年同期下降22%;  不計入股權獎勵支出,百度第四季度凈利潤為人民幣46億元(約合6.72億美元),比上年同期下降17%。不計入股權獎勵支出(不按照美國通用會計準則),百度第四季度每股美國存托憑證攤薄收益為人民幣13元(約合1.92美元),比上年同期下降17%。不計入股權獎勵支出(不按照美國通用會計準則),“百度核心”第四季度凈利潤為人民幣65億元(約合9.39億美元),比上年同期下降1%。2018財年主要業績:   百度2018財年總營收為人民幣1023億元(約合148.8億美元),比2017財年增長28%,不計入公司已經宣布的資產剝離交易的影響為同比增長31%。“百度核心”2018財年總營收為人民幣783億元(約合113.8億美元),比2017財年增長22%,不計入公司已經宣布的資產剝離交易的影響為同比增長26%;  百度2018財年運營利潤為人民幣155億元(約合22.6億美元),比2017財年下降1%;運營利潤率為15%,相比之下2017財年為20%;不計入股權獎勵支出,百度2018財年運營利潤為人民幣202億元(約合29.4億美元),比2017財年增長7%;運營利潤率為20%,相比之下上年同期為24%。不計入股權獎勵支出(不按照美國通用會計準則),“百度核心”2018財年運營利潤為人民幣279億元(約合40.6億美元),比2017財年增長23%;運營利潤率為36%,與2017財年的運營利潤率類似;  百度2018財年凈利潤為人民幣276億元(約合40.1億美元),比2017財年增長51%。百度2018財年每股美國存托憑證攤薄收益為人民幣78元(約合11.35美元),比2017財年增長49%。“百度核心”2018財年凈利潤為人民幣336億元(約合48.9億美元),比2017財年增長52%;  不計入股權獎勵支出,百度2018財年凈利潤為人民幣233億元(約合33.9億美元),比2017財年增長35%。不計入股權獎勵支出(不按照美國通用會計準則),百度2018財年每股美國存托憑證攤薄收益為人民幣66元(約合9.64美元),比2017財年增長34%。不計入股權獎勵支出(不按照美國通用會計準則),“百度核心”2018財年凈利潤為人民幣285億元(約合41.4億美元),比2017財年增長37%。主要業務線財報數據:      百度2018年加大了對移動產品矩陣的投入,取得了令人振奮的成果。旗艦應用百度App、好看視頻、全民小視頻三款產品的用戶增長強勁,整體信息流用戶使用時長同比增長112%。QuestMobile數據顯示,在中國十大短視頻應用中,全民小視頻與好看視頻是增長最快的兩個應用。       移動產品矩陣的卓越表現帶動百度移動生態的進一步繁榮。截至2018年12月,百家號內容創作者達到190萬,包含人民日報、新華社、中央電視臺和多個省級媒體機構;百度智能小程序月活用戶達到1.47億,環比增長30%。       在AI新業務方面,DuerOS正在成為中國最受歡迎的智能語音助手。截至2018年12月,搭載DuerOS的智能設備激活量超過2億臺,環比上漲45%;語音交互達16億次, 并連續八個季度實現每季度數據翻倍。DuerOS技能開放平臺目前擁有約2.7萬個第三方開發者,可提供包括網絡電臺、視頻直播等1000多種技能支持。百度智能設備小度在家與小度智能音箱兩款產品在國內多個電商平臺創下購物節同品類最佳銷售記錄,深受用戶喜愛。       Apollo開放平臺也取得技術與商業化上的突破性進展。百度在今年1月CES上發布了全球首個智能駕駛商業化解決方案Apollo Enterprise,并發布Apollo 3.5,覆蓋更多、更復雜的自動駕駛場景,支持市中心、住宅場景等城市道路路況。截至目前,百度已經獲得超過50張智能網聯汽車道路測試牌照,在國內遙遙領先。Apollo合作伙伴也已超過135家,持續領跑自動駕駛行業。此外,Apollo還與一汽、沃爾沃達成戰略合作,共同生產商用L4級轎車。       百度云的技術實力、營收能力也得到顯著提升。在百度與央視2019年春晚紅包互動期間,百度云穩定承接了全球觀眾208億次紅包互動。百度云還推出了開源計算平臺OpenEdge,幫助開發者構建輕量、安全、可擴展性強的邊緣應用程序,將AI應用于智能家居設備、可穿戴設備以及其他物聯網設備。       愛奇藝也延續了強勁增長勢頭。在優質自制內容驅動下,愛奇藝會員數量第四季度達到8740萬,比去年同期增加3660萬。百度還聯合愛奇藝與四川有線電視推出混合OTT 機頂盒“蜀小果”,這是繼“歌華小果”之后,百度推出的第二款人工智能機頂盒。現金流情況:        百度2018財年自由現金流為人民幣272億元(約合39.6億美元)。若將愛奇藝排除在外,則百度2018財年自由現金流為人民幣249億元(約合36.2億美元)。業績展望:     百度預計在2019年第一季度,百度的凈收入總額將會介于235億元人民幣(約合34.2億美元)到247億元人民幣(約合36.0億美元),同比增長12%到18%,移除百度國際業務與度小滿拆分影響,同比增長18%至24%。該展望只代表基于當前情況的初步預測,不排除今后有調整的可能。股價變動情況:      百度發布財報后,其股價在納斯達克常規交易中上漲0.63美元,報收于171.81美元,漲幅為0.37%。在隨后的盤后交易中,百度股價再度上漲4.84美元,至176.65美元,漲幅為2.82%。過去52周,百度的最高價為284.22美元,最低價為153.78美元。

  • Gartner:云和企業軟件2019年支出增長速度將超IT其他領域

    從實體業務轉向數字業務,是支出增長的主要動力。如果您在懷疑數字化轉型是否是IT主管的首要考慮事項,那么只需看看他們正在購買什么。預計在企業軟件(尤其是云服務和應用程序)上的支出增長速度將在今年超過IT其他領域,這將推動全球技術支出的總體增長。根據市場研究和咨詢公司Gartner發布的一份報告,該報告預測全球IT支出將增長3.2%,達到3.77萬億美元。預計在企業軟件上的支出今年將較2018年增長8.5%,達到4310億美元。企業軟件包括ERP(企業資源規劃)、SCM(供應鏈管理)、CRM(客戶關系管理)、開源軟件、本地軟件和云端軟件。Gartner表示,在整個企業軟件類別中,云計算基礎架構和應用程序將吸收大部分支出,今年總計將達到2140億美元,比2018年增長17.5%。“我們所看到最重要的事情是從實體業務轉向數字業務,” Gartner分析師約翰?洛夫洛克(John Lovelock)表示。“這是支出增長的主要動力。”雖然成本優化很重要,但它并不是轉向云服務和應用程序的主要原因,洛夫洛克說。“轉向云端的實際情況是,可獲得更多的敏捷性,以及以您需要的速度獲得所需的特色功能。數字業務的運行速度遠遠超過(實體)業務;超大規模數據中心是唯一的方案,它可以支持數字業務的速度,以及數字業務所需的合作——在本地則很難做到這一點。”然而,云端支出的增長在全球各地并不均衡。“必須說,在全球范圍來看,云計算確實是源自美國的影響,并且正在蔓延;美國目前幾乎占全球云計算支出的60%,”洛夫洛克說。除此之外,發展中國家市場缺乏超大規模數據中心,這導致其應用的滯后,從而減緩這些地區的云端業務增長,他說道。服務和數據中心的支出也在增長對IT服務和數據中心系統的支出也將對總體增長做出重大貢獻。Gartner表示,包括服務器、存儲和網絡技術在內的數據中心系統支出將增長4.2%,達到2100億美元,而對IT服務的支出將增長4.7%,達到1.03萬億美元。Gartner表示,雖然在設備和通信服務上的支出也將增加,但它們會落后于其他領域支出的增長。包括固定和移動電信服務以及統一通信技術在內的通信支出今年將增長1.3%,達到1.4萬億美元。與此同時,預計在PC、平板電腦、手機和打印機等設備的支出將增長1.6%,達到6,790億美元。洛夫洛克表示,市場上出現的手機新功能似乎沒有為許多用戶帶來足夠的動力進行升級,尤其是在經濟不穩定時期。“我們現在正在尋找經濟混亂的跡象,”洛夫洛克說。經濟領域的烏云包括英國即將退出歐盟,美國和中國之間的貿易緊張關系以及潛在的全球關稅上升,這些都給商業計劃注入了不確定性。“對于一家倫敦銀行來說,如果不知道英國脫歐之后其商業模式將如何的情況下,就很難制定計劃在技術方面投入大量資金,”洛夫洛克說。宏觀經濟問題是企業高管關注的焦點。洛夫洛克指出,杜克大學最近對首席財務官的調查顯示,46%的受訪者認為2019年將出現衰退。盡管如此,Gartner預測2019年的IT支出增長為3.2%,雖然略低于2018年的3.9%,但仍然相當強勁。“人們在購買IT的原因方面發生了基本面上的變化,以及他們在打算如何使用IT方面也發生了巨大變化——我們賺錢的方式正在改變,”洛夫洛克說。換句話說,盡管地緣政治問題令商業領袖感到擔憂,但技術支出的基本驅動力——數字化轉型——仍然是IT支出的推動力。

  • IT行業該如何應對AI帶來的技術變革

           我們的家庭生活越來越多地開始使用智能設備和智能應用程序,這些設備和應用都是為了及時滿足我們的需求。像Alexa和Siri這樣的服務意味著,簡單地大聲說話就能立即獲取信息或完成任務。這一趨勢反映了在專業領域,工作者開始期待工作場所的需求得到同樣的即時滿足,因此提供自助服務和自動化已成為所有IT服務臺必不可少的條件。人工智能正在加快普及       這一演變的下一個階段就是人工智能服務的出現,它不僅滿足我們的要求,而且通過分析我們的個人喜好來學習預測我們的需求。雖然這項技術還處于起步階段,但人工智能已經成為大多數領域的主要關注點。知名分析師高德納(Gartner)預計,到2020年,30%的首席信息官將把投資人工智能作為其最優先考慮的五大領域之一。隨著人工智能驅動的解決方案變得越來越普遍,IT服務臺行業也將不得不適應,以反映員工對工作場所請求的響應性、預見性支持的期望。       盡管幾十年的科幻設定了共同的期望,但我們還不能看到獨立的、自我實現的人工智能。相反,目前的人工智能技術都是分析復雜的信息來學習、識別模式和得出結論,當然所有這些都比人類的思維快得多。這一過程的最終結果通常是自動化和大大加快活動,這將節省我們許多小時的重復工作。       在IT服務管理(ITSM)中,人工智能開始自動化IT技術人員執行的常規和非常規任務,給他們更多的時間來執行其他具有更大價值的活動。人工智能在ITSM中最明顯的應用之一是通過自然語言處理和機器學習為虛擬助理提供動力。這些功能將使服務能夠與使用正常人類語言的人進行交互,觀察模式,構建數據模型,并推薦操作。盡管這項技術還在開發中,但ITSM供應商不能忽視人工智能的進步,如果他們的解決方案想要適應和跟上新的、人工智能驅動,就應該開始多學習,打下基礎。        建立知識管理實踐        信息是任何人工智能應用的命脈,穩定地提供豐富、一致的數據是必不可少的。這一要求促使組織發展、收集和分享信息的方式發生了變化,越來越重視管理良好和維護良好的知識,這些知識對于解決方案來說很容易閱讀和學習。       構建和優化數據存儲是一項相當大的任務,因此IT團隊應該開始建立強大的知識管理實踐。包括來自第三方解決方案的數據以及內部系統將提供更多的洞察力,因此建立與API的外部互操作性也很重要。        自助文化建設        多年來,向用戶提供自助服務一直是ITSM的一大趨勢,解決方案包括可搜索的門戶網站和如何指導用戶直接收集知識和解決問題,可幫助自己和IT團隊節省時間。人工智能的實現將極大地增強自助服務的提供,通過能夠更好地預測用戶需求的Web門戶和交互式的、智能的聊天機器人。事實上,企業管理協會(EnterpriseManagementAssociates,EMA)在進行一項調查發現,通過移動、自助服務和機器人改善終端用戶體驗是首要優先事項。        那些已經專注于開發自助服務渠道的企業,自然能夠更好地應對以人工智能為中心的未來。擁有現有自助服務門戶的IT團隊可以通過在一些選擇用例中添加一個簡單的聊天機器人或虛擬代理來嘗試AI實現。使用這些測試機器人的用戶越多,他們的學習和開發就越好,所以團隊可以使用游戲化來激勵用戶嘗試。        要充分實現人工智能的潛力,需要對ITSM背后的互聯系統進行大規模、迭代的更改。這可能具有挑戰性,因為ITIL(信息技術基礎設施庫)是最常見的ITSM框架,對于已建立的系統非常有效,但往往過于僵化,無法支持快速發展的環境。        相反,敏捷或精益的框架,如DevOps,是以實驗和探索為導向的,更適合引入AI。敏捷方法采用了一種更小、更頻繁的更改的迭代方法,這使得在沒有不必要的風險的情況下更容易進行實驗。        探索新的解決方案       在家里,大多數人已經習慣于使用單一的智能設備進行任何事情,輕松地在網上購物,設置音樂播放列表,用幾個熟練的刷卡或口語短語聯系朋友。因此,我們越來越期望在我們的職業生活中采取同樣的統一辦法。員工不再區分IT、人力資源和財務問題,他們希望在一個單一的系統中滿足他們所有的需求。這意味著在一個地方包含所有業務服務需求的組合服務變得越來越有價值。        還沒有組合產品的組織可以通過找到一個需要服務門戶、自動化和報告的高價值業務部門來測試這些流程,并使用現有的ITSM解決方案實現這些過程的自動化。如果該平臺不夠靈活,無法滿足這些新的需求,這是一個強烈的跡象,是時候探索新的解決方案,將能夠應對統一的服務提供。        總結       雖然人工智能在大多數領域仍處于實際應用的早期階段,但不可否認的是,這一概念最終超越了科幻幻想,進入了日常的、腳踏實地的現實。幾乎沒有哪個行業能夠忽視這一趨勢,尤其是那些以處理信息和盡可能高效地找到解決方案為中心的ITSM。那些已經開始通過更強有力的知識管理、自助服務和敏捷實踐來奠定基礎的ITSM提供商將在未來幾年中處于領先地位。

  • 工業互聯網已進入大發展時代

            一、工業互聯網行業發展現狀        工業互聯網作為新一代信息技術與制造業深度融合的產物,不僅能為制造業乃至整個實體經濟數字化、網絡化、智能化升級提供新型網絡基礎設施支撐,而且催生了網絡化協同、個性化定制、服務型制造等新模式新業態,有力促進了傳統動能改造升級和新動能培育壯大。當前,我國已形成比較健全的工業互聯網產業體系,工業互聯網應用正由家電、服裝、機械等向飛機、石化、鋼鐵、橡膠、工業物流等更廣泛領域普及。        2018年是全面實施工業互聯網的開局之年。”在近日由中國信息通信研究院、工業互聯網產業聯盟聯合主辦的2018工業互聯網峰會上,工信部部長苗圩表示,工信部將開展工業互聯網發展“323”行動,即打造網絡、平臺、安全三大體系,推進大型企業集成創新和中小企業應用普及兩類應用,構筑產業、生態、國際化三大支撐。        目前工業互聯網已進入大發展時代,我國已形成較健全的工業互聯網產業體系。從工業互聯網產業聯盟的會員單位構成來看,工業企業占35%,信息通信企業占38%,幾乎平分秋色,同時通信產業有很多在做工業軟件,包括6%的安全公司。最重要的是,這個聯盟是一個開放的聯盟,面向全球,與全球在同樣的起跑線上競爭,境外企業占7%。        工業互聯網產業聯盟的會員單位構成         相關報告:智研咨詢網發布的《2018-2024年中國工業互聯網行業市場專項調研及投資前景預測報告》  2017年中國工業互聯網市場規模達到4676.99億元, 增長率為13.5%; 隨著產業政策逐漸落點, 市場空間將有望加速, 預計2020年中國工業互聯網市場規模可達6929.12億元。  2015-2020年中國中國工業互聯網市場規模及增長率走勢  2017年中國工業互聯網細分領域結構情況中, 基礎設施規模達到1912.89億元, 占總規模的40.9%;軟件與應用規模達到1435.84億元, 占比為30.7%; 通信與平臺的規模為1290.85億元, 占比為27.6%; 工業安全為37.42億元, 占總規模的0.8%。  2017年中國工業互聯網細分領域規模   2017年中國工業互聯網細分領域結構        當前,我國工業互聯網網絡、平臺、安全三大體系建設正加速創新發展。企業在工業互聯網網絡、平臺、安全等領域不斷創造出新技術、新產品、新方案,工廠內外網絡改造升級穩步推進,安全保障能力不斷提升,初步建成了一批典型應用平臺        工業互聯網平臺已成為全球主要國家與跨國巨頭競爭和布局的焦點與核心,各類產業主體積極布局,推出一系列工業互聯網平臺產品。        我國工業互聯網平臺創新活躍,裝備、自動化、工業軟件、信息技術和制造企業從不同領域積極推動平臺發展,目前已經形成超過30個工業互聯網平臺。部分平臺企業能夠在航空航天、裝備制造、信息電子、冶金、石化等行業精耕細作,在質量優化、工藝優化、設備預測性維護、供應鏈協同等方面形成一系列創新應用,并逐步培育起一個工業應用的創新生態。        工業互聯網作為新一代信息技術與制造業深度融合的產物,不僅能為制造業乃至整個實體經濟數字化、網絡化、智能化升級提供新型網絡基礎設施支撐,還催生了網絡化協同、個性化定制、服務型制造等新模式新業態,有力促進了傳統動能改造升級和新動能培育壯大。        目前我國工業互聯網發展進度與全球一致,都處于起步階段,但有自己的特色,目前在參考架構設計、技術創新與產業化、生態體系建設、應用模式創新、國際合作等方面都取得了一系列進展。        就發展階段而言,國內工業互聯網處于發展的第三個階段快速發展期,中國互聯網正從消費型轉向企業型。不過還處于起步階段,或者稱之為“淺水區”,在深度和廣度方面都十分有限,但中國作為僅次于美國的第二大互聯網產業強國,工業互聯網發展前景廣闊。        二、工業互聯網相關企業情況分析   中國互聯網云平臺產業鏈結構而言可分為數據采集層、IAAS層、PAAS層、SAAS層。其中,數據采集層是基礎,IAAS層是支撐,PAAS層是核心,SAAS層是關鍵。白皮書還指出目前較為成熟的是IAAS層,但隨著市場消費需求的不斷擴大,另外三層的利潤將逐漸上升,將成為產業利潤的主要獲取者。        巨大的市場前景吸引著各行業企業紛紛布局,這包括互聯網企業、生產制造商、設備制造商在內的來自產業鏈不同階段的企業紛紛跑馬圈地,推動中國制造業正在向數字化、網絡化、智能化和云化發展。       1、寶信軟件  寶信軟件是寶鋼股份控股、 寶鋼集團實際控制的軟件企業, 是中國領先的工業軟件行業應用解決方案和服務提供商。  2017 年正式發布寶信工業互聯網平臺, 實現企業內部信息流、 資金流和物流的集成和融合。  2018年1-3月實現營業收入10.14億元,同比增長7.05%; 計算機應用行業平均營業收入增長率為18.14%; 歸屬于上市公司股東的凈利潤1.48億元, 同比增長78.14%。  2014-2018Q1寶信軟件總營收及凈利潤情況分析  2、用友軟件(廣東) 營銷服務中心  用友軟件(廣東) 營銷服務中心成立于2006年, 主要業務有用友各系列軟件代理、 為企業信息化建設提供整體解決方案、 軟件開發、 系統實施, 企業數據庫管理及維護等。  2018年一季度業績報告, 總營業收入10.74億元, 同比增加3.28億元, 增長43.9%;云服務業務營收3.66億元, 同比增長158.3%;軟件服務業務快速增長, 營收7.02億元, 同比增長16.0%。  2014-2018Q1用友軟件總營收及凈利潤情況分析  3、東方國信  東方國信成立于1997年, 專注于大數據領域, 緊跟全球大數據技術的發展趨勢, 構建以大數據、 云計算及移動互聯三大技術體系為核心的云化架構的大數據產品體系。  2018年1-3月實現營業收入2.31億元, 同比增長2.63%; 計算機應用行業平均營業收入增長率為23.09%; 歸屬于上市公司股東的凈利潤3607.40萬元,同比下降26.13%, 計算機應用行業平均凈利潤增長率為12.35%。  2014-2018Q1東方國信總營收及凈利潤情況分析  目前,在政策與市場的雙重驅動下,工業互聯網平臺的制造業生態正成為產業競爭的“風口”,2018年的跑馬圈地正愈演愈烈,一場“發展的腥風血雨”已經在所難免。  三、我國工業互聯網平臺建設和應用呈現六大亮點  2018年上半年,國家密集出臺了一系列支持工業互聯網的政策,工業互聯網平臺建設熱度高企。總體看,我國工業互聯網平臺建設和應用呈現六大亮點。  亮點一:  工業互聯網平臺建設迎來政策密集紅利期       為深入貫徹落實國務院《關于深化“互聯網+先進制造業”發展工業互聯網的指導意見》,工信部先后發布了《工業互聯網發展行動計劃(2018—2020年)》《工業互聯網專項工作組2018年工作計劃》《工業互聯網APP培育工程方案(2018—2020年)》,可以說,支持工業互聯網發展的政策體系基本形成。廣東、上海、江蘇、浙江、河南、重慶、福建等省市紛紛制定配套實施方案,加大工業互聯網平臺培育和企業上云支持力度。為加快國家與地方聯動,工信部和廣東、浙江、江蘇等地簽訂了推進工業互聯網發展的部省合作協議。       亮點二:  工業互聯網平臺建設和應用路線圖基本形成  工信部重點圍繞“一二三四五”部署工業互聯網平臺工作,工業互聯網平臺建設和推廣路徑基本形成。  一是打造兩類工業互聯網平臺。一類平臺是能夠參與全球競爭的跨行業跨領域工業互聯網平臺,另一類平臺是面向特定行業的企業級工業互聯網平臺。  二是培育三類工業App。包括基礎共性、行業通用和企業專用工業App。  三是推動九大工業設備上云。推動高爐、工業鍋爐、風電設備、光伏設備、數控機床等工業設備上云,帶來工業互聯網平臺的功能演進和規模商用。  四是開展四類試驗測試。開展跨行業跨領域工業互聯網平臺試驗測試、特定行業工業互聯網平臺試驗測試、特定區域工業互聯網平臺試驗測試和工業互聯網平臺測試床建設,促進技術的快速迭代。  五是建立五大公共服務體系。加快建立平臺基礎及創新服務、監測分析、大數據管理、質量管理、標準管理等公共服務體系。        亮點三:  工業互聯網平臺建設雙輪驅動格局業已形成  當前制造企業和互聯網企業成為工業互聯網平臺建設的兩股核心力量。據統計,由ICT企業主導建設的平臺數量為45個,占比為60%;由制造企業主導建設的平臺數量為30個,占比為40%。海爾、航天科工、徐工、三一重工、富士康等龍頭制造企業基于較強的工業知識和模型沉淀能力,阿里巴巴、東方國信、浪潮、用友、華為、紫光等大型ICT企業基于云計算、大數據等使能技術,紛紛積極建設工業互聯網平臺。       亮點四:  工業App培育和應用全面展開  培育百萬工業App,是建設工業互聯網平臺生態的核心,是形成工業互聯網平臺雙邊市場的關鍵。2018年上半年,工信部印發了《工業互聯網App培育工程實施方案(2018—2020年)》,提出到2020年要培育30萬個面向特定行業、特定場景的工業App。根據阿里巴巴、東方國信、浪潮、海爾、航天云網、用友、徐工、三一重工等國內領先工業互聯網平臺企業公開的數據,我國工業App數量約1萬個,海量工業App和海量工業用戶互促共進、雙向迭代的雙邊市場正在初步形成。       亮點五:  工業互聯網平臺領域投融資熱度空前高漲  2018年上半年,“工業互聯網平臺”投融資領域備受關注,首先從A股資本市場引爆投資熱度。2月到3月僅僅一個月內,與工業互聯網相關的A股上市公司中,東土科技股價上漲85.07%,漢得信息股價上漲71.03%,用友網絡股價上漲125%,海得控制股價上漲高達135%,東方國信股價上漲66.35%,資本市場對工業互聯網相關上市公司的熱炒,使得A股上市公司與工業互聯網相關的資產并購和投資愈演愈烈。股票市場的火爆提升了工業互聯網平臺領域股權投資的熱度。富士康工業互聯網股份有限公司(下稱“工業富聯”)于5月發布了招股意向書,在工業富聯IPO過程中,共有20家知名企業及投資機構進入了戰略配售名單,阿里巴巴、騰訊、百度三大互聯網巨頭全部在列。此外,上海國投、中央匯金、中國國有企業結構調整基金、中國人壽、招商局、國投等知名企業也都通過直接投資或旗下投資主體積極參與對工業富聯進行戰略投資。工業富聯網上發行最終中簽率為0.342%,網下配售中簽率僅僅為0.08%,機構超額認購倍數高達1293.57。               亮點六  工業互聯網平臺區域集中度凸顯  截至目前,我國工業互聯網平臺集中分布在環渤海、長三角、珠三角三大區域,數量較多的省市是北京、江蘇、上海、浙江、廣東、山東等,分別為15個、12個、9個、7個、6個、6個,約占平臺總數的73%。這些地區的政府和企業積極性高、先進制造業集聚、制造業與互聯網融合發展基礎較好,大多以推動產業集聚區的行業整體上云為抓手,涌現出了一批各具特色的工業互聯網平臺。

  • 2019年IT新動態:IT市場壓力將會引發科技生態鏈巨變

    就2018年IT業的發展進程,摩爾定律似乎已經跟不上人工智能和IT自動化的迅猛發展!!!由于電子器件的小型化,分布式計算在微處理器上得到了迅速的發展。圖形處理單元(GPU)的出現以及由此產生的超集成基礎設施就是證明。現在,IT部門正在將傳統標準化服務器的成本效益與進入市場的創新產品與邊際計算實踐進行比較。IT部門所需的技能類型也發生了變化,IT社區的重點從手工任務工作轉移到了IT自動化。因此,IT解決方案必須包含更多的軟件功能來操作、監控、管理和動態配置企業的IT控制界面。對于IT供應商來說,更值得注意的是,高級功能和對安全環境不斷增長的需求進一步增加了IT基礎架構的復雜性,這是實現預期結果所必需的。同時,行業用戶希望在不涉及復雜性的情況下從這些新功能中獲益。從IT生態權威媒體端來看,IT供應商將經歷許多變化:他們如何合作,如何進入市場,如何創新,以便在快速增長的2019年保持良好的相關性,值得我們關注。同時,行業用戶希望在不涉及復雜性的情況下從這些新功能中獲益。IT供應商將經歷許多變化:他們如何合作,如何進入市場,以及他們如何創新以在快速增長的2019年保持良好的相關性,值得我們關注。首先,在一個日益開放的源代碼環境中,合作伙伴的力量在以硬件為中心的供應商戰略中變得更強。趨勢:硬件供應商正在尋求更深入、更合作的合作伙伴關系,以支持圍繞云等關鍵技術的新興戰略。驅動因素:不斷增長的客戶對開源技術的需求以及來自商業市場IT供應商的持續壓力正在推動他們之間更深入的合作關系,因為他們必須保持技術和解決方案之間的聯系,以形成一個整體的解決方案。結果:合作關系將使基礎設施供應商能夠承受來自以云為中心和以軟件為中心的同行的壓力。ODM也給原始設備制造商帶來了越來越多的壓力。加強這些合作關系的需要是為了確保長期的生存能力。回顧過去,2018年,IT供應商之間的合作關系有所增加。總體而言,該行業正在看到兩種類型的合作關系。例如,聯想和Netapp集成了基礎架構并演示了協作硬件平臺。據悉,兩家公司目前正在使用netapp全閃存數據管理解決方案和聯想ThinkSystem基礎架構整合聯想品牌存儲產品,將充分利用聯想供應鏈和渠道系統來布局存儲市場。通過協作,聯想和Netapp都可以從擴大客戶群中獲益。此外,聯想與美商在中國的存儲產品合資企業,增強了大公司可以積累的優勢,改變了利潤率的下降,成為推動技術轉型的重要途徑。戴爾與VMware的合作是軟硬件合作的另一個例子。盡管VMware是戴爾集團的一部分,但它與硬件關系不大。戴爾曾考慮反向收購VMware,但除了資本運營外,這兩個方案的整合也吸引了業界客戶的更多關注。通過在整個IT基礎架構上進行協作,Dell和VMware使客戶能夠從IT待辦事項列表中刪除冗余的管理任務,同時使用戶更加滿意和高效。戴爾正通過更強大的軟件和硬件集成吸引客戶做出選擇。畢竟,這樣一個大型硬件供應商很少有與軟件產品相關的解決方案。此外,客戶對開放性的追求使其成為供應商戰略的重要組成部分。作為回應,IBM擁有Red Hat技術,并以更有利可圖的產品組合迎合市場。IBM可能會看到亞馬遜和谷歌的盈利方向,跟隨潮流或順應潮流。簡言之,更多利基設施提供商將遵循這些合作策略,以維持商業化和以云為中心的市場。然而,通過合作或合資,一些專業領域的小公司會感到壓力,后者如何選擇一個更強大的合作平臺是值得考慮的。其次,IT供應商將重新考慮創新,因為研發部門正轉向滿足客戶的主要需求,以利用其關鍵IT供應商作為一站式服務。趨勢:基礎設施供應商將更加關注預售和服務。驅動力:快節奏的全球經濟正在鼓勵IT客戶盡快采用自動化技術,如人工智能,以跟上行業垂直部門的技術變化。結果:這種快速采用,再加上嵌入新的IT技術,鼓勵客戶尋求以服務為中心的基礎架構解決方案,這些解決方案可以反復迭代。從基礎設施提供商的角度來看,服務是利潤率較高的解決方案。因此,通過提供服務來促進基礎設施銷售,不僅有助于密封交易,而且還能提高公司的利潤價值。在整個2018年,以硬件為中心的公司一直致力于通過有機創新、合作和收購來增強其軟件和服務能力,以滿足不斷變化的客戶需求,并在其他商品行業創造差異化。隨著我們進入2019年,當人工智能和云服務成為基礎設施供應商戰略的重點時,需要加快這一轉變,以便基礎設施供應商保持相關性。然而,在以小型基礎設施為中心的供應商的服務領域,后者面臨著一個關鍵挑戰,即人才的獲取,因為眾所周知的高技能IT人員短缺。大型IT企業對人才生態有了更大的信心,因為他們有著成熟的人才培養渠道、大學工程師培訓基金會和完善的人才培養體系。中國權威IT生態媒體之一的廣端網絡觀察表明,目前,能夠持續向人才系統前端輸送人才資源的代表性企業包括華為、新華三、思科、IBM、戴爾等大型制造企業,他們在TAL有著相當的培養經驗。耳鼻喉科輸入。基于此,他們可以在現有產品組合的基礎上為客戶提供硬件、軟件和服務。小型IT供應商必須尋求更具戰略意義的方法來取得類似的成功。此外,隨著客戶越來越依賴基礎設施供應商來滿足其所有IT需求,物聯網和安全也將成為IT供應商在2019年合作的一個領域。第三,新興的基礎設施技術重塑了客戶的需求,越來越多地關注計算和管理數據的新方法。客戶尋求與較少的供應商合作,以降低其環境的復雜性,這將加速對大型IT供應商的收購。趨勢:基礎設施提供商繼續投資新興的基礎設施技術,如(NVMe)、GPU、量子計算和優勢。驅動因素:部分來自業務部門的安全問題正在增加,這增強了硬件差異化的價值,而技術進步則更加強調新的數據處理方法,如邊緣計算。結果:客戶將尋求新的硬件功能來實現現代計算,如量子計算和優勢。新興的基礎設施技術將為公司未來的計算和數據存儲奠定基礎。人工智能和機器學習等用例導致了數據的快速創建。IT供應商在數據中心基礎設施中的任務是創新,以便開發和利用這些數據為客戶提供強大的方法。IT供應商正在圍繞NVMe和GPU等新興技術進行創新,以處理不斷增長的數據創建并實施邊緣計算,以便客戶在購買許多不同組件后能夠使用傳統和非結構化數據更快地實現業務增長。業界普遍認為,隨著客戶越來越需要能夠促進轉型的基礎設施創新,2019年將圍繞邊緣計算和數據中心、基礎設施增強(如NVME和GPU)進行大量創新。量子計算屬于另一類新興的基礎設施技術,因為它的創新將比計算機技術產生更大的影響,而不是增強現有功能的NVME和GPU技術。也就是說,商業級量子計算的出現將使近半個世紀摩爾定律的進步顯得更加有力。到2024年,量子計算產品和服務的市場規模將達到84.5億美元,政府資助的研發投資將達到22.5億美元。預計未來幾年將是量子計算技術快速發展和產業應用逐步擴展的時期。如果傳統計算改變了傳統制造業的信息技術應用形式,那么量化將加速知識和技能的發展,加速全球經濟從制造業向以知識和技能為核心的發展路徑,這種轉變將更加加強與傳統制造業的整合。NK和練習。智能計算將有一個指數級的進步,應用世界上最復雜的算法來解決困難的業務問題。未來的公司和技術公司致力于圍繞算法開發構建API連接器和策略規則,以接近量子計算的應用級別,然后將結果返回到經典計算模型。簡單地說,IT程序員獲得優化的量子算法以滿足硬件性能和特定的應用場景。考慮到性能改進的潛力,量子計算可以超越經典計算的競爭劣勢。據IT生態權威媒體廣端網絡預測,2019年量子計算商業化將在一定程度上刺激行業IT解決方案的實質性創新,而不是概念的包裝。回到搜狐看看更多

  • 花錢買數據也不行!蘋果這次對Facebook下了狠手

    剛剛,蘋果撤銷了Facebook的iOS開發者資格證書!早上起床就被這個新聞標題驚呆了。蘋果和Facebook這兩大巨頭的確素來不睦,庫克和扎克伯格也頻頻隔空批評對方,但移動巨頭和社交巨頭真的到了徹底撕破臉,乃至封殺Facebook的地步?沒那么嚴重。實際上,蘋果只是取消了Facebook的企業開發者資質。Facebook在iOS正常的應用分發并不會受到影響,普通用戶依然可以在iPhone和iPad下載Facebook、Instagram、WhatsApp、Facebook Messenger等諸多社交應用。那到底是什么意思?Facebook沒法在iOS平臺發布其面向內部員工的應用了,這既包括了Facebook社交矩陣諸多新功能服務的測試版本,也包括了Facebook員工內部的服務應用,比如說Facebook員工的班車應用和午餐應用。此舉對Facebook影響大么?還是挺大的。拋開員工生活服務不提,Facebook諸多新功能原本是通過員工應用進行內測的,現在被蘋果封殺之后,iOS應用的內測就成為了一個大問題。當然,Android平臺并不會受到影響。然而,即便Facebook鼓勵員工使用Android手機,iOS也是Facebook最看重的高價值用戶群。蘋果為什么要對Facebook下狠手?蘋果的封殺理由是Facebook濫用蘋果的企業開發者計劃,付費吸引普通用戶下載安裝本應用于員工內測的VPN應用,違規搜集用戶大量隱私數據,嚴重違反了蘋果的開發者協議。“任何開發者通過企業開發者權限向消費者分發應用,都會被取消權限。這是為了保護用戶和數據。”究竟是什么事?這款引發爭議的VPN描述文件應用叫“Facebook Research”。用戶下載并點擊信任之后,這款應用就可以獲得廣泛的手機接入權限,搜集用戶幾乎所有的數據,包括安裝應用、地理位置、聊天記錄、上網瀏覽和手機使用等隱私數據。此事是由美國科技媒體Techcrunch調查曝光的。Facebook從2016年開始在Instagram上打廣告,以付費參加社交媒體研究的名義,吸引13-35歲的用戶參加自己的調查項目,每月付費20美元以及額外的每個人20美元的推廣拉人獎金,吸引他們下載安裝和持續使用Facebook的此類隱私數據分析應用(包括iOS和Android應用)。Facebook甚至要求用戶截圖他們的亞馬遜訂單購買記錄。在這些用戶中,大約有5%屬于未成年人。換句話說,Facebook是在付錢換取用戶用戶出賣自己的數據用于Facebook的商業分析。這是Facebook調查未來商業趨勢的測試項目Project Atlas。顯然,對Facebook來說,這些完整詳盡的個人智能手機使用數據的價值遠遠超過了每月20美元,才會愿意冒著被蘋果封殺的風險去違規推廣。原本Facebook是公開推廣此類項目的。但去年6月蘋果封殺了Facebook一款類似搜集用戶數據的應用Onavo Protect,Facebook是在2014年斥資1.2億美元收購這個創業項目。Onavo依然在谷歌商店可以下載,累計下載量超過了1000萬次。在被蘋果App Store下架之后,Facebook并沒有徹底死心,而是利用了企業開發者機制,繞過蘋果應用商店,從員工內測渠道繼續推出此類應用,付費吸引普通用戶(包括了成人和兒童)下載該應用,繼續收集和分析用戶的手機上網行為。實際上,Facebook Research可以被視為Onavo的另一個版本。在被媒體曝光之后,蘋果隨即撤銷了Facebook的企業開發者資質。諷刺的是,在蘋果采取行動之后,Facebook才發表聲明稱公司已經關閉了iOS版本的Research項目,假裝是自己主動取消了該應用。過去一年時間,Facebook連續被爆出多起涉及用戶數據的丑聞,其中影響最大的就是2016年美國大選期間的“劍橋分析公司”丑聞。一家大數據營銷公司利用Facebook數年前的管理漏洞和制度缺失,違規獲得了數千萬用戶的個人數據,用于精準投放政治廣告。由于劍橋分析公司在16年大選期間的服務客戶是后來獲勝的美國總統特朗普,這起事件引發了美國主流媒體和自由派的高度重視。蘋果CEO庫克已經多次公開批評Facebook收集和出售用戶隱私數據進行獲利。在批評Facebook之后,庫克總是會提到蘋果高度重視用戶隱私的企業理念,甚至公開呼吁監管部門采取措施,加強對收集用戶數據行為的管理和懲罰。而扎克伯格則回擊庫克根本不懂Facebook的商業模式,Facebook是免費提供服務的,而不是像蘋果一樣出售昂貴的產品獲利。不過,盡管Facebook遭遇了一系列負面打擊,但這并沒有影響Facebook的業績。今天發布的Facebook財報顯示,去年第四季度Facebook營收169.14億美元,同比增長30%;凈利潤68.82億美元,同比增長61%。Facebook月活用戶高達23.2億人,同比增長9%;日活用戶高達15.2億人,同比增長9%。而且,Facebook高達93%的營收來自移動廣告。這一靚麗財報推動Facebook股價盤后大漲11.5%。精準投放的社交廣告是Facebook的商業模式基石,而用戶大數據生成的社交圖譜則是Facebook賴以盈利的資產。雖然Facebook Reseach項目被蘋果封殺了,但社交巨頭Facebook絕不會輕易放棄對用戶數據的渴求。

  • 人工智能在中國的發展狀況,中國距離AI強國還有多遠?

    第四次工業革命正在來臨,尤其是以人工智能為技術已經從科幻逐步走入現實。世界各國已經認識到人工智能是未來國家之間競爭的關鍵賽場。對于中國而言,人工智能的發展更是一個歷史性的戰略機遇,對于緩解未來人口老齡化壓力、應對可持續發展挑戰、以及促進經濟結構轉型升級至關重要。那么目前,人工智能在中國的發展條件如何,中國距離成為真正的人工智能強國還有多遠?7月13日,《中國人工智能發展報告2018》在清華大學主樓接待廳發布。報告中稱,目前中國人工智能的發展已經具備非常優越的條件,然而要成為真正的人工智能強國,中國還任重道遠。中國在論文總量和高被引論文數量上都排在世界第一,但中國在人才總量,以及杰出人才占比偏低。在產業上,中國的人工智能企業數量排在全球第二,不過,中國人工智能領域的投融資占到了全球的60%,成為全球最“吸金”的國家。        報告指出,中國必須加強基礎研究,優化科研環境,培養和吸引頂尖的人才,在人工智能的心基礎領域實現突破,保證人工智能發展的根基穩固。同時,要大力鼓勵產學研合作,讓企業成為人工智能創新的主導力量。積極參與到人工智能全球治理機制的構建中,在人工智能未來的技術發展、風險防范、道理倫理規范制定等領域發揮中國獨特的作用。        這份報告由清華大學中國科技政策研究中心、清華公共管理學院政府文獻中心、北京賽時科技有限公司、科睿唯安、中國信息通信研究院和北京字節跳動科技有限公司聯合發布        論文總量世界第一,杰出人才占比偏低        報告中稱,在論文產出上,中國人工智能論文總量和高被引論文數量都是世界第一。中國在人工智能領域論文的全球占比從1997年4.26%增長至2017年的27.68%,遙遙領先其他國家。        高校是人工智能論文產出的絕對主力,在全球論文產出百強機構中,87家為高校。中國頂尖高校的人工智能論文產出在全球范圍內都表現十分出眾。        不僅如此,中國的高被引論文呈現出快速增長的趨勢,并在2013年超過美國成為世界第一。        但在全球企業論文產出排行中,中國只有國家電網公司的排名進入全球20。從學科分布看,計算機科學、工程、和自動控制系統是人工智能論文分布最多的學科。國際合作對人工智能論文產出的影響十分明顯,高水平論文中國通過國際合作而發表的占比高達42.64%。專利申請上中國專利數量略微領先美國和日本。中國已經成為全球人工智能專利布局最多的國家,數量略微領先于美國和日本,三國占全球總體專利公開數量的74%。        全球專利申請主要集中在語音識別、圖像識別、機器人、以及機器學習等細分方向。中國人工智能專利持有數量前30名的機構中,科研院所與大學和企業的表現相當,技術發明數量分別占比52%和48%。        企業中的主要專利權人表現差異巨大,但中國國家電網近五年的人工智能相關技術發展迅速,在國內布局專利技術量遠高于其他專利權人,而且在全球企業排名中位列第四。中國的專利技術領域集中在數據處理系統和數字信息傳輸等,其中圖像處理分析的相關專利占總發明件數的16%。電力工程也已成為中國人工智能專利布局的重要領域。        雖然在論文總量和高被引用論文數量上中國排名領先,但在人才投入上,中國表現并不突出。        根據該報告,截至2017年,中國的人工智能人才擁有量達到18232人,占世界總量8.9%,僅次于美國(13.9%)。高校和科研機構是人工智能人才的主要載體,清華大學和中國科學院系統成為全球國際人工智能人才投入量最大的機構。        然而,按高H因子衡量的中國杰出人才只有977人,不及美國的五分之一,排名世界第六。企業人才投入量相對較少,高強度人才投入的企業集中在美國,中國僅有華為一家企業進入全球前20。中國人工智能人才集中在東部和中部,但個別西部城市如西安和成都也表現十分突出。國際人工智能人才集中在機器學習、數據挖據和模式識別等領域,而中國的人工智能人才研究領域比較分散。中國人工智能企業數量全球第二,但投融資規模最大報告稱,中國人工智能企業數量從2012年開始迅速增長,截至2018年6月,中國人工智能企業數量已達到1011家,位列世界第二,但與美國的差距還非常明顯(2028家)。        中國人工智能企業高度集中在北京、上海、和廣東。在全球人工智能企業最多的20個城市中,北京以395家企業位列第一,上海、深圳和杭州也名列其中。中國人工智能企業應用技術分布主要集中在語音、視覺、和自然語言處理這三個技術,而基礎硬件的占比很小。        風險投資上,從2013到2018年第一季,中國人工智能領域的投融資占到全球的60%,成為全球最“吸金”的國家。但從投融資筆數來看,美國仍是人工智能領域創投最為活躍的國家。在國內,北京的融資金額和融資筆數都遙遙領先其他地區,上海和廣東的人工智能投資也很活躍。從2014年開始,國內人工智能投融資活動的早期投資的占比逐漸下降,投資活動日趨理性,但A輪融資還是占主導地位。中國人工智能市場增長迅速,計算機視覺市場規模最大。2017年中國人工智能市場規模達到237億元,同比增長67%。計算機視覺、語音、自然語言處理的市場規模分別占34.9%、24.8%、21%,而硬件和算法的市場規模合計不足20%。預計2018年中國人工智能市場增速將達到75%。產品應用范圍廣泛,語音和視覺類產品最為成熟。人工智能已經在醫療健康、金融、教育、安防等多個垂直領域得到應用。全球智能音箱市場增長迅速,國內外主要互聯網企業都有部署,其中谷歌和亞馬遜的市場份額超過全球60%,中國的阿里巴巴和小米分列第三和第四位。2017年全球機器人市場達到232億美元,中國市場占27%。其它如無人機、智能家居、智能電網、智能安防、智能醫療和智能金融也發展較快。除了上述兩個板塊外,報告人工智能的發展戰略和政策環境、以及社會認知和綜合影響等方面描繪中國人工智能的發展面貌,力圖綜合展現中國乃至全球人工智能發展現狀與趨勢,以提升公眾認知水平、助力產業健康發展、服務國家戰略決策。

  • Google上線更新:頁面速度影響移動搜索排名

          網站瀏覽起來緩慢這無疑對用戶來說體驗不佳,停留的時間和來訪的次數自然不用說。谷歌顯然清楚這一點——從 2018 年 7 月開始,谷歌將在排名算法中使用網頁的速度進行移動搜索排名。這意味著慢速網站將受到一定的“懲罰”,而更快的網站將在搜索結果中排名更加靠前。        據SE Roubdtable報道,Google幾小時前剛剛在官方Twitter賬號發布消息:被稱為速度更新( Speed Update)的算法更新,也就是頁面速度影響移動搜索排名的算法,正在全面上線中。        更確切地說,這個更新應該被稱為移動速度更新,Mobile Speed Update,因為這是針對移動頁面和移動搜索排名的。        做SEO的肯定都知道,頁面打開速度是搜索排名因素之一,Google和百度都是如此。Google把頁面速度作為排名算法因素之一早在2010年4月就公布并開始了。不過頁面速度只是排名算法的很小一個因素,只影響了1%的查詢排名,只有速度真的非常非常慢的頁面會被影響。        不過有點令人迷惑的是,直到今天為止,從2010年就開始的頁面速度影響排名指的是PC搜索和PC頁面打開速度,并不是移動搜索。        過去兩三個月,Google分批次把滿足條件的網站轉向移動優先索引,我的大部分網站都已經在 Google Search Console中看到通知,已經轉為移動優先索引了,也就是Google開始索引網站的移動版,而不是PC版,作為排名的依據。        而到目前為止,移動頁面的速度是不作為搜索排名因素的。Google又開始使用移動頁面索引來排名,所以那些轉向移動優先索引的網站的頁面速度反倒不影響搜索排名了。移動搜索排名卻看的是PC頁面的速度。這聽起來是不是有點不合邏輯呢?移動搜索和移動頁面才更需要考慮頁面速度啊。        所以Google今年1月就發帖說,他們在考慮這個問題,將會在7月份把頁面速度作為移動搜索的排名因素。這個算法今天如期上線。??關于這次速度更新,有幾個點值得注意:??1.只影響特別慢的頁面??2.只影響一小部分查詢詞??3.滿足查詢意圖還是最重要的,所以如果有好的、相關的內容,很慢的頁面還是會有好排名??4.速度快并不是加分因素,所以速度已經不錯的頁面,即使速度改進得更快,也不會提高排名??5.受影響的那些很慢的頁面,速度有一定改進就會使排名有很大提升??6.PC索引還是使用PC頁面速度??所以,如果讀者的英文網站在這一兩天排名和流量,尤其是移動搜索,有比較大的降低,可能是因為移動頁面速度太慢了。如果有提升,可能是排在前面的競爭對手頁面太慢了,被降低排名了。??現在移動搜索是所有搜索引擎的重心,百度也是如此,或者說更是如此。上星期參加2018年廈門MadCon大會和百度搜索沙龍,百度現在力推的熊掌號也是針對移動搜索,PC搜索的事現在基本不提了。??原因也很簡單,移動搜索查詢量超過PC端搜索。下圖是過去2年世界范圍移動搜索和PC搜索份額:        大致從2016年10月移動搜索查詢量全面超過PC搜索。目前移動搜索份額是52.36%。        下圖是過去2年中國移動搜索和PC搜索比例:        中國移動搜索超過PC搜索查詢量更早,移動搜索比例也更高。目前中國移動搜索占比為65.53%,比全球范圍高得多,這也可能是百度對移動搜索更上心的原因之一。

  • 一文看盡2019年IT及大數據行業趨勢權威預測

    2018已經過去,今年區塊鏈、5G、芯片、量子計算成為大家不斷提及的技術重點,明年大數據科學還會有哪些發展方向,IT行業還有哪些發展趨勢?眾多機構都針對未來產業發展做出預測。CCF:2019年大數據發展趨勢十大預測        在12月6日舉行的2018中國大數據技術大會上,CCF大數據專家委員會發布《2019年大數據發展趨勢預測》報告時表示,大數據和數據從輔助到引領,從熱點到支點,已經成為所有新舊技術、新舊模式的必備基礎。        據預測,2019年,大數據最令人矚目的應用領域是健康醫療、城鎮化智慧城市、金融、互聯網電子商務、制造業工業大數據。        取得應用和技術突破的數據類型是城市數據、視頻數據、語音數據、互聯網公開數據以及企業數據、人體數據、設備調控、圖形圖像。Gartner:2019年十大戰略性技術趨勢        Gartner列出了企業組織在2019年需要探究的十大戰略性技術趨勢:自主設備、增強分析、AI驅動的開發、數字孿生、邊緣計算、沉浸式體驗、區塊鏈、智能空間、數字道德和隱私、量子計算。        Gartner fellow兼副總裁David Cearley認為,無處不在的智能設備提供各種基于大數據的貼心服務,將是科技的未來。Gartner稱之為Intelligent Digital Mesh。        Intelligent:AI將深入所有已有的垂直行業,并創造出新的行業。        Digital:物理世界和數字世界將被折疊,新的「沉浸」世界將會產生。        Mesh:人、生意、設備、內容、服務將連結成一個不斷擴張的大網。        Cearley認為,上述三點覆蓋下的所有趨勢都將帶來持續的創新增量。        IDC:2019年及以后的全球信息技術(IT)行業的預測        IDC公司將數字化的經濟、邊緣計算、應用開發革命、人工智能、高信任度、多種云服務等產業列為全球IT市場十大熱點。        IDC FutureScape報告中認為,鑒于競爭對手和產業都在向數字化轉型,如果企業不能快速向數字化轉型,到2022年,它們逾三分之二的目標市場會消失。        預測1:數字化的經濟。到2022年,逾60%的全球GDP將都是數字化的,推動2019-2022年期間與IT相關的投資將達到約7萬億美元。        預測2:數字化原生IT。到2023年,75%的IT支出將用于第三代平臺技術,因為逾90%的企業會建立“數字化原生”IT環境,在數字經濟中快速增長。        預測3:邊緣計算快速增長。到2022年,逾40%機構的云部署將包含邊緣計算,25%的終端設備和系統將執行人工智能算法。        預測4:應用的革命。到2022年,90%的新應用將采用微服務架構,提高設計、調試、更新和利用第三方代碼的能力,35%用于生產環境的應用將原生支持云計算服務。        預測5:新的開發者階層。到2024年,新出現的不使用定制腳本的專業開發人員,將使開發者數量增加30%,加速數字化轉型。        預測6:數字化創新爆發。從2018-2023年,借助新工具/平臺、更多開發者、靈活的方法和大量代碼重用,新開發的應用數量將達到5億款,相當于過去40年的總和。        預測7:通過專業化實現的增長。到2022年,25%的公共云計算服務將基于非x86處理器(包括量子計算機);屆時,機構在垂直“軟件即服務”應用方面的支出超過水平應用。        預測8:人工智能成為新的用戶界面。到2024年,采用人工智能技術的用戶界面和過程自動化將取代三分之一目前基于顯示屏的應用;到2022年,30%的企業將利用對話式語音技術提供客服服務。        預測9:更高的信任度。到2022年,50%的服務器對數據進行加密,逾50%的安全警報由采用人工智能的自動化過程處理,1.5億人將有基于區塊鏈的數字身份        預測10:機構使用多種云服務。到2022年,四大云平臺將托管80%的基礎設施即服務/平臺即服務部署,但到2024年,9成的全球1000大機構將通過采用多款云服務,或者混合云技術和工具減輕對某一云服務的依賴。        從各機構預測看出,數據已經成為基礎設施,數字化轉型成為企業的必選之路。大數據已經同人工智能、云計算高度融合,數據分析及計算能力進一步提升。中國在近兩年對零售業、金融業數字化改造逐步深化后,制造業、農業等傳統產業將成為未來改造重點。同時數字化程度越高,數字安全問題越受關注,保障及立法迫在眉睫。        在經濟形勢不穩定的情況下,通過技術研發構建核心競爭力的需求越發迫切。中國在5G技術、芯片技術、量子計算等領域加大研發,掌握先進技術;在大數據、人工智能、云計算、區塊鏈等技術上加強應用,尋求技術落地,促進企業降低成本、提質增效。        在數字經濟的新一輪競爭中,中國已經走在前列,2019年數字化進程將不斷深化。

  • 十種可能改變IT行業走向的編程語言__編程語言前沿

    作為開發人員,我們真的還需要學習那么多的新型編程語言嗎。現在所擁有的選擇已經是相當的豐富,命令語言、函數語言、面向對象型語言、動態語言、編譯語言、解釋型語言以及腳本語言等等。這些身處業界前沿的編程語言為軟件開發工作的未來提供了獨到的解析視角。我們真的還需要那么多新型編程語言嗎。當前開發人員們所擁有的選擇無疑已經相當豐富。命令型語言、函數型語言、面向對象型語言、動態語言、編譯語言解釋型語言以及腳本語言等等似乎已經完全罩得住我們可能面對的一切任務,而且今日也幾乎沒有哪位專業人士能夠通曉上述全部語言。然而,新型語言仍然在以驚人的速度不斷涌現。有些是學生或者愛好者以個人項目的形式所設計,另一些則是來自大型IT供應商的產品。連中小型企業也不甘勢弱,積極針對其所在行業的需要開發出服務用語言。為什么人們如此熱衷于這種重復性勞動呢。答案其實很簡單,盡管目前大家手頭的語言在功能性與通用性方面已經相當強大,但仍然沒有哪種單獨的語法規則能程度迎合任何一種實際需求。更重要的是,編程行為自身也處于不斷的發展變化當中。多核CPU的崛起、云計算的升溫、高流動性與分布式體系結構,這一切的一切都向開發人員提出了新的技術性挑戰。要為現有語言——尤其是當下流行的語言——添加新功能、范例以及模式可以說比登天還難。有時候直接搞一套新語言往往是解決方案。那么在這里,我將帶大家一同縱覽十種位居業界前沿的編程語言;其中每種方案都從全新的視角詮釋了軟件開發工作的藝術性,并以各自不同的特色解決了某些具體問題或是彌補了當下某款主流語言的獨有缺憾。它們中有些是已經頗為成熟的項目,而有些則尚處于自身發展的初級階段。有些可能對于大家來說還相當陌生且顯得晦澀但懂,但毋庸置疑的是,它們很可能在未來給開發業界帶來顛覆性的突破,并徹底改變今年數年的編程工具發展趨勢——在新一代語言面世前,它們就是未來的生力軍。實驗性編程語言: DartJavaScript在為網絡頁面添加基本交互功能方面表現拔群,但當網頁應用程序的體積達到數千行代碼時,該語言的局限性就將暴露無遺。谷歌正是基于這種缺憾而推出了Dart,而這種語言也承載了谷歌為網頁編程帶來全新標準的雄心壯志。38c32459-c785-4450-adf4-113ec18976db.jpg與JavaScript相似,Dart采用了與C語言相似的語法及關鍵字。然而Dart與JavaScript最為顯著的區別在于,前者中的對象明確指向類及接口,這與C++及Java頗有異曲同工之妙。Dart還允許程序員們利用靜態式有選擇地聲明變量。追溯設計者的思路,他們應該是希望Dart與JavaScript一樣更易于學習、保有動態特色以及流暢的執行效果,這樣一來開發人員就能夠在編寫代碼方面投入較少的時間,產品維護也將更為便捷,同時細小的錯誤帶來的影響也將被降程度。目前我們還不能用Dart解決太多實際問題。其設計理念是希望該語言能夠同時運行于客戶機與服務器之上(與Node.js差不多),但現在惟一能夠讓Dart代碼在客戶端上運行的辦法是將其通過編譯轉換為JavaScript。它還不能正確作用于每一款瀏覽器。不過由于Dart以BSD類開源許可方式進行發布,因此任何購買了谷歌版本的廠商都可以隨意將其構建于自己的產品當中。谷歌要做的只是說服業界接受這個編程領域的新生兒即可。實驗性編程語言第二位: CeylonGavin King并不承認Ceylon這款他在紅帽公司中創造出來的語言肩負著“Java終結者”的歷史使命。在King的從業經歷中,最為耀眼的一頁正是他作為Hibernate——Java對象關系映射框架的創建者所贏得的贊譽。他喜歡Java,但他仍然認為Java還有很多提升空間。King對于Java的抱怨主要集中在冗長的語法結構,這種語言缺乏一級與高端功能,而且對元編程的支持也相當薄弱。而更令他感到沮喪的是,Java中對于結構化數據定義的聲明性語法極為欠缺,用他的話來說這使得Java“與XML根本無法分割。”Ceylon的目標就是解決上述疑難雜癥。King與他的團隊并不打算完全從零做起。Ceylon虛擬機就不會出現,此類功能將通過Ceylon編譯器將內容轉換為Java字節代碼,進而運行于JVM當中。不過Ceylon絕不會止步于一款編譯器這么簡單。該項目的一大雄心是打造一套全新的Ceylon SDK體系來取代Java SDK,引用King對于后者的評價——結構臃腫、笨拙,且從來沒有得到“適當的、與時俱進的調整。”這是一項艱巨的任務,因為紅帽公司到目前為止還沒有發布過任何一款Ceylon工具。King表示自己期待著能在年內看到一款編譯器出現,但不會指望短時間內會有“由Ceylon編寫”的軟件問世。實驗性編程語言第三位: Go解釋程序、虛擬機以及托管代碼如今正風靡一時。我們真的需要另一款用于將目標內容編譯為本地二進制文件的老式語言嗎。來自谷歌工程師團隊的小組——由Robert Griesemer以及貝爾實驗室的傳奇式人物Ken Thompson與Rob Pike共同執掌——給出的答案是肯定的。19d21be9-495d-4fce-8b60-ca434a4420ba.jpgGo是一種通用型編程語言,且適用于從應用程序開發到系統編程等各種工作需求。從這種意義上來說,它更接近于C語言或C++,而不是Java或是C#。但與后兩者一樣,Go中也包含著各類現代化功能,包括垃圾收集、運行時間映象以及對并行性的支持。同樣重要的是,Go在設計上有意降低了編程難度。其基礎語法與C語言非常相近,但卻消除了多余的語法及樣板文件,同時簡化了對象定義等常用功能的操作。Go項目小組的目標是打造出了一款像動態腳本語言那樣擁有親切代碼的語言,并且能夠像編譯語言那樣提供強大的功能性。Go尚處于創建過程之中,而且其語言規范也仍可能發生變動。也就是說,我們目前已經可以開始嘗試使用了。谷歌已經為其打造了對應的可用工具與編譯器,說明文檔之類也相當豐富;舉例來說,Effective Go教程就是大家了解Go與其它早期語言不同之處的上佳起點。實驗性編程語言第四位: F#函數型程序設計在計算機科學家以及學術界一直都相當流行,但像Lisp以及Haskell這樣的純函數型語言通常被人們認為無法作用于實際應用中的軟件開發工作。對于函數型代碼,大家抱怨最多的是它們很難與由C++及Java等命令型語言所寫成的代碼與庫相整合。說起F#(發音為“F=sharp”),這款微軟推出的語言在設計上可謂兼顧了功能性與實用性。由于F#在.Net公共語言運行(簡稱CLR)中屬于一級語言,因此能夠訪問其它CLR語言的所有同類庫及功能,包括C#及Visual Basic等。F#代碼與OCaml多少有些類似,但它同時擁有不少相當有趣的特色語法。例如,F#中的數字型數據可以通過分配獲得計量單位,進而為科學類計算服務。F#還為異步式I/O、CPU并行處理以及GPU負載分擔等功能提供了必要的理論支持。在度過了微軟研究中心中漫長的醞釀期后,F#現在終于同Visual Studio 2010一同面世了。更妙的是,微軟這一次不按常理出牌,將F#編譯器與代碼庫通過Apache開源許可呈現在我們面前;大家不僅能夠使用這款語言,更可以將其引入Mac及Linux系統(通過Mono運行工具)。實驗性語言第五位: OpaWeb開發工作是公認的繁雜無比。就算是最簡單的一款Web應用程序也需要不計其數的代碼行與多種語言交替使用:HTML與JavaScript處理客戶端、Java或PHP應對服務器、SQL負責數據庫等等。Opa其實并不打算單獨取代上述任何一種語言。相反,它存在的目的是希望通過為Web編程設定一套全新規范的方式一次性將各類方案直接抹殺。在Opa應用程序中,客戶端UI、服務器端邏輯以及數據庫I/O都由同一種語言負責實施——也就是Opa本身。而要完成這一目標,Opa需要將客戶端與服務器端框架進行整合。由Opa編譯器來決定某個特定程序是否應該運行于客戶端、服務器端或是同時運行于二者之上,其后該編譯器將輸出運行所必需的代碼。對于客戶端型程序而言,編譯器會將Opa的代碼內容轉換為相應的JavaScript代碼,包括其中的AJAX調用。當然,這樣規模的整合型系統也暗藏著一些后臺機關。Opa的運行環境將其Web服務器與數據庫管理系統捆綁在一起,也就是說我們無法用其它獨立的備選方案取代它們的位置。這當然可以算是一點缺憾,但為了保持標準的細致化與完整性,并使得數據驅動的Web應用程序能夠以短短數十行代碼得以表達,這一切都是值得的。Opa項目完全開源,并且目前已經支持64位Linux以及Mac OS X平臺;今后隨著工作的深入還將有更多端口得以開放。實驗性編程語言第六位: Fantom我們是否應該在開發自己的應用程序時考慮對java及.Net的支持。如果使用Fantom來編寫代碼,那么一切都不必擔心,連交換機平臺也不在話下。這是因為Fantom在設計上兼顧到了跨平臺的可移植特性。Fantom項目中不僅包括能夠為JVM或者.Net CLI輸出字節代碼的編譯器,同時也擁有一組能夠容納Java及.Net接口的抽象化API,也就是創建了一套額外的可移植層。Fanrom的可移植性還有著進一步的擴展規劃。目前由Fantom到JavaScript編譯器已經可以使用,而接下來我們還可以期望看到包括LLVM編譯器、Parrot虛擬機以及iOS版Objective-C在內的各類延展型項目。不過千萬別把可移植性當作Fantom語言惟一的存在理由。雖然它在本質上仍然是以C語言為基礎,但它同時也對該原始模型進行了充分改良。Fantom語言試圖在某些頗具爭議的語法討論——例如牢固與動態或者接口與類——之中獲取中立身份。它不僅增加了對數據結構說明及序列化對象的簡化說明,還囊括了對函數型程序設計及并行性創建工作的有力支持。Fantom是基于Academic許可3.0版本的開源項目,并且現在在Windows以及Unix類平臺(包括Mac OS X)上已經可以付諸使用。實驗性編程語言第七位: Zimbu大多數編程語言都從其它早期語言中借用到了某些功能或是語法。而Zimbu則把這種拿來主義精神發揮到。作為Vim文本編輯器作者Bram Moolenaar的另一款得意之作,Zimbu的目標是成為一款速度快、語法簡潔、適應移植需求且便于閱讀的語言,并最終使得來自任何圖形用戶界面的應用程序代碼得以運行于目標操作系統內核當中。由于Zimbu與生俱來的雜交血統,其語法也相當獨特,但同時卻又功能豐富。它采用與C語言相似的表達式及運算符,但卻使用自己的一套關鍵字、數據類型及塊狀結構體系。另外,它還支持內存管理、線程及通道等功能。可移植性一直是個關鍵問題。盡管Zimbu是一款編譯型語言,但其編譯器輸出的是ANSI C碼,這就使得文件只能由具備本地C編譯器的平臺來生成。遺憾的是,Zimbu項目如今尚處于起步階段。而其編譯器雖然已經能夠為自身及其它程序創建一些演示范例,但并不是全部Zimbu有效代碼都能夠正確運行。不過預期功能目前還不完善,其中一些還只是加以草草設置,因此我相信只要假以時日,這些問題都能得到妥善解決。另外語言規范也很可能隨著時間的推移而產生變化,例如在必要時添加新的關鍵字、類型以及語法等。所以說明文檔等材料目前還沒有統一的結論。不過如果大家對這種語言有興趣的話,其初始工具已經在Apache許可基礎上得以公布。實驗性編程語言第八位: X10并行處理一度作為軟件開發領域中的獨特生態圈存在,但隨著多核心CPU及分布式計算技術的日益普及,并行化也崛起成為未來發展的主流方向。遺憾的是,今日,編程語言仍然沒能跟上時代的步伐。而這正是IBM研究中心苦心開發X10的原因,這是一種以提高開發人員生產效率為主旨的實用型語言,希望在現有基礎上將開發效率提高“十倍”。X10利用劃分式全局地址空間(簡稱)編程模型來解決并行類任務。代碼與數據作為各自獨立的單位,分別位于一個或多個“空間”當中,這就使得將單線程字節代碼(單獨空間)向高性能集群中單核心或多核心處理器(多個空間)的多線程處理能力轉化的過程更為簡便。X10代碼總體來說與Java比較相近;事實上,X10運行環境可以直接作為本地可執行文件以及類文件應用于JVM當中。X10編譯器能夠輸出C++或是Java類型的源代碼。達成與Java語言之間的直接操作性是該項目的努力方向。就目前而言,這種語言雖然還處于發展變化中,但也已經算得上相當成熟。其編譯器與運行環境支持一系列平臺,包括Linux、Mac OS X以及Windows。包括基于Eclipse的IDE及調試工具等都已經以Eclipse公共許可為基礎進行發布。實驗性編程語言第九位: haXe大多數語言都可以用來編寫可移植代碼。C語言編譯器能夠作用于幾乎每一種CPU架構,而Java字節代碼則能夠在一切具備JVM的環境中發揮功效。但haXe(讀音為“hex”)能做的則比可移植性更多。它是一款跨平臺語言,能夠適應各種不同類型的運行環境——包括本地二進制解釋程序及虛擬機。開發人員可以利用haXe編寫程序,然后將結果編譯為對象代碼,例如時下流行的JavaScript、PHP、Flash/ActionScript或者NekoVM等等;而像C#、Java等其它輸出模塊目前仍處于研發階段。在核心語言之外有haXe標準庫作為補充,其指向各類目標的功能也同樣齊全,而且還為目標平臺的獨特功能配備了專用的函數庫。haXe在語法上與C語言相似,函數集合相當豐富。它的主要優勢在于規避了目標平臺自身固有的缺陷。舉例來說,haXe具備JavaScript所欠缺的嚴謹歸類;它在ActionScript的基礎上增加了通用語句及類型推導;它還完全消除了PHP語言在語法方面的設計疏漏與雜亂無序。雖然仍處于開發階段,但haXe在其創造者Motion Twin游戲工作室的推動下已經進入商業化運營,因此我們已經應該用嚴肅的眼光看待它。它支持Linux、Mac OS X以及Windows平臺,并采用數款開源類許可相結合的分布模式。實驗性編程語言第十位: Chapel在高性能計算領域,很少有哪家企業的風頭能夠蓋過Cray,因此Cray公司的原始編程語言Chapel能夠上榜也就毫不奇怪了。這是一款在設計上主要考慮到超級計算機及集群實際需求的語言。Chapel是Cray公司Cascade Program項目的一部分,該項目可謂野心勃勃,其部分計劃內資金甚是由美國國防部研究計劃局(簡稱DARPA)所提供。其目標主要是從底層硬件中提取抽象并行算法,進而提高現有架構的性能表現,并使得并行類程序具備更好的可移植性。Chapel的語法脫胎自許多來源。除了幾款我們常見的主流語言(例如C、C++以及Java),它還從像Fortran及Matlab這樣的科學類編程語言中借鑒了不少概念型內容。它的并行處理能力在一定程度上與ZPL及高性能Fortran密切相關,另一些Cray早期項目也是它的學習目標。Chapel最引人注目的特色之一是其“多分辨率編程”功能,這項功能使得開發人員能夠在應用程序中引入更多抽象化代碼,并在實施中添加更多細節闡述以使得定義本身更加明確。Chapel仍處于開發階段。目前它能夠運行于Cray超級計算機及各類高性能集群之上,并且可以移植到大多數Unix類系統(包括Mac OS X以及安裝了Cygwin的Windows系統)當中。該語言源代碼采用BSD型開源許可。

  • 前端越來越流行的的技術

    隨著互聯網技術不斷的發展,前端的新技術也開始日新月異,舊的技術已經不能滿足工作的需要,根據業務需求來將重構也是常有的事情,為了減少工作量,快速提高工作效率,這些新出現的技術也起著不可替代的作用。后端的有些架構已經穩定,作為一名前端面對這些花樣百出的技術,只有不斷的去學習研究,才能不落后于時代潮流。一:TypeScriptTypeScript : http://www.typescriptlang.org/官方介紹:TypeScript是一種由微軟開發的自由和開源的編程語言。它是JavaScript的一個超集,而且本質上向這個語言添加了可選的靜態類型和基于類的面向對象編程。從今天數以百萬計的JavaScript開發者所熟悉的語法和語義開始。可以編譯出純凈、 簡潔的JavaScript代碼,并且可以運行在任何瀏覽器上、Node.js環境中和任何支持ECMAScript 3(或更高版本)的JavaScript引擎中。設計了一套類型機制來保證編譯時的強類型判斷。TypeScript 是 Microsoft 推出的開源語言,使用 Apache 授權協議增加了靜態類型、類、模塊、接口和類型注解TypeScript 可用于開發大型的應用TypeScript 易學易于理解二:React官方介紹:React 起源于 Facebook 的內部項目,因為該公司對市場上所有 JavaScript MVC 框架,都不滿意,就決定自己寫一套,用來架設Instagram 的網站。做出來以后,發現這套東西很好用,就在2013年5月開源了。react官網: https://reactjs.org/--高性能的虛擬DOM--封裝的事件機制--服務器端渲染--聲明式的直觀的編碼方式。--跨瀏覽器兼容三:WebAssembly官方介紹:WebAssembly 是一種可以使用非 Java 編程語言編寫代碼并且能在瀏覽器上運行的技術方案。WebAssembly是一項由Mozilla、谷歌、微軟及蘋果聯合開發的項目,致力于為各種語言定義一種二進制形式的編譯目標格式,并設計一種可與當前的Web平臺集成并在Web環境中執行的方案,最終實現在各類平臺上以接近原生的速度調用常見的硬件功能WebAssembly 主要試圖解決現有技術的一些問題:--JavaScript:性能不夠理想,以及語言本身的一堆坑--Flash:私有技術(而且漏洞一堆),并且是純二進制格式--Silverlight:私有技術,并且是純二進制格式--各種插件(Plug-in):安全性問題,平臺兼容問題優點--能顯著降低加載速度,同時改進運行性能。--二進制格式,容易翻譯到原生代碼,本地解碼速度比JS解析更快。發展趨勢:wasm 還提供了一個JavaScript APIwasm: http://webassembly.org/ 四:Yarn中文網:https://yarn.bootcss.com/官網: https://yarnpkg.com/en/官方介紹:Yarn 是一個依賴管理工具。能夠管理代碼,并與全世界的開發者分享代碼。高效、安全和可靠的,夠讓你使用其他開發者開發的代碼,讓你更容易的開發軟件。是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。五:Angular 4和Angular 5Angular 在今年跨越了兩個大版本:于 3月23日 發布的 Angular 4 以及于 11月1日 發布的 Angular 5。angular: https://angularjs.org/--運行應用的速度非常快。--使用MVC架構來開發Web應用程序--通過依賴性注入進行測試--最為核心的是:MVVM、模塊化、自動化雙向數據綁定、語義化標簽、依賴注入六:Vue.jsvue: https://cn.vuejs.org/前面說過,vue之所以流行,在于它的優點眾多:--輕巧、高性能、可組件化的MVVM庫,--擁有非常容易上手的API;--方便構建數據驅動的Web界面的庫。--構建用戶界面的 漸進式框架。--采用自底向上增量開發的設計。--核心庫只關注視圖層,--非常容易學習,容易與其它庫或已有項目整合。--Vue.js的崛起始于2015年,并在過去一年中快速發展。下圖所示為這套框架可觀的市場接受度:

  • 字節跳動確定接盤錘子科技,他們到底看中了羅永浩什么?

    四面楚歌的羅永浩仍然急需下一個金主,畢竟情懷和相聲賣不了手機。編者按:本文來自“第一財經”,作者:呂倩、李娜;36氪經授權轉載。部分錘子科技員工簽約字節跳動1月22日,錘子科技部分員工與北京字節跳動科技有限公司簽訂員工合同,據第一財經記者獨家獲悉,簽訂勞動合同的前錘子科技員工還收到了一張印有 ”歡迎加入字節跳動”字樣的合同說明。這些員工工作地點暫時不會變化,但具體工作內容方面,目前字節跳動方面尚未與錘子員工詳細對接。據接近錘子科技的人士對第一財經記者透露,確有部分錘子員工已和北京字節跳動網絡技術有限公司簽署了勞動合同。據了解,錘子所有硬件業務員工和一部分軟件員工都和字節跳動簽了勞動合同,而該勞動合同上印有“歡迎加入字節跳動”的字樣。對此,字節跳動方面對第一財經記者回應稱,字節跳動收購了錘子科技部分專利使用權,探索教育領域相關業務。因為具體交易涉及保密條款,不便披露。也有錘子員工入職公司,這是正常的人才流動。此前,字節跳動針對與錘子科技之間的合作曾公開回應稱,有收購錘子科技部分專利使用權的計劃,用于探索教育領域相關硬件。接近錘子科技方面人士對第一財經記者表示,之前的確有聽說過關于字節跳動在教育平板、早教機等硬件產品方面的信息,但真正產品級定義還沒具體落地,雙方在軟硬件方面的合作剛剛啟動。另外,據第一財經記者獨家獲悉,作為錘子科技編號0002號人物,肖鵬已于2018年12月底加入OPPO旗下realme,擔任設計總監一職。當年錘子科技剛剛在新中關大廈12層開業成立時,第一天只有羅永浩與朱蕭木兩個人,幾天后,肖鵬加入了錘子團隊。當時,著名UI設計師網站DRIBBBLE上,肖鵬是其人氣頗高的國內設計師,而對產品細節苛求完美的羅永浩在該網站上長期潛水、關注肖鵬。其后,老羅特意跑到肖鵬工作的百度公司樓下約他一起吃飯,并通過對公司設計理念、用戶體驗與審美追求的觀點講解,成功打動肖鵬加入。如今,編號0002的員工也已離開錘子。字節跳動為什么要接盤錘子科技張一鳴字節跳動布局教育領域之心由來已久,恰好錘子在這方面早有專利。2018年年初,今日頭條推出了一款介于“得到”和“喜馬拉雅”之間的一個知識付費平臺——“好好學習”App,進軍知識付費領域。2018年3月,今日頭條與真格基金、藍圖創投共同領投曉羊教育數千萬人民幣A+輪。企查查消息顯示,曉羊教育是一家To B的公司,主要做中小學智慧校園和教育云服務。2018年5月,今日頭條推出少兒在線英語品牌gogokid,面向12歲以下學齡兒童——gogokid在騰訊視頻投放了貼片廣告,并獨家贊助了芒果TV大型親子節目《爸爸去哪兒6》。2018年7月,今日頭條又被爆出收購在線教育公司學霸君的ToB業務。截至2018年3月,學霸君單月流水過3000萬元。主營業務方面,C端用戶產品續費率超過90%;B端用戶目前覆蓋全國200多所學校。由此可以看出,今日頭條——或者字節跳動——早就開始了自己在教育領域的布局。而張一鳴的布局路線就是C端由自己做產品,B端通過投資并購布局。而根據公開數據顯示,錘子科技在軟件著作權方面一共有8項專利。其中包括錘子錢包軟件、語音助手軟件、便簽軟件和時鐘軟件等。如今按照字節跳動“收購錘子部分專利”的說法,也就是利用錘子手中的語音助手、便簽軟件和時鐘等相關專利,來完善自己在教育領域的相關布局。除此之外,老羅手中還有鎖屏的、截屏的、靜音計時的、手機受到撞擊后提示的、自拍的、快速拍照的專利。終于找到了買家,但老羅的頭痛還沒有結束此前第一財經曾報道稱,羅永浩先后接觸過百度、華為、阿里等方面,尋求接盤,但均未談妥。一度傳聞中國移動要收購錘子,讓羅永浩給飛信團隊“上上課”。但這筆交易最終流產。而從錘子的財務報表中可以看出,這家公司的虧損情況足以讓潛在的買家望而卻步。錘子科技 2016 年底總資產 4.2 億,負債 6.63 億,所有者權益 -2.43 億,已然資不抵債。原因是 16 年度營業收入 8 億元,虧損 4.27 億所致。當我們在談論錘子時,其實我們就是在討論羅永浩。自從2012年4月28日,連續創業者羅永浩在微博宣布要“注冊公司做手機”開始,這個曾倒賣過二手書、走私車,做過英語教師,創建過牛博網,開過英語培訓學校,出過自傳,甚至砸過西門子的冰箱的男人,就開始了一臺叫作“會講相聲的理工男怎么做手機”的舞臺劇。正因如此,錘子科技從一出生,就帶上了羅永浩濃重的個人色彩。而如今羅永浩四處兜售錘子卻四處碰壁,甚至在“聊天寶”發布會上給電子煙、電影打廣告、做宣發——所以這也難怪“羅永浩瘋狂續命”、“老羅求生欲真強”的戲謔聲四起。不過,四面楚歌的羅永浩仍然急需下一個金主,畢竟情懷和相聲賣不了手機

  • 為什么越來越少的人用jQuery

    在原來的開發中,工程師們不會太糾結于性能問題。但是現在不同了,為了提高用戶體現,首要的就是解決瀏覽器繪制所帶了的性能問題。經典的莫過重繪和回流這兩個概念。**重繪:**就是頁面重新進行繪制,比方說,修改一個元素的背景顏色。**回流:**一般來說,瀏覽器進入頁面的時候就已經進行了一次回流,回流其實指的就是頁面重新進行排版布局。既然我們想提高性能,那么就可以先從這兩概念入手,肯定是以小的代價更新頁面是提高性能好的手段。但可惜的是,jQuery并沒有做到。為什么這么說,請看以下分析:當我們拿到一組新聞數據要渲染到ul標簽里時,通常我們會先將新聞數據逐條進行字符串拼接,緊接著使用$符選擇ul元素,并修改ul的innerHTML的值為拼接好的字符串(使用html API),此時完成了次渲染。這次頁面進行了重繪(這時必然的),首先不分析的性能好或壞,用下一個說明將更加有力。比如說我們這時多了一個換一換按鈕。在傳統開發模式中,這時的換一換按鈕肯定執行的還是上面的代碼,獲取元素,修改元素的innerHTML,但是現在問題出現了,就是我們有必要將所有元素重新刪除,再重新添加一遍嗎?答案肯定是不需要(下圖所示,創建一個元素的代價有多大)。因為這時我們只需要將每一個li里的文字和a標簽里的鏈接修改即可,那顯然是沒有必要像上面那樣重新再添加一遍li的。因為一個DOM元素,可能包含上百條屬性,這對性能開銷是很大的。那么現在出現的新概念 Virtual DOM(虛擬DOM),就可以解決這個問題。其實Virtual DOM就是對真實DOM節點的描述,通過改變Virtual DOM來以小變動來改變真實DOM(Virtual DOM不一定真的比jQuery性能更好)。

  • [Vue進階]為什么我的代碼讓別人看起來頭皮發麻?

    前面的話首先我想說的是,這篇文章不是介紹什么高深的技術,請各位熟知。涉及的都是日常開發當中一些不符合規范的案例,借此分享給諸位。如果你是小白,或許這篇文章對你有點幫助,如果你是老司機,看完請輕點拍!有什么建議或意見請留言斧正,謝謝!有些同學在開發某個新功能時根據需求就哐哐哐(按照自己的代碼風格)一頓擼。寫完發現,另一個地方也有這個模塊功能,可能只是標題的顏色,字體大小不對。怎么辦? 于是很雞賊的復制粘貼過去,改吧改吧,提交代碼,萬事大吉!自己倒是爽了,功能是按照需求如期完成了啊,沒毛病。可是你卻忽視了一件很重要的東西:團隊。記住,你不是一個人在寫代碼。這篇文章有別于其他教程類的文章,不是教你如何制定代碼規范,也不是告訴你這樣寫就是錯的亦或說是正確的。本文是我這些天從優化別人代碼過程中的所見和所得,凝結成文。旨在分享給大家,對號入座,然后改之。三人行,必有我師!;擇其善者而從之,其不善者而改之。 由于我是做前端的,所以只說前端代碼規范,其他語言同樣適用!目的把一些常見的錯誤的不良的代碼示例分享給大家,希望有的改之,無則加勉。看完之后,希望對你們有所幫助,提高自己的代碼質量,每個人都能寫出一手漂亮的代碼。這是這篇文章最大的目的了!概述本文將以我的親身項目經歷為例,來談談我們日常開發當中,就代碼層面來講,我們應該注意的一些小細節。希望各位看客能吸取精華去其糟粕。主要涉及的方面有:項目結構文件命名路由Vue 組件JavaScriptHtmlCssGit 代碼提交我將會從以上幾個方面逐一枚舉和大家分享討論。枚舉1. 項目結構沒說之前,您不妨看下自己的項目結構是什么樣的。目前我們的項目結構是這樣的:my-project ├── .idea                  # 這個是編輯器生成的 ├── build                  # Webpack 配置文件放在這里 ├── config                 # Vue 基本配置文件放在這里 ├── node_modules           # 第三方依賴 ├── src                    # 項目源碼(核心文件) │   ├── assets             # 資源文件(js, css, scss) │   ├── components         # 所有組件 │   ├── js                 # 自己寫的 js,里面各種工具類方法等 │   ├── mixins             # 混合 │   ├── router             # 路由 │   ├── vuex               # 狀態管理 │   ├── App.vue            # 根組件 │   └── main.js            # 入口文件 ├── static                 # 靜態資源,一般放 img ├── theme                  # 主題文件,修改的 Element-UI 主題 ├── .babelrc               # babel 編譯配置 ├── .editorconfig          # 代碼格式 ├── .gitignore             # Git 提交忽略的文件配置 ├── .postcssrc.js          # 轉換 css 的工具配置文件 ├── element-variables.css  # Element 全局定義的變量,不明白為啥放這兒 ├── index.html             # 主頁模板 ├── package-lock.json      # 用來鎖定依賴的版本號(NPM 自動生成) ├── package.json           # 項目基本信息 └── README.md              # 項目介紹 復制代碼都是用 vue-cli 生成的,目錄結構和命名規范也就沒啥可說的。可能隨著時間的推移,自己會在項目里加一些東西(文件或文件夾)。拿上面我們的項目為例來說幾點吧:根目錄下不要有 css 文件:比如 element-variables.css 文件,雖然這個文件是 Element自定義主題 自動生產的,但是可以通過配置更換生成所在目錄。因為它屬于 theme 文件夾下的東西,所以應該放它下面的。js 文件夾應該命名為 utils:因為它對外暴露的都是工具類方法,這樣更顯語義化。關于項目結構,我發現的就這么多。每個項目的目錄可能會不同,這個就看你們的規范了。2. 文件的命名它包含文件的命名和文件夾的命名。依我們的項目為例,我重點說下 src/components 目錄下的命名,真的是五花八門:2.1. 文件名不夠語義化這個還算正常,但還是有些問題。這里是一些問題清單:這個模塊的中文叫,是關于機器人學習的,叫 knowledgeBaseManagement 雖然很好的翻譯了中文意思,但總覺的有點長,叫 robot 會不會好些?而且文件夾下的文件命名也不夠語義化下面是整理過后的樣子:robot ├── addQuestion.vue ├── editQuestion.vue ├── index.vue └── missedQuestion.vue 復制代碼這個我就不想說了,看的我頭皮發麻。從字面意思上來講,我就認識一個 TreeNode2.vue。后面還加個 2 是什么鬼?2.2. 文件目錄不統一這屬于一類問題,即里面太亂了,不統一,問題清單:src/components/moduleName/ 下除了子模塊外,盡量不要瞎放其他無關的文件夾,如上面的 src、component/common、topcallcenterList/src 下的圖片可以放到 static 下如果是功能型組件(上面的 color 是一個顏色選擇器組件),盡量放到一個叫 package 或者 lib 的文件夾下。因為  src/components 下的模塊都是系統模塊,不要混淆。elvesSetting/top 如果是某幾個頁面頭部的公共部分盡量放到 components/common 下2.3. 文件名過長如果一個模塊下就一個文件,盡量寫成 index.vue 。這里文件夾和文件同名,路由是不是很長?你在其他文件中 import 的時候是不是也不方便? 而且我發現 problemManagement 和 problemRetrieve 都屬于問題管理模塊,完全可以合并到一個文件夾里啊。還有,文件夾已經表明是問題管理模塊了,所以文件名就不要再以 problem*** 開頭了。不覺得啰嗦嗎? 下面是整理過后的樣子:problemManagement │   ├── index.vue │   ├── retrieve.vue qualityCheckAppeal     └── index.vue 復制代碼3. 路由我們系統里的路由都是一級路由。舉個栗子:userManagement ├── add.vue └── update.vue 復制代碼用戶管理下有增改兩個功能,不使用彈框去做的前提下,假如說 add 和 update 對應兩個路由是 /addUser,/updateUser。我們系統地址欄是這樣顯示的:// 增加用戶 localhost:3030/addUser // 修改用戶 localhost:3030/updateUser?id=1 復制代碼雖然地址欄路由短看起來會讓人舒服,但是模塊多的話,就不容易區分,其實應該這樣做:// 增加用戶 localhost:3030/user/add // 修改用戶 localhost:3030/user/update?id=1 ... // 總結 localhost:3030/module/function?queryString 復制代碼當然也可以使用最近流行的 RESTful API 設置規范,專門用于 Web 數據結構的設置。阮一峰老師有一篇非常不錯的文章,推薦給大家,我就不再贅述辣。傳送門->4. Vue 組件關于 Vue 組件開發規范可以參考官方的風格指南。下面是我們項目的一些問題清單和改正意見,我列舉一下作為對照:不要在 App.vue 中直接修改第三方樣式(比如:ElementUI)。請使用外部文件導入:App.vue 文件:<!-- incorrect --> ... <style>   .el-input__icon {     cursor: pointer   } </style> <!-- correct --> ... <style>   @import 'element-style-overwrite';   ... </style> 復制代碼_element-style-overwrite.scss 外部樣式文件:.el-input__icon {   cursor: pointer } 復制代碼給每個組件起個名字是個好習慣。例如 Dialog 組件:// incorrect export default {   ... } // correct export default {   name: 'MyDialog', // 以大駝峰命名   ... } 復制代碼給組件樣式設置作用域 scoped如果你在某個子組件中修改了全局樣式,本來只想在該組件中使用,沒想到造成了全局污染。等進行代碼 review 的時候是很難排查的。例如,用戶管理(UserManagement.vue)組件:<style scoped> ... </style> 復制代碼組件名要么單詞大寫開頭 (PascalCase),要么橫線連接(kebab-case):// incorrect components/ └── mycomponent.vue components/ └── myComponent.vue // correct components/ └── MyComponent.vue // 或者 components/ └── my-component.vue 復制代碼.vue 單文件中的 <template>、<script>、<style> 標簽的順序問題有的人喜歡這樣寫:<style>...</style> <template>...</template> <script>...</script> 復制代碼也有人喜歡這樣寫:<script>...</script> <style>...</style> <template>...</template> 復制代碼如果你想寫,那好,不阻攔,拜托你統一下行不?別這個組件這個順序,那個組件那個順序。累不累? 這里我強力推薦大家按照官方的寫法,即下面的順序來寫:<template>...</template> <script>...</script> <style scoped>...</style> 復制代碼組件中的字體圖標(icon)不要用 png 圖片不知道你們項目里有沒有很多 icon 圖標。反正我們項目不少且都是 png 圖片。靜態文件夾里好多小圖標。本來左側菜單也都是 png 圖標的,被我看著不爽重構了一下。把所有的 png 圖標換成了 fontIcon 字體。字體圖標的優勢:減少 http 請求和項目體積樣式容易控制用戶體驗好如何制作 fontIcon 字體圖標呢?其實很簡單:1、可以先去阿里圖庫找自己喜歡的或者讓你自己家的UI小姐姐做。2、下載 svg 格式的,如果是UI做的,記得讓她轉換下。3、去 icomoon 字體圖標生成網站導入剛才所有的 svg 圖標,設置字體名稱導出即可。4、再在文件中引用,大功告成。使用兩個空格(space)進行縮進這個放在全局規范會比較好一些。為什么是兩個空格? 大神們都是這樣做的!而且更重要的是,使用兩個空格開發項目,傳到 github 或者 gitlab 上排版會很好看。什么?不會設置?百度啊!你用的什么編輯器就查這個編輯器怎么設置的。一般是統一把全局規范設置放到一個叫 .editorconfig 的文件夾里,有的編輯器支持這個文件,比如:webstorm。有的則不支持,對于不支持的編輯器,可以下載安裝 editorConfig 插件,如:atom、sublime、vscode 等。代碼中不用的注釋都刪掉調試結束,把不用的 console.log(...) 及時刪掉,它會影響性能data 中的屬性命名和初始化問題// incorrect export default {   data () {     return {       text: 'wwwwwwww', // 這是啥?       editBoxId: null, // 很明顯Id是String,這里他初始化一個 null       flag: '',    // 這個表示的啥?看意思應該是個 Boolean 類型,為啥弄個 String ?       pSize: 10,   // pSize 是啥?       cPage: 1,    // cPage 是啥?       popCsr:true, // popCsr 是啥,恐怕現在連那個開發者自己都不知道了吧       callcenterAuthority: false, // 這么長你告訴是一個 Boolean 類型的     }   } } // correct export default {   data () {     return {       text: '', // 'wwwwwwww' 沒卵用刪掉       editBoxId: -1,  // 它應該是個 Number 類型       flag: false,    // 它應該是個 Boolean 類型啊       pageSize: 10,   // pSize -> pageSize 多好       currentPage: 1, // 完整寫法更易懂,不是嗎?       isPopcsr: true,    // Boolean 類型的總是前面加個 is       isAuthority: false, // 是否授權。     }   } } 復制代碼其實還有好多問題,我就不一一列舉了。諸如此類的問題,希望各位看客們都能吸取精華,去其糟粕。Props 中的屬性聲明要明確類型// incorrect export default {   props: ['node', 'size'] } // correct export default {   props: {     node: Object, // 對象     size: [String, Number], // 兩種類型都可以   } } 復制代碼Vue 生命周期函數按順序放在 methods 之前為什么說這個呢? 我們項目中有的組件就 methods 中的代碼就上千行。如果生命周期函數放在 methods 之后,拉來拉去非常不方便:// incorrect export default {   ...   created () {},   methods: {     // 省略 1000 行代碼     // ...   },   mounted () {},   beforeDestroy () {},   destroy () {}, } // correct export default {   ...   created () {},   mounted () {},   beforeDestroy () {},   destroy () {},   methods: {     // 省略 1000 行代碼     // ...   } } 復制代碼Vue 組件中的 this 賦值要統一代碼中,有時候我們需要把 this 賦給一個變量,你要么統一賦值給變量 vm ,要么統一賦值給變量 self。別一個組件里,變來變去。// incorrect export default {   ...   methods: {     one () {      let vm = this     },     two () {       let self = this     }   } } // incorrect export default {   ...   methods: {     one () {      let vm = this      // 或者      let self = this     },     two () {       let vm = this       // 或者       let self = this     }   } } 復制代碼Vue 組件中 Html 如果過長,請換行<!-- incorrect --> <el-input v-model="ruleForm.maskInput" size="small" class="nodeIpt" :icon="ruleForm.maskInput ? 'circle-close':''"  @click="ruleForm.maskInput = ''" @keyup.enter.native="nodesure($event,'ruleForm')"></el-input> <!-- correct --> <el-input    v-model="ruleForm.maskInput"    size="small"    class="nodeIpt"    :icon="ruleForm.maskInput ? 'circle-close':''"     @click="ruleForm.maskInput = ''"    @keyup.enter.native="nodesure($event,'ruleForm')"> </el-input> 復制代碼Vue 中監聽的事件記得垃圾回收舉個例子,如果我們在 Vue 組件的 created 聲明周期鉤子中監聽了一個點擊事件,那么,當組件銷毀(beforeDestroy)之前記得把這個事件釋放,看代碼:export default {   ...   created () {     document.addEventListener('click', this.handleClick)   },   beforeDestroy () {     document.removeEventListener('click', this.handleClick)   } } 復制代碼Vue 組件中不要直接操作異步請求(axios)把所有的異步請求方法封裝成一個獨立 js 文件,或者放到 Vuex 中,千萬不要耦合到 Vue 組件中。因為代碼量太多,會加重組件的后期維護,各司其職不好嗎?不好的范例:// User.vue export default {   ...   mounted () {     this.getUsers()   },   methods: {     getUsers () {       this.axios(url, data, (response) => {         // Do something       }).catch(err => {         console.error(err)       })     }   } } 復制代碼如果項目比較小還好,我沒意見,如果項目較復雜,千萬別這么干。下面是推薦的做法:// server.js // 專門處理數據請求的文件,也就是我沒常說的MVC中的 M 層 import axios from 'axios' export default {   /**    * 獲取用戶列表    */    getUsers (url, data) {       return axios.get(url, data)    } } // User.vue import api from '@/api/server.js' export default {   ...   data () {     return {       users: null     }   },   mounted () {     api.getUsers((response) => {       this.users = response.data.data     }).catch(err => {       console.log(err)     })   } } 復制代碼5. JavaScript下面所有的錯誤代碼示例都是從我們的項目中發現的,撿主要的列出來一些。希望犯同樣錯誤的你能及時改正哦~變量命名要語義化命名// incorrect var a = document.getElementById(this.lastid) // 這里的 a var aa = true // 這是啥你們知道嗎? // corrent let orderId = this.order.id let currentTime = Date.now() 復制代碼多個單詞要駝峰命名// incorrent vm.timedefault = timedvalue vm.currentsessionid = id // corrent vm.timeDefault = timedValue vm.currentSessionId = id 復制代碼變量要加注釋上面那一坨你們知道啥意思嗎?如果這個開發人員離職了,那可是坑了后來人了。所以,做開發不能自己爽了,做一個帥氣和代碼于一身的工程師,難道不更好嗎?不要重復使用 var 聲明變量// incorrect var name = 'test'; var age = 12; var hobby = 'sport'; // correct var name = 'test',   age  = 12,  hobby = 'sport'; 復制代碼= 或 == 之間要保留一個空格錯誤的范例:// 變量 var name='test' var arr=[] var obj={   id:1 } // if 判斷 if(this.id==currentId){   // Do something } // for 循環 for(let i=0;i<arr.length;i++){   // Do something } 復制代碼上面三種情況是最常見的,其他雷同。下面是正確的范例:// 變量 var name = 'test' var arr = [] var obj = {   id: 1 } // if 判斷 if(this.id == currentId) {   // Do something } // for 循環 for(let i = 0; i < arr.length; i++) {   // Do something } 復制代碼右括號 ) 遇到 左大括號 { 時要空一格下面是錯誤的范例:// if if(a === b){   // Do something } // for for(let i = 0; i < arr.length; i++){...} // 函數 var T = function(params){   ... } 復制代碼常見的幾種情況,其他情況不再列舉。下面是正確的范例:// if if (a === b) {   // Do something } // for for (let i = 0; i < arr.length; i++) {...} // 函數 var T = function(params) {   ... } 復制代碼非空判斷問題在我們項目里,有人這樣寫:// 假如 Vue 組件中有一個叫 userId 的 data 屬性 if (userId != '' || userId != 0 || userId != false || userId != null || userId != undefined) {   // ... } 復制代碼當遇到上面幾種情況的時候,下面代碼實現的效果是一樣的:if (!userId) {   // ... } 復制代碼對象聲明問題不要用下面的方式之一去聲明一個對象:// incorrect var arr = new Array() // 數組 var arr = '' // 雖然 js 是弱類型,也不能這樣聲明 var obj = new object() // 對象 var obj = '' 復制代碼下面是推薦做法,也是大眾做法:// 聲明數組 let arr = [] // 聲明對象 let obj = {}  // or let obj = null 復制代碼異常處理問題我們在處理異步請求的時候,一定要對 response 中的數據進行異常處理,不然控制臺回報 response.data is not undefined,我們項目我看了下,有些地方沒做處理,結果在做測試的時候,瀏覽器控制臺一頓報錯。那叫一個難看啊!// incorrect this.axios(url, data, (response) => {   let result = response.data.data }) // correct this.axios(url, data, (response) => {   if (response.data && response.data.code === 1) {     let result = response.data.data   } }).catch(err => {   console.error(err) }) 復制代碼如果這個取值過長且多次用到,請賦給一個變量export default {   ...   methods: {     handleClick (evt) {       // incorrect       evt.target.parentNode.innerHTML = 'test'       evt.target.style.width = '100px'       evt.target.style.height = '200px'              // correct       let target = evt.target       target.parentNode.innerHTML = 'test'       target.style.width = '100px'       target.style.height = '200px'     }   } } 復制代碼6. HTML正確的使用標簽項目中我見有人寫個按鈕居然用 span 標簽,或者一個 div 。下面是錯誤的范例:// 用 div 當按鈕 <div class="btn">搜索</div> // 在 span 里 嵌套 el-input 組件 // 這樣做的同學,肯定不知道 el-input 編譯后的代碼是啥樣的! <span>   <el-input></el-input> </span> // 用 label 當標題 // label 標簽是配合表單使用的 <label>標題</label> // 加粗字體沒有用原生標簽 <span class="bold">我是加粗字體</span> 復制代碼下面是改正后的范例:// 用 H5 的 button <button class="btn">搜索</button> // 如果要包含 el-input 組件請使用塊級元素,并加上合適的 class <div class="el-input__wrapper">   <el-input></el-input> </div> // h1-h6 才是標題的正確打開方式 <h2>標題</h2> // 加粗字體請使用原生標簽 // 然后使用 class 控制字體樣式 <strong class="bold">我是加粗字體</strong> 復制代碼所有的按鈕,超鏈接,鼠標的 :hover 狀態都應該是手形。a, button {   cursor: pointer } 復制代碼id 和 class 或者其他的屬性,命名要語義化不要命個名只有你自己知道。這樣會帶來后期維護困難。<!-- incorrect --> <div class="dfdf">   <el-form class="loginForm">...</el-form> </div> <!-- correct --> <div class="login-form__wrapper">   <el-form class="loginForm">...</el-form> </div> 復制代碼把代碼縮進改成 2 個空格Html 中的屬性之間保留一個空格距離<!-- incorrect --> <el-input v-model="form.loginUser"  size="small"   placeholder="請輸入用戶名"></el-input> <!-- 不覺的上面的代碼很丑嗎,我知道你或許不會這樣做 --> <!-- 但還真有人這樣做 --> <!-- 下面是改進后的代碼 --> <el-input v-model="form.loginUser" size="small" placeholder="請輸入用戶名"></el-input> 復制代碼每個代碼快盡量加上注釋代碼量少尚且不說,如果一個 .vue 文件很長的話,找起來就很痛苦了。你還別說,我們項目里就是這樣沒注釋。<!-- 正確的示范 --> <template>   <div class="user-managerment__wrapper">     <!-- Header -->     <div class="header">...</div>          <!-- User table -->     <div class="user-table__wrapper">       <el-table>...</el-table>     </div>          <!-- Add user dialog -->     <div class="add-user__dialog">       <el-dialog title="新增用戶">...</el-dialog>     </div>   </div> </template> 復制代碼7. CSS{ 和選擇器保持一個空格距離.selector {   ... } 復制代碼給每個樣式模塊加上注釋有助于區分// Global style html, body, a, div {   margin: 0 } // Login style .login button {   ... } // User manager style .user-manager__wrapper {   ... } 復制代碼每個獨立樣式間保留一行距離見上面的示例選擇器不要嵌套太多層級嵌套太多層級會影響性能,盡量保證在三層以下:// incorrect .user-management .user-box .user-form .el-form-item .remark {   color: #42b983 } // correct .user-management .user-form .remark {   color: #42b983 } 復制代碼8. Git 代碼提交提交前先 pull 代碼寫代碼前記得先 pull 下別人的代碼,這是個好習慣。別等到自己寫完 push 后才發現代碼有沖突。# pull git pull # modified git add someFiles git commit -m "..." git push 復制代碼寫好提交注釋大家可以看我 沸點。同事寫的注釋。希望有問題的同學可以及時改正哦。另外,關于 Git 如何正確的寫好注釋,這里有幾篇文章講的很好,大家可以看看:我的Git commit規范如何撰寫 Git 提交信息下面舉個例子,比如我這次在用戶管理模塊中修改了兩個 bug。如何以清單的方式提交呢? 看代碼:# add file git add src/components/userManager/index.vue # commit git commit -m 'fix: 用戶管理模塊bug修改。 修改內容: - 修改了列表分頁的bug - 修改了當用戶點擊編輯按鈕彈框無法顯示的bug ' # push code git push 復制代碼你千萬別用下面的方式之一去提交你的代碼說明:# 說一些毫無意義的內容 git commit -m "fix: ok!" # or 不加 fix、feat、refactor、doc、style等前綴 # 為什么要加這些前綴呢?問得好! # 是方便日后檢索,當我們以這些前綴去搜索修改日志的時候 # 是很容易的哦,微笑。 git commit -m "修改用戶模塊bug"

  • 創新工場第4期5億美元基金背后:不超1個月超額完成

    創新工場董事長兼CEO李開復創新工場管理資產總額新浪科技訊4 月 25 日下午消息,創新工場對外宣布完成第四期美元風險投資基金的超額募集,總規模為 5 億美元。此輪募資完成過后,截止 2018 年 4 月,創新工場共管理 6 支基金,管理的資產規模達 110 億元人民幣。創新工場董事長兼CEO李開復透露,創新工場人民幣三期已啟動募集,目標金額 25 億元,年限8+2。根據李開復介紹,第四期美元基金不超過 1 個月完成,并超額募集,原有投資人繼續加注,國際知名養老基金、母基金、主權基金、國際先進制造公司。對于第四期美元基金的LP,李開復沒有透露太多,僅指出包括西班牙銀行、歐洲知名金融集團、國際汽車巨頭,這也是他們在中國首個VC基金戰略投資。創新工場關注具有本土化色彩、盈利模式偏成熟的項目,投資領域新增人工智能、大數據以及消費升級。根據介紹,創新工場早年是投資和孵化模式,更高比例在天使和種子輪次。而近年來,創新工場投資階段策略調整,強調“去孵化”,定位VC+AI,專注于早中期(A-B輪)發展階段項目。對于高潛力領域也參與C輪以后的中后期投資也開始鎖定賽道,加大投資。李開復指出,創新工場已經不再是孵化器,現在一年只孵化一個人工智能項目。李開復看好中國公司創新,他指出,隨著競爭日趨激烈,成就了中國企業的創新。目前,全球發展趨勢從Copy To China到Copy From China,從借鑒美國模式,到成功反超美國模式,再到中國本土創新,當前中國模式正走向世界,與此同時,中國企業出海的也越來越多。在李開復看來,中國式創新還在循環裂變,移動支付、OMO(線上線下融合)、多波“人口紅利”、人工智能崛起等因素,驅動中國消費加速增長,從儲存經濟變成消費的經濟,中國也成為最佳創業平臺。近年來,創新工場發力AI領域的投資。李開復認為,僅僅靠錢來做VC遠遠不夠。目前,創新工場已經建立AI工程院。對于人工智能領域,李開復指出,人工智能進入爆發期,中國將成為最大的受益者。從投資的角度來看,李開復將人工智能的發展分成四波浪潮:互聯網智能化、商業人工智能、實體世界智能化、自動化人工智能。他認為,在與美國的競爭中,中國的人工智能在無人駕駛等多個領域,在未來五到十年內有機會趕超美國。作為一個專注于技術投資的投資機構,李開復指出,創新工場對標的是美國投資機構Benchmark,這是一家專注于科技的VC ,50%合伙人具有技術或理工背景;投資技術型公司,投資過包括Uber、Twitter、Snapchat、Instagram、eBay等知名公司,回報率超過紅杉、KPCB等老牌基金。創新工場由李開復創立于 2009 年,總部設于北京,在上海、深圳、硅谷設有辦公室。成立 9 年以來,創新工場投資的總項目數量累積超過 300 個,投中了 6 個獨角獸公司,投資公司包含VIPKID、美圖、知乎、Face++曠世科技、摩拜、第四范式、米未傳媒等。

  • 看懂這幾點,輕松搞定企業建站!

    為什么企業要建站?建設網站能帶來哪些?隨著互聯網信息技術在不斷進步的同時,網站建設也取得較大發展。現在越來越多的企業都要建設自已的網站,利用網絡推廣宣傳自己的品牌來擴大企業產品的影響力,進一步拓展市場,加強與消費者的互動性已經成為了企業發展的迫切需求。一.網站建設可增強宣傳企業形象企業網站建設是展示企業形象的一面鏡子,能夠更好的宣傳企業的理念和商業層次,所以在企業形象宣傳上,往往是每個公司最重視的事情。二.網站建設可促進企業與用戶互動企業與用戶互動其實有好多方式,具體根據不同的情況來分別對待,其中有一些比較好的方式是通過調查問卷和會員服務的方式獲取用戶的信息。同時,企業通過高端型網站獲取用戶的反饋是非常有必要的,這也是企業站點必備的一個功能。三.網站建設有助于業務宣傳從業務宣傳方面來看,選擇合理的程序模塊來滿足需要逐步更新的服務內容,把用戶最關心的問題擺在最顯眼的位置,并且不需要用戶過多的點擊就能讓他找到所需要的信息。提倡企業應該根據自身的特點,用最合適的網站展示方式和展示效果來體現自己的特色。想要搭建一個讓客戶眼前一亮的網站,一定要好好做準備一、先做好規劃,再全力執行所謂‘凡事預則立,不預則廢’。做站也是如此,因此,在開始的前期,應該根據自身的具體情況做一個長期的規劃。請注意,是長期的。因為只有把目光放在遠處,每一天你才能有足夠的動力不顧一切的前行,才有足夠的毅力來堅持自己的選擇,因為在互聯網這一行業,胡亂拋棄是永遠不會成功的。二、請選擇適合自己的建站程序如今網上開源的源碼一大堆,最終選擇什么樣的源碼來搭建網站,這取決于你搭建網站的類型以及如后的規劃。但是有一點必須要注意,那就是在選擇源碼的時候一定要選擇比較知名的建站程序,因為如果在使用的過程中有什么問題在網上才能找得到答案,這是在選擇建站程序上應該注意的問題。在網上,論壇、門戶、科技等等建站程序應有盡有,至于該做何選擇,這取決于你自己。三、域名、空間的選擇互聯網創業,首先要具備的一點就是:要擁有自己的站點。網站的搭建,首要任務就是注冊一個屬于自己的域名,然后在根據自身經濟情況選擇一個自己能承受的空間服務器。對于IDC服務商的選擇,首先我們就是要明確自己所需要的空間類型,是VPS、虛擬主機、獨立服務器還是云服務器。選擇虛擬空間的時候一定要注意他們所支持的數據庫,否則買了也不能用。至于最后你自己該做出怎樣的選擇,這取決于你自身的情況。注冊好域名,找準放置自己網站的服務器,這是建站首要考慮的東西。四、如果你想長遠的做站,那么請備案!很多人嫌備案麻煩,所以選擇了國外或者香港服務器,免去了備案這一比較繁雜的環節。其實這是一種目光短淺的做法,更是一種從長遠來看不可取的做法!話說回來,如果你只是想搭建個網站玩玩,并沒有什么長遠的計劃,那么這樣的做法無可厚非,但是如果你想要在互聯網行業闖出自己的一片天地,那么這樣的做法是極為不可取的。五、江西南順網絡科技有限公司介紹:   南順網絡是江西首家推出四網合一技術的網絡公司,電腦PC端、WAP手機端、手APP客戶端、微信端,四網合一,同一后臺管理,解決了多端多后臺管理,把繁瑣的管理容納到同一個后臺。四網合一技術管理方便,操作性靈活,體現了南順網絡技術實力,方便了客戶管理,減少客戶的管理成本,帶領江西互聯網進入了四網合一時代!建站套餐:(可根據客戶需求制定開發,欄目客戶可以自己制定,南順全能后臺系統管理)基礎型 ¥:880/起 欄目:網站首頁+關于我們+公司動態+產品展示+在線留言+聯系我們品牌型 ¥:1580/起   欄目:網站首頁+關于我們+公司動態+產品展示+在線留言+聯系我們+WAP手機版營銷型  ¥:2280/起  欄目:網站首頁+關于我們+公司動態+產品展示+在線留言+聯系我們+WAP手機版+FLASH動畫+SEO結構優化+欄目可以制定商城型  ¥:5800/起   欄目:制定欄目+文章系統+產品系統+評論系統+會員系統+在線客服+在線支付系統微信公眾號   ¥:1880/起    微信開發:微官網+微商城+公眾號開發+微喜帖+微信預約+微點餐+微分銷+微交易+微金融+微信幻燈片+接受微信功能制定APP型   ¥:8800/起   APP開發:APP官網+APP商城+APP預約+APP點餐+APP分銷+APP交易+APP金融+接受APP功能制定三合一    ¥:6800/起 三網合一:PC電腦端+WAP手機端+微信端(三網同一后臺管理,便于宣傳管理)四合一    ¥:12800/起四網合一:PC電腦端+WAP手機端+微信端+APP(四網同一后臺管理,便于宣傳管理)聯系我們:(趕緊拿起手機聯系我們把,免費獲取建站方案)聯系電話:0791-82328290     手機:18970956300 (微信同號)   QQ:1006063299 

  • 必須了解的一些IT知識點

    一、硅:是一種化學元素,符號是Si,有無定形硅和晶體硅兩種同素異形體,在地殼中,是第二豐富的元素。 高純的單晶硅是重要的半導體材料。廣泛應用的二極管、三極管、晶閘管、場效應管和各種集成電路(計算機內的芯片和CPU)都是用硅做的原材料。半導體(semiconductor):指常溫下導電性能介于導體(conductor)與絕緣體(insulator)之間的材料。 半導體的分類,按照其制造技術可以分為:集成電路器件,分立器件、光電半導體、邏輯IC、模擬IC、儲存器等大類。還有按照其所處理的信號,可以分成模擬、數字、模擬數字混成及功能進行分類的方法。 半導體與計算機的關系:半導體是集成電路制造的主要材料,還是很多電子元件的組成部分,計算機的大腦CPU就是一種集成電路,計算機的邏輯元件和主存儲器都采用了大規模的集成電路硅谷:狹義上講是以舊金山灣區圣塔克拉拉縣為中心的從舊金山市以南移植到包括圣荷西市在內的地區,從廣義上講包括舊金山市本身和舊金山灣東岸奧克蘭市在內更廣闊的地區,也成為大硅谷地區。 之所以得名硅谷,是因為早期在舊金山灣區的公司大多是半導體或計算機硬件,三四十年前,硅谷就是半導體的同義詞,二十多年前,半導體公司離開硅谷。硅谷沒有了硅,反而更加繁榮,因為硅谷的靈魂是創新,它演變為高科技之地。有人這樣描述硅谷:亙古而長青的昨天永遠是過去,也永遠會再來。硅谷:狹義上講是以舊金山灣區圣塔克拉拉縣為中心的從舊金山市以南移植到包括圣荷西市在內的地區,從廣義上講包括舊金山市本身和舊金山灣東岸奧克蘭市在內更廣闊的地區,也成為大硅谷地區。 之所以得名硅谷,是因為早期在舊金山灣區的公司大多是半導體或計算機硬件,三四十年前,硅谷就是半導體的同義詞,二十多年前,半導體公司離開硅谷。硅谷沒有了硅,反而更加繁榮,因為硅谷的靈魂是創新,它演變為高科技之地。有人這樣描述硅谷:亙古而長青的昨天永遠是過去,也永遠會再來。二、帶寬又叫頻寬,是指在固定的的時間可傳輸的資料數量,亦即在傳輸管道中可以傳遞數據的能力。 單位:bps(比特)或Hz(赫茲) 對于模擬信號而言,帶寬又稱為頻寬,以赫茲(Hz)為單位。例如模擬語音電話的信號帶寬為3400Hz,一個PAL-D電視頻道的帶寬為8MHz(含保護帶寬)。 對于數字信號而言,帶寬是指單位時間內鏈路能夠通過的數據量。 帶寬在計算機中可簡單理解:帶寬就是傳輸速率,每秒傳輸的最大字節(b/s)計算速率的方式(其實都一樣,只是單位不同): 描述帶寬時常常把“比特/秒”省略。例如,帶寬是1M,實際上是1Mb/s,這里的Mb是指1024*1024位,轉換成字節就是(1024*1024)/8=131072字節(Byte)=128KB/s。例如所謂 10M 帶寬,其實是指 10Mbps (兆比特) 計算帶寬理論最快下載速度:10÷8=1.25MB/s 那么100M的帶寬最快下載速度是12.5MB/s。 但這只是理論上的速度,在這個數值附近浮動都算是較理想的,實際上因為各種因素,還要再減去一些損耗.局域網(Local Area Network ,縮寫:LAN):指有限區域(封閉的,如一個學校,辦公室)內的多臺計算機通過共享的傳輸介質互連,所組成的計算機組。例如:一個大院的人能在一起共同的活動。 范圍一般為方圓幾千米之內。依據拓撲結構的不同,局域網又分為以太網(施樂公司(xerox)的帕洛阿爾托實驗室幾位科學家發明了以太網(Ethernet))、令牌環網、無線局域網等類型。 廣域網(WideAreaNetwork,縮寫:WAN):也叫遠程網RCN (RemoteComputerNetwork),一個國家或國際間建立的網絡都是廣域網。它的作用范圍最大,一般可以從幾十公里至幾萬公里。目前,世界上最大的信息網絡Internet已經覆蓋了包括我國在內的180多個國家和地區,連接了數萬個網絡。 互聯網(internetwork,簡稱internet):即廣域網、局域網及單機按照一定的通訊協議組成的國際計算機網絡。作用相當于我國的普通話,相當于國際上的英語,用一種語言將世界聯系起來。城域網(Metropolitan Area Network,簡稱MAN):是在一個城市范圍內所建立的計算機通信網,屬寬帶局域網。門戶網站:即鏈接互聯網之門,屬于信息服務系統,例如:谷歌、雅虎、百度、騰訊等防火墻(firewall):指的是一個由軟件和硬件設備組合而成、一種位于內部(專門)網絡與外部(公開)網絡之間的網絡安全系統,是一種獲取安全性方法的形象說法。 三、摩爾定律:英特爾公司的創始人戈登.摩爾(Gordon Moore)博士提出,演變后的內容為:當價格不變時,集成電路上可容納的晶體管數目,約每隔18個月便會增加一倍,性能也將提升一倍。換言之,相同性能的計算機等IT產品,每18個月價錢會降一半。這一定律揭示了信息技術進步的速度,也主導著IT行業的發展。安迪-比爾定律:給所有的計算機消費者帶來一個希望,如果我今天嫌計算機太貴買不起,那么我等十八個月就可以用一半的價錢來買。要真是這樣簡單的話,計算機的銷售量就上不去了。需要買計算機的人會多等幾個月,已經有計算機的人也沒有動力更新計算機。其它的 IT 產品也是如此。那么IT行業將成為傳統行業,沒什么發展了。 但事實上,世界上的個人電腦銷量在持續增長。那么是什么動力促使人們不斷滴主動更新自己的硬件呢?IT界把它總結成安迪-比爾定律安迪-比爾定律:即比爾要拿走安迪所給的(What Andy gives, Bill takes away.),安迪是原英特爾公司CEO安迪.格魯夫(Andy Grove),比爾就是微軟創始人比爾.蓋茨 介紹: 英特爾處理器的速度每十八個月翻一番,計算機內存和硬盤的容量以更快的速度在增長。但是,微軟的操作系統等應用軟件越來越慢,也越做越大。所以,現在的計算機雖然比十年前快了一百倍,運行軟件感覺上還是和以前差不多。而且,過去整個視窗操作系統不過十幾兆大小,現在要幾千兆,應用軟件也是如此。雖然新的軟件功能比以前的版本強了一些,但是,增加的功能絕對不是和它的大小成比例的。因此,一臺十年前的計算機能裝多少應用程序,現在的也不過裝這么多,雖然硬盤的容量增加了一千倍。更糟糕的是,用戶發現,如果不更新計算機,現在很多新的軟件就用不了,連上網也是個問題。而十年前買得起的車卻照樣可以跑。 反摩爾定律:Google的前CEO埃里克·施密特(Eric Schmidt)提出的:如果你反過來看摩爾定律,一個IT公司如果今天和18個月前賣掉同樣多的、同樣的產品,它的營業額就要降一半。IT界把它稱為反摩爾定律。 反摩爾定律被逼著所有的硬件設備公司必須趕上摩爾定律規定的更新速度。風險投資:二戰后,在美國,一些愿意以高風險換取高回報的投資人發明了非常規的投資方式–風險投資(Venture Capital Investment,簡稱VC),在中國簡稱風投。風投無需抵押,也不需償還。如果投資成功,風投資本家將獲得幾倍、十幾倍,甚至上百倍的回報,如果投資失敗,錢就打水漂了。 由于美國有完善的社會保險制度和信用制度,使得信用成為美國社會的基礎,因此銀行就敢在沒有抵押的情況下把錢借出去,投資人也敢把錢交給一無所有的創業者去創業。天使投資:本質上是早期風險投資。天使投資人,簡稱天使,常常是一些這樣的有錢人:以前創辦過成功的公司,對技術很敏感,又不緣再辛苦創業,希望出錢讓別人干。在硅谷這種人很多,被稱為“不愿當總(經理),只肯當董(事)”四、時間戳時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。時間戳分類:1.自建時間戳:此類時間戳是通過時間接收設備(如GPS,CDMA,北斗衛星)來獲取時間到時間戳服務器上,并通過時間戳服務器簽發時間戳證書。此種時間戳可用來企業內部責任認定,在法庭認證時并不具備法律效力。因其在通過時間接收設備接收時間時存在被篡改的可能,故此不能做為法律依據。2.具有法律的效力的時間戳:它是由我國中科院國家授時中心與北京聯合信任技術服務有限公司負責建設的我國第三方可信時間戳認證服務。由國家授時中心負責時間的授時與守時監測。因其守時監測功能而保障時間戳證書中的時間的準確性和不被篡改。獲取時間戳平臺有“大眾版權保護平臺”,可與我國中科院國家授時中心時間同步。在這個日新月異的時代,原地踏步就是在退步。 

  • 常見六大Web安全攻防解析

    一、XSSXSS (Cross-Site Scripting),跨站腳本攻擊,因為縮寫和 CSS重疊,所以只能叫 XSS。跨站腳本攻擊是指通過存在安全漏洞的Web網站注冊用戶的瀏覽器內運行非法的HTML標簽或JavaScript進行的一種攻擊。跨站腳本攻擊有可能造成以下影響:利用虛假輸入表單騙取用戶個人信息。利用腳本竊取用戶的Cookie值,被害者在不知情的情況下,幫助攻擊者發送惡意請求。顯示偽造的文章或圖片。XSS 的原理是惡意攻擊者往 Web 頁面里插入惡意可執行網頁腳本代碼,當用戶瀏覽該頁之時,嵌入其中 Web 里面的腳本代碼會被執行,從而可以達到攻擊者盜取用戶信息或其他侵犯用戶安全隱私的目的。XSS 的攻擊方式千變萬化,但還是可以大致細分為幾種類型。1.非持久型 XSS(反射型 XSS )非持久型 XSS 漏洞,一般是通過給別人發送帶有惡意腳本代碼參數的 URL,當 URL 地址被打開時,特有的惡意代碼參數被 HTML 解析、執行。非持久型 XSS 漏洞攻擊有以下幾點特征:即時性,不經過服務器存儲,直接通過 HTTP 的 GET 和 POST 請求就能完成一次攻擊,拿到用戶隱私數據。攻擊者需要誘騙點擊,必須要通過用戶點擊鏈接才能發起反饋率低,所以較難發現和響應修復盜取用戶敏感保密信息為了防止出現非持久型 XSS 漏洞,需要確保這么幾件事情:Web 頁面渲染的所有內容或者渲染的數據都必須來自于服務端。盡量不要從 URL,document.referrer,document.forms 等這種 DOM API 中獲取數據直接渲染。盡量不要使用 eval, new Function(),document.write(),document.writeln(),window.setInterval(),window.setTimeout(),innerHTML,document.createElement() 等可執行字符串的方法。如果做不到以上幾點,也必須對涉及 DOM 渲染的方法傳入的字符串參數做 escape 轉義。前端渲染的時候對任何的字段都需要做 escape 轉義編碼。2.持久型 XSS(存儲型 XSS)持久型 XSS 漏洞,一般存在于 Form 表單提交等交互功能,如文章留言,提交文本信息等,黑客利用的 XSS 漏洞,將內容經正常功能提交進入數據庫持久保存,當前端頁面獲得后端從數據庫中讀出的注入代碼時,恰好將其渲染執行。舉個例子,對于評論功能來說,就得防范持久型 XSS 攻擊,因為我可以在評論中輸入以下內容主要注入頁面方式和非持久型 XSS 漏洞類似,只不過持久型的不是來源于 URL,referer,forms 等,而是來源于后端從數據庫中讀出來的數據 。持久型 XSS 攻擊不需要誘騙點擊,黑客只需要在提交表單的地方完成注入即可,但是這種 XSS 攻擊的成本相對還是很高。攻擊成功需要同時滿足以下幾個條件:POST 請求提交表單后端沒做轉義直接入庫。后端從數據庫中取出數據沒做轉義直接輸出給前端。前端拿到后端數據沒做轉義直接渲染成 DOM。持久型 XSS 有以下幾個特點:持久性,植入在數據庫中盜取用戶敏感私密信息危害面廣3.如何防御對于 XSS 攻擊來說,通常有兩種方式可以用來防御。1) CSPCSP 本質上就是建立白名單,明確告訴瀏覽器哪些外部資源可以加載和執行。我們只需要配置規則,如何攔截是由瀏覽器自己實現的。我們可以通過這種方式來盡量減少 XSS 攻擊。通常可以通過兩種方式來開啟 CSP:設置 HTTP Header 中的 Content-Security-Policy設置 meta 標簽的方式這里以設置 HTTP Header 來舉例:只允許加載本站資源Content-Security-Policy: default-src 'self'只允許加載 HTTPS 協議圖片Content-Security-Policy: img-src https://*允許加載任何來源框架Content-Security-Policy: child-src 'none'對于這種方式來說,只要配置了正確的規則,那么即使網站存在漏洞,攻擊者也不能執行它的攻擊代碼,并且 CSP 的兼容性也不錯。2) 轉義字符用戶的輸入永遠不可信任的,最普遍的做法就是轉義輸入輸出的內容,對于引號、尖括號、斜杠進行轉義但是對于顯示富文本來說,顯然不能通過上面的辦法來轉義所有字符,因為這樣會把需要的格式也過濾掉。對于這種情況,通常采用白名單過濾的辦法,當然也可以通過黑名單過濾,但是考慮到需要過濾的標簽和標簽屬性實在太多,更加推薦使用白名單的方式。3) HttpOnly Cookie。這是預防XSS攻擊竊取用戶cookie最有效的防御手段。Web應用程序在設置cookie時,將其屬性設為HttpOnly,就可以避免該網頁的cookie被客戶端惡意JavaScript竊取,保護用戶cookie信息。二、CSRFCSRF(Cross Site Request Forgery),即跨站請求偽造,是一種常見的Web攻擊,它利用用戶已登錄的身份,在用戶毫不知情的情況下,以用戶的名義完成非法操作。1.CSRF攻擊的原理下面先介紹一下CSRF攻擊的原理:完成 CSRF 攻擊必須要有三個條件:用戶已經登錄了站點 A,并在本地記錄了 cookie在用戶沒有登出站點 A 的情況下(也就是 cookie 生效的情況下),訪問了惡意攻擊者提供的引誘危險站點 B (B 站點要求訪問站點A)。站點 A 沒有做任何 CSRF 防御我們來看一個例子: 當我們登入轉賬頁面后,突然眼前一亮驚現"XXX隱私照片,不看后悔一輩子"的鏈接,耐不住內心躁動,立馬點擊了該危險的網站(頁面代碼如下圖所示),但當這頁面一加載,便會執行submitForm這個方法來提交轉賬請求,從而將10塊轉給黑客。2.如何防御防范 CSRF 攻擊可以遵循以下幾種規則:Get 請求不對數據進行修改不讓第三方網站訪問到用戶 Cookie阻止第三方網站請求接口請求時附帶驗證信息,比如驗證碼或者 Token1) SameSite可以對 Cookie 設置 SameSite 屬性。該屬性表示 Cookie 不隨著跨域請求發送,可以很大程度減少 CSRF 的攻擊,但是該屬性目前并不是所有瀏覽器都兼容。2) Referer CheckHTTP Referer是header的一部分,當瀏覽器向web服務器發送請求時,一般會帶上Referer信息告訴服務器是從哪個頁面鏈接過來的,服務器籍此可以獲得一些信息用于處理。可以通過檢查請求的來源來防御CSRF攻擊。正常請求的referer具有一定規律,如在提交表單的referer必定是在該頁面發起的請求。所以通過檢查http包頭referer的值是不是這個頁面,來判斷是不是CSRF攻擊。但在某些情況下如從https跳轉到http,瀏覽器處于安全考慮,不會發送referer,服務器就無法進行check了。若與該網站同域的其他網站有XSS漏洞,那么攻擊者可以在其他網站注入惡意腳本,受害者進入了此類同域的網址,也會遭受攻擊。出于以上原因,無法完全依賴Referer Check作為防御CSRF的主要手段。但是可以通過Referer Check來監控CSRF攻擊的發生。3)  Anti CSRF Token目前比較完善的解決方案是加入Anti-CSRF-Token。即發送請求時在HTTP 請求中以參數的形式加入一個隨機產生的token,并在服務器建立一個攔截器來驗證這個token。服務器讀取瀏覽器當前域cookie中這個token值,會進行校驗該請求當中的token和cookie當中的token值是否都存在且相等,才認為這是合法的請求。否則認為這次請求是違法的,拒絕該次服務。這種方法相比Referer檢查要安全很多,token可以在用戶登陸后產生并放于session或cookie中,然后在每次請求時服務器把token從session或cookie中拿出,與本次請求中的token 進行比對。由于token的存在,攻擊者無法再構造出一個完整的URL實施CSRF攻擊。但在處理多個頁面共存問題時,當某個頁面消耗掉token后,其他頁面的表單保存的還是被消耗掉的那個token,其他頁面的表單提交時會出現token錯誤。4) 驗證碼應用程序和用戶進行交互過程中,特別是賬戶交易這種核心步驟,強制用戶輸入驗證碼,才能完成最終請求。在通常情況下,驗證碼夠很好地遏制CSRF攻擊。但增加驗證碼降低了用戶的體驗,網站不能給所有的操作都加上驗證碼。所以只能將驗證碼作為一種輔助手段,在關鍵業務點設置驗證碼。三、點擊劫持點擊劫持是一種視覺欺騙的攻擊手段。攻擊者將需要攻擊的網站通過 iframe 嵌套的方式嵌入自己的網頁中,并將 iframe 設置為透明,在頁面中透出一個按鈕誘導用戶點擊。1. 特點隱蔽性較高,騙取用戶操作"UI-覆蓋攻擊"利用iframe或者其它標簽的屬性2. 點擊劫持的原理用戶在登陸 A 網站的系統后,被攻擊者誘惑打開第三方網站,而第三方網站通過 iframe 引入了 A 網站的頁面內容,用戶在第三方網站中點擊某個按鈕(被裝飾的按鈕),實際上是點擊了 A 網站的按鈕。 接下來我們舉個例子:我在優酷發布了很多視頻,想讓更多的人關注它,就可以通過點擊劫持來實現[object Object][object Object]3. 如何防御1)X-FRAME-OPTIONSX-FRAME-OPTIONS是一個 HTTP 響應頭,在現代瀏覽器有一個很好的支持。這個 HTTP 響應頭 就是為了防御用 iframe 嵌套的點擊劫持攻擊。該響應頭有三個值可選,分別是DENY,表示頁面不允許通過 iframe 的方式展示SAMEORIGIN,表示頁面可以在相同域名下通過 iframe 的方式展示ALLOW-FROM,表示頁面可以在指定來源的 iframe 中展示2)JavaScript 防御對于某些遠古瀏覽器來說,并不能支持上面的這種方式,那我們只有通過 JS 的方式來防御點擊劫持了。四、URL跳轉漏洞定義:借助未驗證的URL跳轉,將應用程序引導到不安全的第三方區域,從而導致的安全問題。1.URL跳轉漏洞原理黑客利用URL跳轉漏洞來誘導安全意識低的用戶點擊,導致用戶信息泄露或者資金的流失。其原理是黑客構建惡意鏈接(鏈接需要進行偽裝,盡可能迷惑),發在QQ群或者是瀏覽量多的貼吧/論壇中。 安全意識低的用戶點擊后,經過服務器或者瀏覽器解析后,跳到惡意的網站中。惡意鏈接需要進行偽裝,經常的做法是熟悉的鏈接后面加上一個惡意的網址,這樣才迷惑用戶。Header頭跳轉Javascript跳轉META標簽跳轉這里我們舉個Header頭跳轉實現方式:<?php $url=$_GET['jumpto']; header("Location: $url"); ?>http://www.***.org/login.php?jumpto=http://www.***.com這里用戶會認為www.****.org都是可信的,但是點擊上述鏈接將導致用戶最終訪問www.****.com這個惡意網址。3.如何防御1)referer的限制如果確定傳遞URL參數進入的來源,我們可以通過該方式實現安全限制,保證該URL的有效性,避免惡意用戶自己生成跳轉鏈接2)加入有效性驗證Token我們保證所有生成的鏈接都是來自于我們可信域的,通過在生成的鏈接里加入用戶不可控的Token對生成的鏈接進行校驗,可以避免用戶生成自己的惡意鏈接從而被利用,但是如果功能本身要求比較開放,可能導致有一定的限制。五、SQL注入SQL注入是一種常見的Web安全漏洞,攻擊者利用這個漏洞,可以訪問或修改數據,或者利用潛在的數據庫漏洞進行攻擊。1.SQL注入的原理我們先舉一個鑰匙的例子來說明其原理:這是我們經常見到的登錄頁面,但如果有一個惡意攻擊者輸入的用戶名是 admin' --,密碼隨意輸入,就可以直接登入系統了。why! ----這就是SQL注入我們之前預想的SQL 語句是:SELECT * FROM user WHERE username='admin' AND psw='password'但是惡意攻擊者用奇怪用戶名將你的 SQL 語句變成了如下形式:SELECT * FROM user WHERE username='admin' --' AND psw='xxxx'在 SQL 中,' --是閉合和注釋的意思,-- 是注釋后面的內容的意思,所以查詢語句就變成了:SELECT * FROM user WHERE username='admin' 復制代碼所謂的密碼,本質上就是SQL注入的一種利用方式。一次SQL注入的過程包括以下幾個過程:獲取用戶請求參數拼接到代碼當中SQL語句按照我們構造參數的語義執行成功SQL注入的必備條件: 1.可以控制輸入的數據 2.服務器要執行的代碼拼接了控制的數據。我們會發現SQL注入流程中與正常請求服務器類似,只是黑客控制了數據,構造了SQL查詢,而正常的請求不會SQL查詢這一步,SQL注入的本質:數據和代碼未分離,即數據當做了代碼來執行。2.危害獲取數據庫信息管理員后臺用戶名和密碼獲取其他數據庫敏感信息:用戶名、密碼、手機號碼、身份證、銀行卡信息……整個數據庫:脫褲獲取服務器權限植入Webshell,獲取服務器后門讀取服務器敏感文件3.如何防御嚴格限制Web應用的數據庫的操作權限,給此用戶提供僅僅能夠滿足其工作的權限,從而限度的減少注入攻擊對數據庫的危害后端代碼檢查輸入的數據是否符合預期,嚴格限制變量的類型,例如使用正則表達式進行一些匹配處理。對進入數據庫的特殊字符(',",\,<,>,&,*,; 等)進行轉義處理,或編碼轉換。基本上所有的后端語言都有對字符串進行轉義處理的方法,比如 lodash 的 lodash._escapehtmlchar 庫。所有的查詢語句建議使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到 SQL 語句中,即不要直接拼接 SQL 語句。例如 Node.js 中的 mysqljs 庫的 query 方法中的 ? 占位參數。六、OS命令注入攻擊OS命令注入和SQL注入差不多,只不過SQL注入是針對數據庫的,而OS命令注入是針對操作系統的。OS命令注入攻擊指通過Web應用,執行非法的操作系統命令達到攻擊的目的。只要在能調用Shell函數的地方就有存在被攻擊的風險。倘若調用Shell時存在疏漏,就可以執行插入的非法命令。命令注入攻擊可以向Shell發送命令,讓Windows或Linux操作系統的命令行啟動程序。也就是說,通過命令注入攻擊可執行操作系統上安裝著的各種程序。1.原理黑客構造命令提交給web應用程序,web應用程序提取黑客構造的命令,拼接到被執行的命令中,因黑客注入的命令打破了原有命令結構,導致web應用執行了額外的命令,web應用程序將執行的結果輸出到響應頁面中。2.如何防御后端對前端提交內容進行規則限制(比如正則表達式)。在調用系統命令前對所有傳入參數進行命令行參數轉義過濾。

  • 如何一步一步走向架構師

            成為優秀的架構師是大部分初中級工程師的階段性目標。優秀的架構師往往具備七種核心能力:編程能力、調試能力、編譯部署能力、性能優化能力、業務架構能力、在線運維能力、項目管理能力和規劃能力。        這幾種能力之間的關系大概如下圖。編程能力、調試能力和編譯部署能力屬于最基礎的能力。不能精通掌握這三種能力,很難在性能優化能力和業務架構能力方面有所成就。具備了一定的性能優化能力和業務架構能力之后,才能在線運維能力和項目管理能力方面表現優越。團隊管理能力是最高能力,它對項目管理能力的依賴度更大。基本知識1.學會分析源碼 程序員每天都和代碼打交道。經過數年的基礎教育和職業培訓,大部分程序員都會「寫」代碼,或者至少會抄代碼和改代碼。但是,會讀代碼的并不在多數,會讀代碼又真正讀懂一些大項目的源碼的,少之又少。這種怪狀,真要追究起來,怪不得程序員這個群體本身 --它是兩個原因造成的:我們所有的教育和培訓都在強調怎么寫代碼,并沒有教大家如何讀代碼大多數工作場景都是一個蘿卜一個坑,我們只需要了解一個系統的局部便能開展工作,讀不相干的代碼,似乎沒用讀源碼三問:“為什么要有這樣的架構”,“他是什么樣子的”,“他是怎么工作的”。 那么阿里程序員是如何去讀代碼的呢?2.分布式架構特點及設計理念首先需要說明的是,分布式系統是一個復雜且寬泛的研究領域,學習一兩門在線課程,看一兩本書可能都是不能完全覆蓋其所有內容的。介于這篇文章是引導初學者入門,所以我個人覺得為初學者介紹一下當前分布式系統領域的全貌,也許比直接推薦論文和課程更有幫助。當初學者對這個領域建立起一個大的 Picture之后,可以根據自己的興趣,有選擇性的深入不同領域進行進一步的學習。3.為什么微服務會這么火?要學習微服務,首先,我們要了解為什么使用微服務。代碼難以理解?構建和部署耗時長,難以定位問題,開發效率低?單體只能按整體橫向擴展,無法分模塊垂直擴展?一個bug有可能引起整個應用的崩潰?受技術棧限制,團隊成員使用同一框架和語言?那么如何解決單體的不足呢,通過遷移到微服務架構來解決,我們看一下什么是微服務。微服務架構:將單體應用拆分為多個高內聚低耦合的小型服務,每個小服務運行在獨立進程,由不同的團隊開發和維護,服務間采用輕量級通信機制,獨立自動部署,可以采用不同的語言及存儲。單體架構整個團隊維護開發一個大工程及一個單庫,到了微服務架構,用戶請求經過API Gateway被路由到下游服務,服務之間以輕量級通信協議進行通信,服務通過注冊中心發現彼此,每個服務都有專門的開發維護團隊,每個服務對應獨立的數據庫,服務獨立開發,獨立部署和上線。接下來我們總結下微服務的優點:易于開發與維護微服務相對小,易于理解啟動時間短,開發效率高獨立部署一個微服務的修改不需要協調其它服務伸縮性強每個服務都可以在橫向和縱向上擴展每個服務都可按硬件資源的需求進行獨立擴容與組織結構相匹配微服務架構可以更好將架構和組織相匹配每個團隊獨立負責某些服務,獲得更高的生產力技術異構性使用最適合該服務的技術降低嘗試新技術的成本下面就送上學習架構圖吧4.程序員到底要不要學習JVM總有人問這個東西好像用不上,于是要不要學這樣的問題。然后又總有人擔心一直搬磚成天做些重復沒提升的東西。如果你這輩子只甘心做一個平庸的Java碼農,那么你完全沒有必要去學習JVM相關的知識,學習JVM對于一個Java程序員的好處大概可以概括為下幾點:1.你能夠明白為什么Java最早期被稱為解釋型語言,而后來為什么又被大家叫做解釋與編譯并存的語言(了解JVM中解釋器以及即時編譯器就可以回答這個問題);2.你能夠理解動態編譯與靜態編譯的區別,以及動態編譯相對于靜態編譯到底有什么好處(JVM JIT);3.你能夠利用一些工具,jmap, jvisualvm, jstat, jconsole等工具可以輔助你觀察Java應用在運行時堆的布局情況,由此你可以通過調整JVM相關參數提高Java應用的性能;4.可以清楚知道Java程序是如何執行的;5.可以明白為什么Java等高級語言具有可移植性強的特性。其實這個問題相當于“為什么C/C++程序員需要學體系結構與編譯原理?”話不多說,附上學習體系圖5.被我們忽略掉的工程化專題IT產業行業細分化已經不是一天兩天的事了。集成技術這件事并不可恥可笑,反而是另一種可貴的能力。并不是像一些人形容的那樣,好像批發幾個CPU,拿到華強北就能把自己的電腦改裝成超級計算機了。那么,為什么我們常常會忽略掉工程化這件事的價值呢?主要的原因,或許是因為工程化這件事本身就離我們太遠。一個產業工程化的普遍性越高,說明這個產業發展的越成熟:產業鏈細分、分工細化、全球化的研發和生產這些高效的工作方式開始出現。而產業成熟也往往代表著寡頭化情況顯著。在IT產業中,寡頭化出現代表著創業公司減少--沒人再去用聲勢浩大的發布會講故事、沒人再去宣傳自己拿了多少融資。這一代中國人自小的教育不比歐美的STEAM,而是重學術、輕手藝。我們往往會為工科和產能過剩畫上等號。強大的資本和技術門檻為這些產業蒙上了一層神秘的面紗,讓普通人很難真正了解到其中技術和工藝的復雜程度,也就更難明白其中的價值。可正是因為中國的工程化能力,才讓我們有機會走到AI時代的第一梯隊,而不僅僅是靠學術研究能力。另外一個原因,或許在于我們天生“叛逆心”。超級計算機、手機芯片等等技術門檻較高的產業,其背后往往是大企業和國資科研機構。當評判的對象是他們時,我們似乎更愿意相信狗血的商業故事和陰謀論:比如科研經費都被教授們吃吃喝喝啦;搞超級計算機就是放衛星其實美日根本不care啦;XX企業的技術都是從創業公司買來的除了會賺用戶的錢啥技術都沒有……產生這種“叛逆心”的原因太深刻,我們能做到的,只有在這種“慣性思維”出現時先按住自己奔向鍵盤的手,轉表達欲為好奇心,完成自己了解的義務,再去行使自己批判的權利。附上思維腦圖6.沒有高并發經驗,想進大公司該怎么辦?假如沒有靠譜的公司,接觸不到高并發的業務場景怎么辦?你永遠解決的是小問題,工作10年技術也未必提升多少。很多程序員也經常找我說,沒有經驗就沒有靠譜的公司收,沒有靠譜的公司也就沒有經驗,我看了無數的書,自己做了無數的實驗拼命想找個靠譜公司去深入,但是感覺好難,簡直是個死循環讀者群的朋友大家都比較關注高并發,原因很簡單,想去BAT這樣的大公司,你必須要有高并發的經驗。今天普及下高并發的知識,希望大家對高并發有一個正確的認識。7.學習千遍,不如項目實戰成功一次我們在學習過程中最容易犯的一個錯誤就是:看的多,動手的少。特別是對一些項目的整體開發,我們接觸的機會就更少了。一次完整的開發,是最好的學習。它能讓你對整個開發流程有完整的認識,對知識也會有極大的鞏固。更重要的是,你將學會將理論知識用到實際開發中的方法。所以無論項目大小,一定要動手去進行開發學習。項目實戰相信很多程序員都多少會有的,可是我們這個還要學習什么呢?那就要看你想不想成為一個架構師了,為什么98%的程序員工作10年,一輩子還只是一個開發者。程序員們都要想一想這個問題,我是不是需要提升了。我認為,學習項目實戰最重要的還是學習項目管理,作為程序員,都應該學點項目管理。凡事皆為“項目”項目的兩類屬性(復雜的邏輯,龐大的信息量)人腦擅長的是思考,而不是記憶成為一個“獨當一面”的人獨當一面是一個很性感的詞。是否擁有它,對應的職場價值,有著天壤之別的。所有老板都喜歡“獨當一面”的員工,因為這是最省心力、最好算賬的模式:給你一塊資源,給你一個 title,給你一個目標,然后你給我打出一片天地來。當你能獨立對一攤子事情負責,并把它們一一搞定,你會擁有大幅度的職場溢價--相應的,其收入回報,也遠非“技術螺絲”可比了。如果你很進取,你會逐漸地:主導一個小組,一個部門,一個家庭,甚至還是城市……而這所有的一切起點,正是獨立完整地做好一個項目:你沒有誰可以依靠,你要對其中大大小小的事務負責,你要對最后的結果。換句話說,“項目管理”是“獨當一面”的元能力。在這個過程中,你的意識越發清晰,你的方法論越發成熟,你的信心更加沛,項目越做越大。直到某天,你真的有了掌控一方的封疆大吏。這就是我們學習“項目實戰”的終極意義。或許作為程序員的你想提升自己,卻找不到突破口,公司沒人帶。又或許你已經工作6年了,卻還是很迷茫,很多知識都還是不懂,也沒有達到自己期望的一個職位,薪資。到這里,你可能認為文章已經完了,學完這些就可以去BAT大公司做一個架構師,年薪50W+嗎?不,你錯了,這些都知識最基本的知識,想要成為一個架構師必須是一個累積的過程,也是這么多程序員終其一生也只是一個開發,到年齡就會被公司辭退。這些也是架構師必須要了解到的知識。編程能力對工程師而言,編程是最基礎的能力,必備技能。其本質是一個翻譯能力,將業務需求翻譯成機器能懂的語言。提升編程能力的書籍有很多。精通面向對象和設計模式是高效編程的基礎。初級工程師應該多寫代碼、多看代碼。找高手做Code Review,也是提升編程水平的捷徑。編譯部署能力編譯并在線上部署運行程序是系統上線的最后一個環節。隨著SOA架構的普及以及業務復雜度的增加,大部分系統只是一個完整業務的一個環節,因此,本地編譯和運行并不能完全模擬系統在線運行。為了快速驗證所編寫程序的正確性,編譯并在線上部署就成了必要環節。所以編譯部署能力是一個必備技能。讓盤根錯節的眾多子系統運行起來是個不小的挑戰。得益于SOA架構的普及以及大量編譯、部署工具的發展,編譯部署的門檻已經大大降低。基于應用層進行開發的公司,已經很少有“編譯工程師”的角色了。但是對于初級工程師而言,編譯部署仍然不是一個輕松的事情。性能優化能力衡量一個系統成功的一個重要指標是使用量。隨著使用量的增加和業務復雜度的增加,大部分系統最終都會碰到性能問題。性能優化能力是一個綜合能力。因為:影響系統性能的因素眾多,包括:數據結構、操作系統、虛擬機、CPU、存儲、網絡等。為了對系統性能進行調優,架構師需要掌握所有相關的技術。精通性能優化意味著深刻理解可用性、可靠性、一致性、可維護性、可擴展性等的本質。性能優化與業務強耦合,最終所采取的手段是往往折衷的結果。所以,性能優化要深諳妥協的藝術。可以說,性能優化能力是工程師們成長過程中各種技能開始融會貫通的一個標志。這方面可以參考之前的博客文章“常見性能優化策略的總結”。市場上還有很多與性能優化相關的書籍,大家可以參考。多多閱讀開源框架中關于性能優化方面的文檔和代碼也不失為好的提升手段。動手解決線上性能問題也是提升性能優化能力的關鍵。如果有機會,跟著高手學習,分析性能優化解決方案案例(我們技術博客之前也發表了很多這方面的文章),也是快速提升性能優化能力的手段。調試能力程序代碼是系統的靜態形式,調試的目的是通過查看程序的運行時狀態來驗證和優化系統。本質上講,工程師們通過不斷調試可以持續強化其通過靜態代碼去預測運行狀態的能力。所以調試能力也是工程師編程能力提升的關鍵手段。很早之前有個傳說:“調試能力有多強,編程能力就有多強。”不過現在很多編輯器的功能很強大,調試能力的門檻已經大大降低。調試能力是項目能否按時、高質量提交的關鍵。即使一個稍具復雜度的項目,大部分工程師也無法一次性準確無誤的完成。大項目都是通過不斷地調試進行優化和糾錯的。所以調試能力是不可或缺的能力。多寫程序,解決Bug,多請教高手是提升調試能力的重要手段。在線運維能力如果說性能優化能力體現的是架構師的靜態思考能力,在線運維能力考驗的就是動態反應能力。殘酷的現實是,無論程序多么完美,Bug永遠存在。與此同時,職位越高、責任越大,很多架構師需要負責非常重要的在線系統。對于線上故障,如果不能提前預防以及快速解決,損失可能不堪設想,所以在線運維能力是優秀架構師的必備技能。為了對線上故障進行快速處理,標準化的監控、上報、升級,以及基本應對機制當然很重要。通過所觀察到的現象,快速定位、緩解以及解決相關癥狀也相當關鍵。這要求架構師對故障系統的業務、技術具備通盤解讀能力。解決線上故障的架構師就好比一個在參加比賽F1的車手。賽車手必須要了解自身、賽車、對手、同伴、天氣、場地等所有因素,快速決策,不斷調整。架構師必須要了解所有技術細節、業務細節、處理規范、同伴等眾多因素,快速決斷,迅速調整。在線運維本質上是一個強化學習的過程。很多能力都可以通過看書、查資料來完成,但在線運維能力往往需要大量的實踐來提升。業務架構能力工程師抱怨產品經理的故事屢見不鮮,抱怨最多的主要原因來自于需求的頻繁變更。需求變更主要有兩個來源:第一個原因是市場改變或戰略調整,第二個原因是偽需求。對于第一個原因,無論是工程師還是產品經理,都只能無奈的接受。優秀的架構師應該具備減少第二種原因所導致的需求變更的概率。偽需求的產生有兩個原因:第一個原因是需求傳遞變形。從信息論的角度來講,任何溝通都是一個編碼和解碼的過程。典型的需求從需求方到產品經理,最終到開發工程師,最少需要經歷三次編碼和解碼過程。而信息的每一次傳遞都存在一些損失并帶來一些噪音,這導致有些時候開發出來的產品完全對不上需求。此外,需求方和產品經理在需求可行性、系統可靠性,開發成本控制方面的把控比較弱,也會導致需求變形。第二個原因就是需求方完全沒有想好自己的需求。優秀的架構師應該具備辨別真偽需求的能力。應該花時間去了解客戶的真實業務場景,具備較強的業務抽象能力,洞悉客戶的真實需求。系統的真正實施方是工程師,在明確客戶真實需求后,高明的架構師應該具備準確判斷項目對可行性、可靠性、可用性等方面的要求,并能具備成本意識。最后,由于需求與在線系統的緊耦合關系,掌握在線系統的各種細節也是成功的業務架構的關鍵。隨著級別的提升,工程師所面對的需求會越來越抽象。承接抽象需求,提供抽象架構是架構師走向卓越的必經之途。市場上有一些關于如何成為架構師的書,大家可以參考。但是架構能力的提升,實踐可能是更重要的方式。業務架構師應該關注客戶的痛點而不是PRD文檔,應該深入關注真實業務。掌握現存系統的大量技術和業務細節也是業務架構師的必備知識。項目管理能力作為工業時代的產物,分工合作融入在互聯網項目基因里面。架構師也需要負責幾個重大項目才能給自己正名。以架構師角色去管理項目,業務架構能力當然是必備技能。此外,人員管理和成本控制意識也非常重要。項目管理還意味著要有一個大心臟。重大項目涉及技術攻關、人員變動、需求更改等眾多可變因素。面臨各種變化,還要在確保目標順利達成,需要較強的抗壓能力。人員管理需要注意的方面包括:知人善用,優化關系,簡化溝通,堅持真理。知人善用意味著架構師需要了解每個參與者的硬技能和軟素質。同時,關注團隊成員在項目過程中的表現,按能分配。優化關系意味著管理團隊的情緒,畢竟項目的核心是團隊,有士氣的團隊才能高效達成目標。簡化溝通意味著快速決策,該妥協的時候妥協,權責分明。堅持真理意味著頂住壓力,在原則性問題上絕不退步。成本控制意味著對項目進行精細化管理,需要遵循如下幾個原則:以終為始、確定里程碑。為了達成目標,所有的計劃必須以終為始來制定。將大項目分解成幾個小階段,控制每個階段的里程碑可以大大降低項目失敗的風險。把控關鍵路徑和關鍵項目。按照關鍵路徑管理理論(CPM)的要求,架構師需要確定每個子項目的關鍵路徑,確定其最早和最晚啟動時間。同時,架構師需要關注那些可能會導致項目整體延期的關鍵節點,并集中力量攻破。掌控團隊成員的張弛度。大項目持續時間會比較長,也包含不同工種。項目實施是一個不斷變化的動態過程,在這個過程中不是整個周期都很緊張,不是所有的工種都一樣忙。優秀的架構師必須要具備精細閱讀整體項目以及快速反應和實時調整的能力。這不僅僅可以大大降低項目成本,還可以提高產出質量和團隊滿意度。總體來說,“前緊后松”是項目管理的一個重要原則。項目管理方面的書籍很多。但是,提高業務架構能力同樣重要。積極參與大項目并觀察別人管理項目的方式也是非常重要的提升手段。團隊管理能力不想做CTO的工程師不是一個好的架構師。走向技術管理應該是工程師的一個主流職業規劃。團隊管理的一個核心能力就是規劃能力,這包括項目規劃和人員規劃。良好的規劃需要遵循如下原則:規劃是利益的博弈。良好的規劃上面對得起老板,中間對得起自己,下面對得起團隊。在三者利益者尋找平衡點,實現多方共贏考驗著管理者的智慧和精細拿捏的能力。任何規劃都比沒有規劃好。沒有規劃的團隊就是沒頭的蒼蠅,不符合所有人的利益。規劃不是本本主義。市場在變,團隊在變,規劃也不應該一成不變。客戶至上的是項目規劃的出發點。就人員規劃而言,規劃需要考量團隊成員的能力、績效、成長等多方面的因素。

  • 從4個方面優化你的Vue項目

    運行時優化1、使用v-if代替v-show兩者的區別是:v-if不渲染DOM,v-show會預渲染DOM除以下情況使用v-show,其他情況盡量使用v-if有預渲染需求需要頻繁切換顯示狀態2、v-for必須加上key,并避免同時使用v-if一般我們在兩種常見的情況下會傾向于這樣做:為了過濾一個列表中的項目 比如 v-for="user in users" v-if="user.isActive"。在這種情形下,請將 users替換為一個計算屬性 (比如activeUsers),讓其返回過濾后的列表為了避免渲染本應該被隱藏的列表 比如 v-for="user in users" v-if="shouldShowUsers"。這種情形下,請將 v-if 移動至容器元素上 (比如 ul, ol)3、事件及時銷毀Vue組件銷毀時,會自動清理它與其它實例的連接,解綁它的全部指令及事件監聽器,但是僅限于組件本身的事件。也就是說,在js內使用addEventListener等方式是不會自動銷毀的,我們需要在組件銷毀時手動移除這些事件的監聽,以免造成內存泄露,如:created() {   addEventListener('touchmove', this.touchmove, false) }, beforeDestroy() {   removeEventListener('touchmove', this.touchmove, false) } 復制代碼4、首屏優化圖片裁剪、使用webp圖片需要裁剪,一般使用二倍圖即可盡量使用webp圖片如果使用了vue-lazyload插件,可以使用以下方法一鍵替換webp(替換使用v-lazy指令的圖片)Vue.use(VueLazyload, {   error: require('./assets/img/defaultpic_small.png'),   filter: {     webp (listener: any, options: any) {       if (!options.supportWebp) return       // listener.src += '.webp'     }   } });

  • 如何改進你的網站導航?學習這7個必要的實踐!

    一、什么是網站導航?網站導航(或稱,內部鏈接體系結構)是連接你的網頁的鏈接。網站導航的主要目的是幫助用戶在你的網站上輕松找到東西。搜索引擎使用你的網站導航來發現和索引新的頁面。鏈接幫助搜索引擎理解目標頁面的內容和上下文,以及頁面之間的關系。“用戶至上”。這是網站導航的基本目標,你必須永遠記住。首先滿足用戶。使導航容易。然后,優化搜索引擎而不損害用戶體驗。這篇文章的其余部分將會對網站導航的最佳實踐保持更廣泛的關注,列出各種可能導致網站訪問者和搜索引擎問題的內部鏈接情況。這個話題對于在大型網站上工作的人來說尤其重要。二、網站導航和內容層次結構當在一本書中搜索特定的頁面時,你可以簡單地閱讀目錄或索引。當你在雜貨店里逛的時候,貨架上的貨架上一般都貼著的分類標簽。兩者都提供了一種有效的方式來瀏覽大量內容。內容層次結構的存在是為了簡化查找內容的過程。當大量的內容存在時,它可以被分解成幾個大類。在這些寬泛的類別中,你可以創建更細化的分類,這構建了不同層次的層次,用戶可以輕松導航。利用內容層次結構以一種對用戶和搜索引擎有意義的方式組織網站頁面。1. 內容層次結構和網站導航的重要性內容的分類和次類劃分幫助頁面在一般的標題和特定的長尾術語中提高排名。2. 由內容層次結構引起的問題內容分類和構建層次結構創建內容豎井,就像緊密相關主題的集群。百度將以不同的速度抓取不同的頁面,從不同的站點索引質量鏈接。一些內容豎井比其他的更受歡迎。這些頁面可能會比其他頁面獲得更多的外部鏈接和流量,因此,在有機搜索中獲得更重要的位置。當內容太過豎向并且不能獲得鏈接和流量時,它可能也不能執行 —— 即使你的其他內容豎井執行得非常好。內容層次結構可以隔離可能位于站點內部太深的某些流行頁面集群。這就是水平鏈接發揮作用的地方。盡管鏈接相關性在排名上有所幫助,但內容豎向之間缺乏交叉鏈接可能會對你的整體排名不利。總是有方法可以創建水平鏈接類別的關系。所有頁面都屬于同一網站的事實已經表明,這些頁面并非完全無關。操作項:內容類別之間的鏈接對內容進行分類,以形成對用戶有意義的類別層次結構,并正確地鏈接這些頁面,在層次結構中上下移動。這些是大多數鏈接。在不同類別的頁面之間創建交叉鏈接,但仍然有相似之處。三、產品與內容營銷頁面之間的鏈接銷售超過一種產品或服務的公司將會對頁面進行分類,創建內容豎井,并相互鏈接。然而,許多 SEO 團隊和內容團隊也創建了一些具有吸引力和可分享性的資產。通常情況下,這是以博客的形式出現的,文章中包含了指向特定產品和服務的鏈接。博客文章可以很有用,因為它們可以引導更多的流量到產品頁面。然而,許多網站無法將產品頁面鏈接到博客頁面。使用這種水平鏈接可以幫助用戶了解你的產品或服務,并提高你的 SEO 性能。操作項:產品和內容頁之間的鏈接四、網站導航使用 JavaScript 效果有時,鏈接和 web 頁面是用 JavaScript 編寫的。這是一個問題,因為搜索引擎很難找到在 JavaScript 中創建的內部鏈接。盡管近年來百度在閱讀 JavaScript 方面有所改進,但 SEO 專家得出的結論是,結果是不一致的。其他搜索引擎在閱讀 JavaScript 時仍然沒有能力。這意味著當搜索引擎抓取你的內容時,你的內部鏈接可能會完全丟失。對于使用 JavaScript 是否實用,SEO 專家存在分歧。一方面,一些  SEO 專家完全避免使用 JavaScript。另一方面,web 設計人員和可用性專家聲稱 JavaScript 對用戶體驗至關重要。我相信有一個這之間有一個平衡的地方,JavaScript 可以被使用,同時避免任何 SEO 問題。1. 顯示和隱藏頁面內容的鏈接JavaScript 可以用來在頁面上顯示和隱藏某些內容,而不需要更改頁面。當發生這種情況時,所有的內容都預先加載到頁面中。在這種情況下,搜索引擎仍然能夠抓取所有的內容,即使其中一些內容是隱藏的。只有當隱藏的內容量很小的時候才會成功。當整個頁面更改時,它可能會出現問題,但是 URL 保持不變。問題出現的原因是,當你在一個 URL 中隱藏太多內容時,它會稀釋頁面內容的焦點。一個完全不同的主題應該有自己的頁面。操作項:顯示和隱藏內容的鏈接在 2016 年的 seoClarity 做的演示中,更深入地介紹了如何在網站上具體實現這一點。它特別提到了 AngularJS,一個流行的 JavaScript 框架,以及它的 SEO 問題和解決方案。然而,這里的經驗也適用于幾乎任何 JavaScript 框架。五、在 URL 中使用跟蹤參數可用性專家和轉換優化專家以不同的方式跟蹤用戶行為。有時,這涉及在站點內的 URL 中使用跟蹤參數。這將導致重復的內容問題,因為鏈接到具有完全相同內容的不同 URL。這可以通過多種方式解決。操作項:跟蹤 URL 中的參數六、第一個鏈接優先一個包含兩個或多個鏈接指向同一個 URL 的 web 頁面被認為會導致搜索引擎爬行的問題,只有第一個鏈接被考慮,而重復鏈接被忽略。1. 從第一個鏈接優先級產生的 SEO 問題在主要內容之前,Top-bar 導航和左側側邊欄常常首先出現在源代碼中。此外,這些菜單中的導航元素通常都有短的錨文本。他們傾向于少關注關鍵詞,多關注設計。頁面的主要內容之間的鏈接傾向于更多地關注關鍵詞,包含支持關鍵詞的周圍內容。它們的長度也更靈活,有更長的、更具體的錨文本。這段較長的文本增加了頁面可能排列的關鍵詞的種類。然而,由于第一個鏈接優先級問題,這些鏈接常常被搜索引擎忽略。操作項:第一個鏈接優先級問題考慮代碼的順序。在側邊欄和頂部欄導航之前對主要內容進行優先排序。CSS 可以用來控制浮動方向,從左到右或右到左,以使側邊欄的導航負載在主內容之后。頂部的條形導航可以用絕對定位來控制。七、處理大型網站導航對于大型網站(那些擁有成千上萬頁的網站)來說,網站導航是一個巨大的挑戰。分類菜單中的自然站點導航通常鏈接到站點的所有頁面,而 XML 站點地圖可以幫助索引所有頁面。但是,內容豎井之間缺乏交叉鏈接會創建頁面之間的距離。在大型站點上,很難識別產品頁面和相應產品營銷頁面之間的所有可能鏈接。一些大型網站可能沒有從其他頁面獲得他們需要的鏈接。此外,其他問題如第一個鏈接優先級和 JavaScript 問題可能難以在數百萬頁中發現。以下是應對這些挑戰的 3 個方法:1. 委托給不同的部門大公司擁有比例大的網站,擁有多個不同部門的員工。許多部門可能對應負責網站的不同部分。確保每個參與維護不同網站的人都遵守相同的 SEO 原則和實踐。然后,在整個網站的優化導航中分配勞動力。2. 使用工具或創建工具自動化總是使手動過程更具可伸縮性。除非你有自己的專用工具,否則可能沒有一個工具可以識別和修復上面提到的所有問題。像 Xenu,Screaming Frog,DeepCrawl,或者 Botify 這樣的爬行工具可以分析你現有的鏈接,確定問題,并提供網站架構的描述。如果你希望可視化站點體系結構,像 DynoMapper 和 PowerMapper 這樣的工具可以幫助實現這一點。鏈接研究工具,如 Moz 的 Open Site Explorer、Ahrefs、Majestic、Sistrix、LRT 和 CognitiveSEO 可以分析哪些頁面從外部獲得最多的鏈接,然后從這些頁面中添加交叉鏈接,從而獲得更重要的站點頁面。我們使用的專有工具自動處理頁面的爬行過程,并確定哪些頁面鏈接到另一個頁面。3. 使用分階段的方法大型網站并不總是有大的團隊來分配優化頁面的工作。如果缺少資源,你可以創建自己的工具來簡化這個過程。如果這些工具沒有提供你所需的幫助,那么可以考慮采用分階段的方法。這需要在一段時間內進行優化調度。這是一個循序漸進的過程,可能需要更長的時間,但是依靠像有機搜索流量這樣的指標將會幫助你決定首先優化什么。八、7 個關鍵點總結用戶第一:你的網站導航應該首先滿足用戶。然后,優化你的導航 SEO 性能。永遠不要損害用戶體驗。內容豎井之間的交叉連接:頁面之間的內容相關性對排名很重要,這在一個很好的分類、層次結構的網站架構中很自然地出現。但是,當缺少內容豎井之間的交叉鏈接時,這可能會有一些限制,因為有些頁面太深或太遠,無法從其他來源獲得大量的鏈接權重。博客對產品,產品到博客:創造高質量的內容對你的目標讀者是有用的和相關的。如果這些博客文章有助于產品購買決策,那么鏈接到特定產品頁面的博客文章。跟蹤參數:避免使用!在鏈接上使用 onClick 事件處理程序進行跟蹤。有一個自引用的規范標記總是安全的。JavaScript 鏈接:避免使用 JavaScript 編寫內容和鏈接。如果沒有辦法,考慮其他辦法讓它發揮作用。第一個鏈接優先級:理想情況下,主要內容優先。接下來,是側邊欄,然后是頂部欄。最后,處理頁腳。需要進一步的測試來確定這是否仍然是一個有效的關注點,但是堅持這種方法并沒有壞處。大型網站:成千上萬的頁面很難做到以上所有。委派給一個團隊,使用工具自動完成任務,或者一次處理一個問題。避免在 URL 中使用跟蹤參數。相反,通過在鏈接上使用 JavaScript 跟蹤 onclick 事件處理程序來跟蹤它們,這些鏈接將傳遞相同的跟蹤參數。如果使用百度統計,這可以通過事件跟蹤完成。總是使用自引用的規范標記是一種很好的做法,可以避免許多重復的內容問題。這個 href 值指向一個新的 URL,該 URL 只預加載與這個新 URL 相關的內容。onclick 函數將阻止新的 URL 加載,但是將允許目標 URL 的內容加載。使用 pushState 函數更新 URL,即使該頁面沒有加載。只與 URL 直接相關的預加載內容。對于所有的錨標記,應該有一個 href 值和一個 onclick 設置。對于大量內容,包括單頁視差滾動網站,并非所有內容都應該預先加載。使用 CSS 來控制光標和從箭頭到指針的變化。對于少量內容,刪除錨標記并使用 JavaScript onclick 事件處理程序替換。產品頁面也應該鏈接到相關的內容營銷頁面。這可能包括博客文章、FAQ 和產品手冊。

  • 關于企業建站

    企業網站是企業在Internet上展示形象的門戶,是企業開展電子交易的基地,是企業網上的"家",設計制作一個優秀的網站是建網站的企業成功邁向互聯網的重要步驟。網絡可以帶給企業不分地域、不分國別的大量客戶,帶給您無限的商機。為了獲得本行業的領先地位,面對不斷涌現的種種機會,企業建立一個具有自己特色的,精美完善的,集多種功能于一體的企業網站,尤其重要。那么,對于一個企業來說,為什么要建網站?下面是巴中網站建設總結的企業建站的優勢。一、發展業務做為一個企業,Internet應做為您擴展業務的一種工具,而不僅僅是一個做廣告的媒體。一個網站可以看作是您企業的一位不知疲倦的業務代表,它能隨時隨地的幫您接答每一個"業務電話",且從不請假。一個網站又是一個24小時營業的商店,讓您的顧客在任何時候都能買到東西,這樣,您的顧客會感激您為他們提供了方便。二、爭取新客戶首先,想一想自己所從事的行業。然后問自己:在一億人中,有一個人正需要找到您所能提供的服務,可是,他能正好找到貴公司的機率有多大呢?如果您沒有自己的網站的話,這種機率可能近似于零。三、服務現有的客戶一個網站實際上可以提高您對客戶服務的效率。它可以回答大多數客戶經常向您提出的問題,您可以讓您的客戶上您的網站去了解他們所關心的問題,這樣您就可以滕出時間來去做更需要您做的事情,比如企業管理,同時縮短客戶的對公司的考察期,不就是給您的公司更多的利潤嗎!四、增加利潤一個網上商店自然會給您帶來利潤,您的成本銷售比將大大地降低。也就是銷售成本的降低。降低開銷和成本自然意味著利潤的增多。即使您不是一個生產銷售型企業,也可以通過網上的廣告效應為您帶來業務,從而增加利潤。五、降低成本用網站來降低成本是一種有效的競爭手段。預算一下每月登一個單頁的廣告需花費5000元,另外每月做一次半版的報紙廣告,花費大約2400元,這樣每月的廣告支出將是7400元。有了自己的網站后,您就可以減少單頁傳單和報紙廣告的版面,并使更多的人看到您企業的廣告,同時,精確的了解反饋的情況,最快地做出反映。這樣,成本減少了,而更多未來的新的商機增多了。如果企業有一個精美、完善的網站,可以使客戶增加信任感,同時可以在段時間內了解企業情況、產品信息、資質認證等信息,減少業務員的拜訪次數,減少企業拓展業務的成本。六、延長營業時間如果有人幫您把您的營業時間延長66%,您自然會想到您的業務會增加,但也需要付相應的水電費和員工費等。但是,有了自己的網站,您的業務將24小時營業,而不增加任何成本。您可以同時服務成百上千個客戶而不需要增加店員。七、發展國際化業務您的企業形象及從事的業務,將被世界上每一個擁有電腦和對您的業務感興趣的人所看到。即便是小公司,也可輕易與大公司競爭,在Internet上人人平等。八、開拓本地市場通過網絡搜索引擎可以找到更多未來的新客戶,給他們發E-mail,寄介紹性資料,一個新客戶也可以通過搜索相關類別、關鍵詞、甚至電話號碼來找到您。九、增強市場推廣在當今互聯網時代,一個企業沒有自己的網站就像一個人沒有住址,一個商店沒有門面。網絡時代的迅速到來..加速了企業銷售、交流的網絡化。所以一個企業擁有一個自己的網站等于是在網絡上的一個據點。客戶可以通過網絡了解您的企業、您的產品、關系到您公司的贏利。十、網站是您的忠實接待員建設一個精美的網站是公司整體實力的體現,同時可以給顧客留下美好的印象,增強公司軟實力的提升。企業網站建設已經是大勢所趨了,那么怎么能在茫茫商海中抓住屬于我們的商機------招攬顧客,提升企業形象!

  • 為什么你愛用的 App,都用卡片式設計?

    一、什么是卡片卡片是含有圖片和文字在內的小矩形模塊,它是用戶了解更多細節信息的「入口」。要平衡界面的美學和可用性,卡片基本是一個默認選擇。因為卡片用起來非常方便,還可以展示包含不同元素的內容。1. 完美的擬物在用戶界面加入卡片設計可謂完美的擬物,因為它們看起來就像日常生活中真實存在的卡片。其實早在手機設備出現之前,卡片就已經存在了,比如名片、棒球卡、撲克卡等等。當今,卡片可謂是目前使用較廣泛的一種交互模型。因此,對用戶而言,其更能憑直覺認識到,這些卡片就代表真實生活中的某物。此外,就小故事推廣而言,卡片也是非常棒的選擇,棒球卡就是一個典例。你所需要了解的某運動員基本信息都顯示在小卡片的正反面。2. 內容架構卡片將內容劃分成多個有意義的部分,這樣還節省了一定的屏幕空間。類似于「字詞句段篇」的組成形式,卡片也是由最小信息單元組成,并匯總形成連貫的整體內容。像 Facebook 這類大企業,其采用卡片驅動型的界面用于臺式桌面、手機網頁及 app 客戶端時,卡片布局就被認作設計環節中的核心了。Facebook 充分利用了盒子風格的設計(即卡片——譯者注),將信息歸類,哪怕是在怎么也滑動不到底端的頁面上。3. 視覺享受基于卡片的設計通常主要依靠視覺設計,而使用大量圖片就是卡片設計的一大亮點。研究發現已證實,圖片可以提升網頁或 app 的整體設計,因為圖片可以快速有效地吸引用戶的注意力。所以,加入圖片也使得基于卡片的設計更加引人入勝。比如 Dribble,一個面向設計師等創意類作品的人群,提供作品在線服務,供網友查看的交流類網站。要展示這類內容,基于卡片的設計是再合適不過的選擇了。二、如何設計卡片在同一頁面布局中,卡片寬度應保持不變,但高度可以相應調整。卡片最大高度限于該平臺可用空間的高度,但也可以臨時延伸。例如,在顯示評論框的時候。從設計角度來看,卡片各角最好是圓角,并且最好稍有一點陰影。圓角使卡片看起來更像一個內容塊,陰影則可以反映出深度。這些元素在沒有分散用戶注意力的前提下,能給設計帶來一些視覺亮點。另外,還能給人一種卡片像是要從頁面中跳出來的感覺。除此之外,還可以加入動畫和動效。三、卡片的優勢設計恰當的話,卡片可以提升 app 的用戶體驗感。因為其功能性以及外形的原因,它們成了用戶界面的一個增值元素,對用戶來說,也更能憑直覺交互。1. 易于理解的形式之前 AppSo(微信號 appsolution)靈感早讀欄目分享 過「內容至上原則」。卡片是一個可以裝入任何內容的設計盒子。將不同內容置于卡片之中,可以方便用戶理解。這樣一來,用戶可以輕松了解其最關注的內容。這也使用戶可以通過各種方式來交互。2. 響應式設計以及移動界面設計關于卡片,最重要的是它們基本上極度容易被掌控。不管在臺式桌面還是手機客戶端,加入卡片設計的效果都非常好,因為內容可以通過更易理解的卡片呈現給用戶。就響應式設計而言,它是不錯的選擇,因為以內容盒子呈現的卡片可以方便地擴展或收縮。最后,加入卡片,在跨平臺設備上設計出統一的美感也就不會步步維艱了。這也是為什么通過卡片可以在不同設備上輕松設計出相同的用戶體驗感。

  • 高速數據緩存

    首先查詢緩存是否存在,如果存在直接返回緩存內容。不存在的話,取數據庫讀取內容后存入緩存中,下次就會直接從緩存中讀取內容。如果項目只是存儲在 Redis 中,減輕 MySQL 壓力。建議不要設置緩存時間,由手動控制更新緩存。查詢時建立緩存,應該同時在創建數據和修改數據時也建立緩存。避免高并發下緩存沒命中,導致流量瞬間進入 MySQL 查詢。建議使用 ThinkPHP5 的模型事件 after_write 控制緩存的創建和更新實際項目中更多的是使用哈希或者列表來實現。

  • JS HTTP 請求庫哪家強?Axios,Request,Superagent,Fetch 還是 Supertest .

    Web 開發中客戶端與服務器間的交互非常重要,它有利于客戶端應用高度動態化。用戶通過單擊按鈕的交互方式向服務器發送請求,服務器檢索數據并返回,頁面無需重新加載,直接使用返回的數據重新渲染其部分/整體內容,或者對數據進行操作。這其中的技術原理是 AJAX,通過 XMLHttpRequest 實例實現。 為了提升 AJAX 及 XMLHttpRequest 的使用體驗,社區開發了一些無需處理 AJAX 和 XMLHttpRequest 就直接發出 HTTP 請求的庫。本文將帶你研究 5 個流行的 HTTP 庫,了解它們是如何實現的。 希望能幫你省下一些時間。提示:通過與 Bit 共享同步公共組件可以避免代碼重復。 把相同的功能的代碼變成共享組件,就可以隨處使用它了,構建快,趕緊試試看。Axios基于 Promise 的 HTTP 客戶端,可用于瀏覽器和 Node.jsAxios 是一個基于 Promise 的 HTTP 庫,可用在 Node.js 和瀏覽器上發起 HTTP 請求,支持所有現代瀏覽器,包括 IE8+!優點同時支持 Node.js 和瀏覽器支持 Promise API可以配置或取消請求可以設置響應超時支持防止跨站點請求偽造(XSRF)攻擊可以攔截未執行的請求或響應支持顯示上傳進度廣泛用于 React 和 Vue 項目缺點用起來比較麻煩Superagent改良版 Ajax——與 Node.js HTTP 客戶端搭配使用Superagent 是一個基于 Promise 的輕量級漸進式 AJAX API,非常適合發送 HTTP 請求以及接收服務器響應。 與 Axios 相同,它既適用于 Node,也適用于所有現代瀏覽器。用 Superagent 發起 HTTP 請求就像在 request 對象上調用方法一樣簡單: 優點它有一個插件生態,通過構建插件可以實現較多功能可配置HTTP 請求發送接口友好可以為請求鏈式添加方法適用于瀏覽器和 Node支持顯示上傳和下載進度支持分塊傳輸編碼支持舊風格的回調繁榮的插件生態,支持眾多常見功能缺點其 API 不符合任何標準Request

  • JavaScript復制內容到剪貼板的兩種常用方法

    查了一下萬能的Google,現在常見的方法主要是以下兩種:第三方庫:clipboard.js原生方法:document.execCommand()分別來看看這兩種方法是如何使用的。clipboard.js這是clipboard的官網:https://clipboardjs.com/,看起來就是這么的簡單。引用直接引用:<script src="dist/clipboard.min.js"></script>包: npm install clipboard --save ,然后 import Clipboard from 'clipboard';使用從輸入框復制現在頁面上有一個 <input> 標簽,我們需要復制其中的內容,我們可以這樣做:?12<input id="demoInput" value="hello world"><button class="btn" data-clipboard-target="#demoInput">點我復制</button>?12import Clipboard from 'clipboard';const btnCopy = new Clipboard('btn');注意到,在 <button> 標簽中添加了一個 data-clipboard-target 屬性,它的值是需要復制的 <input> 的 id,顧名思義是從整個標簽中復制內容。直接復制有的時候,我們并不希望從 <input> 中復制內容,僅僅是直接從變量中取值。如果在 Vue 中我們可以這樣做:<button class="btn" :data-clipboard-text="copyValue">點我復制</button>?123import Clipboard from 'clipboard';const btnCopy = new Clipboard('btn');this.copyValue = 'hello world';事件有的時候我們需要在復制后做一些事情,這時候就需要回調函數的支持。在處理函數中加入以下代碼:?12345678910111213// 復制成功后執行的回調函數clipboard.on('success', function(e) { console.info('Action:', e.action); // 動作名稱,比如:Action: copy console.info('Text:', e.text); // 內容,比如:Text:hello word console.info('Trigger:', e.trigger); // 觸發元素:比如:<button class="btn" :data-clipboard-text="copyValue">點我復制</button> e.clearSelection(); // 清除選中內容}); // 復制失敗后執行的回調函數clipboard.on('error', function(e) { console.error('Action:', e.action); console.error('Trigger:', e.trigger);});小結文檔中還提到,如果在單頁面中使用 clipboard ,為了使得生命周期管理更加的優雅,在使用完之后記得 btn.destroy() 銷毀一下。clipboard 使用起來是不是很簡單。但是,就為了一個 copy 功能就使用額外的第三方庫是不是不夠優雅,這時候該怎么辦?那就用原生方法實現唄。document.execCommand()方法先看看這個方法在 MDN 上是怎么定義的:which allows one to run commands to manipulate the contents of the editable region.意思就是可以允許運行命令來操作可編輯區域的內容,注意,是可編輯區域。定義bool = document.execCommand(aCommandName, aShowDefaultUI, aValueArgument)方法返回一個 Boolean 值,表示操作是否成功。aCommandName :表示命令名稱,比如: copy, cut 等(更多命令見命令);aShowDefaultUI:是否展示用戶界面,一般情況下都是 false;aValueArgument:有些命令需要額外的參數,一般用不到;兼容性這個方法在之前的兼容性其實是不太好的,但是好在現在已經基本兼容所有主流瀏覽器了,在移動端也可以使用。使用從輸入框復制現在頁面上有一個 <input> 標簽,我們想要復制其中的內容,我們可以這樣做:?12<input id="demoInput" value="hello world"><button id="btn">點我復制</button>js代碼?123456789const btn = document.querySelector('#btn');btn.addEventListener('click', () => {    const input = document.querySelector('#demoInput');    input.select();    if (document.execCommand('copy')) {        document.execCommand('copy');        console.log('復制成功');    }})其它地方復制有的時候頁面上并沒有 <input> 標簽,我們可能需要從一個 <div> 中復制內容,或者直接復制變量。還記得在 execCommand() 方法的定義中提到,它只能操作可編輯區域,也就是意味著除了 <input>、<textarea> 這樣的輸入域以外,是無法使用這個方法的。這時候我們需要曲線救國。<button id="btn">點我復制</button>js代碼?123456789101112const btn = document.querySelector('#btn');btn.addEventListener('click',() => {    const input = document.createElement('input');    document.body.appendChild(input);    input.setAttribute('value', '聽說你想復制我');    input.select();    if (document.execCommand('copy')) {        document.execCommand('copy');        console.log('復制成功');    } document.body.removeChild(input);})算是曲線救國成功了吧。在使用這個方法時,遇到了幾個坑。遇到的坑在Chrome下調試的時候,這個方法時完美運行的。然后到了移動端調試的時候,坑就出來了。對,沒錯,就是你,ios。。。1、點擊復制時屏幕下方會出現白屏抖動,仔細看是拉起鍵盤又瞬間收起知道了抖動是由于什么產生的就比較好解決了。既然是拉起鍵盤,那就是聚焦到了輸入域,那只要讓輸入域不可輸入就好了,在代碼中添加 input.setAttribute('readonly', 'readonly'); 使這個 <input> 是只讀的,就不會拉起鍵盤了。2、無法復制這個問題是由于 input.select() 在ios下并沒有選中全部內容,我們需要使用另一個方法來選中內容,這個方法就是 input.setSelectionRange(0, input.value.length);。完整代碼如下:?12345678910111213const btn = document.querySelector('#btn');btn.addEventListener('click',() => {    const input = document.createElement('input'); input.setAttribute('readonly', 'readonly'); input.setAttribute('value', 'hello world'); document.body.appendChild(input);    input.setSelectionRange(0, 9999);    if (document.execCommand('copy')) {        document.execCommand('copy');        console.log('復制成功');    } document.body.removeChild(input);})總結以上就是關于JavaScript如何實現復制內容到剪貼板,附上幾個鏈接:execCommand MDNexecCommand兼容性clipboard.js

  • 微信小程序實現日歷功能

    <view class="calendar"> <view class="selectDate"> <view class="goleft iconfont icon-jianzuo" bindtap="prevMonth"></view> <view class="date-wrap">  {{year}}年{{month}}月 </view> <view class="goright iconfont icon-jianzuo" bindtap="nextMonth"></view> </view> <view class="week"> <view wx:for="{{weekArr}}" wx:for-index="index" wx:for-item="item" wx:key="key" style="width:{{param}}px;height:{{param-17}}px;line-height:{{param-17}}px">{{item}}</view> </view> <view class="date" style='width: {{ param * 7 }}px;'> <block wx:for="{{dateArr}}" wx:for-index="index" wx:for-item="item" wx:key="key">  <view style="{{index ==0?'margin-left:'+ param *firstDay +'px;':''}}width:{{param}}px;height:{{param-10}}px;line-height:{{param-10}}px;" class="{{index+1==day?'today':''}} {{index+1==day&&isClock?'clockOn':''}}"><view class="day">{{item}}</view></view> </block> </view></view><!--end calendar-->?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113data: { year:'', month:'', day:'', weekArr: ['日', '一', '二', '三', '四', '五','六'], dateArr:[], firstDay:'', lastDay:'', param:null, clockNum:3, },getDate: function () { //獲取當月日期 var mydate = new Date(); var year = mydate.getFullYear(); var month = mydate.getMonth(); var months = month + 1; this.data.year = year; this.data.month = months; this.data.day = mydate.getDate(); var fist = new Date(year, month, 1); this.data.firstDay = fist.getDay(); var last = new Date(year, months, 0);  this.data.lastDay = last.getDate();  this.setData({  year: this.data.year,  month: this.data.month,  day: this.data.day,  firstDay: this.data.firstDay,  lastDay: this.data.lastDay }) console.log("今天:" + this.data.day); }, setDate: function () { for (var i = 1; i < this.data.lastDay + 1; i++) {  this.data.dateArr.push(i); } this.setData({  dateArr: this.data.dateArr,  firstDay: this.data.firstDay }) }, prevMonth:function(){ //上一月 var months=""; var years=""; if(this.data.month ==1){  years=this.data.year-1  this.data.month=12;  months=this.data.month; }else{  years=this.data.year;  months = this.data.month - 1; }   var first = new Date(years, months-1, 1); this.data.firstDay = first.getDay(); var last = new Date(years, months, 0); this.data.lastDay = last.getDate();   this.setData({  month: months,  year:years,  firstDay: this.data.firstDay,  lastDay: this.data.lastDay })  this.data.dateArr = []; for (var i = 1; i < this.data.lastDay + 1; i++) {  this.data.dateArr.push(i); } this.setData({  dateArr: this.data.dateArr }) }, nextMonth:function(){ //下一月 var months=""; var years=""; if(this.data.month== 12){  this.data.month=0;  months = this.data.month;  years = this.data.year+1; }else{  months = this.data.month+1;  years = this.data.year; } var months = this.data.month + 1; var first = new Date(years, months-1,1); this.data.firstDay= first.getDay(); var last = new Date(years,months,0); this.data.lastDay= last.getDate(); this.setData({  month: months,  year:years,  firstDay:this.data.firstDay,  lastDay:this.data.lastDay })  this.data.dateArr = []; for (var i = 1; i < this.data.lastDay + 1; i++) {  this.data.dateArr.push(i); } this.setData({  dateArr: this.data.dateArr }) },onLoad: function (options) { this.getDate(); this.setDate(); var res = wx.getSystemInfoSync(); this.setData({  param:res.windowHeight/12, }) },

  • 微信小程序實現點擊圖片旋轉180度并且彈出下拉列表

    index.wxml?123456789101112<view class="phone_one" bindtap="clickPerson"> <view class="phone_personal">{{firstPerson}}</view> <image src="../../image/v6.png" class="personal_image {{selectArea ? 'rotateRight' :''}}"></image> //三目法判斷圖片要不要旋轉180。 </view>  <view class="person_box"> <view class="phone_select" hidden="{{selectPerson}}">  <view bindtap="mySelect">測試1</view>  <view bindtap="mySelect">測試2</view>  <view bindtap="mySelect">測試3</view> </view></view>index.js?123456789101112131415161718192021222324252627282930Page({ data:{ selectPerson:true, firstPerson:'個人', selectArea:false, }, //點擊選擇類型 clickPerson:function(){ var selectPerson = this.data.selectPerson; if(selectPerson == true){  this.setData({  selectArea:true,  selectPerson:false, }) }else{  this.setData({  selectArea:false,  selectPerson:true, }) } } , //點擊切換 mySelect:function(e){ this.setData({  firstPerson:e.target.dataset.me,  selectPerson:true,  selectArea:false, }) },}}index.wxss?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748.phone_personal{ width: 100%; color:rgb(34, 154, 181); height:100rpx; line-height:100rpx; text-align: center;}.phone_one{ display: flex; //用flex布局更方便。 position: relative; justify-content: space-between; background-color:rgb(239, 239, 239); width:90%; height:100rpx; margin:0 auto; border-radius: 10rpx; border-bottom:2rpx solid rgb(255, 255, 255);}.person_box{ position: relative;}.phone_select{ margin-top:0; z-index: 100; position: absolute; //小程序中z-index和absolute需要同時存在,元素才能脫離文檔。}.select_one{ text-align: center; background-color:rgb(239, 239, 239); width:676rpx; //脫離文檔后元素width不能再用百分比。 height:100rpx; line-height:100rpx; margin:0 5%; border-bottom:2rpx solid rgb(255, 255, 255);}.personal_image{ z-index: 100; position: absolute; right:2.5%; width: 34rpx; height: 20rpx; margin:40rpx 20rpx 40rpx 0; transition: All 0.4s ease;  -webkit-transition: All 0.4s ease;}.rotateRight{ transform: rotate(180deg); //180°旋轉圖片。}

  • redis的五種對象類型及其底層實現

    Redis對象類型簡介Redis是一種key/value型數據庫,其中,每個key和value都是使用對象表示的。比如,我們執行以下代碼:redis>SET message "hello redis"其中的key是message,是一個包含了字符串"message"的對象。而value是一個包含了"hello redis"的對象。Redis共有五種對象的類型,分別是:類型常量 對象的名稱REDIS_STRING 字符串對象REDIS_LIST 列表對象REDIS_HASH 哈希對象REDIS_SET 集合對象REDIS_ZSET 有序集合對象Redis中的一個對象的結構體表示如下:/* * Redis 對象 */typedef struct redisObject {     // 類型    unsigned type:4;             // 不使用(對齊位)    unsigned notused:2;     // 編碼方式    unsigned encoding:4;     // LRU 時間(相對于 server.lruclock)    unsigned lru:22;     // 引用計數    int refcount;     // 指向對象的值    void *ptr; } robj;type表示了該對象的對象類型,即上面五個中的一個。但為了提高存儲效率與程序執行效率,每種對象的底層數據結構實現都可能不止一種。encoding就表示了對象底層所使用的編碼。下面先介紹每種底層數據結構的實現,再介紹每種對象類型都用了什么底層結構并分析他們之間的關系。Redis對象底層數據結構底層數據結構共有八種,如下表所示:編碼常量 編碼所對應的底層數據結構REDIS_ENCODING_INT long 類型的整數REDIS_ENCODING_EMBSTR embstr 編碼的簡單動態字符串REDIS_ENCODING_RAW 簡單動態字符串REDIS_ENCODING_HT 字典REDIS_ENCODING_LINKEDLIST 雙端鏈表REDIS_ENCODING_ZIPLIST 壓縮列表REDIS_ENCODING_INTSET 整數集合REDIS_ENCODING_SKIPLIST 跳躍表和字典字符串對象字符串對象的編碼可以是int、raw或者embstr。如果一個字符串的內容可以轉換為long,那么該字符串就會被轉換成為long類型,對象的ptr就會指向該long,并且對象類型也用int類型表示。普通的字符串有兩種,embstr和raw。embstr應該是Redis 3.0新增的數據結構,在2.8中是沒有的。如果字符串對象的長度小于39字節,就用embstr對象。否則用傳統的raw對象。可以從下面這段代碼看出:#define REDIS_ENCODING_EMBSTR_SIZE_LIMIT 39robj *createStringObject(char *ptr, size_t len) {    if (len <= REDIS_ENCODING_EMBSTR_SIZE_LIMIT)        return createEmbeddedStringObject(ptr,len);    else        return createRawStringObject(ptr,len);}embstr的好處有如下幾點:embstr的創建只需分配一次內存,而raw為兩次(一次為sds分配對象,另一次為objet分配對象,embstr省去了第一次)。相對地,釋放內存的次數也由兩次變為一次。embstr的objet和sds放在一起,更好地利用緩存帶來的優勢。需要注意的是,redis并未提供任何修改embstr的方式,即embstr是只讀的形式。對embstr的修改實際上是先轉換為raw再進行修改。raw和embstr的區別可以用下面兩幅圖所示:列表對象列表對象的編碼可以是ziplist或者linkedlist。ziplist是一種壓縮鏈表,它的好處是更能節省內存空間,因為它所存儲的內容都是在連續的內存區域當中的。當列表對象元素不大,每個元素也不大的時候,就采用ziplist存儲。但當數據量過大時就ziplist就不是那么好用了。因為為了保證他存儲內容在內存中的連續性,插入的復雜度是O(N),即每次插入都會重新進行realloc。如下圖所示,對象結構中ptr所指向的就是一個ziplist。整個ziplist只需要malloc一次,它們在內存中是一塊連續的區域。linkedlist是一種雙向鏈表。它的結構比較簡單,節點中存放pre和next兩個指針,還有節點相關的信息。當每增加一個node的時候,就需要重新malloc一塊內存。哈希對象哈希對象的底層實現可以是ziplist或者hashtable。ziplist中的哈希對象是按照key1,value1,key2,value2這樣的順序存放來存儲的。當對象數目不多且內容不大時,這種方式效率是很高的。hashtable的是由dict這個結構來實現的typedef struct dict {    dictType *type;    void *privdata;    dictht ht[2];    long rehashidx; /* rehashing not in progress if rehashidx == -1 */    int iterators; /* number of iterators currently running */} dict;dict是一個字典,其中的指針dicht ht[2] 指向了兩個哈希表typedef struct dictht {    dictEntry **table;    unsigned long size;    unsigned long sizemask;    unsigned long used;} dictht;dicht[0] 是用于真正存放數據,dicht[1]一般在哈希表元素過多進行rehash的時候用于中轉數據。dictht中的table用語真正存放元素了,每個key/value對用一個dictEntry表示,放在dictEntry數組中。集合對象集合對象的編碼可以是intset或者hashtable。intset是一個整數集合,里面存的為某種同一類型的整數,支持如下三種長度的整數:#define INTSET_ENC_INT16 (sizeof(int16_t))#define INTSET_ENC_INT32 (sizeof(int32_t))#define INTSET_ENC_INT64 (sizeof(int64_t))intset是一個有序集合,查找元素的復雜度為O(logN),但插入時不一定為O(logN),因為有可能涉及到升級操作。比如當集合里全是int16_t型的整數,這時要插入一個int32_t,那么為了維持集合中數據類型的一致,那么所有的數據都會被轉換成int32_t類型,涉及到內存的重新分配,這時插入的復雜度就為O(N)了。是intset不支持降級操作。有序集合對象有序集合的編碼可能兩種,一種是ziplist,另一種是skiplist與dict的結合。ziplist作為集合和作為哈希對象是一樣的,member和score順序存放。按照score從小到大順序排列。它的結構不再復述。skiplist是一種跳躍表,它實現了有序集合中的快速查找,在大多數情況下它的速度都可以和平衡樹差不多。但它的實現比較簡單,可以作為平衡樹的替代品。它的結構比較特殊。下面分別是跳躍表skiplist和它內部的節點skiplistNode的結構體:/* * 跳躍表 */typedef struct zskiplist {    // 頭節點,尾節點    struct zskiplistNode *header, *tail;    // 節點數量    unsigned long length;    // 目前表內節點的最大層數    int level;} zskiplist;/* ZSETs use a specialized version of Skiplists *//* * 跳躍表節點 */typedef struct zskiplistNode {    // member 對象    robj *obj;    // 分值    double score;    // 后退指針    struct zskiplistNode *backward;    // 層    struct zskiplistLevel {        // 前進指針        struct zskiplistNode *forward;        // 這個層跨越的節點數量        unsigned int span;    } level[];} zskiplistNode;head和tail分別指向頭節點和尾節點,然后每個skiplistNode里面的結構又是分層的(即level數組)用圖表示,大概是下面這個樣子:每一列都代表一個節點,保存了member和score,按score從小到大排序。每個節點有不同的層數,這個層數是在生成節點的時候隨機生成的數值。每一層都是一個指向后面某個節點的指針。這種結構使得跳躍表可以跨越很多節點來快速訪問。前面說到了,有序集合ZSET是有跳躍表和hashtable共同形成的。typedef struct zset {    // 字典    dict *dict;    // 跳躍表    zskiplist *zsl;} zset;為什么要用這種結構呢。試想如果單一用hashtable,那可以快速查找、添加和刪除元素,但沒法保持集合的有序性。如果單一用skiplist,有序性可以得到保障,但查找的速度太慢O(log)。

  • HTTP簡介

    HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用于從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。HTTP是一個基于TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。HTTP是一個屬于應用層的面向對象的協議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統。它于1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經提出。HTTP協議工作于客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。Web服務器根據接收到的請求后,向客戶端發送響應信息。http請求-響應模型.jpg主要特點1、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由于HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。2、靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。3.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。4.無狀態:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。5、支持B/S及C/S模式。HTTP之URLHTTP使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。URL是一種特殊類型的URI,包含了用于查找某個資源的足夠的信息URL,全稱是UniformResourceLocator, 中文叫統一資源定位符,是互聯網上用來標識某一處資源的地址。以下面這個URL為例,介紹下普通URL的各部分組成:http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name從上面的URL可以看出,一個完整的URL包括以下幾部分:1.協議部分:該URL的協議部分為“http:”,這代表網頁使用的是HTTP協議。在Internet中可以使用多種協議,如HTTP,FTP等等本例中使用的是HTTP協議。在"HTTP"后面的“//”為分隔符2.域名部分:該URL的域名部分為“www.aspxfans.com”。一個URL中,也可以使用IP地址作為域名使用3.端口部分:跟在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認端口4.虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/news/”5.文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”,則是從域名后的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認的文件名6.錨部分:從“#”開始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分7.參數部分:從“?”開始到“#”為止之間的部分為參數部分,又稱搜索部分、查詢部分。本例中的參數部分為“boardID=5&ID=24618&page=1”。參數可以允許有多個參數,參數與參數之間用“&”作為分隔符。(原文:http://blog.csdn.net/ergouge/article/details/8185219 )URI和URL的區別URI,是uniform resource identifier,統一資源標識符,用來唯一的標識一個資源。Web上可用的每種資源如HTML文檔、圖像、視頻片段、程序等都是一個來URI來定位的URI一般由三部組成:①訪問資源的命名機制②存放資源的主機名③資源自身的名稱,由路徑表示,著重強調于資源。URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明了如何locate這個資源。URL是Internet上用來描述信息資源的字符串,主要用在各種WWW客戶程序和服務器程序上,特別是著名的Mosaic。采用URL可以用一種統一的格式來描述各種信息資源,包括文件、服務器的地址和目錄等。URL一般由三部組成:①協議(或稱為服務方式)②存有該資源的主機IP地址(有時也包括端口號)③主機資源的具體地址。如目錄和文件名等URN,uniform resource name,統一資源命名,是通過名字來標識資源,比如mailto:[email protected]。URI是以一種抽象的,高層次概念定義統一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。籠統地說,每個 URL 都是 URI,但不一定每個 URI 都是 URL。這是因為 URI 還包括一個子類,即統一資源名稱 (URN),它命名資源但不指定如何定位資源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。在Java的URI中,一個URI實例可以代表絕對的,也可以是相對的,只要它符合URI的語法規則。而URL類則不僅符合語義,還包含了定位該資源的信息,因此它不能是相對的。在Java類庫中,URI類不包含任何訪問資源的方法,它唯一的作用就是解析。相反的是,URL類可以打開一個到達資源的流。HTTP之請求消息Request客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成。Http請求消息結構.png請求行以一個方法符號開頭,以空格分開,后面跟著請求的URI和協議的版本。Get請求例子,使用Charles抓取的request:GET /562f25980001b1b106000338.jpg HTTP/1.1Host    img.mukewang.comUser-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36Accept    image/webp,image/*,*/*;q=0.8Referer    http://www.imooc.com/Accept-Encoding    gzip, deflate, sdchAccept-Language    zh-CN,zh;q=0.8第一部分:請求行,用來說明請求類型,要訪問的資源以及所使用的HTTP版本.GET說明請求類型為GET,[/562f25980001b1b106000338.jpg]為要訪問的資源,該行的最后一部分說明使用的是HTTP1.1版本。第二部分:請求頭部,緊接著請求行(即第一行)之后的部分,用來說明服務器要使用的附加信息從第二行起為請求頭部,HOST將指出請求的目的地.User-Agent,服務器端和客戶端腳本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎.該信息由你的瀏覽器來定義,并且在每個請求中自動發送等等第三部分:空行,請求頭部后面的空行是必須的即使第四部分的請求數據為空,也必須有空行。第四部分:請求數據也叫主體,可以添加任意的其他數據。這個例子的請求數據為空。POST請求例子,使用Charles抓取的request:POST / HTTP1.1Host:www.wrox.comUser-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)Content-Type:application/x-www-form-urlencodedContent-Length:40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley第一部分:請求行,第一行明了是post請求,以及http1.1版本。第二部分:請求頭部,第二行至第六行。第三部分:空行,第七行的空行。第四部分:請求數據,第八行。HTTP之響應消息Response一般情況下,服務器接收并處理客戶端發過來的請求后會返回一個HTTP的響應消息。HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。 http響應消息格式.jpg例子HTTP/1.1 200 OKDate: Fri, 22 May 2009 06:07:21 GMTContent-Type: text/html; charset=UTF-8<html>      <head></head>      <body>            <!--body goes here-->      </body></html>第一部分:狀態行,由HTTP協議版本號, 狀態碼, 狀態消息 三部分組成。第一行為狀態行,(HTTP/1.1)表明HTTP版本為1.1版本,狀態碼為200,狀態消息為(ok)第二部分:消息報頭,用來說明客戶端要使用的一些附加信息第二行和第三行為消息報頭,Date:生成響應的日期和時間;Content-Type:指定了MIME類型的HTML(text/html),編碼類型是UTF-8第三部分:空行,消息報頭后面的空行是必須的第四部分:響應正文,服務器返回給客戶端的文本信息。空行后面的html部分為響應正文。HTTP之狀態碼狀態代碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:1xx:指示信息--表示請求已接收,繼續處理2xx:成功--表示請求已被成功接收、理解、接受3xx:重定向--要完成請求必須進行更進一步的操作4xx:客戶端錯誤--請求有語法錯誤或請求無法實現5xx:服務器端錯誤--服務器未能實現合法的請求常見狀態碼:200 OK                        //客戶端請求成功400 Bad Request               //客戶端請求有語法錯誤,不能被服務器所理解401 Unauthorized              //請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用 403 Forbidden                 //服務器收到請求,但是拒絕提供服務404 Not Found                 //請求資源不存在,eg:輸入了錯誤的URL500 Internal Server Error     //服務器發生不可預期的錯誤503 Server Unavailable        //服務器當前不能處理客戶端的請求,一段時間后可能恢復正常更多狀態碼http://www.runoob.com/http/http-status-codes.htmlHTTP請求方法根據HTTP標準,HTTP請求可以使用多種請求方法。HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。GET     請求指定的頁面信息,并返回實體主體。HEAD     類似于get請求,只不過返回的響應中沒有具體的內容,用于獲取報頭POST     向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。PUT     從客戶端向服務器傳送的數據取代指定的文檔的內容。DELETE      請求服務器刪除指定的頁面。CONNECT     HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。OPTIONS     允許客戶端查看服務器的性能。TRACE     回顯服務器收到的請求,主要用于測試或診斷。HTTP工作原理HTTP協議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶端。HTTP協議采用了請求/響應模型。客戶端向服務器發送一個請求報文,請求報文包含請求的方法、URL、協議版本、請求頭部和請求數據。服務器以一個狀態行作為響應,響應的內容包括協議的版本、成功或者錯誤代碼、服務器信息、響應頭部和響應數據。以下是 HTTP 請求/響應的步驟:1、客戶端連接到Web服務器一個HTTP客戶端,通常是瀏覽器,與Web服務器的HTTP端口(默認為80)建立一個TCP套接字連接。例如,http://www.oakcms.cn。2、發送HTTP請求通過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數據4部分組成。3、服務器接受請求并返回HTTP響應Web服務器解析請求,定位請求資源。服務器將資源復本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭部、空行和響應數據4部分組成。4、釋放連接TCP連接若connection 模式為close,則服務器主動關閉TCP連接,客戶端被動關閉連接,釋放TCP連接;若connection 模式為keepalive,則該連接會保持一段時間,在該時間內可以繼續接收請求;5、客戶端瀏覽器解析HTML內容客戶端瀏覽器首先解析狀態行,查看表明請求是否成功的狀態代碼。然后解析每一個響應頭,響應頭告知以下為若干字節的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,并在瀏覽器窗口中顯示。例如:在瀏覽器地址欄鍵入URL,按下回車之后會經歷以下流程:1、瀏覽器向 DNS 服務器請求解析該 URL 中的域名所對應的 IP 地址;2、解析出 IP 地址后,根據該 IP 地址和默認端口 80,和服務器建立TCP連接;3、瀏覽器發出讀取文件(URL 中域名后面部分對應的文件)的HTTP 請求,該請求報文作為 TCP 三次握手的第三個報文的數據發送給服務器;4、服務器對瀏覽器請求作出響應,并把對應的 html 文本發送給瀏覽器;5、釋放 TCP連接;6、瀏覽器將該 html 文本并顯示內容;   GET和POST請求的區別GET請求GET /books/?sex=man&name=Professional HTTP/1.1Host: www.wrox.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1Connection: Keep-Alive注意最后一行是空行POST請求POST / HTTP/1.1Host: www.wrox.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1Content-Type: application/x-www-form-urlencodedContent-Length: 40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley1、GET提交,請求的數據會附在URL之后(就是把數據放置在HTTP協議頭中),以?分割URL和傳輸數據,多個參數用&連接;例 如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果數據是英文字母/數字,原樣發送,如果是空格,轉換為+,如果是中文/其他字符,則直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進制表示的ASCII。POST提交:把提交的數據放置在是HTTP包的包體中。上文示例中紅色字體標明的就是實際的傳輸數據因此,GET提交的數據會在地址欄中顯示出來,而POST提交,地址欄不會改變2、傳輸數據的大小:首先聲明:HTTP協議沒有對傳輸的數據大小進行限制,HTTP協議規范也沒有對URL長度進行限制。而在實際開發中存在的限制主要有:GET:特定瀏覽器和服務器對URL長度有限制,例如 IE對URL長度的限制是2083字節(2K+35)。對于其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決于操作系 統的支持。因此對于GET提交時,傳輸數據就會受到URL長度的 限制。POST:由于不是通過URL傳值,理論上數據不受 限。但實際各個WEB服務器會規定對post提交數據大小進行限制,Apache、IIS6都有各自的配置。3、安全性POST的安全性要比GET的安全性高。比如:通過GET提交數據,用戶名和密碼將明文出現在URL上,因為(1)登錄頁面有可能被瀏覽器緩存;(2)其他人查看瀏覽器的歷史紀錄,那么別人就可以拿到你的賬號和密碼了,除此之外,使用GET提交數據還可能會造成Cross-site request forgery攻擊4、Http get,post,soap協議都是在http上運行的(1)get:請求參數是作為一個key/value對的序列(查詢字符串)附加到URL上的查詢字符串的長度受到web瀏覽器和web服務器的限制(如IE最多支持2048個字符),不適合傳輸大型數據集同時,它很不安全(2)post:請求參數是在http標題的一個不同部分(名為entity body)傳輸的,這一部分用來傳輸表單信息,因此必須將Content-type設置為:application/x-www-form- urlencoded。post設計用來支持web窗體上的用戶字段,其參數也是作為key/value對傳輸。但是:它不支持復雜數據類型,因為post沒有定義傳輸數據結構的語義和規則。(3)soap:是http post的一個專用版本,遵循一種特殊的xml消息格式Content-type設置為: text/xml 任何數據都可以xml化。Http協議定義了很多與服務器交互的方法,最基本的有4種,分別是GET,POST,PUT,DELETE. 一個URL地址用于描述一個網絡上的資源,而HTTP中的GET, POST, PUT, DELETE就對應著對這個資源的查,改,增,刪4個操作。 我們最常見的就是GET和POST了。GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息.我們看看GET和POST的區別GET提交的數據會放在URL之后,以?分割URL和傳輸數據,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數據放在HTTP包的Body中.GET提交的數據大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的數據沒有限制.GET方式需要使用Request.QueryString來取得變量的值,而POST方式通過Request.Form來獲取變量的值。GET方式提交數據,會帶來安全問題,比如一個登錄頁面,通過GET方式提交數據時,用戶名和密碼將出現在URL上,如果頁面可以被緩存或者其他人可以訪問這臺機器,就可以從歷史記錄獲得該用戶的賬號和密碼.

  • redis的基本操作與進階

    在Redis中,命令大小寫不敏感。一、適合全體類型的常用命令啟動redis服務和redis-cli命令界面繼續后續實驗:$ sudo service redis-server start$ redis-cli(1)EXISTS and DELEXISTS key 判斷一個key是否存在;存在返回 1;否則返回0; DEL key 刪除某個key,或是一系列key;DEL key1 key2 key3 key4。成功返回1,失敗返回0(key值不存在)。> set mykey hello> exists mykey> del mykey> exists mykey操作截圖: (2)TYPE and KEYSTYPE key:返回某個key元素的數據類型 ( none:不存在,string:字符,list,set,zset,hash),key不存在返回空。 KEYS key—pattern :返回匹配的key列表 (KEYS foo*:查找foo開頭的keys)> set mykey x> type mykey>keys my*> del mykey>keys my*> type mykey操作截圖: (3)RANDOMKEY and CLEARRANDOMKEY : 隨機獲得一個已經存在的key,如果當前數據庫為空,則返回空字符串> randomkey操作截圖: CLEAR :清除界面。> clear(4)RENAME and RENAMENXRENAME oldname newname:改key的名字,新鍵如果存在將被覆蓋 RENAMENX oldname newname:更改key的名字,如果名字存在則更改失敗筆者randomkey結果為mylist,將此key值更名為newlist。> randomkey> rename mylist newlist> exists mylist> exists newlist操作截圖: (5) DBSIZEDBSIZE :返回當前數據庫的key的總數> dbsize操作截圖: 二、Redis 時間相關命令(1)限定key生存時間這同樣是一個無視數據類型的命令,對于臨時存儲很有用處。避免進行大量的DEL操作。EXPIRE:設置某個key的過期時間(秒),(EXPIRE bruce 1000:設置bruce這個key1000秒后系統自動刪除)注意:如果在還沒有過期的時候,對值進行了改變,那么那個值會被清除。> set key some-value> expire key 10> get key       (馬上執行此命令)> get key       (10s后執行此命令)操作截圖: 結果顯示,執行EXPIRE命令后,馬上GET,顯示key存在。10秒后再GET時,key 已經被自動刪除。(2)查詢key剩余生存時間限時操作可以再SET命令中實現,并且可用TTL命令查詢key剩余生存時間。 TTL:查找某個key還有多長時間過期,返回時間秒> set key 100 ex 30> ttl key> ttl key操作截圖: (3)清除keyFLUSHDB:清空當前數據庫中的所有鍵FLUSHALL:清空所有數據庫中的所有鍵>flushdb>flushall三、Redis設置相關命令Redis有其配置文件,可以通過client-command窗口查看或者更改相關配置。相關命令介紹如下:(1)CONFIG GET and CONFIG SETCONFIG GET:用來讀取運行Redis服務器的配置參數。 CONFIG SET:用于更改運行Redis服務器的配置參數。 AUTH : 認證密碼 下面針對Redis密碼的示例:> config get requirepass (查看密碼)> config set requirepass test123 (設置密碼為test123 )> config get requirepass  (報錯,沒有認證)> auth test123> config get requirepass操作截圖: 由結果可知,剛開始時Reids并未設置密碼,密碼查詢結果為空。然后設置密碼為test123,再次查詢報錯。經過auth命令認證后,可正常查詢。可以經過修改Redis的配置文件redis.conf修改密碼。CONFIG GET命令是以list的key-value對顯示的,如查詢數據類型的最大條目:> config get *max-*-entries*操作截圖: (2)重置報告CONFIG RESETSTAT:重置數據統計報告,通常返回值為'OK"。> CONFIG RESETSTAT操作截圖: 四、查詢信息INFO [section] :查詢Redis相關信息。 INFO命令可以查詢Redis幾乎所有的信息,其命令選項有如下:server: Redis server的常規信息clients: Client的連接選項memory: 存儲占用相關信息persistence: RDB and AOF 相關信息stats: 常規統計replication: Master/slave請求信息cpu: CPU 占用信息統計cluster: Redis 集群信息keyspace: 數據庫信息統計all: 返回所有信息default: 返回常規設置信息若命令參數為空,info命令返回所有信息。> info keyspace> info server操作截圖:   Redis的高級應用實驗簡介前面學習了Redis的基礎知識和基本命令,接下來繼續講解Redis的高級應用,包括:安全性設置,主從復制,事務處理, 持久化機制, 虛擬內存的使用。一、安全性設置在客戶端連接是需要指定的密碼(由于redis速度相當的快,一秒鐘可以150K次的密碼嘗試,所以需要設置一個密碼強度很大的密碼)。設置密碼的方式有兩種:(1) 使用config set 命令的requirepass 參數,具體格式為config set requirepass “password”。 (2) 配置redis.conf 中設置requirepass屬性,后面為密碼。輸入認證的方式也有兩種:(1) 登錄時可以 redis-cli -a password(2)登錄后使用 auth password(1)設置密碼第一種密碼設置方式在上一個實驗中已經提到,(在CONFIG SET命令講解的實例),此處我們來看看第二種方式設置密碼。首先需要進入Redis的安裝目錄,然后修改配置文件redis.conf。根據grep命令的結果,使用vi編輯器修改“# requirepass foobared” 為“requirepass test123”,然后保存退出。$ grep -n requirepass /etc/redis/redis.conf$ sudo vim /etc/redis/redis.conf編輯redis.conf的結果: (2)重啟redis-server 與redis-cli重啟redis server。$ sudo service redis-server restart進入到redis-cli交互界面進行驗證$ redis-cli> info> auth test123> info> exit操作截圖: 結果表明第一次info命令失敗,在auth認證之后info命令正常返回。最后退出redis-cli。另外一種密碼認證方式:$ redis-cli -a test123> info操作截圖: 二、主從復制由于環境的原因,在此處筆者大致講解主從復制的工作流程,不做實驗。Redis的主從復制配置和使用都比較簡單,通過主從復制可以允許多個slave server擁有和master server相同的數據庫副本。從服務器只能讀,不能寫。Redis主從復制特點:1、master可以擁有多個slave。2、多個slave可以連接同一個master外,還可以連接到其他的slave。(當master宕機后,相連的slave轉變為master)3、主從復制不會阻塞master,再同步數據時,master可以繼續處理client請求。4、提高了系統的可伸縮性。Redis主從復制的過程:1、Slave與master建立連接,發送sync同步命令。2、 Master會啟動一個后臺進程,將數據庫快照保存到文件中,同時Master主進程會開始收集新的寫命令并緩存。3、 后臺完成保存后,就將此文件發送給Slave。4、 Slave將此文件保存到磁盤上。三、事務處理Redis的事務處理比較簡單。只能保證client發起的事務中的命令可以連續的執行,而且不會插入其他的client命令,當一個client在連接中發出multi命令時,這個連接就進入一個事務的上下文,該連接后續的命令不會執行,而是存放到一個隊列中,當執行exec命令時,redis會順序的執行隊列中的所有命令。如果其中執行出現錯誤,執行正確的不會回滾,不同于關系型數據庫的事務。> multi> set name a> set name b> exec> get name操作截圖: 四、持久化機制Redis是一個支持持久化的內存數據庫,Redis需要經常將內存中的數據同步到磁盤來保證持久化。Redis支持兩種持久化方式:1、snapshotting(快照),將數據存放到文件里,默認方式。是將內存中的數據已快照的方式寫入到二進制文件中,默認文件dump.rdb,可以通過配置設置自動做快照持久化的方式。可配置Redis在n秒內如果超過m個key被修改就自動保存快照。save 900 1 #900秒內如果超過1個key被修改,則發起快照保存save 300 10 #300秒內如果超過10個key被修改,則快照保存2、 Append-only file(縮寫為aof),將讀寫操作存放到文件中。由于快照方式在一定間隔時間做一次,所以如果Redis意外down掉的話,就會丟失最后一次快照后的所有修改。aof比快照方式有更好的持久化性,是由于使用aof時,redis會將每一個收到的寫命令都通過write函數寫入到文件中當redis啟動時會通過重新執行文件中保存的寫命令來在內存中重新建立整個數據庫的內容。由于os會在內核中緩存write做的修改,所以可能不是立即寫到磁盤上,這樣aof方式的持久化也還是有可能會丟失一部分數據。可以通過配置文件告訴redis我們想要通過fsync函數強制os寫入到磁盤的時機。配置文件中的可配置參數:appendonly   yes     //啟用aof持久化方式#appendfsync  always //收到寫命令就立即寫入磁盤,最慢,但是保證了數據的完整持久化appendfsync   everysec  //每秒中寫入磁盤一次,在性能和持久化方面做了很好的折中#appendfsync  no     //完全依賴os,性能最好,持久化沒有保證在redis-cli的命令中,SAVE命令是將數據寫入磁盤中。> help save>save操作截圖: 五、虛擬內存的使用虛擬內存管理在2.6及之上版本取消了,在安裝實驗中,選擇的是2.8.9版本的redis ,所有實驗中的配置文件中沒有虛擬內存管理功能的配置選項。此處僅為講解Redis的虛擬內存是暫時把不經常訪問的數據從內存交換到磁盤中,從而騰出內存空間用于其他的訪問數據,尤其對于redis這樣的內存數據庫,內存總是不夠用的。除了分隔到多個redis server外,提高數據庫的容量的方法就是使用虛擬內存,把那些不常訪問的數據交換到磁盤上。通過配置vm相關的redis.config配置:vm-enable  yes                   #開啟vm功能vm-swap-file    /tmp/redis.swap  #交換出來的value保存的文件路徑vm-max-memory    10000000        #redis使用的最大內存上線 vm-page-size   32       #每個頁面的大小32字節vm-pages     123217729    #最多使用多小個頁面vm-max-threads     4        #用于執行value對象換入的工作線程數量

  • JavaScript 正則表達式與字符串查找方法

    如何取得一個給定的字符串substr在另一個字符串str中出現的次數?字符串匹配,第一想到的就是正則表達式,但我們最常使用的字面量來創建的正則表達式方式卻無法傳入變量,這時應該使用另一種創建正則表達式的方式:構造函數,如下var reg = new RegExp(substr, "g");可以傳入變量了,再介紹個字符串基本包裝類型的方法:match()其中第一個參數表示要匹配的字符串模式,因此可以傳入變量,不需要加/ /,第二個參數是可選的標志字符串。語法為str.match(regExp),參數為一個正則表達式,若傳的不是正則則會隱式轉換,返回值為一個包含匹配結果的數組,如果沒有匹配項,則返回null。另外,字符串的match方法與正則的exec()類似,返回匹配的詳細信息;字符串的search方法與正則的test()類似,只是用來查看是否匹配。回到最初的問題,完整的程序如下:var str1 = "abctestctesqk1test23";var str2 = "test";  function countSubstr(str, substr) {  var reg = new RegExp(substr, "g");  return str.match(reg) ? str.match(reg).length : 0;//若match返回不為null,則結果為true,輸出match返回的數組(["test","test"])的長度}console.log(countSubstr(str1, str2));//輸出2另外,對于變量的問題,不使用構造函數也可以解決,即使用eval():var reg = "/" + substr + "/g";reg = eval(reg);//不推薦!但還是有個問題,如果子字符串中含有正則表達式中所謂的元字符(即+*?^等),則無法正常匹配。但都知道不推薦使用eval()方法,所以還是推薦使用構造函數方法。因為此時正則表達式是在字符串里的,\是字符串中的轉義符,也是正則表達式中的轉義符。那么只加一個\的話,只能說明在字符串中轉義,而js需要進一步把普通字符串中的\變成正則表達式中的\,像是更深一則轉化的意思,稱為雙重轉義,這樣\\以后的意思是正則表達式中的轉義符(\)。所以對于那些元字符如果不進行雙重轉義,則無法真正查找要找的那個字符。這個問題尚未解決,不過一般字符串查找也很少有這些特殊字符吧,可以先一用。

  • 新手做網頁設計?這9款經典網頁布局設計了解下

    現在,越來越多的人想要建立自己的網站,通過自助建站系統就可以自己進行網頁制作了。這無疑是一件好事,但是,很多設計師,尤其是新手設計師或者壓根兒就不是設計師的小白,都在網頁設計上走過不少彎路。網頁制作最重要的就是網頁布局,先布局,后細節,只有在選擇了合適的網站布局以后,才可以順利的進行接下來的工作。你要問網站布局有哪些?今天,Mockplus為你精選了 9 款不同的經典網站布局設計案例,希望給你靈感。1.Diker Bau網站網站布局思路:精選圖片展示品牌標識Diker是一家位于德國柏林的建筑規劃集團。設計師突出了以精選圖來概述品牌標識的主要特征和屬性。精選圖被用作整個網站結構和架構的基礎。由于此布局中缺少其他元素,精選圖會引起用戶對產品的完全關注。如果你想設計一個可以快速銷售產品的網站,那么就可以使用這種布局。精選圖可以與訪客建立情感聯系,一張大而得體的照片或插圖會產生強烈的共鳴并創造出令人難忘的第一印象。當你只需展示一種產品或服務,并將用戶的全部注意力集中在其上時,此布局非常有用。訪問網站:https://www.behance.net/gallery/22105949/Diker-Bau...2. Chekhov網站布局思路:分屏布局該網站使用了分屏布局,這種布局可以同時展示兩個同等重要的內容信息。此外,設計師將兩種信息相互對立,創造出完美的對比,以吸引更多訪客的目光。分屏布局,再加上呼應的動畫,該網站創建出更加精致的體驗。如果你的網站需要提供兩種截然不同的用戶旅程變體,那么使用拆分屏幕的布局吧。但是要避免在拆分部分添加太多內容。如果內容過長過多,分屏設計不能很好地擴展,會影響體驗。因此,如果你需要在拆分部分提供大量文本或視覺信息,則不適合這種布局。訪問網站:https://chekhov.withgoogle.com/alive#home3. Timothee Roussilhe網站布局思路:視差滾動布局該網站是設計師Timothee Roussilhe的一個簡單而富有創意的簡歷網站。他增加了視差效果,為訪客提供更愉快和令人印象深刻的體驗。向下滾動時,會有很多個盒子移入和移出。令人驚奇的是,所有的盒子都增加了視差效果,你會覺得你正在看一場電影。摹客設計系統上線了!三大福利送不停!領取福利如果你想設計一個看起來很酷,富有創意和令人印象深刻的網站,那就添加一個視差效果。但是不要把它搞得一團糟,保持布局簡單并使用更干凈的配色方案。訪問網站:http://timroussilhe.com/4. Happiness Abscissa網站布局思路:側邊欄導航該網站使用了一個固定的側邊欄導航來顯示整個布局。導航無疑是任何網站的關鍵部分,主菜單是大多數用戶在導航時首先要查找的內容。除了頂部水平導航外,你還可以通過將菜單選項放在固定的側邊欄中來布局。側邊欄應該選擇頁面左側或右側的垂直列。對于此布局,側邊欄保持靜止并始終保持可見,而其余頁面隨著用戶向下滾動頁面而更改。還要確保這種導航具有可訪問性。此布局適用于導航選項數量相對有限的網站。當用戶進入頁面時,所有選項最好都在視線范圍內。側邊欄還可以包含菜單以外的內容,例如社交媒體鏈接,聯系信息或你希望訪問者輕松查找的任何內容。

  • 搭建memcached服務器

    Memcached簡介  在介紹Memcached之前,讓我們首先通過一個示例了解什么是服務端緩存。  相信大家都玩過一些網絡聯機游戲吧。在我那個年代(03年左右),這些游戲常常添加了對戰功能,并提供了天梯來顯示具有最優秀戰績的玩家以及當前玩家在天梯系統中的排名。這是游戲開發商所常常采用的一種聚攏玩家人氣的手段。而希望在游戲中證明自己的玩家則會由此激發斗志,進而花費更多時間來在天梯中取得更好的成績。  就天梯系統來說,其最主要的功能就是為玩家提供天梯排名的信息,而并不允許玩家對該系統中所記錄的數據作任何修改。這樣設定的結果就是,整個天梯系統的讀操作居多,而寫操作很少。反過來,由于一個游戲中的玩家可能有上千萬甚至上億人,而且在線人數常常達到上萬人,因此對天梯的訪問也會是非常頻繁的。這樣的話,即使每秒鐘只有10個人訪問天梯中的排名,對這上億個玩家的天梯排名進行讀取及排序也是一件非常消耗性能的事情。  一個自然而然的想法就是:在對天梯排名進行一次計算后,我們在服務端將該天梯排名緩存起來,并在其它玩家訪問的時候直接返回該緩存中所記錄的結果。而在一定時間段之后,如一個小時,我們再對緩存中的數據進行更新。這樣我們就不再需要每個小時執行成千上萬次的天梯排名計算了。  而這就是服務端緩存所提供的最重要功能。其既可以提高單個請求的響應速度,又可以降低服務層及數據庫層的壓力。除此之外,多個服務實例都可以讀取該服務端緩存所緩存的信息,因此我們也不再需要擔心這些數據在各個服務實例中都保存了一份進而需要彼此同步的問題,也即是提高了擴展性。  而Memcached就是一個使用了BSD許可的服務端緩存實現。但是與其它服務端緩存實現不同的是,其主要由兩部分組成:獨立運行的Memcached服務實例,以及用于訪問這些服務實例的客戶端。因此相較于普通服務端緩存實現中各個緩存都運行在服務實例之上的情況,Memcached服務實例則是在服務實例之外獨立運行的:  從上圖中可以看出,由于Memcached緩存實例是獨立于各個應用服務器實例運行的,因此應用服務實例可以訪問任意的緩存實例。而傳統的緩存則與特定的應用實例綁定,因此每個應用實例將只能訪問特定的緩存。這種綁定一方面會導致整個應用所能夠訪問的緩存容量變得很小,另一方面也可能導致不同的緩存實例中存在著冗余的數據,從而降低了緩存系統的整體效率。  在運行時,Memcached服務實例只需要消耗非常少的CPU資源,卻需要使用大量的內存。因此在決定如何組織您的服務端緩存結構之前,您首先需要搞清當前服務中各個服務實例的負載情況。如果一個服務器的CPU使用率非常高,卻存在著非常多的空余內存,那么我們就完全可以在其上運行一個Memcached實例。而如果當前服務中的所有服務實例都沒有過多的空余內存,那么我們就需要使用一系列獨立的服務實例來搭建服務端緩存。一個大型服務常常擁有上百個Memcached實例。而在這上百個Memcached實例中所存儲的數據則不盡相同。由于這種數據的異構性,我們需要在訪問由Memcached所記錄的信息之前決定在該服務端緩存系統中到底由哪個Memcached實例記錄了我們所想要訪問的數據:  如上圖所示,用戶需要通過一個Memcached客戶端來完成對緩存服務所記錄信息的訪問。該客戶端知道服務端緩存系統中所包含的所有Memcached服務實例。在需要訪問具有特定鍵值的數據時,該客戶端內部會根據所需要讀取的數據的鍵值,如“foo”,以及當前Memcached緩存服務的配置來計算相應的哈希值,以決定到底是哪個Memcached實例記錄了用戶所需要訪問的信息。在決定記錄了所需要信息的Memcached實例之后,Memcached客戶端將從配置中讀取該Memcached服務實例所在地址,并向該Memcached實例發送數據訪問請求,以從該Memcached實例中讀取具有鍵值“foo”的信息。在各個論壇的討論中,這被稱為是Memcached的兩階段哈希(Two-stage hash)。  而對數據的記錄也使用了類似的流程:假設用戶希望通過服務端緩存記錄數據“bar”,并為其指定鍵值“foo”。那么Memcached客戶端將首先對用戶所賦予的鍵值“foo”及當前服務端緩存所記錄的可用服務實例個數執行哈希計算,并根據哈希計算結果來決定存儲該數據的Memcached服務實例。接下來,客戶端就會向該實例發送請求,以在其中記錄具有鍵值“foo”的數據“bar”。  這樣做的好處則在于,每個Memcached服務實例都是獨立的,而彼此之間并沒有任何交互。在這種情況下,我們可以省略很多復雜的功能邏輯,如各個節點之間的數據同步以及結點之間消息的廣播等等。這種輕量級的架構可以簡化很多操作。如在一個節點失效的時候,我們僅僅需要使用一個新的Memcached節點替代老節點即可。而在對緩存進行擴容的時候,我們也只需要添加額外的服務并修改客戶端配置。  這些記錄在服務端緩存中的數據是全局可見的。也就是說,一旦在Memcached服務端緩存中成功添加了一條新的記錄,那么其它使用該緩存服務的應用實例將同樣可以訪問該記錄:  在Memcached中,每條記錄都由四部分組成:記錄的鍵,有效期,一系列可選的標記以及表示記錄內容的數據。由于記錄內容的數據中并不包含任何數據結構,因此我們在Memcached中所記錄的數據需要是經過序列化之后的表示。 內存管理  在使用緩存時,我們不得不考慮的一個問題就是如何對這些緩存數據的生存期進行管理。這其中包括如何使一個記錄在緩存中的數據過期,如何在緩存空間不夠時執行數據的替換等。因此在本節中,我們將對Memcached的內存管理機制進行介紹。  首先我們來看一看Memcached的內存管理模型。通常情況下,一個內存管理算法所最需要考慮的問題就是內存的碎片化(Fragmentation):在長時間地分配及回收之后,被系統所使用的內存將趨向于散落在不連續的空間中。這使得系統很難找到連續內存空間,一方面增大了內存分配失敗的概率,另一方面也使得內存分配工作變得更為復雜,降低了運行效率。  為了解決這個問題,Memcached使用了一種叫Slab的結構。在該分配算法中,內存將按照1MB的大小劃分為頁,而該頁內存則會繼續被分割為一系列具有相同大小的內存塊:  因此Memcached并不是直接根據需要記錄的數據的大小來直接分配相應大小的內存。在一條新的記錄到來時,Memcached會首先檢查該記錄的大小,并根據記錄的大小選擇記錄所需要存儲到的Slab類型。接下來,Memcached就會檢查其內部所包含的該類型Slab。如果這些Slab中有空余的塊,那么Memcached就會使用該塊記錄該條信息。如果已經沒有Slab擁有空閑的具有合適大小的塊,那么Memcached就會創建一個新的頁,并將該頁按照目標Slab的類型進行劃分。  一個需要考慮的特殊情況就是對記錄的更新。在對一個記錄進行更新的時候,記錄的大小可能會發生變化。在這種情況下,其所對應的Slab類型也可能會發生變化。因此在更新時,記錄在內存中的位置可能會發生變化。只不過從用戶的角度來說,這并不可見。  Memcached使用這種方式來分配內存的好處則在于,其可以降低由于記錄的多次讀寫而導致的碎片化。反過來,由于Memcached是根據記錄的大小選擇需要插入到的塊類型,因此為每個記錄所分配的塊的大小常常大于該記錄所實際需要的內存大小,進而造成了內存的浪費。當然,您可以通過Memcached的配置文件來指定各個塊的大小,從而盡可能地減少內存的浪費。  但是需要注意的是,由于默認情況下Memcached中每頁的大小為1MB,因此其單個塊最大為1MB。除此之外,Memcached還限制每個數據所對應的鍵的長度不能超過250個字節。  一般來說,Slab中各個塊的大小以及塊大小的遞增倍數可能會對記錄所載位置的選擇及內存利用率有很大的影響。例如在當前的實現下,各個Slab中塊的大小默認情況下是按照1.25倍的方式來遞增的。也就是說,在一個Memcached實例中,某種類型Slab所提供的塊的大小是80K,而提供稍大一點空間的Slab類型所提供的塊的大小就將是100K。如果現在我們需要插入一條81K的記錄,那么Memcached就會選擇具有100K塊大小的Slab,并嘗試找到一個具有空閑塊的Slab以存入該記錄。  同時您也需要注意到,我們使用的是100K塊大小的Slab來記錄具有81K大小的數據,因此記錄該數據所導致的內存浪費是19K,即19%的浪費。而在需要存儲的各條記錄的大小平均分布的情況下,這種內存浪費的幅度也在9%左右。該幅度實際上取決于我們剛剛提到的各個Slab中塊大小的遞增倍數。在Memcached的初始實現中,各個Slab塊的遞增倍數在默認情況下是2,而不是現在的1.25,從而導致了平均25%左右的內存浪費。而在今后的各個版本中,該遞增倍數可能還會發生變化,以優化Memcached的實際性能。  如果您一旦知道了您所需要緩存的數據的特征,如通常情況下數據的大小以及各個數據的差異幅度,那么您就可以根據這些數據的特征來設置上面所提到的各個參數。如果數據在通常情況下都比較小,那么我們就需要將最小塊的大小調整得小一些。如果數據的大小變動不是很大,那么我們可以將塊大小的遞增倍數設置得小一些,從而使得各個塊的大小盡量地貼近需要存儲的數據,以提高內存的利用率。  還有一個值得注意的事情就是,由于Memcached在計算到底哪個服務實例記錄了具有特定鍵的數據時并不會考慮用來組成緩存系統中各個服務器的差異性。如果每個服務器上只安裝了一個Memcached實例,那么各個Memcached實例所擁有的可用內存將存在著數倍的差異。但是由于各個實例被選中的概率基本相同,因此具有較大內存的Memcached實例將無法被充分利用。我們可以通過在具有較大內存的服務器上部署多個Memcached實例來解決這個問題:  例如上圖所展示的緩存系統是由兩個服務器組成。這兩個服務器中的內存大小并不相同。第一個服務器的內存大小為32G,而第二個服務器的內存大小僅僅有8G。為了能夠充分利用這兩個服務器的內存,我們在具有32G內存的服務器上部署了4個Memcached實例,而在只有8G內存的服務器上部署了1個Memcached實例。在這種情況下,32G內存服務器上的4個Memcached實例將總共得到4倍于8G服務器所得到的負載,從而充分地利用了32G內存服務器上的內存。  當然,由于緩存系統擁有有限的資源,因此其會在某一時刻被服務所產生的數據填滿。如果此時緩存系統再次接收到一個緩存數據的請求,那么它就會根據LRU(Least recently used)算法以及數據的過期時間來決定需要從緩存系統中移除的數據。而Memcached所使用的過期算法比較特殊,又被稱為延遲過期(Lazy expiration):當用戶從Memcached實例中讀取數據的時候,其將首先通過配置中所設置的過期時間來決定該數據是否過期。如果是,那么在下一次寫入數據卻沒有足夠空間的時候,Memcached會選擇該過期數據所在的內存塊作為新數據的目標地址。如果在寫入時沒有相應的記錄被標記為過期,那么LRU算法才被執行,從而找到最久沒有被使用的需要被替換的數據。  這里的LRU是在Slab范圍內的,而不是全局的。假設Memcached緩存系統中的最常用的數據都存儲在100K的塊中,而該系統中還存在著另外一種類型的Slab,其塊大小是300K,但是存在于其中的數據并不常用。當需要插入一條99K的數據而Memcached已經沒有足夠的內存再次分配一個Slab實例的時候,其并不會釋放具有300K塊大小的Slab,而是在100K塊大小的各個Slab中找到需要釋放的塊,并將新數據添加到該塊中。 高可用性  在企業級應用中,我們常常強調一個系統需要擁有高可用性和高可靠性。而對于一個組成而言,其需要能夠穩定地運行,并在出現異常的時候盡量使得異常的影響限制在某個特定的范圍內,而不會導致整個系統不能正常工作。而且在出現異常之后,該組成需要能較為容易地恢復到正常的工作狀態。  那么Memcached需要什么樣的高可用性呢?在講解這個問題之前,我們先來看看在一個大型服務中Memcached所組成的服務端緩存是什么樣的:  從上圖中可以看到,在一個大型服務中,由Memcached所組成的服務端緩存實際上是由非常多的Memcached實例組成的。在前面我們已經介紹過,Memcached實例實際上是完全獨立的,不存在Memcached實例之間的相互交互。因此在其中一個發生了故障的時候,其它的各個Memcached服務實例并不會受到影響。如果一個擁有了16個Memcached實例的服務端緩存系統中的一個Memcached實例發生了故障,那么整個系統將還有93.75%的緩存容量可以繼續工作。雖然緩存容量的減少會略微增加其后的各個服務實例的壓力,但是一個應用所經歷的負載波動常常比這個大得多,因此該服務應該還是能夠正常工作的。  而這也恰恰表明了Memcached所具有的獨立性的正確性。由于Memcached本身致力于創建一個高效而且簡單,卻具有較強擴展性的緩存組件,因此其并沒有強調數據的安全性。一旦其中的一個Memcached實例發生了故障,那么我們還可以從數據庫及服務端再次計算得到該數據,并將其記錄在其它可用的Memcached實例上。  我想您讀到這里一定會想:“不,還有一個問題,那就是由于Memcached實例的個數變化會導致哈希計算的結果發生變化,從而導致所有對數據的請求會導向到不正確的Memcached實例,使得由Memcached實例集群所提供的緩存服務全部失效,從而導致數據庫的壓力驟增。”  是的,這也是我曾經有所顧慮的地方。而且這不僅僅在服務端緩存失效的時候存在。只要服務端緩存中Memcached實例的數量發生了變化,那么該問題就會發生。  Memcached所使用的解決方法就是Consistent Hashing。在該算法的幫助下,Memcached實例數量的變化將只可能導致其中的一小部分鍵的哈希值發生改變。那該算法到底是怎么運行的呢?  首先請考慮一個圓,在該圓上分布了多個點,以表示整數0到1023。這些整數平均分布在整個圓上:  而在上圖中,我們則突出地顯示了6個藍點。這六個藍點基本上將該圓進行了六等分。而它們所對應的就是在當前Memcached緩存系統中所包含的三個Memcached實例m1,m2以及m3。好,接下來我們則對當前需要存儲的數據執行哈希計算,并找到該哈希結果900在該圓上所對應的點:  可以看到,該點在順時針距離上離表示0的那個藍點最近,因此這個具有哈希值900的數據將記錄在Memcached實例m1中。  如果其中的一個Memcached實例失效了,那么需要由該實例所記錄的數據將暫時失效,而其它實例所記錄的數據仍然還在:  從上圖中可以看到,在Memcached實例m1失效的情況下,值為900的數據將失效,而其它的值為112和750的數據將仍然記錄在Memcached實例m2及m3上。也就是說,一個節點的失效現在將只會導致一部分數據不再在緩存系統中存在,而并沒有導致其它實例上所記錄的數據的目標實例發生變化。  但是我們還不得不考慮另一個問題,那就是在一個服務的服務端緩存僅僅由一個或幾個Memcached實例組成的情況。在這種情況下,其中一個Memcached實例失效是較為致命的,因為數據庫以及服務器實例將接收到大量的需要進行復雜計算的請求,并將最終導致服務器實例和數據庫過載。因此在設計服務端緩存時,我們常常采取超出需求容量的方法來定義這些緩存。例如在服務實際需要5個Memcached結點時我們設計一個包含6個節點的服務端緩存系統,以增加整個系統的容錯能力。

  • 平時自己項目中用到的 CSS

    outline 移除當選中input元素的時候會出現狀態線div {    outline: none; //一般情況下移除它    // outline: 5px dotted red; 也可以設置樣式 }contenteditable 設置element是否可編輯<p contenteditable="true">可編輯</p>webkit-playsinline手機video 都可以在頁面中播放,而不是全屏播放了。<video src="test.mp4" webkit-playsinline="true"></videouser-select 禁止用戶選中文本div {    user-select: none; }css實現不換行、自動換行、強制換行//不換行 white-space:nowrap; //自動換行 word-wrap: break-word; word-break: normal; //強制換行 word-break:break-all;calc() function, 計算屬性值div {    width: calc(100% - 100px); }CSS3 filter Property 圖片過濾img {    filter: grayscale(100%); //灰度    filter: blur(5px); //模糊    filter:brightness(200%); //高亮    filter:saturate(8); //飽和    filter:sepia(100%); //懷舊    ...}使用css創建三角形div {    border-bottom: 10px solid white;    border-right: 10px solid transparent;    border-left: 10px solid transparent;    height: 0px;     width: 0px; }clip屬性,截取你想要顯示的圖片img {    position: absolute;    clip: rect(0px,60px,200px,0px); }

  • 搜索引擎的蜘蛛是如何爬的,如何吸引蜘蛛來抓取頁面

    搜索引擎的蜘蛛是如何爬的,如何吸引蜘蛛來抓取頁面搜索引擎的工作過程大體可以分成三個階段:       (1)爬行和抓取:搜索引擎蜘蛛通過跟蹤鏈接發現和訪問頁面,讀取頁面HTML代碼,存到數據庫。  (2)預處理:索引程序對抓取來的頁面數據進行文字提取、中文分詞、索引、倒排索引等處理,以備排名程序調用。  (3)排名:用戶輸入查詢詞(關鍵詞)后,排名程序調用索引數據,計算相關性,然后按一定格式生成搜索結果頁面。爬行和抓取是搜索引擎工作的第一步,完成數據收集的任務。搜索引擎用來抓取頁面的程序被稱為蜘蛛(spider)一個合格的SEOer,要想讓自己的更多頁面被收錄,就要想法設法吸引蜘蛛來抓取。蜘蛛抓取頁面有幾方面因素:       (1)網站和頁面的權重,質量高、時間長的網站一般被認為權重比較高,爬行深度也會比較高,被收錄的頁面也會更多。  (2)頁面的更新頻率,蜘蛛每次爬行都會把頁面數據儲存起來,如果第二次,第三次的抓取和第一次的一樣,說明沒有更新,久而久之,蜘蛛也就沒有必             要經常抓取你的頁面啦。如果內容經常更新,蜘蛛就會頻繁訪問頁面,來抓取新的頁面。  (3)導入鏈接,不管是內部鏈接還是外部鏈接,要想被蜘蛛抓取,就必須有導入鏈接進入頁面,否則蜘蛛就不會知道頁面的存在。  (4)與首頁的點擊距離,一般網站上權重最高的是首頁,大部分外部鏈接都會指向首頁,那么蜘蛛訪問最頻繁的頁面就是首頁,離首頁點擊距離越近,頁             面權重越高,被爬行的機會越大。如何吸引蜘蛛來抓取我們的頁面?  堅持有頻率的更新網站內容,最好是高質量的原創內容。  主動向搜索引擎提供我們的新頁面,讓蜘蛛更快的發現,如百度的鏈接提交、抓取診斷等。  搭建外部鏈接,可以和相關的網站做友情鏈接交換,可以去別的平臺發布高質量的文章指向自己的頁面,內容要相關。  制作網站地圖,每個網站都應該有一個sitemap,網站所有的頁面都在sitemap中,方便蜘蛛抓取。

  • 成長中的SEO,應該避免這12個過時的優化策略

    SEO在過去幾年里經歷了廣泛的變化及進化,并且每天都在進行著。雖然大多數傳統的營銷策略(在很大程度上)仍然適用于今天的數字營銷,SEO的變化已經大大改變了營銷環境。如果不是全部的話,這些變化中大部分都幫助改進了互聯網,尤其是改進了搜索。然而,一些人仍然堅持“老方法”,試圖使用過時的SEO實踐來提高他們品牌的有機搜索可見性和性能。幾年前有些策略奏效了,但現在已經不像以前那么有效了。然而,許多新人營銷人員/小企業主仍在使用這些“僵尸”SEO技術(這些策略本應消亡,但并非出于某些天大的原因)。它們不僅是無效的,而且下面12個過時的SEO實踐中的許多都對你的品牌、網站和其他數字財產的健康有潛在的危險。1. 濫用關鍵詞網站管理員和“營銷人員”有很多方式繼續誤解關鍵詞在一般SEO活動中的作用,以及如何在日常策略中使用它們。讓我們更細致地看看特定類型的關鍵詞濫用和管理不當,包括不相關的使用、特定關鍵詞密度的編寫以及關鍵詞填充。1)無關的關鍵詞定位/混淆搜索引擎優化新手常常試圖將他們的內容和信息限制在關鍵詞研究的范圍內(除此之外,別無他法)。這些“營銷人員”將對內容及其元數據進行塑造,以表示與之不相匹配的關鍵詞,也表示用戶搜索所針對的大量關鍵詞的適當意圖。這使得品牌在有機會與讀者交流真實信息之前,很可能就失去了讀者的注意力。如果營銷的關鍵詞與頁面上的內容不一致,這種脫節會阻礙內容的成功,即使內容質量很好。不要試圖誤導用戶,不要為了增加可見性而將用戶引向由大容量關鍵詞錯誤表示的內容。百度知道這是什么樣子,它可以真正定義為一個過時的SEO實踐(以及“黑帽”SEO技術,在許多情況下)。2)關鍵詞密度就像許多以關鍵詞為中心的營銷策略一樣,為特定的“關鍵詞密度”而寫作只是沒有達到目的。百度不再依賴于關鍵詞密度(或特定關鍵詞使用與整個頁面內容的比率)來確定網頁是否是回答搜索查詢的有效來源。它比簡單地爬取關鍵詞要好得多;像百度這樣的搜索引擎使用大量的信號來確定搜索結果。雖然關鍵詞對于它們所代表的主題和思想仍然很重要,但它們并不是高價值搜索查詢排名的“生命線”。內容的質量和消息傳遞的方式才是這方面的“生命線”。3)關鍵詞優化這可能是搜索引擎優化書籍中古老的把戲了。SEO是關于關鍵詞的,這個約定俗成的說法,對嗎?所以,用關鍵詞加載我們的網頁——尤其是我們在整個網站上積極定位的那些高價值關鍵詞——將有助于我們在搜索中獲得更高的排名,從而超越競爭對手? 搜索引擎很早就知道什么是關鍵詞填充,什么是不自然的文本組合。他們注意到這些是試圖操縱搜索結果,并將內容降級。是的,可能仍然有一些有價值的內容使用了簡單的關鍵詞填充,可能是有意或是無意為之,因為它對用戶的實際價值而言,所以沒有降級。說回到過去,站長想游戲系統會盡可能把每個關鍵詞的變化高價值的關鍵詞在網站頁腳,或者更粗略地說,使這些關鍵詞相同的顏色作為網站的背景,有效地把它們隱藏,而特定針對搜索引擎爬蟲進行填充。一些網站管理員也用鏈接嘗試過。(需要提醒的是,不要這樣做。)請記住,你是為人類而不是為搜索引擎寫作。2. 為機器人寫作重要的是要明白,不自然的寫作終歸是不自然的。搜索引擎也知道這一點。他們的信念是:為網絡寫作意味著,我們應該在每次提到一個主題時,都用它的正確名稱重復它,在這個詞的同義詞和近義詞版本中工作,以便“涵蓋所有的基礎”。當爬行時,搜索引擎爬蟲會看到關鍵詞重復出現,而且出現在幾個不同的版本中,從而使頁面在使用的關鍵詞變化方面排名靠前(一遍又一遍……一遍又一遍地反復使用這一SEO“技巧”)。當下,這一方式行不通了。搜索引擎是足夠先進的,能夠理解重復出現的關鍵詞、它們的變化,以及通常不好的內容所帶來的不利體驗。為人類而寫,而不是搜索引擎爬蟲或任何其他機器人。   

  • 百度搜索網頁標題規范:讓標題回歸標題本身

    對搜索用戶來說,標題是一個網頁最直觀的認知渠道和展現方式,也是吸引用戶點擊搜索結果進入落地頁的關鍵因素。 為了保障搜索用戶對所需資源的有效獲取,保證搜索結果的公平性,現百度搜索對外發布《百度搜索網頁標題規范》,希望在滿足用戶需求的同時,為站長帶來更多流量,實現共贏。1、標題的定義對網頁內容的 準確且簡明扼要 的描述。具體舉例:圖1-1 符合規范的標題示例網頁源代碼中的體現:圖1-2 符合規范的標題源碼示例2、標題的作用標題對于搜索用戶來說,能夠幫助用戶快速洞察網頁的內容以及該網頁與搜索需求的相關性。它通常是用來決定用戶點擊哪個結果的主要信息。所以,使用高質量的網頁標題對網站來說至關重要。3、 百度搜索網頁標題規范3. 1 標題的原則? 網站應確保該站點下的每個頁面都有指定的標題(如上文中“圖1-2 符合規范的標題源碼示例”所示),且同一站點的不同網頁應分別使用不同的標題;? 頁面標題應準確概括頁面內容,避免使用模糊和不相關的描述;? 頁面標題應簡明扼要,避免使用冗長的標題,避免關鍵詞堆砌;? 頁面標題的符號使用正確,建議參考百度建議的標題符號用法(詳細內容請參見本文“3.3. 2 標題的符號”部分)

  • 黑帽seo技術:利用軟件給同行刷SEO負面點擊有用嗎?

    隨著最近百度細雨算法的更新,很多站點都被降權或者被K,之前有個朋友問岑輝宇,利用軟件給同行刷惡意點擊,能否有用?相信很多做SEO優化的站長都有過這樣想法:當自己網站關鍵詞排名做不上的時候,是不是可以通過一些不正當的方法,把競爭對手排名拉下來?或者利用負面SEO方法讓搜索引擎誤判從而懲罰網站。注意,這里岑輝宇說的負面SEO與網絡SEO負面信息是完全不一樣。 首先刷點擊本身就是一種作弊行為,搜索引擎也嚴厲在打擊這塊點擊,比如百度驚雷算法,小編不建議大家這么做。但是隨著排名越來越難做,不排除有站長利用這點給競爭對手刷點擊或者做其他負面SEO,從而導致排名下降或K站。那么讓我們了解下負面SEO有哪些常見方法?常見負面SEO做法 1,黑帽SEO:如掛木馬,掛黑鏈,隱藏頁面,用JS跳轉到BC,灰色網站等,做Cloaking, 修改Robots,加noindex等等,需要專業黑帽SEO技術人員。 2,攻擊網站:DDOS攻擊,讓網站打不開。這個需要很大成本,一次攻擊是沒用,需要三天兩天經常打不開,這種要求對方舍得下成本。 3,重復內容:大量重復內容或者鏡像網站。 4,垃圾鏈接:給競爭對手制造大量垃圾鏈接和不自然的鏈接,如灰色詞。百度綠蘿算法就是打擊此鏈接。 5,404錯誤:制作大量404錯誤,鏈接到不存在的頁面,需要基數大。 6,垃圾轉向:大量垃圾域名或者被懲罰的域名轉向到目標網站。 7,刷點擊:也可以說是用戶體驗攻擊,跟SEO快排不一樣。可從百度統計工具,看網站點擊率,跳出率,展現量等。 以上七點都是常見負面SEO做法,都是會影響搜索引擎對網站的判斷,網站排名也會受到相應變化。為什么給競爭對手刷點擊,為什么排名反而越來越好呢? 首先要明白,為什么刷點擊的站點排名會波動?搜索引擎識別一個網站很簡單,舉個最簡單的例子就懂了,假設A站在首頁,此時的點擊是100個,然后百度給你調整到了第二頁或者第三頁,你的點擊還有80個或者50個,此時,搜索引擎就判斷你作弊,因為真實的點擊是不可能這樣的,然后第三天,或者第四天,排名就直接100后。正常的點擊應該是什么樣呢?首頁的時候一天點擊假設100個,百度給你波動,第二頁 或者第三頁,那么點擊這個時候可能只有5個或者10個了,然后未來一周到兩周的時間,如果還是這個,也許不需要一周。那么搜索引擎就自然給你重新放到首頁的位置。 第二,底子好的站,就容易穩定。為什么我網站長沙SEO不刷,排名也能穩定前三?先不考慮自然點擊。拼點擊同行不知道刷了多少,那是因為網站即使在前面了,岑輝宇也經常更新原創,外鏈底子也厚,綜合因素評分非常好。市面上很多網站刷點擊,搜索引擎認為你就是靠點擊提權,最后排名下降。底子好的站,你就算刷點擊,搜索引擎也認為是惡意點擊,會過濾掉。除非搞一些底子不好的就可以。 第三,那為什么有些網站也沒更新內容,為什么也不掉排名?因為假如一個網站已經穩定一年多了,百度會已經認死這個網站了。要知道全中國這么多刷點擊的,每天會多出起碼幾千萬甚至上億的點擊出來,相當于多了這么多用戶,事實上 百度的用戶哪有這么多,不干點擊干啥,你們自己算算一個站每天100個點擊,100w個 就是一天一億的流量,這一億流量并不是用戶,而是憑空刷出來的,這么大的流量百度服務器要多承受多少數據請求,只有底子同步綜合運用,效果才好,單純刷意義不大。 最后,小編強調一點,隨著搜索引擎的人工智能化以及AI技術的運用,百度不斷加強識別機制,經常點的ip和軟件的ip還是md5都是可以被記錄的。雖然刷點擊效果越來越差,但是還是有很多站長樂此不疲,出發點不同所要的結果也不一樣,不把自己網站做好,整天想著通過一些不正當的方法害別人,有什么意義呢?做SEO,且行且珍惜。

  • 網站跳出率太高怎么辦?SEO優化人員必知的解決方案

    為什么用戶進來迫切想要離開你的網站?因為你網站的內容并不是用戶所需要的,很多企業做優化做不好的原因就是這里,不懂得用戶想看什么樣的內容,通常都的主觀認為,什么“我感覺”、“我覺得”等詞匯經常出現在他們口中,我覺得用戶應該比較關系某某內容,我感覺用戶應該喜歡網站的頁面。如果要了解用戶,就需要利用用戶的搜索數據來進行分析,而不是主觀去猜測,主觀猜測只會讓網站跳出率越來越高,一般用戶搜索關鍵詞的數據是可以通過一系列工具查詢,例如百度指數,百度風云榜、下拉框、相關搜索等,在這里就不一一說明了。解決方法:多向一些專業的優化人員請教,不要固步自封井底之蛙,考慮問題圍繞用戶,從“我是做什么的”轉變為“用戶需要什么?我就做什么!”然后根據用戶的需求做有價值的內容,很多網站內容都是大量轉載的,或者就是整個頁面就一張大圖片,能傳遞給用戶的信息少之又少;又或者網站是建站公司做的,建站公司隨便亂添加內容,絲毫不考慮用戶的搜索需求,甚至企業管理員都沒人來管理網站,那這樣的網站跳出率不高才怪。a.首先先學會通過數據去分析用戶常常搜索哪些關鍵詞,整理并記錄下來。b.略微動腦思考一下,用戶搜索這些關鍵詞的目的是什么?想要尋找什么樣的參考內容?c.哪些用戶是精準客戶?哪些客戶是泛客戶?精準客戶搜索什么樣的關鍵詞?d.在了解用戶的需求后,將用戶喜歡的內容布局在什么樣的地方合適?只要考慮好以上四點,在根據用戶在頁面的一個點擊數據進行微調,就能解決用戶因為找不到有價值的參考內容而選擇跳出網站。

  • SEO一箭雙雕: 認清虛假高權重網站的套路!

    怎樣識別虛假高權重網站?  當你面對一個高權重網站,作為SEO專家而言,你一定會去站長工具查看一下相關SEO數據指標,具體包括:  1、網站權重  這里我們談到的權重,目前重點指的是百度權重,但這個百度權重和谷歌真實的PR還是有一定區別,雖然谷歌PR已經停止更新,但它是官方認可的權重。  而百度權重,并非是百度官方的定義,而是各大站長工具,基于關鍵詞搜索量與排名的一個預估權重,它只具有一定的參考價值。  2、外鏈結構  當你在站長工具查看確實是高權重站點,這個時候我們需要查看一下目標網站的外部鏈接情況,一個SEO標準化的網站,常規來講權重在5-6,甚至更高的站點一定包含大量,多元化的外部鏈接。  而且他的友情鏈接一定大部分來自高權重網站,如果你利用外鏈工具幾乎查詢不到它的外鏈信息,甚至主域的數量并不多,那么它很有可能處于作弊邊緣,你需要進一步的分析。  3、關鍵詞搜索量  如果你從事SEO行業一定的時間,并且有著一定的經驗,你會很清楚高權重站點,一般來講都是以大量長尾關鍵詞排名為主,當然行業大站有社會影響力的可能會存在大量品牌詞的搜索量,但對于中小站點,并不會有過高的搜索量。  如果你發現一個高權重站點,它的關鍵詞排名第一的指數,包含很多搜索量較高的詞,那么你可能需要注意,這些詞是否具有真實的搜索量,判斷的方法很簡單:  你只要到百度官方的百度指數去檢索這些關鍵詞,在搜索指數趨勢這一欄,你可以選擇查看:24h,7天,30天,90天,半年,全部的指數波動趨勢。  如果這部分關鍵詞,只是集中在某個時間節點出現高頻率,而在90天,半年,全部并沒有相關一定的指數波動,那么它很可能是利用真實用戶刷出來的。  那么,利用虛假高權重網站,做關鍵詞排名,與SEO培訓的套路流程是什么?  1、創建一定數量的原創文章,包含無競爭度的關鍵詞,并且盡量在搜索結果排名第一。  2、在一定時期內,利用真實用戶搜索這些目標關鍵詞,提升該關鍵詞的搜索量,并給予一定目標站點的點擊。  當然值得注意的是期間為了配合高權重站點內容,需要在目錄中生成大量內頁,做目標詞錨文本,用于推動核心關鍵詞的排名,具體來講就是首頁標題的關鍵詞。  3、當刷的關鍵詞有一定搜索量后,你會發現你的網站權重會大幅度提高,到達一定數值的時候,比如,權重5以上,會去主動交換真實高權重的友情鏈接。  4、注意重點來啦:由于垃圾內容原創頁面,幾乎沒有排名,而只有主頁是具有真實高權重鏈接推薦的,所以操盤手會配置真實需要排名的關鍵詞在主頁,用于提高排名,當然也可以合理的引導到高質量欄目頁,用于排名,獲取客戶流量。  然而,到這里你以為就結束了?那你就錯了,接下來還可以這么干:  5、尋找一位行業大咖,用于講述這個案例的操作流程,然后開始SEO培訓班,可謂是一箭雙雕。  總結:套路無處不在,SEO是一項系統工程,它涉及諸多細節,只有扎實的基本,通過大量的實戰案例,才能讓自己有一副火眼金睛。  

  • 淺析URL定向推廣對SEO的影響有多大

    我想URL重定向對于SEO人和站長朋友來說,再熟悉不過了,常用的301和不常用的302一起,成為了站長朋友們解決網站重大問題的重要工具之一。  那么,URL定向是個什么鬼呢?和URL重定向僅僅相差一個字的URL定向的誕生對于站長朋友和SEO人來說,是否是一個災難性的存在呢?  末日  前幾天,就有人在搜外討論,說百度SEM正在內測一款名為“URL定向”的推廣工具,簡單來說,其要展現的效果就是:可以直接購買相關的目標鏈接,在正常的、自然搜索結果上面進行展現。 和以往相比,SEM至少還是要寫創意,購買關鍵詞的,而今這種所謂的“URL定向”的推廣方式根本不需要競價專員燒腦的去寫各種創意,只消查看一下排在自然搜索首位的網址是哪個,復制過來粘貼上,展現出去,好了,剩下的就等著訪客上門吧!  SEM  這一消息對于SEO人來說,無疑是轟頂的五雷,如果一旦確認屬實的話,那對于SEO是一個算的上是一個末日或者是災難!  其實早前,還是搜外網,就傳出過所謂的“科哥倫布計劃”,聲稱百度搜索的展現會在自然結果中適當的穿插競價、甚至第一頁不再顯示SEO結果等等的消息,但到了現在絲毫沒有看到百度有這方面的大動作。  百度哥倫布計劃  不知道是受到了前幾天事件的影響,還是所謂“科哥倫布計劃”計劃本身就只是個謠傳。而今搜外再次傳出百度正在內測的“URL定向”的推廣,更是引起了站長圈子的轟動,甚至有站長朋友在QQ群里直接宣稱負責其公司的競價推廣客服也在向其征求是否需要購買這樣的一個推廣方式的意見。  之前我一直沒有將這個所謂的“URL定向”放在心上,也沒有去詳細的參研這個所謂的新型推廣方式的定義,只是偶爾的打開QQ群,看一看站長朋友們聲討百度的聲音,之后就關閉了干自己的事情去了。  網絡營銷與推廣  但這兩天朋友圈里,不少的站長朋友們紛紛發聲,不少的自媒體朋友也議論紛紛,也正好趕上今晚不知道寫點什么,于是正好參研一下這個新型的推廣方式,其實個人的理解,這種推廣方式基本屬于“我有錢,我就是大爺”的狀況了,因為你只要看到自然搜索結果中有競爭對手的網址,看著不爽果斷拿下來,這完全就相當于直接截流了有木有,相當于掉錢眼里了有木有!  鉆錢眼里了  這么變態的推廣方式也不知道是誰想出來的,但對于SEO人來說說絕對是一個災難,你辛辛苦苦優化了三個月的網站,好不容易到了首頁,人家分分鐘競價買下你的域名,然后你就變成了千年老二!  對于做網絡的人來說,或許都能認得出競價推廣和自然排名的不同,但對于普通的用戶來說,想要識別二者恐怕就比較困難了,本身就不怎么明顯的對比,再加上排在第一上,普通用戶怎么會知道排在最上面的其實是個李鬼呢?李逵在競價推廣的壓制下痛哭流涕,只因自己沒有那么多的紋銀可以打通關卡,只能眼睜睜的看著顧客被李鬼奪走,想要在自己的網站上寫個聲明什么的都不行,人家的網址和你一模一樣的有木有!  李逵和李鬼  從個人的角度來說,我想百度方面應該不會、或者說暫時不會將這樣的一款變態的推廣方式暴露出來,縱容有這樣的心思!原因如下:  1、百度推廣受到質疑的風波尚未平息,如此大動作只會更加揭開用戶的傷口,從此真的就各自路人了  2、如此變態的推廣實為冒天下之大不韙,除非百度可以將推廣排名和自然排名在展現方式上做一個超級明顯的區分,讓所有不是色盲的用戶都能看懂哪個是競價、哪個是自然排名!  3、如此做法勢必會引起廣大站長和SEO人的聯合抵制,如此導致的惡果可不是那么好平息的,畢竟有很大一部分站長和SEO人也是自媒體人,比如說我!  網站如何做百度SEO  其實對于百度推廣要出這樣的一個變態推廣方式,我一直持懷疑態度、甚至可以說是抵制的態度,因為我不相信我熱愛的百度會做出這樣的一個失敗的決策,但畢竟三人成虎,更何況網絡中也有文章力證此消息屬實,看的多了心態就開始有所轉變了。  心態如何改變  說實話我寧可相信這只是百度做的一個簡單的內測,內測之后就塵歸塵了、或者說是一個謠言,真的不希望這樣的結果變成現實,同時也希望諸位媒體朋友們保持一個清醒的頭腦,用一個辯證的眼光看問題,最好不要以謠傳謠、妄加評判,畢竟事情還沒有發生,到底是否是真的,自然有時間可以證明!

  • 最新百度PM告訴你SEO這六個方面的優化原則(干貨)

     大家對百度搜索引擎都有過很多研究,各種角度各個方面的挖掘都已經很細致深入了。那么從PM的角度來看,SEO優化有哪些建議呢,今天海瑤SEO小編重點講講這六個方面的優化:關鍵詞優化、URL命名優化、代碼優化、網頁優化、結構優化、圖片優化。  1. 關鍵詞優化  1)關鍵詞選擇策略:兩高一低: 高搜索量, 與頁面內容高相關, SEO競爭低。選擇搜索量高的詞也就是流量大的詞,與頁面的相關性高才能有好的用戶體驗,也才能更好的吸引蜘蛛爬行,而競爭低的詞則有利于排名展現。  2)關鍵詞優化指標: 遵循詞頻、密度、位置、表現形式 4 個指標。具體來看詞頻、密度,關鍵字密度=關鍵字頁面詞頻/頁面所有詞的詞頻和 ,密度處于6%~8%為最佳。位置: 關鍵字所處的位置也會決定其重要程度,自上而下,自左及右重要程度依次下降。表現形式: 關鍵字表現形式要注意字號、顏色、加粗、下劃線、斜體等。  2.URL命名優化  優化原則 :  1) 同一網頁只對應一個URL,多種形式的URL會分散網頁的權重。  2) URL要簡潔美觀,最好包括關鍵詞,讓客戶能從中判斷出網站內容。  3) 動態URL變量參數盡量少,為防止用戶輸錯地址而啟用的備用域名,用 301 跳轉到主域名。  3.代碼優化  1) 除去空白區域,一般而言,空白區域(空格,制表符,換行符等)都可以安全刪除,但要避免修改pre,textarea,及受css屬性中white-space影響的標簽。  2) 使用短格式的顏色表示,我們常常在用顏色的時候喜歡用 16 進制和全顏色名稱,認為這樣比較精確,但我們要盡可能根據實際情況使用短格式的顏色表示如:#ff0000,其實就是red。  3) 用短格式的字符表示。和最短顏色表示一樣,一些名稱可以用最短字符來表示,我們可以用較短的數字來代替某些冗長的字母。  4) 除去css中的空白區域。相比html來,css對于空白區域沒有那么敏感,所以除去空白區域可以極大地減少css文件和style樣式表的區域大小。  5) 除去css注釋,如同除去markup代碼中的注釋一樣,由于css的注釋對普通的最終用戶來說并沒有什么使用價值,應該除去。不過,如果考慮到較低級的瀏覽器,則css中style標簽中的屏蔽注釋信息不可以去除。使用短格式表示顏色,同上,不再重復。  6) 對css的規則進行合并,如: p{font-size:36pt; font-family:aral; line-height:48pt; font-weight:bold;} 可以這樣寫:p{font:bold 36pt/48pt arial;}  7) 完全不必在各個鏈接上寫target=“_blank”,只要在head中寫一句即可。  4.網頁優化  1)title是搜索引擎判斷“網頁-query”權值的最重要指標。每個網頁都應該有一個獨一無二的標題,切忌所有頁面都使用默認標題。同時標題中要包含網頁中最重要的內容。  2)Meta description是網頁內容的精煉概括,搜索引擎會把description當做摘要的首要目標之一。切忌所有網頁都用相同的description.同時描述介紹要合理,且要與網站內容相關,不可堆砌關鍵詞。  3) 不使用frame和iframe框架結構,通過iframe顯示的內容可能會被搜索引擎忽略。  4) Ajax等搜索引擎不能識別的技術,只用在需要用戶交互的地方,把不希望搜索引擎“看”到的導航及正文內容放到 Ajax中。  5)使用文字而不是flash、圖片、Javascript等來顯示重要的內容或鏈接,如果必須使用Flash制作網頁,建議同時制作一個供搜索引擎收錄的文字版,并在首頁使用文本鏈接指向文字版。  6)為每個頁面都加上導航欄,讓用戶可以方便的返回頻道、網站。  7) 不希望搜索引擎跟蹤的鏈接,可以增加nofollow. 或在robots.txt(使用指南)中進行統一屏蔽。  5. 網站結構優化  1)網站結構要簡潔明了,不可太復雜。要有明晰的導航和層次結構,可以是首頁-頻道-文章頁的樹型結構(如下圖樣例),也可以是扁平結構。 樹型網站結構示例  2)網站上重要的網頁,應該能從網站比較淺層的位置訪問到。  3)確保每個頁面至少可以通過一個文本鏈接達到。為每個頁面都加個導航欄,讓用戶可以方便的返回上一級頁面和首頁。  6. 圖片優化  1)很多人習慣用數字來命名圖片,以方便記憶和整理。但從SEO的角度最好使用和關鍵詞相關的文字來命名圖片。這樣有助于搜索引擎判斷一個圖片的內容。  2)為每一張圖片加alt標簽。圖片alt標簽決定了圖片的排名位置,是搜索引擎判斷圖片內容的重要依據。而且,alt標簽的文本內容在圖片無法讀取時得以顯現。所以建議為每一張圖片加上alt標簽,標簽的寫法上要包含關鍵詞同時自然的描述圖片內容。  3)圖片前后的文本內容也是搜索引擎考量網頁內容的一部分,所以圖片前后的文本優化也是SEO的一部分。  4)最后圖片盡量本地化,這樣能保證不會因為鏈接而分走權重,忌使用網絡上的圖片。

  • 百度中文分詞技術如何在SEO中靈活運用?

    SEO優化過程中寫文章應該注意:一篇文章一般在500-800個字,一個長尾詞一般在8個字,最好在文章的第一段里出現,出現次數3-6次,超過6次會被搜索引擎K掉,這是今天的干貨。百度是如何來分詞的呢?分詞技術現今非常成熟了。第一:字符串匹配的分詞方法(1)正向最大匹配法就是把一個詞從左至右來分詞。舉個例子:”不知道你在說什么”這句話采用正向最大匹配法是如何分的呢?“不知道,你,在,說什么”。(2)反向最大匹配法“不知道你在說什么”反向最大匹配法來分上面這段是如何分的。“不,知道,你在,說,什么”,這個就分的比較多了,反向最大匹配法就是從右至左。(3)就是最短路徑分詞法。就是說一段話里面要求切出的詞數是最少的。“不知道你在說什么”最短路徑分詞法就是指,把上面那句話分成的詞要是最少的。“不知道,你在,說什么”,這就是最短路徑分詞法,分出來就只有3個詞了。(4)雙向最大匹配法。而有一種特殊的情況,就是關健詞前后組合內容被認為粘性相差不大,而搜索結果中也同時包含這兩組詞的話,百度會進行正反向同時進行分詞匹配。第二:詞義分詞法就是一種機器語音判斷的分詞方法。很簡單,進行句法、語義分析,利用句法信息和語義信息來處理歧義現象來分詞,這種分詞方法,現在還不成熟,處在測試階段第三:統計分詞法根據詞組的統計,就會發現兩個相鄰的字出現的頻率最多,那么這個詞就很重要。就可以作為用戶提供字符串中的分隔符,這樣來分詞。比如,“我的,你的,許多的,這里,這一,那里”等等,這些詞出現的比較多,就從這些詞里面分開來。如果一天寫10篇文章,一年就可以寫3650篇文章,給你的網站寫3650個關鍵詞并合理布局到你網站中,可以使用關鍵詞挖掘工具提詞,根據用戶需求進行關鍵詞的篩選,吸引流量指日可待。分詞還有一種好處,那就是提升內頁的排名。SEO是心理學,去猜想用戶使用什么詞搜索,從而進行非常有意思的工作。

  • 移動網站SEO優化策略和優化過程注意的細節問題

    很多站長都在糾結移動網站SEO如何做,怎么樣才能把移動端網站關鍵詞優化到首頁。其實,站長們無需過多擔心,其實PC端網站跟移動站點還是有很多互通。下面,我們重點說說移動站點SEO優化策略,以及移動端站點優化過程中主要哪些細節問題。  1、移動站點和PC端站點做好移動適配  對于移動站點優化而言,其實只是在百度移動端做優化,這就需要PC端和移動端做好適配。曾經百度移動工程師說過,百度移動端會優先針對移動端站點進行排序,故而,單獨做移動站點相比PC端站點更具有優勢。  站長們就需要做好移動端適配,把用戶在移動端訪問網站的時候,自主跳轉到移動版站點。現在,百度站長站長平臺已經開通移動端和PC端之間的適配。站長們只需要按照百度站長提供的方法進行一一對應就可以。  2、PC端和移動端之間TDK屬性差別  PC端網站展現出來的內容要遠遠多余移動站展示內容。因此,移動端就需要做出精準和簡潔。移動端SEO優化,就需要參考百度移動搜索規范來進行,而不是照搬PC端。移動端和PC端TDK主要變現在字符上面。百度移動搜索結果頁面中展現出的Title,若超過24個會被截斷,建議最好不要超過17個中文漢字。  3、網站鏈接結構  對于移動站點來說,更加看重網站良好的鏈接結構。良好的鏈接結構,不僅僅包括網站導航和用戶體驗,更重要就是要給用戶查看內容的便捷性。還有就是讓蜘蛛更容易進行抓取和爬行。在鏈接層次結構上面,建議鏈接層次不要超過2層結構。  而且,網站建設在網站鏈接URL使用簡短的靜態鏈接方式,有利于搜索引擎更有效的抓取和判斷網頁。  4、多利用站長平臺工具診斷網站問題  目前,包括國內的百度、360、搜狗,以及國外的谷歌都免費提供站長平臺。涉及到網站問題,站長平臺都會診斷出網站問題所在。因此,我們就需要合理和充分利用站長工具進行網站診斷,這樣來保證網站良好的優化效果。比如:移動適配,可直接提交適配關系,加快搜索引擎的識別和判斷能力。  5、URL鏈接301跳轉  百度已經嚴格說明,PC端301不適用于移動端,包括robots等這些屏蔽蜘蛛措施。因此,我們在移動端就需要做好URL鏈接301跳轉和利用robots文件封禁spider抓取等。  百度移動搜索適配不僅僅是做好URL鏈接的031跳轉,同時也需要對其內容結構上的調整與布局,因為PC端內容布局和移動端內容布局上有所差異。

  • 怎么提煉與優化關鍵詞,讓您的SEO效果翻倍

    在進行搜索營銷時,如何提高與優化網站的關鍵詞將對營銷起到重要的作用。那么,關鍵詞究竟有多重要呢?小編舉例來說,我們在百度里查找相關信息的時候,通常會在百度中輸入一些關鍵的詞語,搜索引擎會根據這些關鍵詞在數據庫中進行搜尋,如果找到與這些關鍵詞內容相符的網頁,就會采用一種特殊的算法----根據網頁中關鍵詞的匹配程度、出現的位置與頻次、鏈接質量等,計算出各網頁的相關度及排名等級,然后根據關聯度高低,按照順序將這些網頁鏈接呈現給用戶。由此可見,懂得提煉與優化關鍵詞的技巧,能夠有效地提升網頁在搜索引擎中的排名。接下來小編來介紹幾種行之有效的提煉與優化關鍵詞的方法:1、選好網站關鍵詞我們在進行SEO時,首先要為網站選好關鍵詞,增強營銷的精準性。關鍵詞的數量不宜太多,一般主要選取3個為益,以“網絡營銷”為例,如果我們要從事的業務主要是“網絡營銷”,那么,在選取關鍵詞時,除了“網絡營銷”這個關堅持,還可以選擇“網上營銷”、“互聯網營銷”作為關鍵詞,這樣,用戶只要在搜索引擎中輸入這些關鍵詞,搜索引擎在數據庫中查找結束時,會由于我們的關鍵詞設置與用戶需求比較匹配,會加大將我們的網頁信息提供給用戶的概率。2、要在URL中出現關鍵詞URL譯為統一資源定位器,也被稱為網頁地址,是因特網上標準的資源地址。通常來說,在確定好一個網站的定位后,域名就可以使用這個行業關鍵詞的雙拼或者英文單詞,這一般是比較理想的狀態。我們仍以百度為例,它的域名中,“baidu”就是百度的全拼,不僅便于上網用戶記憶,也便于搜索引擎收錄,有利于提高在搜索引擎中的關聯度排名。3、在網頁的內文中植入關鍵詞網頁的內文就是網頁要呈現給用戶的具體內容,它可以是產品信息,也可以是博客文章。在這里,有一個經典的法則是“內容為王鏈為皇”,也就是說,如果網站沒有優質內容,那么網站本身就已經失敗,更無從談優化網站,因為所有的優化推廣只是將用戶吸引到網站的頁面上來,至于用戶的體驗如何,還是要看網站內文的質量。4、在網頁摘要中植入關鍵詞搜索引擎展示給用戶的搜索結果時,首先會顯示網頁的標題,這再次說明了小編前面所強調的在網頁標題中植入關鍵詞的重要性,其次,在網頁標題下回顯示50···70字的網頁摘要,也可以是某篇文章的摘要。一般情況下,用戶看完標題后會習慣性的去看網站的摘要,假如在網站摘要里植入關鍵詞,而且內容設計得也吸引人,那網站的點擊率就會提升,進而提升網站在搜索引擎中的排名。5、巧妙運用現有關鍵詞,必要時自創關鍵詞所謂現有關鍵詞,就是那些在搜索引擎中被普遍使用的關鍵詞。需要注意的是,關鍵詞并非越熱越好,因為熱刺意味著使用者太多、競爭力大,所以根據實際情況選擇一些比較弱的詞來做,這樣所面臨的競爭力就會小。另外,盡量避免選擇那些覆蓋面過大的關鍵詞,因為那會增加優化難度,小編推薦使用“百度指數”,來查詢關鍵詞的冷熱度。

  • 網站優化進入前3名的關鍵詞如何穩住排名

    經過一段時間的努力,我們已經成功的將網站關鍵詞的排名優化到了前20位,這是SEO優化過程中極其重要的一步,標志著我們的優化方法已經得到了搜索引擎的認可,這個時候的網站會面臨兩種結果,如果網站內容足夠吸引人、關鍵詞競爭性不是很強的情況下會直接進入到前三位,還有一種情況是網站徘徊在10-13位停滯不前,這次我們首先來分析第一種情況,后面的情況比較特殊我們放到后面做單獨的分析。如果網站在進入20位幾天之后直接進入前三位,那么說明網站已經得到了搜索引擎和用戶的基本肯定,如果網站第一次進入前三位會有一個不穩定期,這個不穩定是因為關鍵詞搜索的70%流量都幾種在前三位,一個新的網站一旦進入這個排名便會有大量的用戶點擊進來,這樣的點擊會加速搜索引擎對于網站價值的判斷,如果用戶點擊進入網站后沒有再返回到搜索引擎尋求其他搜索結果說明我們的網站價值很高,幫助用戶找到了搜索關鍵詞需求的信息,如果用戶在進入網站后又返回搜索引擎說明網站沒有提供關于該關鍵詞有價值的信息,這是一個非常危險的信號。  網站進入前三位后外鏈等都可以暫時停止一下,務必把重點放在內容的建設方面,哪怕是將文章的發布數量降低一倍都無所謂,關鍵是文章要有可讀性,要能提供用戶的需求,這一步將是SEO需要跨越的至關一步,如果失敗會導致前面的努力都付之東流。  如果說之前的SEO優化工作都是技術性的操作,那么從現在開始我們就要轉變為一名文章編輯,要想發布的文章是有價值的就需要提前分析關鍵詞背后的需求。因此我們在編輯文章的時候就要將圍繞這些信息展開,這樣當用戶通過搜索引擎進入網站的時候看到這些信息點就會停留并且閱讀。認為SEO絕非單純的技術這樣簡單,這也是說為什么某些行業的SEOER去做其他行業的SEO很多時候非常吃力的原因,重要的原因是不了解這個行業,這是非常重要的一點。  所以說開始SEO優化之前我們一定要分析隱藏在關鍵詞背后的需求,只要了解了這些需求才能懂得用戶在搜索這些關鍵詞的時候想要得到什么?滿足的這些的需求自然會讓網站變得有價值,這個價值會讓網站長期的立于不敗之地。

  • 單頁面網站如何做seo關鍵詞優化

    對于絕大部分SEOer來說,優化多頁面的網站比優化單頁面網站簡單,因為單頁面網站內容比較固定和簡單,站內錨文本更是無從談起,這些無疑增加了優化的難度。  其實單頁面網站經常用于產品的廣告宣傳,雖然對于絕大部分企業來說,為了增加網站的美觀性和功能性,或者為了便于做搜索引擎營銷推廣,會使用多頁面網站。但是對于一些中小型企業,為了省錢或者說覺得網站沒有多少存在的必要性,亦或者說是為了便于用戶瀏覽,會選擇使用單頁面網站。  不可否認,單頁面網站在SEM推廣中,是不建議使用的,頁面過于簡單單一,造成用戶體驗不好,而且跳出率100%,不利于進行分析優化。同樣的,在SEO優化中,單頁面網站優化也存在著很多弊端。  首先,單頁面獲取流量難度大。一個網站的流量組成是由大量的內容頁面貢獻而來,而單頁面網站無法布局太多的長尾關鍵詞,所以勢必會浪費大量的流量。  其次,無法進行站內優化操作。做SEO優化的都知道,內容和外鏈在網站優化的重要性,素來都有“內容為王,外鏈為皇”之說。所以對單頁面來說,已經缺少了內容為王這一項。  再次是關鍵詞布局難度大。單頁面網站想要布局大量關鍵詞,容易被搜索引擎判定為關鍵詞堆砌,從而造成網站優化過度。  最后是跳出率問題。單頁面網站的跳出率是100%,隨著搜索引擎算法的調整,用戶行為參與進算法所占的比重越來越大,跳出率高的網站從側面反映出用戶對網站內容的不認可,那么在排名算法上,單頁面網站是無法獲取這部分的加權的。 那么單頁面網站真的一無是處嗎?答案肯定是否定的,相反的,單頁面網站的SEO優化,可能比多頁面網站更占有優勢,為什么呢?  1、單頁面網站有利于增加權重  單頁面網站只有一個頁面,所以我們所有的內容以及建立的鏈接都是基于這個頁面而產生的,所有的反向鏈接都指向同一頁面、同一域名,這就賦予了網站很高的權重。  2、有利于網站的相關性  單頁面網站的所有內容都放在同一頁面下,頁面內容很充實,關鍵詞的相關性也隨之提高。對于搜索引擎來說,頁面內容與關鍵詞是否具有相關性是極其重要的,所以單頁面網站優化是十分有必要的。  3、有利于搜索引擎爬行  單頁面網站的結構比較簡單,在一定程度上為搜索引擎的爬取工作減輕了負擔,有了搜索引擎的抓取就可以為進一步的優化工作打下基礎。  了解了單頁面的利與弊,那么如何對單頁面網站進行優化呢?  1、定義區域性內容  針對單頁面網站,我們可以先將頁面劃分為幾個特定的區域,將每一個區域作為一個單獨的頁面來優化。為每一個區域選擇關鍵詞、定義內容、設置各種標簽等。當然要切記每個區域的關鍵詞都應具有相關性。  2、使用DIV分割區域  將每一個區域用DIV分割開來,這樣能夠使得網頁的結構更加清晰。  3、設置錨鏈接  搜索引擎都非常喜歡錨鏈接,與錨文本不同,錨鏈接能夠將用戶帶入同一頁面的特定區域。在單頁面網站優化中,在每個區域設置特定的錨鏈接,正確為用戶導航,方便用戶在同一頁面內找尋目標信息。  4、為每一個區域設置H1 標簽  通常情況下,一個頁面最多設置一個H1 標簽,但是單頁面網站因為其獨特性,跟一般的網站不同。在單頁面網站的每個區域設置一個H1 標簽有利于突出頁面結構,有助于搜索引擎明白網站架構。但是切記每個區域設置一個H1 標簽即可,不可頻繁使用。  5、避免全是圖片展示  很多企業使用單頁面網站,希望展示給用戶一種酷炫或者簡單的效果,所以網站里面添加很多圖片,但是這卻造成了網站文字內容太少,不利于搜索引擎對網站的抓取和索引。  6、高質量的網站內容  作為單頁面網站,將用戶關注的需求點盡可能的完整的展示出來,是十分有必要的,所以這就需要高質量的網站內容,通過不同的區域展示相關的內容介紹,提高用戶體驗。  無論是哪類型的網站,SEO優化都是必不可少的,只是不同類型的網站有不同的優化方式,選擇了對的優化方式,網站優化也是手到擒來。

  • 簡析網站每天進行原創內容更新卻還遭到降權的幾點原因

    網站SEO優化理論中,內容為王已經得到了站長們的共識,可是,最近一位朋友在群里抱怨說,自己的網站天天堅持原創內容更新,昨天天排名第二,今天一下降到十五名了,這就是國內的搜索引擎,順我者生,逆我者亡……這位站長朋友發自內心的,甚至有幾分失態的話語,固然是對搜索引擎的無奈,同時,他在話語中這樣說,每天堅持原創更新就等于排名第一,這樣的理論占到住腳嗎?  談到原創內容,包括兩個方面,一種是寫給搜素引擎的原創內容,只要網站每天有內容更新,而且這個內容在搜索引擎認為是唯一的,那就會判斷是原創內容,另一種則是給用戶看的原創內容,這樣的內容可以通過網站用戶的停留時間做出判斷,因為一個用戶在一個網站停留的時間越長,跳出率越少,證明這個網站的內容對用戶是有用的。  顯然,做好原創內容,也需要好好修煉一番。簡單的找一些文章,隨便改一下,或者找一些專業性的文章,根本就不是給“普通大眾”看的文章,也算是原創,這樣的更新很簡單。復雜的呢,則需要用心去寫,然后文章中要加入相關關鍵詞,要有可讀性,最少保證文章順暢。再高一層呢?文章則需要帶入情感,而且做好站內鏈接,文章不僅發布到網站上,在外站發布也能拿的出手……  登陸這位站長的網站,查看他每日更新的文章,原創屬于簡單那一類,就是找一些專業性的文章,每天進行更新,也許這樣文章只有需要的人才能夠看明白,反正我是看不懂,隨便找了幾個文章的標題,百度一下,幾乎沒有收錄,顯然,這位站長如此的原創,值得贊揚的就是強大的執行力,每天都更新,每天都在堅持。  因為你做的不夠好,一旦你的競爭對手開始發力,找到你的缺點,開始攻擊“軟肋”,比如在原創這一塊,做復雜的哪一種,每篇文章加入關鍵詞,而且文章具有可讀性……接著又有更強的競爭對手出現,每天文章都做了鏈接,而且還發到的站外……那么,你的天天更新原創文章就像讓網站排名靠前,以前是競爭對手太少,所以可以,而現在,一旦競爭對手多了,顯然這種網站優化方式已經落伍了!  更讓人糾結的是,“內容為王,外鏈為皇”的理論固然依舊有效,但是,針對的是草根站長而言,因為對于草根站長的網站來說,網站一般是一個人打理,站長負責的事情相當繁瑣,又分身無術的前提下,如何保證網站排名,做好內容和外鏈是基本功。如今互聯網已經發生翻天覆地的變化,很多有實力的傳統企業也開啟了網站運營推廣,和草根站長單打獨斗比較,他們更喜歡團隊作戰。  于是,網站優化已經成復雜化趨勢發展,比如網站建設、推廣需要文案、網站建設需要美工、需要運營推廣人員、需要分工,三個臭皮匠頂一個諸葛亮,就算個人能力再強,在團隊面前,還是處于弱勢地位。唯一的優勢就是起步較早,但是,如果不做大做強,很容易就會被競爭對手碾壓,這只是時間早晚的事情。  如今,網站運營已經不是一個人就能搞定的事情,一招鮮吃天下的時代已經過去,哪些利用“黑帽SEO”的時代隨著搜索引擎算法的不斷成熟,已經越來越沒有市場了,而唯一堅持可行的,就是用一套標準的網站推廣方式、科學的數據研究、并且是團隊作戰,當然,這需要充足的成本保障。如此,優化的網站才能穩扎穩打一步一步超越對手,逐漸排名靠前,也不會擔心網站會被降權,排名瞬間下去。

  • 網站權重怎么優化?簡析在短期間內將網站權重優化到2的方法

    俗話說,萬事開頭難。對于一個網站運營新手來說,開拓網站優化之旅,用對了方法,那么可能一直順利走下去。如果用錯了方法,也無關緊要,畢竟剛剛上手,怎么也得有試錯的時間是吧!不管怎么說,網站從權重1到權重2是一個開始,其意義不僅僅是數字的變化,更是對網站優化過程一個開端。也許網站權重到4是怎么上去的不會過于關心,而對于第一次升級,則印象深刻。 網站優化方式很多,比如站內優化、內容建設、外鏈建設、友情鏈接等等。對于新手來說,好像感覺哪個方法都不錯,哪個方法都想試一試,如果你抱著這樣的想法優化網站,樣樣嘗試,樣樣稀松,結果,有可能把網站玩壞了了!  網站優化到權重2,不需要各種優化方式的組合,只要選對一樣就可以了。今天就和大家分享一個方法,那就是交換鏈接。網站交換鏈接,也稱為友情鏈接、互惠鏈接、互換鏈接等,是具有一定資源互補優勢的網站之間的簡單合作形式,即分別在自己的網站上放置對方網站的LOGO或網站名稱,并設置對方網站的超級鏈接,使得用戶可以從合作網站中發現自己的網站,達到互相推廣的目的。  網站交換鏈接的方式有很多,尋找的渠道也是多種多樣,以企業網站為例,可以利用線下資源,也可以和同行之間交換鏈接,如果這些用完了,還可以利用互聯網一些資源,比如如今廣告成災的QQ群,里有大量的行業群、友鏈交換群、站長群,在這里精準又高效的達到你的目的。  當然,一個網站的友情鏈接不是無限的越多越好,而且在做友情鏈接的時候,也不是啥好友都鏈接,這樣不僅不利于網站優化,反而會“害了”網站。所以做友情鏈接要注意這幾點:交換同行業效果最為佳;網站的PR和權重一定比我們稍微好或者跟我們差不多,不能交換比我們差或者被百度降權或者K站的,會拖累我們網站;交換友鏈的網站的百度快照日期越新越好;對方網站的收錄和反連越多越好;一天不要交換太多,幾個即可;就算對方PR和權重最高,如果對方的友鏈有幾百個也不建議換,因為分給我們網站的流量會很少……  網站交換鏈接在網站初期優化不僅能夠很快讓網站權重升級,也是網站從線下到線上的一個過渡過程,比如說,尋找同行或者客戶的網站做友情鏈接,這些都是以前積累的經驗,而通過QQ群或者其他網絡渠道做的鏈接,則是對新事物的探索。  一方面利用資源,另一方面又開拓新的資源,就好比朋友圈做微商,前期利用朋友圈做微商,后期想把微商做大,就得跳出朋友圈的界限。那么,網站做友情連接的過程,先和熟悉的人,熟悉的行業進行交流、研究,認真的聽取他們的意見,然后根據自己的領悟,去探索新的網絡資源,這樣才能不斷讓網站優化工作變得熟練起來。  網站權重優化到2的時候,對互聯網的營銷手段有了一個大概了解,這才算是最重要的,也為網站繼續“升級”,為以后復雜多種方式組合優化打下堅實的基礎。畢竟,一個網站想要快速發展,懂得越多,做的越快,才能迅速見到效果!

  • 網頁標題是一成不變的嗎 如果修改了會影響到網站排名嗎

     談到網站優化,有的網站在優化一定程度的時候,通常有一種無力感,就是再怎么努力,也很難超越競爭對手,這個時候,是咬緊牙關繼續緊跟,還是推倒了重新再來。有時候放棄是一種不得已的選擇,而對于網站優化來說,因為互聯網變化快,調整網站營銷推廣策略,并非不是一件好事。談到網站的優化,很少人會對網頁標題動心思,一方面,在網站建設階段,基本上就把網頁標題做好了,而且網頁標題就像給自己制定的戰略目標,改動標題則是一種失敗的表現,另一方面,修改網頁標題,在SEO優化過程中,是不是會讓搜索引擎感到“不舒服”,甚至會判斷網站存在“作弊”行為,從而導致網站被降權的可能呢?正是因為這些考慮,讓站長在網頁標題上的改動特別慎重,甚至是不到萬不得已堅決不修改網頁標題。  大家知道,在瀏覽一個網頁時,通過瀏覽器頂端的藍色顯示條出現的信息就是“網頁標題”。網頁標題是對一個網頁的高度概括,一般來說,網站首頁的標題就是網站的正式名稱。很多網站的首頁標題較長,除了網站名稱(公司名稱)之外,還有網站相關業務之類的關鍵詞,這主要是為了在搜索引擎檢索結果中獲得排名優勢而考慮的,也屬于正常的搜索引擎優化方法。  我們通常再搜索引擎看到對網站的描述主要有這三個個部分:網站標題、網站關鍵詞、網站描述。在搜索引擎上如果網站被收錄,通常也會顯示這三方面的內容。網頁標題代表的網站的名稱,而其他關鍵詞和網站描述都是圍繞標題進行擴展的,一般情況下,一個不知名的網站在網頁標題描述上,除了品牌名字之外,還要加上一大堆關鍵詞,因為,你的品牌知名度很小,只有通過目標關鍵詞獲得用戶關注,關鍵詞的熱度大于企業品牌的時候,網頁標題上加上一大堆關鍵詞,顯然是不可或缺的。  關鍵詞并不是想象中那么好,而且因為對競爭對手估計不足,一些熱詞幾乎根本就做不上去,這個時候,就要想著用其他的詞獲得流量了,修改網頁標題雖然犯了兵家的大忌,可是,在網站優化發展到瓶頸階段的時候,這又是一個可行的方式之一。  以企業網站為例,在線下,可能以某種產品為主打,而到了互聯網,這個主打產品銷售疲軟,反而另一個產品獲得不菲的關注度,同時,企業生產的產品也是有周期性的,那么,在網站標題的描述上,就可能存在變動。  基于以上兩個原因,為了網站發展,為了有利于網站優化,網頁標題的修改是一件不可避免的事情,那么,修改后的網頁標題怎樣才能不會受到波動呢?  如果網站是新站的話,建議不要修改標題,先保持一段時間,新站建議不要刻意拉排名。  如果網站運營有一定的時間,超過2年以上,修改一次標題并不會造成什么影響,但是也不要頻繁改來改去。  如果你確實修改改標題,請找個不要跟原標題差距太多的。網站修改標題,前提是對原有網站的優化,而不是網站要“改頭換面”。  如果你碰到了最不幸的情況,就是修改標題導致排名下降,那請你不要灰心,只要搜索引擎重新收錄,考核一段時間,還是會恢復過來了。seo心態是很重要的。  有一些站長朋友,還是對網站修改標題感到忐忑,那么,不妨在做標題修改的時候,做一些補救措施,比如說,在網站修改標題后,加大網站內容更新力度,加大網站外鏈發布頻率,如果修改標題的跨度比較大的話,那么現有的關鍵詞和要改的主關鍵詞刷相關性,那么搜索引擎就會判斷你修改的幅度不是特別大,會大大的縮短識別網站的時間。  顯然,網站優化要善于靈活運用,不要過于固守,而當通過一些改動,或許會在網站運營困難的時候起到峰回路轉的效果,當然,也不能過于盲動,因為很多站長在修改網頁標題的時候,都會有一些擔心,那么,把想到的一一羅列出來,找好對策,然后再去執行,這樣的網站運營策略應該不會犯太大的錯誤!

  • SEO如何布局長尾關鍵詞 SEO長尾關鍵詞布局思路簡析

    長尾關鍵詞布局非常重要,因為涉及到網站后期優化效果。布局長尾詞的第一點是挖掘和篩選長尾詞,然后根據長尾詞的競爭度以及相關性布局在網站的欄目頁和內頁。內頁的長尾詞圍繞欄目頁的競爭度大一點的短詞來布局,不同欄目的長尾詞不能互相交叉以及重疊。  問:SEO如何布局長尾關鍵詞?  請問如何給網站做長尾關鍵詞布局?關鍵詞可以挖掘出很多,但不知道怎么把這些關鍵詞使用上。1什么是長尾關鍵詞?  2006年的時候,營銷管理業界有一個新的理論,叫長尾理論。長尾理論不同于二八定律。長尾理論一出現,就首先得到了SEO業內的高度認同。直接借用了長尾這個名詞來定義領域里面比較泛化而大量的關鍵詞,統稱為長尾關鍵詞。  2長尾理論是互聯網時代的獨有現象  馬云之前有個理論,說我的產品規模要翻幾倍,增加一些服務器就好了。沃爾瑪要再建多少多少店面。因為內容和產品的數字化后,信息存儲方便。搜索引擎的出現,讓長尾理論得以體現出來。所以,對網站來說也是內容越多越好。內容多,就意味著總會有一些內容適合這類需求的用戶。  3長尾關鍵詞等于做內容  沒有內容頁面來承載關鍵詞,那關鍵詞就無法部署,這是要解決關鍵詞落地的問題。關鍵詞是無法脫離內容來談的。所以,做長尾關鍵詞,本質上就是等于要做內容。如果網站沒有幾個做內容的策略方法,是很難把長尾關鍵詞策略部署到站內去的。  4布局長尾關鍵詞常見方法  做聚合,是做長尾關鍵詞策略的常用方法。但聚合的頁面質量不好的話,也會影響長尾策略效果的發揮。長尾關鍵詞因為關鍵詞量大的原因,所以只能考慮那種能夠產生大量內容的方法來布局長尾關鍵詞。  5長尾關鍵詞的布局是SEO工作的核心  把長尾關鍵詞布局得當,可以說是SEO工作的最重要的核心一點之一了。這個問題要解決并不簡單。因為解決的好,就等于網站能夠長期生產出高質量的內容。所以,這個問題如何解決的更好,是值得SEO人員好好思考的問題。  我的觀點  不做長尾策略,網站的SEO效果終歸有限。所以,如何部署長尾關鍵詞策略,就是每個網站要發展起來過程中必須要解決的問題。

  • 如何辨別非自然鏈接 三種識別非自然性外鏈的方法解答

     方法一:單一的描文本化  當我們在建立網站外鏈的時候發現有些外鏈的錨文本非常單一,澤敏seo博客過調查和分析后得出這就是非自然外鏈,其實這種做法不管是對搜索引擎還是用戶都沒有幫助的,所以這也是屬于優化過度的一種做法。而且,像站外的外鏈自然性按百度的理解應該是用戶幫你發的才對,這時候的錨文本鏈接,我們是不能控制的,所以需要進行及時的處理,如果你的外鏈錨文本卻是這種單一的,這很容易就能說明你是人為發的,這是有違自然性的。應該采取相應的措施進行處理,這樣才能促進網站鏈接質量的提高。  方法二:相關性不強的鏈接  我們都知道判斷一個網站的質量標準是網站與內容、鏈接之間的相關性,同時,這對于網站的建設也是有很大影響的。因此,如果我們在網站鏈接中發現有些鏈接的相關程度非常的低,那么這個鏈接就是非自然鏈接,對于網站的發展是不利的。也是我們需要刪除掉的鏈接。所以我們在添加鏈接的時候一定要注重網站與鏈接之間的相關性,這樣才能提高網站鏈接的整體質量。  方法三:鏈接的大起大落  我們知道發布外鏈需要合理、平衡,所以對于外鏈發布要求也是非常高的,如果我們今天你的外鏈是一百個,明天是一百一十個,那你的外鏈增長率就是百分之十。你的外鏈增長的趨勢是平穩的,也是合理的。假如你今天一百個,明天你心情一激動就發了兩百個,后天休息一下,一個沒發。像這種起伏很大的情況,搜索引擎會認為不正常,這樣的話,搜索引擎就會認為這樣的鏈接就是不正常的,是非自然鏈接,所以,我們就應該要在發布外鏈的時候需要合理的進行發布,這樣才能促進網站鏈接健康發展。  以上三種方法就是我總結出來的關于識別非自然性鏈接的方法,希望大家能夠提高鏈接識別能力,提高網站鏈接質量,讓網站鏈接優化之路更加寬闊。

  • 目前網站怎么優化才好?淺析當下網站優化的新思維新方法

     1、不要老做傳統企業站,營銷型網站更受搜索引擎喜歡。  傳統的網站模式都一樣,缺乏新意,已經引起人們的視覺疲勞。采用合適的圖文形式,形象展示產品特色和優勢的營銷型網站,更能吸引大家的眼球。  2、網站內頁細節要升級,要慢慢編制內部鏈接網。  新聞列表頁里盡量讀取一部分內容簡介出來,以前的企業站大部分都是直接展示出新聞標題列表;公司簡介和聯系我們等頁面,側邊欄最好設置點新聞推薦等欄目,避免內部鏈接過少;產品詳情頁盡量側邊欄展示一部分產品推薦,增加產品的豐富度;新聞詳情頁下面,最好設 置相關閱讀等,增加文章連貫性。總而言之,內部內容要編制成網。  3、網站關鍵詞并非不是越少越好做。  很多人有誤區,關鍵詞設置的越少,網站分配給這個關鍵詞的權重越高,這個詞越容易上來,有一定道理,但是實際操作中這 種現象不明顯。關鍵詞的設置要遵循的原則是,關鍵詞要有相關性,盡量多設置,十幾個都可以的。然后文章信息量盡量大,盡量高質量,體現出這些關鍵詞的密度 來,關鍵詞都會此起彼伏的上來,先后帶動,互相影響,更好的達到優化效果。  4、外鏈的作用小了,但是反鏈很有用。  外鏈現在是輔助作用,優質的外鏈平臺越來越少,做好內鏈顯得更重要。盡量多的做一些優質友情鏈接,對網站很有好處。  5、優質內鏈和流量起到核心作用。  內鏈要咋做,首先內容要優質,盡量偽原創和原創,就算粘貼復制也盡量插入點圖片,修改一下。一天四五條是正確的做法,做的好的站一天少不了四條新聞,你再原創沒有數量也是白搭的。流量不用說了,正規的引流一下必不可少。

  • 網站死鏈怎么處理?SEO基礎知識之死鏈的產生及其處理技巧解答

    在網站日常SEO優化運營過程中,運營者難免會遇到各種問題,其中,死鏈就是其中之一。死鏈的產生,對于網站在搜索引擎中的收錄是不友好的,特別是當網站存在大量死鏈的情況下,會讓整個網站體驗特別不好。下面,江蘇蘇州SEO吳美福就要分享關于死鏈的產生及其處理技巧,以讓大家的網站優化更加高效。  什么是死鏈  首先我們先來理解什么是死鏈。這個概念其實很好理解。每個網站都是有絕對URL路徑,當一個鏈接打不開、報錯時,我們稱之為死鏈。當該鏈接打不開時,返回狀態碼為404的頁面。大家可以想想,當用戶點擊一個鏈接,最終的結果是打不開,那么用戶關閉網頁、跳出率肯定會增加,從而間接影響到搜索引擎對網站的收錄、排名以及整站質量。  死鏈產生的因素  所以,網站優化運營中,要定期地對死鏈進行排查。那么,死鏈產生的因素有哪些呢?主要有:1、服務器報錯;2、頁面刪除;3、網站轉移,網址出錯;4、文章內容發生路徑轉移;5、人為的輸錯了網址等等,這些都可能產生死鏈。筆者尤為要強調的是,如果網站用的是一些第三方模板制作的模板型網站,往往很容易產生死鏈。所以,在SEO建站優化之初,就要考慮好,用模板建站,還是個性定制網站。建議不要貪圖便宜而選擇模板,否則后續進行網站優化特別麻煩。因為很多模板公司,根本不提供源代碼,也不提供代碼修改。大家要切記。  死鏈的處理技巧  死鏈的處理技巧有很多,這里筆者就列出幾大比較容易掌握、簡單易執行的方法。  1、制作404頁面,將死鏈跳轉至錯誤頁面,讓搜索引擎蜘蛛知曉這是一個死鏈。至于404頁面如果制作,大家可以看看我的博客內容,里面之前有做專門介紹。  2、將死鏈提交給(百度、360等)站長平臺,大家可以搜索,并注冊一個賬號,用死鏈檢查工具檢查出來,然后放在txt文件里面,提交至站長平臺。  3、還有一種比較笨的方法,就是就是逐個把死鏈的地址改過來,當然這個效率會比較低,尤其是當有成千上萬個死鏈的時候,你想想,這要改到何年馬月?所以,還是運用前面兩種方法靠譜。  4、保證服務器運行流暢、穩定,不要隨便改動網站目錄。  看完上面關于死鏈的產生及其處理技巧,相信SEO朋友們有個初步印象了,如果還有什么不了解的話,歡迎加我的聯系方式進行交流哦。

龙王捕鱼上分期下分期