任何人都可以建议您使用并希望推荐的UML工具(如果可能,请提供您推荐的工具的优缺点),以满足以下要求:
1)免费,并符合标准
2)理想的.NET
请注意,Visual Studio Pro中的UML不够好,不考虑VS Ultimate.
以下是谷歌http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools上的列表
我编写了一个自动加载类的代码,我遇到了一个问题,我认为这是由于实现/设计类型的弱点。我想要做的是计算对象(外部)的默认参数。我可以计算传递给构造函数的参数的数量,但我需要检查对象构造函数内部,并且该方法对我没有帮助。
代码示例:
// This is simple
function test($arg1,$arg2,$arg3) {return func_num_args();}
// How can I count like this?
class load
{
public function __construct($id="",$path="") {}
}
$l = new load();
// How to count object default parameters count(object($l)), I need answer to be 2`
Run Code Online (Sandbox Code Playgroud)
我需要使用此方法的代码:
[文件:global_cfg.php]
<?php
// File: global_cfg.php
define(ROOT, __DIR__); // Root directory
define(DEBUG, true); // Set debugging state ON or OFF
define(MODE, "producer"); // If debug mode is ON: producer, publisher, tester
/*
* PATH CONFIGURATIONS:
*/
define(DS, …Run Code Online (Sandbox Code Playgroud) 今天,仅出于测试目的,我提出了以下想法,在CodeBlocks中创建和编译一个天真的源代码,使用Release目标来删除不必要的调试代码,一个带有三个nop操作的主函数只能找到更快的条目点的主要功能是.
CodeBlocks样本天真程序:
使用IDA反汇编程序,我看到一些奇怪的东西,OS实际上可以在main函数中添加aditional机器代码调用(隐式添加),调用系统函数,它驻留在kernel32.dll中,用于OS线程处理.
IDA计划视图:
在机器代码中仅出于测试原因将三个"nop"(90)替换为"和esp,0FFFFFFF0h",程序再次被重新缓存,这就是为什么"无操作"操作码在视图中不可取消的原因.
观察到的行为:
为每个进程创建一个新线程是逻辑,因为我们可以在TaskManager中探索它,这是一个在它自己的线程中运行的进程,这就是编译器添加此代码的原因(隐式默认线程).
我的问题:
编译器如何知道自动"注入"此调用代码的位置?
为什么之前没有在上层函数(sub_401B8C)中进行此调用,该函数将路由到主函数入口点?