在我们的项目中,我们经常最终在3个表上编写复杂的连接.我们通过使用视图获得任何性能优势,还是仅仅是为了让查询编写者的生活更轻松?如果重要,我们使用MySQL.如果因此获得任何优势(当然,除了更简单的查询)请说明.
以下联接应该为具有特定状态的用户检索用户信息及其消息:
SELECT * FROM user, message WHERE message.user_id=user.id AND user.status=1
Run Code Online (Sandbox Code Playgroud)
问题是结果集中某个用户的所有行都包含重复有关该用户的相同数据的冗余列(从用户表中检索的那些字段),只有来自消息表的字段包含非冗余信息.像这样的东西:
user.id username email message.id subject
1 jane jane@gmail.com 120 Notification
1 jane jane@gmail.com 122 Re:Hello
1 jane jane@gmail.com 125 Quotation
2 john john@yahoo.com 127 Hi jane
2 john john@yahoo.com 128 Fix thiss
2 john john@yahoo.com 129 Ok
3 jim jim@msn.com 140 Re:Re:Quotation
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,许多数据都是冗余的,我们不希望先找到用户,然后在循环结构或类似的东西中查看他们的消息.应不惜一切代价避免导致微查询的循环.
我不关心我的程序输出,在UI中处理得很好.我想也许通过返回此查询的结果产生的网络流量可能会大大减少,如果我能够设法消除与该用户相关的所有行中的用户数据的重复.
这个成语(?)在楼梯书中出现了很多次:
val b:A = new B
Run Code Online (Sandbox Code Playgroud)
要么
val b = new B
val b2:A = b
Run Code Online (Sandbox Code Playgroud)
除了试图在教科书中提出一些观点之外,你为什么要声明一种与推断类型不同的类型?
顺便说一句,这个名字是什么?
我已经阅读了维基百科的文章并搜索了明显的地方,但我被卡住了.有人可以简单地告诉我究竟是什么类型的?它是干什么用的 ?
Scala示例非常受欢迎
我们在svn下有我们的项目,一切都很顺利.最近,一位主要客户要求我们为他们做一些非常具体的定制,需要编码和填充(无法使用配置或部署完成).我们决定维持两个独立的发展路线:
trunk分支是部署为普通客户提供标准版arsh分支机构面向该客户,并且正在进行持续开发,与之不同trunk现在的事情arsh应该是计数地接收更新trunk,有时候实现的功能arsh是有用的trunk.这种关系有点双向,但一个方向非常普遍(从)trunk到另一个方向arsh是偶然的.
最好的方法是什么?工作流程 ?最佳做法?见解?
编辑:我们使用PHP 5.3,MySQL,Apache和Linux.
我经常阅读一些编程语言对模块的支持(“一流”)(OCaml,Scala,TypeScript [?]),最近偶然发现了这样的答案,因此将模块引用为 Scala的显着特征之一就是一流的公民。
我以为我很清楚模块化编程的含义,但是在发生这些事件之后,我开始怀疑我的理解...
我认为模块没有什么特别的,但是某些类的实例充当微型库。小型库代码进入一个类,该类的对象是模块。您可以将它们作为依赖项传递给需要该模块提供的服务的任何其他类,因此,任何体面的OOPL都具有一流的模块,但显然没有!
什么是局部推理?它与参照透明度、等式推理和惰性有何关系?
functional-programming side-effects referential-transparency
我们有一个包含很少源文件(Scala和Java)的Scala项目,以及各种二进制格式(jar和DLL)中的一些依赖项.我想知道我们的共享git repo应该是什么.只有源文件(开发人员必须下载或以某种方式解析依赖项本身)或源文件和依赖项?我可以补充说,依赖项都是第三方,可以免费下载.
我已经研究Scala(以及扩展的Haskell)一段时间了,我完全被他们的类型系统和功能范例所捕获.最近我偶然发现了"类型级别编程",并被拖入了Functors和其他我没有听说过的东西(除了Monad,我知道这是一种神秘的东西,但不知道该使用什么它!).我研究了Haskell中的概念(并且顺便通过它的类型系统和类型推理能力而被迷惑了),我有一种对纯粹技术层面的Functor,PointedFunctor,ApplicativeFunctor或Monoid类型意味着什么的坚定把握. (我仍然不知道Monad在技术水平上是什么样的)但是我觉得自己像个白痴,因为我看不到所有这些用处,除非可能获得了一些概念的良好分类(?).这些东西有用吗?为什么生活如此复杂?为什么要研究这些东西并将它们分类为不同的类?
我该如何说可以为那些属于 的实例但不提及其他s的实例B创建:mAm
-- A.hs
module A where
class A m -- m :: * -> *
-- B.hs, totally unrelated to A
module B where
class B m
-- Utilities.hs
module Utilities where
given A m then instance B m -- like given in Scala 3
Run Code Online (Sandbox Code Playgroud)
请注意我不想说:
class A => class B -- B requires A
Run Code Online (Sandbox Code Playgroud)
他们B不知道也不应该知道A。与class级别B无关A。B仅根据其最小完整定义进行定义,该定义在其where子句(此处未显示)之后表达,并且不了解A或任何其他类别。其实 …
scala ×6
types ×3
haskell ×2
join ×2
sql ×2
functor ×1
git ×1
monads ×1
ocaml ×1
performance ×1
redundancy ×1
resources ×1
side-effects ×1
svn ×1
typeclass ×1
typescript ×1
view ×1