简单的问题.想知道长的IN子句是否是代码气味?我真的不知道如何证明这一点.我不能把手指放在为什么它闻起来不像我想的那样.
select
name,
code,
capital,
population,
flower,
bird
from us_states
where
code in
('NJ', 'NY', 'PA', 'CA', 'AL', 'AK', 'AZ',
'IL', 'IN', 'KY', 'KS', 'DC', 'MD', 'MA')
Run Code Online (Sandbox Code Playgroud)
数据库通常如何实现这样的查找?是一个临时表制作并加入?或者它只是扩展为一系列逻辑OR?
感觉它应该是一个加入......
我并不是说所有的IN条款都不好.有时你无法帮助它.但是有些情况(特别是它们得到的时间越长),你所匹配的元素集实际上来自某个地方.而不应该加入呢?
是否值得创建(通过应用程序级别)一个临时表,其中包含您要搜索的所有元素,然后对其进行真正的连接?
select u.*
from us_states u
join #chosen_states t
on u.code = t.code
Run Code Online (Sandbox Code Playgroud) 在我读过的所有教程中Test::Class,似乎有一个加载所有类的跑步者脚本.我认为从这个角度来看Test::Harness只是一个巨大的考验.我不认为它可以并行化跑步者内部的测试.
我的X问题是我试图在测试子类时分解超类行为.每个子类都应该有自己的子类测试(可以并行化),但也要运行从超类继承的行为.怎么一个?
编辑:我发现2007年的这两个帖子似乎暗示我要求的是不兼容/不可能的.从那时起的任何更新?
Test::Class支持并行性的猜测Test::Class并且Test::Harness在意识形态上独占)当使用像Scala和的功能环境时cats-effect,是否应该使用效果类型来建模有状态对象的构造?
// not a value/case class
class Service(s: name)
def withoutEffect(name: String): Service =
new Service(name)
def withEffect[F: Sync](name: String): F[Service] =
F.delay {
new Service(name)
}
Run Code Online (Sandbox Code Playgroud)
构造不是容易犯错的,因此我们可以使用较弱的typeclass,例如Apply。
// never throws
def withWeakEffect[F: Applicative](name: String): F[Service] =
new Service(name).pure[F]
Run Code Online (Sandbox Code Playgroud)
我想所有这些都是纯粹的和确定性的。只是不是参照透明的,因为每次生成的实例都是不同的。那是使用效果类型的好时机吗?还是这里会有不同的功能模式?
最近一篇文章讨论了使用遗传算法来优化星际争霸II中的"构建顺序".
http://lbrandy.com/blog/2010/11/using-genetic-algorithms-to-find-starcraft-2-build-orders/
星际争霸的初始状态是预先确定的并且是不变的.和国际象棋一样,在比赛的早期阶段做出的决定对于球员在比赛中后期的表现能力具有长期影响.因此,各种开放可能性或"构建订单"正在经过深入的研究和审查.在上述文章的发行之前,计算机辅助的构建顺序创建可能并不像最近那样流行.
我的问题是...... 遗传算法真的是建模优化构建订单的最佳方法吗?
构建顺序是一系列操作.某些操作具有先决条件,例如"在创建构建C之前需要构建B,但您可以随时构建A".所以染色体可能看起来像AABAC.
我想知道遗传算法是否真的是解决这个问题的最佳方法.虽然我对这个领域并不太熟悉,但我很难将基因概念变成数据结构,这是一系列行动.这些不是独立的选择,可以像头和脚一样混合和匹配.那么复制和穿越这样的东西有什么价值呢?
我想任何国际象棋AI都会更合适,因为在任何给定时间的选择数组都可以在某种程度上被视为树状.
如果我理解正确,方法的Scaladoc应该自动继承它覆盖的父方法的Scaladoc.这似乎适用于本地类的一组,但是从Scala的标准库扩展时(并且可能是任何外部依赖项?).
class LocalParent {
/**
* some documentation
*/
def foo = ???
}
class DocumentedChild extends LocalParent
class UndocumentedChild extends Iterator[Int] {
def hasNext = ???
def next = ???
}
Run Code Online (Sandbox Code Playgroud)
有没有办法继承Scaladoc?或者我做错了什么?
另外,我正在使用sbt doc,所以不是scaladoc直接使用.
我正在阅读/听取Chris Taylor关于代数数据类型的演讲.
http://chris-taylor.github.io/blog/2013/02/10/the-algebra-of-algebraic-data-types/
还有一个关于函数类型的部分.特别是这个例子
data Bool = True | False
data Trio = First | Second | Third
Run Code Online (Sandbox Code Playgroud)
鉴于法律
a -> b == B^A
Run Code Online (Sandbox Code Playgroud)
特定
Trio -> Bool should equal 8
Run Code Online (Sandbox Code Playgroud)
通过乘法为什么8而不是6?
如果我正确理解这一点,那么具体的组合应该是
First -> True
First -> False
Second -> True
Second -> False
Third -> True
Third -> False
Run Code Online (Sandbox Code Playgroud)
这不仅仅是6个具体的实现Trio -> Bool吗?
我错过了什么?
作为序言,我已经使用C#几个月,但我完全不熟悉部署和汇编等概念.我的问题很多而且多种多样,虽然我疯狂地谷歌搜索并阅读它们但无济于事(我目前在我面前有Pro C#2008和.NET 3.5平台).
我们有这个过程,它由三个组件组成:引擎,过滤器和过程逻辑.我们非常喜欢这个过程,我们希望它能在其他项目中重复使用.所以现在我开始探索超越一个解决方案,一个项目的空间.
这听起来不错吗?一个巨大的解决方
引擎是所有进程的共享代码,所以我假设它可以是一个共享程序集?如果共享程序集与使用它的项目在同一解决方案中,如果它应该在GAC中,它将如何被消耗?我已经阅读了一些关于post build事件的内容.这是否意味着必须在每次构建时重新部署engine.dll?
此外,我们将过滤器与进程分离的原因(只有一个进程使用它)是因为我们可以独立于进程部署过滤器,以便不需要更新进程可执行文件.不管这是不是最好的做法,让我们来看看吧.这可能吗?我已经读过程序集链接到其他程序集的特定版本,所以如果我只更新DLL,它实际上被认为是篡改.如何在不更改EXE的情况下更新DLL?这是出版商政策的用途吗?
顺便说一句,谷歌能够或亚马逊能够拥有这些东西吗?我应该寻找什么?我看到很多关于C#和.NET的书籍,但没有关于部署,构建或测试或与语言本身无关的事情.
假设我有一些订购的代码,但订购不是技术要求.
apple
kiwi
strawberry
Run Code Online (Sandbox Code Playgroud)
然后我有两个我要合并的主题,其差异如下:
TOPIC BRANCH: orange
kiwi
+ orange
strawberry
Run Code Online (Sandbox Code Playgroud)
并且
TOPIC BRANCH: pear
kiwi
+ pear
strawberry
Run Code Online (Sandbox Code Playgroud)
有没有办法让这两个补丁自动解决?在我看来,这是一场合并冲突,因为他们争夺同一条新线.我提出的解决方案是重新排序其中一个更改,因为排序顺序只是一个软要求(水果实际上是函数定义).
TOPIC BRANCH: pear'
apple
+ pear
kiwi
Run Code Online (Sandbox Code Playgroud)
所以,现在我们可以合并orange和pear'在一起,形成:
_ apple
p pear
_ kiwi
o orange
_ strawberry
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以解决这个问题,以便保持订购吗?我还想到pear下游orange必须orange始终获得优先权并且不再存在合并冲突.但这是一个错误的依赖,因为orange它pear是两个独立的功能分支.
一个可以在另一个之前被主导到主干,但是这不会解决集成分支.
编辑:我突然意识到可以保留的两个帅哥(只有我猜?)可能有两个合并策略称为"我先"和"你先",这样可以在两个之间以非交互方式解决模糊排序分支机构.
假设我有一个对象,Car,它有各种方法......不同?也许像Blob一样?(如反模式中的"blob")这些方法在不同的集合中运行,并且在功能上并不真正纵横交错.
Car
# methods related to suburban driving
->foo1
->foo2
# methods related city driving
->bar3
->bar4
Run Code Online (Sandbox Code Playgroud)
现在让我们说我想添加"越野驾驶"作为我的汽车对象可以支持的案例之一.如果我向Car对象添加方法,是不是让它更像blob?
Car (augmented)
# methods related to suburban driving
->foo1
->foo2
# methods related city driving
->bar3
->bar4
# methods related off road driving
->blah5
->blah6
Run Code Online (Sandbox Code Playgroud)
我是不是该:
答:汽车的子类.我可以制作一个OffRoadCar扩展Car对象.但是如果Car和OffRoadCar共享相同的数据/状态,并且只是方法不同呢?OffRoadCar只比汽车更具体"行动",但不再具体描述,也没有独特的领域.因此实例化OffRoadCar毫无意义.
OffRoadCar extends Car
# methods related off road driving
->blah5
->blah6
Run Code Online (Sandbox Code Playgroud)
B:使用静态方法消耗汽车.喜欢OffRoadAdventure-> Embark(Car).所以OffRoadAdventure类接受一个Car对象并使用它.
在C#中,这将被称为扩展方法.
我想换另一种方式是什么是Blob反模式的解决方案?是子类吗?是扩展方法吗?
另外,我想要解决这些方法的另一个原因是,如果它们的实现会产生一些成本,比如包含其他类/包?我不希望核心类的用户经常为他们永远不会使用的东西买单.我认为让少数人明白成本对大多数人来说是值得的.它使依赖图更精确(而不是像blob一样).
PS - 实现语言是Perl.
我有一个执行查询的SQL Server 2005存储过程.该存储过程包含三个参数.参数如下:
@StateID为int,
@ CountyID为int,
@ ResourceID为int
这些参数用于查询客户列表.如果参数值不为null,我想基本上做一个"AND".但是,我现在不能做一个if-else.如果参数值不为null,如何添加这些子句.换一种说法:
SELECT
*
FROM
Customer c
WHERE
c.StateID=@StateID
-- AND c.CountyID=@CountyID IF @CountyID IS NOT NULL
-- AND c.CityID=@CityID IF @CityID IS NOT NULL
Run Code Online (Sandbox Code Playgroud) perl ×2
scala ×2
sql ×2
.net ×1
c# ×1
cats-effect ×1
database ×1
git ×1
haskell ×1
inheritance ×1
merge ×1
mysql ×1
oop ×1
optimization ×1
performance ×1
sbt ×1
scala-cats ×1
t-sql ×1
testing ×1
theory ×1