groovy

如何从Java中的其他类读取私有字段的值?

爱⌒轻易说出口 提交于 2020-02-27 05:02:30
我在第三方 JAR 设计的课程设计不佳,需要访问其 私有 字段之一。 例如,为什么我需要选择私有字段? class IWasDesignedPoorly { private Hashtable stuffIWant; } IWasDesignedPoorly obj = ...; 我如何使用反射来获取 stuffIWant 的价值? #1楼 为了访问私有字段,您需要从类的 声明 字段中获取它们,然后使其可访问: Field f = obj.getClass().getDeclaredField("stuffIWant"); //NoSuchFieldException f.setAccessible(true); Hashtable iWantThis = (Hashtable) f.get(obj); //IllegalAccessException 编辑 :正如 aperkins 所评论的 那样 ,访问字段,将其设置为可访问并获取值都将抛出 Exception ,尽管上面仅提到了您需要注意的所有 检查 异常。 如果您请求的字段名称与声明的字段不对应,则将引发 NoSuchFieldException 。 obj.getClass().getDeclaredField("misspelled"); //will throw NoSuchFieldException

各种文件的注释

心不动则不痛 提交于 2020-02-27 00:36:58
下面总结了各种常用文件的注释: 单行注释(不包括用多行注释语法注释一行) 1.1 主流编程语言 语言\注释头 // # ; ' % -- --<space> REM<space> * ! C/c " Python * Java * C * C++ * R * Javascript * C# * MATLAB * swift * Go * Visual Basic * * MySQL * * Oracle SQL * Transact-SQL * SQLite * PHP * * Objective-C * Groovy * Ruby * Assembly language * Pascal * Perl * D * * Dart * ABAP * * Scala * Fortran * * * Lisp * 1.2 其他文件 文件类型 注释头 linux/unix shell script # dos bat = 或 rem 或 : dos ini ; vim " 多行注释 2.1 主流编程语言 语言\注释符号 /* */ { } (* *) ''' ''' """ """ %{ %} =begin =end =pod =cut #| |# Python * * Java * C * C++ * Javascript * C# * MATLAB * swift * Go * SQL

Java程序员修炼之道

故事扮演 提交于 2020-02-26 22:49:25
《Java程序员修炼之道》 基本信息 原书名:The well-grounded Java developer:vital techniques of Java 7 and polyglot programming 作者: (英)Benjamin J.Evans (荷兰)Martijn Verburg 译者: 吴海星 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115321954 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 页码:1 版次:1-1 所属分类:计算机 更多关于 》》》《 Java程序员修炼之道 》 内容简介 计算机书籍   《java程序员修炼之道》分为四部分,第一部分全面介绍java 7 的新特性,第二部分探讨java 关键编程知识和技术,第三部分讨论jvm 上的新语言和多语言编程,第四部分将平台和多语言编程知识付诸实践。从介绍java 7 的新特性入手,本书涵盖了java 开发中最重要的技术,比如依赖注入、测试驱动的开发和持续集成,探索了jvm 上的非java 语言,并详细讲解了多语言项目, 特别是涉及groovy、scala 和clojure 语言的项目。此外,书中含有大量代码示例,帮助读者从实践中理解java 语言和平台。    《java程序员修炼之道》适合java 开发人员以及对java7 和jvm

Java 程序员必备的10款开源工具

不打扰是莪最后的温柔 提交于 2020-02-26 13:11:45
Java世界中存在许多工具,从Eclipse,NetBeans和IntelliJ IDEA等著名的IDE开始到Java开发人员应该知道的JVM分析和监视工具,如JConsole,VisualVM,Eclipse Memory Analyzer等。 如果你是一位经验丰富的Java开发人员,你可能对这些工具很熟悉,但如果不是,现在就是是开始学习这些工具的好时机。 在本文中,我将重点介绍适用于各种Java开发人员的通用工具,例如核心Java 开发人员和Web开发人员。 1. JIRA Atlassian的JIRA是当前敏捷开发领域最重要的工具之一。它用于错误跟踪,问题跟踪和项目管理。如果你遵循敏捷开发方法,例如Sprint和Scrum,那么你必须了解JIRA。它允许您创建Spring循环并跟踪软件开发的进度。 JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公 司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。 2. Git Git是Java程序员的另一个必备工具,它是一个免费的开源分布式版本控制系统,旨在快速高效地处理从很小到非常大的项目版本管理。Git易于学习,占用空间小,具有超强的性能。 最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是发现已经在很多其他自由软件项目中也使用了

Groovy formatter/beautifier in Visual Studio Code

非 Y 不嫁゛ 提交于 2020-02-26 09:02:06
问题 For supported files in VSCode we get an option (when you right click on the file editor) to Format Document (ALT+SHIFT+F) . But unfortunately for Groovy this option is not available. And according to the VSCode community, there are no plans to implement this feature. Is there an alternative solution available, specifically for VSCode? 回答1: I don't know how well this works for formatting other than indentation, but I simply changed the file extension from .groovy to .js, right clicked in the

性能测试框架第三版

旧巷老猫 提交于 2020-02-26 07:32:09
本次主要更新了标记、记录功能,以及初始化连接池的方法。 具体实现请参考之前的文章: 性能测试中标记每个请求 、 如何性能测试中进行业务验证 、 如何在匿名thread子类中保证线程安全 、- 性能测试中记录每一个耗时请求 。 这两天又做了一些优化。主要方向还是将标记 mark 功能放到 threadbase 中,将 mark 方法的参数类型由 httprequestbase 变成 threadbase ,把原来有 request 并发实现类中实现的带有标记的 run() 方法,改到有两种模式虚拟类 ThreadLimitTimesCount 和 ThreadLimitTimeCount 中实现,放弃了实现类中再重写 run() 方法,避免了重写可能导致的BUG(的确出现了)。还有一个方向就是标记保存的优化,思路与上一个方向相同,在线程安全的情况下记录保存被标记的 threadbase 内容,主要是体现在 after() 方法中,避免以后的实现类保存格式不统一的问题。还有一个就是放弃了深拷贝的方式复制线程,因为坑比较大,在遇到类似 httprequestbase 这种不支持深拷贝对象的时候显得尤其麻烦。 下面分享``代码: package com.fun.base.constaint; import com.fun.base.interfaces.MarkThread; import

Gradle 入门--只此一篇

╄→гoц情女王★ 提交于 2020-02-25 19:37:49
是什么? 在语法上是基于Groovy语言的( Groovy 是一种基于JVM的敏捷开发语言,可以简单的理解为强类型语言java的弱类型版本),在项目管理上是基于Ant和Maven概念的项目自动化建构工具。 基础知识准备 Java基础,命令行使用基础 官方文档 : https://docs.gradle.org/current/dsl/ Gradle使用指南: https://gradle.org/docs/current/userguide/userguide Android插件文档 : https://github.com/google/android-gradle... AndroidGradle使用文档 : http://tools.android.com/tech-docs/new-build-system/user-guide Groovy基础: http://attis-wong-163-com.iteye.com/blog/1239819 Groovy闭包的Delegate机制 : https://www.cnblogs.com/zqlxtt/p/5741297.html 搭建Gradle运行环境 Gradle 运行依赖JVM,也就是java运行的环境。所以要安装jdk和jre,好像目前的Gradle的运行环境要求jdk的版本在1.6以上,应该的,现在jdk都到1

JVM堆外内存异常增长的解决过程

北城余情 提交于 2020-02-25 16:19:58
最近解决了几次内存异常的问题,有两次是堆外内存异常,感觉解决的问题越多,问题的共性就越容易总结,在这里给大家分享一下,希望抛砖引玉能够帮大家解决遇到的问题。 其实有了MAT这类工具,一般堆内内存基本都能借助工具分析出大概问题所在,但堆外内存有时就不能直观地发现问题了,从解决过几次线上问题的现象总结,堆外内存过高80%都是这两种因素引起: 若metaspace正常,有可能是线程数过多造成的 若metaspace异常,有可能是classLoader过多造成的 当然了,并不是说只有这两种情况,有些也可能是直接内存泄露的问题,但如果你的项目不是大量操作直接内存,或者使用netty等第三方框架的话,可以考虑以上两个问题。 本次文章主要分享metaspace异常的解决过程。前段时间发现某个服务每隔几天就重启一次,由于使用k8s集群,进程内存达到某个阀值会被kill掉重启,通过jvm监控发现被kill之前的堆内内存十分正常,而metaspace却缓慢地上升: 然后通过jmap命令将内存dump出来后,利用mat工具打开,发现其classLoader数量特别多: PS:由于这里只列出重复类,所以数量没有对上 通过查看该classLoader的gc roots可以看出其引用路径: 说实话,一开始看到groovyClassLoader有点懵,想不到哪里用到groovy,猜测是第三方依赖

Groovy read values from xml

血红的双手。 提交于 2020-02-25 05:58:40
问题 I have a Sample Code where I'm trying to read data from an xml file and manipulating the values. This worked perfectly fine when I tried it on http://ideone.com In my actual code I'm calling something like this def xmlFile = "path/to/xmlfile.xml" def tcproj = new XmlParser().parseText( getTemplate(xmlFile).toString() ) But when I use the same if condition specified in the Sample Code in my actual code, I get a completely different result. On trying to debug I found that the result varied a

Groovy call operator throws MissingMethodException when used on a class field

假装没事ソ 提交于 2020-02-25 04:05:40
问题 I am trying to use call operator () overloading, but it does not work on class fields. What's wrong? class Foo { void call(int x){ println("x="+x) } } class MyCallable { Foo foo = new Foo() } Foo foo = new Foo() foo(5) //works MyCallable mc = new MyCallable() mc.foo(2) //not works But program terminated with exception: Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: mpctests.MyCallable.foo() is applicable for argument types: (java.lang.Integer) values: