我有一个应用程序,它由几个不同的程序集组成,其中一个程序集包含类所遵循的各种接口,以及类通过程序集边界进行通信.有几个类触发事件,有几个对这些事件感兴趣.
我的问题如下:实现某种中央EventConsolidator是一种好的做法吗?这将是高度耦合的,因为它需要知道抛出事件的每个类(或至少是接口),并且事件的每个消费者都需要具有对EventConsolidator的引用才能订阅.
目前我的情况是A级知道B级(但不是C级),B级知道C级等等.然后,如果C触发事件B需要将其拾起并触发自己的事件以便A响应.这些类型的链可能会变得很长,并且B可能只对事件感兴趣才能传递它.我不希望A知道C,因为这会破坏封装.
在这种情况下,有什么好的做法?集中事件,或者咧嘴笑,并在每个中间阶段定义事件?或者做出决定的标准是什么?谢谢!
编辑:这是另一个问题基本上是同一件事.
我有一个字符串,我想用作文件名,所以我想删除文件名中不允许使用Python的所有字符.
我宁愿比其他方面更严格,所以让我说我只想保留字母,数字和一小部分其他字符"_-.() ".什么是最优雅的解决方案?
文件名需要在多个操作系统(Windows,Linux和Mac OS)上有效 - 它是我的库中的MP3文件,歌曲标题为文件名,并在3台机器之间共享和备份.
其他ASP.NET安全最佳实践是什么?
到目前为止已确定列于此处:
在将应用程序移至生产环境时,始终生成新的加密密钥和管理员密码.
切勿直接或以加密形式存储密码.始终存储单向散列密码.
始终将连接字符串存储在Web.config的标记中,并使用受保护的配置提供程序(RSA或DPAPI)在配置部分中对其进行加密.见这里的例子
使用具有最小权限的用户ID连接到SQL Server或您正在使用的数据库.例如,如果您只是从某个应用程序模块执行存储过程,那么您必须创建一个只具有执行权限的用户ID.
如果要在页面上使用基于角色的安全性,请使用PrincipalPermission.
[PrincipalPermission(SecurityAction.Demand, Role="Admin")]
public class AdminOnlyPage : BasePageClass
{
// ...
}始终使用参数来防止SQL查询中的SQL 注入.
始终在Web配置中保留customErrors,以使您将错误/异常设为私有
<customErrors mode ="On"defaultRedirect ="MyErrorPage.htm"/>
在Web应用程序中,始终验证用户对html标记或任何脚本的输入.
切勿存储敏感信息,例如cookie中的密码.
用Visual C/C++ 2005/2008编写的程序可能无法使用其他编译器(如GNU C/C++)编译,反之亦然.例如,当尝试重用使用windows.h的代码时,为另一个特定的编译器编写代码时,需要注意哪些差异?
是否有任何关于如何生成与一个编译器或另一个编译器兼容的代码的信息,例如GC/C++或MSVC/C++?这会导致什么问题?
那么其他编译器呢,比如LCC和Digital Mars?
因为我的上一个问题没有得到任何肯定答案.我将尝试自己编写一个Java FTP上传小程序.
我的问题是:"你能推荐一个Java FTP客户端库供我使用吗?"
我希望它是:
问题很简单:
使用bash,我想在PYTHONPATH中添加一个目录,以便于脚本执行.不幸的是,我想要使用的目录中有一个:在其中.所以我尝试以下各项
export PYTHONPATH=${PYTHONPATH}:/home/shane/mywebsite.com:3344/
export PYTHONPATH=${PYTHONPATH}:/home/shane/mywebsite.com\:3344/
export PYTHONPATH=${PYTHONPATH}:"/home/shane/mywebsite.com:3344/"
Run Code Online (Sandbox Code Playgroud)
这些都不起作用.每次,路径都在python的路径上创建为两个单独的目录.我的问题是,是否有可能为bash做这个?如果是这样,需要什么语法?
全屏使用远程桌面,移动到另一个应用程序的最短途径是什么?(当然,不使用鼠标.我讨厌老鼠).
我目前使用以下之一:
ctrl- alt- del,alt- t(到本地机器的taskmgr),alt- tab(移动到所需的应用程序),或: ctrl- alt- pause(将远程桌面切换到窗口),alt- tab.
有更短的方式吗?
我只想澄清一件事.这不是一个更好的问题,我要留给其他人讨论.我不在乎.在我的求职面试中,我被问到这个问题,我认为学习更多内容可能会有所帮助.
这些是我能想到的:
请添加您认为相关的其他人.
更新:刚刚弹出我的想法,Java没有像类,方法等的自定义属性那样的东西.或者它呢?
最近我试图制作一个日历应用程序,它将向用户显示当前的年月日期.问题是,如果用户要在第二天保持我的应用程序运行,我该如何得到通知?我该如何更改显示的日期?我不想轮询当前日期来更新它.这在c#中是否可行.
注意:我尝试了SystemEvent.TimeChanged事件,但只有当用户从控制面板手动更改时间/日期时,它才有效.
在System.ComponentModel中,有一个名为CancelEventArgs的类,其中包含可在事件侦听器中设置的Cancel成员.MSDN上的文档解释了如何使用它来从侦听器中取消事件,但是如何使用它来实现我自己的可取消事件?有没有办法在每个侦听器触发后检查Cancel成员,或者我必须等到事件触发所有侦听器之后?