小编Dou*_*ell的帖子

有哪些工具可用于可视化哪些方法调用其他Java代码方法?

有哪些工具可用于可视化哪些方法调用其他Java代码方法?例如,CodeDrawer是否适用于Java?特别是如果methodA调用methodB,我正在寻找能在Obj.methodA()和Obj.methodB()之间绘制箭头的东西,并且可能会从调用它的方法中组织一个指向methodB的漂亮箭头.

java visualization

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

将未实现的方法委托给Java中包含的对象的最短方法是什么?

我在"辅助对象"中包含"主要对象"(具有大多数功能),这将提供方便的方法.我只有一个接口可用,除了返回的对象与工厂方法的接口.我在想一个"扩展"这个对象的好方法是组合,但是我的超类必须实现主对象接口的问题,这将是大约600行的存根代码.

显然,一个简单但冗长的解决方案是填写所有存根,以便它们只调用主对象的方法.在Java中有比这更好的方法吗?在我熟悉的其他语言中,有一些方法可以为辅助对象中未实现的方法执行自动委派.

例:

class Helper implements Interface {
    Primary primary;

    Helper(Primary _primary) {
        primary = _primary;
    }

    void helper() {
        doStuff();
    }

    // 500 lines of this
    void stub() {
        primary.stub();
    }
}

注意:

最初的计划是使用正则表达式将Eclipse中的所有存根TODO替换为实际调用.将寻找一个自动执行此操作的Eclipse工具.此外,看起来扩展接口或使用代理最终更好,所以将追求.

java composition

6
推荐指数
2
解决办法
3748
查看次数

为什么使用terminal:true而不是删除低优先级指令?

相关:如何理解指令的`terminal`?

为什么有人会设置terminal:true和指令的优先级而不是简单地删除优先级较低的指令?例如,他们可以写:

<tag directive-1 directive-2 directive-3></tag>
Run Code Online (Sandbox Code Playgroud)

...并且它们可以添加优先级:100和终端:true到指令-3,因此只有指令-3才会应用于该元素.

为什么不会有人改为将模板更改为:

<tag directive-3></tag>
Run Code Online (Sandbox Code Playgroud)

也许它在某些情况下通过允许将多个指令添加到元素并卸载决定哪些实际应用于Angular的工作来简化代码?

谢谢.

angularjs angularjs-directive

6
推荐指数
1
解决办法
4984
查看次数

如何将视频文件(例如mpeg)转换为图像集合?

如何将视频文件(例如mpeg)转换为图像集合?

理想的答案将涵盖使用可用库的C++和Java,以及如何手动从视频文件中删除单个帧以获得某些常见的视频格式.

c++ java video mpeg

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

如何获得 Python 正则表达式搜索找到匹配项的偏移量?

我正在尝试获取使用 re.search() 找到的匹配项的偏移量。

http://docs.python.org/dev/howto/regex.html

该站点解释了如何获取匹配组件相对于匹配开始的偏移量,但没有说明如何在“haystack”字符串中获取匹配本身的偏移量。

python regex python-3.x

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

为什么argsort称为argsort?

因此,它是一种间接排序,它返回对数组进行排序的索引.为什么它是"argsort"(这有点意义,因为它需要一个参数 - 使用的排序类型)而不是"indirect_sort"或类似的东西?还是get_sort_indexer?

numpy

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

是否有更简单的方法来恢复 SqlAlchemy 集成测试之间的状态?

Flask 示例应用程序Flasky​​Flaskr在每次测试之间创建、删除和重新种子其整个数据库。即使这不会使测试套件运行缓慢,我想知道是否有一种方法可以完成同样的事情,同时又不那么“具有破坏性”。我很惊讶没有一种“更温和”的方式来回滚任何更改。我尝试了一些没有效果的事情。

对于上下文,我的测试使用 self.client.post('/things') 之类的东西通过 Flask test_client 调用端点,并在端点内调用 session.commit() 。

我尝试过制作自己的“提交”函数,该函数实际上只在测试期间刷新,但是如果我发出两个连续的请求,例如 self.client.post('/things') 和 self.client.get('/things') ,新创建的项目不会出现在结果集中,因为新请求具有新的请求上下文和新的数据库会话(和事务),该上下文不知道仅刷新而不是提交的更改。这似乎是这种方法不可避免的问题。

我尝试过将子事务与 db.session.begin(subtransactions=True) 一起使用,但后来遇到了更糟糕的问题。因为我有 autoflush=False,所以在提交外部事务之前,实际上没有任何内容被提交或刷新。同样,任何依赖于同一测试中早期请求修改的数据的请求都将失败。即使使用 autoflush=True,顺序请求也会出现前面的问题。

我尝试过嵌套事务,其结果与子事务相同,但显然它们没有做我希望它们做的事情。我看到嵌套事务向数据库发出 SAVEPOINT 命令。我希望这将允许提交发生,对其他会话可见,然后能够在任意时间回滚到该保存点,但这不是他们所做的。它们在事务中使用,并且与之前的方法具有相同的问题。

更新:显然有一种在连接而不是会话上使用嵌套事务的方法,这可能有效,但需要对应用程序进行一些重组才能使用测试代码创建的连接。我还没试过这个。我最终会解决这个问题,但同时我希望还有另一种方法。有人说,由于“真正的嵌套事务”和保存点之间的区别,这种方法可能不适用于 MySQL ,但Postgres 文档也说使用 SAVEPOINT 而不是尝试嵌套事务。我认为我们可以忽略这个警告。我看不出这两个数据库之间有任何区别,如果它适用于其中一个数据库,那么它可能也适用于另一个数据库。

避免 DB drop_all、create_all 和重新播种数据的另一个选项是手动撤消测试引入的更改。但是,在测试端点时,可以将许多行插入到许多表中,并且可靠地手动撤消此操作既费力又容易出现错误。

在尝试了所有这些事情之后,我开始看到在测试之间放弃并创建的智慧。但是,是否有一些我在上面尝试过的应该有效的方法,但我只是做错了一些事情?或者还有其他人知道我还没有尝试过的方法吗?

更新:我刚刚在 StackOverflow 上找到的另一种方法是截断所有表,而不是删除并创建它们。这显然是大约两倍的速度,但它仍然看起来很严厉,并且不如回滚那么方便(回滚不会删除测试用例之前放置在数据库中的任何示例数据)。

python integration-testing sqlalchemy flask flask-sqlalchemy

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

在各种SQL中,物理地址表最灵活的设计是什么?

在各种SQL中,物理地址表最灵活的设计是什么?我认为有比{街道地址,建筑地址,城市,州/省/地区,国家,邮政编码}更好的东西.地址的各种组成部分是否有标准名称,特别是国际标准名称?此外,应该对具有多个地址的同一物理位置进行哪种规定?在什么情况下会发生这种情况?

mysql sql database database-design

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

为什么C++范围解析运算符::?

这是我在Stroustroup的C++设计和演变中找不到答案的少数几个问题之一.为什么C++范围解析运算符::,而不仅仅是:?

我猜它是因为:已经用于指示构造函数中初始化列表的开始.有没有人同意,不同意或对此有明确的答案?

c++

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