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