V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  katsusan  ›  全部回复第 5 页 / 共 23 页
回复总数  449
1  2  3  4  5  6  7  8  9  10 ... 23  
2021-09-28 16:17:31 +08:00
回复了 BBCCBB 创建的主题 程序员 golang WaitGroup 中用到的内存对齐方式会受到 gc 的影响吗?
@BBCCBB #9
> 64 位机器上没要求对象地址必须是 8 的整数倍?
除了一些特别的操作比如 atomic 外,没有强制。但地址对齐对访问内存性能有影响,非对齐地址会导致需要拆分成两次内存访问。在 amd64 下,对于 byte 型数据需要 1 字节对齐,word 需要 2 字节,doubleword 需要 4 字节,quadword 需要 8 字节对齐。

> gc 对象位置在内存里被移动
我看了下 JAVA 的各式 GC 算法里普遍对 young generation 使用 mark-copy 算法,对 old generation 使用 mark-sweep 算法。
你说的移动指的是 copy 过程中的移动吧,Golang 里未采用分代 GC,只有 mark-sweep 。
2021-09-28 11:34:56 +08:00
回复了 BBCCBB 创建的主题 程序员 golang WaitGroup 中用到的内存对齐方式会受到 gc 的影响吗?
> 64 位对齐不是说数据的地址是 8 的整数倍吗... 那为啥这里还有 0 和 4 两种结果?

1 楼例子里的 Wg 是 4 字节对齐的,unsafe.Alignof(wg)或 reflect.TypeOf(wg).Align()可以看到。

> 64 位 mac 上执行这个代码多次, 是会出现 0 和 4 两种结果的

wg 分配在栈上,受 runtime 申请栈空间时获得的地址影响,不一定保证 8 字节对齐还是只满足 4 字节对齐。

> 加一个 fmt.Println(wg)使其在堆上分配

加 fmt.Println 让 wg 分配在堆上利用了 tiny allocator 获得的 tiny block 地址在 64 位环境下为 8 字节对齐,
不代表内存分配器一定会给 wg 返回 8 字节对齐的地址,比如下面的代码里 wg 的地址应该只满足 4 字节对齐。

```Go
type Wg struct {

state1 [3]uint32
}

func main() {
var b bool
var wg Wg
fmt.Printf("%p\n", &b)
fmt.Printf("%p\n", &wg)
}
```
2021-09-27 23:44:00 +08:00
回复了 BBCCBB 创建的主题 程序员 golang WaitGroup 中用到的内存对齐方式会受到 gc 的影响吗?
@BBCCBB #1 加一个 fmt.Println(wg)使其在堆上分配
2021-08-16 01:13:32 +08:00
回复了 vzyw 创建的主题 程序员 大家来推荐几本对职业生涯影响较大的技术书籍
CSAPP+APUE+DDIA
2021-08-06 14:12:35 +08:00
回复了 Pogbag 创建的主题 职场话题 同事翘班半年 报班学算法 现在入职百度了
这是在黑百度嘛
2021-06-22 16:09:15 +08:00
回复了 ericgui 创建的主题 程序员 面对公司屎山,我内心毫无波澜,因为准备跑路了
传统单体应用→聚是一坨屎
拆分成微服务→散是满天稀
2021-05-19 18:35:43 +08:00
回复了 murmur233 创建的主题 前端开发 本人前端开发,想提问:这是一个弱智的需求吗?
非专业前端,这个滚动条应该是有最短长度的吧,否则溢出内容很多的话会不会让滚动条短到肉眼不可见。
2021-04-07 13:25:35 +08:00
回复了 yugiwu 创建的主题 宽带症候群 上海电信到底可以用什么端口?
应该有特征分析,我开远程 rdp 一直没问题,但之前只要一试 socks 代理就随机丢包。
2021-03-29 02:43:23 +08:00
回复了 LeeReamond 创建的主题 Java CPU 乱序执行代码,是 CPU 硬件级别的机制吗?
现代处理器的微架构层面上会将机器指令进一步分解为微指令 micro-ops,根据它们之间是否有 dependency chain 以及 execution unit 限制来决定是否乱序执行。
2021-03-05 19:30:11 +08:00
回复了 ldimple 创建的主题 Go 编程语言 go 语言大佬请进,三协程按序打印 abc 到底哪里出错
@ldimple 按照楼上所说 printC 里即使两次不是原子操作,由于先执行的 CAS(sem1, 1, 0),此时 sema1=0, sema2=1,
应该也不会触发 printB 的条件(sema1=1,sema2=0)吧,为何会走进下面的 printB 逻辑里。
2021-02-24 17:39:18 +08:00
回复了 hsczy 创建的主题 Go 编程语言 Golang 新手求助
golang 里对 channel 的 range 要等到该 channel 被关闭才会终止。
考虑到 channel 的收发特性一般由 sender 端关闭。

而且我看了下 main 函数里 fileChan 容量只有 5,在工资表 xlsx 文件多于 5 个时
下面的 fileChan <- filePathName 操作像是会一直阻塞。
2021-02-03 08:33:22 +08:00
回复了 aureole999 创建的主题 反馈 头像全裂了
而且昨天开始 100%被墙阻断 https,最近 v2 也没干什么大事,难道传说中的白名单模式快来了→_→
2021-01-22 18:47:44 +08:00
回复了 movq 创建的主题 程序员 ld 链接出来的可执行文件无法被执行?提示 No such file or directory
strace -t ./prog
2020-12-11 23:57:58 +08:00
回复了 katsusan 创建的主题 反馈 关于发帖时间和回复时间的显示建议
我搜了下 title 的 tooltip 延迟好像是浏览器设定并且还不能更改。
https://stackoverflow.com/questions/9150796/change-how-fast-title-attributes-tooltip-appears

在我的 Chrome 86 这里要 1 秒左右延迟,感觉可以接受。如果要自定义 tooltip 的话得引入第三方组件
或者用 JS+CSS 实现一个简单的 tooltip(比如官方的 hover::after 示例)。
https://developer.mozilla.org/en-US/docs/Web/CSS/::after
2020-12-11 14:18:52 +08:00
回复了 katsusan 创建的主题 反馈 关于发帖时间和回复时间的显示建议
@Livid 站长辛苦了。另外帖子里只举例了主题的确切时间显示,我在 append 里加上了关于同样显示回复时间的建议,站长有空可以参考下,谢谢。
2020-12-06 15:05:04 +08:00
回复了 RiESA 创建的主题 生活 十二月记事:大战外卖贼历险记
干的漂亮
2020-12-03 23:47:49 +08:00
回复了 vevlins 创建的主题 程序员 协程跟 cpu 有关系吗?
可以参考 下 golang 的协程上下文:
struct runtime.gobuf {
uintptr sp;
uintptr pc;
runtime.guintptr g;
void *ctxt; // 闭包函数首地址,x86_64 下存在 DX 寄存器
runtime/internal/sys.Uintreg ret; // 系统调用返回值
uintptr lr; // ARM 下的 link register
uintptr bp;
}
以 X64 为例,切换上下文的时候大概这样执行:
MOV gobuf_sp RSP;
MOV gobuf_bp RBP;
MOV gobuf_ctxt RDX;
MOV gobuf_ret RAX;
MOV gobuf_pc RBX;
JMP *RBX;
谷歌搜索下 online code collaboration 的第一个答案 codeshare 看着还不错
1  2  3  4  5  6  7  8  9  10 ... 23  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5413 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 43ms · UTC 08:40 · PVG 16:40 · LAX 01:40 · JFK 04:40
Developed with CodeLauncher
♥ Do have faith in what you're doing.