V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Orlion  ›  全部回复第 2 页 / 共 2 页
回复总数  36
1  2  
2022-08-31 19:05:38 +08:00
回复了 yezheyu 创建的主题 程序员 请教一个高级语言中函数调用栈相关的问题
闭包其实挺好理解的,比如你有一个函数,会返回一个回调函数,这个回调函数中会持有一些自己的局部变量
function bar() {
return function() {
int tmp = 1;
print(tmp);
}
}
callback = bar();
callback();

你当然也可以不返回回调函数,而是返回一个 class,就像下面这样:
class C {
private int tmp;

public C(int tmp) {
this.tmp = tmp;
}

public callback() {
print(tmp);
}
}

function foo() C {
c = new C(1);
return C;
}
foo().callback();

达成的效果其实是一样的,返回的闭包函数其实就等价于一个带有私有属性和一个 method 的 class 。
2021-12-13 16:52:17 +08:00
回复了 kingofzihua 创建的主题 Linux 问一个协程方面的问题
1. 协程解决的问题
java 实现一个支持并发的 http server,最简单的方案可能就是拿到一个连接就创建一个线程来执行,即一个多线程的 server 。这个 server 连接数高了性能就会非常差,因为线程数会很高,线程切换开销比较大。

现在有个协程,因为协程开销比较小,你仍然可以用这个简单的思路去实现,即拿到一个连接就创建一个协程来执行。go 标准库中 http server 就是这么实现的,简单粗暴。在 go 中实际是封装了 epoll(linux 平台),由 runtime 调度协程跑在很少数量的线程上,实际上压根就不是原始的多线程方案了,应该是 epoll 方案,所以对于用户来说能以很简单的方式就能实现高性能并发,这就是协程解决的问题之一。
2021-09-17 18:45:29 +08:00
回复了 paranoiddemon 创建的主题 程序员 编译原理大家是怎么学习的?
网易云课堂有个视频: https://study.163.com/course/introduction/1002830012.htm ,可以跟着敲一遍代码应该就懂了,再回头看各种编译原理的理论就好懂了。by the way,前端学完了感觉就那么回事,无非就是一些算法,真正的星辰大海还是后端😄。
2021-09-09 18:39:13 +08:00
回复了 teliang 创建的主题 Java 记录一个诡异的线上宕机事故,大佬们帮忙排查一下问题呀
Navicat 和微服务查询同一条 SQL 时间差这么多 可能是有慢查询导致连接池满了,请求线程都在等连接。

还是上监控吧😄
2021-09-07 18:51:00 +08:00
回复了 flycloud 创建的主题 Go 编程语言 golang 内存回收的疑问
进到 swap 了?
2021-04-06 18:34:07 +08:00
回复了 zkdfbb 创建的主题 Go 编程语言 map 的一个神奇的问题
init 函数中 accessLog = Counter{data: make(map[string]int)}这句代码不是原子的吧,换成
accessLog.Lock()
accessLog.data = make(map[string]int)
accessLog.RUnlock()

试试呢?
2021-03-26 21:13:37 +08:00
回复了 RedBlackTree 创建的主题 程序员 请教大家关于多核并发编程中, cache 一致性的问题
4 楼正解。正好前段时间我也深入研究了这个问题,并且整理成了一篇博客: https://blog.fanscore.cn/p/34/ 楼主可以参考下,或许对你有帮助😄
2021-03-20 18:25:44 +08:00
回复了 xuletter2021 创建的主题 Go 编程语言 golang 协程读写上下文变量 一直为 0
@xuletter2021 确实结果一样,不过关闭优化前后打印汇编结果还是有区别的,虽然关闭优化后的 go 出来的函数中还是没有 x++对应的汇编代码(不太能理解的...)。

下面是我的猜测:

在 1.14 之前协程调度是出让式而非抢占式的,如果这段代码在单核机器上运行,就有可能陷入到 for {...}的死循环中而主协程中的代码得不到调度执行,而你 for 循环中加入了 fmt.Pxxx 类的代码就能够使子协程出让执行权。

另外这段代码还有可见性问题,子协程对全局变量的修改,主协程可能是看不到的。

基于上面两个问题的考虑,编译器做出了“错误”优化,导致了你所看到的结果。
2021-03-20 16:21:17 +08:00
回复了 xuletter2021 创建的主题 Go 编程语言 golang 协程读写上下文变量 一直为 0
你关闭优化跑一遍看看是不是出来了?😂
2021-03-08 23:04:20 +08:00
回复了 BinYang 创建的主题 Java 咨询一个 redis 穿透的问题,看看大佬有什么解决方案没有
7 楼回复应该是个很常见的设计,我司 redis 就分为缓存(不需要持久化,所有 key 都有过期时间)与持久化数据两种实例,楼主可以做个参考。如果麻烦的话,可以考虑该场景能否使用 bitmap 来做过滤
2021-01-14 18:51:15 +08:00
回复了 Orlion 创建的主题 汇编 Lock 指令到底有什么用?
@yzbythesea 感谢提醒,突然意识到了
2021-01-14 13:37:58 +08:00
回复了 Orlion 创建的主题 汇编 Lock 指令到底有什么用?
@yzbythesea CPU 操作 L3 cache 上同一个 cacheline 同一位置数据,不加 Lock 就不是原子的,这样理解吗?如果不加 Lock 也是原子的,那 CPU 没必要锁吧
2021-01-14 12:11:17 +08:00
回复了 Orlion 创建的主题 汇编 Lock 指令到底有什么用?
@Jooooooooo lock 与寄存器无关
2017-04-23 23:04:02 +08:00
回复了 spice630 创建的主题 分享创造 #开源项目#wechat-go 微信机器人/web 协议
@ob 好像是会换了,忘记了😄
2017-04-22 19:38:02 +08:00
回复了 spice630 创建的主题 分享创造 #开源项目#wechat-go 微信机器人/web 协议
用 golang 快写完了突然发现还不如用 java 写,方便在安卓上跑😏。
2017-04-02 10:14:02 +08:00
回复了 zgqq 创建的主题 Linux 如果有一个这样的笔记本多好啊
lg gram 续航好像不错,还特别轻薄。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5440 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 08:40 · PVG 16:40 · LAX 00:40 · JFK 03:40
Developed with CodeLauncher
♥ Do have faith in what you're doing.