internals相关内容

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

(免责声明:我不知道 C++ 标准对此会说什么……我知道,我很糟糕) 在处理非常大的字符串时,我注意到 std::string 正在使用写时复制.我设法编写了最小的循环来重现观察到的行为,例如,下面的循环运行得非常快: #include 使用标准::字符串;诠释主要(无效){字符串 basestr(1024 * 1024 * 10, 'A');for (int i = 0; ..
发布时间:2022-01-23 21:04:55 C/C++开发

OCaml 内部结构:异常

我很想知道 OCaml 运行时如何处理异常以使它们变得如此轻量级.他们是使用 setjmp/longjmp 还是在每个函数中返回一个特殊值并传播它? 在我看来 longjmp 会给系统带来一点压力,但只有在引发异常时,同时检查每个函数返回值需要在调用函数后检查每个值,这似乎我会进行很多检查和跳转,似乎它会表现最差. 通过查看 OCaml 如何与 C 交互(http://caml.inr ..
发布时间:2022-01-17 08:46:17 其他开发

Lucene/Solr 如何在多字段/分面搜索中实现高性能?

上下文 这是一个主要关于 Lucene(或可能是 Solr)内部的问题.主要主题是分面搜索,其中可以沿着对象的多个独立维度(方面)进行搜索(例如汽车的大小、速度、价格). 当使用关系数据库实现时,对于大量构面,多字段索引没有用,因为可以按任何顺序搜索构面,因此使用特定有序多索引的机会很小,并创建所有可能的排序指数难以忍受. Solr 被宣传为可以很好地应对分面搜索任务,如果我认为 ..
发布时间:2022-01-15 13:15:05 其他开发

什么是 INT 21 小时?

受这个问题的启发 如何强制 GDB 反汇编? 我想知道 INT 21h 作为一个概念.现在,我对内部结构有了一些非常生疏的知识,但没有那么多细节.我记得在 C64 中有常规中断和不可屏蔽中断,但我的知识到此为止.你能给我一些线索吗?是 DOS 相关的策略吗? 解决方案 来自 这里:用于各种功能的多用途 DOS 中断,包括读取键盘和写入控制台和打印机.它还用于使用早期的文件控制块 ..
发布时间:2022-01-11 23:01:56 其他开发

Mockito 内部结构

我正在尝试了解 Mockito 的内部功能如何.到目前为止,代码对我来说很难理解,我正在寻找关于 Mockito 基本工作原理的高级调查. Mockito @ GrepCode 我编写了一些示例代码来展示我目前的理解: class C {字符串 s;public void getS() { return s;}//...}C cm = 模拟(C.class);when( cm.met ..
发布时间:2022-01-08 22:04:03 其他开发

C# 中静态构造函数/初始值设定项的顺序

在开发 C# 应用程序时,我刚刚注意到在几个地方静态初始值设定项相互依赖,如下所示: 静态私有列表a = new List() { 0 };静态私有列表b = new List() { a[0] }; 没有做任何特别有效的事情.那只是运气吗?C# 有解决这个问题的规则吗? 编辑:(回复:Panos)在文件中词汇顺序似乎是王道?跨文件呢? 在寻找时,我尝试了这样的循环依赖: 静态私 ..
发布时间:2022-01-05 20:16:34 C#/.NET

数据库在内部如何工作?

过去几年我一直在使用数据库,我想我已经相当有能力使用它们了.然而,我最近正在阅读乔尔的 抽象抽象法则,我意识到即使我可以编写一个查询以从数据库中获取几乎所有我想要的东西,我不知道数据库实际上是如何解释查询的.有没有人知道解释数据库内部如何工作的好文章或书籍? 我感兴趣的一些具体事情是: 数据库实际上做了什么来找出与 select 语句匹配的内容? 数据库如何以不同的方式解释连接与具有 ..
发布时间:2022-01-05 11:54:51 其他开发

Git 的包文件是增量文件而不是快照吗?

Git 与大多数其他版本控制系统之间的一个主要区别是,其他版本控制系统倾向于将提交存储为一系列增量 - 一次提交和下一次之间的变更集.这似乎是合乎逻辑的,因为它是存储关于提交的尽可能少的信息.但是提交历史越长,比较修订范围所需的计算就越多. 相比之下,Git 存储每个修订版中整个项目的完整快照.这不会使 repo 大小随着每次提交而急剧增加的原因是项目中的每个文件都作为文件存储在 Git 子 ..
发布时间:2022-01-04 14:43:13 其他开发

为什么在内部类中使用公共方法?

我们的一个项目中有很多代码如下所示: 内部静态类扩展{公共静态字符串 AddFoo(这个字符串 s){if (s == null){返回 "Foo";}返回 $({s}Foo);}} 除了“以后公开类型更容易"之外,还有什么明确的理由要这样做吗? 我怀疑它只在非常奇怪的边缘情况下(Silverlight 中的反射)重要或根本不重要. 解决方案 UPDATE:这个问题是 the20 ..
发布时间:2022-01-04 11:30:03 C#/.NET

关于 getchar() 循环如何在内部工作的困惑

我在下面包含了一个使用 getchar() 的示例程序,以供参考(不是任何人都可能需要它),如果您愿意,可以随时解决有关它的问题.但我的问题是: 当程序调用getchar()时到底发生了什么? 这是我的理解(请澄清或更正我): 调用 getchar 时,它会检查 STDIN 缓冲区以查看是否有任何输入. 如果没有任何输入,getchar 就会休眠. 唤醒后,getchar 会 ..
发布时间:2022-01-04 08:29:35 其他开发

fork() 如何知道何时返回 0?

以下面的例子为例: int main(void){pid_t pid;pid = fork();如果(pid == 0)子进程();别的父进程();} 如果我错了,请纠正我,一旦 fork() 执行,就会创建一个子进程.现在通过这个 answer fork() 返回两次.那是一次用于父进程,一次用于子进程. 这意味着两个独立的进程在 fork 调用期间而不是在它结束之后出现. 现在 ..
发布时间:2022-01-02 19:33:05 服务器开发

如何获取我的 Android 设备内部下载文件夹路径?

是否可以获取Android设备的内部下载文件夹路径? 解决方案 如果设备有 SD 卡,您可以使用: Environment.getExternalStorageState() 如果您没有 SD 卡,请使用: Environment.getDataDirectory() 如果没有SD卡,可以在设备本地创建自己的目录. //如果没有SD卡,创建新的目录对象在设备上创建目录if (En ..
发布时间:2022-01-02 16:39:59 移动开发

java接口内部是如何实现的?(虚拟表?)

C++ 具有多重继承.在程序集级别实现多重继承可能相当复杂,但网上有很好的描述这通常是如何完成的(虚拟表、指针修复、thunk 等). Java 没有多重实现继承,但它有多重接口继承,所以我不认为每个类只有一个 vtable 的直接实现可以实现这一点.java内部是如何实现接口的? 我意识到与 C++ 不同,Java 是由 Jit 编译的,因此不同的代码片段可能会以不同的方式进行优化, ..
发布时间:2021-12-31 14:28:48 Java开发

Laravel 5.4 - 如何设置 PDO 获取模式?

自定义获取模式的功能已从 L5.4 中删除,默认为 PDO::FETCH_OBJ. 升级指南指出您可以使用事件侦听器覆盖它: Event::listen(StatementPrepared::class, function ($event) {$event->statement->setFetchMode(...);}); 我一生都无法理解如何实现这一点: 1) 我应该把代码放在哪 ..
发布时间:2021-12-18 21:53:00 PHP

调试器是如何工作的?

我一直想知道调试器是如何工作的?特别是可以“附加"到已经运行的可执行文件的那个.我知道编译器将代码翻译成机器语言,但是调试器如何“知道"它所附加的内容? 解决方案 调试器如何工作的细节将取决于您正在调试的内容以及操作系统是什么.对于 Windows 上的本机调试,您可以在 MSDN 上找到一些详细信息:Win32 Debugging API. 用户通过名称或进程 ID 告诉调试器要附 ..
发布时间:2021-12-14 08:16:53 其他开发

bcrypt 如何内置盐?

Coda Hale 的文章 “如何安全地存储密码" 声称: bcrypt 内置了盐来防止彩虹表攻击. 他引用了这篇论文,其中说在 OpenBSD 的 bcrypt 实现中: OpenBSD 从 arcfour 生成 128 位 bcrypt salt(arc4random(3)) 密钥流,用随机数据播种到内核从设备计时收集. 我不明白这是如何工作的.在我的盐概念中: ..
发布时间:2021-12-13 09:11:43 其他开发

git 索引究竟包含什么?

Git 索引具体包含哪些内容,可以使用什么命令查看索引内容? 感谢您的所有回答.我知道索引充当临时区域,提交的内容在索引中而不是工作树中.我只是好奇索引对象由什么组成.我猜它可能是一个文件名/目录名列表、SHA-1 对、一种虚拟树? 在 Git 术语中,是否有任何 plumbing 命令可以用来列出索引的内容? 解决方案 Git 书包含一篇关于 的文章索引包括什么: 索引 ..
发布时间:2021-12-06 09:10:53 其他开发

为什么 PHP 的自动加载功能在 CLI 模式下不起作用?

这更多是为了我自己的个人启迪,但是,这一直困扰着我:为什么 PHP 在 CLI 模式下不能执行“自动加载"? 多年来我一直在阅读此免责声明,但我从未读过任何涉及原因的内容: http://php.net/manual/en/language.oop5.autoload.php: 注意:如果在 CLI 交互模式下使用 PHP,则自动加载不可用. 有谁知道是什么阻止了 PHP ..
发布时间:2021-11-30 21:26:13 PHP