14 吴冬冬

尚未进行身份认证

我要认证

此处省略300字

等级
TA的排名 624

golang使用rabbitmq(六)RPC

之前的章节都是在说一方发指令,另一方执行这种情况,指令发送者不关系指令的完成情况,或者不需要阻塞去获得结果,结果异步通知。但很多时候是需要阻塞得去获得执行结果的,比如http的请求。在rabbitmq使用RPC的关键就是ReplyTo属性err = ch.ExchangeDeclare("rpc_topic", amqp.ExchangeTopic, true, false, false, ...

2019-09-05 16:26:48

golang使用rabbitmq(五)Topic模式

简介上一篇用可选择接受的direct交换器代替了广播接受到fanout交换器,但是direct模式还是有局限性,它不能通过多个条件路由。比如linux的日志系统,它不仅分级别(info/warn/crit…),而且还分来源设备(auth/cron/kern…)。我们需要一个非常复杂度组合,比如想接受来自cron的critical日志和来自kern的所有日志。当然topic交换器可以实现这一...

2019-08-14 10:10:38

golang使用rabbitmq(四)路由功能

路由上一章我们讲的是一个简单的日志系统,把日志广播到每一个接受者。在这一章增加一点功能,为了节省磁盘,只有告警日志和错误日志才进行存储,其他日志就打印到控制台就可以了。绑定上一章我们也讲过绑定,绑定是让队列和交换器之间的关系。通俗点说就是让队列只对它所绑定的交换器中的信息感兴趣。for _, key := range os.Args[1:] { log.Printf("Binding ...

2019-06-18 14:49:05

golang使用rabbitmq(三)发布/订阅

上一篇文章中讲了工作队列,但是工作队列只能做到一个生产者的消息被消费者消费一次。现在要实现一个生产者的消息被两个不同的消费者同时消费,我们把这种模式叫做发布订阅。交换器RabbitMQ消息传递模型的核心是生产者永远不会把消息直接发送到某个队列上,甚至根本不知道消息是否发送到队列上。生产者只向交换器发送消息。交换器来决定怎么处理消息,是把消息传递到特定的队列,还是把消息传到多个队列,或者直接丢...

2019-06-17 10:38:32

golang使用rabbitmq(二)工作队列

在helloworld那一章讲了一个简单的一个生产者一个消费者的模型,但生产系统中很多时候是多个生产者或者多个消费者同时处理的。生产者 body := bodyFrom(os.Args) err = ch.Publish("", q.Name, false, false, amqp.Publishing{ DeliveryMode: amqp.Persistent, ContentT...

2019-06-10 10:52:12

golang使用rabbitmq(一)helloworld

modulerequire github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94连接rabbitmq conn, err := amqp.Dial("amqp://admin:rabbitmq123@18.232.146.30:5672/") defer conn.Close()打开通道 ch, err := co...

2019-06-06 09:33:38

rust和go该如何选择

为了内存安全引入所有权概念,为了圆所有权这个坑,引入生命周期,各种BOX。艰难的圆着所有权的坑,因此在rust群里经常谈论的大部分是语法问题,这是其他所有语言都不常见的。虽然一次编译完就可以安心的跑下去,但是编译的过程何其糟心,心智负担和掉发率都居高不下。更有点奇怪的是很多人把这种奇技淫巧当作是高端技术,茴香豆的十八种写法。对比之下更喜欢大道至简的go,再复杂度应用场景简单组合一下就可以实...

2019-05-16 15:15:49

idea升级到2019.1之后注解生成的代码无法提示和自动完成

idea升级到2019.1之后注解生成的代码无法提示和自动完成遇到这种问题不要慌,只是lombok插件需要更新到对应的版本而已

2019-04-23 10:12:57

rust循环引用问题

循环引用的时候需要使用weak,弱引用,一般把上级作为弱引用加到下级里trait Sprite { fn draw(&self); fn update(&self);}struct Ball { game: RefCell<Weak<Game>>,}impl Sprite for Ball { fn draw(&...

2019-04-19 15:12:48

golang通过redis调用rust

golang的redis端要注意的是要先订阅回复,然后再发送请求。package mainimport ( "github.com/go-redis/redis")var wait = make(chan interface{})func main() { client := redis.NewClient(&redis.Options{ Addr: "w...

2019-04-18 12:04:13

rust构建actix-web出现error: failed to run custom build command for `miniz-sys v0.1.11`

问题描述在初次使用actix-web时就遇到个大坑,cargo build或者cargo run时报错error: failed to run custom build command for `miniz-sys v0.1.11`process didn't exit successfully: `/Users/apple/Documents/mydream/rust/my-actix-...

2019-04-10 10:19:26

java实现golang类似的chan

java版本的CSP操作public class Chan<T> { private T message; private boolean empty = true; public synchronized T take() { while (empty) { try { wait()...

2018-11-12 14:52:26

java遗珠之try-with-resources

try-with-resources语句自动关闭实现了AutoCloseable或者 Closeable接口的资源,示例如下:public static void writeToFileZipFileContents(String zipFileName, String outputFileName) throws java.io.IOException { java.nio.chars...

2018-10-15 15:53:38

java遗珠之多异常

catch可以同时捕获多个异常,示例如下: public void writeList() { // The FileWriter constructor throws IOException, which must be caught. PrintWriter out = null; try { System.out...

2018-10-15 14:33:56

java遗珠之异常种类

异常总共分三种已检查异常,比如java.io.FileNotFoundException错误,java.io.IOError运行时异常,NullPointerException错误和运行时异常又统称为未检查异常已检查异常必须被处理或者throws,未检查异常不需要。但要注意的是未检查异常也是可以捕获处理的public class UncheckedException { ...

2018-10-13 21:25:55

java遗珠之泛型七大限制

泛型的七大限制:不能使用原始类型实例化泛型类型参数化类型如下:public class OrderedPair<K, V> implements Pair<K, V> { private K key; private V value; public OrderedPair(K key, V value) { this.ke

2018-10-12 17:39:53

java遗珠之泛型不可靠类型

不可靠类型可靠类型是在运行时包含所有完整信息的类型,包括原始类型,非泛型类型,原生类型和无边界通配符的调用。不可靠类型是编译时类型擦除移除了一些信息,比如不是无边界通配符的其他情况。一个不可靠类型在运行时没有完整可用的信息,堆污染当参数化的变量引用不是该参数化类型的时候就会产生堆污染,如果程序执行某些操作,编译器给出unchecked警告时,就会发生这种情况。如果unchecked警告产生...

2018-10-12 16:09:03

java遗珠之泛型类型擦除

擦除规则泛型的作用之前已经介绍过了只是用于编译之前更为严格的类型检查,其他的一些特性也都是编译之前的,在编译之后泛型是会被擦除掉的。类型擦除所做的事情如下:如果是无界限的则会把类型参数替换成Object,如果是有界限的则会把类型参数替换为界限类型。插入一些类型转换来保证类型安全为了保证从泛型类型继承的多态性会增加一些桥接方法。泛型类型的擦除无边界类型擦除public class...

2018-10-12 12:19:27

java遗珠之泛型通配符

我们在之前说过明确指定了泛型类型的参数之后,会把参数限制的很严格,通配符的作用就是放宽这种限制,有上限有界通配符<? extends A>,下限有界通配符<? extends B>,无界通配符<?>。上限有界是in变量,而下限有界是out变量,虽然通配符可以使用在字段,本地变量和方法中,但是类和外界的交互主要是方法,就限定的意义本身还是主要通过方法来体现,因...

2018-10-11 11:49:11

java遗珠之泛型类型推断

类型推断类型推断是java编译器的一种能力,通过查看方法调用和相应的声明来决定什么样的类型参数或者参数是更为合理的调用。推断算法先确定参数的类型,分配结果或者返回的类型,最终推断算法查找适合所有参数最适合的类型。为了说明这点,来看下面的例子:public class Util { static <T> T pick(T a1, T a2) { retu...

2018-10-10 10:35:56

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 博客之星-入围
    博客之星-入围
    授予每年博客之星评选结果第21-200名的用户