架构包含解决方案的流程,工件和高级结构。
我是微服务和系统设计的新手,我正在尝试了解API网关在身份验证和授权中的作用。 我遇到了两种不同的方法,每种方法都有其优点...
我正在编写一个小型国际象棋游戏。我有一个棋盘,上面有一些棋子。在悬停一块时,我想展示您可以移动到的潜在位置。 我一直在考虑 UI,我可以看到......
我希望为每个架构单独构建,并分别分发它们。所以我做了一些研究,例如查看了 Android - 为不同的处理器架构构建单独的 APK...
如何为 phpunit 测试用例分组/重用/混合自定义断言类?
我知道可以通过扩展默认测试用例来添加自定义断言,例如我添加了断言来检查数组是否只包含一个特定值: 我知道可以通过扩展默认的TestCase来添加自定义断言,例如我添加了断言来检查数组是否只能包含一个特定值: <?php namespace Kopernikus\TimrReportManager; use PHPUnit\Framework\TestCase; abstract class ArrayContainsValueTestCase extends TestCase { public static function assertArrayOnlyContainsTrue(array $haystack): void { static::assertArrayOnlyContainsSameValue(true, $haystack); } public static function assertArrayOnlyContainsSameValue(mixed $expectedValue, array $haystack): void { $haystack = array_unique($haystack); static::assertTrue(static::areOnlySameValuesInArray($expectedValue, $haystack), message: 'The array contains of different values, yet sameness was expected'); } private static function areOnlySameValuesInArray(mixed $expectedValue, array $haystack): bool { $haystack = array_unique($haystack); if (count($haystack) !== 1) { return false; } return reset($haystack) === $expectedValue; } public static function assertArrayOnlyContainsFalse(array $haystack) { static::assertArrayOnlyContainsSameValue(false, $haystack); } } 这是一个与领域非常不可知的断言。 我想要构建的其他自定义断言更多地与项目的域相关,例如我创建了一个断言来检查自定义 TimeEntry 值对象是否包含一个特定的数字票证 ID,并且该对象应该存在于自己的类中: <?php namespace Kopernikus\TimrReportManager; use Kopernikus\TimrReportManager\Dto\TimeEntry; use PHPUnit\Framework\TestCase; abstract class TimeEntryTestCase extends TestCase { public static function assertTimeEntryHasTicketId(TimeEntry $timeEntry, int $ticketNumber) { $ticketNumberHashtag = '#' . (string)$ticketNumber; $count = substr_count($timeEntry->description, '#'); static::assertSame(1, $count, 'the time entry must only contain one hashtag for the ticket id'); static::assertSame($timeEntry->ticket, $ticketNumberHashtag); } } 假设我有一个测试班,MyTestThatRequiredBothAssertions。我可以通过以下方式实现: ArrayContainsValueTestCase extends TestCase TimeEntryTestCase extends ArrayContainsValueTestCase MyTestThatRequiredBothAssertions extends TimeEntryTestCase 然而,并非每个实际的 TimeEntryTestCase 都需要 ArrayContainsValueTestCase 提供的断言。 我还计划创建几个自定义断言,而不仅仅是两个,因此继承树似乎可能会失控。 我宁愿这样做: abstract class ArrayContainsValueTestCase extends TestCase abstract class TimeEntryTestCase extends TestCase 并且想在特定的测试用例中使用它们,如下所示: class MyTestThatRequiredBothAssertions extends ArrayContainsValueTestCase, TimeEntryTestCase 并根据需要添加更多测试用例,但 php 只允许扩展一个类,所以这是行不通的。 我还缺少另一个解决方案来区分这里的问题吗? 我可以以不同的方式提供自定义断言,同时保留测试类中方法的 IDE 支持(自动完成方法名称及其参数值)吗? 我想要有多个类定义自定义断言,所以将它们全部放在一个文件中不是我想做的事情。 其中每一个最多只能扩展默认的 TestCase 类,但我希望能够自由地将它们相互混合。 仅当 SpecificTestCase 依赖于另一个 CustomTestCase 的断言时,我才可以接受它们相互依赖。 我也考虑过使用特征,但特征不能扩展另一个类,所以: trait MyCustomAssertion extends TestCase { } 也是不允许的。 这个问题肯定也会对 PhpUnit 的原始设计产生一些影响。它同样受到 PHP 的单继承规则的限制,在其早期版本中,PHP 中甚至没有通常用于处理您现在描述的钻石问题的特征。 鉴于关于特征可扩展性的假设并没有最终解决作为早期的困惑,并且你仍然不想在这里使用特征,你可以看看断言是如何在 PHP 单元本身中实现的。 每个断言至少有一个类,即我如何阅读你的问题,你努力的方向。
laravel/vue 设计:当 laravel 处理作业时处理 SPA 上的加载程序的不同方式
这是一个设计问题,虽然我是一个全栈开发人员,但我在前端用户体验方面比较弱: 我正在使用 Inertia 和 Vue 创建一个 Laravel 应用程序,其中每个用户都有作品集。投资组合相关...
laravel/vue 设计:在 laravel 处理作业时处理 SPA 上的加载程序的最佳方式
这是一个设计问题,虽然我是一个全栈开发人员,但我在前端用户体验方面比较弱: 我正在创建一个 laravel/Inertia/vue 应用程序,其中每个用户都有作品集。 投资组合依赖于计算...
我遇到的情况是,我的服务依赖于相当多的繁重逻辑,而这些逻辑并不完全适合同一个服务文件。我想从服务文件中抽象出这个逻辑,但也......
我们应用程序的架构文档中有一些我无法直观地联系起来的流行语 无状态可分发应用程序 可插拔的安全模型 我可以
我想知道什么叫这样的实现。 我正在使用两个第三方服务,它们为我提供了某些版本的文档。 (文档A,文档B)。 我有一些想要的对象/类...
了解非银行金融公司面临的挑战 非银行金融公司 (NBFC) 在金融生态系统中发挥着关键作用,为服务不足的部门提供信贷和金融服务。哈...
如何正确处理应用程序中的付费等级以及用户根据等级可以做什么或不能做什么?
我需要在我的应用程序中实现付费层级,我将为此使用 Stripe。 我在后端有 SpringBoot 微服务来处理所有应用程序逻辑,包括一些网关和微服务...
多线程单体应用程序与 Docker 容器中的微服务的 CPU 使用率比较
我有一个关于与基于微服务的设计相比,Docker 化环境中单体应用程序的 CPU 使用效率的问题。具体来说: 会运行多个线程...
虚拟机 Kali Linux 的问题 - Sudo Apt Update 和 GDB
我一直在尝试让 Kali Linux VM 工作,但我在某些事情上遇到了麻烦。我有一台 M2 Mac,一直在做 CTF 挑战,所以我想使用像 GDB 这样的工具,我需要......
我正在探索如何构建一个暂停直到资源可用的资源池。 这个池可以是任何东西,从允许 API 调用的插槽到图像处理器的套接字连接,或者在这个
我编写了我的第一个 ArchUnit 测试: 导入静态 com.tngtech.archunit.library.dependency.SlicesRuleDefinition.*; // 更多非静态导入 @RunWith(ArchUnitRunner.class) @AnalyzeClasses(包...
使用Tensorflow v2.3.0的“计算能力”“cuda架构”之间的区别澄清
我想了解一下 NVidia 使用的“计算能力”(https://developer.nvidia.com/cuda-gpus)和“Tensorflow 的 CUDA 架构(https://www.tenso)...
我使用访客设计模式来解决我们系统中的问题之一。作为如何实现它的参考,我使用了 DoFactory 网站和这个 YouTube 视频。 在 DoFactory 示例中,访问者 u...
如有必要,请参阅如何四舍五入到最多 2 位小数。 这应该是计算机科学的人! :-) SI 舍入可能是最好的参考/标准。 1.78 有 3 个位置(“
在 cPanel 主机上构建 Web 邮件应用程序:如何绑定实际的电子邮件服务?
我正在为最终用户构建类似于 Gmail 的 Webmail SPA。 此应用程序将托管在 cPanel 共享托管(LAMP 堆栈)上。 最终用户没有 cPanel 电子邮件访问权限,其他...
我有一个带有大量 NFC 和 GPS 功能的 Android 应用程序。我需要使用 GPS 或 NFC 标签扫描来验证用户的位置。 我创建了一个处理 NFC 的用例,但我会...