Articles of 语言不可知

哪些操作系统/平台实现等待变形优化?

哪个主要的操作系统/平台实现等待变形? 这个问题出现时,我发现没有明确的最佳做法是否应该通过locking互斥信号发出一个条件variables。 一个典型的build议是在locking的时候发出信号,除非分析显示从解锁(通过移除额外的上下文切换)显着地改善了性能。 IIUC,在信令是额外的两个上下文切换时保持锁的唯一缺点; 优点是错误的风险较低,并且更容易实现实时的可预测性。 所以,如果实施等待变形,那么在信号传输的情况下保持locking的做法是非常好的。

我怎样才能区分同一个文件的两个部分?

我有一个源文件,有两个相似但又有细微差别的部分。 我想将这两个部分合并为一个子程序,并带有一个处理细微差别的参数,但是我需要确保我知道它们,所以我不会错过任何一个。 我通常在这种情况下做的是复制每个部分到一个单独的文件,然后使用tkdiff或vimdiff来突出差异。 有没有办法跳过中间文件,只是区分同一个文件的两个部分?

创build未刷新的文件输出缓冲区

我正在尝试清除在Linux上运行的几种程序中使用不同语言的未刷新文件I / O缓冲区时出现的问题。 冲洗缓冲区的解决scheme是很容易的,但这个无刷新缓冲区的问题发生得非常随机。 我不想就可能导致的原因寻求帮助,而是关心如何创造(复制)和诊断这种情况。 这导致了一个由两部分组成的问题: 人为地和容易地构build一个例子,在给定的时间内,可以有已知的输出缓冲区不被刷新的情况是否可行? 我的search是空的。 一个微不足道的基准就是在尝试从另一个进程写入大量数据的同时,在一个进程中锤击硬盘(例如交换)。 虽然这个“有效”,但它使系统实际上无法使用:我不能戳,看看发生了什么事。 Linux内部是否有可以识别给定进程已经清除文件输出缓冲区的命令? 这是可以在命令行运行的东西,还是有必要直接查询内核? 我一直在看fsync , sync , ioctl , flush , bdflush等等。 但是,缺乏创build未刷新缓冲区的方法,目前还不清楚这些可能会显示什么。 为了复制他人,C中的#1例子将是非常好的,但问题是真正的语言不可知论 – 只要知道创build这种情况的方法将有助于我正在工作的其他语言。 更新1:我对任何混淆道歉。 正如有几个人指出的,缓冲区可以在内核空间或用户空间中。 这有助于查明问题:我们正在创build大的脏内核缓冲区。 这个区别和答案完全解决了#1:现在似乎很清楚如何在用户空间或内核空间中重新创build未刷新的缓冲区。 但是,识别哪个进程ID具有脏内核缓冲区还不清楚。

在Linux上运行可执行文件最安全的方法是什么?

我试图运行一个程序从一个未知来源的C代码编译。 我想确保程序不会伤害我的系统。 例如,程序可能有类似system("rm -rf /")的源代码,除非代码被彻底检查,否则这是不可检测的。 我想到了以下两种方法 在像VMWare这样的虚拟机内运行它 在linux上构build一个Windows EXE文件,然后在wine上运行 两者都不是非常优雅的解决scheme,我不能自动化他们。 而且在1的情况下,可能会损害虚拟机。 任何帮助,将不胜感激。 我想用我们可以称之为“沙箱”的方式运行程序。

Windows应用程序事实上的标准键盘快捷键列表?

假设我正在为Windows开发一个新的桌面应用程序。 是否有一个列表,我可以咨询(从微软或第三方)的所有Windows应用程序应该支持的键盘快捷键? (注意:当我在这里说“所有的Windows应用程序”时,我的意思是“所有Windows应用程序的特定键盘快捷方式都是合理的”。例如,标准的“开始debugging会话”快捷方式在Visual Studio和Eclipse,但不适用于其他types的应用程序,如记事本或Firefox。另外,某些专门的应用程序可能没有意义,这些应用程序拥有自己的完整自定义键盘快捷键集,比如vi,遵循一些遵循的标准惯例由其他应用程序。) 例如,我会争辩说,Windows应用程序应该支持以下键盘快捷方式,因为它们是大多数其他应用程序支持的事实上的标准(只是部分列表): 从任何地方: F1 – 显示帮助 Alt + F4 – closures应用程序 在编辑文字时: Ctrl + A – select所有文本(在当前字段中,如果适用) Ctrl + Home / End – 将插入符号移动到当前字段的开始/结束位置 Shift + [任意导航] – select前一个插入位置和新插入位置之间的文本 在select可以编辑或重命名的项目时: F2 – 重命名或编辑当前项目 虽然子窗口或选项卡具有多窗口/多选项卡应用程序的重点: Ctrl + F4 – closures当前窗口/选项卡 Ctrl + W – closures当前窗口/选项卡 Ctrl + Tab / Ctrl + Shift + […]

进程地址空间vs虚拟内存

从我的理解,通过阅读几篇文章,我假设进程地址空间(PAS)和虚拟内存(VM)是相同的。 我的理解是否有缺陷? 请问一些人可以点亮这个灯并点亮我? 我很困惑。 我了解进程地址空间与Ram或物理内存无关。 但是只是混淆了PAS和VM。

Windows中用户configuration文件的唯一标识符

对于客户端/服务器应用程序,我需要集中存储通常进入用户configuration文件目录的部分configuration信息。 客户端应用程序在首次使用时将具有GUID的文件或registry项写入当前configuration文件。 此GUID随后将用作服务器上configuration数据库中的一个键。 现在我想知道如果Windows用户configuration文件已经有我可以使用的唯一标识符,而不是生成我自己的GUID。 用户名将不起作用,因为用户可能有多个configuration文件。 将它与计算机名称组合将不起作用,因为可能存在漫游configuration文件。 更新: 我只是在同一个域中的两台计算机上的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList查看SID。 漫游未启用,因此我的用户帐户在每台计算机上都有单独的configuration文件。 两个configuration文件都列出了相同的SID。 这意味着我必须继续生成我自己的GUID。

从DllMain调用LoadLibrary

MSDN说: 它不能调用LoadLibrary或LoadLibraryEx函数(或调用这些函数的函数),因为这可能会在DLL加载顺序中创build依赖关系循环。 这可能会导致在系统执行初始化代码之前使用DLL。 我试图从DllMain调用LoadLibrary并没有发生任何事情。 我看到的唯一问题是,在我的DllMain执行之前,加载的DLL将在我的DLL中使用函数。 为什么我不能在DllMain中调用LoadLibrary? 编辑: 好吧,我意识到,我不能仅仅因为我必须相信其他信徒所做的MSDN(我在那里看到一些错误的东西,但我也应该忘记它们),所以我不能在DllMain中调用LoadLibrary。 而且因为在Windows的新版本中可能会发生一些事情(虽然过去十年没有任何改变)。 但是,任何人都可以显示一个代码,将重现一些不好的事情,当在DllMain中调用LoadLibrary时会发生什么? 在任何现有的Windows操作系统? 不只是在另一个单独的初始化函数调用,但LoadLibrary在DllMain?

你将如何开始自动化我的工作?

在我的新工作中,我们销售import的东西。 为了能够销售这些东西,目前以下的事情需要发生每一个来件货物: 发票到达,电子邮件附件的forms,Excel电子表格 Monkey打开发票,将三列的相关部分复制粘贴到电子表格模板的相关部分,在这里进行极其复杂的计算,如=B2*550 猴子发送这个新的电子表格给老板(如果幸运,电子邮件,否则打印机),谁设置零售价格 猴子打开答复,然后继续input数据到生产数据库使用客户端程序是不可用的这么多级别甚至不值得详述 猴子启动超级terminal,键入“AT”,断开连接 猴子一次一个地使用可怕客户端程序的另一部分向客户发送短信和电子邮件 我想把Monkey从我自己换成软件。 我从来没有写过任何与电子邮件,Excel,数据库或短信接口的东西,但是如果能够帮我解决这个问题 ,我会非常乐意学习。 这是我没有受过教育的心愿: 猴子问雷鸟(邮件服务器也许?)的附件 猴子告诉Excel将电子表格转储成Jurily友好格式,比如CSV或其他东西 猴子分析输出,做复杂的计算 猴子用网页forms发送给老板的链接,在那里他可以设置价格 Monkey连接到数据库,插入数据 猴子Spams costumers 这一切都可行吗? 如果是的话,我从哪里开始阅读? 你将如何改善? 你认为什么语言/框架将是理想的? 你会怎样对待老板?

UNIX与Windows内存释放

我的理解是,在unix中,当内存被释放时,内存不会被返回到操作系统,它留在进程中再次用于下一次调用malloc。 在Windows上,我知道内存实际上被返回到操作系统。 这两种做事方式有没有很大的区别,还是做同一件事情的两种不同方式? 如果这两种方法有什么优点/缺点,它们是什么? 编辑:谢谢澄清。 我一直认为这是一个操作系统的东西(因为在类似UNIX的系统中,进程似乎不会减小,而是在Windows中)。