language-agnostic相关内容

为什么递归优于迭代?

迭代比递归更高效,对吧?那么为什么有些人认为递归比迭代更好(用他们的话来说更优雅)?我真的不明白为什么像 Haskell 这样的语言不允许迭代并鼓励递归?鼓励性能不佳的东西不是很荒谬(当更多性能选项(即递归可用)时也是如此)?请对此有所了解.谢谢. 解决方案 迭代比递归,对吧? 不一定.这个概念来自许多类似 C 的语言,在这些语言中调用函数(无论是否递归)都会产生很大的开销,并且 ..
发布时间:2022-01-24 11:28:24 其他开发

如何迭代地计算笛卡尔积?

这个问题询问如何计算给定数量向量的笛卡尔积.由于向量的个数是预先知道的,而且相当少,所以用嵌套的for循环很容易得到解. 现在假设给你一个用你选择的语言的向量向量(或列表的列表,或集合的集合等): l = [ [1,2,3], [4,5], [6,7], [8,9,10], [11,12], [13] ] 如果我被要求计算它的笛卡尔积,那就是 [ [1,4,6,8,11,13], [1 ..

在 C 中允许重复的 const 限定符但在 C++ 中不允许?

示例代码片段 const const const int x = 10;主函数(){} 在 C 中编译,但不在 C++ 中.为什么它会在 C 中编译?我认为这在 C 中也会失败.没关系. C++ 标准的哪一部分禁止使用重复的 const,而 C 标准的哪一部分允许这样做? 解决方案 C99 §6.7.3/4: 如果同一个限定符在同一个 specifier-qualifier ..
发布时间:2022-01-23 23:26:39 C/C++开发

如何跨网络互斥?

我有一个在网络上运行的桌面应用程序,每个实例都连接到同一个数据库. 那么,在这种情况下,我如何实现一个互斥锁,该互斥锁适用于连接到同一数据库的所有正在运行的实例? 换句话说,我不希望这两个以上的实例同时运行相同的功能.如果一个已经在运行该函数,则其他实例不应访问它. PS:数据库事务不会解决,因为我不想互斥的功能不使用数据库.我提到数据库只是因为它可以用来在运行的实例之间交换信息 ..
发布时间:2022-01-22 20:38:58 其他开发

如何避免将数据库密码以明文形式存储在源代码中?

在我正在开发的网络应用程序中,我目前在连接数据库时使用了一个简单的解决方案: Connection c = DriverManager.getConnection("url", "username", "password"); 这很不安全.如果攻击者获得了对源代码的访问权,他也获得了对数据库本身的访问权.我的 Web 应用程序如何连接到数据库而不在源代码中以明文形式存储数据库密码? 解决 ..
发布时间:2022-01-22 08:28:31 其他开发

简单的密码加密

有什么好的、简单的加密方案可以保护数据库中的密码?我不一定需要任何超安全的东西,也不需要任何闪电般快速的东西,但那些东西会很好.首先,我只想要一些易于实现而又不会非常缓慢或不安全的东西. 解决方案 正如 mk 所说,SHA1 或 MD5 是标准的,以及 SHA2. 更新:多年来,随着处理器的速度越来越快,哈希变得更加暴力.现在建议您使用 bcrypt. 您想要的通常称为加密哈希 ..
发布时间:2022-01-22 08:13:17 其他开发

参数和参数之间的区别

“参数"和“参数"之间是否有区别,或者它们只是同义词? 解决方案 参数通常用于实际参数与形式参数的意义上. 形参是在函数声明/定义/原型中给出的,而实参是调用函数时传递的——a的实例形式参数,如果你愿意的话. 话虽如此,它们通常可以互换使用,它们的确切用途取决于不同的编程语言及其社区.比如我也听说过实参等 所以这里 x 和 y 将是形式参数: int foo(int x ..
发布时间:2022-01-21 21:42:06 其他开发

“参数"vs“论据"

我把 parameter 和 argument 弄混了,没有真正注意什么时候使用一个,什么时候使用另一个. 你能告诉我吗? 解决方案 参数是变量,它是方法签名(方法声明)的一部分.参数是调用方法时使用的表达式. 考虑以下代码: void Foo(int i, float f){//做事}无效酒吧(){int anInt = 1;Foo(anInt, 2.0);} 这里i和f ..

如何构建无锁队列?

我今天花了很多时间研究无锁队列.我有多个生产者,多个消费者的情况.为了测试,我实现了一个在 Win32 下使用 Interlocked SList 的系统,它使我基于重线程任务的代码的性能提高了一倍.但不幸的是,我希望支持多个平台.在多个平台上互锁本身不是问题,我可以放心地假设我可以毫无问题地互锁.然而,实际的实现让我迷失了. 最大的问题似乎是您需要保证列表推送/弹出将仅使用一个互锁调用.否 ..
发布时间:2022-01-21 11:51:02 其他开发

在 XML 中存储 base64 数据?

如何在 XML 中存储 base64 字符串? 您是否使用 CDATA 在 XML 中存储 base64 字符串?是否有帮助,因为它允许使用 在字符串中? base64 是否可配置,如果它们与 XML 冲突,您告诉它不要使用某些字符? 解决方案 你可以将其存储为文本或属性值;不需要转义或 CDATA 部分.标准的 base 64 字符 + 和 /(除了 az、AZ 和 0 ..
发布时间:2022-01-21 08:47:20 其他开发

为什么语言不使用短路评估?

为什么一种语言不使用短路评估?不使用有什么好处吗? 我知道这可能会导致一些性能问题......这是真的吗?为什么? 相关问题:使用短路评估的好处 解决方案 不使用短路评估的原因: 因为如果你的函数、属性 Gets 或操作符方法有副作用,它会表现不同并产生不同的结果.这可能与:A) 语言标准,B) 您的语言的先前版本,或 C) 您的语言典型用户的默认假设相冲突.这就是VB不 ..
发布时间:2022-01-20 23:20:19 其他开发

复制构造函数/操作符/函数是否需要明确它实现的复制变体?

昨天我问了 一个关于在 C# 中复制对象的问题,大多数答案都集中在深拷贝和浅拷贝之间的区别,以及应该明确给定拷贝构造函数(或运算符或函数)实现这两种拷贝变体中的哪一种.我觉得这很奇怪. 我用 C++ 编写了很多软件,这是一种严重依赖复制的语言,而且我从不需要多个复制变体.我曾经使用过的唯一一种复制操作是我称之为“足够深的复制"的操作.它执行以下操作: 如果对象拥有成员变量的所有权(参见 ..
发布时间:2022-01-20 18:21:43 其他开发

TRUE 是否始终具有非零值?

我有一位同事坚持认为 TRUE 曾经被定义为 0,而所有其他值都是 FALSE.我可以发誓我使用过的每一种语言,如果你甚至可以得到一个布尔值,那么 FALSE 的值是 0.TRUE 曾经是 0 吗?如果是这样,我们什么时候切换的? 解决方案 你的同事对 0/non-0 感到困惑的事情可能是指人们使用数值作为返回值来表示成功,而不是真相(即在 bash脚本和一些 C/C++ 风格). ..
发布时间:2022-01-19 17:41:12 其他开发

为什么写一个封闭的 TCP 套接字比读一个更糟糕?

当你读取一个关闭的 TCP 套接字时,你会得到一个常规错误,即它返回 0 表示 EOF 或 -1 和一个错误代码在 errno 中,可以用 perror. 但是,当您编写一个关闭的 TCP 套接字时,操作系统会向您的应用发送 SIGPIPE,如果没有被捕获,它将终止该应用. 为什么写关闭的 TCP 套接字比读更糟糕? 解决方案 +1 To Greg Hewgill 以正确的方向 ..

Switch(Case)总是错的吗?

在某些情况下 switch(case) 是一个很好的设计选择(除了简单性)而不是策略或类似模式...... 解决方案 在测试原语的值时使用开关.(即整数或字符). 在不同的类型之间进行选择时使用多态性. 例子:测试用户输入的字符是否是“a"、“b"或“c"之一是开关的工作. 测试你正在处理的对象是狗还是猫是多态调度的工作. 在许多语言中,如果您有更复杂的值,您可能无 ..
发布时间:2022-01-19 10:44:06 其他开发