V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 33 页 / 共 173 页
回复总数  3452
1 ... 29  30  31  32  33  34  35  36  37  38 ... 173  
2021-04-04 11:08:02 +08:00
回复了 liudaqi 创建的主题 算法 n 的 n 次幂,时间复杂度是多少?
如果是说输入 N 的二进制表示,输出 N^N 的二进制表示,则时间复杂度是 2^(n + Theta(log n)) 其中 n = log N 为输入长度。
由于答案有指数长度,算法至少是指数时间,利用快速幂和 Fourier 变换可以做到前述时间复杂度。
为什么楼上都有这么多答案…

这个问题会因为楼主使用了何种 C 语言编译器、如何申请的堆内存有千奇百怪的答案。如果楼主用的 malloc 内部维护一个结构,且优先考虑直接分配刚刚释放的内存,且没有发生优化,是不可能会有这么大的差别的。
2021-03-29 20:38:01 +08:00
回复了 zictos 创建的主题 Python Python 读写文件时不用 with 也不关闭文件,这样的风格好吗?
@Contextualist #36
@ipwx #37

我想象中的

for A in B:
..body

的展开是

TMP = B.__iter__() # 编译器生成的迭代器的 __exit__ 会执行剩余的 finally
with TMP:
..while True:
....A = TMP.__next__()
....body

即和 C# 里的 foreach 展开包含 finally IDisposable.Dispose 一样。
2021-03-27 12:25:17 +08:00
回复了 zictos 创建的主题 Python Python 读写文件时不用 with 也不关闭文件,这样的风格好吗?
这样的写法在标准 Python 中可以导致文件在进程结束前不被关闭,因为在内存充足的时候,垃圾回收器可以选择完全不回收不可达对象。

在目前的 CPython 实现中,这种写法可以保证文件立刻被关闭,因为 CPython 采用引用计数来辅助管理内存,引用计数到达 0 的时候会立刻回收,从而关闭文件。

在 IronPython 中,则不一定,现在 CLR 提供要求暂时不运行 GC 的 API,如果在运行这段代码前,有人 commit 了足够的内存要求不运行 GC,且这段代码之后程序不再分配内存,则文件永远不会被关闭。

不要面向巧合编程。
2021-03-27 09:44:04 +08:00
回复了 hzcer 创建的主题 分享创造 Flash 保存计划,保存那些老的 Flash
推荐收录 http://niu-niu.com/ 牛牛游戏
2021-03-23 15:55:03 +08:00
回复了 Felldeadbird 创建的主题 C# C# 如何像动态语言那样动态创建对象呢?
如果你想支持任意类型,需要用反射。如果你想支持有限种类型,可以自己写代码。

要用 Type type 的无参数构造器构造对象,可以用 Expression.Lambda<Func<object>>(Expression.New(type)).Compile() 获得一个委托,此后调用该委托,效率非常高。
不知道网易云怎么实现的,但想要实现还是很简单的,比如用 localStorage,每个页面打开的时候生成一个 GUID 并监听 localStorage 的变化。开始播放的时候设置 localStorage 里一项(比如 currentPlayer )为自己的 GUID ;如果这一项变化且变化后不是自己的 GUID 则暂停播放。
2021-03-19 20:22:54 +08:00
回复了 ligiggy 创建的主题 程序员 [不懂就问] 大家是怎么学习加密解密的
类比一下大学的(连续)数学。

如果你想学会如何计算导数和积分(知道实用算法是怎么跑的),那么随便看看各种科普文章,自己动手写写代码就 OK 。

如果你想学习实变函数(学习可证明安全、密码分析),那么需要看密码学教材。不需要先学习实用密码学算法也可以学习这个。

我主要学习可证明安全,启蒙教材是 A Graduate Course in Applied Cryptopgraphy ( Boneh 、Shoup 著)。
用隐函数定理理解也很简单,考虑 f(x, y) 在 g(x, y) = 0 约束下的极值。

假设极值点邻域内 g(x, y) = 0 可以显化为 y = y(x),则在这一点
h(x) = f(x, y(x))
具有极值,因此 h'(x) = 0 即
f_x(x, y(x)) + f_y(x, y(x)) y'(x) = 0.
注意 n = (1, y'(x)) 是隐函数在该点处切线的法向量,隐函数求导定理表明该向量和 grad g = (g_x(x, y(x)), g_y(x, y(x))) 正交,而 grad f = (f_x(x, y(x)), f_y(x, y(x)))。
也就是说 n 和 grad g 、grad f 都正交,因此 grad g 和 grad f 线性相关。

考虑乘子函数 F(x, y, k) = f(x, y) + kg(x, y),可以看出 F 仅当 g(x, y) = 0 且 grad f 、grad g 线性相关时有驻点,因此可以通过研究 F 的驻点研究 f 在 g=0 约束下的极值。
2021-03-18 15:23:41 +08:00
回复了 xiaokongwu 创建的主题 Java 既然浮点数据类型不精确,那么浮点数存在的意义在哪?
@xiaokongwu #16 浮点数是指对于数 X*B^Y 直接存储了 X 和 Y 的格式,且两者没有必然的绑定关系,在一定范围内可以独立变化。double 和 float 也都是存储了 X 和 Y 。如果你说的格式里 Y 被 X 决定,则不是浮点数。

BigDecimal 的开销主要不在于它是个 object,而是在于它可以达到任意精度,即使去掉 object 的 overhead 仍然不如 double 高效。另外 BigDecimal 看起来是可以根据需要变化自己的长度的,而 primitive 常常是定长的,因此 Java 的模型下它必须是 object 。

可以参考 CLR 的 System.Decimal,这是一个定长的十进制浮点数,但范围和精度也当然都是固定的。

另外你怎么就知道 BigDecimal 计算没有精度问题呢?根据文档,BigDecimal 是十进制浮点数,它不能精确表达 1/3 。
2021-03-18 14:56:16 +08:00
回复了 xiaokongwu 创建的主题 Java 既然浮点数据类型不精确,那么浮点数存在的意义在哪?
今日震惊小知识:你说的那种 decimal 也是浮点数。

浮点数和定点数是表示某进位制下有限小数的方法,然而楼主的问题和浮点不浮点没关系。
有限长度,无论什么编码都不能精确表达所有有理数;长度无上界时可以高效、精确表达所有有理数;不需要高效的时候可以表达所有可计算数;然而无论如何都无法表达所有实数。

很多场景不需要精确,但需要速度,所以采用简短但不精确的表达。它的意义在于够用。
2021-03-17 12:29:04 +08:00
回复了 natsukage 创建的主题 问与答 exchange online 的域名邮箱不能用作 Microsoft 账户的登录邮箱
2021-03-17 10:36:42 +08:00
回复了 natsukage 创建的主题 问与答 exchange online 的域名邮箱不能用作 Microsoft 账户的登录邮箱
不能,如果你用 federated sign-in,然后用了你的 Exchange Online 邮箱,它怎么知道你想使用的是微软账户的 identity 还是 Exchange Online 的 identity ?

即使你可以设置微软账户的别名为 Exchange Online 邮箱,你也拥有的是两个账户而不是一个账户,只是这两个账户有同一个别名。

让两个账户成为同一个账户的话,你不再续订 Exchang Online 会有什么情况?你想关闭 Microsoft 账户会有什么情况?你的使用受到 Microsoft 账户 ToS 还是 Exchange Online ToS 的约束?这本质上和你说“我希望我的微软账户和苹果账户是同一个账户”一样,你可以把 Microsoft 账户想象成一个特殊的 Office 365 tenant,因为任意两个 tenant 都可能是不同公司控制的,自然不可能自动有跨 tenant 的合并功能,否则数据归属就乱套了。
@geelaw *刘盼到一半 => 浏览到一半
上拉加载似乎是标准功能,就是一个超长列表只有在用户快到底部时才获取靠后内容。

下拉刷新,即用户滑倒顶部继续上滑时加载新内容,是 Britcher 的发明,最先出现于他个人开发的 Twitter 客户端,现在是 Twitter 的专利(无偿授权)。

标准的结合用法可以总结如下:app 的界面是用于观察一个只能在头部追加的链表用的,用户进入 view 时获取了该链表的快照,具体来说就是头节点。
app 从头节点开始遍历,把链表的每一项从上到下放置在 view 内,由于列表很长,可以只加载几屏幕的内容,用户上拉接近底部后继续放入更后面的项,当然也可以暂时删去已经过于靠上的内容。这可以一直进行到整个链表的快照遍历完毕。
当用户回到顶端后继续下拉、明显溢出时,理解为用户想要看(原先)头节点前面的内容,由于已经过去一段时间,所以原先的头节点可能不是现在的了。下拉刷新就是获得新的头节点并展示原来头节点以前的内容。这个逻辑和刘盼到一半往回是一样的,本质上都是让用户可以在(实时更新的)链表上前后移动。

这套逻辑最原教旨的用法里,刷新后不一定非要到新头节点,如果产生了很多新内容,从原来的头慢慢往前是最连贯的做法。当然实际情况很可能是一下蹦到最新的头节点。

微博的浏览界面不是按照时间排序的,所以这个链表的逻辑不适用,微博既可以下拉加载也可以上拉加载,可以认为是不断用新内容填充 view,至于新内容填充在哪里全凭用户怎么拉。(我不确定微博是否是这样安排内容的,可能它有更复杂的逻辑。)

另一个有趣的事情是我发现 Twitter app 的内容其实很短,可以很容易拉到底部(它不再加载更早的内容),也可以做到拉到顶部刷新后没有什么新内容。另外 Twitter 似乎也不全是按照时间排序的。
2021-03-12 10:23:54 +08:00
回复了 wukongkong 创建的主题 问与答 浏览器的最小渲染单位不是 1px?
首先,CSS 的 1px 并不是对应显示器上一个最小可改变颜色的单元(即实体像素)。例如对于 200% DPI 的情况,浏览器默认会把 CSS 1px 对应为显示器上的 2px,于是 CSS 0.5px 对应显示器上的 1px 。通过有级别缩放可以调整对应比例,能放大自然也能缩小。

其次,即使 CSS 1px 对应显示器 1px,浏览器也可以采用超采样来反走样,比如需要渲染 10px 宽、1px 高的矩形,其中上 0.5px 是黑色,则浏览器最终可以让显示器显示 10px 宽、1px 高的矩形,其颜色的灰色。
2021-03-11 17:43:09 +08:00
回复了 Vveeb 创建的主题 问与答 [.Net] 新手求问一个关于 类、接口设计,实例化的问题
尝试改变例子可能会起到反作用。

如果工具知道自己应该被谁使用,那么 ITool 可以有一个 CreateToolUser 方法。
2021-03-11 11:16:00 +08:00
回复了 James369 创建的主题 数学 为什么高阶混合偏导数与求导顺序无关?
@yangyaofei #6 您似乎混淆了方向导数和高阶导数。

@siyemiaokube #7 这里的问题应该对应高阶微分,即是要问为什么各个二阶偏导数组成的双线性形式就对应二阶微分里的二次形式。二次形式总是用对称阵描述,而双线性形式不一定。马后炮来说,从美感上讲应该有这件事成立,即双线性形式 A 就是它对称化的结果 (A+A')/2 。
2021-03-11 11:10:07 +08:00
回复了 James369 创建的主题 数学 为什么高阶混合偏导数与求导顺序无关?
这件事情对于“可分解”多元函数自然成立,所谓“可分解”二元函数,是指形如 f1(x)g1(y)+...+fn(x)gn(y) 的函数,其中各 f 、g 都可导,先对还是后对 x 求导数没有任何区别。

多项式函数就是“可分解”的,把多项式转换为幂级数,则可以看出此性质对多元解析函数成立。

实际情况是它对足够好的函数都成立,Peano 的版本是:如果 Dx 、DyDx 、Dy 在开集里存在,DyDx 内点连续,则 DxDy 存在且和 DyDx 相等。

在“好的函数”的世界里,各种操作可以换序是常态。
2021-03-10 17:06:59 +08:00
回复了 Mrzhs 创建的主题 问与答 学校 onedrive 里的内容可以被学校的管理员看到吗?
可以看到
1 ... 29  30  31  32  33  34  35  36  37  38 ... 173  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3314 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 44ms · UTC 10:27 · PVG 18:27 · LAX 03:27 · JFK 06:27
Developed with CodeLauncher
♥ Do have faith in what you're doing.