摘要:原文地址:https://blog.fanscore.cn/p/34/ 引言 本文以go1.14 darwin/amd64中的原子操作为例,探究原子操作的汇编实现,引出LOCK指令前缀、可见性、MESI协议、Store Buffer、Invalid Queue、内存屏障,通过对CPU体系结构的探究, 阅读全文
posted @ 2021-01-23 18:39 orlion 阅读(431) 评论(2) 推荐(0) 编辑
摘要:原文地址:https://blog.fanscore.cn/p/33/ 先说结论 uintptr 是一个地址数值,它不是指针,与地址上的对象没有引用关系,垃圾回收器不会因为有一个uintptr类型的值指向某对象而不回收该对象。 unsafe.Pointer是一个指针,类似于C的void *,它与地址 阅读全文
posted @ 2021-01-04 20:19 orlion 阅读(138) 评论(0) 推荐(0) 编辑
摘要:原文链接:https://blog.fanscore.cn/p/27/ 一、 函数调用相关指令 关于栈可以看下我之前的这篇文章x86 CPU与IA-32架构 在开始函数调用约定之前我们需要先了解一下几个相关的指令 1.1 push pushq 立即数 # q/l是后缀,表示操作对象的大小 pushl 阅读全文
posted @ 2020-12-16 09:55 orlion 阅读(277) 评论(0) 推荐(0) 编辑
摘要:原文地址:https://blog.fanscore.cn/p/26/ 友情提示:本文排版不太好,但内容简单,请耐心观看,总会搞懂的。 1. 定点数 对于一个无符号二进制小数,例如101.111,如果我们要用2个字节即16位来存储它,我们可以约定用高8位存储小数点前的数字,用低8位存储小数点后的数字 阅读全文
posted @ 2020-12-02 20:16 orlion 阅读(447) 评论(0) 推荐(1) 编辑
摘要:原文地址: https://blog.fanscore.cn/p/24/ 相信大家都听说过内存对齐的概念,不过这里还是通过一个现象来引出本篇话题。 一、求一个结构体的size 猜下下面这个结构体会占用多少字节 type S struct { B byte // Go中一个byte占1字节,int32 阅读全文
posted @ 2020-11-06 07:23 orlion 阅读(398) 评论(2) 推荐(3) 编辑
摘要:原文地址:https://blog.fanscore.cn/p/22/ 一、背景 公司当前有一个用户群的系统,核心功能是根据不同的条件组去不同的业务线中get符合条件的uid列表,然后存到redis中的bitmap中。 举个🌰,如果一个用户群中有两个用户: 3和7,即[3,7],用bitmap表示 阅读全文
posted @ 2020-10-23 22:23 orlion 阅读(384) 评论(0) 推荐(0) 编辑
摘要:语法的二义性 JavaCC不能分析所有EBNF描述的语法,因为EBNF描述的语法本质上具有二义性的情况。C语言中if语句用JavaCC的EBNF可以是如下描述: 作为符合上述规则的具体代码,可以由如下例子: 根据上面的规则分析下这段代码,直观的看上述代码表述的应该是这样的: 但是依据规则仔细分析下, 阅读全文
posted @ 2017-07-12 22:03 orlion 阅读(1001) 评论(0) 推荐(1) 编辑
摘要:基于JavaCC的语法描述 使用JavaCC从token序列中识别出"语句" “表达式” “函数调用” 等语法单位的方法。 只要为JavaCC描述“语句” “表达式” “函数调用” 这样的语法单位各自是由怎样的token序列构成的,就能够对该语法进行分析(parse)。 例如:最简单的赋值表达式可以 阅读全文
posted @ 2017-07-05 21:10 orlion 阅读(4322) 评论(0) 推荐(0) 编辑
摘要:欢迎访问我的最新博客:https://blog.fanscore.cn 一、JavaCC JavaCC是java的compiler compiler。JavaCC是LL解析器生成器,可处理的语法范围比较狭窄,但支持无限长的token超前扫描。 安装过程: 我是从github上down下来的zip压缩 阅读全文
posted @ 2017-06-29 22:30 orlion 阅读(12724) 评论(0) 推荐(1) 编辑
摘要:一、 最近用在学习golang,写了个小工具练练手。通过golang模拟微信网页端,接收微信服务器的消息并定制。可接入图灵机器人的api实现一个微信机器人的小玩具,当然了,可以有更多更好玩的玩法。 二、 地址: https://github.com/Orlion/Gochat Gochat 一个Go 阅读全文
posted @ 2017-04-24 22:11 orlion 阅读(5379) 评论(0) 推荐(0) 编辑