duangsuse::Echo
#文革 #music #history 已故傅聪流亡海外的往事 https://m.youtube.com/watch?v=jQselQcmrtk&t=573s 《恭喜你》《梁祝piano》《我们坐在高高地谷堆旁边》的作者们,如何以莫须有的罪名,惨死在十年浩劫 在宗教卫兵们眼里,世界是简单纯粹的,非红即黑。 今天被称为同志和父母的人,一言不合也会变成间谍,每天拉出来批斗。 它们总觉得,矛头朝向的富人公知不会是自己;看看朝鲜吧,只要内斗足够久,人人都能吃到这“民主红利”。
#文革 #nCov19 #acg 集体主义、贫穷、战争、不公
Louis 的“爱国往左”动画系列:
「想他,他公平」
红小兵祖上留下的献忠牌位显灵,称已在天庭某得一官半职。他献祭了自己..的30岁被优化掉的和善老爸,换得能救千万家的教员归来。
重新白手起家的毛泽东借助民意民怨,再次呼朋引伴(新林彪?)、战胜政敌(彭德怀将军?)后,新新中国会超英赶美吗?
ps. 把小将渴望不劳而获、一夜暴富、蔑视科学与法律的内心独白说出来,那可就反动了😂
https://m.youtube.com/watch?v=rs0h-BxBTtQ&t=9m
Louis 的“爱国往左”动画系列:
「想他,他公平」
红小兵祖上留下的献忠牌位显灵,称已在天庭某得一官半职。他献祭了自己..的30岁被优化掉的和善老爸,换得能救千万家的教员归来。
重新白手起家的毛泽东借助民意民怨,再次呼朋引伴(新林彪?)、战胜政敌(彭德怀将军?)后,新新中国会超英赶美吗?
ps. 把小将渴望不劳而获、一夜暴富、蔑视科学与法律的内心独白说出来,那可就反动了😂
https://m.youtube.com/watch?v=rs0h-BxBTtQ&t=9m
duangsuse::Echo
https://www.bilibili.com/video/BV1P5WqeaErG https://www.bilibili.com/video/BV1esWkeFEdz #game 小西天、无头菩萨&狐狸精剧情分析 狐狸精是好汉,鸟人菩萨说的道理才是基于阴谋 >黄梅那个动画,一整个根本不可能“输” 他被打捞上案,立马向人展示自己血肉里有珠宝, 官兵没杀他,他不觉得算善。 他向贫弱施恩惠,贫弱没有索取更多,知恩图报供奉他,他不觉得是善。 后来凡人以他为中心建立了制度,甚至开始向更多贫弱分享财富,他不觉得是善。…
#china #douyin 日常哄抢…… 还有癌症食堂年入200w的生意😒
https://m.youtube.com/watch?v=dxotx6COtDg
果然,还是要先富才能有道德。 亏掉2.4w,1万1的工钱却说让就让,那好人还不是受穷的人能当!
不知是苦难造就思想,还是思想造就苦难?
> 一群不分你我團結合作的中國人,秉持「你的就是我的、我的還是我的」的傳統美德
社會主義,大家一起共享,你的就是我的,你們去賺錢,我等著你分我。
當年那群返鄉的紅衛兵,年輕的時候每天跟著口號破四舊,打砸文化遺產,老了搶蛋搶魚搶公園跳廣場舞
黄眉:金蝉子,我又赢了
btw. #news 4千亿宁予友邦,不赈家奴。才免除黑爹的贷款,又要撒币,真的是哪个国家让中国割地损外贸,哪个就能当爹,侵略者鹅爹不就是?😅 就怕当年美国没炸日本,让日本赢了,国人还不是要认黄爹…… 哦 已经有黄爹了
要不,还是学老佛爷宣战11国好了,这种经济要什么外交,省得借着大基建贪腐
就算砸锅欠薪众筹黑爹是慈善,向某些准发达岛国发百万奖学金,是什么?
https://m.youtube.com/watch?v=dxotx6COtDg
果然,还是要先富才能有道德。 亏掉2.4w,1万1的工钱却说让就让,那好人还不是受穷的人能当!
不知是苦难造就思想,还是思想造就苦难?
> 一群不分你我團結合作的中國人,秉持「你的就是我的、我的還是我的」的傳統美德
社會主義,大家一起共享,你的就是我的,你們去賺錢,我等著你分我。
當年那群返鄉的紅衛兵,年輕的時候每天跟著口號破四舊,打砸文化遺產,老了搶蛋搶魚搶公園跳廣場舞
黄眉:金蝉子,我又赢了
btw. #news 4千亿宁予友邦,不赈家奴。才免除黑爹的贷款,又要撒币,真的是哪个国家让中国割地损外贸,哪个就能当爹,侵略者鹅爹不就是?😅 就怕当年美国没炸日本,让日本赢了,国人还不是要认黄爹…… 哦 已经有黄爹了
要不,还是学老佛爷宣战11国好了,这种经济要什么外交,省得借着大基建贪腐
就算砸锅欠薪众筹黑爹是慈善,向某些准发达岛国发百万奖学金,是什么?
YouTube
我迷茫了!肌肉男好心幫粉絲募款,承包魚塘卻遭村民哄搶賠光光。中國大量出現慈善餐廳,正能量網紅宣傳「溫良淳樸中國人」...到底哪個才是真中國?小鄭在日本
成為這個頻道的會員並獲得福利:
https://www.youtube.com/channel/UCn2WdaugAANMkiXfUcCNdtA/join
#日本 #台灣 #中國
https://www.youtube.com/channel/UCn2WdaugAANMkiXfUcCNdtA/join
#日本 #台灣 #中國
Forwarded from 🌸 (三咲雅 🍓)
This media is not supported in your browser
VIEW IN TELEGRAM
社区老哥给 Yazi 写了个受 React 启发的 Panes 系统 - 包含了常见的 Rows、Columns、Boxes 部件,每个部件都是一个函数并可以被自由组合和定制(content,padding,margin,borders 等)。
他在 Yazi 的 Discord server 分享了它,看完之后非常震惊,因为默认 UI 被 100% 重写了,并多了一堆新功能(双列布局、尺寸调整、横纵布局切换、窗格选择模式),刚开始我甚至没认出来这是 Yazi。
很开心看到这样的插件出现,也真的很惊讶社区的创造力,目前仍然处于测试阶段,不过有个很棒的演示视频:
他在 Yazi 的 Discord server 分享了它,看完之后非常震惊,因为默认 UI 被 100% 重写了,并多了一堆新功能(双列布局、尺寸调整、横纵布局切换、窗格选择模式),刚开始我甚至没认出来这是 Yazi。
很开心看到这样的插件出现,也真的很惊讶社区的创造力,目前仍然处于测试阶段,不过有个很棒的演示视频:
👍1
Forwarded from yihong0618 和朋友们的频道 (伊)
好像大多数人都忘了 cursor 20 刀一个月是 copilot 的两倍。
#os #rust struct/union不能实现的短字符串(16byte)优化?
https://duanmeng.github.io/2023/12/14/umbra/#:~:text=包含12个或更少字符的短字符串直接存储在字符串头部的剩余12个字节中,从而避免了昂贵的指针间接寻址
https://nan01ab.github.io/2020/12/Umbra.html
可以类比 x32 ABI (指针范围压缩为4GB, 因为大部分单线程不会超过这个数, 就像 int 在x64和x86默认宽度相同)
https://lantian.pub/article/modify-website/x32-abi-docker-containers.lantian/ #dalao 啊
同样,在JDK8+ 默认开启有对象头压缩 -XX:+PrintCompressedOopsMode , 指针压缩后,并不是所有引用都保存在堆中,而是以8个字节为间隔保存引用。
装箱的Int@List.. 即占用 16bytes=64(Mark Word,主要是hashcode)+32(Compressed oops)+32(int)=128bits
CBOR.me 的 cborseq 选项,可以可视化这样的位运算压缩,不过,unaligned read 在一些CPU架构上会报错
https://duanmeng.github.io/2023/12/14/umbra/#:~:text=包含12个或更少字符的短字符串直接存储在字符串头部的剩余12个字节中,从而避免了昂贵的指针间接寻址
https://nan01ab.github.io/2020/12/Umbra.html
可以类比 x32 ABI (指针范围压缩为4GB, 因为大部分单线程不会超过这个数, 就像 int 在x64和x86默认宽度相同)
https://lantian.pub/article/modify-website/x32-abi-docker-containers.lantian/ #dalao 啊
同样,在JDK8+ 默认开启有对象头压缩 -XX:+PrintCompressedOopsMode , 指针压缩后,并不是所有引用都保存在堆中,而是以8个字节为间隔保存引用。
装箱的Int@List.. 即占用 16bytes=64(Mark Word,主要是hashcode)+32(Compressed oops)+32(int)=128bits
CBOR.me 的 cborseq 选项,可以可视化这样的位运算压缩,不过,unaligned read 在一些CPU架构上会报错
Macduan Notes
Umbra: A Disk-Based System with In-Memory Performance
Velox的Memory Management中的SizeClass就参考这边论文 摘要过去十年间,主内存容量的增长使得纯内存数据库系统成为可能,内存系统提供了前所未有的性能。然而,DRAM(动态随机存取存储器)仍然相对昂贵,主内存容量的增长已经放缓。相比之下,过去几年SSD(固态硬盘)的价格大幅下降,它们的读取带宽已增加到每秒千兆字节。这使得将大型内存缓冲区与快速SSD结合作为存储设备变得具
#acg #bilibili https://www.youtube.com/watch?v=mLW35YMzELE 🤔 #recommend
肌肉魔法师马修 有趣的宗教国龙傲天故事
奇奇怪怪的BGM意外得到2亿次播放呢?
「制度之间没有绝对的优劣,却有相对的文明」
不让女性上学的宗教国,不如信仰自由的世俗国。 这是说,文化间存在优胜劣汰,是「崇洋媚外」吗?
——不是!因为欧美日韩台也有宗教!只是强迫人民信仰的救赎,和个体的relief,是种同名反义词
幸运的是,马修代表了魔法世界里警察部门无法承认的,最强的力量
马修最终的胜利,不代表魔法师都完蛋了,而是为更加广泛的新兴职业提供存在的可能。
肌肉魔法师马修 有趣的宗教国龙傲天故事
奇奇怪怪的BGM意外得到2亿次播放呢?
「制度之间没有绝对的优劣,却有相对的文明」
不让女性上学的宗教国,不如信仰自由的世俗国。 这是说,文化间存在优胜劣汰,是「崇洋媚外」吗?
——不是!因为欧美日韩台也有宗教!只是强迫人民信仰的救赎,和个体的relief,是种同名反义词
幸运的是,马修代表了魔法世界里警察部门无法承认的,最强的力量
马修最终的胜利,不代表魔法师都完蛋了,而是为更加广泛的新兴职业提供存在的可能。
YouTube
Creepy Nuts「Bling-Bang-Bang-Born」 × TV Anime「マッシュル-MASHLE-」 Collaboration Music Video #BBBBダンス
「Bling-Bang-Bang-Born」 (2024.1.7.Digital Release)
TVアニメ「マッシュル-MASHLE- 神覚者候補選抜試験編」オープニングテーマ
MASHLE Season 2 Opening Theme
Streaming/Download:https://smar.lnk.to/0AM0sn
THE FIRST TAKE:https://www.youtube.com/watch?v=H6FUBWGSOIc
両A面SG 「二度寝 / Bling-Bang-Bang…
TVアニメ「マッシュル-MASHLE- 神覚者候補選抜試験編」オープニングテーマ
MASHLE Season 2 Opening Theme
Streaming/Download:https://smar.lnk.to/0AM0sn
THE FIRST TAKE:https://www.youtube.com/watch?v=H6FUBWGSOIc
両A面SG 「二度寝 / Bling-Bang-Bang…
duangsuse::Echo
#os #rust struct/union不能实现的短字符串(16byte)优化? https://duanmeng.github.io/2023/12/14/umbra/#:~:text=包含12个或更少字符的短字符串直接存储在字符串头部的剩余12个字节中,从而避免了昂贵的指针间接寻址 https://nan01ab.github.io/2020/12/Umbra.html 可以类比 x32 ABI (指针范围压缩为4GB, 因为大部分单线程不会超过这个数, 就像 int 在x64和x86默认宽度相同)…
#rust #go #algorithm UmbraString 是对带长度指针(py.bytes, rs.slice) 的(免链接inline),而 SwissTable 是对Hash预分组查表的免链接!
我们知道,Java 存在(装箱boxing) 一说,也就是int,char等字面值的堆分配 (这是泛型擦除 vs template<>化新建的编译期细节),因此JDK8用class Stream.OfInt{}缓解了reified泛型的缺失
那么,(拆箱unwrap) 其实就是在值的内存上内联,像C++栈分配。 除了禁止null,拆箱在运行时有省内存GC、免链接、CPU快取等好处
这么好的算法升级,实现难吗?
map采用预分组查表,哈希值冲突(哈希值一样)的键值对会被放在一个桶中,查找桶=hash(key) mod size,然后再遍历桶中Eq的元素,这里有通过额外的bit做更快的检查。 #dalao https://gufeijun.com/post/map/1/
一旦map的负载因子(键值对个数与桶个数比值)过大,查找需要线性遍历多个桶,性能会退化为O(n),所以这种实现需要更频繁地对桶进行扩容,保持负载因子在低水平。
拉链法是大多数编程语言的选择,每个桶后面跟上一个链表,所有的同义词通过链表中节点形式串联
SwissTable 使用一种称为Closed Hashing的方案。每一个哈希值都会有一个自己的槽位(slot),槽的选择是由哈希值决定,从hash(key) mod size的槽开始查找,一直往后查找到空的槽(null)
SwissTable也是和内建的map一样采用短哈希(8b hash),以便支持快速检查,但是它的元数据却是独立存储的,和哈希值存储分开。
把hash值分为高7位和低57位:
高7位用在control byte中解决hash冲突 (这7位只是以很低的代价,减少了90%键与键的比较。)
低57位是slot的指针,每个slot对应一个1一个byte的控制字节。
Control byte的高1位用于表示状态 0xFF=undef, 0x80=null值 ,低7位用于存储hashcode的高7位
128bit对齐的连续8字节的control byte称为一个group
使用这种方式,可以通过SIMD 指令并行比较 16 个短哈希,比 std::unord_set 快两倍 (map只是K:V元组按K搜的set)
Flat hashtable不仅仅只是CPU CACHE友好,这样的结构配合原子操作,相信很容易做出一个并发版本的hash table
我们知道,Java 存在(装箱boxing) 一说,也就是int,char等字面值的堆分配 (这是泛型擦除 vs template<>化新建的编译期细节),因此JDK8用class Stream.OfInt{}缓解了reified泛型的缺失
那么,(拆箱unwrap) 其实就是在值的内存上内联,像C++栈分配。 除了禁止null,拆箱在运行时有省内存GC、免链接、CPU快取等好处
这么好的算法升级,实现难吗?
map采用预分组查表,哈希值冲突(哈希值一样)的键值对会被放在一个桶中,查找桶=hash(key) mod size,然后再遍历桶中Eq的元素,这里有通过额外的bit做更快的检查。 #dalao https://gufeijun.com/post/map/1/
一旦map的负载因子(键值对个数与桶个数比值)过大,查找需要线性遍历多个桶,性能会退化为O(n),所以这种实现需要更频繁地对桶进行扩容,保持负载因子在低水平。
拉链法是大多数编程语言的选择,每个桶后面跟上一个链表,所有的同义词通过链表中节点形式串联
SwissTable 使用一种称为Closed Hashing的方案。每一个哈希值都会有一个自己的槽位(slot),槽的选择是由哈希值决定,从hash(key) mod size的槽开始查找,一直往后查找到空的槽(null)
SwissTable也是和内建的map一样采用短哈希(8b hash),以便支持快速检查,但是它的元数据却是独立存储的,和哈希值存储分开。
把hash值分为高7位和低57位:
高7位用在control byte中解决hash冲突 (这7位只是以很低的代价,减少了90%键与键的比较。)
低57位是slot的指针,每个slot对应一个1一个byte的控制字节。
Control byte的高1位用于表示状态 0xFF=undef, 0x80=null值 ,低7位用于存储hashcode的高7位
128bit对齐的连续8字节的control byte称为一个group
使用这种方式,可以通过SIMD 指令并行比较 16 个短哈希,比 std::unord_set 快两倍 (map只是K:V元组按K搜的set)
Flat hashtable不仅仅只是CPU CACHE友好,这样的结构配合原子操作,相信很容易做出一个并发版本的hash table
Gufeijun
一个系列彻底搞懂map(一):hash表 - 辜飞俊的博客
duangsuse::Echo pinned «#反直觉 的 #经济 :节省越多,财富越停滞;资本家越少,国民越接近非酋? 这就是通缩危机:存钱-不消费-倒闭-削价竞争-你被降本增笑-更难存钱.. 😊 等倒闭的足够多,价格内卷就会换成恶性通胀 (简称国家滞胀)。 这样,之前辛苦劳动的棺材本,就要「清零」了!! 因此,政府那么急于靠调休逼购打破通缩螺旋。印钞,其实就是国在借,到期国家不还你钱,就只能换你国家了。 正所谓:资本亡我之心不死啊!韭菜敢争,主权会乱 > 这类流通性危机(即储蓄不花等人借),其实是供销自我平衡的过程,而外贸(输出"技术"革命)能缓解这些波动。…»
duangsuse::Echo
#反直觉 的 #经济 :节省越多,财富越停滞;资本家越少,国民越接近非酋? 这就是通缩危机:存钱-不消费-倒闭-削价竞争-你被降本增笑-更难存钱.. 😊 等倒闭的足够多,价格内卷就会换成恶性通胀 (简称国家滞胀)。 这样,之前辛苦劳动的棺材本,就要「清零」了!! 因此,政府那么急于靠调休逼购打破通缩螺旋。印钞,其实就是国在借,到期国家不还你钱,就只能换你国家了。 正所谓:资本亡我之心不死啊!韭菜敢争,主权会乱 > 这类流通性危机(即储蓄不花等人借),其实是供销自我平衡的过程,而外贸(输出"技术"革命)能缓解这些波动。…
> 通货紧缩亦现货膨胀、通货膨胀亦缺现货紧缺。 印钞时最初要让"提货单"和现货间成比例,降息最终是鼓励消费和创业,而不是让钱变成房价租比售那样泡沫化
> 高财务杠杆,是指举债高于资本担保的事业或「刚需」
#防自学
> 高财务杠杆,是指举债高于资本担保的事业或「刚需」
#防自学
Forwarded from Rachel 碎碎念 (Rachel 🐨)
#有意思的文章
茶颜悦色独有的、接地气的人文关怀,我喜欢这个品牌的原因
当时看到这篇文章就很有感触,在长沙这座不夜城,隐藏在闹市背后的清洁工们,的确值得更多的关注与善意
中秋回长沙,点一杯鸳央咖啡,碰巧发现了他们在文章里提到的明信片,于是又想起来这篇文章;环卫工人们日复一日的坚守,也值得被更多人看到:
《那些帮茶颜收尾的人》
https://mp.weixin.qq.com/s/kFULADCn2bQgG3TTAoAJUw
茶颜悦色独有的、接地气的人文关怀,我喜欢这个品牌的原因
当时看到这篇文章就很有感触,在长沙这座不夜城,隐藏在闹市背后的清洁工们,的确值得更多的关注与善意
中秋回长沙,点一杯鸳央咖啡,碰巧发现了他们在文章里提到的明信片,于是又想起来这篇文章;环卫工人们日复一日的坚守,也值得被更多人看到:
《那些帮茶颜收尾的人》
https://mp.weixin.qq.com/s/kFULADCn2bQgG3TTAoAJUw
👍2
duangsuse::Echo
#rust #go #algorithm UmbraString 是对带长度指针(py.bytes, rs.slice) 的(免链接inline),而 SwissTable 是对Hash预分组查表的免链接! 我们知道,Java 存在(装箱boxing) 一说,也就是int,char等字面值的堆分配 (这是泛型擦除 vs template<>化新建的编译期细节),因此JDK8用class Stream.OfInt{}缓解了reified泛型的缺失 那么,(拆箱unwrap) 其实就是在值的内存上内联,像C++栈分配。…
#algorithm #防自学 🤓 让我来示范一下怎么概括算法思路
要介绍的是在stdlib里,用于组织集合类、JSON的3个重要结构:
它们对各种app和其他算法性能效能的重要性,好比json(cbor.me)之于REST、zip之于jvm和pip。 因为是涉及SDK实现的内容,也主观评价下语法设计
下面用胖指针(x64上void*是8b, 胖指16b)、链表、快速排序简单的实现3者 #code
https://colobu.com/2023/06/29/replace-std-map-faster/chunk-index-memory.jpg
用例和 #haskell #code https://gist.github.com/duangsuse/26b80c39e1d8f7549b9cf244d8de1ce4
题外话,闭包值和 x.interface_cast(T) 的双指针&dyn 随结构传入T的函数表
UmbraString 和上文Str{n,buf}胖指针一样是16b,但它的.n和jvm一样只寻址[4b:int]的长度,其后最少随4b的免链接char 用于比大小
对于n>12的buf,剩下8b换成指针,指针的高2位用于标记GC信息: 持久pin、临时ref、用后即焚val
很明显!这是一种灵活利用了x86内存布局的b"length"实现,和x32压缩指针一样,节省了sort解指针的时间
SwissTable 是对Hash预分组查表的免链接。我们知道, dict/HashMap/lua.Table 这样的{K:V, K1:V} 单映射常被用于查找和缓存,在C++里更是会区分 unordered_map, rb_map(以排序radix,SortedSet,而非hash作为预分组线索)
它的最简实现是lisp里的链表
即便8b hashCode,也是一定会冲突的,哪怕是int.hash也会因 buck[hash%nBuck] 有限而退化为线性查找,负载因子(kv/nBuck 过大),这时就要扩容。Go的扩容基于一种空间换时间的优化(图1, 为了减少求余数的冲突,除数都会采用2的指数)
扩容后的冲突集,可以用链表(UnionFind)或数组(slot), 从那往右找
Swiss 更聪明,它对每slot对应1b的元数据,最高位0x80=无效项 ,0xFF=null结尾 ,低7位用于存储hashcode的高7位,这么摘要是为了SIMD128bit 1次对比8个KV
不仅仅只是CPU CACHE友好,这样的结构配合原子操作,相信很容易做出一个并发版本的hash table
快速求余(x,n)= uint32((uint64(x) * uint64(n)) >> 32)
#dalao https://init.blog/fast-newton-sqrt/
最近的一种基于partition(区间而非idx)的快排也很有趣: less than pivotL | between pivotL and pivotR | greater than pivotR
要介绍的是在stdlib里,用于组织集合类、JSON的3个重要结构:
b"ytesPtr", {K:V}, sorted([0 2 1])=[0 1 2]它们对各种app和其他算法性能效能的重要性,好比json(cbor.me)之于REST、zip之于jvm和pip。 因为是涉及SDK实现的内容,也主观评价下语法设计
下面用胖指针(x64上void*是8b, 胖指16b)、链表、快速排序简单的实现3者 #code
#define Col(...) typedef struct{__VA_ARGS__;} T;
#define T Str
Col(size_t n; char* buf) //C的类型本应默认为指针, *胖指针,像kt那样对Int等类型免链接化。简洁的UNIX里,Type* 快成为public那样的形式主义啦
#define T_Link(E,T) struct T{E x; T* xs;}
T_Link(int,Nums) //template<T> 允许类型推理,即一致化调用和返回处的<T>。可怜gcc/clang无论对宏还是模板的报错皆如内容农场,不具有可读性https://colobu.com/2023/06/29/replace-std-map-faster/chunk-index-memory.jpg
用例和 #haskell #code https://gist.github.com/duangsuse/26b80c39e1d8f7549b9cf244d8de1ce4
题外话,闭包值和 x.interface_cast(T) 的双指针&dyn 随结构传入T的函数表
qsort :: (Ord a) => [a] -> [a]
qsort [] = []
qsort (x:xs) =
let smallerSorted = qsort [a | a <- xs, a <= x]
largerSorted = qsort [a | a <- xs, a > x]
in smallerSorted ++ [x] ++ largerSorted
UmbraString 和上文Str{n,buf}胖指针一样是16b,但它的.n和jvm一样只寻址[4b:int]的长度,其后最少随4b的免链接char 用于比大小
对于n>12的buf,剩下8b换成指针,指针的高2位用于标记GC信息: 持久pin、临时ref、用后即焚val
很明显!这是一种灵活利用了x86内存布局的b"length"实现,和x32压缩指针一样,节省了sort解指针的时间
SwissTable 是对Hash预分组查表的免链接。我们知道, dict/HashMap/lua.Table 这样的{K:V, K1:V} 单映射常被用于查找和缓存,在C++里更是会区分 unordered_map, rb_map(以排序radix,SortedSet,而非hash作为预分组线索)
它的最简实现是lisp里的链表
T_Link(struct {int A,B;}, int_LnKV) :没留任何线索来减枝!即便8b hashCode,也是一定会冲突的,哪怕是int.hash也会因 buck[hash%nBuck] 有限而退化为线性查找,负载因子(kv/nBuck 过大),这时就要扩容。Go的扩容基于一种空间换时间的优化(图1, 为了减少求余数的冲突,除数都会采用2的指数)
扩容后的冲突集,可以用链表(UnionFind)或数组(slot), 从那往右找
Swiss 更聪明,它对每slot对应1b的元数据,最高位0x80=无效项 ,0xFF=null结尾 ,低7位用于存储hashcode的高7位,这么摘要是为了SIMD128bit 1次对比8个KV
不仅仅只是CPU CACHE友好,这样的结构配合原子操作,相信很容易做出一个并发版本的hash table
快速求余(x,n)= uint32((uint64(x) * uint64(n)) >> 32)
#dalao https://init.blog/fast-newton-sqrt/
float InvSqrt(float x) {
float xhalf = 0.5f*x;
int i = *(int*)&x;
i = 0x5f3759df - (i >> 1);
x = *(float*)&i;
x = x*(1.5f - xhalf*x*x);
return x;
}最近的一种基于partition(区间而非idx)的快排也很有趣: less than pivotL | between pivotL and pivotR | greater than pivotR
#dalao https://t.iss.one/hyi0618/4123
今天看到 Eric Zhang 的简历令我震惊 https://www.ekzhang.com/resume
学术上:
在哈佛读 A.B. in Computer Science and Mathematics 和 S.M. in Computer Science 双硕士学位,以优异成绩毕业,获得该领域最高荣誉
参与教学,并获得多个教学证书;各种研究均有论文发表。
工作上:
创业公司 Modal 的创始人之一。在多家硅谷科技公司公司工作过,包括 Nvidia 的实习经历。工作所使用的语言包括 C++, Rust, Python, Go, JavaScript (Svelte)。从底层基础设施到上层应用构建都有涉及。
开源上:
有多个热门开源项目,包括 sshx (5000 stars), Bore (8000 stars), Rustpad (3000 stars), Graphics Workshop (2000 stars), 还有十来个几百 stars 的项目。这些项目都有很好的代码质量,和 UI 上的克制审美。
https://www.ekzhang.com/graphics-workshop/ #glsl
Eric Zhang 真的颠覆了我的认知,第一次见到这般学术极其优异又开发能力很强,还非常年轻的人。除了佩服还是佩服,甚至没有任何对比和忌妒的想法,这样的人的存在就像火炬一样,让我保持自己的要求,坚定自己的追求,始终学习和进步。
今天看到 Eric Zhang 的简历令我震惊 https://www.ekzhang.com/resume
学术上:
在哈佛读 A.B. in Computer Science and Mathematics 和 S.M. in Computer Science 双硕士学位,以优异成绩毕业,获得该领域最高荣誉
参与教学,并获得多个教学证书;各种研究均有论文发表。
工作上:
创业公司 Modal 的创始人之一。在多家硅谷科技公司公司工作过,包括 Nvidia 的实习经历。工作所使用的语言包括 C++, Rust, Python, Go, JavaScript (Svelte)。从底层基础设施到上层应用构建都有涉及。
开源上:
有多个热门开源项目,包括 sshx (5000 stars), Bore (8000 stars), Rustpad (3000 stars), Graphics Workshop (2000 stars), 还有十来个几百 stars 的项目。这些项目都有很好的代码质量,和 UI 上的克制审美。
https://www.ekzhang.com/graphics-workshop/ #glsl
Eric Zhang 真的颠覆了我的认知,第一次见到这般学术极其优异又开发能力很强,还非常年轻的人。除了佩服还是佩服,甚至没有任何对比和忌妒的想法,这样的人的存在就像火炬一样,让我保持自己的要求,坚定自己的追求,始终学习和进步。
Telegram
yihong0618 和朋友们的频道
今天看到 Eric Zhang 的简历令我震惊 https://www.ekzhang.com/resume
学术上:
在哈佛读 A.B. in Computer Science and Mathematics 和 S.M. in Computer Science 双硕士学位,以优异成绩毕业,获得该领域最高荣誉 (Graduated magna cum laude, with highest honors in field.)。在校期间就参与教学,并获得多个教学证书;各种研究均有论文发表。
工作上:…
学术上:
在哈佛读 A.B. in Computer Science and Mathematics 和 S.M. in Computer Science 双硕士学位,以优异成绩毕业,获得该领域最高荣誉 (Graduated magna cum laude, with highest honors in field.)。在校期间就参与教学,并获得多个教学证书;各种研究均有论文发表。
工作上:…