Algorithm:每週至少作一個leetcode的算法題;
Review:閱讀並點評至少一篇英文技術文章;
Tip/Techni:學習至少一個技術技巧;
Share:分享一篇有觀點和思考的技術文章。java
本週的算法題是一道關於鏈表的題目19. Remove Nth Node From End of List,給定一個列表,要求移除倒數第n個節點,並返回頭結點。
node
因爲咱們並不知道列表有多長,因此得遍歷列表探測當前節點是不是列表尾節點,又由於咱們須要移除倒數第n個節點,所以咱們使用兩個間距爲n的指針來指向先後兩個節點,當前面的節點指向尾節點的時候,後面的指針指向的節點的下一個節點正好是咱們須要移除的倒數第n個節點。
python
public ListNode removeNthFromEnd(ListNode head, int n) { //哨兵節點 ListNode guard = new ListNode(0); guard.next = head; ListNode first = guard; ListNode second = guard; for (int i = 0; i < n + 1; i++) { first = first.next; } while (first != null) { first = first.next; second = second.next; } //當first走到尾節點的時候,second.next就是咱們要移除的節點 second.next = second.next.next; return guard.next; }
本次review的文章是Logging Activity With The Web Beacon API。Beancon API是一種基於js的web api,能夠用於將少許數據從瀏覽器發送到給web服務端,而不用等待響應。在這篇文章裏,咱們將看到它能用來作什麼,它和ajax技術的不一樣點,以及如何使用它。
react
Beancon使用場景,例如Google Analytics只須要記錄頁面行爲發送到服務器而無需獲取服務器的響應。web
另外一種使用場景是從js代碼中記錄信息,它能夠在遊戲建立保存點,收集有關功能使用的信息,或記錄多變量測試的結果,這些事情均可以考慮使用Beacon。
ajax
一般,你可使用unload或beforeunload事件來執行日誌記錄。 當用戶執行相似跟蹤頁面上的連接以導航時,會觸發這些操做。 這裏的問題是在其中一個卸載事件上運行的代碼能夠阻止執行並延遲卸載頁面。 若是頁面的卸載被延遲,那麼加載下一頁也會延遲,所以體驗感受很是緩慢。Beacon經過排隊請求而不阻塞來解決這個問題,將控制權當即返回到您的腳本。 而後瀏覽器負責在後臺發送該請求而不會阻塞。 這使得一切都變得更快,這讓用戶更快樂,讓咱們都能保住工做。
算法
使用Beancon很簡單,代碼以下:後端
let result = navigator.sendBeacon(url, data);
返回一個boolean類型的結果,若是瀏覽器接受請求並將其排隊,則爲true;若是執行此操做,則爲false。
api
navigator.sendBeacon
方法有兩個參數,第一個參數是要請求的URL,請求類型是POST,發送第二個參數中所帶的數據。瀏覽器
// URL to send the data to let url = '/api/my-endpoint'; // Create a new FormData and add a key/value pair let data = new FormData(); data.append('hello', 'world'); let result = navigator.sendBeacon(url, data); if (result) { console.log('Successfully queued!'); } else { console.log('Failure.'); }
Beancon支持絕大多數瀏覽器,除了IE(支持Edge)和Opera mini,可使用navigator.sendBeacon
測試當前瀏覽器是否支持。
if (navigator.sendBeacon) { // Beacon code } else { // No Beacon. Maybe fall back to XHR? }
除了上文,文中還展現了一個在頁面上記錄時間的實例。
Beancon API是一種很是有用的方法能夠把數據從頁面發回服務器,尤爲是在記錄上下文環境中。它支持的瀏覽器也很是普遍,它使您可以無縫地記錄數據,而不會對用戶的瀏覽體驗和站點性能產生負面影響。請求的非阻塞性質意味着比XHR、Fetch等其餘替代方案有更快的性能。
更多信息請查閱下列文章:
這周學習用pyqt5寫了個帶GUI的python小軟件,但也僅僅是使用了pyqt的一點皮毛而已,在此只是推薦一下pyqt,做爲使用python編寫GUI的一個選擇。
今天分享一篇比較有意思的文章,來自於React團隊成員、Redux做者Dan Abramov的年終總結Things I Don’t Know as of 2018,文章主要敘述了做者不是很擅長的一些知識,好比Unix命令、bash、低級語言、容器、python、node後端、java等等,做者在文章的結尾道出了他寫做此文的意圖: