我正在努力理解StructureMap的部分用法.特别是,在文档中有一个关于常见反模式的声明,仅使用StructureMap作为服务定位器而不是构造函数注入(直接来自Structuremap文档的代码示例):
public ShippingScreenPresenter()
{
_service = ObjectFactory.GetInstance<IShippingService>();
_repository = ObjectFactory.GetInstance<IRepository>();
}
Run Code Online (Sandbox Code Playgroud)
代替:
public ShippingScreenPresenter(IShippingService service, IRepository repository)
{
_service = service;
_repository = repository;
}
Run Code Online (Sandbox Code Playgroud)
这对于一个非常短的对象图很好,但是当处理很多级别的对象时,这是否意味着你应该从顶部向下传递更深层对象所需的所有依赖项?当然,这会破坏封装并暴露有关更深层对象实现的过多信息.
假设我正在使用Active Record模式,因此我的记录需要访问数据存储库才能保存和加载自身.如果此记录加载到对象内,该对象是否调用ObjectFactory.CreateInstance()并将其传递给活动记录的构造函数?如果该对象在另一个对象内部怎么办?是否将IRepository作为自己的参数进一步向上?这将向父对象公开我们此时访问数据存储库的事实,外部对象可能不应该知道.
public class OuterClass
{
public OuterClass(IRepository repository)
{
// Why should I know that ThingThatNeedsRecord needs a repository?
// that smells like exposed implementation to me, especially since
// ThingThatNeedsRecord doesn't use the repo itself, but passes it
// to the record.
// Also where do I create repository? Have to instantiate …Run Code Online (Sandbox Code Playgroud) structuremap dependency-injection service-locator constructor-injection
我的目标是拥有一个包含特定扩展名的所有文件名但没有扩展名的数组.
有一个优雅的解决方案,使用谓词过滤器获取特定扩展的所有文件名,以及如何将路径拆分为文件名和扩展名的说明,但要合并它们,我必须编写一个循环(不是很糟糕,但也不优雅).
是否有一种方法使用Objective-C(可能类似于谓词机制)将一些函数应用于数组的每个元素,并将结果放在第二个数组中,就像transformC++ STL 的算法一样?
我想写的:
// let's pretend 'anArray' was filled by querying the filesystem and not hardcoded
NSArray* anArray = [[NSArray alloc] initWithObjects:@"one.ext", @"two.ext", nil];
// that's what I liked to write (pseudo code)
NSArray* transformed = [anArray transform: stringByDeletingPathExtension];
// Yuji's answer below proposes this (which may be as close as you can get
// to my wish with Objective C)
NSArray* transformed = [anArray my_arrayByApplyingBlock:^(id x){
return [x …Run Code Online (Sandbox Code Playgroud) 我搜索了一段时间,如何找到一个基准测试软件,可以模拟人群网站超过1000用户在线查找我的php/mysql脚本中的泄漏.
只要我为一个庞大的社区运行我的脚本并且它不够成功并且发生了大量的RAM使用,现在我需要一种方法来模拟这么多用法来对我的脚本进行基准测试并对其进行优化.
我正在使用XAMMP Local Server和我用PHP和MYSQL编写的项目.
提前致谢
试图在我的新Ubuntu系统上安装Java(JDK 6)并获得一些奇怪的错误.这是我第一次使用任何类型的Linux,所以我确定这是一个用户问题(权限或其他).
我直接从Oracle的站点下载了BIN文件(64位Linux的Java SE 6u23).这默认为下载到/ home/myUserName/Downloads.
从那里我将文件移动到/ opt/java,这是我创建的目录,因为(作为Linux新手)有意义成为Java应该去的目录.
然后我按照我在网上找到的运行BIN的指令运行以下2个命令:
chmod +x jdk-6u23-linux-x64.bin
sudo ./jdk-6u23-linux-x64.bin
Run Code Online (Sandbox Code Playgroud)
现在,在我的/ opt/java目录中,我看到BIN文件和jdk1.6.0_23目录在检查时似乎完好无损.
但是,当我打开一个新终端并运行java -version时,我得到:
程序'java'可以在以下包中找到:
- gcj-4.4-jre-headless
- gcj-4.5-jre-headless
- openjdk-6-jre-headless
试试:sudo apt-get install
这里发生了什么?!?
(1)尝试使用/ opt/java我的Java目录是错误的吗?
(2)我运行了错误的命令吗?
(3)Java 1.6.0_23是否安装在我的机器上?
(4)那些gcj-xxx无头目标是什么?!?!
感谢您的任何意见!
基于此问题,我写了一个类NSString来hash NSString使用SHA1实例.但是,我的实施有问题.有趣的是,记录NSData实例确实给出了预期的哈希,但是当我想从该NSData实例创建一个NSString时,我只是得到了null.
- (NSString *)sha1 {
NSData *dataFromString = [self dataUsingEncoding:NSUTF8StringEncoding];
unsigned char hashed[CC_SHA1_DIGEST_LENGTH];
if ( CC_SHA1([dataFromString bytes], [dataFromString length], hashed) ) {
NSData *dataFromDigest = [NSData dataWithBytes:hashed length:CC_SHA1_DIGEST_LENGTH];
NSString *result = [[NSString alloc] initWithBytes:[dataFromDigest bytes] length:[dataFromDigest length] encoding:NSUTF8StringEncoding];
return result;
} else {
return nil;
}
}Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
我想在MVC中启用默认路由.
我希望每个404请求重定向到DefaultController DefaultRout()
我发现如何能够捕获所有路径以处理ASP.NET MVC的'404 page not found'查询?
但{*url}不能正常工作我得到404并且没有重定向到默认页面.
我的代码:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.IgnoreRoute("{resource}.ascx/{*pathInfo}");
routes.IgnoreRoute("{resource}.ashx/{*pathInfo}");
routes.IgnoreRoute("{resource}.gif/{*pathInfo}");
//http://localhost:4775/BW/A/Tasks
routes.MapRoute("Pages", "A/{controller}", new { controller = "Tasks", action = "InitPage" });
routes.MapRoute(
"404-PageNotFound",
"{*url}",
new { controller = "Default", action = "DefaultRout" }
);
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
谢谢
拉斐尔
我有一个mysql表如下:
--------------------
| Sl | col1 | col2 |
--------------------
| 1 | data1| msg1 |
--------------------
| 2 | data2| msg2 |
--------------------
| 3 | data1| msg3 |
--------------------
| 4 | data2| msg4 |
--------------------
| 5 | data1| msg5 |
--------------------
Run Code Online (Sandbox Code Playgroud)
我有一个php字符串$query = "select * from table WHERE col1='data1'";,它获取数组3的结果(行号1,3和5).但是我希望在单个查询中获得包含"data1"in "col1"和"msg3"in "col2"(这是第3行)的特定行.我怎样才能做到这一点?
假设我在TeamCity中有两个"项目",它们是两个网站,每个网站都使用不在网站的svn路径内的共享库.这是svn结构,使其更清晰:
网站A:svn:// root/web/websitea(使用共享库a)
网站B:svn:// root/web/websiteb(使用共享库b)
共享库A:svn:// root/shared/liba
共享库B:svn:// root/shared/libb
我如何为网站设置团队城市项目?现在我指向svn:// root,但即使网站b或共享库b被更改,也会触发构建,这是不对的.我真正需要的是只有在svn:// root/web/websitea或svn:// root/shared/liba中发生更改时触发构建的方法.
我尝试在同一项目中设置两个vcs根,指向上面的两个svn路径,但是似乎没有办法为每个vcs根设置工作目录.出于这个原因,它最终只是将两个svn路径的内容直接复制到我的构建目录的根目录中,而不是将它们放在适当的位置(C:\ Build\Web\WebsiteA&C:\ Build\Shared\LibA) ).
我在我的一个客户的网站上使用Uploadify,允许他们一次将大量图片上传到他们的照片库.
我最近看到了问题.他们似乎上传大型照片(3 MB及以上).我想知道,是否有可能在客户端压缩(减小它们的大小),而不是在服务器上进行(就像facebook那样).我知道我可以轻松地在服务器上执行此操作,但我现在正在处理另一个项目,我期待大量的照片上传.它需要大量的CPU时间来处理它们.所以我想,我会问客户端处理.
谢谢.
我想用datepicker textfield,name,contact和bla bla bla创建一个预订(预订)表格.
验证工作正常,而我的表单得到名称输入文本字段,电子邮件输入文本字段,联系人输入文本字段和日期选择器除外.
插入jquery datepicker后,验证不起作用,并且datepicker工作正常.
任何人都可以给我一个帮助吗?
<script src="js/prototype.js" type="text/javascript"></script>
<script src="js/validation.js" type="text/javascript"></script>
<script src="js/effects.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.7.custom.min.js"></script>
<link type="text/css" href="css/start/jquery-ui-1.8.7.custom.css" rel="stylesheet" />
<script>
$(function() {
$( "#datepicker" ).datepicker();
});
</script>
<form id="test" action="#" method="get">
<fieldset>
<!--<legend>Form</legend>-->
<div class="form-row">
<div class="field-label">
<label for="name-t2">*Your Name:</label>
</div>
<div class="field-widget"><input name="name-t2" id="name-t2" class="required" title="Enter your name" /></div>
</div>
<div class="form-row">
<div class="field-label"><label for="email-t2">*Your Email:</label></div>
<div class="field-widget"><input name="email-t2" id="email-t2" class="required validate-email" title="Enter a correct …Run Code Online (Sandbox Code Playgroud) jquery ×2
mysql ×2
php ×2
algorithm ×1
arrays ×1
asp.net-mvc ×1
cocoa-touch ×1
datepicker ×1
hash ×1
java ×1
linux ×1
localhost ×1
objective-c ×1
project ×1
sql ×1
structuremap ×1
teamcity ×1
ubuntu ×1
uploadify ×1
validation ×1