由于数组和散列只能包含Perl中的标量,为什么在访问数组或散列元素时必须使用$来告诉解释器该值是标量?换句话说,假设您有一个数组@myarray和一个哈希%myhash,为什么需要这样做:
$x = $myarray[1];
$y = $myhash{'foo'};
Run Code Online (Sandbox Code Playgroud)
而不只是做:
$x = myarray[1];
$y = myhash{'foo'};
Run Code Online (Sandbox Code Playgroud)
为什么上面的含糊不清?
如果除了那个地方的$之外,它不是非法的Perl代码吗?例如,Perl中的以下都不是非法的吗?
@var[0];
@var{'key'};
%var[0];
%var{'key'};
Run Code Online (Sandbox Code Playgroud) 我有一堆运行这个Linux应用程序的服务器.我希望他们能够生成碰撞概率很低的GUID.我确定我可以从/ dev/urandom中提取128个字节,这可能会很好,但是有一种简单易用的方法来生成更接近Win32的GUID吗?具体来说,考虑到空间(井,MAC地址),时间和随机性?我不想取消它的盒子,我只想要类似CreateGuid()的东西
我正在设计一个处理两组数据的应用程序 - 用户和区域.从第三方生成的文件中读取数据.我有一个User类和一个Area类,数据被读入Users数组和Areas数组(或其他适当的内存结构,具体取决于我们使用的技术).
这两个类都有一个从文件中读取的唯一ID成员,User类包含一个Area ID数组,给出一个用户与许多Area关联的关系.
要求非常简单:
我的第一个想法是将数据保留在两个数组中,然后对于每个要求,都有一个单独的方法,可以根据需要询问一个或两个数组.这很容易实现,但我不相信它一定是最好的方法.
然后我考虑在User类上有一个'Get Areas'方法,在Area类上有一个'Get Users'成员,如果我在一个我有一个Area对象的阶段,我会发现它会更有用它是属性的用户,但那么Area类上的'Get Users'方法如何知道/有权访问Users数组.
我以前曾多次遇到过这个问题,但从未真正想出过一个明确的解决方案.也许我只是让它变得比实际更复杂.任何人都可以提供任何有助于我进行此类设计的提示,网址或书籍吗?
更新:谢谢大家抽出时间留下一些提示.非常感谢您的评论.
我同意这个问题的根源是多对多的关系.我理解如何在关系数据库中建模,这非常简单.
我收到的数据是来自第三方的二进制文件的形式,所以我无法控制这些数据的结构,但是当我读到它时,我可以以最好的方式存储它.它是圆形的方形钉漏洞,但我想把它读入然后存储在数据库中,然后程序必须查询数据库才能得到结果.这不是大量的数据,所以我认为通过将其存储在内存结构中可以得到我需要的东西.
在我看来phpMyAdmin默认导入表格与排序latin1_swedish_ci,我怎么改变这个?
那么有人如何创建音乐可视化工具呢?我看过Google,但我还没有找到任何谈论实际编程的内容; 主要是链接到插件或可视化应用程序.
我使用iTunes,但我意识到我需要Xcode为此编程(我目前在伊拉克部署并且无法下载那么大的文件).所以现在我只是对学习它背后的"理论"感兴趣,比如处理频率和其他所需要的东西.
有没有办法在Java代码中验证电子邮件地址是否有效.通过有效,我不仅仅意味着它的格式正确(someone@domain.subdomain),但这是一个真正的活动电子邮件地址.
我几乎可以肯定,没有100%可靠的方法可以做到这一点,因为这种技术将成为垃圾邮件发送者的梦想.但也许有一些技术可以提供一些关于地址是否"真实"的有用指示.
GAE还有哪些替代方案,因为我已经拥有了一些我希望保留的代码.换句话说,我正在挖掘python.但是,我的用例更多是请求数量较少,CPU使用率较高的用例,而且我担心我可能永远无法继续使用App Engine.我听过很多人谈论亚马逊网络服务和其他类型的云提供商,但我很难看到其他大多数产品提供的应用范围(数据查询,用户身份验证,自动扩展)引擎提供.我有什么选择?
我想要的是一种将double转换为使用half-up方法进行舍入的字符串的方法 - 即如果要舍入的小数为5,则它总是向上舍入到前一个数字.这是在大多数情况下舍入大多数人所期望的标准方法.
我也希望只显示有效数字 - 即不应该有任何尾随零.
我知道这样做的一种方法是使用该String.format方法:
String.format("%.5g%n", 0.912385);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91239
Run Code Online (Sandbox Code Playgroud)
这很好,但它总是显示5位小数的数字,即使它们不重要:
String.format("%.5g%n", 0.912300);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91230
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用DecimalFormatter:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91238
Run Code Online (Sandbox Code Playgroud)
但是你可以看到这使用了半均匀舍入.也就是说,如果前一个数字是偶数,它将向下舍入.我想要的是这个:
0.912385 -> 0.91239
0.912300 -> 0.9123
Run Code Online (Sandbox Code Playgroud)
在Java中实现这一目标的最佳方法是什么?
我正在寻找验证框架,虽然我已经在使用NHibernate我正在考虑使用来自contrib项目的NHibernate.validator但是我也看看MS Validation Block看起来很健壮,但我还没有详细介绍每一个我想知道有没有人进入这两个框架,经验如何?