V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 42 页 / 共 181 页
回复总数  3609
1 ... 38  39  40  41  42  43  44  45  46  47 ... 181  
2021-03-07 17:33:57 +08:00
回复了 lxl1531 创建的主题 Python Python 的字符串拼接函数 join()是怎么实现的
是有更多“临时对象”所以才慢。定量考虑的话,join 需要 N 的时间时,朴素累加可能需要 N^2 的时间,我能想到的最快的累加也可能会需要 NlogN 的时间。

什么叫做“自己实现 join 的功能”?

如果你要求相同的时间复杂度且不能用 Python 的 join 恐怕不行,因为 join 是 Python 自己实现的,可以想象它先算好最终长度,然后分配内存,最后写入数据。

如果只是希望实现相同的功能,不论时间,则用平衡分组连接比较好,这只需要 NlogN 的时间。
从逃逸分析的角度,比较像是 OnAfterDeserialize 改变了 name 。
2021-03-06 20:06:38 +08:00
回复了 hupo0 创建的主题 JavaScript 感觉这次写的库能比 js 原生数组方法要快
这个问题和数组遍历几遍没关系,主要区别在于内存分配。

Array.map 每次都要分配新的数组,可以想象 no-stream 的 map 只是变换迭代器,当然快。当然这不能怪 Array,毕竟功能不同,要写出值得比较的代码可以对 mf 复合自己 map_count 次,再变换成 reducer,然后直接在 data 数组上用 reduce 。

而且好好写 for 循环不香吗?
2021-03-06 12:00:52 +08:00
回复了 chinesedragon 创建的主题 程序员 IDEA 的 Ctrl+Shift+Enter 与 Win10 的 Ctrl+Shift 冲突怎么破?
可以关掉 Ctrl+Shift 输入法切换,用 Windows+Space 。
2021-02-27 02:47:32 +08:00
回复了 yiouejv 创建的主题 C++ 虚函数,虚表深度剖析
正确标题:浅度剖析

深度剖析至少应该涉及多重继承、虚拟继承、虚拟析构的问题。
2021-02-24 19:09:11 +08:00
回复了 v2webdev 创建的主题 程序员 “宕机”一词在技术文档中如何表达?
2021-02-24 15:07:25 +08:00
回复了 v2webdev 创建的主题 程序员 “宕机”一词在技术文档中如何表达?
@v2webdev #22 我并不在意这个词的意思,而是觉得很好玩,因为我一开始以为额这个例子是已经写好的例子,但看其他页面可以发现这是占位符,于是这是一个巧合地自我指涉的例子。
2021-02-24 14:59:39 +08:00
回复了 v2webdev 创建的主题 程序员 “宕机”一词在技术文档中如何表达?
https://i.loli.net/2021/02/24/xXWPv2MAVtkqYdJ.png

不推荐使用只有特定人群才了解的词语……“TW 们”是什么?
#3 可能是在对 a 操作之前 master 已经领先 origin/master 了
看一下 git 的历史图不就知道了么 😅

除了不小心提交到了主分支上,也可能是有人让远程分支倒流,然后本地也意识到了远程的倒流。
@goldiorl #9 另外 C++/WinRT 有 co_await resume_background{}; 这种构造,而 .NET 的 awaiter 也可以选择是否返回原来线程,所以并不是必然回到原来的线程。
@goldiorl #9 如果(任何 making sense 的)语言有协程的语言构造(即 async-await ),你是可以马上看出来一段代码中间是否可能被打断的。这里没有 await,所以不可能发生这种事情。

如果代码里有 await,那你是知道线程和协程无配对关系的,自然不会期待 ThreadLocal 能够保护多个协程,因为它不叫 CoroutineLocal 。
2021-02-21 05:41:02 +08:00
回复了 misakawaque 创建的主题 C++ 怎样获取浏览器当前的 url?
如果是 Internet Explorer (或者任何实现了 IWebBrowser2 的浏览器)可以用 IWebBroswer2.LocationURL 属性。
其他设计良好的浏览器可以通过 UI Automation 定位地址栏得到 URL 。
ThreadLocal 在那个语言里的意思很可能是 受那个语言托管的线程-local,而不是 操作系统线程-local,就像是操作系统线程也不是指处理器线程。在这种定义下你的问题不存在。

async-await 这个语法很可能本来就没有规定每次 await 之后所在的(被语言托管的)线程。比如 UI 相关的代码里,由于 UI 只可以在 UI 线程操作,await 通常会回到原来的线程进行。
2021-02-19 04:07:04 +08:00
回复了 dangyuluo 创建的主题 C++ C++中的一个 ambiguous call 问题
更好的问题是:知道数组长度有什么用?

既然是 C string,那必然是 null-terminated,知道数组长度无意义,反正都需要通过遍历找到正确长度。如果数组长度内没有出现空字符,说明传入的不是 C string,根据 garbage-in garbage-out 原则此时直接定义为未定义行为即可。
2021-02-18 22:49:41 +08:00
回复了 James369 创建的主题 程序员 任何的递归调用都可以转换为迭代吗?
任何实际做出来的递归本来就是迭代,CPU 自己执行这些命令的时候就是循环运行每个指令完成的。
2021-02-18 21:19:27 +08:00
回复了 pheyer 创建的主题 Google 有没有人发现, Google 的搜索关键词开始在 URL 中加密了
第二个网址里 q 也是明文写出来的啊
2021-02-18 11:26:11 +08:00
回复了 chroming 创建的主题 问与答 有没有“Windows 安全和隐私指南”之类的总结文章?
第一个问题的隔离账户解法 https://geelaw.blog/entries/isolate-app/
2021-02-14 20:14:16 +08:00
回复了 RedBlackTree 创建的主题 Go 编程语言 怎么理解并发编程中的 invirants?
Invariant 的意思和并行、并发关系不大。不变量就是说“数据的组织形式符合该数据结构的要求”,比如一个双向链表里任何非尾节点 x 都有 x.next.prev 等于 x 且任何非头节点 x 都有 x.prev.next 等于 x 。

当编辑链表时,要对多个对象的 prev 、next 分别重新赋值,几个赋值操作之间的时刻,不满足不变量。编辑操作保证:操作前符合不变量,则操作完成后还是符合。

如果链表被并行修改则可能出问题,这是因为有的时候,编辑开始的时候链表不满足它的不变量(例如另一个人也在编辑它)。于是你可以用一个 mutex 保护链表,设原先的不变量是命题 P,则新的不变量改成:当 mutex 未锁定时,P 成立。

如果 mutex 不可重入,则上述命题的简单推论是:当 mutex 刚被获取时,P 成立。
如果 mutex 可重入,则上述推论不成立,因为重入时 P 不一定成立。

那段教程就是在说,大家都希望该推论成立(从而验证正确性会更简单),所以我们设计的 mutex 不可重入。
1 ... 38  39  40  41  42  43  44  45  46  47 ... 181  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2933 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 49ms · UTC 14:31 · PVG 22:31 · LAX 07:31 · JFK 10:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.