当前位置: 首页 > news >正文

济南建网站送400电话房地产建设网站

济南建网站送400电话,房地产建设网站,自己架设网站,wordpress中文源码下载选自 justinblank机器之心编译参与#xff1a;李志伟、张倩在 JVM 中#xff0c;一个 Java 方法#xff0c;最多能定义多少参数呢#xff1f;这是一个很无聊的问题#xff0c;即使能定义一万个#xff0c;十万个#xff0c;谁又会真的去这么做呢。但是作为一个 coder李志伟、张倩在 JVM 中一个 Java 方法最多能定义多少参数呢这是一个很无聊的问题即使能定义一万个十万个谁又会真的去这么做呢。但是作为一个 coder最重要的不就是好奇心吗没有好奇心和一条咸鱼又有什么区别呢本文作者就是这样一位充满好奇心的 coder。我最近给我的 QuickTheories 分支添加了一个接口FunctionalInterfacepublic interface QuadFunction {    E apply(A a, B b, C c, D d);}让我好奇的是这个方法能有多少个类型参数。到目前为止我敢说Java 语言规范并没有谈及这个问题。对于实现定义的限制可能是什么我有两个猜测编译器会设置一个可预测的限制如 255 或 65535。编译器的紧急行为会由于实现细节(堆栈溢出或同样不可预测/不相关的东西)而设置意外的限制。我不想在源代码上测试我那点可怜的 C技巧所以我决定只测试编译器做了什么。我写了一个 Python 脚本它使用二进制搜索找到最少的致错类型参数。完整的脚本放在 Github repo (https://github.com/hyperpape/java-max-type-params) 中。脚本地址https://github.com/hyperpape/java-max-type-params生成方法很简单。幸运的是我们不必使用任何类型参数只需以的形式发出它们def write_type_plain(count):    with open(Test.java, w) as f:        f.write(public class Test {\n)        f.write(public )for i in range(count):if (i  0):                f.write(, )            f.write(A  str(i  1))        f.write( void testMethod() {})        f.write(})运行二进制搜索可以得到以下输出 error: UTF8 representation for string  is too long for the constant pool largest type: 2776这个错误有点模糊但事后看来是可以预见的。编译器生成的类文件包含许多字符串包括类中每个方法的方法签名。这些字符串存储在常量池中常量池中的条目最大为 65535 字节这是由 JVM 规范规定的限制。所以我之前的猜测都不完全正确。类型参数的最大数目是一个突现特征(emergent property)而不是一个明确的决定。不过并不是编译器本身的实现导致了错误。相反JVM 的类文件格式限制了可以在类文件中表示的类型参数的数量。这是真的尽管 JVM 对泛型一无所知。这也意味着类型参数的最大数目完全取决于如何编写方法。我尝试了一种新的编码类型参数的方法(先前链接文件中的 write_Type_Compact)使用完整的合法 ASCII 字符(A-Z、a-z、$和_)。该实现有点过于复杂因为可以使用字符 09但不能是标识符的初始字符因为 Java 关键字不能作为类型参数出现。我只是用等长的 UTF-8 字符替换了短单词「if」和「do」。更紧凑的编码将参数数量从 2776 增加到 3123。不方便的是_A 是一种合法的 Java 标识符但 _ 不是。谢天谢地我的编码在不使用初始_情况下就生成了 3392 个 2 字节类型参数因此我觉得没有必要进行簿记以发出初始字符_。再来一个小技巧解压类文件显示65536 个字符的大部分不是我生成的类型参数而是子字符串 Ljava/lang/object 的重复实例。因为没有提供关于类型参数的信息所以类文件显示它们扩展了对象并在方法签名中对其进行编码。我修改了生成器来解决这个问题。循环的关键部分是s  type_var(i)f.write(s)if (s ! A):    f.write( extends A)在类型参数中除了一个实例 java/Lang/Object 之外的所有实例都被替换为 A。在进行了这个更改之后编译了一个具有 9851 个类型参数的方法。由于参数的数量增加了很多所以我使用的代码肯定需要调整。使用非 ASCII Unicode 标识符可能是完全高效的必要条件但简单地指出这是可以做到的我就很满意了。这些都不重要很难想象有人会达到这个极限。代码生成有时会达到语言或编译器的限制但即使生成的代码似乎也不太可能使用成百上千的类型参数。尽管如此如果我是规则制定者我会考虑明确禁止任何类或方法具有 255 个以上的类型参数。明确的限制似乎更好即使它只影响百万分之一的程序。原文链接http://justinblank.com/experiments/howmanytypeparameterscanajavamethodhave.html本文为机器之心编译转载请联系本公众号获得授权。✄------------------------------------------------加入机器之心(全职记者 / 实习生)hrjiqizhixin.com投稿或寻求报道contentjiqizhixin.c
http://www.yutouwan.com/news/228154/

相关文章:

  • 做网站最新技术建设银行官方网站云服务中心
  • 西安网站建设-中国互联北京海淀区网络科技有限公司
  • 电子商务网站建设 精品课程上海品划网络做网站
  • 建设部证书查询官方网站网站建设培训视频教程
  • 佛山狮山网站建设wordpress模板制作
  • 炫酷文字制作网站wordpress后台界面修改
  • 国内最好的网站建设公司网站对联图片
  • wordpress页面的添加背景音乐西安做网站优化的公司
  • 东莞市企业网站建设哪家好vi企业形象设计是什么
  • 深圳做网站的公司哪家最好河源抖音seo讯息
  • 宣威做网站推广的公司wordpress媒体文件夹
  • 找网络公司做网站要注意这4个细节应该选用
  • 做静态网站d360推广登陆
  • 哪个网站有png素材外贸网站做开关的哪个好
  • 开通网站需要多少钱线上推广ppt
  • 怎样建设自已的网站wordpress建站系统
  • WordPress批量删除无用标签山西seo和网络推广
  • 洛阳建设厅网站群晖 wordpress 失败
  • 在门户网站上爆光怎么做wordpress商城 淘宝客
  • 自动做网站大理建设投资有限公司网站
  • 个人网站可以做seo吗多语言做网站
  • 企业app下载安装seo黑帽技术
  • 科技网站大全长春微信做网站
  • led网站制作怎么做网站公司宣传资料
  • 房产集团公司网站建设方案网页设计实验报告精品课程网站
  • 成都网站建设与网站推广培训solaris wordpress主题
  • 网页游戏网站平台黑龙江最近发生的新闻
  • vs中可以用新建项目来做网站吗自己做网站花钱么
  • 怎么注册一个自己的网站网络营销概论
  • 岳阳网站建设 熊掌号学做网