ARTS-第-22-期
閱讀本文大概需要 8 分鐘。
每周完成一個 ARTS
Algorithm 來源?來源 LeetCode 135. Candy
Review 分享 分享 medium 上一篇關于 Cookies 的文章
Tip 分享為什么在不同的地方 ping 同一個域名可能出現得到不同的 IP 地址?
Share?分享為什么人會懶惰的一些思考?
PS:由于公眾號不支持添加外鏈,所以大家遇到有鏈接的地方滑到文章最下面點擊閱讀原文就可以訪問了哈,如果覺得文章不錯,歡迎分享給周圍的朋友們哈
1.Algorithm
LeetCode 135. Candy?難度:[Medium]
【題意】
老師想給孩子們發糖果,有 N 個孩子站成了一條直線,老師根據每一個孩子的表現情況,會預先給他們每個人都打好評分。
你要按照以下要求幫助老師給這些孩子分發糖果:
1. 每個孩子都至少應該有1個糖果。?
2. 相鄰的孩子中,評分高的孩子必須獲得更多的糖果。?
那么這樣下來,至少需要準備多少顆糖果呢?
【樣例】
Example 1:
Input: [1,0,2]
Output: 5
Explanation: You can allocate to the first, second and third child with 2, 1, 2 candies respectively.
Example 2:
Input: [1,2,2]
Output: 4
Explanation: You can allocate to the first, second and third child with 1, 2, 1 candies respectively.The third child gets 1 candy because it satisfies the above two conditions.
【思路】
分糖果,經典題。
這道題看起來很難,其實解法并沒有那么復雜。在這里給出一個兩次遍歷,O(n)的做法。
定義一個數組 ,儲存每個人應該得到的糖果數。第一遍從左向右遍歷,如果判斷 B 小盆友分數比 A 小盆友低,則 A 小盆友 應該所得糖果數就是 B 小盆友 所得 +1。
同理從右邊往左邊循環,如果判斷 B 小盆友分數比 A 小盆友高,并且 B 小盆友的糖果數比 A 小盆友的糖果少,則 B 小盆友應該所得糖果數就是 A 小盆友所得 +1。
最后再把所有小盆友的糖果數都加起來返回即可。
【解法一】(C++)
另外還有一次遍歷的方法,相比于遍歷兩次的思路簡單明了,感興趣的可以自己嘗試去實現一番。
2.Review
受到這篇文章的啟發
?lingfeng.art/2019/03/15
本周閱讀了 medium 上一篇關于 Cookies 的文章:cookies-vs-localstorage-whats-the-difference。閱讀原文即可訪問鏈接。
什么是Cookie?
一條 Cookies 記錄就是存儲在用戶主機瀏覽器中的一小段文本文件。Cookies 是純文本形式,它們不包含任何可執行代碼。Cookies 只是包含了數據,就其本身而言并不有害。
Cookies 可以被使用在不同的地方上,比如存儲用戶瀏覽過的網頁信息或者是用戶的登錄信息。Cookies 經常被用于記錄用戶的登錄信息,或者是根據用戶的瀏覽習慣定制適用于用戶的一些服務。
兩種不同的 Cookies
第一種是 Persistent Cookies,第二種是 SessionCookies
SessionCookies
SessionCookies 存儲周期很短,這種類型的 Cookies 經常被用于在銀行中導航的憑證,瀏覽器一關閉,信息也就丟失了
Persistent Cookies
Persistent Cookies 有一個截止的期限,它們可以存儲到截止的期限然后被刪除。它們可以用于記錄用戶的訪問習慣,以便于大型的網站根據它們去提升用戶的體驗。
LocalStorage
HTML5 本地存儲的前身就是 Cookies ,但是自從 HTML5 出來之后,很多使用 Cookies 的地方都被LocalStorage 取代了。LocalStorage 相較于Cookies有很多的優點,一個很重要的原因是,傳輸數據的時候不用每一次 HTTP 請求,這節省了很多數據帶寬。
HTML5 的本地存儲是使用 LocalStorage 對象將 WEB 數據持久化在本地。相比較而言 HTML5 本地存儲中每個域的存儲大小默認是 5M,比起 Cookies 的 4K 要大的多。而且存儲和讀取數據的代碼極為簡練:
Window.localStorage.setItem(key,value);//存儲數據 Window.localStorage.getItem(key);//讀取數據 Window.localStorage.removeItem(key);//刪除數據項 Window.localStorage.clear();//刪除所有數據3. Tip
HTTP 三種代理服務器模式
為什么在不同的地方 ping 同一個域名可能出現得到不同的 IP 地址呢?
這是因為這些 IP 地址實際上是代理服務器的 IP 地址。
在 HTTP 通信鏈上,客戶端和目標服務器之間通常存在某些中轉代理服務器,它們提供對目標資源的中轉訪問。一個 HTTP 請求可能被多個代理服務器轉發,代理服務器按照其使用方法和作用,分為正向代理服務器,反向代理服務器和透明代理服務器。
1. 正向代理服務器
要求客戶端自己設置代理服務器的地址??蛻舳说拿看握埱蠖紝⒅苯影l送到該代理服務器,并由代理服務器來請求目標資源。
2. 反向代理服務器
設置在服務器端,因而客戶端無須進行任何設置。反向代理是指用代理服務器接受 Internet 上的連接請求,然后將請求轉發給內部網絡上的服務器。并將從內部服務器上得到的結果返回給客戶端。
3. 透明代理服務器
透明代理服務器只能設置在網關上,用戶訪問 Internet 的數據報必然都經過網關,如果在網關上設置代理,則該代理對于用戶來說就是透明度,透明代理可以看做是正向代理的一種特殊情況。
代理服務器還提供緩存目標資源的功能,這樣帶來的好處就是用戶下一次訪問同一資源時速度提升上來了。優秀的開源軟件 squid,varnish 都是提供了緩存能力的代理服務器軟件,其中 squid 支持所有代理方式,而 varnish 只支持反向代理。
4.?Share
為什么人會懶惰呢?
一個人每天要從事各種活動,一方面人體從食物中獲取能量,另一方面人的活動又要消耗大量能量。
舉個栗子,人在平躺的時候,能量消耗是最低的,所以從另外一個方面,從身體的角度傾向于最小能量的消耗。
同樣當一個人思考學習新知識,接受新觀念的時候,也是要大量消耗能量的時候,所以人們傾向于不思考或者少思考。
這從另一方面解釋了為什么有的人有主動型思維,而有的人是被動型思維。
主動型思維的人一開始能夠有意識的去訓練自己接尋找,探索新知識,接受不同觀點和事情。慢慢的達到一種主動型的習慣。
而被動型思維的人,習慣于不假思索的接受,不加思考的消化和吸收,從而慢慢喪失辨別事情真偽的能力。(回頭看看你的手機上安裝了多少信息流的 APP,每一天你都要瀏覽多少無用的信息)。?
同理為什么有的人會很勤快呢?
這是為了增加能量消耗。舉個例子,愛健身的朋友通過健身鍛煉,適度出出汗,消耗了能量,但是他們會獲得更好的收益,比如身體更加健康了,外形變得更加美好了,無論是職場還是情場,都更容易受到青睞。
同樣,愿意主動思考學習的人,也是消耗更多,但是成長更快,薪資增長高,收益更多。
舉個栗子,把你丟到一間很干凈整潔的屋子里宅上半把月之后,房子還會有原來那么干凈整潔嗎?
這個世界是一個逐漸慢慢變得熵增的世界。用物理學的語言叫熵減,使得事物通過整理變得有序化,消耗能量,獲得新的空間。
不知道上面幾句話有沒有對你有啟發,如果覺得不錯,歡迎點贊,評論,轉發,留言一起討論。
推薦閱讀
ARTS-第-21-期
聊聊情緒管理
總結
以上是生活随笔為你收集整理的ARTS-第-22-期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构 | 十大排序超硬核八万字详解【
- 下一篇: PHP多进程 - opcode缓存与用户