• 为什么要说‘即使’,太 tough 了吧

  • 你们觉得不值,是你们本来就有这样的学习能力,和理性思维能力吧

    能花5w块钱去,可以学到一点学习能力,学到理性思维,甚至可以看眼看一下世界,我觉得是挺值得(前提是你没有这个能力,比如上面的某个妹子),而且越早学越好

  • 有个相关问题,如何能交到层次比较高的朋友呢?

    我有一些层次比较低的朋友(这么说可能不对,姑且这么理解吧),从我这里得到很多,价值上的,观念上的,甚至经济上的,有的时候他们都会说和我在一起学到很多,但我自己也想交到这样能学到很多的朋友。

    说实话我身边的人,除了几个同事;就算是以前在大学最认真的女生,现在也很少学习,看书,甚至不思考,知识水平永远在高三的巅峰停滞不前。真的觉得是不是自己的交友圈太low了,以至于经常会怀疑自己。总结下来感觉自己总是在进步,心理上有点看不起毕业了就再无寸进的人,但是交友上也很难上升一个层次,导致我现在反而怀疑我身边的朋友是不是觉得我是个怪人...

    大概就是不断膨胀的文化需要,和低下的交友能力之间的矛盾,偏偏我还是一个喜欢聊天的人,真是蛋蛋疼

  • #5楼 @adamshen 有,闷葫芦性格,一般是我说她听,虽然挺好的,但说真的说多了也有些无聊

  • #5楼 @huacnlee 附一张内存图,突然减少是重启了服务器,后面的突然升高是我使劲在刷api

  • #11楼 @ruby_sky #8楼 @tzwm 想彻底解决问题

    #10楼 @MrPasserby 我也这么想 present records, with API::Entities::Records 改成 present [], with API::Entities::Records 内存就增长很慢,而且有回收的迹象,但是也看不出什么,补充一下这块的代码:

    module API
      module Entities
        class Records < Base
          expose :comments_count
          expose :followers, using: API::Entities::Users
          expose :cells, unless: :without_cells do |instance, options|
            self.cells(options[:columns] || self.columns)
          end
    
          def columns
            object.sheet.columns
          end
    
          def cells(columns)
            {}.tap do |cells_hash|
              raw_cells = object.cells
              columns.each do |column|
                value = raw_cells[column.column_id]
    
                case column.type
                when 'date'
                    value = value.try(:iso8601, 3)
                when 'metadata'
                  meta_type = column.config['type']
                  value = object.try(meta_type)
    
                  if %w(created_at updated_at).include?(meta_type)
                    value = value.try(:iso8601, 3)
                  end
                end
    
                cells_hash[column.column_id] = value
              end
            end
          end
        end
      end
    end
    
    

    #7楼 @jicheng1014 唉,超级厉害,如果一直访问几万条数据的api,分分钟钟跑满了,现在换成4G要稍稍好一些,但是内存还是一直上涨

  • 主要泄露部分的代码 @huacnlee 能否帮review下

    get 'records' do
      view = View.find(params[:view_id])
    
      # 省略鉴权部分
    
      # view.records_list_ids 是一个大数组,直接从 redis 中拿出来的,可能高达2万个字段,paginate_ids代码见下方
      records_ids = paginate_ids(view.records_list_ids)
    
      records = Record.where(id: { '$in' => records_ids })
      # where in 之后的排序,O(n)算法,应该没问题
      records =  view.sort_records(records)
    
      present records, with API::Entities::Records
    end
    
    def paginate_ids(collection)
      return [] if collection.blank?
    
      base_record_index = collection.find_index(params[:from])
    
      if params[:direction] == 'forward'
        res = collection.slice(base_record_index, params[:limit])
      else
        offset = base_record_index - params[:limit]
        res = if offset >= 0
                collection.slice(offset, params[:limit] + 1)
              else
                collection.slice(0, base_record_index + 1)
              end
      end
    end
    
  • #2楼 @huacnlee 没有,搜了全部代码没有有关GC的,GC.enable 回报 false

  • rspec 的 receive 方法似乎无法获取到

    想了一个办法,在 broadcast_to 方法上记录下接受的参数,在rspec那边读取,可以实现测试了,感谢