V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 43 页 / 共 177 页
回复总数  3521
1 ... 39  40  41  42  43  44  45  46  47  48 ... 177  
2020-10-03 19:54:25 +08:00
回复了 richards64 创建的主题 程序员 一个感觉难以理解的的 C#代码片段,想知道这是为什么
@lights #11 显然这里一共 new 了 5 个东西,一个是提供状态的对象(即编译器生成的),接下来每次赋值给委托的时候都 new 了一个 Action 。每个 Action 都引用了同一个状态对象的同一个方法,至于为什么同一个状态对象,这是因为 i 的 scope 只进入了一次。这里的 for 循环等价于

for (init; cond; next) body;

{ // 1
init;
while (cond)
{ // 2
body;
goto_continue:
next;
} // 2
} // 1

循环变量 i 的 scope 是 1,而 scope 1 只进入了一次,所以只有一个状态对象。

如果你改成

foreach (int i in new int[] { 0,1,2,3 })

则在较新的 C# 编译器下会得到 0 1 2 3,因为这等价于

{ // 1
var coll = new int[] { 0,1,2,3 };
for (int idx = 0; idx < coll.Length; ++idx)
{ // 2
int i = coll[idx];
foos[i] = () => Console.WriteLine(i);
} // 2
} // 1

因为 i 的 scope 变成了 for 的里面,所以会进入 4 次,因此有 4 个不同的状态对象被创建,每个 Action 都会引用各自状态对象的方法。
@liminghui #4 更好的方法是关掉所有客户端的“在发件箱保存副本”,因为几乎所有现代邮件提供商都会保存发信副本。如果关掉网页里的设置,会导致网页上发出去的邮件没有存档吧。
2020-09-26 11:43:14 +08:00
回复了 wensonsmith 创建的主题 问与答 菜单名称后面为什么要加三个点?
@daozhihun #6 这个理解是错误的。正确理解是 #2 ( Windows 的规则也是这样)。

另外楼主截图里的菜单不符合正确规则,例如 System Preferences 和 App Store 都不需要加省略号,因为这两个命令就是打开 System Preferences 和 App Store 。

一个更简单的理解是:需要省略号,当且仅当菜单名字没有完整描述命令,且未描述的部分由用户选择。比如 Force Quit (some app)、Restart (and possibly reopen apps afterwards)。
@kiko #6 用 VBScript 可以实现“如果已经打开则转到窗口”的功能,因为文件夹的“打开”命令就是这样实现的。
于是可以这么写:

Set shapp = CreateObject("Shell.Application")
shapp.Open WScript.Arguments(0)

保存,比如保存为 C:\ShellExecute.vbs 。
然后建立快捷方式 wscript.exe "C:\ShellExecute.vbs" "C:\文件夹路径",比如保存到桌面,命名为 打开文件夹。
接着可以修改快捷方式的图标、快捷键啦等等,也可以固定到任务栏。

这个代码实际上可以打开任意文件。也有 JScript 版本:

var shapp = new ActiveXObject("Shell.Application");
shapp.Open(WScript.arguments(0));

扩展名必须是 .js 才能被 wscript.exe 正确解读。
> 希望是一个永远存在的任务栏图标按钮,点一下就打开这个文件夹。

2 楼的方法即可。

> 任务栏设置了自动合并同类按钮,打开多个文件夹会合并在一起,希望能建一个独立的快捷方式,不会被合并到其他打开文件夹的按钮上。

这个是不可能做到的,除非你自己实现一个 IShellFolder 或者自己实现一个 explorer host 。分组是根据 AUMID 确定的,除了先前提到的两个方法,无法改变一个 explorer 窗口的 AUMID 。
父类方法是指用 super 调用的基类中方法(的版本)。

例如
class B { public void Foo() { } }
class D extends B { @Override public void Foo() { super.Foo(); } }
这里面 super.Foo 调用 B.Foo 是编译时决定的。
2020-09-20 01:24:56 +08:00
回复了 1ver 创建的主题 Windows Windows 有没有这样的软件,集成在任务栏搜索框的词典
没有,在 Windows 8/8.1 和早期 Windows 10 是有的,这个功能已经被砍掉了。

虽然新版的 Windows 10 不能集成 Cortana 了,但是可以使用 deskband,这个至少从 Windows XP 以来到最新的 Windows 10 都是支持的。

https://docs.microsoft.com/en-us/windows/win32/shell/band-objects#desk-bands
2020-09-19 14:40:40 +08:00
回复了 horseInBlack 创建的主题 问与答 windows 这阻止关机的功能到底是咋做的
Windows 会话非强制结束时会询问所有程序“你准备好被关掉了吗”,如果程序(在一定时间内)没有回答,或者回答“没准备好”,那么 Windows 就不会关机,并提示用户“有些程序阻止了关机”,用户可以强制关机或者取消关机并处理没准备好关机的程序。

记事本属于“没有回答”,因为记事本会问用户“你要保存吗”,这是一个模态对话框,记事本只有在这个对话框关闭之后才会回答系统它“准备好了吗”,但用户此时无法回答记事本的对话框。

推荐的做法是在系统提问的时候进行自动保存,然后下次启动后恢复。通常来说程序会等自动保存完毕,并且完毕后回答“我准备好了”。一旦程序回答了“准备好了”,Windows 就可以关闭它了,这个处理是对每个程序进行的而不用等所有程序都 OK,所以你会看到很多程序会在“还没准备好”列表里出现一下,然后消失,因为它们在你取消关机之前搞定了一切。

有些程序会无脑回答“准备好了”,结果就是丢数据。例如不久以前的 Chrome 有这个问题,现在已经修复。
用户输入密码后判断密码是否符合设置时的要求,如果不符合,不用传入服务器验证,直接提示用户不符合要求。

这样做的好处是最小化和现有界面的区别。
但我觉得这样不好,并不是说这样做不安全(这样做完全不会降低安全性),而是通常的程序都有奇奇怪怪的漏洞或者有一些历史遗留问题,难以保证所有用户的密码确实都符合强密码的要求。如果用户成功设置了弱密码,那么这个检查将导致用户永远无法正常登录。

一个折中的办法是提示用户尝试的密码不符合强密码策略,故不可能是正确密码,但不阻止用户尝试登录,即用户可以选择“仍然继续尝试登录”。
2020-09-19 12:04:18 +08:00
回复了 VioletTec 创建的主题 问与答 求教:使用 BrainF**k 实现加减乘除还有没有更好的实现思路
看了一下原来你的乘法和我的思路一样 - -
2020-09-19 12:02:23 +08:00
回复了 VioletTec 创建的主题 问与答 求教:使用 BrainF**k 实现加减乘除还有没有更好的实现思路
为什么你的减法和加法区别那么大……

减法显然是 ,>,[-<->],两个数反复同时减 1

乘法只要反复做加法即可
>,>,< 读入因数到 2 3
[-
>[->+<<<+>>] 移动 3 到 4 并累加到 1
>[-<+>]<< 移动 4 到 3
]
>[-] 清空 3

带余除法可以反复做减法实现,不过要麻烦一些
2020-09-17 19:06:13 +08:00
回复了 xml123 创建的主题 问与答 窗口焦点经常丢失,怎么查原因
第一步是找一本真·英文原著,《小王子》英语版是译作。
2020-09-03 06:28:04 +08:00
回复了 hanliu 创建的主题 Windows 如何防止窗口从最大化拖动时被缩放?
@hanliu #7 macOS 的窗口没有明确的“最大化”概念,如果你想获得类似 macOS 上绿色按钮的效果,可以手动调整还原窗口的大小。
2020-09-02 02:57:24 +08:00
回复了 hanliu 创建的主题 Windows 如何防止窗口从最大化拖动时被缩放?
最大化这种模式就是把窗口调节为工作区的大小(除非最大大小限制住了)并把窗口放在工作区的左上角,移动窗口和保持最大化是矛盾的。

如果你想把窗口挪到另一个显示器上且保持最大化,可以用 Aero Snap,挪到另一个显示器后向工作区的上边缘撞击,即可恢复最大化的状态。

如果你想让窗口保持工作区的大小且不在左上角,你需要还原窗口、调整大小、移动。
2020-09-01 17:00:18 +08:00
回复了 xxpandxxp 创建的主题 问与答 鼠标滚轮可以实现像触摸板一样的无级滚动页面吗?
当然可以,但需要软件支持——驱动需要正确汇报滚动量级( Windows 上有 dent 滚轮每转一次 delta 是 ±120,无级滚轮的驱动需要汇报绝对值小于 120 的数值),并且浏览器需要正确处理小量滚动。
2020-08-29 21:58:22 +08:00
回复了 dddxm 创建的主题 Windows 你们家里常用的 Win10 主机,关不关 UAC 呢?
以前是开的,现在不开了,因为我把日常账户改成标准用户,并且用 FUS 改变身份(偶尔也用“以另一个用户身份运行”,但会开“要求用受信方式输入凭据”)。
2020-08-29 21:00:12 +08:00
回复了 chenqh 创建的主题 Visual Studio Code 关于 vscode 调用 openFile 的问题
因为 quickOpen 命令的含义是:打开“转到文件”对话框。它的作用是让用户选择要打开的文件,而不是打开一个文件。

什么叫做“在 vscode terminal 里面的 Open File in editor”?你是指在内置终端里用 START / Start-Process / Invoke-Item / open 等打开一个和 VSCode 关联的文件时,VSCode 打开了文件,这个现象吗?
那些命令和 quickOpen 没关系,纯粹就是“一个程序使用默认关联打开文件,于是关联程序处理了这个请求”的结果。那些命令根本不关心自己是不是从 VSCode 内置的终端里发出的,也不可能有“得用 vscode.commands 让 VSCode 打开文件”的逻辑。

换个方式问你的问题:为什么运行 code C:\1.txt 会导致 VSCode 打开 C:\1.txt 而不是“转到文件”对话框?
2020-08-13 14:30:16 +08:00
回复了 BenWang 创建的主题 程序员 [编程问题] 如何给 所有子类的 同个父类属性 赋值。
因为 ref RefType argName 的含义是 argName 对应一个静态类型是 RefType 的变量,且方法内对 argName 的赋值可以反映到传入 argName 的变量。显然你不能把静态类型是 Derived 的变量传入 ref Base,否则方法体内可以对 argName 赋值 new AnotherDerived,然后类型安全就会爆炸。

楼主需要认真学习 C#,值类型和引用类型的基本区别还没搞清楚。
2020-08-07 10:20:53 +08:00
回复了 lihongming 创建的主题 程序员 有没有什么加密算法是一对多的?
你需要的是一种高级签名算法和一种普通加密算法,因为你的要求是“验证客户端身份”,发送者有无数个,但接收者只是服务器一个。搜索 identity-based signature 有惊喜。
1 ... 39  40  41  42  43  44  45  46  47  48 ... 177  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1106 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 18:49 · PVG 02:49 · LAX 10:49 · JFK 13:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.