web前端里面什么是直接子集

web前端里面什么是直接子集,第1张

直接子集表示 父节点的儿子节点,不包含孙子节点以及孙子以下的节点;可能有些抽象,看代码吧

> 表示选择所有的直接子集,你会发现直接子集的 h1 字体颜色是绿色,而被 div 包裹后的 h1 不是绿色

<style>

Parent>h1 {

color: green;

}

</style>

<div class="Parent">

<h1>我是直接子集我想说:心中无女人,编码自然神</h1>

<h1>我是直接子集我想说:忘掉心上人,搞钱是永恒</h1>

<div>

<h1>我不是直接子集,请问你你有车有房有存款吗</h1>

</div>

</div>

LZ你好

这个rpad是右边填充的意思,但是填充的是

但这个RPAD( ' ', 2(LEVEL-1), '-' )意思是在空格右侧填充2(LEVEL-1)个长度的横杠,这个你理解的好像没问题

level开始是从start with开始算起的,你这里就是START WITH UPPERDEPID IS NULL,因为根据父ID,你这个为空的就是最顶层,这个你也可以改成

START WITH UPPERDEPID =0 看下效果

树形结构的意思,我简单给你说一下

家里有爷爷,爷爷有两个儿子,每个儿子又有两个儿子

那么画图出来就是这样

CONNECT_BY_ROOT 从你start with的开始算起,最顶端结点就是总经办,这个你看下查询结果就能看出来

CONNECT_BY_ISLEAF 如果下边还有子节点,就为0,无子节点了就是1,按照我给你发的图,也就是四个孙子下边都没节点了,他们最后都显示1,上边爷爷和儿子都显示0

level,就是爷爷是最顶端,为1,依次类推

给你举例子的图画的难看了点哈,见笑了

晕,你补充了好多啊,你先看吧,哪不懂你再问,我再给你解释

虚实篇第六

如何创造战场主动权,在作战中如何影响敌人?(致人而不致于人)

“虚实”和“奇正”一样都是相对的概念,“虚实”理论就是在战役层面,对“奇正”战略思想的实践。“虚”的本意是大山丘,大就会显得空旷,可以把“虚”引申为“空”。“实”的本意是富足,可以引申为有依托。曹 *** 对虚实的解释是:“能虚实彼己也”。要能够控制敌人的行动,而不能被敌人限制了行动自由。怎么控制敌人的行动?通过好处去诱惑牵着敌人走,或者阻断其他的选择,赶着敌人走。当敌人按照己方的预设路线前进,那己方就可以从容的给敌方准备预设战场,达到以逸待劳的效果。不是自己跑的比敌人快,而是自己选一个地方,然后让敌人累死累活的跑过来,自动的进入攻击范围。保持己方的行动自由,限制敌方的行动自由,是以逸待劳的前提条件,能做到这一点才叫做:致人而不致于人。有了行动自由,就有了战场主动权,很多战术手段才有了发挥的余地,只要限制了敌人的行动自由,即使敌人拥有再多的优势,也会被一点一点的消耗掉,因为在同一场战斗中,被限制行动自由的一方,是在被迫接受战斗,战斗对他们来说已经不再是严密计划的结果,而是对外部打击的应付,他们也不再有长远的计划,而是要集中精力应对近在眼前的困难,他们的资源将会在这种疲于应付的行动中被消耗殆尽。“谁能夺取主动权,谁就能明确的了解自己的行动和目标,谁就能率主力到达应实施突击的地方。”——约米尼《兵法概论》。“你可能被迫退却,你可能被击败,但是你能左右敌方的行动,而不听信敌人摆布,你就仍然在某种程度上占有优势。”——恩格斯。

争夺主动权不仅要靠自己努力,还需要敌人配合才行。如果战役拉开之后,敌人就是不跟着你的节拍起舞,就是不受你的影响,你想影响敌人的行动,敌人就是一动不动,这个时候该怎么办?最简单有效的方法:捅他一刀,逼他跳起来。通过在关键点施加影响,迫使敌人做出反应,自己只需要很少的投入,剩下的事情对方会自动完成。既能保证自己的“实”,又能造成敌人的“虚”。说白了就是“杠杆效应”,杠杆效应最重要的是找到关键的支点,这个关键的支点,就是敌人绝对不能舍弃的东西,找到这个点,然后狠狠的打击它。正所谓:攻敌所必救,强迫对方做出应对。那是不是说只要足够关键,就可以当作撬动战局的支点呢?就可以去进攻呢?也不是,能作为支点的东西必须同时具备两个特点:一是对敌人足够重要。二是它必须是敌人相对虚弱的部分。也就是说:攻敌所必救,但是也必须避实击虚,否则就变成了硬碰硬的决战了。一般来说,敌人会对自己的关键节点进行更多的保护,防守也最为严密。孙子的意思是要“攻敌所不守也”。只有非常关键,但是力量又相对薄弱的部位受到攻击,才能触发敌人的反应,然后强迫敌人进行运动,强迫敌人跟随自己的节奏,只要敌人动起来,原有的布局就会发生变化,从旧状态到新状态的转换过程,是一支军队最脆弱的时候,在此期间就有了创造战机的机会。典型案例:围魏救赵。无论军队的规模有多大,对统帅来说,兵力总是有限的,孙子追求的是通过绝对优势的兵力发动快速的进攻,所谓:兵之所加,如以碫投卵者。前面所有调动敌人的行动,所有的“致人而不致于人”,都是为了到最后能制造出,以多打少以强打弱的局面。孙子认为从战役的角度来看,分散敌人兵力的最好办法,就是迫使敌人进入防御状态。怎么样使敌人进入防御状态,自己分散兵力?这就要求己方部队必须进入机动作战,只有当敌人搞不清楚我方的进攻方向,但是,有确确实实感受被攻击的危险,那敌人才会分散兵力,对各种关键部位进行保护,而要做到这些就需要对敌人的情况进行充分的掌握,就需要进行战役侦查,要通过试探性攻击,测试敌人的反应,掌握敌人的特点。什么是“虚”?什么是“实”?没有绝对的标准,只有相对的概念。这个相对不仅是“虚实”的相对性,也是“敌我”的相对性,敌人的情况在变化的同时,自己的情况也在变化,你要避实就虚,敌人也会避实就虚,这该怎么办?你要攻敌所必救,敌人也会攻敌所必救,当你的重要据点被敌人攻击,那怎么做才能不上敌人的当?对于战术性的问题,孙子给出的答案是:需要军队统帅根据具体的情况去判断,判断正确的就可以说是用兵如神。

《孙子兵法》所提出的都是一些军事工作的原则,重点是原则,至于这些原则在战术层面的应用,至于具体的仗该怎么打?兵该怎么派?这个是指挥者的责任。

军争篇第七

“争”的本意是对拉,两只手像拔河一样,同时拉扯一个东西。曹 *** 的解释是:两军争胜。《孙子兵法》在内容上存在一个层层递进的关系,大体上是先讲“战略”,再讲“战术”,先展开“战役”问题,再解决“战斗”问题。孙子在《虚实》篇解释了如何争夺“战役”主动权,在本篇开始解释如何争夺“战斗”主动权,也是从本篇开始,《孙子兵法》的内容过渡到了战斗和战术层面。

《军争》篇的中心思想是:如何保证军队在开进和接敌的过程中争夺主动权,以及需要注意的战术细节。在实际的作战中,军队是按照“编制”来投入战斗的,战斗的基本单位从来都不是个人而是“团队”,这些团队如何进入战场?谁先谁后?如何选择攻击的位置和时间?这些就是指挥官们要 *** 心的战术问题。军队的“行军”和“作战”是两个概念,一支军队从行军状态转换成战斗状态,需要一个过程,本篇要讲的就是从准备进入到战场到战斗开始,这个时间段要注意的问题,

作战最困难的地方就在于军争,也就是战斗指挥。而战斗指挥之所以困难,是因为要同时完成两项任务:“以迂为直和以患为利”。隐蔽行军抢占预定战场的有利位置,在这个过程中,还得克服不利的条件,争取有利的态势,看上去好像就是把“致人而不致于人”的思想,运用到了具体的战斗中而已,为什么孙子认为要做到这些最困难?这就要来看看战斗指挥和战役指挥的区别了,物理学中有一种现象:质量越大的物体运动的规律越简单,质量越小的物体运动的规律越复杂,这是因为物体的质量越小,能影响它的外部因素就越多,而影响因素越多,它的运动规律就会呈现出越多的随机性。从比萨斜塔上往下扔一个铁球,那么这个铁球落地的位置几乎百分之百的就在塔的周围,但是如果从相同的位置扔一片羽毛,那么,这片羽毛要落到什么地方就不太好确定了。对军事工作来说,这个现象也同样存在,要策划一场战争,长期的季节变化、山川大河这些因素不会被忽略,而某一场不可预测的降雨、敌人国土上无名的小山包、山里的树、河上的桥等等,这些对“战斗”来说至关生死的东西,一般来说,“战役”计划不会考虑这些,对具体的战斗而言,不要说降雨了,就是突然的一阵风,也能左右战斗的结果。典型案例:《靖难之役》。“战役”的展开有一个相对缓慢的过程,无论情况多紧急,战役指挥多少都还有思考的时间,但是“战斗”指挥则完全不同,敌人近在眼前,不赶紧拿主意,大家可能分分钟完蛋,而且,战斗过程所受到的干扰因素最多、不确定的困难也最多,所以对战斗指挥的“实效性”要求就特别的高,战斗指挥相当于小本经营,任何微小的变化都值得注意,任何微小的优势都得争取。怎么争取?孙子以不同的行军速度可能给军队造成的影响为切入点,来说明争夺战斗主动权原则和方法,如果一昼夜强行军100里,军队就会因为整个建制被打散而面临全军覆没的危险,如果一口气强行军50里,就会损失一半的战斗力,强行军30里,也可能损失三分之一的战斗力,强行军这么危险,为什么还要干?之所以做出非常规的行动,就是为了争利。这里的“利”,涵盖的范围比较广,“利”可以是山川河流,也可以是城镇隘口,总之,必须在战斗开始前抢先占据有利的位置,多一点优势就多一点胜利的可能性。同样的一公里,无论谁来走距离都不会变化,但是因为速度的关系,每个人需要消耗的时间会不同,所以一支军队要想跨越空间上的障碍,在时间上取得优势,就必须提高行动的速度,也就是以时间换空间。孙子强调通过间接路线,用迂回的方式取得战斗的主动权才是军争之法,而速度就是以迂为直的基本条件。隐蔽行军路线,秘密地向战场关键节点前进,通过分兵掩盖真实的攻击意图,这些是战斗指挥的基本原则,在这些原则之下,无论是不动如山还是动如雷霆,都只是根据不同情况而随机选择的战术手段。

孙子在本篇讲了三条战术原则、用众之法、治气治变和八个小心。“用众之法”实际谈的就是指挥通信的原则。为什么军队要有编制呢?为什么要设立旗帜金鼓?目的只有一个,就是为了统一指挥。在军事家们看来,个人的勇气和战斗力并不重要,军队在统一的命令下能有什么样的表现,才是最重要的,人不可能一直保持精神亢奋,也不可能一直信心满满,个人的精神总是有起有伏的,精神如此,体力也是如此,而且人的精神状态的变化曲线和体力状态的变化曲线,一般大体上是重合的,也就是说,没精神了就会觉得累,累了就会觉得没精神,孙子认为不要去硬碰硬,要选择敌人体力和精神最衰弱的时候发动进攻。引申出来的意思就是,既然可以这样进攻敌人,那作为指挥官,也要避免给敌人创造这样的机会,孙子一直在教别人如何进攻,在这里,他首次开列了一张禁止进攻的清单,一共是八个:占据高处的、背靠高处的、假装逃跑的、精锐的、担任诱饵的、向本土撤退的、已经被围困的和陷入绝境的,孙子认为对于以上敌人应该谨慎小心限制进攻,因为这些敌人所处的位置和他们的情况都比较特殊,前五个属于已经有了准备,后三个是敌人的精神状态可能会让他们发挥出超越平均水平的战斗力,从而导致意外情况的发生,所以应该和他们保持安全距离,孙子的一贯思路就是柿子专挑软的捏,而这八个是硬柿子,或者可能是硬柿子,所以应该谨慎对待。以上这三条都只是战术原则,重点是“原则”,具体情况如何要看指挥官的现场判断,这也是为什么,孙子认为战斗指挥最不好干的原因之一,没办法要 *** 心的破事太多。

Oracle树查询的最重要的就是select start with connect by prior 语法了 依托于该语法 我们可以将一个表形结构的中以树的顺序列出来 在下面列述了Oracle中树型查询的常用查询方式以及经常使用的与树查询相关的Oracle特性函数等 在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等

以我做过的一个项目中的表为例 表结构如下

Sql代码

CREATE TABLE FLFL

(

ID      NUMBER                                NOT NULL

MC      NVARCHAR ( )

FLJB    NUMBER

SJFLID  NUMBER

)

FLJB是作为树的级别 在很多查询中可以加快SQL的查询效率 在下面演示的功能基本上不使用这个关键字

SJFLID存储的是上级ID 如果是顶级父节点 该SJFLID为null(得补充一句 当初的确是这样设计的 不过现在知道 表中最好别有null记录 这会引起全文扫描 建议改成 代替)

我们从最基本的 *** 作 逐步列出树查询中常见的 *** 作 所以查询出来的节点以家族中的辈份作比方

查找树中的所有顶级父节点(辈份最长的人) 假设这个树是个目录结构 那么第一个 *** 作总是找出所有的顶级节点 再根据该节点找到其下属节点

Sql代码

SELECT FROM flfl WHERE sjflid IS NULL;

这是个引子 没用到树型查询

查找一个节点的直属子节点(所有儿子) 如果查找的是直属子类节点 也是不用用到树型查询的

Sql代码

SELECT FROM flfl WHERE sjflid = ;

这个可以找到ID为 的直属子类节点

查找一个节点的所有 直属子节点(所有后代)

Sql代码

SELECT FROM flfl START WITH ID = CONNECT BY sjflid = PRIOR ID;

这个查找的是ID为 的节点下的所有直属子类节点 包括子辈的和孙子辈的所有直属节点

查找一个节点的直属父节点(父亲) 如果查找的是节点的直属父节点 也是不用用到树型查询的

Sql代码

SELECT b FROM flfl a JOIN flfl b ON a sjflid = b ID WHERE a ID = ;

这个找到的是ID为 的节点的直属父节点 要用到同一张表的关联了

查找一个节点的所有直属父节点(祖宗)

Sql代码

SELECT FROM flfl START WITH ID = CONNECT BY PRIOR sjflid = ID;

这里查找的就是ID为 的所有直属父节点 打个比方就是找到一个人的父亲 祖父等 但是值得注意的是这个查询出来的结果的顺序是先列出子类节点再列出父类节点 姑且认为是个倒序吧

上面列出两个树型查询方式 第 条语句和第 条语句 这两条语句之间的区别在于prior关键字的位置不同 所以决定了查询的方式不同 当sjflid = PRIOR ID时 数据库会根据当前的ID迭代出sjflid与该ID相同的记录 所以查询的结果是迭代出了所有的子类记录 而PRIOR ID = sjflid时 数据库会跟据当前的sjflid来迭代出与当前的sjflid相同的id的记录 所以查询出来的结果就是所有的父类结果

以下是一系列针对树结构的更深层次的查询 这里的查询不一定是最优的查询方式 或许只是其中的一种实现而已

查询一个节点的兄弟节点(亲兄弟)

Sql代码

SELECT a

FROM flfl a

WHERE EXISTS (SELECT

FROM flfl b

WHERE a sjflid = b sjflid AND b ID = );

这里查询的就是与ID为 的节点同属一个父节点的节点了 就好比亲兄弟了

查询与一个节点同级的节点(族兄弟) 如果在表中设置了级别的字段 上表中的FLJB 那么在做这类查询时会很轻松 同一级别的就是与那个节点同级的 在这里列出不使用该字段时的实现!

Sql代码

WITH tmp AS

(SELECT     a LEVEL lev

FROM flfl a

START WITH a sjflid IS NULL

CONNECT BY a sjflid = PRIOR a ID)

SELECT

FROM tmp

WHERE lev = (SELECT lev

FROM tmp

WHERE ID = )

这里使用两个技巧 一个是使用了LEVEL来标识每个节点在表中的级别 还有就是使用with语法模拟出了一张带有级别的临时表

查询一个节点的父节点的的兄弟节点(伯父与叔父)

Sql代码

WITH tmp AS

(SELECT     flfl LEVEL lev

FROM flfl

START WITH sjflid IS NULL

CONNECT BY sjflid = PRIOR ID)

SELECT b

FROM tmp b

(SELECT

FROM tmp

WHERE ID = AND lev = ) a

WHERE b lev =

UNION ALL

SELECT

FROM tmp

WHERE sjflid = (SELECT DISTINCT x ID

FROM tmp x

tmp y

(SELECT

FROM tmp

WHERE ID = AND lev > ) z

WHERE y ID = z sjflid AND x ID = y sjflid);

这里查询分成以下几步 首先 将第 个一样 将全表都使用临时表加上级别 其次 根据级别来判断有几种类型 以上文中举的例子来说 有三种情况 ( )当前节点为顶级节点 即查询出来的lev值为 那么它没有上级节点 不予考虑 ( )当前节点为 级节点 查询出来的lev值为 那么就只要保证lev级别为 的就是其上级节点的兄弟节点 ( )其它情况就是 以及以上级别 那么就要选查询出来其上级的上级节点(祖父) 再来判断祖父的下级节点都是属于该节点的上级节点的兄弟节点 最后 就是使用UNION将查询出来的结果进行结合起来 形成结果集

查询一个节点的父节点的同级节点(族叔)

这个其实跟第 种情况是相同的

Sql代码

WITH tmp AS

(SELECT     a LEVEL lev

FROM flfl a

START WITH a sjflid IS NULL

CONNECT BY a sjflid = PRIOR a ID)

SELECT

FROM tmp

WHERE lev = (SELECT lev

FROM tmp

WHERE ID = )

只需要做个级别判断就成了

基本上 常见的查询在里面了 不常见的也有部分了 其中 查询的内容都是节点的基本信息 都是数据表中的基本字段 但是在树查询中还有些特殊需求 是对查询数据进行了处理的 常见的包括列出树路径等

补充一个概念 对于数据库来说 根节点并不一定是在数据库中设计的顶级节点 对于数据库来说 根节点就是start with开始的地方

下面列出的是一些与树相关的特殊需求

名称要列出名称全部路径

这里常见的有两种情况 一种是是从顶级列出 直到当前节点的名称(或者其它属性) 一种是从当前节点列出 直到顶级节点的名称(或其它属性) 举地址为例 国内的习惯是从省开始 到市 到县 到居委会的 而国外的习惯正好相反(老师说的 还没接过国外的邮件 谁能寄个瞅瞅 )

从顶部开始

Sql代码

SELECT     SYS_CONNECT_BY_PATH (mc / )

FROM flfl

WHERE ID =

START WITH sjflid IS NULL

CONNECT BY sjflid = PRIOR ID;

从当前节点开始

Sql代码

SELECT     SYS_CONNECT_BY_PATH (mc / )

FROM flfl

START WITH ID =

CONNECT BY PRIOR sjflid = ID;

在这里我又不得不放个牢骚了 oracle只提供了一个sys_connect_by_path函数 却忘了字符串的连接的顺序 在上面的例子中 第一个SQL是从根节点开始遍历 而第二个SQL是直接找到当前节点 从效率上来说已经是千差万别 更关键的是第一个SQL只能选择一个节点 而第二个SQL却是遍历出了一颗树来 再次PS一下

sys_connect_by_path函数就是从start with开始的地方开始遍历 并记下其遍历到的节点 start with开始的地方被视为根节点 将遍历到的路径根据函数中的分隔符 组成一个新的字符串 这个功能还是很强大的

列出当前节点的根节点

在前面说过 根节点就是start with开始的地方

Sql代码

SELECT     CONNECT_BY_ROOT mc flfl

FROM flfl

START WITH ID =

CONNECT BY PRIOR sjflid = ID;

connect_by_root函数用来列的前面 记录的是当前节点的根节点的内容

列出当前节点是否为叶子

这个比较常见 尤其在动态目录中 在查出的内容是否还有下级节点时 这个函数是很适用的

Sql代码

SELECT     CONNECT_BY_ISLEAF flfl

FROM flfl

START WITH sjflid IS NULL

CONNECT BY sjflid = PRIOR ID;

connect_by_isleaf函数用来判断当前节点是否包含下级节点 如果包含的话 说明不是叶子节点 这里返回 反之 如果不包含下级节点 这里返回

lishixinzhi/Article/program/Oracle/201311/11193

依赖注入是针对 父级组件与子孙级组件之间的数据传递 数据的传递,或者有很多后代组件的情况,只针对直系后代使用,实现组件之间的数据共享。

需要使用到vue提供的 provide以及inject 方法

其中,provide用来提供传递的数据,inject用来接收数据

子组件的如果也想要使用爷爷组件的数据, *** 作方法是一样的,也是通过inject进行接收并且return,然后直接使用即可。

总结:

1父传子孙数据:provide

2子孙得到数据:inject

这里还是使用provide和inject来进行数据的传递,但是这次是通过函数的参数进行传值。

1导入provide和inject到父组件中

2通过provide声明函数,并要有形参用来接收孙组件传来的实参

总结:

1孙子组件传递数据给爷爷组件,需要通过provide一个函数的方式实现

2爷爷组件传递一个函数,后续通过函数的形参获取数据

孙子组件获取并调用该函数传递数据

1父子传参:

爹给儿子传递数据,通过 自定义属性 ,给组件props属性,然后绑定在父组件的子组件上

儿子给爹传递数据,通过 自定义事件

2爷爷孙子传参:

孙子给爷爷传值是 函数 ,通过provide一个函数,在孙子组件inject注入,然后通过参数传递想要传递的值

爷爷给子孙传递 数据 ,通过provide一个变量和值,在孙子组件inject注入,孙子组件通过inject接收数据即可。

3后代给前辈 传数据都需要 函数传参

4自定义属性、事件(函数)一般都绑定在父组件中,也就是provide一般出现在父组件,不论是提供给孙组件的数据还是接收孙组件数据的函数

以上就是关于web前端里面什么是直接子集全部的内容,包括:web前端里面什么是直接子集、ORACLE 伪列(level)、rpad/lpad、connectby、父节点子节点问题送分系列(一)、第五篇:《孙子兵法6—7》等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9553922.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存