V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ipwx  ›  全部回复第 18 页 / 共 195 页
回复总数  3887
1 ... 14  15  16  17  18  19  20  21  22  23 ... 195  
2022-06-24 14:15:49 +08:00
回复了 yogogo 创建的主题 问与答 咋面试那么多喜欢问源码?
毕竟能招到宝马谁想要桑塔纳 hhh

不会点原理的话 95% 的代码工作能胜任,但是出点奇怪的 bug 就搞不定了。
2022-06-24 10:59:31 +08:00
回复了 ojh 创建的主题 问与答 Eventloop 多线程版本优势在哪
总之如果只看名词不看实际(实现方式),各种语言、框架的并发就是大坑,不同概念层出不穷,会让楼主混乱的。

如果楼主不想继续纠结这么多乱七八糟的概念,建议左转 Go 语言。那边的 Goroutine 中的同步代码 = Event Loop + 协程(相当于 Python/JS 手动 async/await ) + 线程池。实际上完全解决了楼主你书里面看到的问题,但是其实你书上的概念一个都套不上去,因为它直接从 vm 层面给你扬了这些概念(笑

虽然你像我这么分析还是能对应到你书上概念的
2022-06-24 10:49:54 +08:00
回复了 ojh 创建的主题 问与答 Eventloop 多线程版本优势在哪
... 然后书上说的不错,但是没有告诉你的是什么叫“时间太长阻塞”。

实际上你看到的 “每个事件处理都用线程池里的线程去处理” 太泛泛了。具体而言,一般我们都是把 CPU 时间开销大的逻辑丢进线程池然后 await 的。比如算一个 PageRank 分数之类的(笑)。

上面的仁兄提到了 Actor model 。我很感动居然还有人知道这玩意儿,但实际上这玩意儿写普通的业务逻辑不如 async await 高效。举个例子,如果你要读数据库,在多线程 Actor model 下你要怎么做?难不成直接同步阻塞等数据库结果?那不好意思,在大部分语言( C++/Java/Python )中,你又阻塞了一个线程池。纯粹的 Actor model 要求你业务代码把数据库请求 send 给 DBActor ,DBActor 应该是一个负载均衡,后面接着一串多线程的 DBActors 。然后 DBActors 阻塞读写,出来结果再 reply 到业务 Actor 。总之纯粹的 Actor model 写业务代码挺麻烦的。

但是 Actor model 上限很高的,是屠龙刀。它能保证每个 actor 同时只有一个线程在跑,直接保证所有数据的线程安全。这种屠龙刀就不该用来写普通的业务代码。
----

综上所述其实 async / await 写业务代码其实很舒服的,在大部分语言中你不会喜欢其他模式的。

除了 Go 语言。

Go 语言是个工程妥协性非常强的语言,为了解决普通程序员不那么高明这一“人力 BUG”,它做了一些在我看来很丑陋的(但是确实能解决不那么博闻强识的程序员写出来的代码问题)选择。比如它会自动把同步的等待代码直接切出来控制权,强行在 Go vm 层面自动地把同步代码给打断等待。相当于你写了同步等待的网络 /文件 IO ,它自动翻译成 async await 了。这个确实屌,不得不承认,虽然在我看起来很丑陋——

这意味着程序员并不能 100% 控制 Go 语言的实现,你写个比如 PageRank 的算法可能比不上 C++,因为有一堆你不知道它会干嘛的额外动作。

当然,我这么评价 Go 语言,是因为我从线程池、Event loop ( select epoll )、Actor model ( Akka 或者我自己 C++ 手撸的)、callback 之类的东西我都用过。C++、Python 、Scala 、JS 我都写过不少项目。嘛,没那么博闻强识的程序员确实 Go 语言包办更舒服。
2022-06-24 10:40:43 +08:00
回复了 ojh 创建的主题 问与答 Eventloop 多线程版本优势在哪
其实吧,业务代码没那么多 CPU 时间很长的片段的。一般都是直接写一点数据处理,await 数据库 /文件 IO 。

好处实在太大了。因为在线程池模式下,无论是数据库还是文件 IO 都会阻塞一个线程,也就是说就算你业务逻辑再简单,也会耗尽线程而无法提高并发。现在直接 async ,阻碍你并发的只有后端数据库和网络的速度。网络速度可以随意 100MB/s ,数据库可以集群(提供更快的读、更慢的写),这样就非常 nice 。
2022-06-20 15:36:42 +08:00
回复了 changnet 创建的主题 全球工单系统 现在的手机都取消呼吸灯,简直是一种倒退
虽然楼主说的确实有道理,不过我个人确实不需要呼吸灯这种玩意儿。。。

毕竟电脑上该登陆的都登陆了。微信是肯定会打开的,那么大部分消息也就不会没看到了。
鲜榨果汁 = 饮料,没必要考虑它的营养价值,毕竟它也不剩啥营养价值了。

从饮料角度,你老婆是对的。
2022-06-16 23:02:57 +08:00
回复了 Richard14 创建的主题 问与答 排序算法问题,如何快速筛选出数组前 N 位的位置?
哦最大最小堆也挺好,可以处理在线情况。

换个几号吧,如果你的全数组长度是 M ,用最小堆找最大的前 N 个元素,那么时间复杂度就是 O(M log N)。
反之用最大堆可以找最小的 N 个元素。
2022-06-16 23:01:02 +08:00
回复了 Richard14 创建的主题 问与答 排序算法问题,如何快速筛选出数组前 N 位的位置?
快速选择,做一半的快速排序,期望复杂度 O(n)

先做一次快速排序,若轴枢元素是第 K 大。

* 如果 K < N 则对右侧做 N-K 的快速划分。
* 如果 K > N 则对左侧做 N 的快速划分。
2022-06-15 17:40:11 +08:00
回复了 bleutail 创建的主题 Python 如何用 pandas 实现最近一段时间成交量的百分位分类
2022-06-15 13:46:26 +08:00
回复了 James369 创建的主题 程序员 看到另外一种“图灵完备”的解释
这种结论一般都是构造法证明。

首先图灵机是什么有清晰的定义。然后就是怎么用 sigmoid + rnn 表达任意给定的图灵机了。

随便搜一下可得:

Turing Completeness of Bounded-Precision Recurrent Neural Networks
https://openreview.net/forum?id=IWJ9jvXAoVQ

这篇 2021 年的 poster 说,前人的工作需要假定无穷精度的 RNN 才能表达任意图灵机。现在他们可以用有限精度 RNN 来表达了(可喜可贺
2022-06-15 10:31:25 +08:00
回复了 shilianmlxg 创建的主题 程序员 obsidian 怎么 windows 跟 mac 同步呢,有什么方案吗。
1. 坚果云的 WebDav 我印象中用 Joplin 容易冲突。不知道 Obsidian 怎么样,但我想这可能是 WebDav 的固有缺陷 —— 依赖客户端的冲突解决能力。

2. 所以我会更倾向于使用自带客户端的同步盘。其实按道理坚果云自己的同步盘效果还可以,冲突解决也还行。直接把 Obsidian 的 Vault 塞进去就行了。

3. 我自己用的是 Seafile 自建网盘,用的 Seafile 的同步客户端。
@mcone az 。我联通,当年支付宝健康码经常加载不了,我就换微信了
北京健康宝内部的扫码才能显示健康码。
2022-06-02 12:03:36 +08:00
回复了 coolair 创建的主题 问与答 Python if 语句写法,能更精简更难懂吗?
我认为正常写法更好
2022-06-01 19:04:41 +08:00
回复了 nthhdy 创建的主题 程序员 为什么图片视频不直接使用类似 huffman 这种熵编码压缩呢?
@nthhdy “ 引入运动预测等机制,即使无损也能一定程度上提高压缩比。”

呃,真的存在无损运动预测压缩算法嘛
2022-06-01 15:19:11 +08:00
回复了 nthhdy 创建的主题 程序员 为什么图片视频不直接使用类似 huffman 这种熵编码压缩呢?
@nthhdy 其实如果外延一下的话,上面的乱七八糟的讨论和条件熵有关。

H[X|Y] = H[X,Y] - H[Y]

已知 Y: 数据是视频。

所蕴含的信息量其实是非常非常巨大的。同样的文件,没有 Y 这个信息的话,你无法自动推断出 “帧与帧之间有图像相似性” 这个结论的。因为每张图的 0-1 串其实相差巨大。图片就是这个样子,上面的 object 移动一个像素,二进制串就一大堆变化(而且还不是连续的二进制位发生变化)。通用压缩算法几乎不可能在有限的时间里面去 discover 这种信息。
1 ... 14  15  16  17  18  19  20  21  22  23 ... 195  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5344 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 42ms · UTC 03:27 · PVG 11:27 · LAX 20:27 · JFK 23:27
Developed with CodeLauncher
♥ Do have faith in what you're doing.