0%

redis安装

mac下直接安装

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

1
brew install redis

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

启动服务端

1
redis-server

启动客户端

1
redis-cli

齐活

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

可以使用 brew list redis来查看

使用redis的源码包安装

1
2
3
直接先make,
然后make install
就 可以了

redis下包含有

  • redis-benchmark:性能测试工具,测试Redis在你的系统及配置下的读写性能
  • redis-check-aof:用于修复出问题的AOF文件
  • redis-check-dump:用于修复出问题的dump.rdb文件
  • redis-cli:Redis命令行操作工具
  • redis-sentinel:Redis集群的管理工具
  • redis-server:Redis服务器启动程序

NIO

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

同步非阻塞

阻塞与非阻塞的区别:

  • 阻塞时,在调用结果返回时,当前线程会被挂起,并在得到结果之后返回

    传统的 IO 流都是阻塞式的。也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,在完成网络通信进行 IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务器端需要处理大量客户端时,性能急剧下降

  • 非阻塞时,如不能立即得到结果,该调用不会阻塞当前线程,调用者需要定时轮询查看处理状态

    Java NIO 是非阻塞模式的。当线程从某通道进行读写数据时,若没有数据可用时,该线程可以进行其他任务。线程通常将非阻塞 IO 的空闲时间用于在其他通道上执行 IO 操作,所以单独的线程可以管理多个输入和输出通道。因此,NIO 可以让服务器端使用一个或有限几个线程来同时处理连接到服务器端的所有客户端

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

阅读全文 »

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

阅读全文 »

函数式编程

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

阅读全文 »

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

阅读全文 »

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

内部类分为

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

为了避免重复代码太多,导致代码不好维护,大家需要学会如何复用代码,代码复用的两种方式,组合和继承

阅读全文 »

kafka是一个高吞吐量、分布式的发布-订阅系统,核心模块使用Scala语言开发,开源的、轻量级的、分布式的、可分区和有复制备份的、基于zookeeper协调管理的分布式流平台的功能强大的消息系统。

阅读全文 »