许多函数式编程语言都支持curried参数.为了支持currying函数,函数的参数本质上是一个元组,其中可以省略最后一个参数,从而使新函数需要更小的元组.
我正在考虑设计一种总是使用记录(也就是命名参数)作为函数参数的语言.
因此,我的make中的简单数学函数相信语言将是:
add { left : num, right : num } = ...
minus { left : num, right : num } = ..
Run Code Online (Sandbox Code Playgroud)
您可以将任何记录传递给这些函数,只要它们具有这两个命名参数(它们可以有更多只是"左"和"右").
如果它们只有一个命名参数,则会创建一个新函数:
minus5 :: { left : num } -> num
minus5 = minus { right : 5 }
Run Code Online (Sandbox Code Playgroud)
我借用了一些haskell的表示法.
有没有人看过这样做的语言?
programming-languages functional-programming language-design currying named-parameters
有几次我想要一个类似于SQL表的数据结构,你可以在各种字段和多个字段中进行选择.类似于内存中的SQL实现,除了我不想在数据结构中存储那么多对象.
我还要求通过标准Java方法将对象序列化.
我之前已经使用多个哈希表或自定义哈希键完成了这项工作,但它最终成了很多代码并且非常具体.
我也使用了Groovy及其封闭能力和gpath来帮助,但我并不总是有它(不同的项目).
编辑:我认为我的问题更多的是对象遍历/选择问题以下是一些有趣的项目:
然而,大多数这些项目的缺点是它们比直接访问对象(非反射getter/setter)慢得多,并且肯定比索引(hash)慢.
我正在对单页应用程序的主干进行一些尽职调查,并想知道是否可以从服务器端的客户端重新使用相同的视图/路由,以便当google访问pushstate URL或访问它时直接地,服务器可以生成与客户端中的骨干生成的完全相同的HTML.
必须维护两组独立的视图/路由,一个在客户端上,一个在服务器上,这将是一件痛苦的事.我已经在github上看到了backnode项目,但是这似乎忽略了一点,你最终必须写两次相同的骨干路由器.
只是想知道在骨干网中使用pushstate url并且需要从服务器提供相同的视图时人们通常如何处理这种情况?是人们复制代码还是有更好的方法?
在Java中,如果将源代码(.java)文件与类( .class)一起打包到jar中,大多数IDE都会像eclipse一样显示代码完成的javadoc注释.
IIRC很少有像JMock这样的开源项目.
让我说我已经干净地将我的API代码与实现代码分开,以便我有类似myproject-api.jar和myproject-impl.jar的东西,我有什么理由不把源代码放在我的myproject-api.jar中吗?
因为性能?尺寸?
为什么其他项目不这样做?
编辑:除了Maven下载问题,将我的源代码放入类jar以支持尽可能多的开发人员(maven与否)会有什么损害吗?
似乎(也许我错了)如果你想保留JDBC和Postgres发生某些事情的时区,你需要将时区与时间戳分开存储.
那就是我更愿意给我的ORM/JDBC/JPA一个带有时区的Java Calendar(或Joda DataTime)America/New_York到Postgres timestampz字段.并且我希望无论服务器时区(或默认为UTC)检索都能给我带回Calendar时区America/New_York.但只是查看大多数JDBC代码(以及依赖于它的事情不会发生).
它是否正确?
当postgres支持时,我需要将tz存储在另一个字段中,这似乎很荒谬.
因此,似乎只有两个选项:
timestampzPostgres列作为a java.util.String并解析它.第一和第二选项需要某种转换拦截器用于我的SQL映射/ ORM库.
我一直在微观优化我们在Tomcat上的页面响应时间,几乎在所有情况下,如果我反复刷新,我会看到50ms的响应时间,但如果页面没有被击中一两秒,则响应时间会跳回来到500ms.
我看到了同样的行为,无论是本地的,不是本地的,APR,NIO,JIO,静态或动态响应(即提供静态文件或动态处理响应).到目前为止,我还没有看到这种行为不会发生在Tomcat上(无论频率如何,这都是一致的400ms).
我也使用Visual VM来查看是否有任何线索.
我认为这是一种保持活力,但是当我运行Apache Bench时,我的响应时间更快(低于50ms)(显然是因为它频繁地击中它).
那么如何在Tomcat中保持低延迟不频繁命中的URL?也许这个问题更适合ServerFault?
更新:我几乎肯定它是一个Tomcat 6问题.我以为我已经在Tomcat 7上进行了测试,但我刚刚对它进行了测试并且没有问题(见下面的结果).即使是最新的Tomcat 6仍然存在这个问题.
这是abTomcat 6 的输出(注意最大值):
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 14 39 45.2 30 314
Waiting: 14 38 45.2 30 314
Total: 14 39 45.2 30 314
Run Code Online (Sandbox Code Playgroud)
这是abTomcat 7的输出通知最大值:
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 25 38 8.8 37 67
Waiting: 25 37 …Run Code Online (Sandbox Code Playgroud) 保持持久队列及其绑定但暂停其消费者的最佳方法是什么?
用例是:我想"让它崩溃"并停止处理消息,如果我们不断收到一堆我们无法处理的消息(例如数据库已关闭或架构问题)但是希望继续聚合到队列.这是允许发布但暂停消费.
我可以想到三个解决方案:
basic.cancelConsumer给所有消费者(见下文)shutdown所有SimpleMessageListenerContainer.#1我们已经在做消息被拒绝了.问题是这最终会像一个无限的故障循环,如果您的日志记录失败甚至更多的资源被浪费.
#3看起来很理想,但我必须知道所有的消息监听器,然后通知他们关机.我想我可以使用扇出交换来通知队列需要暂停.我觉得RabbitMQ必须内置这个逻辑.另一个问题是您可以将多个队列绑定到消息容器(并非所有队列都可能需要挂起).
对于#2我知道我可以取消消费者与其consumerTag但问题(假设是上面做正确的方式)是我在哪里得到的名单consumerTags到一个队列?
Postgres JDBC驱动程序似乎无法正确处理UTF-8 clobs.当您检索clob时,字符不正确(您获得了非ascii字符的标记).
据说这是一个已知问题:
幸运的是,对于我的应用程序,我通常会避免使用clobs,所以我所做的字段就是真正的大变种.
其他人如何处理这种限制?
我一直在为我的创业公司广泛使用Java + AspectJ.我想切换到Scala,但我有一个共同的设计模式,我不确定完全是在Scala中实现的最佳方式.
我们的大量应用程序使用注释作为标记使用AspectJ切入点.这与Python的装饰者非常相似,并在此博客.
我曾尝试在Scala中使用此技术但遇到了AspectJ + Scala的问题.即使我确实让它工作,似乎unScala喜欢.
我已经看到一些项目做了一些名称封闭魔术(我认为这就是他们正在做的事情).
替换@Transaction的示例:
transaction {
// code in here.
}
Run Code Online (Sandbox Code Playgroud)
我不得不说,虽然我更喜欢注释,因为它似乎更具说明性. 什么是声明式"装饰"代码块的Scala方式?
我是一个Java,Scala,Python Web应用Linux家伙.我想玩Mono(特别是F#)进行网页开发.
我只是在Github中寻找用Mono编写的示例Web应用程序(任何CLI语言都可以).我试过谷歌搜索,找不到一个好的起点(或者甚至可能找到它).
从我收集到的东西,我可以结合起来:
如果我错过了一个非常明显的资源(网站),那么就会道歉.
java ×7
jdbc ×2
postgresql ×2
amqp ×1
aop ×1
api ×1
aspectj ×1
backbone.js ×1
clob ×1
currying ×1
eclipse ×1
f# ×1
jar ×1
javadoc ×1
jpa ×1
linux ×1
low-latency ×1
mono ×1
performance ×1
pushstate ×1
python ×1
rabbitmq ×1
scala ×1
seo ×1
singlepage ×1
spring-amqp ×1
spring.net ×1
sql ×1
tomcat ×1
tomcat6 ×1
utf-8 ×1