傳超值款 iPad(第九代)將更薄更輕且依然有指紋辨識,至於 iPad Pro…_如何寫文案

※別再煩惱如何寫文案,掌握八大原則!

什麼是銷售文案服務?A就是幫你撰寫適合的廣告文案。當您需要販售商品、宣傳活動、建立個人品牌,撰寫廣告文案都是必須的工作。

眼看 M1 MacBook 的各種高效率體驗給人越來越「iPad」的感覺。顯然 Apple 對於平板電腦產品的下一步,應該會讓許多人感到相當好奇。現在也有消息指出,洋洋灑灑也來到第九代的入門款 iPad,這次很可能會迎接內外全面進化,但 iPad Pro 似乎就並不會有太多外在的改變。繼續閱讀傳超值款 iPad(第九代)將更薄更輕且依然有指紋辨識報導內文。

▲圖片來源:Apple

傳超值款 iPad(第九代)將更薄更輕且依然有指紋辨識,至於 iPad Pro…

雖然感覺 iPad 系列應該比較難用到 M1 那種桌面級的 SoC,但 CP 值通常很高的入門款蘋果平板電腦產品,倒是不太需要特別去顧及到桌面電腦的效能領域,但依然可以預期達到行動領域標準的高標。根據外媒的資訊,新世代 2021 年入門款 iPad 及高階版 iPad Pro 系列現在也開始有更多資訊流出。

▲圖片來源:MacRumors

現階段看來,雖然 iPad Pro 目前看來應該主要會在升級面板技術至 mini LED,還有比較偏例行性的晶片升級(應該是加強版 A14X?)。不過在新的 iPad(第九代)上面,Apple 似乎準備要來個內外提升。

據報這個入門款平板電腦儘管螢幕將維持在 10.2 吋的大小,但將迎接 P3 的廣色域,且機身會變得更薄更輕 — 相對於前代的 7.5mm 厚與 490g 重,iPad(第九代)謠傳將會來到 6.3mm 的薄度與 460g 的輕量表現。

▲圖片來源:Apple

既然可預期新款 iPad 將多數沿用前一世代 iPad Air 的設計,所以 Apple Pencil、Touch ID 與 Lightning 的連接埠規格基本上也應該也是定番。是說在這大部分時間都得要戴著口罩的時代,相信應該大家都還是蠻歡迎指紋辨識的規格的吧?目前預期新世代 iPad 將會在秋季現身,應該也非常值得期待。

引用來源

延伸閱讀:

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

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

AirPods Pro 推超「牛」限量版,主動式降噪讓你隨時找到專屬自己的空間

Dell 的 CES 新品包括一台 40 吋 5K 超寬曲面螢幕與內建 Windows Hello 視訊鏡頭的螢幕(你懂的)

您也許會喜歡:

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

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

※教你寫出一流的銷售文案?

銷售文案是什麼?A文案是廣告用的文字。舉凡任何宣傳、行銷、販賣商品時所用到的文字都是文案。在網路時代,文案成為行銷中最重要的宣傳方式,好的文案可節省大量宣傳資源,達成行銷目的。

新一代 LG Gram 輕薄筆記型電腦發表,全系列 11 代 Intel Core 處理器上身_網頁設計公司

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

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

LG Gram 筆記型電腦從推出一來以超乎想像的輕盈著稱,日前,2021 年最新款系列陣容發表,這次的重點在於部分設計的改良以及內部規格的升級。在新一代中總共包含五種機型,其中包含三款翻蓋式筆電 Gram 17、Gram 16、Gram 14 以及兩款翻轉式 Gram 2in 1 16 與 Gram 2 in 1 14。

新一代 LG Gram 輕薄筆記型電腦發表,11 代 Intel Core 處理器上身

最新的陣容還是延續 Gram 的招牌特色,以驚人的輕盈纖瘦讓人讚嘆。最大的機型 Gram 17 只有 2.98 磅(約合 1.35 公斤),重量與其前代相同,而 Gram 16 僅有 2.62 磅(約合 1.19 公斤),Gram 14 則僅有 2.2 磅(約合 0.99 公斤)。2021 年款的 Gram 17 採用與 2020 年款一樣的外型,其 16:10 顯示器比傳統的 16:9 提供更多的垂直空間。此外,LG 表示,新的翻蓋式機型在設計上擁有四面超窄邊框,實現 90% 的螢幕佔比。

2021 年款的 LG Gram 在鍵盤與觸控板部分加大,提高使用的舒適度與工作效率,讓使用者打字更輕鬆快速。最重要的升級在配備方面,所有最新型號的 LG Gram 皆配備 Intel 第 11 代 Core 處理器,可配置 Iris Xe 或 UHD 顯卡,全機種皆通過 Intel Evo 認證,代表全系列機型擁有至少 9 小時續航力,一秒喚醒等能力。LG 官方表示,在 Gram 17、Gram 16 與 Gram 2in 1 16 上最長續航力可以達到 19.5 小時。

雖然目前價格與上市時間未定,但如果你特別喜歡輕薄筆電,從之前歷代 LG Gram 的表現看來新一代讓人感到非常期待。

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

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

您也許會喜歡:

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

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

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

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

Iris® Xe 內顯加持 2in1 電腦再進化 全新 Dell Inspiron 13 7306 二合一筆記型電腦_網頁設計

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

DELL做為世界電腦領導品牌之一,無論是在套裝電腦還是筆記型電腦都有一定的市場,這次隨著Intel發布第11代移動行處理器的同時,Dell也推出了數款全新筆記型電腦,今天我們受邀開箱的,就是家用的 Inspiron 系列變形平板電腦:Dell Inspiron 13 7306 二合一筆記型電腦。

Inspiron 13 7306 二合一筆記型電腦有兩款配置可以選擇,其一為第11代Intel® Core™ i5-1135G7搭配8GB記憶體與FHD的觸控螢幕,另外一個則是第11代Intel® Core™ i7-1165G7搭配16GB記憶體還有4K的觸控螢幕,這次由於第11代移動處理器帶有全新的Intel® Iris® Xe 顯示晶片,因此可以搭配更強大的螢幕顯示效能,而我們今天要開箱的則是i5-1135G7版本的Inspiron 13 7306 二合一筆記型電腦。

Dell Inspiron 13 7306 二合一筆記型電腦開箱

始終如一的DELLD外包裝,簡潔有力。

打開後的內容物也非常簡潔有力,筆電本體、變壓器以及專屬的觸控筆。

變壓器是採用了65W的Type C充電頭。

觸控筆則是全新的主動式觸控筆,十邊形的外型加上與機身相同的配色,非常好看。

觸控筆帶有4096感壓等級,並且有快速按鍵、藍牙連線等等,使用起來非常的流暢。

在筆電的外觀上,這次的 Dell Inspiron 13 7306 二合一筆記型電腦重返了黑色元素,相比之前的銀色或是白色,黑色更帶有些沉穩的表現。

掀開上蓋後,首先我們先來看看鍵盤區,在最上面有專屬的觸控筆儲存空間,並且同時進行充電。

在觸控筆儲存槽的旁邊,則是散熱的出風孔,搭配智慧感應器可自動偵測使用狀態進而調節散熱模式,讓你在使用的過程中可以保持最適合的狀態。

鍵盤的部分為帶有背光的磨砂材質鍵盤,使用起來非常的帶感。

在電源鍵的部分則是整合了指紋辨識,實際使用起來辨識速度非常的快。

整體鍵盤部分有特別做下凹設計,讓整體鍵盤區域可以在反過來使用時,也可以非常的平坦。

在上蓋往上掀後,會自動將鍵盤區抬起,讓鍵盤更符合人體工學,使用起來更舒服。

螢幕的部分則是採用了FHD的觸控螢幕,搭配 Dolby Vision™ 可以達到更明亮的色彩:

在螢幕的上方,則是有 HD 的 WebCam 以及紅外線攝影機,並且搭配可手動開關遮蔽的安全機制,讓使用上更無疑慮。

至於I/O的部分,在機身右邊有一個 USB 3.2 Gen 1 Type-A、一個耳麥孔以及一個mircoSD卡槽。

在機身左邊則是一個 Thunderbolt™ 4 Type-C 帶有充電以及 DisplayPort 以及一個 HDMI 2.0。

接著看到機身背面,首先看到的是左右兩側的2W立體聲喇叭。

而在正後方有一大排開孔散熱設計。

轉開背後7顆螺絲後,即可卸開背板,打開首先可以看到單管的散熱模組。

儲存空間則是512GB M.2的短卡。

內部空間都塞滿的情況下,基本上是無法進行記憶體與儲存空間的擴充,因此有興趣的朋友就是在買的當下就要決定好記憶體的大小,畢竟儲存空間可以外接,記憶體可是無法喔。而這台Dell Inspiron 13 7306 二合一筆記型電腦如果有需要更大容量的儲存空間的話,可以自行升級 (僅能安裝單顆),最高可以支援到2TB M.2 PCIe SSD。

最後則是看到電池的部分,則是採用了60Wh的配置。

 

Dell Inspiron 13 7306 二合一筆記型電腦效能測試

看完開箱我們來進行實際效能測試,最大的看點莫過於全新第11代Intel處理器以及Intel® Iris® Xe 顯示晶片。

本次測試機台是搭載了Intel® Core™ i5-1135G7處理器。

透過裝置管理員,可以很清楚地看到Intel® Core™ i5-1135G7 4C/8T的配置。

首先以CPU-Z進行核心效能測試,單核的分數為477,而在全核心的分數則是跑到了2264.2。

接著透過CineBench R15同樣進行CPU測試,Intel® Core™ i5-1135G7在CPU單核的分數為137 cb,而全核心的表現則為618 cb。

接著透過x264 FHD BENCHMARK進行轉檔測試,Intel® Core™ i5-1135G7的表現為22.1 fps。

接著透過x265 FHD BENCHMARK進行轉檔測試,Intel® Core™ i5-1135G7的表現則為15.2 fps。

重頭戲Intel® Iris® Xe顯示晶片的測試部分,透過測試顯卡運算的3DMARK,小編使用了較基本的Time Spy與Fire Strike以及測試內顯用的Sky Diver與Night Raid進行測試。首先是使用DirectX 12為核心架構的Time Spy測試,分數為1222。

而針對大部分遊戲,使用DirectX 11為核心架構的Fire Strike測試,Intel® Core™ i5-1135G7的分數為3850。

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

接著是較低階顯卡的測試,採用Direct X 11的Sky Diver測試,Intel® Core™ i5-1135G7的分數為10274。

接著則是採用了Direct X 12的Night Raid測試,Intel® Core™ i5-1135G7的分數為12853,總結3DMARK的四個測試,Inspiron 13 7306 2in1如果作為遊戲用機的話,僅僅靠Intel® Iris® Xe顯示晶片的威力,其實已經比帶有低階獨顯的筆電還要來的強悍,無論是跑分或是fps,都展現出有別於以往為人詬病內顯失能的超強效能。

在儲存的部分,首先透過了CrtstalDiskMark進行測試,Inspiron 13 7306 2in1出廠搭載使用的512G PCIe NVMe SSD,其讀寫速度為了2286.4 MB/s與1087 MB/s,還不錯的讀寫表現。

接著使用TxBENCH同樣進行讀寫測試,最高讀寫速度則是2252.04 MB/s與965.16 MB/s,同樣表現不錯。

最後則是透過PCMark 8進行電力測試,在一般家用基準測試下,可以連續使用360min,日常使用會更長效。

 

Dell Inspiron 13 7306 軟體介紹

在軟體的部分,DELL作為電腦領導品牌之一,當然有著非常多專屬的軟體,針對家用機種的部分則是除了基本檢測、進階設定外,還多了無線整合電腦與智慧型手機的Dell Mobile Connect。

無論是iPhone還是Android系統,都可以非常輕易的與Dell Inspiron 13 7306 二合一筆記型電腦連接。

接著電腦端會提供一組驗證碼,透過這組驗證碼就可以與手機對接。

這時候就在手機上,下載Dell Mobile Connect APP。

打開APP後,輸入電腦端的驗證碼,即可開始進行對接。

接著電腦與手機就會開始一連串的開啟權限等等動作。

連接完成後,即可直接在電腦上,透過Dell Mobile Connect直接看到手機上的非常多訊息。

也可以直接使用電腦打電話、接電話,超方便。

最重要的,是可以直接查看手機端的照片與影片,當然反向傳到手機上也是可以的,這樣就無須在透過繁雜的步驟,例如雲端、NAS等服務才能將檔案複製到電腦上,使用起來非常便利。

更特別的是,可以直接透過Dell Mobile Connect將手機的畫面透過電腦操控。

不過這項功能,其實是將手機的畫面進行直播,然後直接輸出到 Dell Inspiron 13 7306 二合一筆記型電腦上,基本上延遲算是還堪用,不過真的要進行槍戰之類的遊戲,就比較沒辦法透過無線操控的方式遊玩,基本上還不錯。

除了非常好用的Dell Mobile Connect,當然基本監測的SupportAssist必不可少,在初次啟動就會自動掃描所需要的檢測動作。

進到軟體內,即可直接看到近90天內的電腦狀態。

接著也可以針對各別項目進行檢測。

如果真的有甚麼問題,也可以透過歷史紀錄做查詢,更快速的找出電腦問題所在。

而針對電池的部分,則是另外有Dell Power Manager可以進行獨立設定。

進階充電部分則是可以設定排程進行充電,可以避免電池一直處於充電狀態。

而在效能部分,則是透過散熱管理進行控制。

至於在平常使用上,可以使用電池壽命延長器,讓一般使用上可以更長效。

至於電腦的各種進階設定部分,可以透過選單進行各項設定。

首先是DELL CinemaColor,類似於螢幕各種設定檔,可直接點即設定檔就可以改變螢幕設定。

接著是針對電腦音效部分的MaxxAudioPro,除了可以設定各種聲音細節的調整外,也可以設定麥克風的狀態以及音場的調整。

而CinemaStream則是可以自動的調配你的網路流量。

最後則是前面有提到的Dolby Vision™,可以透過D olly Access進行各項調整。

 

總結

Inspiron 13 7306 二合一筆記型電腦作為一般家用電腦,透過第11代Intel® Core™ i5-1135G7加上Intel® Iris® Xe顯示晶片的威力,使得輕薄筆電即使不用帶有獨顯,就能夠有著超強的顯示能力,同時也縮小了內部空間,讓筆電可以更輕薄更有便攜性,在電量的使用上也更有優勢,可以說是在悶了10代之久的獨顯之痛後,在11代的移動處理器上得到了最大的發揮,再加上了2in1筆電的優勢,觸控螢幕可以更好用的情況下,搭配全新觸控筆,無論是在一般文書處理上、影音娛樂上都可以有著更好的表現,實在是個不錯的選擇喔,如果對於效能、畫值還想更上層樓的話,也可以選擇i7-1165G7的版本,16GB記憶體加上4K螢幕的加持,可以有更強大的效能表現,推薦給大家喔。

您也許會喜歡:

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

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

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

中國媒體實測高通 S888 處理器後,竟用「翻車」形容!功耗高也非常燙_租車

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

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

對於 Android 用戶來說,今年最期待的旗艦處理器不外乎就是高通 Snapdragon 888,已經發表的小米 11 正是搭載這顆處理器,而最近一間中國媒體「極客灣Geekerwan」就收到小米 11 實機,沒想到測試之後他們卻用 “翻車” 來形容這顆處理器,認為三星的 5nm 工藝讓這顆變得有點慘,功耗實在是太高了。

中國媒體實測高通 S888 處理器

稍早極客灣Geekerwan 於 YouTube 頻道中分享 S888 的評測影片,標題寫著「驍龍888性能分析:翻車!」,看到這翻車形容詞,就知道表現比他們預期的差很多。

影片一開始有詳細講解 S888 的架構,有興趣的人文末有影片,這邊就簡單介紹一下。

S888 跟上一代 S865 相比,GPU 效能提升了 40%:

製程部分受惠於從台積電的 7nm 變成三星 5nm,S888 這次就直接內置 X60 基帶,不像 S865 採用的是外掛 X55 基帶:

進到效能實測部分,Geekbench 5 結果顯示,S888 無論單核心與多核心,確實都比 S865 還要快,提升幅度達 9.7%。跟 A13 相比,多核心終於正式超越,但單核心還是輸,A14 則兩項都輸:

S888 的 LPDDR5 也提升到 6400Mbps,實測記憶體延遲確實比 865 還低,頻寬也提升到 32.5GB/s,整體來看 S888 的效能確實有提升,那為什麼他們會用翻車來形容?主要是在「功耗」:

CPU 能耗比測試結果顯示,888 的功耗 865 高出 1W,達到 3.3W,換算後的能耗比較差:

接著在測試多核心部分,差距又更大了,S888 的功耗來到 7.8W,跟 S865 相比高出近 2W,而且不只是 S888 的 X1 大核心,即使是 A78 中核與 A55 小核的功耗也很高,因此是三星的 5nm 製程工藝導致這個結果:

接著測試光明山脉這款遊戲,像來非常穩定的高通處理器,第一次出現降頻的問題:

比較其他處理器可以發現,最高 FPS 表現雖然可以接近 A13 的水平,但經過 10 分鐘後,就變成跟上一代 S865 一樣:

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

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

另一款知名原神手遊,沒想到 S888 跑不贏 S865 的小米 10,而且 FPS 波動很大,他們開啟 CPU 核心頻率查看發現,大核 X1 經常保持在 0.8GHz 的低頻上:

跟上一代 S865 相比,大核 A77 可以持續保持 2.84GHz:

檢查 20 分鐘遊玩後的溫度,小米 11 背面接近 48 度:

側面也有 46 度左右,由此可見功耗有多高,遊戲完久真的會很燙手。他們也補充,感覺的出來小米團隊已經盡力壓低小米 11 溫度,依照先前的功耗測試,原本以為會超過 50 度:

如果是玩比較不吃效能的遊戲,S888 功耗確實可以比較低一點,但依舊比 S865、麒麟9000 與 A14 還高,S865 還是採用台積電 7nm 製程:

而再更低要求的遊戲,雖然功耗差距縮小,但會買 S888 手機的人,一定會想玩那些重畫質的遊戲,要不然沒意義:

S888 的實測結果真讓人很意外阿!這功耗也太恐怖,未來有大算入手 S888 手機的人,這點可能要多注意一下。

完整影片:

知名虐機頻道評選 2020 年智慧型手機耐用獎,誰是最堅固的贏家?

您也許會喜歡:

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

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

※超省錢租車方案

商務出差、學生出遊、旅遊渡假、臨時用車!GO 神州租賃有限公司!合法經營、合法連鎖、合法租賃小客車!

「MoreThanJava」一文了解二進制和CPU工作原理_如何寫文案

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

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

  • 「MoreThanJava」 宣揚的是 「學習,不止 CODE」,本系列 Java 基礎教程是自己在結合各方面的知識之後,對 Java 基礎的一個總回顧,旨在 「幫助新朋友快速高質量的學習」
  • 當然 不論新老朋友 我相信您都可以 從中獲益。如果覺得 「不錯」 的朋友,歡迎 「關注 + 留言 + 分享」,文末有完整的獲取鏈接,您的支持是我前進的最大的動力!

Part 1. 原來,我們是這樣記數的

本節內容節選自下方 參考資料 1

在討論「二進制」和「CPU 如何工作」之前,我們先來討論一下我們生活中最稀疏平常的 数字,我們與之頻繁地打交道:一個約定的時間、一件商品的價格、一個人的身高….卻很少有人細細想過,這些数字是如何表達出來的?為什麼你理所當然地把 1024 理解為「一千零二十四」而不是別的含義?

也許你從未想過,在這簡單的記數中,沉澱着人類的大智慧。

一進制計數法

  • 圖片來源:https://www.goethe.de/ins/cn/cn/kul/mag/20629923.html

早在数字的概念產生之前,人類就學會了使用樹枝、石子、貝殼等自然界隨處可見的小物件表示獵物的、果實的、部落人口的數量。比如在某個角落堆上一堆石子,每打到 1 只獵物,就扔 1 顆石子進去,每吃掉 2 只獵物,就從中取走 2 顆石子。他們並不在意石子的總數,只是時不時地瞅一眼,心底大致有數。

其實這是一種最樸素的記數方式,數學家稱之為 一進制記數法(unary numeral system)。我們把它符號化一下,比如用斜杠 / 來表示:

  • 1 就是 /
  • 2 就是 //
  • 4 就是 ////

好像沒毛病,我們平時掰手指用的就是這種記數法,但数字一大,場面就要失控了。

符值相加記數法

為了解決記錄大數的問題,於是我們得發明一些其他符號來表示更大的數值,比如用橫杠 - 表示 10,用十字 + 表示 100。那麼:

  • 16 就是 -//////;
  • 32 就是 ---//;
  • 128 就是 +--////////;

漂亮….這種靠符號類型和符號數量表示数字的方法被稱為 符值相加記數法(sign-value notation),古埃及和古羅馬用的都是它,只不過符號各不相同。

古埃及的記數符號:

1 10 100 1000 10000 100000 1000000

1024 在古埃及就寫作:

你會發現,符值相加記數法的一大優點是,符號的順序可以任意打亂,数字含義不受影響。我國藏族曾用石子表示 1、木棍表示 10、果核表示 100、蠶豆表示 1000、瓦片表示 10000,那麼,當你把 1 顆蠶豆、2 根木棍和 4 顆石子胡亂地攥在手裡,別人依然知道它們是 1024

古羅馬的做法略有不同,他們對五進制情有獨鍾:

1 5 10 50 100 500 1000
I V X L C D M

這些符號沿用至今,想必大家(至少對前 3 個)都比較熟悉,許多鐘錶仍保留着使用羅馬数字的習慣,1~12 分別表示為:IIIIIIIVVVIVIIVIIIIXXXIXII。你會發現,羅馬記數法是符值相加記數法的變種,因為它不光「相加」,還「相減」。這種方式就不允許符號亂序了,IVVI 表示的是不同的数字。

那羅馬人何苦要使用這種更複雜的記數法呢?無非是為了讀寫方便。同樣表示 9IXVIIII 更簡潔。

其實有一種更好使的方法——用另外一些列符號來表示符號的數量。比如用 A 表示 1 個符號,用 B 表示 2 個符號,以此類推,用 I 表示 9 個符號。

如此,上文表示 256++-----////// 就可以寫作 B+E-F/。你一定感覺莫名其妙,這種寫法哪裡方便了。其實中文的數字錶示就是這種形式,只不過我們用得太習慣了,以至於沒有發現。

在中文中, 代替了 /-+,而 代替了 ABC256 就寫作 二百五十六個 比較累贅,我們通常把它省略了。

其實像日語、英語用的也同樣是這種記數法,簡潔、優雅。

美中不足的是,這種形式雖便於讀寫,卻不便於計算。中國古人為算籌和算盤這類經典算具搭建起廣闊的舞台,卻沒給筆算留出一席之地。想象一下,如果讓你把這些漢字寫在草稿紙上,列個豎式,你的內心一定非常彆扭。

位值制記數法

公元5世紀,印度數學家阿耶波多(Aryabhata 476–550)創立了現在廣泛使用的 位值制記數法(positional notation/place-value notation),該記數法使用的主要符號,是同為印度人發明的阿拉伯数字:0123456789

與符值相加記數法類比,位值制中的 123 代替的是 ABC,那 /-+ 呢?是 靠阿拉伯数字的位置來表示的。眾所周知,最右位相當於 /,次右位相當於 -靠每個位置上的數值來表示数字,故名位值制。

嚴謹的數學家用一種多項式高度概括了位值制記數法的本質,在十進制中,這個多項式是這樣的:

這是一個 n 位十進制數,ai 就是第 i 位上的數值。為便於直觀理解,舉個 1024 的例子吧:

由於我們熟悉了十進制,這樣費心費力的展開可能會讓你覺得好笑,但當我們把它推廣到其他進制時,這個多項式的價值就體現了出來。n 位 b 進制數的位值製表示:

1024 用二進制怎麼表示?

因此,1024 的二進制寫作 10000000000

除了最普遍的十進制和計算機中的二進制,常見的還有七進制(如 17 天)、十二進制(如 112 個月)、十六進制(如古代 116 兩)、六十進制(如六十甲子)等等,只要有意義,任何進制都可以為你所用。

非標準位值制

在上述的多項式中,如果 ai 或 b 的取值奇葩一點,就形成了 非標準位值制(non-standard positional numeral systems),這類記數法往往應用於專業領域,很難在日常生活中見到。比如標準位值制中的三進制 ai 的取值為 012,但在一種名為平衡三進制(balanced ternary)的非標準位值制中,ai-101,蘇聯曾使用這種進制研發电子計算機。

Part 2. 二進制簡介

  • 圖片來源:https://zhuanlan.zhihu.com/p/26743163

至此,你對「二進制」應該會感覺親切了些,它只是一種數制而已,本質上與我們熟悉的十進制沒有很大的差別,我們這一 Part 來稍微理解一下二進制。(至於電腦為什麼使用二進制我們在下一 Part 中介紹)

二進制的基本運算

十進制中的那些基本運算原則,二進制中同樣適用,只不過需要稍加變幻而已,下面我們分別就加、減、乘、除四則運算來介紹。

二級制加法

根據「逢二進一」規則,二進制數加法的法則為:

0+0=0
0+1=1+0=1
1+1=0 (進位為1) 
1+1+1=1 (進位為1)

例如:11011011 相加過程如下:

二進制數的減法

根據「借一有二」的規則,二進制數減法的法則為:

0-0=0
1-1=0
1-0=1
0-1=1 (借位為1)

例如:1101 減去 1011 的過程如下:

二進制的乘法

二進制數乘法過程可仿照十進制數乘法進行。但由於二進制數只有 01 兩種可能的乘數位,導致二進制乘法更為簡單。二進制數乘法的法則為:

0×0=0
0×1=1×0=0
1×1=1

例如:10011010 相乘的過程如下:

二進制的除法

二進制數除法與十進制數除法很類似。

例如:100110 ÷ 110 的過程如下:

二進製為什麼能表示所有的數據

因為編碼規定。

之前我們有說到,所有保存的程序和數據在計算機中都被描述為 文件,也就是說我們能夠知道當前的數據集合被期望的用途是什麼,也就能夠找到對應的 處理器 來正確處理當前的數據。

例如保存文字

拿文字舉例,為了讓一串 01 能夠代表特定的文字,人們規定使用一個字節中的七位來表達特定的文字, 這就是大名鼎鼎 ASCII (American Standard Code for Information Interchange) 碼,ASCll 碼能夠表達 27=128 種字符(編碼從 0~127),對於 26 個英文字母和一些常用的可打印字符,這完全足夠了:

可是,世界文化是多元的,面對類似漢字這樣的象形文字,ASCll碼錶用起來自然是捉襟見肘。

窮則思變,一個字節不行,那就兩個字節,這就是大名鼎鼎的 Unicode 碼,不難看出,Unicode 碼有 216=65536 種表示方式,這樣就足以表達一些常用的字符了,值得一提的是,Unicode 碼算是在 ASCll 碼上的一種擴充,其第 0~127 個編碼字符與 ASCll 碼錶一模一樣。

再比如圖片

這裏涉及一點點物理知識,話說很久以前,牛頓通過三稜鏡把白色的光分解成七種不同顏色的光,後來又通過各種實驗發現紅、綠、藍三種顏色的光是無法被分解的,因此我們就稱為紅藍綠為光的三原色。

至此人類已經知道了:可以通過組合不同比例的紅、綠、藍三種顏色來獲得各種各樣的顏色,那麼我們就可以在計算機上模擬了。現在的計算機,一般使用 32 位來表示顏色,32 位平分給四個分量,也就是每個分量 8 位。

為啥是四個顏色分量?

因為顏色模型中有一個 alpha 值,用來表示透明度,這一點我們先不考慮。總之三種顏色,每個使用 8 位來表示的話,我們就能夠表示 256 * 256 * 256 = 16777216 種顏色了,已經足夠基礎的使用了。

先來看一張圖片:

這張圖像的尺寸是 600px * 664px(px 是一種圖片單位,中文名稱為像素,你可以暫時理解為一個點)。我們把它放大一下,如下圖所示:

※教你寫出一流的銷售文案?

銷售文案是什麼?A文案是廣告用的文字。舉凡任何宣傳、行銷、販賣商品時所用到的文字都是文案。在網路時代,文案成為行銷中最重要的宣傳方式,好的文案可節省大量宣傳資源,達成行銷目的。

看見了嗎?實際上,大部分圖像(你拍攝的照片、你掃描的圖片、你使用 iPad 畫的圖片等等…)都是位圖文件,位圖就是由像素點構成的,它就像是一個網格一樣,每個格子裏面填一個顏色。(除了位圖外,還有一種圖是矢量圖,它描述的是形狀而非網格)

OK,我想你已經能理解圖像是由像素點組成的了(事實上我們的显示器也是),我們只需要在編碼中附帶上一些額外的信息,例如圖像有多大的尺寸、時間、作者、顏色深度、是否支持透明度之類的就能夠對圖像進行正確表示了。(視頻可以簡單理解成一張張連續不斷的圖片)

要讓显示器正確显示圖片或者視頻,只需要讓显示器上每個像素显示特定的顏色就好了。

  • 圖片來源:https://www.bbc.co.uk/bitesize/topics/zf2f9j6/articles/z2tgr82

Part 3. 為什麼是二進制?

  • 圖片來源:https://zhuanlan.zhihu.com/p/33439000

可為什麼一定是二進制呢?使用人類習慣的十進制不好嗎?

理由一:物理上易於實現

計算機依靠電力工作,這也就意味着需要將数字信號映射到電信號,實現這種映射最簡單的方法是:

  • 0 – 沒有電(0 V)
  • 1 – 有點(5 V)

二進制在技術上最容易實現。這是因為具有兩種 穩定狀態 的物理器件很多,如門電路的導通與截止、電壓的高與低等,而它們恰好可以對應表示 “1” 和 “0” 這兩個數碼。假如採用十進制,那麼就要製造具有 10穩定狀態 的物理電路,而這是非常困難的。

理由二:機器可靠性高

為什麼使用更複雜的数字系統是一個問題?

假設我們使用三元(3 位数字)数字系統涉及計算機,如果我們具有從 0 V5 V 的電壓,那麼我們可以進行以下的映射:

  • 0 – 0 V;
  • 1 – 2.5 V;
  • 2 – 5 V;
  • 圖片來源:https://pmihaylov.com/intro-binary-numbers/

看起來合理吧?但是,想象一下,我以 2.5 V 的電壓發送了一個数字。但是由於電路中的一些噪聲,我在輸出端得到 2.3 V 的電壓,因此將其視為 0。結果是?

有人給我發送了 1,但我將其視為 0。數據丟失可是一個非常嚴重的問題。

使用二進制則可靠得多,由於電壓的高和低、電流的有和無等都是一種 質的變化,兩種物理狀態穩定、分明,因此,二進制碼傳輸的抗干擾能力強,鑒別信息的可靠性高。

為什麼計算機系統必須有時鐘

  • 圖片來源:http://programmedlessons.org/Java9/chap02/ch02_11.html

建立数字系統的目的是 僅在某些時間點測試開/關(二進制)值,這使電線(或其他設備)有時間更換。這就是計算機系統有時鐘的原因。

時鐘會周期性地進行信號的測量,圖中所示的 T1 和 T2 就是可以測量信號的時間點。

時鐘利用所有這些時間點來保持同步。更快的時鐘意味着每秒可以對電線進行更多次測試,並且整個系統運行得更快。2 GHz 處理器每秒檢查二進制值 20 億次。在這些時間之間,允許值改變並穩定下來。處理器芯片速度越快,每秒可以測試的次數就越多,每秒可以做出的決策就越多。

理由三:運算規則簡單

數學推導已經證明,對 N 進制數進行算術求和或求積運算,其運算規則各有 N(N+1)/2 種。如採用十進制,則 N=10,就有 55 種求和或求積的運算規則;而採用二進制,則 N=2,僅有 3 種求和或求積的運算規則,以上面提到的加法為例:

0+0=0,0+1=1 (1+0=1),1+1=10

因而可以大大簡化運算器等物理器件的設計。

理由四:邏輯判斷方便

採用二進制后,僅有的兩個符號 “1” 和 “0” 正好可以與邏輯命題的兩個值 “真” 和 “假” 相對應,能夠方便地使用邏輯代數這一有力工具來分析和設計計算機的邏輯電路。

雖然在 1950 年代就造出了更加高效的三元計算機,但在效率和複雜度的取捨上,始終抵不過二進制。二進制仍然在當今世界中長期存在。

Part 4. CPU 的實際工作方式

上面我們了解到計算機以二進制的形式運行,它們只有兩種狀態:開(1)和關(0),為了執行二進制計算,我們需要採用一種特殊的电子元器件,稱為 「晶體管」。暫時我們把它理解為一種開關吧,通電就打開,沒電流通過就關閉。

利用”開關”搭建邏輯電路

我們知道,給電燈通上電,它就會亮:

於是,結合上開關,我們就能搭建出最基礎的 與門或門

與門

該電路的邏輯是:只有當 A 和 B 同時開啟時,LED 燈才會亮,也就是認為輸出 1,我們可以利用電信號來簡單模擬一下:

A B Y
0 0 0
1 0 0
0 1 0
1 1 1

或門

該電路的邏輯是:當 A 或者 B 開啟時,LED 燈就會亮,也就是認為輸出 1,我們可以利用電信號來簡單模擬一下:

A B Y
0 0 0
1 0 1
0 1 1
1 1 1

其他門

類似地,我們可以藉助更多的电子元器件來創造出基礎的 7 種邏輯門電路:

  • 圖片來源:https://www.zhihu.com/question/348237008/answer/843382847 | @Zign

這裏需要特別提一下 異或門,我們需要先知道有一種电子元器件可以利用電氣特性對 輸入取反,也就是說輸入 1 則輸出 0,輸入 0 則輸出 1,那麼我們就可以 簡單模擬 出異或門邏輯電路(實際會更複雜些,這裏僅展示出異或的意思):

A'B' 分別表示 AB 開關的反值,從圖中我們很容易知道只有當 AB 只存在一個輸入 1 時,整個電路才會輸出 1

利用邏輯門簡單計算加法

OK,上面我們了解到我們能夠利用 “開關” 來模擬邏輯的運算,我們接下來試着還原一個簡單的加法運算器是如何實現的:

僅需兩個門,就可以完成基本的二進制加法運算。上圖是利用 logic.ly 創建的半加法器,AB 相當於使我們計算的兩個數,最後一塊相當於是我們的數顯芯片,它的功能是根據輸入显示数字,從上到下的引腳(也就是圖中輸入的地方,通常我們這樣稱呼)分別對應了 20=121=222=423=8 的輸入,沒有任何輸入時显示為 0,如果 引腳 1(對應 20=1)像上圖一樣有輸入,則显示 0 + 1 = 1

我們來理解一下上方的電路:

  • 如果僅打開一個輸入,但不同時打開兩個輸入,則此處的 XOR 門(異或門)將打開,此時對應輸入 引腳 1,显示 数字 1(類似於 1 + 0 和 0 + 1);
  • 如果兩個輸入均打開,則 AND 門(與門)將打開,此時對應輸入 引腳 2,显示 数字 2(類似於 1 + 1);
  • 如果沒有輸入,則 AND 門和 XOR 門都保持關閉,此時显示 数字 0(類似於 0 + 0);

因此,如果兩個都打開,則 XOR 保持關閉,並且 AND 門打開,得出正確的答案為 2

但這隻是最基礎的半加法運算器,不是太有用,因為它只能解決最簡單的數學問題之一。但如果我們把它們兩個與另一個輸入連接,就會得到一個完整的加法器:

仔細思考幾遍,你就會得知這個三個輸入的加法器已經可以計算 3 個二進制数字的加法運算了,我們如法炮製,可以通過連接更多的”進位”來使這個加法器能夠運算更多的數,這當然也意味着這個計算鏈條更長。

大多數其他數學運算都可以加法完成。乘法只是重複加法,減法可以通過一些奇特的位反轉來完成,而除法只是重複減法。並且,儘管所有現代計算機都具有基於硬件的解決方案以加快更複雜的操作,但從技術上講,您可以使用完整的加法器來完成全部操作。

總線和內存

現在,我們的計算機只不過是一個計算器,它記不住任何內容也對輸出沒有任何操作,上述電路只是接了一個显示單元而已。

上面展示的是一個存儲單元。它使用了大量的 NAND 門,並且在實際生產中,根據存儲技術的不同,它們可能會大不相同,但其功能是相同的。

您給它一些輸入,並打開“寫”位(Write 輸入 1),它將把輸入存儲在單元內。這不僅是一個存儲單元,因為我們還需要一種從中讀取信息的方法。這是通過一個使能器完成的,該使能器是「存儲器」中每個位的“與”門的集合,所有位都與另一個輸入(即“讀取”位)綁定在一起。寫入和讀取位通常也稱為“設置”(set)和“啟用”(enable)。

上面整個存儲單元都包裹在所謂的寄存器中。這些寄存器連接到 總線,總線是圍繞整個系統運行的一束電線,並連接到每個組件。即使現代計算機也具有總線,儘管它們可能具有多個總線以提高多任務處理性能。

每個寄存器仍有一個讀寫位,但是在這種設置下,輸入和輸出是一樣的。這實際上很好。例如:如果要將 R1 的內容複製到 R2,則應打開 R1 的讀取位,這會將 R1 的內容壓入總線。當讀取位打開時,您將打開 R2 的寫入位,這會將總線內容複製到 R2 中。

寄存器也用於製作 RAM。RAM 通常布置在網格中,並且導線有兩個方向:

解碼器採用二進制輸入並打開相應的編號線。例如,11 在二進制數中是 3,即最高的 2 位数字,因此解碼器將打開最高的線路。每個路口都有一個寄存器。所有這些都連接到中央總線以及中央寫入和讀取輸入。只有跨寄存器的兩條導線也都打開時,讀和寫輸入才會打開,從而有效地允許您選擇要從中進行讀寫的寄存器。同樣,現代 RAM 要複雜得多,但是此設置仍然有效。

時鐘,步進器和解碼器

寄存器無處不在,是在 CPU 中移動數據並將信息存儲在 CPU 中的基本工具。那麼,是什麼告訴他們移動數據的呢?

時鐘是 CPU 核心中的第一個組件,它將按設置的時間間隔(以赫茲或每秒周期為單位)關閉和打開。這就是您看到的最直觀的 CPU 速度指標。

時鐘具有三種不同的狀態:基本時鐘,使能時鐘和設置時鐘。基本時鐘將打開半個周期,另一半關閉。使能時鐘用於打開寄存器,並且需要更長的時間才能確保數據被使能。設置時鐘必須始終與使能時鐘同時打開,否則可能會寫入錯誤的數據。

時鐘連接到步進器,步進器將從 1 到最大步數進行計數,並在完成后將自身重置為 1。時鐘還連接到 CPU 可以寫入的每個寄存器的 AND 門:

這些 “與” 門還連接到另一個組件的輸出,即指令解碼器。指令解碼器接受 SET R2 TO R1 之類的指令,並將其解碼為 CPU 可以理解的內容。它有自己的內部寄存器,稱為“指令寄存器”,該寄存器存儲了當前操作。它的精確程度取決於您正在運行的系統,但是一旦解碼,它將打開正確的設置並啟用正確寄存器的位,這些寄存器將根據時鐘觸發。

程序指令存儲在 RAM(或現代系統中的 L1 高速緩存,更靠近 CPU)中。由於程序數據與其他所有變量一樣都存儲在寄存器中,因此可以隨時對其進行操作以在程序中跳轉。這就是程序通過循環和 if 語句獲取結構的方式。跳轉指令將指令解碼器正在讀取的存儲器中的當前位置設置到其他位置。

一切如何配合

現在,我們對 CPU 工作原理的有了一些基本的了解。主總線跨越整個系統,並連接到所有寄存器。完整的加法器以及其他一系列運算都打包在算術邏輯單元或 ALU 中。該 ALU 將與總線建立連接,並且還將具有自己的寄存器來存儲正在操作的第二個数字。

為了執行計算,將程序數據從系統 RAM 加載到控制部分。控制部分從 RAM 中讀取兩個数字,將第一個数字加載到 ALU 的指令寄存器中,然後將第二個数字加載到總線上。同時,它向 ALU 發送指令代碼,告知其操作方法。然後,ALU 執行所有計算,並將結果存儲在另一個寄存器中,CPU 可以從該寄存器中讀取該值,然後繼續該過程。

參考資料

  1. 原來,我們是這樣記數的 – https://www.jianshu.com/p/58844323e4fb
  2. 二進制數的運算方法 – https://www.jianshu.com/p/560aba49c9a4
  3. 文字,圖片,視頻,音頻的二進製表示 – https://blog.csdn.net/c46550/article/details/91040925
  4. 知乎 – 計算機只認識0和1但是怎麼表示圖像和影視等等眾多應用的? | @kross – https://www.zhihu.com/question/36269548
  5. Introduction to binary numbers – https://pmihaylov.com/intro-binary-numbers/
  6. What is Binary, and Why Do Computers Use It? – https://www.howtogeek.com/367621/what-is-binary-and-why-do-computers-use-it/
  7. CPU 是怎樣認識代碼的? | 知乎 – https://www.zhihu.com/question/348237008/answer/843382847 | @Zign
  8. HTG Explains: How Does a CPU Actually Work? – https://www.howtogeek.com/367931/htg-explains-how-does-a-cpu-actually-work/

往期推薦

  1. 「MoreThanJava」當大學選擇了計算機之後應該知道的
  2. 「MoreThanJava」計算機發展史—從織布機到IBM
  3. 「MoreThanJava」計算機系統概述
  4. 媽媽再也不擔心我面試被Redis問得臉都綠了
  • 本文已收錄至我的 Github 程序員成長系列 【More Than Java】,學習,不止 Code,歡迎 star:https://github.com/wmyskxz/MoreThanJava
  • 個人公眾號 :wmyskxz,個人獨立域名博客:wmyskxz.com,堅持原創輸出,下方掃碼關注,2020,與您共同成長!

非常感謝各位人才能 看到這裏,如果覺得本篇文章寫得不錯,覺得 「我沒有三顆心臟」有點東西 的話,求點贊,求關注,求分享,求留言!

創作不易,各位的支持和認可,就是我創作的最大動力,我們下篇文章見!

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

※別再煩惱如何寫文案,掌握八大原則!

什麼是銷售文案服務?A就是幫你撰寫適合的廣告文案。當您需要販售商品、宣傳活動、建立個人品牌,撰寫廣告文案都是必須的工作。

基於 abp vNext 和 .NET Core 開發博客項目 – 博客接口實戰篇(一)_網頁設計公司

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

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

系列文章

  1. 基於 abp vNext 和 .NET Core 開發博客項目 – 使用 abp cli 搭建項目
  2. 基於 abp vNext 和 .NET Core 開發博客項目 – 給項目瘦身,讓它跑起來
  3. 基於 abp vNext 和 .NET Core 開發博客項目 – 完善與美化,Swagger登場
  4. 基於 abp vNext 和 .NET Core 開發博客項目 – 數據訪問和代碼優先
  5. 基於 abp vNext 和 .NET Core 開發博客項目 – 自定義倉儲之增刪改查
  6. 基於 abp vNext 和 .NET Core 開發博客項目 – 統一規範API,包裝返回模型
  7. 基於 abp vNext 和 .NET Core 開發博客項目 – 再說Swagger,分組、描述、小綠鎖
  8. 基於 abp vNext 和 .NET Core 開發博客項目 – 接入GitHub,用JWT保護你的API
  9. 基於 abp vNext 和 .NET Core 開發博客項目 – 異常處理和日誌記錄
  10. 基於 abp vNext 和 .NET Core 開發博客項目 – 使用Redis緩存數據
  11. 基於 abp vNext 和 .NET Core 開發博客項目 – 集成Hangfire實現定時任務處理
  12. 基於 abp vNext 和 .NET Core 開發博客項目 – 用AutoMapper搞定對象映射
  13. 基於 abp vNext 和 .NET Core 開發博客項目 – 定時任務最佳實戰(一)
  14. 基於 abp vNext 和 .NET Core 開發博客項目 – 定時任務最佳實戰(二)
  15. 基於 abp vNext 和 .NET Core 開發博客項目 – 定時任務最佳實戰(三)
  16. 基於 abp vNext 和 .NET Core 開發博客項目 – 博客接口實戰篇(一)
  17. 基於 abp vNext 和 .NET Core 開發博客項目 – 博客接口實戰篇(二)
  18. 基於 abp vNext 和 .NET Core 開發博客項目 – 博客接口實戰篇(三)
  19. 基於 abp vNext 和 .NET Core 開發博客項目 – 博客接口實戰篇(四)
  20. 基於 abp vNext 和 .NET Core 開發博客項目 – 博客接口實戰篇(五)
  21. 基於 abp vNext 和 .NET Core 開發博客項目 – Blazor 實戰系列(一)
  22. 基於 abp vNext 和 .NET Core 開發博客項目 – Blazor 實戰系列(二)
  23. 基於 abp vNext 和 .NET Core 開發博客項目 – Blazor 實戰系列(三)
  24. 基於 abp vNext 和 .NET Core 開發博客項目 – Blazor 實戰系列(四)
  25. 基於 abp vNext 和 .NET Core 開發博客項目 – Blazor 實戰系列(五)
  26. 基於 abp vNext 和 .NET Core 開發博客項目 – Blazor 實戰系列(六)
  27. 基於 abp vNext 和 .NET Core 開發博客項目 – Blazor 實戰系列(七)
  28. 基於 abp vNext 和 .NET Core 開發博客項目 – Blazor 實戰系列(八)
  29. 基於 abp vNext 和 .NET Core 開發博客項目 – Blazor 實戰系列(九)
  30. 基於 abp vNext 和 .NET Core 開發博客項目 – 終結篇之發布項目

從本篇就開始博客頁面的接口開發了,其實這些接口我是不想用文字來描述的,太枯燥太無趣了。全是CRUD,誰還不會啊,用得着我來講嗎?想想為了不半途而廢,為了之前立的Flag,還是咬牙堅持吧。

準備工作

現在博客數據庫中的數據是比較混亂的,為了看起來像那麼回事,顯得正式一點,我先手動搞點數據進去。

搞定了種子數據,就可以去愉快的寫接口了,我這裏將根據我現在的博客頁面去分析所需要接口,感興趣的去點點。

為了讓接口看起來清晰,一目瞭然,刪掉之前在IBlogService中添加的所有接口,將5個自定義倉儲全部添加至BlogService中,然後用partial修飾。

//IBlogService.cs
public partial interface IBlogService
{
}

//BlogService.cs
using Meowv.Blog.Application.Caching.Blog;
using Meowv.Blog.Domain.Blog.Repositories;

namespace Meowv.Blog.Application.Blog.Impl
{
    public partial class BlogService : ServiceBase, IBlogService
    {
        private readonly IBlogCacheService _blogCacheService;
        private readonly IPostRepository _postRepository;
        private readonly ICategoryRepository _categoryRepository;
        private readonly ITagRepository _tagRepository;
        private readonly IPostTagRepository _postTagRepository;
        private readonly IFriendLinkRepository _friendLinksRepository;

        public BlogService(IBlogCacheService blogCacheService,
                           IPostRepository postRepository,
                           ICategoryRepository categoryRepository,
                           ITagRepository tagRepository,
                           IPostTagRepository postTagRepository,
                           IFriendLinkRepository friendLinksRepository)
        {
            _blogCacheService = blogCacheService;
            _postRepository = postRepository;
            _categoryRepository = categoryRepository;
            _tagRepository = tagRepository;
            _postTagRepository = postTagRepository;
            _friendLinksRepository = friendLinksRepository;
        }
    }
}

在Blog文件夾下依次添加接口:IBlogService.Post.csIBlogService.Category.csIBlogService.Tag.csIBlogService.FriendLink.csIBlogService.Admin.cs

在Blog/Impl文件夾下添加實現類:IBlogService.Post.csBlogService.Category.csBlogService.Tag.csBlogService.FriendLink.csBlogService.Admin.cs

同上,.Application.Caching層也按照這個樣子添加。

注意都需要添加partial修飾為局部的接口和實現類,所有文章相關的接口放在IBlogService.Post.cs中,分類放在IBlogService.Category.cs,標籤放在IBlogService.Tag.cs,友鏈放在IBlogService.FriendLink.cs,後台增刪改所有接口放在IBlogService.Admin.cs,最終效果圖如下:

文章列表頁

分析:列錶帶分頁,以文章發表的年份分組,所需字段:標題、鏈接、時間、年份。

.Application.Contracts層Blog文件夾下添加返回的模型:QueryPostDto.cs

//QueryPostDto.cs
using System.Collections.Generic;

namespace Meowv.Blog.Application.Contracts.Blog
{
    public class QueryPostDto
    {
        /// <summary>
        /// 年份
        /// </summary>
        public int Year { get; set; }

        /// <summary>
        /// Posts
        /// </summary>
        public IEnumerable<PostBriefDto> Posts { get; set; }
    }
}

模型為一個年份和一個文章列表,文章列表模型:PostBriefDto.cs

//PostBriefDto.cs
namespace Meowv.Blog.Application.Contracts.Blog
{
    public class PostBriefDto
    {
        /// <summary>
        /// 標題
        /// </summary>
        public string Title { get; set; }

        /// <summary>
        /// 鏈接
        /// </summary>
        public string Url { get; set; }

        /// <summary>
        /// 年份
        /// </summary>
        public int Year { get; set; }

        /// <summary>
        /// 創建時間
        /// </summary>
        public string CreationTime { get; set; }
    }
}

搞定,因為返回時間為英文格式,所以CreationTime 給了字符串類型。

IBlogService.Post.cs中添加接口分頁查詢文章列表QueryPostsAsync,肯定需要接受倆參數分頁頁碼和分頁數量。還是去添加一個公共模型PagingInput吧,在.Application.Contracts下面。

//PagingInput.cs
using System.ComponentModel.DataAnnotations;

namespace Meowv.Blog.Application.Contracts
{
    /// <summary>
    /// 分頁輸入參數
    /// </summary>
    public class PagingInput
    {
        /// <summary>
        /// 頁碼
        /// </summary>
        [Range(1, int.MaxValue)]
        public int Page { get; set; } = 1;

        /// <summary>
        /// 限制條數
        /// </summary>
        [Range(10, 30)]
        public int Limit { get; set; } = 10;
    }
}

Page設置默認值為1,Limit設置默認值為10,Range Attribute設置參數可輸入大小限制,於是這個分頁查詢文章列表的接口就是這個樣子的。

//IBlogService.Post.cs
public partial interface IBlogService
{
    /// <summary>
    /// 分頁查詢文章列表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<ServiceResult<PagedList<QueryPostDto>>> QueryPostsAsync(PagingInput input);
}

ServiceResultPagedList是之前添加的統一返回模型,緊接着就去添加一個分頁查詢文章列表緩存接口,和上面是對應的。

//IBlogCacheService.Post.cs
using Meowv.Blog.Application.Contracts;
using Meowv.Blog.Application.Contracts.Blog;
using Meowv.Blog.ToolKits.Base;
using System;
using System.Threading.Tasks;

namespace Meowv.Blog.Application.Caching.Blog
{
    public partial interface IBlogCacheService
    {
        /// <summary>
        /// 分頁查詢文章列表
        /// </summary>
        /// <param name="input"></param>
        /// <param name="factory"></param>
        /// <returns></returns>
        Task<ServiceResult<PagedList<QueryPostDto>>> QueryPostsAsync(PagingInput input, Func<Task<ServiceResult<PagedList<QueryPostDto>>>> factory);
    }
}

分別實現這兩個接口。

//BlogCacheService.Post.cs
public partial class BlogCacheService
{
    private const string KEY_QueryPosts = "Blog:Post:QueryPosts-{0}-{1}";

    /// <summary>
    /// 分頁查詢文章列表
    /// </summary>
    /// <param name="input"></param>
    /// <param name="factory"></param>
    /// <returns></returns>
    public async Task<ServiceResult<PagedList<QueryPostDto>>> QueryPostsAsync(PagingInput input, Func<Task<ServiceResult<PagedList<QueryPostDto>>>> factory)
    {
        return await Cache.GetOrAddAsync(KEY_QueryPosts.FormatWith(input.Page, input.Limit), factory, CacheStrategy.ONE_DAY);
    }
}
//BlogService.Post.cs
/// <summary>
/// 分頁查詢文章列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<ServiceResult<PagedList<QueryPostDto>>> QueryPostsAsync(PagingInput input)
{
    return await _blogCacheService.QueryPostsAsync(input, async () =>
    {
        var result = new ServiceResult<PagedList<QueryPostDto>>();

        var count = await _postRepository.GetCountAsync();

        var list = _postRepository.OrderByDescending(x => x.CreationTime)
                                  .PageByIndex(input.Page, input.Limit)
                                  .Select(x => new PostBriefDto
                                  {
                                      Title = x.Title,
                                      Url = x.Url,
                                      Year = x.CreationTime.Year,
                                      CreationTime = x.CreationTime.TryToDateTime()
                                  }).GroupBy(x => x.Year)
                                  .Select(x => new QueryPostDto
                                  {
                                      Year = x.Key,
                                      Posts = x.ToList()
                                  }).ToList();

        result.IsSuccess(new PagedList<QueryPostDto>(count.TryToInt(), list));
        return result;
    });
}

PageByIndex(...)TryToDateTime().ToolKits層添加的擴展方法,先查詢總數,然後根據時間倒序,分頁,篩選出所需字段,根據年份分組,輸出,結束。

BlogController中添加API。

/// <summary>
/// 分頁查詢文章列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet]
[Route("posts")]
public async Task<ServiceResult<PagedList<QueryPostDto>>> QueryPostsAsync([FromQuery] PagingInput input)
{
    return await _blogService.QueryPostsAsync(input);
}

[FromQuery]設置input為從URL進行查詢參數,編譯運行看效果。

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

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

已經可以查詢出數據,並且緩存至Redis中。

獲取文章詳情

分析:文章詳情頁,文章的標題、作者、發布時間、所屬分類、標籤列表、文章內容(HTML和MarkDown)、鏈接、上下篇的標題和鏈接。

創建返回模型:PostDetailDto.cs

//PostDetailDto.cs
using System.Collections.Generic;

namespace Meowv.Blog.Application.Contracts.Blog
{
    public class PostDetailDto
    {
        /// <summary>
        /// 標題
        /// </summary>
        public string Title { get; set; }

        /// <summary>
        /// 作者
        /// </summary>
        public string Author { get; set; }

        /// <summary>
        /// 鏈接
        /// </summary>
        public string Url { get; set; }

        /// <summary>
        /// HTML
        /// </summary>
        public string Html { get; set; }

        /// <summary>
        /// Markdown
        /// </summary>
        public string Markdown { get; set; }

        /// <summary>
        /// 創建時間
        /// </summary>
        public string CreationTime { get; set; }

        /// <summary>
        /// 分類
        /// </summary>
        public CategoryDto Category { get; set; }

        /// <summary>
        /// 標籤列表
        /// </summary>
        public IEnumerable<TagDto> Tags { get; set; }

        /// <summary>
        /// 上一篇
        /// </summary>
        public PostForPagedDto Previous { get; set; }

        /// <summary>
        /// 下一篇
        /// </summary>
        public PostForPagedDto Next { get; set; }
    }
}

同時添加CategoryDtoTagDtoPostForPagedDto

//CategoryDto.cs
namespace Meowv.Blog.Application.Contracts.Blog
{
    public class CategoryDto
    {
        /// <summary>
        /// 分類名稱
        /// </summary>
        public string CategoryName { get; set; }

        /// <summary>
        /// 展示名稱
        /// </summary>
        public string DisplayName { get; set; }
    }
}

//TagDto.cs
namespace Meowv.Blog.Application.Contracts.Blog
{
    public class TagDto
    {
        /// <summary>
        /// 標籤名稱
        /// </summary>
        public string TagName { get; set; }

        /// <summary>
        /// 展示名稱
        /// </summary>
        public string DisplayName { get; set; }
    }
}

//PostForPagedDto.cs
namespace Meowv.Blog.Application.Contracts.Blog
{
    public class PostForPagedDto
    {
        /// <summary>
        /// 標題
        /// </summary>
        public string Title { get; set; }

        /// <summary>
        /// 鏈接
        /// </summary>
        public string Url { get; set; }
    }
}

添加獲取文章詳情接口和緩存的接口。

//IBlogService.Post.cs
public partial interface IBlogService
{
    /// <summary>
    /// 根據URL獲取文章詳情
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    Task<ServiceResult<PostDetailDto>> GetPostDetailAsync(string url);
}
//IBlogCacheService.Post.cs
public partial interface IBlogCacheService
{
    /// <summary>
    /// 根據URL獲取文章詳情
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    Task<ServiceResult<PostDetailDto>> GetPostDetailAsync(string url, Func<Task<ServiceResult<PostDetailDto>>> factory);
}

分別實現這兩個接口。

//BlogCacheService.Post.cs
public partial class BlogCacheService
{
    private const string KEY_GetPostDetail = "Blog:Post:GetPostDetail-{0}";

    /// <summary>
    /// 根據URL獲取文章詳情
    /// </summary>
    /// <param name="url"></param>
    /// <param name="factory"></param>
    /// <returns></returns>
    public async Task<ServiceResult<PostDetailDto>> GetPostDetailAsync(string url, Func<Task<ServiceResult<PostDetailDto>>> factory)
    {
        return await Cache.GetOrAddAsync(KEY_GetPostDetail.FormatWith(url), factory, CacheStrategy.ONE_DAY);
    }
}
//BlogService.Post.cs
/// <summary>
/// 根據URL獲取文章詳情
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public async Task<ServiceResult<PostDetailDto>> GetPostDetailAsync(string url)
{
    return await _blogCacheService.GetPostDetailAsync(url, async () =>
    {
        var result = new ServiceResult<PostDetailDto>();

        var post = await _postRepository.FindAsync(x => x.Url.Equals(url));

        if (null == post)
        {
            result.IsFailed(ResponseText.WHAT_NOT_EXIST.FormatWith("URL", url));
            return result;
        }

        var category = await _categoryRepository.GetAsync(post.CategoryId);

        var tags = from post_tags in await _postTagRepository.GetListAsync()
                   join tag in await _tagRepository.GetListAsync()
                   on post_tags.TagId equals tag.Id
                   where post_tags.PostId.Equals(post.Id)
                   select new TagDto
                   {
                       TagName = tag.TagName,
                       DisplayName = tag.DisplayName
                   };

        var previous = _postRepository.Where(x => x.CreationTime > post.CreationTime).Take(1).FirstOrDefault();
        var next = _postRepository.Where(x => x.CreationTime < post.CreationTime).OrderByDescending(x => x.CreationTime).Take(1).FirstOrDefault();

        var postDetail = new PostDetailDto
        {
            Title = post.Title,
            Author = post.Author,
            Url = post.Url,
            Html = post.Html,
            Markdown = post.Markdown,
            CreationTime = post.CreationTime.TryToDateTime(),
            Category = new CategoryDto
            {
                CategoryName = category.CategoryName,
                DisplayName = category.DisplayName
            },
            Tags = tags,
            Previous = previous == null ? null : new PostForPagedDto
            {
                Title = previous.Title,
                Url = previous.Url
            },
            Next = next == null ? null : new PostForPagedDto
            {
                Title = next.Title,
                Url = next.Url
            }
        };

        result.IsSuccess(postDetail);
        return result;
    });
}

ResponseText.WHAT_NOT_EXIST是定義在MeowvBlogConsts.cs的常量。

TryToDateTime()和列表查詢中的擴展方法一樣,轉換時間為想要的格式。

簡單說一下查詢邏輯,先根據參數url,查詢是否存在數據,如果文章不存在則返回錯誤消息。

然後根據 post.CategoryId 就可以查詢到當前文章的分類名稱。

聯合查詢post_tags和tag兩張表,指定查詢條件post.Id,查詢當前文章的所有標籤。

最後上下篇的邏輯也很簡單,上一篇取大於當前文章發布時間的第一篇,下一篇取時間倒序排序並且小於當前文章發布時間的第一篇文章。

最後將所有查詢到的數據賦值給輸出對象,返回,結束。

BlogController中添加API。

 /// <summary>
 /// 根據URL獲取文章詳情
 /// </summary>
 /// <param name="url"></param>
 /// <returns></returns>
 [HttpGet]
 [Route("post")]
 public async Task<ServiceResult<PostDetailDto>> GetPostDetailAsync(string url)
 {
     return await _blogService.GetPostDetailAsync(url);
 }

編譯運行,然後輸入URL查詢一條文章詳情數據。

成功輸出預期內容,緩存同時也是ok的。

開源地址:https://github.com/Meowv/Blog/tree/blog_tutorial

搭配下方課程學習更佳 ↓ ↓ ↓

http://gk.link/a/10iQ7

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

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

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

HTTP 冷知識 | HTTP 請求中,空格應該被編碼為 %20 還是 + ?_網頁設計

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

HTTP 請求中,空格應該被編碼為什麼?今天我們走進 RFC 文檔W3C 文檔,了解一下這個「史詩級」大坑。

1.%20 還是 +

開始講解前先看個小測試,在瀏覽器里輸入 blank testblanktest 間有個空格),我們看看瀏覽器如何處理的:

從動圖可以看出瀏覽器把空格解析為一個加號「+」。

是不是感覺有些奇怪?我們再做個測試,用瀏覽器提供的幾個函數試一下:

encodeURIComponent("blank test"// "blank%20test"
encodeURI("q=blank test")        // "q=blank%20test"
new URLSearchParams("q=blank test").toString() // "q=blank+test"

image-20200524184735653

代碼是不會說謊的,其實上面的結果都是正確的,encode 結果不一樣,是因為 URI 規範和 W3C 規範衝突了,才會搞出這種讓人疑惑的烏龍事件。

2.衝突的協議

我們首先看看 URI 中的保留字,這些保留字不參与編碼。保留字符一共有兩大類:

  • gen-delims:
    :
    /
    ?
    #
    [
    ]
    @
  • sub-delims:
    !
    $
    &
    '
    (
    )
    *
    +
    ,
    ;
    =

URI 的編碼規則也很簡單,先把非限定範圍的字符轉為 16 進制,然後前面加百分號。

空格這種不安全字符轉為十六進制就是 0x20,前面再加上百分號 % 就是 %20

image-20200524184601512

所以這時候再看 encodeURIComponentencodeURI 的編碼結果,就是完全正確的。

既然空格轉為%20 是正確的,那轉為 + 是怎麼回事?這時候我們就要了解一下 HTML form 表單的歷史。

早期的網頁沒有 AJAX 的時候,提交數據都是通過 HTML 的 form 表單。form 表單的提交方法可以用 GET 也可以用 POST,大家可以在 MDN form 詞條上測試:

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

經過測試我們可以看出表單提交的內容中,空格都是轉為加號的,這種編碼類型就是 application/x-www-form-urlencoded,在 WHATWG 規範里是這樣定義的:

image-20200524185912590

到這裏基本上就破案了,URLSearchParams 做 encode 的時候,就按這個規範來的。我找到了 URLSearchParams 的 Polyfill 代碼,裏面就做了 %20+ 的映射:

replace = {
    '!''%21',
    "'"'%27',
    '(''%28',
    ')''%29',
    '~''%7E',
    '%20''+'// <= 就是這個
    '%00''\x00'
}

規範里對這個編碼類型還有解釋說明:

The application/x-www-form-urlencoded format is in many ways an aberrant monstrosity, the result of many years of implementation accidents and compromises leading to a set of requirements necessary for interoperability, but in no way representing good design practices. In particular, readers are cautioned to pay close attention to the twisted details involving repeated (and in some cases nested) conversions between character encodings and byte sequences. Unfortunately the format is in widespread use due to the prevalence of HTML forms.

這種編碼方式就不是個好的設計,不幸的是隨着 HTML form 表單的普及,這種格式已經推廣開了

其實上面一大段句話就是一個意思:這玩意兒設計的就是 ,但積重難返,大家還是忍一下吧

3.一句話總結

  • URI 規範里,空格 encode 為 %20application/x-www-form-urlencoded 格式里,空格 encode 為 +

  • 實際業務開發時,最好使用業內成熟的 HTTP 請求庫封裝請求,這些雜活兒累活兒框架都幹了;

  • 如果非要使用原生 AJAX 提交 application/x-www-form-urlencoded 格式的數據,不要手動拼接參數,要用 URLSearchParams 處理數據,這樣可以避免各種噁心的編碼衝突。

4.文章推薦

本文選自我的長文HTTP 規範中的那些暗坑,想要了解更多可點擊原文查看。

更多推薦:

  • webpack 中最易混淆的 5 個知識點,掘金快 800 贊了
  • webpack dll 是個什麼東西,看完就能
    擺脫繁瑣的 dll 配置
  • React Native 性能優化指南從渲染層的角度分析了 RN 性能優化的 6 個點,並以圖文形式講解了 FlatList 的實現原理
  • Web Scraper——輕量數據爬取利器 介紹了一個小巧的瀏覽器爬蟲插件,可以實現簡單的數據爬取功能

最後推薦一下我的個人公眾號:「滷蛋實驗室」,平時會分享一些前端技術和數據分析的內容,大家感興趣的話可以關注一波:


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

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

大學四年自學走來,這些私藏的實用工具/學習網站我貢獻出來了_租車

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

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

點贊再看,養成習慣,微信搜索【敖丙】關注這個互聯網苟且偷生的工具人。

本文 GitHub https://github.com/JavaFamily 已收錄,有一線大廠面試完整考點、資料以及我的系列文章。

##前言

在大學的時候我們有大量的業餘時間,我們可以拿出一部分時間去自學,也可以自學你感興趣的非你本專業的內容,就比如舞蹈,畫畫,等等,我就是在B站舞蹈區經常看欣小萌,咬人喵學習舞蹈,咳咳。

當然如果你成績不理想或者想更上一層,也可以去利用業餘事假給自己的當前的專業知識補補課。

我大學本身的專業是电子信息工程比較偏硬件的,後面通過在圖書館一年的自學,拿了不少獎,也在大二就收穫了某大廠的offer,現在自己走軟件這條路也是通過自學走過來的,如果大家對我當時軟件的學習方法和學習路線感情去,我後面可以單獨出一期,本期主要是說一些我覺得不錯的一些學習工具和網站。

正所謂工欲善其事必先利其器嘛,好的工具往往可以讓你事半功倍,首先我介紹的了呢,就是B站。

B站

網址:www.bilibili.com

這真的是一個學習網站,上面提到的咬人喵,欣小萌等等真的好看,咳咳 扯回正題,B站上面有很多優秀的up主,大家在這裏可以學到各行各業豐富的專業知識,在下海前,呸呸呸入海前,在這裏武裝自己也是極好的。

何同學大家都知道吧,我很早就關注了他,我最早是關注他學剪輯的你敢信?總之很多不錯的up大家真的值得關注像他們學習。

中國大學MOOC

網址:www.icourse163.org

這是我在大學自學c語言和計算機基礎的地方,學校有相關課程,但是我容易走神,所以我一般會選擇在這裏補課,是一個非常良心的免費學習網站,裏面主要是大學相關課程的視頻,什麼類型的都有。

現在我都還記得浙江大學的翁愷老師,當時我就在學校感慨,這個男人怎麼這麼有魅力。

IMOOC

網址:www.imooc.com

慕課網主要就是互聯網IT一類的課程,大部分都是付費的,號稱程序員的夢工廠。

我之前在裏面看過Linux相關的課程,整體的課程質量還是不錯的,如果你是個還在迷茫的學生,又或者是在考慮是否轉行的工作人員,請你耐心看完,相信會對你有所幫助!

極客時間

網址:https://time.geekbang.org

所有內容都是收費的,但是課程質量一樣很高,特別是我看過的丁奇的MySQL47講,裏面大部分的老師都是相關領域的技術專家。

之前我們公司的技術總監趙成花名謙益,就有在上面寫運維相關的專欄,因為他也是我的朋友,所以我也知道他寫一篇專欄需要耗費的時間和精力。

所以也是很值得推薦的一個學習網站。

極客學院

網址:www.jikexueyuan.com

有免費,有收費的課程,成為會員也比較簡單,讓朋友幫忙點擊鏈接就好了,課程質量也是不錯的。

網易雲課堂

網址:https://study.163.com

內容不局限於程序員,ui產品都有,大家比較迷茫可以可以看看。

百度/谷歌

網址:www.baidu.com www.google.com

搜索引擎嘛,想廣告少點就谷歌吧。

知乎

網址:www.zhihu.com

知乎,大家的刻板印象可能就是裝逼的地方,說實話我也經常在上面裝逼,但是如果你想在上面學習知識,這完全也是個很好的學習網站,同樣有很多不錯的博主會在上面分享自己的經驗經歷和相關的專業知識,你就去看贊高的就好了,我覺得也是很值得大家使用的網站。

GitHub

網址:https://github.com

程序員男生居多所以用戶也是男生居多,用戶來自全球,號稱gayhub全球最大的同性交友網站啊,很多開源網站,你要的畢設或許就可以在上面找到,搞不好還帶論文。

所有的開源項目,都在這裏託管,想看源碼,或者各種知識點的總結,這裏都有,我訂閱了官網的熱門,發現比較優秀的開源項目,都會搞下來看看到底有沒有東西。

也有很多博主比如我看一下我的GitHub,就收集了我寫的文章,還有我整理的學習資料等等。

我要自學網

網址:www.51zw.net

我要自學網是由來自電腦培訓學校和職業高校的老師聯手創立的一個視頻教學網,網站里的視頻教程均由經驗豐富的在職老師原創錄製,同時提供各類貼心服務,讓大家享受一站式的學習體驗。

我當時學了一些ps的東西,就是在這上面看的。

w3school、菜鳥教程

網址:www.w3school.com.cn www.runoob.com

領先的Web技術教程,在w3school,你可以找到你所需要的所有的網站建設教程,我主要當工具查詢網站了。

豆瓣、微信讀書、噹噹

網址:www.douban.com https://weread.qq.com http://book.dangdang.com

萬般皆下品惟有讀書高、書中自有黃金屋、黑髮不知勤學早,白首方悔讀書遲。

我想關於描寫讀書的諺語都不用我在過多的贅述了,讀書我想也只有好處,沒有壞處的,還是那句話,作者都是把自己幾年甚至幾十年的總結,都在寫在了書里,就算有錯誤的點,大的方向大家還是能收穫東西的。

了解一個新的知識點,技術棧,看書是不二之選,我個人也比較推薦看書,看書的時候你的心會沒那麼浮躁,其實看一本書你規定每天看十幾頁,一本300頁的書,也一個月不到就完了,很是很快的,根本不浪費大家多少時間。

那大家不知道書的好壞,買之前可以去噹噹或者京東看看對應的評價,或者去豆瓣看書評,我個人是豆瓣看得多點。

CSDN

www.csdn.net

這個也是我姐姐在推薦我看技術博客的時候,一起給我推薦的,不過在姐姐推薦之前,我其實就已經在使用他了,他有資源共享下載的地方,雖然要花C幣,我還記得大學為了幾C幣去各種求網友的場景。

他是1999年成立的,算是國內最老,最成熟的技術博客網站了,內容無比豐富,底蘊很深厚,註冊會員是千萬級別的,他的SEO也做的很好,所以百度你查資料基本上就是他和博客園置頂了。

掘金

https://juejin.im

是一個幫助開發者成長的社區,是一個面向互聯網技術人的內容分享平台,是的社區這兩個字很醒目,這也是我個人認為掘金的最大特點,15成立的他很年輕,我是在大學的時候我姐姐推薦給我的。

當然你現在也知道了我也經常在掘金髮文,從一個知識攝入者,變成了一個知識的分享者,他社區的特點一覽無遺,是一個很包容的平台,裏面前端到後端我覺得界限沒別的平台那麼明顯,說他是社區是因為,他有分享生活,分享技術的種種文章,沸點甚至有種看朋友圈的特點。

博客園

網址:www.cnblogs.com

昂,上面剛提到的博客園,04年的他,比起CSDN年輕了不少,是一個以.net為主的博客網站,這麼多年風格變化不是很大,至少在大學接觸他到現在這麼久了,都沒怎麼變。

移動端這麼重要的今天,他的移動端,還是那麼下飯,我不知道怎麼想的哈哈,不過問題不大,因為他復古的界面,以及他極度DIY的風格定義,導致他有一批死忠粉和老用戶,也是很活躍的博客網站。

思否(segmentfault)

網址:https://segmentfault.com

說到回答,這個跟我一樣是杭漂的網站就厲害了,他也是博客和問答的形式,是中國版的stackoverflow,不過因為他的年輕,可能沉澱的文章還不夠,不過我想會越來越好的。

stackoverflow

網址:https://stackoverflow.com

上面既然提到了中國版的,我就說一下這個世界級別的老大哥,這是我這裏面使用頻率很高的網站了,遇到問題不會就Google,然後基本上都往這裏面跳,你就知道他的厲害了。

是的你遇到的問題,外國的友人肯定也有遇到的,問答的方式,還有很多熱血仔在下面跟答的形式,我比較喜歡,而且國外大牛多嘛。

開源中國

網址:www.oschina.net

跟碼雲是一家的,作為博客網站來說,年輕了點,但是不影響他有很多優質的博主不斷給他輸出內容,基本上的領域都覆蓋了,經常也會舉辦各種活動,我也看好他的未來。

V2ex

網址:www.v2ex.com

v2ex,是一個彙集各類奇妙好玩的話題和流行動向的網站。V2EX 提供了特別有用的小工具 [ ZEN ],V2EX 中充滿了各種各樣精心雕琢的細節。

infoQ

網址:www.infoq.cn

※超省錢租車方案

商務出差、學生出遊、旅遊渡假、臨時用車!GO 神州租賃有限公司!合法經營、合法連鎖、合法租賃小客車!

InfoQ(Information Queue)是一個在線新聞/社區網站,旨在通過促進軟件開發領域知識與創新的傳播,為軟件開發者提供幫助,文章質量特別高,但是需要一定的專業基礎知識讀起來才有意思。

有道詞典

網址:www.youdao.com

查單詞,我英語是真的菜,基本上都是一直開着的。

印象筆記

網址:www.yinxiang.com

個人用的印象筆記,從大學到現在用了很多年了,還是很不錯的,也承載了我的很多記憶,基本上有我學硬件,到學軟件這一路的筆記了,也有一些婆娑的日記,我是話癆來的嘛,這個習慣我覺得還是挺不錯的,至少寫筆記這個習慣讓我現在寫文章也算是比較從容。

他的插件也很好用,可以直接保存網頁信息到筆記,不用怕到時候找不到,或者作者刪除了。

如果大家不想安裝,想直接使用雲的,他也有,或者你可以嘗試以下兩個。

有道雲、石墨文檔

網址:https://note.youdao.com https://shimo.im

這兩個是我使用比較頻繁的雲筆記工具,主要是在線嘛,方便。

ProcessOn 、xmind

網址:www.processon.com www.xmind.cn

這個是我工作以來,一直都很依賴的工作和學習的方式,就是做腦圖,工作中大家也會發現身邊的仔,基本上也都會或多或少的做一些腦圖,去輔助自己設計系統,或者去了解學習一些知識點什麼的。

他可以做詳細設計,做概要設計,當然也可以做我上面提到的時間規劃,以及知識點清單啥的。

鳩摩搜索

網址:www.jiumodiary.com

這個網址可以用來搜索一些pdf的書,有了這個網址,就不用百度全網搜索pdf的書了。雖然可能沒有像百度全網搜索那麼全,但大部分也都有了。注意每種搜索結果的來源,有些來源是百度雲盤,有些是微盤等,可以根據需要獲取。

腳本之家

網址:www.jb51.net/books

腳本之家資源還是挺多的,电子書其中之一,不過,也是有挺多电子書的,並且提供多種下載方式,如果你鳩摩搜書搜索不到,或許可以考慮在腳本之家搜索,或者腳本之家搜索不到就到鳩摩搜書搜索。

牛客網 校招

網址:www.nowcoder.com

我沒經歷過校招,但是我確實在上面刷過計算機相關的題目,也有各大互聯網公司的面試真題,還有一些學長在上面發麵經,內推信息等等,大家都可以提前去看看,聯繫自己想去公司的學長,讓他幫你內推

LeetCode、lintcode

網址:https://leetcode-cn.com www.lintcode.com

算算法題目的,我算法很差,後悔沒好好刷了,大家想去字節這樣的公司是一定要刷的。

數據結構模擬

網址:https://www.cs.usfca.edu

大家如果對一些數據結構感覺很抽象,那這個網站可以幫助你,比如二叉樹紅黑樹,在這裏都能模擬數據的插入刪除。

BOSS、拉鈎

網址:www.zhipin.com www.lagou.com

什麼都學好了,找工作當然也得需要一個投遞簡歷的好網站,我這裏就推薦boss和拉鈎,這兩個也是我出去找工作會經常使用的兩個網站,boss效率會高很多。

總結

文中提到的所有網址:

B站 網址:www.bilibili.com

中國大學MOOC 網址:www.icourse163.org

IMOOC 網址:www.imooc.com

極客時間 網址:https://time.geekbang.org

極客學院 網址:www.jikexueyuan.com

網易雲課堂 網址:https://study.163.com

百度/谷歌 網址:www.baidu.com www.google.com

知乎 網址:www.zhihu.com

GitHub 網址:https://github.com

我要自學網 網址:www.51zw.net

w3school、菜鳥教程 網址:www.w3school.com.cn www.runoob.com

豆瓣、微信讀書、噹噹 網址:www.douban.com https://weread.qq.com http://book.dangdang.com

CSDN 網址www.csdn.net

掘金 網址 https://juejin.im

博客園 網址:www.cnblogs.com

思否(segmentfault) 網址:https://segmentfault.com

stackoverflow 網址:https://stackoverflow.com

開源中國 網址:www.oschina.net

V2ex 網址:www.v2ex.com

infoQ 網址:www.infoq.cn

有道詞典 網址:www.youdao.com

印象筆記 網址:www.yinxiang.com

有道雲、石墨文檔 網址:https://note.youdao.com https://shimo.im

ProcessOn 、xmind 網址:www.processon.com www.xmind.cn

鳩摩搜索 網址:www.jiumodiary.com

腳本之家 網址:www.jb51.net/books

牛客網 校招 網址:www.nowcoder.com

LeetCode、lintcode 網址:https://leetcode-cn.com www.lintcode.com

數據結構模擬 網址:www.cs.usfca.edu

BOSS、拉鈎 網址:www.zhipin.com www.lagou.com

我相信上面的一下網站,總有一兩個是能幫助到大家的,學習是個時而欣喜若狂,時而鬱郁寡歡的道路,希望你能堅持下去,時間會回報你的。

我是敖丙,一個在互聯網苟且偷生的程序員。

你知道的越多,你不知道的越多人才們的 【三連】 就是丙丙創作的最大動力,我們下期見!

注:如果本篇博客有任何錯誤和建議,歡迎人才們留言!

文章持續更新,可以微信搜索「 敖丙 」第一時間閱讀,回復【資料】有我準備的一線大廠面試資料和簡歷模板,本文 GitHub https://github.com/JavaFamily 已經收錄,有大廠面試完整考點,歡迎Star。

你知道的越多,你不知道的越多

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

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

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

AR領域的殺手級設備已經誕生?蘋果認為就是智能手機_如何寫文案

※教你寫出一流的銷售文案?

銷售文案是什麼?A文案是廣告用的文字。舉凡任何宣傳、行銷、販賣商品時所用到的文字都是文案。在網路時代,文案成為行銷中最重要的宣傳方式,好的文案可節省大量宣傳資源,達成行銷目的。

增強現實(AR)是將虛擬信息疊加到現實世界中,實現虛擬場景與現實世界巧妙融合的效果。然而自從這項技術誕生以來,始終缺少殺手級設備。不過蘋果認為,AR殺手級設備其實已經存在,那就是智能手機。該公司AR高管表示,iPhone和iPad正在轉變為世界地圖和物體掃描工具,而且它們比AR眼鏡更重要。

許多傳聞显示,在不久的將來,蘋果就將推出AR或混合現實(MR)設備。雖然蘋果還沒有對此進行過任何相關討論,但AR技術在iPhone上的應用已經十分活躍,而且發展得很快。

蘋果於2017年開始了AR之旅,其虛擬宜家傢具和外觀逼真的戶外Pokemon Go大戰引起了巨大轟動。今年,蘋果新款iPhone 12 Pro可以掃描消防栓、繪製房間內部地圖,以及在地板上導航如何穿過熔岩河。在很多方面,最新款iPhone和iPad上的蘋果深度感應激光雷達傳感器,以及先進的3D掃描功能,感覺就像是未來蘋果AR設備的支柱。

Facebook、微軟和Magic Leap已經在開發旨在融合虛擬和現實的設備,未來將有更多使用高通芯片的AR設備面世。但蘋果AR主管邁克·洛克威爾(Mike Rockwell)和高級產品經理亞歷山德拉·麥金尼斯(Allessandra McGinnis)稱,蘋果目前的AR使命是讓現有設備上的功能更好地運行。從長遠來看,將AR與現實世界的位置分層並自動彈出體驗,同時基於AR的能力開發創造性工具和輔助技術,可能會成為最大的殺手級應用。

洛克威爾說:“AR具有巨大的潛力,可以幫助人們生活的方方面面,無論是現在的設備還是將來可能出現的設備上,但我們必須確保它能成功。對我們來說,實現這一目標的最佳方式是建立我們的設備生態系統,讓人們投入自己的時間和精力,這是個健康而又有利可圖的新領域。”

像Oculus Quest 2這樣的虛擬現實(VR)設備,儘管質量在不斷提高,但與手機相比,仍沒有多少人在使用它。Moor Insights的高級消費芯片分析師安謝爾·薩格(Anshel Sag)表示,除了索尼,沒有人真正談論VR頭盔的銷量。到目前為止,索尼已經售出了500萬台PlayStation VR頭盔,儘管Oculus Quest 2很有可能在第一年賣出500萬至600萬台。

但即便如此,這些VR頭盔上的應用程序通常會讓人感覺與手機和電腦上的日常應用相去甚遠。洛克威爾指出:“對於那些只使用VR或AR的開發者來說,這是一條相當艱難的道路,市場上沒有那麼多設備。與此同時,蘋果自2017年以來擁有AR功能的iPhone和iPad數量高達數億部。即使只吸引了相對較小的比例,這仍然是個巨大的数字。”

※別再煩惱如何寫文案,掌握八大原則!

什麼是銷售文案服務?A就是幫你撰寫適合的廣告文案。當您需要販售商品、宣傳活動、建立個人品牌,撰寫廣告文案都是必須的工作。

蘋果表示,目前已有7000名開發者開發了1萬款支持AR的iOS應用程序,其中許多應用側重於購物或家居裝修,將其作為在家實際使用AR的一種方式。實用性似乎正是蘋果目前最關注的。洛克威爾說:“我們想為開發者提供可賴以謀生的平台和生態系統。”

雖然COVID-19大流行已經讓大多數人關閉了實體企業,減緩了旅行速度,但使用AR工具進行家庭購物是蘋果目前的主要工作。谷歌和微軟都在尋求通過基於手機的增強現實工具在你的手機上看到你可能想要購買的3D產品的方式,就像蘋果的Safari瀏覽器使彈出式增強現實購物看起來像是去商店的替代品一樣。

雖然新冠肺炎疫情已經關閉了實體企業,減緩了大多數人的出行速度,但使用AR工具進行家居購物是蘋果目前關注的主要問題。就像谷歌和微軟正在尋求的方法一樣,使用基於手機的AR工具,你可能會在家裡的手機上以3D形式查看你可能想要購買的東西。蘋果與Safari瀏覽器的連接使彈出式AR購物看起來像是實體購物的替身。

與此同時,新款iPhone 12 Pro之類的智能手機可以成為主要的創意工具,為未來的AR設備添磚加瓦。Adobe AR主管斯特凡諾·科拉扎(Stefano Corrazza)說:“在一段時間內,iPhone  12  Pro將是主要的消費設備,但也可以3D掃描內容,它是非常強大的機器。”Adobe還沒有在Aero上使用3D掃描工具,但未來可能會探索加入這些功能的方法。

蘋果進入AR領域的第一步,只是使用手機的運動傳感器、陀螺儀和內置攝像頭來識別樓層,然後識別牆和人類。現在,搭載激光雷達的iPhone和iPad可通過快速網格化(以3D方式繪製)房間的全景,同時可3D掃描空間中的物體和人。洛克威爾說:“這就是我們在設備上安裝掃描儀的部分原因。我們覺得這是一項關鍵技術,可以開啟3D掃描的爆炸式增長,可以用於各種用途。”

洛克威爾認為:“iPhone AR未來真正的殺手級應用是,它將始終以微妙的方式被定期使用,幫助人們做現在做的事情,讓你的工作變得更容易、更快。”實現這個目標的途徑包括App Clips,這是蘋果在iOS 14中推出小型微應用,無需下載任何東西就能在iPhone上運行。通過掃描或點擊,用戶可以出現與我所在地方相關的AR環境,比如虛擬菜單或博物館展品。

這還涉及蘋果的地圖繪製工作。蘋果新推出的Location Anchors意味着,虛擬AR對象可以存在於現實生活中的地點,並與多人同時共享。蘋果認為,對於每天使用AR的人來說,上述功能至關重要。與此同時,該公司正在鼓勵開發者開發支持AR的應用程序。無論AR設備是否會在短期内面世,更具空間意識的iPhone和iPad都將把手機轉變為世界掃描設備,並更快融入我們的生活中。

【本文作者金鹿,由合作夥伴騰訊科技授權發布,文章版權歸原作者及原出處所有,轉載請聯繫原出處。文章系作者個人觀點,不代表立場。如內容、圖片有任何版權問題,請聯繫(editor@zero2ipo.com.cn)處理。】

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

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

自如要求業主合同期降租,否則強制解約,租客也被下“逐客令”_網頁設計公司

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

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

近日蛋殼事件持續發酵,不少租客被驅逐、無處可去,房東收不回房租、左右為難,租金貸的弊端盡顯,長租公寓行業存在的問題被充分暴露。

而作為長租公寓行業頭部玩家的自如,被很多打工人看成租房的重要選擇。

但是自如真的靠譜嗎?就在最近,不斷有業主反映自如要求業主合同期內降租,不同意就強制解約,還要賠償違約金。租客也被下逐客令,並且不按合同賠償。

總結一下,自如先是以疫情影響等原因要求業主合同期內降租,否則就單方面解約,而且還算業主違約,須支付違約金,比如裝修費用等。租客則不得不搬離,也不能獲得合同規定的賠償。

有業主更是直言“要麼降租,要麼陪他們裝修費用,呵呵,我們就是任人宰割的小羊,賺了錢是他們的,賠了錢是我們的”。

三言財經了解到,有業主表示從今年6月份自如就打電話談降租,理由是疫情影響,至今中間談了幾次降租的事,但是業主始終沒有同意。

就在最近該業主突然在APP上發現雙方合同正處於解約中。自如在合同期內強行降租,不同意就強制解約。此外,該業主稱,自如強行解約還會算成業主違約,業主還要賠償裝修費。

對於下一步的維權,該業主表示如果12月的房租超過15天沒有支付,會起訴自如。他還稱,自己所在的維權群里已近500人,群里有大量起訴自如的業主。

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

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

事實上在微博上,#自如要求業主合同期內降租#的話題已經有近千萬的閱讀量,而相關的爆料最早從今年6月份就已經出現。

隨着最近蛋殼事件的引爆,自如的業主和租客也感受到了緊張,相關爆料也開始多起來。

自如的做法,實際將業主和租客也放到了對立面,三方的矛盾變得無法調和。

對於業主和租客,都面臨兩方的壓力。自如這招算是轉嫁了降低成本所引發的矛盾爆發點。

不僅對業主,自如是兩頭解約,還將問題轉嫁到業主身上。

有租客表示,在強制業主解約后,自如對合約期內的租客下達逐客令。

該租客表示,從業主口中得知,自如拖欠業主兩個月房租,導致業主不得不解約,收回房屋,並沒有收到違約金。但自如卻表述是業主主動解約,還稱業主拒付違約金。

有業主提供的維權群里,維權人員自發的製作了降租解約的應對策略。其中細節及其詳盡,這隻能說維權並不是一件容易的事。

最後對於維權,筆者還是建議受害者們要及時保存證據,在法律範圍內合法維權,多嘗試各種途徑。

【本文作者三言財經,由合作夥伴三言財經授權發布,文章版權歸原作者及原出處所有,轉載請聯繫原出處。文章系作者個人觀點,不代表立場。如內容、圖片有任何版權問題,請聯繫(editor@zero2ipo.com.cn)處理。】

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

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