Go Unsafe

看了一些關於unsafe包的文章,長話短說: unsafe.Pointer就是一個純指針, 它很聰明, 如果對象改變了地址它也會自動改變.並且保持對對象的引用, 這樣對象不會被回收. uintptr就是一個比較大的整型, 能容下任何指針地址, 但是這個不會跟隨對象改變地址…而且對象還會被回收…

2021年04月08日 · 1 分钟 · 154 字 · sdttttt

記錄一次Gradle構建的困難

受@idiotc4t所託, 我拿到了一個Java項目, 目的是要把這玩意編譯出來, 最初我還以為和以前的Java項目類似, 只要mvn build 就能一了百了, 沒想到這次拿到的是一個使用gradle構建的項目. gradle的出現比maven晚, 它們都是用來構建運行在JVM上的應用使用的, gradle可以使用編程語言來自定義你的構建流程, 類似C的makefile(這個比喻不太好其實), 或者是JavaScript的gulp. gradle解決了maven的一些特點, 比如xml的配置繁瑣, 看著就頭大, 以及構建步驟的靈活控制. 總之很牛逼就是了, 也比較難上手. ...

2021年02月05日 · 2 分钟 · 667 字 · sdttttt

節流與防抖

閒來無事在網上翻一些關於 Javascript 的一些搞基技巧,就發現了節流與防抖這兩種設計模式。 上個星期在編寫搜索框的時候就已經寫過類似的代碼 (搜索框輸入關鍵詞會實時去服務器上搜索,考慮到服務器壓力就把代碼加了限制,每 500ms 最多搜索一次,實際上這就是類似防抖的設計,只是我還不知道這個叫防抖…) ...

2021年01月18日 · 1 分钟 · 469 字 · sdttttt

Composition Api

最近一直在寫 Vue, 在公司的項目裡使用的是Composition Api + Vue2 的組合. (因為公司裡考慮到同事的技能樹, 沒有用vue3和Typescipt). CA 是 Vue3 追加的全新 API. 用到 Vue2 裡可能有點怪怪的. 不過 CA 是以 Vue-Plugin 的方式提供的 API, 所以使用起來非常方便. 同時也鼓勵更多人使用這個API. ...

2021年01月14日 · 3 分钟 · 1296 字 · sdttttt

Sql Optimize

本文主要講關於SELECT語句的優化問題. 會涉及到一些關於表索引的知識. 性能 很簡單, 你每建立一個索引, 數據庫就會根據索引類型,幫你建立一個索引數據結構(B+樹非常常用). NOTE:B+樹 B+樹對範圍查詢和直接查詢都很在行. 直接查詢的時間複雜度均為O(log), 也就是用的二分法, 具體為什麼就去看B+樹的數據結構, 在看B+樹之前最好先看B樹, 不然東西太多消化不了. ...

2020年11月19日 · 4 分钟 · 1991 字 · sdttttt

Go的map的個什麼結構

實際上Go的map和Java7之前的HashMap, 非常相似。都是Array + LinkedTable的結構。 結構 map數據結構由runtime/map.go/hmap定義: 1 2type hmap struct { 3 count int // 當前保存的元素個數 4 ... 5 B uint8 // 指示bucket數組的大小 6 ... 7 buckets unsafe.Pointer // bucket數組指針,數組的大小為2^B 8 ... 9} bucket數據結構由runtime/map.go/bmap定義: ...

2020年11月13日 · 1 分钟 · 437 字 · sdttttt

Impl and Dyn on Rust

我們先來看這樣一段代碼: 1 2impl View for Button { ... } 3 4impl View for Text { ... } 我們看到Button和Text都實現了View屬性, 抽象是一種不錯的設計程序的方法, 幫助我們透明化的使用外部提供的API. 然後我們可能會下意識的寫出下面的代碼: ...

2020年11月12日 · 2 分钟 · 567 字 · sdttttt

Cache Algorithm

本文主要講的是目前存在的幾種緩存算法, 沒錯, 我又來誤人子弟了. 內容會圍繞近幾年比較流行的LFU, LRU, 還有W-TinyLRU這麼三種緩存算法來講, 儘量使用最簡練的文本. LFU 近期最少使用算法,即LFU算法(Least Frequently Used algorithm)。 這種算法會淘汰近期最少訪問的緩存, 仔細分析一下, 沒錯,這是一種非常合理的算法,因為到目前為止最少使用的頁面, 很可能也是將來最少訪問的頁面。 該算法既充分利用了內存中緩存調度情況的歷史信息,又正確反映了程序的局部性。 ...

2020年10月26日 · 4 分钟 · 1533 字 · sdttttt

2020-10-22

昨天算是完成了第一個前端上需求.來講講成果吧. (其實根本無關緊要) 看了SVN記錄,整個項目第一次提交是在2018年. (立項的時間感覺肯定更早) 整體技術使用的基本時原生JS(沒有ES6) + Jquery. 項目代碼風格凌亂. 肯定有好幾個人接手過了. ...

2020年10月22日 · 1 分钟 · 374 字 · sdttttt

RocketMQ 3.3.4 Broker

差不多可以看消息隊列的源碼了。 在下從gitee上找到了rocketmq的早期版本(3.2.2), 壞消息是這個2014年的項目裡沒有單元測試極少, 調試會比較困難. 好消息是這個時候的RocketMQ還沒開源多久,裡面有很多中文註釋。看起來會很舒服。 ...

2020年10月13日 · 2 分钟 · 799 字 · sdttttt