问题标签 [internals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
628 浏览

delphi - 那里的 TTypeInfo 之前的“身份指针”是什么?

如果您对 Delphi 内部结构进行了足够深入的研究,您会发现一些关于编译器生成的 TTypeInfo 记录的奇怪且明显未记录的内容。如果 PTypeInfo 指向地址 X 处的 TTypeInfo 记录,X - 4您会发现接下来的 4 个字节描述了指向 X 的指针。例如:

将编译器生成的任何合法 PTypeInfo 传递到此例程中,它将输出相同的地址两次。我在 TypInfo.pas 中浏览了一下,但我没有看到任何提到这个“身份指针”或它的用途的东西。有谁知道为什么会这样?这在至少从 D3 到 D2010 的每个版本的 Delphi 中似乎都是正确的。

0 投票
8 回答
24117 浏览

r - R中的因素:不仅仅是烦恼?

R 中的基本数据类型之一是因子。根据我的经验,因素基本上是一种痛苦,我从不使用它们。我总是转换成字符。我奇怪地觉得我错过了什么。

是否有一些重要的函数示例使用因子作为分组变量,其中因子数据类型变得必要?是否存在我应该使用因子的特定情况?

0 投票
1 回答
860 浏览

vb.net - How to use reflection to unit-test an internal (Friend in VB) class within an assembly, when the InternalsVisibleToAttribute is not an option?

I have a solution with two projects within:

Within the Company.Project.vbproj assembly, I have a class FriendClass.vb which scope is Friend (internal in C#).

Now I wish to test this FriendClass.vb from within the Company.Project.Tests.vbproj assembly. I know about the InternalsVisibleToAttribute, but that is not an option in Visual Basic .NET 2.0, as it is only available with C#, in .NET 2.0 (see here).

I would like to create myself a proxy class using this internal FriendClass from within my testing assembly, so that I could instantiate it and do the testings accordingly.

Any idea or known practices to do so?

Thanks in advance! =)

0 投票
1 回答
4917 浏览

c++ - 列出所有打开的文件

这是此处找到的另一个问题的附加内容。

简而言之: 我想列出系统上所有打开的文件并检索它们的关联文件名。如果这是错误的方法,或者如果有其他方法,请给我推动正确的方向。或者,如果我遗漏了任何细节或不清楚的地方,请对我大喊大叫。

像另一个问题(上面链接)一样,我不关心语言(虽然 C 或 C++ 解决方案不会受到伤害),但我希望它可以在 Windows XP 上运行。另外,我需要避免使用内核模式驱动程序。

我对这个问题的原始解决方案的问题是,如果文件句柄以某种方式打开,NtQueryObject调用可能会挂起。这在此处的 SysInternals 论坛上进行了概述。

根据 SysInternals 论坛,使用带有超时的 CreateThread 是公认的解决方案,但这样做似乎并不能让进程每次都正确关闭。即使在 Visual Studio 中调试它,我有时也会被迫重新启动计算机。有时当我运行它时必须重新启动我的计算机不是最好的选择。

另一个公认的解决方案是跳过带有特定GrantedAccess. GrantedAccess我遇到的问题是,鉴于上述论坛帖子中的概述,我错过了太多有用的句柄。

有人能指出我的问题的解决方案吗?

谢谢!

编辑:对不起,我应该更具体地说明我的问题。该NtQuerySystemInformation调用将为我提供句柄,被NtQueryObject调用的 withObjectNameInformation将挂在同步管道的句柄上(至少人们似乎是这么说的)。此处发布的示例使用内核模式驱动程序从 FILE_OBJECT 读取文件名——但我想避免使用驱动程序。所以是的,很像 SysInternals Handle 实用程序,但我相信他们也使用驱动程序,不是吗?

编辑 2:这是一种学术兴趣,因此无需担心使用本机 API 或其他可能在未来版本中被破坏的未记录技术。此外,GrantedAccess避免悬挂物体的a将是完美的。

编辑 3:我的最终目标是能够查看系统上当前打开了哪些文件。如果这完全是错误的方法,那么正确方向的另一点将不胜感激。

编辑:这只需要在 Windows XP 上工作,因为 Vista+ 有更优雅的解决方案,所以使用未记录的函数真的不是问题。

再次感谢!

0 投票
0 回答
79 浏览

ruby-on-rails - Rails 问题中的 Rails.env 实现

浏览rails源码,我在railties/lib/initializers.rb中发现了这样的方法

我知道它是如何工作的,但为什么要这样实现呢?只是为了延迟加载,还是有其他原因?

0 投票
1 回答
1742 浏览

c# - 我的 C# winform 需要检测其他应用程序何时进入/退出/运行 TRUE 全屏,首选事件

我的 C# winform 应用程序需要在其他应用程序以真正的全屏模式(不仅是最大化)运行期间将自身置于待机模式,例如视频游戏、视频电影、PowerPoint。

我需要一种方法来检测当前是否全屏显示其他应用程序。

是否有可能注册其他应用程序进入/退出全屏时触发的事件?

对于这两种需求,我会很感激有代码片段。

0 投票
1 回答
745 浏览

php - PHP的列表函数是如何工作的?

最近在这里回答了几个涉及使用 PHPlist函数的 SO 问题后,我想知道,“这个函数到底是如何在幕后工作的? ”。我正在考虑使用func_get_args()然后遍历参数列表之类的东西,这一切都很好而且很漂亮,但是分配部分到底是如何工作的呢?

这 ^ 不是先评估的吗?

所以准确地说,我的问题是该list函数如何能够创建分配给尚未评估的数组的范围变量?

0 投票
2 回答
1241 浏览

windows - LoadLibrary 引用计数

来自MSDN

系统在所有加载的模块上维护每个进程的引用计数。调用 LoadLibrary 会增加引用计数。

引用计数存储在哪里?

0 投票
1 回答
1444 浏览

java - Hibernate 有没有办法在不首先加载整个实体对象的情况下获取实体加载的 PersistentCollection?

这是一个谜题!:D

有没有办法强制 Hibernate 为实体加载集合而不首先加载整个实体?

让我更好地解释。我有一个这样注释的角色实体:

当我通过执行以下操作访问权限集合时:

Hibernate 使用其 PersistentCollection 的子类之一包装返回的集合。然后我可以使用 Hibernate.initialize(permissions); 强制集合被初始化。

但是,我需要的是一种无需先加载角色实体即可完成相同任务的方法。我知道我需要权限集合的实体的 ID,以及集合的角色 (temp.pack.Role.permissions)。

有没有办法做到这一点?我希望避免访问数据库来检索角色对象的所有字段(很多!)只是为了获取集合并将它们全部丢弃。

我可以使用连接,但这使我可以访问权限对象本身,而不是我需要的实际 PersistentCollection 包装器。

我试过这个:

但是没有用。我得到的集合只是一个普通的空集,没有加载任何内容。

我也试过这个:

但也没有工作,它失败了java.lang.IllegalArgumentException: unknown handler key

我也试过:

但也失败了java.lang.IllegalArgumentException: unknown handler key

关于如何做到这一点的任何想法?

0 投票
3 回答
3417 浏览

c++ - GNU STL 字符串:这里涉及到写时复制吗?

(免责声明:我不知道 C++ 标准对此会说什么......我知道,我很可怕)

在处理非常大的字符串时,我注意到 std::string 正在使用写时复制。我设法编写了最小的循环来重现观察到的行为,例如,下面的循环运行得非常快:

在循环体中添加写入时a_copy[1] = 'B';,显然发生了实际复制,并且程序在 0.3 秒内而不是几毫秒内运行。100 次写入使其速度减慢了大约 100 倍。

但后来就变得很奇怪了。我的一些字符串没有写入,只是读取,这没有反映在执行时间上,这几乎与字符串上的操作数量成正比。经过一番挖掘,我发现简单地从字符串中读取仍然会给我带来性能上的损失,所以它让我假设 GNU STL 字符串正在使用读取时复制(?)。

在陶醉了一段时间后,我发现从基本字符串中读取(使用 operator[])整个玩具程序也需要 0.3 秒。我对此不是 100% 满意。STL 字符串确实是读取时复制,还是它们根本允许写入时复制?我被引导认为 operator[] 有一些保护措施,可以防止保留它返回的引用并稍后写入它的人;真的是这样吗?如果不是,那么到底发生了什么?如果有人可以指出 C++ 标准中的某些相关部分,那也将不胜感激。

作为参考,我使用g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3, 和 GNU STL。