Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
岑永洪@e袋洗
@nickcen
会员
第 6388 位会员 / 2013-03-27

e袋洗
北京
5 篇帖子 / 70 条回帖
1 关注者
0 正在关注
0 收藏
GitHub Public Repos
More on GitHub
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • 有要一起参加 SegmentFault 黑客马拉松北京站的吗?求组队,谢谢! at 2014年06月23日

    围观。

  • 元编程里的一句话 at 2014年06月20日

    @ane

    ruby 这种调用是不能这样调用的。

    java 是可以的。之前代码只是示意。可编译和 run 的代码是这样的。

    package test;
    
    public class Main {
        public static void main(String[] args){
            new A("a").m1(new A("b"));
        }
    }
    
    -------------------
    package test;
    
    public class A {
        private String name;
    
        public A(String name) {
            this.name = name;
        }
    
        public void m1(A b){
            m2(b);
        }
    
        private void m2(A b) {
            System.out.println("inside "+name);
            if (b != null) {
                b.m2(null);
            }
        }
    }
    
    
  • 元编程里的一句话 at 2014年06月20日

    @neverlandxy_naix 你的代码不对啊,是在 a 的内部调用 b 的私有方法。直接这样调用私有方法,在哪个语言里面都不能够的。

    # encoding:utf-8
    
    class A
      def initialize(name)
       @name = name
      end
    
      def p(b)
        m_p(b)
      end
    
      private
      def m_p(b)
        puts "inside #{@name}"
        b.m_p(self)
      end
    end
    
    A.new("a").p(A.new("b"))
    
  • 好消息 Toad for Mac 免费 at 2014年06月20日

    一直在用 Sequel Pro,免费。

  • 元编程里的一句话 at 2014年06月20日

    @blacktulip 自己写一个 ruby 程序测试吧。

  • 元编程里的一句话 at 2014年06月20日

    第一句话是对的,a,b 都是 A 的实例,那么在 a 的方法内部是可以调用 b 的私有方法的。这个写个 Java 程序验一下就知道了。

    Java 的方法,都是随着类加载的,都在栈,整个系统都只有一份。简单来说,每个类都有一个 method lookup table,用来查询某个方法的入口地址在哪。当 a,b 不是同一个类时,a 只能查询到 b 的公开方法列表,所以,没法 binding 到 b 的私有方法。如果 a,b 同一个类,那么他们其实共用一个 lookup table,所以,就能找到私有方法入口。

    这种调用私有方法跟多线程没有任何关系,对象的实例都是方法和变量分离的,变量可以简单理解为 C 里面的 Struct,通过一个指针引用。每次方法调用就是正常的进栈出栈。另外,java 虚拟机规范里面有介绍,当调用某个实例方法时,虚拟机会默认的把当前对象作为第一个参数压入栈,即如果调用 a.p_m(b),那么实际上是传了两个参数给方法 p_m,第一个参数是 a,也就是 p_m 方法内部的 this 引用,第二个参数是 b。所以,对于这样的代码。

    class A(){
      private String name;
      public A(String name){
        this.name = name;
      }
    
      public void m(A b){
        p_m(b);
      }
    
      private void p_m(A b){
       System.out.println("i am "+name);
        b.p_m(a);  
      }
    }
    
    new A("a").m(new A("b"));
    

    当调用 a.m 方法时,这是第一层栈;当调用 a.p_m 时,就是第二层的栈,这个栈内部的 this 是 a;当调用 b.p_m 时,就是第三层的栈,这个栈内部的 this 是 b。简单说,这就有点像递归,只是不断的压栈,然后让 CP 指回到方法入口,跟多线程没有任何关系。

  • 网页内容的放大缩小是怎么实现的,类似谷歌地图的滚轮缩放功能 at 2014年06月19日

    就是记录一个 level 值,查询记录的时候带上这个 level 值而已。google 缩放的不是同一张图片本身。不同 level,google 返回的是不同的图片。

  • [北京][2014年6月21日] Open Workshop :Ruby 的单元测试 /Java 的单元测试 / 安全攻防 at 2014年06月19日

    报名之后等通知?

  • [经验之谈] 转行做程序员的 8 个月 at 2014年06月16日

    不错不错。

  • [已结束] 时隔一年,再求 Ruby 工作一份 at 2014年06月12日

    北京职位的飘过。

  • Sidekiq 精通 36 分钟 at 2014年06月12日

    跟 delayed_job 之类是什么关系,优缺点之类的了?

  • 批量数据该怎么处理才能减少耗时 (如何用 EventMachine 发送多 http 请求) at 2014年06月10日

    @yutian 那就把确定路径所需要的字段取出来就好了,不要生成 ActiveRecord 记录,这样慢。

  • 批量数据该怎么处理才能减少耗时 (如何用 EventMachine 发送多 http 请求) at 2014年06月10日

    如何判断 pdf 是否存在,是基于某个数据列存不存在?如果是,那就直接把这一列查出来就好了。不要用 ActiveRecord 生成对象。

  • 请教,多参考项的随机分组? at 2014年06月10日

    我觉得这里的随机是希望越相似的人越不要在一个组。所以,直接用 k-means 算法的结果会跟这个随机的需求相反。

  • [成都][2014 年 6 月 20-22 日] Startup Weekend 成都第一个创业周末 at 2014年06月10日

    @lyfi2003 thx

  • 批量数据该怎么处理才能减少耗时 (如何用 EventMachine 发送多 http 请求) at 2014年06月09日

    你应该先说明你的 job 想要干什么,依赖哪些数据列。没准直接把表 dump 成 csv 来处理更快了。

  • 好多数据库都支持全文索引,为什么还要自己构建搜索系统? at 2014年06月09日

    还有 facet 之类的功能。对比一下 solr 的 feature list 就知道搜索系统,可不止全文索引这么简单了。

  • [成都][2014 年 6 月 20-22 日] Startup Weekend 成都第一个创业周末 at 2014年06月09日

    这个不错哦,什么时候北京来一个。

  • 我想做一个解决 it 男单身问题的网站 靠谱么 at 2014年06月03日

    感觉只能烧香了。

  • 有没有在页面上画柱状图的 GEM 啊 at 2014年06月03日

    http://chartkick.com/

  • Ruby 程序员写 Swift 毫无压力 at 2014年06月03日

    只要不像 oc 就好。

  • [北京] 创投圈 招聘 Ruby 工程师 at 2014年05月30日

    回复,能把帖子刷回首页吗?

  • 想在 Ruby 中使用 Redis,能给个例子或者相关教程网站么? at 2014年04月08日

    https://github.com/nateware/redis-objects

  • [杭州] shou65.com 请你开待遇、定职位! at 2014年04月01日

    类似去哪儿的当地人?

  • 创投圈招 Ruby 程序员 at 2014年04月01日

    #1 楼 @lhy20062008 三里屯

  • 转让 2 根 金士顿 DDR3 1300 4G 的苹果笔记本内存 at 2014年04月01日

    新的 269,京东上卖。 个人觉得,内存这东西,新旧本身,从使用上,不知道有什么差别。所以,价格也没有打对折的打算。 合适就拿走。

  • 转让 2 根 金士顿 DDR3 1300 4G 的苹果笔记本内存 at 2014年03月31日

    @stupid @llvm 价格 400,底价 350。

  • 转让 2 根 金士顿 DDR3 1300 4G 的苹果笔记本内存 at 2014年03月28日

    #2 楼 @llvm 报个价呗

  • 转让 2 根 金士顿 DDR3 1300 4G 的苹果笔记本内存 at 2014年03月28日

    #1 楼 @stupid 报个价呗

  • 转让 2 根 金士顿 DDR3 1300 4G 的苹果笔记本内存 at 2014年03月26日

    报个价,合适就出了呗。这里居然没找到私信或者 DM 的入口,诡了个异。

  • 上一页
  • 1
  • 2
  • 3
  • 下一页
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English