精华内容
下载资源
问答
  • 前言:本篇主要讲解怎么画查询语法并对其优化,因为我在之前学的时候,在网上其实没怎么找到详细地教程,还是自己一点一点扣书扣出来的,所以想写一篇具体来描述一下这类题的方法技巧。 如题,这是东华大学一年的...

    前言:本篇主要讲解怎么画查询语法树并对其优化,因为我在之前学的时候,在网上其实没怎么找到详细地教程,还是自己一点一点扣书扣出来的,所以想写一篇具体来描述一下这类题的方法技巧。

    如题,这是东华大学一年的考研题目:

    我们来解决第二问的前提是先写出它的关系表达式:

    这一步没什么技巧,学过关系代数就很简单,我们主要讲解如何画查询语法树:

    第一步:转化关系表达式:就是将原来的三个表的自然连接转成笛卡尔积形式,在中间再加一个投影和选择即可;L就是指笛卡尔积里的所有属性,选择就是将这三个表连接起来的相同的属性,也比较简单,对照写出来即可;

    第二步:画出原始的优化树,这个画出来很简单,就是把刚刚转化的关系表达式化成这样的形式:

    最重要的第三步!优化!书上写的原则有很多,但其实只要记住该在哪投影,哪选择即可:

    我先把图贴出来:

    首先先看最上边,就是先写一个投影一个选择,投影投的就是咱们最后要的什么,选择就是右子树和左子树最后的连接,我们看右子树是Bike,那上面的选择操作一定就是

    这样我们上面的树就写好了。

    然后我们来到右子树,如果我们的条件是有在Bike里体现的,那一定就是加上Π和,如果我们没有这方面的条件,那就只加一个Π就行,而很明显,在Bike里我们是有条件的,所以就搞成:

    这样即可,就是我要用Bname来筛选出来,但我最后只要Bid就行了;下面的都是这个意思:

     

    这也是同理,我们要清楚的就是,条件是什么,我最后要什么就够了,这就是优化过程;

    要注意一点的是这一点:

    这一步要判断好,这一步输出的可就直接给上边的树了,要确认好上面的树需要什么;

     

    然后就结束啦!其实很简单的,主要是分清条件是什么,每一步只需要什么。

     

     

    展开全文
  • 它主要是通过层次感清晰的形结构来储存数据,因此在一定程度上也能够提高数据库查询效率,实现快速查找。 LDAP图绘制方法 LDAP图的绘制并不繁杂,只要通过以下五个步骤,即使是新手小白,也可以轻轻松松地绘制...

    LDAP是轻型目录访问协议的英文缩写,主要是一套抽象、开放的通讯标准,能够轻松实现静态数据的快速查找,是一种便捷、高效的查询方式。

    LDAP图常见用途

    LDAP图广泛应用于计算机领域,在系统、网络、应用等过程中占据重要地位。它主要是通过层次感清晰的树形结构来储存数据,因此在一定程度上也能够提高数据库查询效率,实现快速查找。

    LDAP图绘制方法

    LDAP图的绘制并不繁杂,只要通过以下五个步骤,即使是新手小白,也可以轻轻松松地绘制出一幅既专业又美观的LDAP图。

    第一步:进入官网,点击下载“亿图图示”软件,访问亿图图示电脑端。或者在网页端直接访问“亿图图示在线网页版“。启动软件,就可以开始作图了!

    第二步:打开模板社区。依次点击“软件/计算机”-“网络图”- “LDAP图”。然后从例子库中,选择一个模板,点击打开LDAP图模板。

    第三步:软件左侧有基本绘图制图的形状和“符号库”,可以对符号进行改动,符号在拖动过程中,内部也会有对准线实现对齐。


    第四步:双击文本框,对LDAP图模板里的文字进行改动,点击图上方工具栏可修改字号、颜色等,直接点击右侧属性栏中的主题配色还可以对LDAP图模板中的全部配色一键更改。


    第五步:完成LDAP图的设计后,点击左上角的保存按钮,即可一键点击进入下图界面对作品导出,还可以选择在线打印等多种方式,轻松满足多样绘图需求!

    LDAP图绘图软件——亿图图示2D框图

    亿图图示是一款功能强大的综合型图形图表设计应用软件,界面和软件操作是依据国内用户习惯设计的。它包含丰富的图形符号,智能化排版设计,可以实现快速排版;可支持Windows、Mac以及Linux等多端操作系统使用,满足跨平台高效办公。完成的作品还可以导出为图片、Html、PDF、SVG、Word、Excel等格式,能够有效提升使用者的办公和学习效率!亿图图示九折会员兑换码及使用方法请点这里文中LDAP图属于亿图图示的2D框图分类,2D框图可以绘制海量精美、专业的图形图表,如下图:

    展开全文
  • dfs序线段

    2018-08-08 08:21:00
    如果在一棵上,需要你修改一些节点和查询一些节点,如果直接dfs搜的话肯定超时,那用线段结构不是区间啊,怎么用?用dfs序将结构转化为一个区间,就能用线段进行维护了。 dfs序是指:每个节点在dfs深度...

    dfs序+线段树,啥?如果在一棵树上,需要你修改一些节点和查询一些节点,如果直接dfs搜的话肯定超时,那用线段树?树结构不是区间啊,怎么用?用dfs序将树结构转化为一个区间,就能用线段树进行维护了。

    dfs序是指:每个节点在dfs深度优先遍历中的进出栈的时间序列,记录每个点进栈和出栈的时间点,会发现每个点在栈中出现两次

    比如下面这个图的dfs序:

    (转载来的图片,太懒不想画)

    那么这样转化后我们就可以在上面进行线段树了。对于进栈时间点,我们记录为left[ u ],出栈时间点为right[ u ] 。对于这个区间,我们将每个节点标记为 1~len(dfs序长度)

    以这个为区间1~len建线段树,然后那棵树就没用了!,没用了!对于修改一个节点x,就是修改left[x](但你的len是等于n的,或者你如果建的是两个节点都算的,你需要update左右编号),对于查询一个区间,就是查询left[x]~right[x],实际上就是线段树。

    但是我在刚理解时候总会受原来那颗树的影响,实际上,可以这样理解,比如在这个dfs序中你要修改树节点1(原本的值都是1)

      ------------------------------>

    附上一个例题

     POJ 3321

    There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in the tree. Kaka likes apple very much, so he has been carefully nurturing the big apple tree.

    The tree has N forks which are connected by branches. Kaka numbers the forks by 1 to N and the root is always numbered by 1. Apples will grow on the forks and two apple won't grow on the same fork. kaka wants to know how many apples are there in a sub-tree, for his study of the produce ability of the apple tree.

    The trouble is that a new apple may grow on an empty fork some time and kaka may pick an apple from the tree for his dessert. Can you help kaka?

     

     

    Input

    The first line contains an integer N (N ≤ 100,000) , which is the number of the forks in the tree.
    The following N - 1 lines each contain two integers u and v, which means fork u and fork v are connected by a branch.
    The next line contains an integer M (M ≤ 100,000).
    The following M lines each contain a message which is either
    "x" which means the existence of the apple on fork x has been changed. i.e. if there is an apple on the fork, then Kaka pick it; otherwise a new apple has grown on the empty fork.
    or
    "x" which means an inquiry for the number of apples in the sub-tree above the fork x, including the apple (if exists) on the fork x
    Note the tree is full of apples at the beginning

    Output

    For every inquiry, output the correspond answer per line.

    Sample Input

    3
    1 2
    1 3
    3
    Q 1
    C 2
    Q 1
    

    Sample Output

    3
    2
     1 var
     2 left,right,next,head,a,value:array[0..800005]of longint;
     3 n,m,k,x,y,e,tot,s:longint;
     4 i:longint;
     5 ch:char;
     6 procedure add(x,y:int64);
     7  begin
     8   inc(e);a[e]:=y;next[e]:=head[x];head[x]:=e;
     9  end;
    10  procedure dfs(u,m:longint);
    11  var i,v:longint;
    12   begin
    13     inc(tot);
    14     left[u]:=tot;
    15     i:=head[u];
    16     while i>0 do
    17      begin
    18        v:=a[i];
    19        if v<>m then begin dfs(v,u); end;
    20        i:=next[i];
    21      end;
    22 //     inc(tot);
    23    right[u]:=tot;
    24 
    25   end;
    26  procedure build(u,l,r:longint);
    27   var mid:longint;
    28   begin
    29     if l=r then
    30      begin
    31       value[u]:=1;
    32       exit;
    33      end;
    34      mid:=(l+r)>>1;
    35      build(u*2,l,mid);
    36      build(u*2+1,mid+1,r);
    37      value[u]:=value[u*2]+value[u*2+1];
    38   end;
    39   procedure upate(u,id,l,r:longint);//id 为修改点位置
    40    var mid:longint;
    41    begin
    42    if (l>id)or(r<id) then exit;
    43     if  (l=id)and(r=id) then
    44      begin
    45        if value[u]=1 then value[u]:=0 else value[u]:=1;
    46        exit;
    47      end;
    48         mid:=(l+r)>>1;
    49         upate(u*2,id,l,mid);
    50         upate(u*2+1,id,mid+1,r);
    51         value[u]:=value[u*2]+value[u*2+1];
    52    end;
    53    function que(u,l,r,ql,qr:int64):int64;
    54    var mid:longint;
    55    begin
    56     if (ql>r)or(qr<l) then exit(0);
    57       if (ql<=l)and(r<=qr)  then exit(value[u]);
    58       mid:=(l+r)>>1;
    59       exit(que(u*2,l,mid,ql,qr)+que(u*2+1,mid+1,r,ql,qr));
    60     end;
    61 begin
    62  readln(n);
    63  for i:=1 to n-1 do
    64   begin
    65     readln(x,y);
    66     add(x,y);
    67     add(y,x);
    68   end;
    69   dfs(1,1);
    70   build(1,1,tot);
    71   readln(k);
    72   for i:=1 to k do
    73    begin
    74      readln(ch,s);
    75      if ch='Q' then writeln(que(1,1,tot,left[s],right[s]))else
    76        begin 
    77          upate(1,left[s],1,tot); 
    78       //   upate(1,right[s],1,tot);
    79       end;
    80    end;
    81 end.

     

    转载于:https://www.cnblogs.com/brilliant107/p/9440638.html

    展开全文
  • mysql 存储形结构

    2021-01-05 15:04:06
    像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数据,但是遇到像形结构这样有深度的人,就很难驾驭了。  举个栗子:现在有一个要存储一下公司的人员结构,大致层次结构如下:  (个图真...

    像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数据,但是遇到像树形结构这样有深度的人,就很难驾驭了。

      举个栗子:现在有一个要存储一下公司的人员结构,大致层次结构如下:

     

      (画个图真不容易。。)

      那么怎么存储这个结构?并且要获取以下信息:

      1.查询小天的直接上司。

      2.查询老宋管理下的直属员工。

      3.查询小天的所有上司。

      4.查询老王管理的所有员工。

      

    方案一、(Adjacency List)只存储当前节点的父节点信息。

      CREATE TABLE Employees(
      eid int,
      ename VARCHAR(100),
            position VARCHAR(100),
      parent_id int
      )

      记录信息简单粗暴,那么现在存储一下这个结构信息:

      

      好的,现在开始进入回答环节:

    1.查询小天的直接上司:

       SELECT e2.eid,e2.ename FROM employees e1,employees e2 WHERE e1.parent_id=e2.eid AND e1.ename='小天';

      

      2.查询老宋管理下的直属员工:

      SELECT e1.eid,e1.ename FROM employees e1,employees e2 WHERE e1.parent_id=e2.eid AND e2.ename='老宋';

      

      3.查询小天的所有上司。

      这里肯定没法直接查,只能用循环进行循环查询,先查直接上司,再查直接上司的直接上司,依次循环,这样麻烦的事情,还是得先建立一个存储过程:

      睁大眼睛看仔细了,接下来是骚操作环节:

    
     
    CREATE DEFINER=`root`@`localhost` FUNCTION `getSuperiors`(`uid` int) RETURNS varchar(1000) CHARSET gb2312
    BEGIN
        DECLARE superiors VARCHAR(1000) DEFAULT '';
        DECLARE sTemp INTEGER DEFAULT uid;
        DECLARE tmpName VARCHAR(20);
    
        WHILE (sTemp>0) DO
            SELECT parent_id into sTemp FROM employees where eid = sTemp;
            SELECT ename into tmpName FROM employees where eid = sTemp;
            IF(sTemp>0)THEN
                SET superiors = concat(tmpName,',',superiors);
            END IF;
        END WHILE;
            SET superiors = LEFT(superiors,CHARACTER_LENGTH(superiors)-1);
        RETURN superiors;
    END

      这一段存储过程可以查询子节点的所有父节点,来试验一下 

     

      好的,骚操作完成。

    显然,这样。获取子节点的全部父节点的时候很麻烦。。

      4.查询老王管理的所有员工。

      思路如下:先获取所有父节点为老王id的员工id,然后将员工姓名加入结果列表里,在调用一个神奇的查找函数,即可进行神奇的查找:

    
     
    CREATE DEFINER=`root`@`localhost` FUNCTION `getSubordinate`(`uid` int) RETURNS varchar(2000) CHARSET gb2312
    BEGIN   
    DECLARE str varchar(1000);  
    DECLARE cid varchar(100);
    DECLARE result VARCHAR(1000);
    DECLARE tmpName VARCHAR(100);
    SET str = '$';   
    SET cid = CAST(uid as char(10));   
    WHILE cid is not null DO   
      SET str = concat(str, ',', cid);
      SELECT group_concat(eid) INTO cid FROM employees where FIND_IN_SET(parent_id,cid);         
    END WHILE;
      SELECT GROUP_CONCAT(ename) INTO result FROM employees WHERE FIND_IN_SET(parent_id,str);
    RETURN result;   
    END

      看神奇的结果:

     

     

    方案二、 Path Enumeration 路径枚举法,记录下根节点到每个子节点的路径。

      先创建表:

    
     

    CREATE TABLE employees2( eid INT, ename VARCHAR(100), position VARCHAR(100), path VARCHAR(200) )

      然后插入数据:

      现在我们来回答一下之前的问题:

      1.查询小天的直接上司。

      在上一个解决方案中能轻而易举做到的事情,在这个方案中却有些麻烦了,因为需要对path字段进行字符串处理,去掉“/”+自身id才是直接上司的path值。又开始一顿骚操作:

      SELECT e1.eid,e1.ename FROM employees2 e1,employees2 e2 WHERE e2.ename = '小天' AND e1.path = REPLACE(e2.path,CONCAT('/',e2.eid),'');

      好像这个操作还不够sao,2333,结果如下:

      

     

    2.查询老宋管理下的直属员工。

      怎么查管理下的直属员工呢?那就要用模糊查询了:

      SELECT e2.eid,e2.ename FROM employees2 e1,employees2 e2 WHERE e1.ename = '老宋' AND e2.path REGEXP CONCAT(e1.path,'/[0-9]{1,}$');

      这里用了正则匹配,匹配所有path符合规则的记录,结果如下:

      

      3.查询小天的所有上司。

      SELECT e1.eid,e1.ename FROM employees2 e1,employees2 e2 WHERE e2.ename='小天' AND e2.path like concat(e1.path,'/%');

      这里就能体现这种存储结构的优势了。不看效率的话,还是很方便的。

      

      4.查询老王管理的所有员工。

      SELECT e2.eid,e2.ename FROM employees2 e1,employees2 e2 WHERE e1.ename='老王' AND e2.path like concat(e1.path,'/%');

      看吧,查起来就so easy了。

      

      不用像之前那样写一大段存储过程了,简单粗暴。

    方案三、Closure Table 终结表法,保存每个节点与其各个子节点的关系,也就是记录以其为根节点的全部子节点信息。直接上代码就明白了:

      这里要创建两个表,一个表用来存储信息:

    
     

    CREATE TABLE employees3( eid INT, ename VARCHAR(100), position VARCHAR(100) )

      一个表用来存储关系:

    
     

    CREATE TABLE emp_relations( root_id INT, depth INT, is_leaf TINYINT(1), node_id INT )

      这里的root_id用来存放以其为根节点的路径,node_id表示节点处的eid,depth表示根节点到该节点的深度,is_leaf表示该节点是否为叶子节点。

      接下来插入数据:

      可以看出,这个关系表有点大,我们先来看看查询效果如何:

    1.查询小天的直接上司。

      这里只需要在关系表中找到node_id为小天id,depth为1的根节点id即可。

    
     

    SELECT e2.ename BOSS FROM employees3 e1,employees3 e2,emp_relations rel WHERE e1.ename='小天' AND rel.node_id=e1.eid AND rel.depth=1 AND e2.eid=rel.root_id

      查询结果如下:

      

      2.查询老宋管理下的直属员工。

      思路差不多,只要查询root_id为老宋eid且深度为1的node_id即为其直接下属员工id

    
     

    SELECT e1.eid,e1.ename 直接下属 FROM employees3 e1,employees3 e2,emp_relations rel WHERE e2.ename='老宋' AND rel.root_id=e2.eid AND rel.depth=1 AND e1.eid=rel.node_id

      查询结果如下:

      

      3.查询小天的所有上司。

      只要在关系表中找到node_id为小天eid且depth大于0的root_id即可

    
     

    SELECT e2.eid,e2.ename 上司 FROM employees3 e1,employees3 e2,emp_relations rel WHERE e1.ename='小天' AND rel.node_id=e1.eid AND rel.depth>0 AND e2.eid=rel.root_id

      查询结果如下:

      

      4.查询老王管理的所有员工。

      只要在关系表中查找root_id为老王eid,depth大于0的node_id即可

    
     

    SELECT e1.eid,e1.ename 下属 FROM employees3 e1,employees3 e2,emp_relations rel WHERE e2.ename='老王' AND rel.root_id=e2.eid AND rel.depth>0 AND e1.eid=rel.node_id

      查询结果如下:

     

      我们可以发现,这四个查询的复杂程度是一样的,这就是这种存储方式的优点,而且可以让另一张表只存储跟节点紧密相关的信息,看起来更简洁。但缺点也显而易见,关系表会很庞大,当层次很深,结构很庞大的时候,关系表数据的增长会越来越快,相当于用空间效率来换取了查找上的时间效率。

      至此,树形结构在数据库中存储的三种方式就介绍完了,接下来对比一下三种方法:

      方案一:Adjacency List

      优点:只存储上级id,存储数据少,结构类似于单链表,在查询相邻节点的时候很方便。添加删除节点都比较简单。

      缺点:查询多级结构的时候会显得力不从心。

      适用场合:对多级查询需求不大的场景比较适用。

      方案二:Path Enumeration

      优点:查询多级结构的时候比较方便。查询相邻节点时也比较ok。增加或者删除节点的时候比较简单。

      缺点:需要存储的path值可能会很大,甚至超过设置的最大值范围,理论上无法无限扩张。

      适用场合:结构相对简单的场景比较适合。

      方案三:Closure Table

      优点:在查询树形结构的任意关系时都很方便。

      缺点:需要存储的数据量比较多,索引表需要的空间比较大,增加和删除节点相对麻烦。

      适用场合:纵向结构不是很深,增删操作不频繁的场景比较适用。

     

     

    展开全文
  • 个图真不容易。。) 那么怎么存储这个结构?并且要获取以下信息: 1.查询小天的直接上司。 2.查询老宋管理下的直属员工。 3.查询小天的所有上司。 4.查询老王管理的所有员工。 方案一、(Adjacenc
  • 介绍 李超树用以解决一种问题:向平面上插入若干条直线(或线段),查询与直线x=a相交线段的交点坐标y的最大值, ...这样查询只需像线段那样查就是了, 然后怎么插入线段呢?(直线就是 -inf 到 i
  • spoj-cot2(上莫队)

    2018-07-18 16:59:29
    题解:因为是查询,我们可以在上做下分块然后莫队,至于怎么分看你的技巧,我是先去学了一下联盟王国的上分块据说那个操作的分块查询一块是sq~3sq的时间复杂度而且还是比较正统,所以我选择用那个分块,...
  • 题意:题意是有L个单位长的画板,T种颜色,O个操作。...这题区间更新很简单但是查询会发现挺麻烦的,主要是不知道怎么判断一个区间到底有几个不同的数。 由于这道题的T比较小才30,1<<30不超过int型于是可以...
  • 今天来看看一个比较头疼的问题,如何在数据库中存储形结构呢?  像mysql这样的关系型数据库,比较适合存储一些类似表格的... (个图真不容易。。)  那么怎么存储这个结构?并且要获取以下信息:  1.查询小...
  • 得到这个ID后,在后台数据库进行一些查询得到数据. 我将这些数据存在store里. 目前的困难是我只能在store.on('load', function(){..})这里做一些动作. 假如,我监听了load事件,用这个回调函数了右边的panel....
  • 算法导论(part1)

    热门讨论 2010-09-09 22:51:05
    我们发现,与对递归式进行迭代相比,出递归后出错的可能性小了。但是,我们也指出了递归的最佳用途,即利用它来产生猜测,再利用替代方法对猜测进行验证。 ·快速排序(第7.1节)中用到的划分方法与期望线性...
  • 算法导论(part2)

    2010-09-09 22:54:12
    我们发现,与对递归式进行迭代相比,出递归后出错的可能性小了。但是,我们也指出了递归的最佳用途,即利用它来产生猜测,再利用替代方法对猜测进行验证。 ·快速排序(第7.1节)中用到的划分方法与期望线性...
  • jquery的treeview 在显示大层次是会卡死浏览器,我结合http://www.cnblogs.com/xuanye/archive/2009/10/26/1590250.html的改进版做的这个改进版(因为很多人没读他的源码,不知道怎么请求节点的处理页面),把asp...
  • MySQL的索引是怎么加速查询的? 数据库索引 MySql主从复制,从原理到实践! MySQL查询缓存 MySQL 的 InnoDB 存储引擎是怎么设计的? 数据库基础知识 原来MySQL面试还会问这些(undo log) 分库分表方案 MySQL安全方案 ...
  • autoJS1688示例.zip

    2020-05-06 14:37:55
    listView勾选框丢了怎么解决.js list隔行变色.js long.js long2.js ls_socket.js lunar.js LZ动作.js main(1)(1).js main(1)(2).js main(1)(3).js main(1)(4).js main(1).js main(10).js Main(11).js ...
  • (2)void creatTree(CTree &T)//将目录系统形结构,然后的层序建立目录系统 { int i,j,n; printf("开始建立级数为4的目录系统:\n"); printf("目录的个数为:"); std::cin>>T.n; T.r=0; //主...
  • golang面试官:for select时,如果通道已经关闭会怎么样?如果只有一个case呢? 进阶 包管理 学go mod就够了! 优化 golang面试题:怎么避免内存逃逸? golang面试题:简单聊聊内存逃逸? 给大家丢脸了,...
  •  负责显示指定的商品详细信息,包括图片、名字、价格、数量等,当一个商品被点击之后,通过返回的id查询到这个数据集合,跳转到商品详细信息的页面,商品发布者可以在下方查看留言,并且与有意者打成交易意向。...
  • 二十三种设计模式【PDF版】

    热门讨论 2011-05-30 14:13:49
    中国画,也有套路,应该怎么画 法?有几种画法?艺术大家通常是创造出自己的套路,比如明末清初,水墨画法开始成熟,这时画就不用勾勒这个模式了,而是一笔 下去,浓淡几个叶子,待毛笔的水墨要干枯时,画一下树干,这样,一...
  • VC++ 专家指导.doc

    2012-07-14 09:06:49
    (65) 如何查询和设置系统参数 59 (66) 如何确定当前屏幕分辨率 60 (67) 如何使用一个预定义的Windows光标 60 (68) 如何检索原先的Task Manager应用程序使用的任务列表 61 (70) 在哪儿创建临文件 63 (71)...
  • 疯狂JAVA讲义

    2014-10-17 13:35:01
    学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    用例只描述参与者和系统在交互过程中做些什么,并不描述怎么做。 用例图 关联关系 用例图 泛化关系 用例图 泛化关系 用例图 用例图 用例图 用例用于什么情况? 不知道什么情况不用用例 如果没有用到用例,...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

查询树怎么画