SQLServer使用for xml path()来拼接行

在写SQL语句时,有时候需要对表中的行进行拼接,这时候可以使用STUFF()和for xml path()语句:

如有表如下:

id  |   name
----------
1   |   aaa
1   |   bbb
1   |   ccc

你想得到的结果如下:

id  |   result
--------------
1   |   aaa,bbb,ccc

有的在业务系统中通过多次查询拼接也可以得到如上结果,但是多次查询数据库会更麻烦。这里可以使用TSQL的STUFF函数和for xml path()方法。

- 阅读剩余部分 -

《RabbitMQ入门之Go语言教程》(6) 远程过程调用(RPC)

第二篇文章中介绍了如何利用工作队列将耗时任务分发到多个消费者工作程序中。

考虑下另一种情况:如果需要在一个远程机器上执行一个函数然后等待它的返回结果应该怎样?这个过程称之为远程过程调用(RPC:Remote Procedure Call).

本篇将介绍如何利用RabbitMQ实现一个包含客户端和可扩展服务端的RPC系统,仍然跟之前的一样,利用模拟计算来替代真实的耗时任务,这里使用计算斐波那契数列函数。

- 阅读剩余部分 -

《RabbitMQ入门之Go语言教程》(5) 主题交换器

上一篇文章中,我们对之前的日志系统进行了改进,使用direct类型的exchange替代了只能广播消息的fanout类型,让日志系统能够有选择性的接收处理消息。

虽然使用direct类型的exchange提升了日志系统的扩展性,但还是有它的局限性存在,那就是无法配置多重标准的路由。

如果想让系统不能仅根据日志级别来定义,还能根据发送日志的源信息来订阅。如unix工具syslog,就是根据日志级别(info/warn/crit..)和设备(auth/cron/kern)来进行路由的。这会提供更多的灵活性,如可以做到监听所有来自'cron'和'kern'设备的error信息。

为了实现这种灵活性,需要来学习下另外一个功能更综合的topic类型的交换器(exchange).

- 阅读剩余部分 -

《RabbitMQ入门之Go语言教程》(3) 发布/订阅模式

本系列摘自RabbitMQ官方教程,边学习边翻译的中文的版本,水平有限,不妥之处,欢迎交流。

前一篇介绍中实现了一个工作队列,它假设队列中的每一个任务都只会被分发到一个工作者进行处理。在本篇中,我们尝试将同一个消息发送给多个消费者进行处理,这就是广为人知的发布/订阅模式。

本篇通过搭建一个日志系统来阐述发布/订阅模式,它包含两部分内容:一个用于产生日志消息的程序,另一个用于接收和打印消息。
在这个日志系统中,每一份接收者程序的拷贝都能收到消息,因此我们可以轻易地使用一个程序将日志写入磁盘,而另一个程序直接在屏幕显示。

本质上来说,当系统收到一个日志处理请求时,会把这个消息广播给所有的接收者。


- 阅读剩余部分 -