小编Dak*_*san的帖子

Gradle将lib类从lib替换为自己的类以避免重复

在Android Studio中,有一个特定的文件(src/org/luaj/vm2/lib/jse/JavaMethod.java)需要从通过Gradle(dependencies {compile 'org.luaj:luaj-jse:3.0.1'})引入的包中覆盖.

我将文件复制到我的源目录中,路径完全相同,并对其进行了更改.这对于正在使用它的单个JUnit测试用例来说效果很好.它看起来似乎正在为我的项目的正常编译工作(目前无法轻易确认).

但是,当我尝试通过ProjectType ="Android Tests"的配置立即运行我的所有测试时,我得到了Error:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files define Lorg/luaj/vm2/lib/jse/JavaMethod$Overload;.

是否需要添加到Gradle文件中的特定任务或命令,以确保项目选择本地源目录中的文件?我尝试了复制任务sourceSets->main->java->exclude命令,但似乎都没有工作(我可能做错了).我还尝试从这篇文章 "编译"下的"排除模块/组"指令.

运行/调试确认的非默认设置:

  • Type = Android测试
  • Module = 我的模块
  • 测试:全包装
  • 包装:"测试"

我的所有JUnit测试用例都在"测试"包中.

任何能让它发挥作用的答案都可以.如果不是Gradle,可能是android清单或本地源文件本身.

[编辑2016-07-24] 当我的android模拟器运行较低的API时,错误也发生在正常编译上.API 16和19错误输出,但API 23没有.

java android overwrite package gradle

7
推荐指数
2
解决办法
1万
查看次数

IntelliJ检查说node.js不存在module.exports

IntelliJ发出警告

未在模块类型中定义属性导出

module.exports=在项目中任何地方使用的任何地方。

intellij-idea bcrypt code-inspection node.js requirejs

7
推荐指数
1
解决办法
1612
查看次数

如何有效地构建golang程序以实现最佳垃圾收集器运行?

最近通过强时间优化的GC运行,优化代码以在golang GC中获得更好的结果似乎更为重要.我最近被告知它在运行中完成了多少"取决于你的堆内存使用模式."但是我并不确定从语言程序员的角度来看这意味着什么.或者这不是可以轻易控制的东西?

我已经阅读了Brian W. Kernighan最近出版的"The Go Programming Language"一书,但其中没有关于这个主题的内容.互联网上关于这个主题的所有信息都是几年前的,所以不要真正适用.

我目前做的一些事情包括:

  • 确保指针/对象只能存储/记住它们需要的位置
  • 分配具有预期或理智能力的对象
  • 不重复数据
  • 能够,通过功能使用流数据而不是将所有数据预先放入大堆.

我也有点恼火的是,在一个或另一个之间转换时总是重新创建字符串和字节数组(由于字符串是不可变的).因此,当我从一个到另一个,并且它是一个安全的操作时,我只是使用unsafe重新指向另一个类型的指针.

所有这些实践都值得帮助GC更快更清晰地运行吗?还有什么我可以做的吗?

optimization garbage-collection memory-management go

5
推荐指数
1
解决办法
467
查看次数

在声明之前引用python中的类

好的,因此使用Django REST框架教程中的直接示例,我有2个类:UserSerializer和SnippetSerializer。我希望能够在SnippetSerializer类声明中将“ UserSerializer”用作序列化程序,但是由于某些原因,需要首先声明SnippetSerializer。代码示例:

class SnippetSerializer(serializers.HyperlinkedModelSerializer):
    owner = UserSerializer()
    #unimportant stuff

class UserSerializer(serializers.HyperlinkedModelSerializer):
    #unimportant stuff - lets say we reference SnippetSerializer here
Run Code Online (Sandbox Code Playgroud)

我想到的明显答案是前向声明,但是从我的所有研究中,我无法在Python中找到它。

我认为可能可行的另一种解决方案,但没有(也许我做错了吗?),而是尝试在init方法中声明此关系。

class SnippetSerializer(serializers.HyperlinkedModelSerializer):
    def __init__(self, *args, **kwargs):
        self.owner = UserSerializer()
        super(SnippetSerializer, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

但这似乎被框架完全忽略了。

我也尝试使用@addto,但似乎仅适用于函数,不适用于属性/属性

有办法解决这个问题吗?这个“先有鸡”类问题已经在Python中杀死了我一段时间,但是我终于遇到了一个实例,该实例实际上阻止了我完成工作。

python django forward-declaration

5
推荐指数
1
解决办法
1147
查看次数

Django 动态过滤器集

所以我想从django-filter 模块创建一个django filters.FilterSet,但我想动态添加它的属性。例如,如果我想动态添加:SubName

class UsersInfoFilter(filters.FilterSet):
    Name=NumberFilter(lookup_type='gte')
    def __new__(self):
        self.SubName=NumberFilter(lookup_type='gte')
        self.Meta.fields.append('SubName')
    class Meta:
        model = UsersInfo
        fields = ['UserID', 'LanguageID', 'Name']
Run Code Online (Sandbox Code Playgroud)

问题是 FilterSet 是一个元类,一旦确定了类就会立即运行,因此在此之前没有任何地方可以动态添加项目。

我试过将一个函数作为参数放入 filters.FilterSet 中class UsersInfo(AddObjects(filters.FilterSet)),它返回准确传递的内容,但当时我无法引用UsersInfoFilter,因为它仍未完成创建。

我也尝试创建UsersInfoFilter自己的基类,然后创建一个class RealUsersInfoFilter(UsersInfoFilter, filters.FilterSet)作为我的实际过滤器,但是 FilterSet 只是抛出关于缺少名为字段的属性的警告。

python中的类似乎没有任何类型的构造函数。我假设我必须用元类做某种魔法,但我已经尝试了我能想到的每一种组合,并且不知所措。

python django metaclass multiple-inheritance django-filter

5
推荐指数
1
解决办法
1160
查看次数

Windows内核条件断点未评估

我通过visual studio 2013使用windows内核调试器,我试图在函数(nt!KiSwapContext)中停止(中断)但仅针对特定进程(0x920).

断点在没有条件的情况下工作 bp nt!KiSwapContext

我确定可以找到当前线程的进程ID dt dword poi(gs:[188h])+3B8h

我已经确认以下有条件的工作,看看我是否在正确的线程: ? poi(poi(gs:[188h])+3B8h)==0x920

但是,当我尝试设置条件断点时,无论我在if/else中放置什么,它总是会中断.所以我猜它认为表达式是无效的,只是忽略它.我已经确认,如果我确实输入了一个无效的表达式,它只会在没有警告或错误的情况下接受它,并且总是在断点处停止.

我正在使用的表达式是: bp nt!KiSwapContext ".if (poi(poi(gs:[188h])+3B8h)==0x920) {} .else {gc}"

我也尝试使用j条件语法无济于事.

关于我做错了什么的任何想法?

[编辑]哦,作为奖励,如何在64位处理器上使用dword而不是qword进行条件检查.? poi(poi(gs:[188h])+3B8h)返回qword值.我知道我可以用它dd来获取值,但我似乎无法弄清楚如何将其添加到条件中.像? dword(poi(gs:[188h])+3B8h)==0x920或的东西? {dd poi(gs:[188h])+3B8h}==0x920

windows debugging kernel windbg breakpoints

3
推荐指数
1
解决办法
257
查看次数