或者,更准确一点:哪些编程语言是由无上下文语法定义的?
从我收集的内容来看,由于宏和模板之类的东西,C++不是无上下文的.我的直觉告诉我,函数式语言可能没有上下文,但我没有任何硬数据来支持.
额外的代表简洁的例子:-)
用Java编程我几乎总是出于习惯,写下这样的东西:
public List<String> foo() {
return new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)
大多数时候甚至没有考虑过它.现在,问题是:我是否应该始终将接口指定为返回类型?或者建议使用接口的实际实现,如果是,在什么情况下?
很明显,使用界面有很多优点(这就是它的原因).在大多数情况下,库函数使用的具体实现并不重要.但也许有些情况确实很重要.例如,如果我知道我将主要随机访问列表中的数据,LinkedList
那就不好了.但是如果我的库函数只返回界面,我根本就不知道.为了安全起见,我甚至可能需要将列表明确地复制到ArrayList
:
List bar = foo();
List myList = bar instanceof LinkedList ? new ArrayList(bar) : bar;
Run Code Online (Sandbox Code Playgroud)
但这看起来很可怕,我的同事可能会在自助餐厅里骂我.理所当然.
你们有什么感想?您的指导方针是什么?您何时倾向于抽象解决方案,何时会显示您的实施细节以获得潜在的性能提升?
我想使用POST方法将参数发布到URL,但我不能使用表单.即使我使用表单,也必须在没有用户交互的情况下自动发布.这可能吗?我怎样才能做到这一点?
给定n个边长为l的正方形,如何确定圆的最小半径r,以便我可以沿着圆周均匀分布所有正方形而不重叠?(约束:第一个方格将始终位于12点.)
后续问题:如何放置n个高度为h和宽度为w的相同矩形?
我们目前正在设置集成服务器,在此过程中我们在SVN上设置了预提交挂钩,这样我们的开发人员就无法检查语法无效的文件(主要是PHP和XML).
我们还有一堆.sql文件(对于MySQL),我也想提到它们.不幸的是,谷歌没有提出任何有用的任务.
有任何想法吗?
我想创建一个名称将包含特殊字符的数据库.例如,(., - ,_,@,#,$,%,&,*)
任何人都可以提供任何输出吗?
我正在使用websockets,看来,我测试的所有具有本机websocket支持的浏览器(Safari,Chrome)阻止了一些端口.如果我尝试通过端口80连接到我的服务器,每个工作正常.如果我尝试其他端口,如81,82或1000,则连接过早关闭,因为另一端没有任何东西.这是预期的行为,它的工作非常精彩.
但是,对于某些端口(例如20,37或79),Chrome开发人员控制台只是说,WebSocket port 79 blocked
但我的JS代码没有收到任何有关此信息的信息(甚至没有某种超时).Safari有点冗长和评论SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent.
所以我的问题是:
如何可靠地检测到端口被阻塞?
我是否必须设置超时并手动检查?这似乎不是最明智的方式,尽管它可能是跨浏览器的唯一方法.
我在哪里可以找到被阻止端口的列表?
不幸的是,我的谷歌搜索没有发现任何有用的东西.
为什么这些端口首先被阻止?
提前致谢!
我目前正在开发一个Web应用程序,并遇到了一个小问题.我正在使用ExtJS,但我相信这是一个普遍的JS问题.
当光标进入HTML元素时,onmouseover
触发该光标离开该元素时onmouseout
触发该事件.到现在为止还挺好.不幸的是,似乎人们不能完全依赖这种行为.非常快速的鼠标移动可能导致事件无法触发(例如,使用数位板重新定位光标).
处理这些问题的最佳做法是什么?我是否需要监控所有onmousemove
事件并手动跟踪光标的最后位置并自行触发相应的onmouseout
事件?
我刚刚用Ansible 2.2和Debops弄湿了,我遇到了以下问题.我有一个主机test-host
,我部署了一个MySQL服务器(使用geerlingguy.mysql).
该角色使用以下处理程序重新启动服务:
---
- name: restart mysql
service: "name={{ mysql_daemon }} state=restarted sleep=5"
Run Code Online (Sandbox Code Playgroud)
我认为,它使用Ansibles 服务模块来重启服务器.但是,失败了:
unsupported parameter for module: sleep
Run Code Online (Sandbox Code Playgroud)
所以只是为了排除那个自定义角色的任何怪异,我试图像这样直接执行模块:
ansible test-host -b -m service -a 'name=mysql sleep=5 state=restarted'
Run Code Online (Sandbox Code Playgroud)
结果相同.
使用更详细的输出显示运行Ansible(除其他外):
Running systemd
Using module file /usr/local/lib/python2.7/site-packages/ansible-2.2.0-py2.7.egg/ansible/modules/core/system/systemd.py
Run Code Online (Sandbox Code Playgroud)
因此,似乎使用该systemd
模块而不是service
(查看模块显示它确实是别名service
).并且,瞧,systemd
不支持sleep
参数.
如何解决这个问题?
我正在使用Douglas Crockford的设计模式来实现私有,特权和公共方法.它基本上看起来像这样(使用RequireJS):
define(function () {
return function () {
var that = {},
_init = function () {
// "constructor"
},
_privateFn = function () {
return 42;
};
that.publicFn = function () {
return 2 * _privateFn();
};
_init(arguments);
return that;
};
});
Run Code Online (Sandbox Code Playgroud)
但是,我无法让jsdoc工具包正确解析它.我玩过@name
和@memberOf
注释(就像这里一样),但无论我做什么,我都无法让功能显示出来.
有谁知道解决方案?