0%

与spring集成

spring-kafka是通过监听模式消费消息的。定义了一个消息监听者容器接口MessageListerContainer,有两个实现类KafkaMessageListenerContainer和ConcurrentMessageListenerContainer,分别表示单线程容器和多线程并发容器。

多线程并发容器是根据用户指定的并发数来创建多个单线程容器。称为线程容器,是由于消费者线程是交由消息监听者容器来管理,然而监听者容器并不是直接管理消费者线程,而是管理消费者工厂。

提供了一个MessageListener接口,实现该接口,重写onMessage方法即可。

redis安装

mac下安装redis还是很简单的(其实mac下安装什么软件都挺简单的,brew啥都有)

1
brew install redis

之后就是漫长的等待,下了好久,终于下载完了

启动服务端

1
redis-server

启动客户端

1
redis-cli

齐活

可能使用brew安装之后你不知道东西都下载到哪了(我刚下载完就不知道去哪里找redis.conf文件)

可以使用 brew list redis来查看

用户进程发起请求,内核接收到请求后,从I/O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程的地址空间,该用户进程获取到数据后再响应客户端。

阅读全文 »

NIO

NIO早在JDK1.4中就已经提出来了(JSR51),在JDK1.7中对NIO进行了补充类库NIO.2(JSR 203)

同步非阻塞

阻塞与非阻塞的区别:

  • 阻塞时,在调用结果返回时,当前线程会被挂起,并在得到结果之后返回
  • 非阻塞时,如不能立即得到结果,该调用不会阻塞当前线程,调用者需要定时轮询查看处理状态

Channel(通道)和Buffer(缓冲区)

阅读全文 »

函数式编程

函数式编程强加了额外的约束,即所有数据必须是不可变的:设置一次,永不改变。将值传递给函数,该函数然后生成新值但从不修改自身外部的任何东西,不可变对象和无副作用范式解决了并发编程中最基本和最棘手的问题之一。

阅读全文 »

有时候需要存储一组数据,之前使用数组,但是数组具有固定的容量,但是在写程序时并不知道需要多少对象,在java.util包下提供了一套完整的集合类,包含List、Set、Queue、Map。java集合类都可以自动地调整自己的大小。

阅读全文 »

定义在另一个类中的类,叫做内部类,可以把一些逻辑相关的类组织在一起,并控制位于内部的类的可见性。

内部类分为

  • 静态内部类
  • 成员内部类
  • 局部内部类
  • 匿名内部类
阅读全文 »