V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  bruce0  ›  全部回复第 1 页 / 共 9 页
回复总数  172
1  2  3  4  5  6  7  8  9  
6 小时 11 分钟前
回复了 kerb15 创建的主题 程序员 公司安全软件每 15 秒会偷偷截一次屏
@windd 应该能检测到你去那些网站里,但是内容看不到,你打开那些 APP 了,内容也是看不到的,比如知道你上微信了,知道你刷抖音了, 但是你是在抖音看小姐姐还是看别的 就不知道了
7 天前
回复了 beeyoung 创建的主题 职场话题 开除员工 是个很艰难的决定
我个人不太认同把工作年限和能力和薪资画等号的, 很多人工作 10 年和工作 1 年没有区别, 后面 9 年一直在原地踏步甚至还退步了
工控机应该适合你
生产环境直接人工修改数据库, 大公司估计不会这么干吧,估计开发也没权限
兄弟,给个链接 我也想买个,一直没找到合适的
@tyrantZhao 我也倾向在游戏里折腾,但是游戏大多是 C++的,面 C++又要学一遍 C++ 0.0


@MrVito 是个办法 ♪(^∀^●)ノ
@pengtdyd 我觉得也是

@Brian1900 简单,开发快
@squkw 说实话这家公司还是挺好的,老板和 leader 都很 nice , 但是怎么说呢,就是感觉在这到顶了,很难突破了, 所以考虑换一个了

@fireleaves 邮箱我保存了,年后要换的时候联系老哥
@sagaxu 现在就是 995 模式 0.0

@GTim 200 人是公司总人数,我们组不到 10 人,我现在基本是一人之下 6 人之上了。leader 是基本不会辞职的了公司规模也不会扩,不会新开一个组,还有个问题就是,不跳怎么涨工资 0.0
不想被别人调用服务 HTTPS 双向认证应该能满足你的需求, 如果怕别人破解 app 拿到证书, 用 C++写相关的代码, 加大反编译难度
79 天前
回复了 zemul 创建的主题 Go 编程语言 golang map 并发读写竞争问题
@sunny352787 sync.Map 这个适用于读多写少的情况,如果是写多读少的话 自己加锁 可能会更高。当然,绝大多数并发 情况下, 无脑 sync.map 就好了
@eitomomobaohua 我和你差不多 我刚上大学那会 也会用 360 浏览器,听喜欢那里的插件。后来知道了 chrome ,但是不能安装插件(网络原因)。再后来知道了科学上网工具,360 就再也没用过了。
没有内容审查,想写啥就写啥(前提是合法) 数据自主可控.

我之前想过自己弄 但是自己弄, 不开评论,不太好用, 开了评论怕有人搞 想了想还是算了 继续用平台吧
华硕的无畏 14 也不错 老早就想入手了, 但是有个台式机了 还是忍住了 jd 连接 https://item.jd.com/100021150228.html
89 天前
回复了 homie2018 创建的主题 程序员 有没有比较好的日志聚合工具或者技术
filebeat + Logstash
国籍警告 (/dog)
弄了个台式机 还是大板的, 每次搬家都很累. 之前玩游戏+生产力 自己组的台式机, 现在不怎么玩游戏了 想把台式机卖了换笔记本了 但是卖割肉太多了
@XTTX @sunkai0609 不好意思,上午的时候 没有仔细分析 说的有点问题。刚去翻了源码看了一下。又想了一下。

第一点,上午我说的 interface 类型的,可以看做指针是有问题的。其实 interface 也是一个类型。不能简单当做指针理解。

重点,为什么不用 ic := i 就会去堆上申请内存呢, 其实,这里还是内存逃逸的问题。

如果 `i` 传的是一个 非指针类型的变量, 那 在调用 tryLoadOrStore() 时,是复制的,

这里 `atomic.CompareAndSwapPointer(&e.p, nil, unsafe.Pointer(&ic))` 是取地址的,就会导致内存逃逸。

而加上 `ic := i` 之后, 后面取的是 `ic`的地址,就不会导致 `i` 逃逸了

上一段代码就好理解了


```
func main() {
}

func fun1(i1 interface{}) {
atomic.CompareAndSwapPointer(nil, nil, unsafe.Pointer(&i1))
}

func fun2(i2 interface{}) {
ic := i2
atomic.CompareAndSwapPointer(nil, nil, unsafe.Pointer(&ic))
}
```

用 ` go build -gcflags="-m -l" .\main.go` 命令 做内存逃逸分析

结果是

.\main.go:11:11: moved to heap: i1
.\main.go:15:11: leaking param: i2
.\main.go:16:2: moved to heap: ic

i1 分配到堆上了 ic 分配到堆上了 i2 是在栈上的, 相当于通过一次复制, 阻断了内存逃逸

我也是菜鸡 说的可能也不对 目前来看 这样似乎能解释的通
`为什么不用 ic := i 就会去堆上申请内存呢` 这个 我感觉是内存逃逸的问题吧, i 是一个 interface 类型的变量, 可以看做是传指针的, ```atomic.CompareAndSwapPointer(&e.p, nil, unsafe.Pointer(&ic))``` 直接传 `i` 的话, 因为 i 是一个外部变量, 函数作用域结束后还会存在, 所以 编译器在做内存逃逸分析的时候, 会分配到堆上
1  2  3  4  5  6  7  8  9  
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2768 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 12:58 · PVG 20:58 · LAX 04:58 · JFK 07:58
♥ Do have faith in what you're doing.