• 简历已发 大数据方向挺不错的

  • 其实我说的不可预测是指的 线程调度不可预测 线程调度不可预测 所以我觉得不能用共享变量来参与计算 顶多是起到一个计数作用 例如:

    @a = 1
    10.times do |e|
    Thread.new {
       @c = 1
       @c += @a
    }
    p "#{e}  #{@c}"
    end
    

    这段代码的输出就依赖 线程调度 不同的线程调度会出现不同的输出

    这个跟redis的原子操作没有关系

  • redis现在正在看 redis的原子操作只能保证 写是唯一的 最终的值是我们预期的 但是中间过程还是不可预测的吧

  • 共享变量的问题 多个线程共用一个变量 这个过程是不可预测的 要想不出错貌似只能读不能写 除非能做到线程之间同步和互斥 要不以后可能就会出现一堆bug

  • 由潜入深 首先是暴力算法 之后通过空间换时间的思想加快了速度 最后更是通过线性同余算法再次优化了内存空间 减少了空间分配 分配更均匀 其实这和我们软件开发是一样的 先是简单实现 然后逐步迭代