知识点1

来源:互联网 发布:家里有网络怎么看电视 编辑:程序博客网 时间:2024/06/06 02:46
  • 平安科技:
    • 分表数据库最优查top100的方法
    • AB是两分表,各存了100万数据怎么查top100
    • redis负载怎么动态实现
    • currenthashmap分段锁的实现原理
    • jdk678的差异
    • nio原理
  • JAVA特种兵
    • jmap -dump:format=b,file=xxx.bin <pid>
    • jinfo -flag [jvm参数] <pid>
    • 3.7.7  Visual VM
    • 3.7.8  Mat
  • dubbo
    • netty的channel原理
    • zookeeper如何实现分布式锁
    • 读写锁的实现原理
  • 项目
    • 为什么选择rabbitMq
      • 各大MQ比较
        • zeroMQ : 性能最快,使用复杂,非持久化
        • activeMQ:性能最差,支持持久化
        • RabbitMQ:性能较好,健壮性最好,支持持久化,由于RabbitMQ是elang语言实现,高并发场景最优
        • kafka:较rabbitMQ稳定性,可用性,可靠性差,性能比RabbitMQ强,初衷是做一个日志系统
      • 各大nosql数据库比较
    • RabiitMQ
      • 优点:
        • 易用:安装部署简单,上手门槛低,丰富的功能,符合AMQP标准
        • 可靠:企业级消息队列,经过大量实践考验的高可靠性
        • 可用:集群已扩展,轻松增减集群节点
        • 监控:强大的web管理页面
        • 强大的开源社区支持,生态活跃
    • MongoDB
      • 集群原理
    • 程序员在互联网公司与行业软件公司的区别
      • https://www.zhihu.com/question/20274106
    • Redis
      • 优缺点
        • 数据结构丰富:string,set,hash,list,sortSet
        • 性能卓越:单台读11W,写8W
        • 原子性:Redis所有的操作都是原子性的,同事redis还支持对几个操作全并后的原子执行
        • 丰富的特性:redis还支持publish/subscibe 通知,key过期等特性
        • Redis所有操作都是串行的,可用与实现分布式锁
      • 集群
        • 主从:
          • 支持:一主多从,多级主从结构
          • 目的:冗余备份,提升读性能
          • 主从同步异步进行
          • 流程:
            • 从服务器向主服务器发送sync指令
            • 主服务器执行RDB持久化
            • 主服务器将持久化后的RDB文件发送给从服务器
            • 从服务器读将接收的文件存储在本地
            • 从服务器读取文件到内存
            • 主服务器将缓存的写指令已redis协议发送给从服务器
      • 事务
        • 指令:multi,exec,discard,watch
          • multi组装一个事务
          • exec执行一个事务
          • discard取消一个事务
          • watch监视一些key,一旦key在事务被执行前改变了,则取消事务执行
        • 定义:redis实现的是简单的事务,只保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令;
        • 流程:
          • 服务端发现multi指令,会将此连接进入一个事务上下午
          • 后续的命令并不立即执行,而是放入到一个队列中
          • 接受到了exec命令,redis顺序执行队列中的命令,并将结果打包在一起返回给client,结束事务
          • 接收到了discard命令,清空队列,并结束事务
        • 问题1:
          • 描述:redis实现的是简单的事务,不能保证读取数据与执行事务是一个原子性,这个地方可能存在
          • 解决办法:使用watch实现一个乐观锁
            • 乐观锁(事务):
              • 流程:实现一个 incr a(a = 1) 的事务
                • watch a
                • get a
                • multi
                • set a 2
                • exec
        • 问题2:在执行的过程中出现问题,将不会回滚问题出现之前执行的命令
      • 分布式锁
        • 悲观锁:

        • 乐观锁

      • 持久化
        • DBS:快照格式,将某一时刻缓存中的所有数据以快照的形式持久化到内存
          • 过程:写临时文件 -> 替换旧快照
          • 单独子线程,异步,不影响服务性能
          • 优点:速度快,数据完整,不影响服务性能
          • 缺点:服务宕机可能丢失部分未存入快照的数据
        • AOF(append only file):追加而不是改写文件
          • 过程:定时记录每一个服务命令,并追加到文件末尾,类似于操作日志
          • 同步过程,服务主线程负责追加指令到临时文件
          • 优点:有效保证数据完整性,提供修复工具
          • 缺点:
            • 影响服务性能(可配置:时间段同步,或每条同步)
            • 持久化数据量大:提供rewrite功能,将一段时间的操作日志压缩:保留最后有效操作
            • 恢复速度慢
          • 重写流程:
            • 创建重写子进程,读取原AOF文件 并压缩入一个临时文件
            • 通知主线程,主线程将时间段内的操作指令追加到临时文件中
            • 用备份文件替换原AOF文件
      • 其他:
        • hash在小数据时采用内存密集的数组作为存储结构,当超过设置值时改为hash表结构
        • list在小数据量时也采用内存密集的数组作为存储结构,当超过设置值时改为链表实现的

原创粉丝点击