精华内容
下载资源
问答
  • 三个时间点代表了受试者内因素“时间”的三个水平,因变量是CRP的浓度,单位是mg/L。部分数据如下:   二、对问题的分析 使用 One-way Repeated Measures Anova 进行分析时,需要考虑6个假设。  ...

    1, https://statistics.laerd.com/statistical-guides/repeated-measures-anova-statistical-guide.php

    是什么东西?实验数据满足什么条件时用?

    Repeated measures ANOVA is the equivalent of the one-way ANOVA, but for related, not independent groups, and is the extension of thedependent t-test. A repeated measures ANOVA is also referred to as a within-subjects ANOVA or ANOVA for correlated samples. All these names imply the nature of the repeated measures ANOVA, that of a test to detect any overall differences between related means. There are many complex designs that can make use of repeated measures, but throughout this guide, we will be referring to the most simple case, that of a one-way repeated measures ANOVA. This particular test requires one independent variable and one dependent variable. The dependent variable needs to be continuous (interval or ratio) and the independent variable categorical (either nominal or ordinal).

    We can analyse data using a repeated measures ANOVA for two types of study design. Studies that investigate either (1) changes in mean scores over three or more time points, or (2) differences in mean scores under three or more different conditions. 

     

    SPSS Repeated Measures ANOVA Tutorial

    SPSS Repeated Measures ANOVA II

    在spss中怎么分析数据。

    之后两两分析用, paired samples t-tests 或 Bonferroni 或

     

    3,详细讲解的博文

    转载于: SPSS:单因素重复测量方差分析

    一、问题与数据

     

    研究者招募了10名研究对象,研究对象进行了6个月的锻炼干预。CRP浓度共测量了3次:干预前的CRP浓度——crp_pre;干预中(3个月)——crp_mid;干预后(6个月)——crp_post。这三个时间点代表了受试者内因素“时间”的三个水平,因变量是CRP的浓度,单位是mg/L。部分数据如下:

     

    二、对问题的分析

    使用One-way Repeated Measures Anova进行分析时,需要考虑6个假设。 

     

    对研究设计的假设:

     

    假设1:因变量唯一,且为连续变量;

     

    假设2:受试者内因素(Within-Subject Factor)有3个或以上的水平。

     

    注:在重复测量的方差分析模型中,对同一个体相同变量的不同次观测结果被视为一组,用于区分重复测量次数的变量被称为受试者内因素,受试者内因素实际上是自变量。

     

    对数据的假设:

     

    假设3:受试者内因素的各个水平,因变量没有极端异常值;

     

    假设4:受试者内因素的各个水平,因变量需服从近似正态分布;

     

    假设5:对于受试者内因素的各个水平组合而言,因变量的方差协方差矩阵相等,也称为球形假设。

    三、思维导图

    (点击图片可查看大图)

    四、对假设的判断

    在分析时,如何考虑和处理这5个假设呢?

     

    由于假设1-2都是对研究设计的假设,需要研究者根据研究设计进行判断,所以我们主要对数据的假设3-5进行检验。

     

    (一) 检验假设3和假设4的SPSS操作

     

    1. 在主菜单点击Analyze > Descriptive Statistics > Explore...,如下图:

     

     

    2. 出现Explore对话框,将crp_pre、crp_mid和crp_post选入Dependent List,点击Plots;

     

     

    3. 出现下图Plots对话框;

     

     

    4. 在Boxplots下选择Dependents together,去掉Descriptive下Stem-和-leaf,选择Normality plots with tests,点击Continue;

     

     

    5. 回到Explore主对话框,在Display下方选择Plots,点击OK。

     

     

    (二) 检验假设3:受试者内因素的各个水平,因变量没有极端异常值

     

    1. 在输出的结果中,如下图所示,在箱式图中,距离箱子边缘超过1.5倍箱身长度的数据点定义为异常值,在本例中,未发现异常值

     

     

    2. 为了方便进一步的理解,下面图示是有异常值的箱式图,上下边缘超过1.5倍箱式长度为异常值,如下图所示,用“圆圈”表示,右上标为异常值在数据表中所对应的行数;将距离箱子边缘超过3倍箱身长度的数据点定义为极端值(极端异常值),用“*”表示,右上标代表异常值在数据表中所对应的行数。因此,在箱式图中查看异常值时,可以直接看“圆圈”或“*”。

     

     

    3. 异常值的处理

     

    导致数据中存在异常值的原因有3种:

     

    (1) 数据录入错误:首先应该考虑异常值是否由于数据录入错误所致。如果是,用正确值进行替换并重新进行检验;

     

    (2) 测量误差:如果不是由于数据录入错误,接下来考虑是否因为测量误差导致(如仪器故障或超过量程),测量误差往往不能修正,需要把测量错误的数据删除;

     

    (3) 真实存在的异常值:如果以上两种原因都不是,那最有可能是一种真实的异常数据。这种异常值不好处理,但也没有理由将其当作无效值看待。目前它的处理方法比较有争议,尚没有一种特别推荐的方法。

     

    需要注意的是,如果存在多个异常值,应先把最极端的异常值去掉后,重新检查异常值情况。这是因为有时最极端异常值去掉后,其他异常值可能会回归正常。

     

    异常值的处理方法分为2种:

     

    (1) 保留异常值:

    • 采用非参数Friedman test检验;

    • 用非最近端的值代替极端异常值(如用第二大的值代替极端异常值);

    • 因变量转换成其他形式;

    • 将异常值纳入分析,并坚信其对结果不会产生实质影响。

     

    (2) 剔除异常值:

     

    直接删除异常值很简单,但却是没有办法的办法。当我们需要删掉异常值时,应报告异常值大小及其对结果的影响,最好分别报告删除异常值前后的结果。而且,应该考虑有异常值的个体是否符合研究的纳入标准。如果其不属于合格的研究对象,应将其剔除,否则会影响结果的推论。

     

    (更多阅读:怎么判别我的数据中存在特异值?教你几招!

     

    (三) 检验假设4:受试者内因素的各个水平,因变量需服从近似正态分布

     

    1. 对于样本量较小(<>P<>P均大于0.05,说明受试者内因素的三个水平crp_pre、crp_mid和crp_post均服从正态分布

     

     

    2. 如果数据不服从正态分布,可以有如下4种方法进行处理:

     

    (1) 数据转换:对转换后呈正态分布的数据进行单因素方差分析。当各组因变量的分布形状相同时,正态转换才有可能成功。对于一些常见的分布,有特定的转换形式,但是对于转换后数据的结果解释可能比较复杂。

     

    (2) 使用非参数检验:可以使用Friedman test等非参数检验方法,但是要注意Friedman test和单因素重复测量方差分析的无效假设和备择假设不太一致。

     

    (3) 直接进行分析:由于单因素重复测量方差分析对于偏离正态分布比较稳健,尤其是在各组样本量相等或近似相等的情况下,而且非正态分布实质上并不影响犯I型错误的概率。因此可以直接进行检验,但是结果中仍需报告对正态分布的偏离。

     

    (4) 检验结果的比较:将转换后和未转换的原始数据分别进行单因素重复测量方差分析,如果二者结论相同,则再对未转换的原始数据进行分析。

     

    (更多阅读:SPSS教程:判断数据正态分布的超多方法!SPSS详细操作:正态转换的多种方法

    五、SPSS操作

    (一) 单因素重复测量方差分析的操作

     

    1. 在主菜单下点击Analyze > General Linear Model > Repeated measures...,如下图所示:

     

     

    2. 出现Repeated Measures Define Factor(s)对话框,如下图所示:

     

     

    3. 在Within-Subject Factor Name:中将“factor1”更改为time,因为共测量了3次CRP的水平,所以在Number of Levels:中填入3;

     

     

    4. 点击Add,出现下图:

     

     

    5. 在Measure Name:中赋予因变量一个合理的名字,本例中因变量为CRP的水平,所以填入CRP,点击下方的Add,出现下图:

     

     

    6. 点击Define,出现下图Repeated Measures对话框:

     

     

    7. 如下图所示,Within-Subjects Variables后面的括号内是受试者内因素的名字,框内三条分别代表“time”对应的各个水平;

     

     

    8. 将crp_pre、crp_mid和crp_post一起选入右侧的框中,如下图所示:

     

     

    9. 点击Plots,出现Repeated Measures: Profile Plots 对话框,如下图所示:

     

     

    10. 将time选入Horizontal Axis:框中;

     

     

    11. 点击Add,出现下图,点击Continue;

     

     

    12. 点击Options,出现Repeated Measures: Options对话框;

     

     

    13. 将time选入Display Means for:中;下方Compare main effects为勾选状态;在Confidence interval adjustment:下选择Bonferroni;在Display下方勾选Descriptive statistics 和Estimates of effect size;点击Continue,点击OK。

     

     

    (二) 单因素重复测量方差分析→自定义组间比较(custom contrasts)

     

    如果只关心特定组别间的差异,你需要知道如何进行自定义比较(custom contrasts),以及如何对多重比较结果进行调整,这就要用到SPSS软件中的Syntax Editor窗口编写相应程序语句。当满足方差齐性条件时,推荐采用单因素重复测量方差分析进行自定义组间比较。

     

    1. 操作同上述1-13步的操作,这里不再赘述。接下来:

     

    (1) 点击Paste,出现IBM SPSS Statistics Syntax Editor窗口:

     

     

    (2) 在 /PRINT 和 /CRITERIA两行中间,输入/MMATRIX = '0 vs 6 Months' ALL 1 0 -1; 

     

     

    /MMATRIX=旨在告诉SPSS我们要做一个自定义假设; 1  0  -1表示要进行比较的自变量组别,组别的顺序和SPSS里输入的组别顺序有关:这里从左到右(1  0  -1)分别对应着crp_pre、crp_mid和crp_post,表示将crp_pre与crp_post进行比较。“ALL”代表受试者内因素的所有水平。

     

    注:自定义比较包括了简单比较(simple contrasts)和复合比较(complex contrasts)。简单比较为只比较自变量某两个组别间的差异,需要建立线性比较函数(linear contrast,φ)。它包含一系列组别和每个组别对应的均数,组别取值只能为1,-1,0。我们把要比较的两组的组别分别赋值为1和-1,其他不比较的组别组别赋值为0

     

    本例中crp_pre组别为1,crp_post组别为-1,其他组别均为0,则是要比较干预前CRP水平和干预后CRP水平的差异,看二者的平均CRP水平的差值是否为0(即组别为1的组别减去组别为-1的组别,以组别为-1的组别为参照组,组别赋值的正负与研究设计和研究假设有关)。

     

    (3) 用/MMATRIX指令增加另外比较:

     /MMATRIX = '0 vs 3&6 Months' ALL 1 -1/2 -1/2

     

     

    注:复合比较为比较自变量超过2个组别的组合间的差异。同样采用线性比较函数的方法,某组合的组别赋值为1或-1除以组合内的组数,但是要保证要比较的组间组合与另一组(组合)的所有组别加起来为0,组别赋值的正负与研究设计和研究假设有关。

     

    本例中, /MMATRIX = '0 vs 3&6 Months' ALL 1 -1/2 -1/2表示crp_pre与crp_mid、crp_post差异的比较。 

     

    (4) 多重比较的校正

     

    接下来,我们需要校正显著性水平(α),通常也可以校正每次比较的P值和可信区间,得到调整后P值和联合可信区间(simultaneous confidence intervals)。我们首先采用Bonferroni方法对显著性水平α进行校正,公式如下:

     

    调整后α=调整前α ÷ 比较的次数

     

    本例中我们需要进行2次比较,则调整后α=0.05÷2=0.025。

     

     

    (5) 箭头标注处为SPSS软件默认的显著性水平α=0.05:

    /CRITERIA=ALPHA(.05)

     

    我们将其改为调整后的显著性水平α=0.025:

    /CRITERIA=ALPHA(.025)

     

     

    (6) 在菜单栏点击Run > All。

    六、结果解释 

    1. 基本描述

     

    (1) SPSS首先会给出Within-Subjects Factors表,该表提示了受试者内因素crp_pre、crp_mid和crp_post对应的标签为1、2和3,在后面的Estimates表和Pairwise Comparisons表中会用到。

     

     

    (2) Descriptive Statistics表给出了crp_pre、crp_mid和crp_post的均值、标准差和例数。受试者干预前、干预中和干预后的CRP浓度分别为4.33 ± 0.64 mg/L、3.94 ± 0.57 mg/L和3.65 ± 0.43mg/L。

     

     

    (3) Estimates表中没有再出现crp_pre、crp_mid和crp_post的变量名,而是给出了对应的3个时间点的标签。该表中给出了crp_pre、crp_mid和crp_post的均值、标准误和95%的置信区间。

     

     

    (4) Estimated Marginal Means of CRP给出了三个时间点CRP的均值的折线图,可以看到从干预前到干预后呈下降趋势,但1到2的时间点下降程度比2到3的下降程度大。

     

     

    2. 球形假设的检验结果

     

    (1) 在Mauchly's Test of Sphericity表中,给出了球形假设的检验结果。如果P<>P>0.05,则满足球形假设。本例中,χ2=6.270,P=0.043,所以不满足球形假设。

     

     

    (2) 当违背了球形假设条件时,需要进行epsilon (ε)校正。如下图突出显示,SPSS共用了三种方法进行校正,分别为:Greenhouse-Geisser、Huynh-Feldt 和Lower-bound。

     

    在实际应用中,只用Greenhouse-Geisser和Huynh-Feldt两种方法,这两种方法计算的epsilon (ε)的值越低,说明违反球形假设的程度越大,当epsilon (ε)=1时,说明完美的服从了球形假设。

     

    Maxwell & Delaney (2004)建议当epsilon (ε)<0.75时,使用greenhouse-geisser方法校正。其他统计学家建议当epsilon (ε)="">0.75时,使用Huynh-Feldt方法校正。

     

     

     

    (3) 满足球形假设的结果

     

    在Tests of Within-Subjects Effects表中,该表给出了crp_pre、crp_mid和crp_post在不同时间点的均值是否存在差异;偏η2(Partial Eta Squared)表示控制了其他自变量后,因变量被某一自变量解释的百分比(单因素方差分析时,即自变量对因变量的解释程度),代表样本的效应量。

     

    如果P>0.05,则表示各组间均数差异无统计学意义(本例中,P值显示为0.000,不代表P值实际为0,而是表示P<>P<>2=0.75。

     

     

    以上具体结果见下表:

     

     

    目前许多杂志要求除了列出上述结果,还要报告效应量。计算单因素方差分析的效应量有很多方法,比较推荐的是计算偏ω2,公式如下:

     

     

    公式里k =受试者内因素的个数,F为F统计量,n=研究对象的数量,计算结果如下:

     

     

    可见偏ω2=0.63<>2,与偏η2相比,偏ω2还考虑了抽样误差,可以提供相对准确的总体效应量的估计。

     

    (4) 不满足球形假设的结果

     

    当不满足球形假设时,可以采用Greenhouse & Geisser方法进行校正,如下表中突出显示的内容。可见,自由度(df)由原来符合球形假设时的2变成了1.296,均方(Mean Square)由原来的1.164变成1.797,方差不变。

     

    Greenhouse & Geisser的校正结果显示不同的时间点的CRP浓度的差异具有统计学意义,F(1.296, 11.663)=26.938,P<>2=0.75。

     

     

    以上具体结果见下表:

     

     

    (5) Bonferroni post hoc test检验结果

     

    如果事前没有对特定组间差异进行假设,或者关心所有组间的两两比较,则应该进行所有组间的两两比较(post hoc test)。推荐使用Bonferroni post hoc test方法进行组间两两比较。该检验不仅提供了每两个组间比较的P值,也给出了均数差值的可信区间。

     

    在前面我们已经知道球形假设不容易满足,会影响单因素重复测量方差分析的结果。Bonferroni post hoc test 的实质是在进行Bonferroni对显著性水平校正的基础上,配对t检验的多重比较。结果见Pairwise Comparisons表格:

     

     

    本例中受试者内因素有3个,因此会有3种不同的组间组合。当我们要比较crp_pre和crp_mid时,可以见如下标黄部分。两行均为crp_pre和crp_mid比较的结果。

     

     

    我们回顾一下之前的结果,可见上表中第一行标黄部分Mean Difference(I-J)为crp_pre与crp_mid之差:4.3300 - 3.9400 = 0.390。而第二行的标黄部分则为crp_mid与crp_pre之差: 3.9400 - 4.3300 = -0.390。

     

     

    另外,见下图标黄部分,可见标准误和P值是相同的。

     

     

    我们再对比一下95%的置信区间,见下表中标黄部分,置信区间的上限和下限符号不同,绝对值相同。

     

     

    通过对上述数值的理解,我们可以报告以上结果:干预前CRP浓度为4.33 ± 0.64mg/L,干预中三个月时CRP浓度为3.94 ± 0.57mg/L,比干预前显著降低了0.390(95%置信区间:0.242-0.538)mg/L(P<0.001),干预后6个月时crp浓度为3.65 ±="">P=0.001),未发现干预中和干预后CRP浓度的差异具有统计学意义。

     

    1) 自定义组间比较的结果

     

    当我们在syntax编辑器输入了自定义比较的组别后,我们会得到如下Contrast Results (K Matrix) 表格。此表为干预前和干预后CRP浓度比较的结果,与我们当时输入的比较顺序对应一致。

     

     

    首先,我们来看Contrast Estimate、Lower Bound和Upper Bound这三行的结果。Contrast Estimate一行结果为0.680,这是所比较的2组间的均数差值;而我们看到置信区间是97.5%置信区间而非95%置信区间,这是因为我们进行了Bonferroni校正,我们还是报告成95%的置信区间。

     

     

    对于P值,我们双击P值,出现下图,由于进行了Bonferroni校正,显著性水平为0.025,0.000229<>

     

     

    另外,还需要报告效应量,在Univariate Test Results中,偏η2=0.795。

     

     

    2) 复合比较的结果

     

    如下图标黄部分所示,是干预前和干预中、干预后两者的平均值进行比较,干预前与干预中、干预后二者均值的差值为0.535(95%置信区间:0.338-0.732)mg/L,P<><>

     

     

    另外,还需要报告效应量,在Univariate Test Results中,偏η2=0.855。

     

    七、撰写结论

    1. 假如:满足球形假设,单因素重复测量方差分析显示组间差异无统计学意义:

     

    采用单因素重复测量方差分析方法,判断6个月的锻炼干预对受试者CRP浓度的影响。经箱线图判断,数据无异常值;经Shapiro-Wilk检验,各组数据服从正态分布(P>0.05);经Mauchly's球形假设检验,因变量的方差协方差矩阵相等,χ2(2)=3.343, P=0.188。

     

    数据以均数±标准差的形式表示。受试者干预前、干预中和干预后的CRP浓度分别为4.33 ± 0.64 mg/L、3.94 ± 0.57 mg/L和3.65 ± 0.43mg/L。干预前、干预中和干预后的CRP浓度差异不具有统计学意义,F(2, 18)=1.256, P=0.309,偏η2=0.02。

     

    2. 假如:不满足球形假设,单因素重复测量方差分析显示组间差异无统计学意义:

     

    采用单因素重复测量方差分析方法,判断6个月的锻炼干预对受试者CRP浓度的影响。经箱线图判断,数据无异常值;经Shapiro-Wilk检验,各组数据服从正态分布(P>0.05);经Mauchly's球形假设检验,因变量的方差协方差矩阵不相等,χ2(2)=6.270, P=0.043,通过Greenhouse & Geisser方法校正ε=0.648。

     

    数据以均数±标准差的形式表示。受试者干预前、干预中和干预后的CRP浓度分别为4.33 ± 0.64 mg/L、3.94 ± 0.57 mg/L和3.65 ± 0.43mg/L。干预前、干预中和干预后的CRP浓度差异不具有统计学意义,校正后F(1.296, 11.663)=1.256, P=0.300,偏η2 =0.02。

     

    3. 不满足球形假设,单因素重复测量方差分析显示组间差异有统计学意义,并进行了两两比较(本文例子的结果):

     

    采用单因素重复测量方差分析方法,判断6个月的锻炼干预对受试者CRP浓度的影响。经箱线图判断,数据无异常值;经Shapiro-Wilk检验,各组数据服从正态分布(P>0.05);经Mauchly's球形假设检验,因变量的方差协方差矩阵不相等,χ2(2)=6.270, P=0.043,通过Greenhouse & Geisser方法校正ε=0.648。

     

    数据以均数±标准差的形式表示。受试者干预前、干预中和干预后的CRP浓度分别为4.33 ± 0.64 mg/L、3.94 ± 0.57 mg/L和3.65 ± 0.43mg/L。干预前、干预中和干预后的CRP浓度差异具有统计学意义,校正后F(1.296, 11.663)=26.938, P<0.001,>2=0.75。

     

    干预中三个月时CRP浓度比干预前显著降低了0.390(95%置信区间:0.242-0.538)mg/L(P<0.001),干预后6个月时crp浓度比干预前显著降低了0.680(95%置信区间:0.342-1.018)mg>P=0.001),未发现干预中和干预后CRP的浓度存在的差异具有统计学意义。

     

    4. 从无效假设和备择假设的角度出发,当单因素重复测量方差分析显示组间差异有统计学意义时:各组间均数差异有统计学意义(P<>

     

    5. 从无效假设和备择假设的角度出发,当单因素重复测量方差分析显示组间差异无统计学意义时:各组间均数差异无统计学意义(P>0.05)。因此,不能拒绝无效假设,不能接受备择假设。

    八、绘制图表

    最后,我们来学习如何在SPSS软件中绘制简单线图,从而更好地展示展示单因素重复测量方差分析的结果,使其更适合于学术发表。

     

    1. 绘制简单线图的操作

     

    (1) 在菜单栏中,点击Graphs > Chart Builder...:

     

     

    出现如下Chart Builder对话框:

     

     

    (2) 在Chart Builder对话框的左下角,Choose from:模块中选择“Line”:

     

     

    (3) 在Chart Builder对话框的中下部,出现2个不同的线图选项,把左侧的第一个(Simple Line)拖进上面的主要图表预览窗口,并点击Element Properties:

     

     

    (4) 出现下图,图表预览窗口的线图横纵轴分别显示“X-Axis?”和“Y-Axis?”:

     

     

    (5) 从Variables:模块中把自变量time拖进“X-Axis?”,把因变量crp拖进“Y-Axis?”:

     

     

    (6) 在Element Properties对话框中勾选Display error bars,激活–Error Bars Represent– 模块,勾选Confidence intervals,Level (%):设定为95,当然也可以根据需要勾选Standard error或者Standard deviation,点击Apply:

     

     

    (7) 在'Edit Properties of: 模块中点击'Y-Axis1 (Line1)'进行设置,出现下图:

     

     

    (8) 去掉勾选Scale Range下的Minimum,点击Apply并进行确认;

     

     

    (9) 如果想改变自变量分组的顺序,可以在'Edit Properties of: 模块中点击'X-Axis1 (Line1)'进行设置,并在更改后点击Apply,点击OK。

     

     

    2. 简单线图结果

     

    按照上述操作步骤,生成简单线图如下图所示:error bar表示均值的95%置信区间。

     

     

     

     

    展开全文
  • GTK+图形化应用程序开发学习笔记(五)—组装盒、组合表、固定容器构件 一、组装盒 组装盒(GtkBox)也称为组合构件。使用组装盒可以将多构件放在一容器中。容器可以把组装盒看作是一构件。不像按钮构件,组装...

     GTK+图形化应用程序开发学习笔记(五)—组装盒、组合表、固定容器构件

     

    一、组装盒

           组装盒(GtkBox)也称为组合构件。使用组装盒可以将多个构件放在一个容器中。容器可以把组装盒看作是一个构件。不像按钮构件,组装盒在屏幕上时看不见的。事实上,它们是同时跟踪若干子构件的不可见容器。组装盒分为纵向组装盒和横向组装盒。纵向组装盒在垂直方向堆积构件,横向组装盒沿水平方向堆积构件。

           使用gtk_vbox_new函数建立纵向组装盒,使用gtk_hbox_new函数建立横向组装盒。在建立组装盒以后,可以使用gtk_box_pack_start函数或gtk_box_pack_end函数将构件放到组装盒中。

    为了显示构件,必须将构件放入组装盒中,并将组装盒放在容器内。这等效于使容器具有容纳多个构件的能力。虽然组装盒没有任何可视的部分,但是必须使容器和组装盒成为可视。因为可视性影响加到容器内的构件。

          

    2

    名称:

    gtk_hbox_new

    gtk_vbox_new

    功能

    创建一个横向组装盒 gtk_hbox_new

    创建一个纵向组装盒 gtk_vbox_new

    头文件

    #include <gtk/gtk.h>

    函数原形

    GtkWidget *gtk_hbox_new(gboolean homogeneous,gint spacing);

    GtkWidget *gtk_vbox_new(gboolean homogeneous,gint spacing);

    参数

    homogeneous  子构件是否具有同样的大小

    spacing       子构件间的距离

    返回值

    新的组装盒

          

     

     

     

     

     

     

     

     

     

     建立组装盒的函数取两个参数,用来确定组装盒在屏幕上的外观。

    第一个参数称为homogeneous.用这一参数来确定所有增加的构件具有同样的大小。例如,在一个横向组装盒中建立5个按钮,分别带有标号:fredjoesuekarenBartholomew the Great。如果homogeneous参数为FALSE,组装盒建立5个不同大小的按钮,正好在按钮上容纳各自的标号的正文。如果homogeneous参数为TRUE,组装盒计算最大的构件大小,然后按照最大的构件的大小对所有按钮分配同样大小的空间。

           第二个参数称为spacing。用它来确定插入组装盒的构件之间的空间。将spacing参数设置为0表示在插入的构件之间不留空间。

     

    3

    名称:

    gtk_box_pack_start

    gtk_box_pack_end

    功能

    将构件放到组装盒中

    头文件

    #include <gtk/gtk.h>

    函数原形

    void gtk_box_pack_start(GtkBox *box,GtkWidget *child,gboolean expend,gboolean fill,guint padding);

    void gtk_box_pack_end(GtkBox *box,GtkWidget *child,gboolean expend,gboolean fill,guint padding);

    参数

    box          组装盒的名称

    child         子构件的名称

    expend       构件周围是否还有可扩充的空间

    fill          构件是否需要充分利用构件周围空间

    padding      构件周围要保留多少个填充的像元

    返回值

          

     

     

     

     

     

     

     

     

     

     

     

     

     

    函数gtk_box_pack_start将构件放在顶部(对于纵向组装盒)或左边(对于横向组装盒。函数gtk_box_pack_end将构件放在底部(对于纵向组装盒)或右边(对于横向组装盒)。

           gtk_box_paxk_startgtk_box_pack_end5个参数,其中3个参数用来确定如何将构件放在组装盒内。

    expand参数表示在所有构件加入组装盒以后,构件周围是否还有可扩充的空间。如果用homogenous格式建立组装盒,则忽略这一参数。因为homegeneous参数表示构件在组装盒内使用同样大小的空间。

    fill参数表示构件是否需要充分利用构件周围空间。将此参数设置为TRUE允许构件稍稍扩大一点,以充分利用组装盒分配给它的空间。将此参数设置为FALSE强制构件只使用它需要的空间。多余的空间围绕构件的周围分布。

    padding参数表示在构件周围要保留多少个填充的像元。多数情况下将它的值设置为0

     

    #include <gtk/gtk.h>

     

    void PackNewButton(Gtk Widget *box,char *szLabel);

     

    int main(int argc,char *argv[ ])

    {

    GtkWidget *window; /*定义窗体*/

    GtkWidget *box;    /*定义组装盒*/

     

    gtk_init(&argc,&argv); /*初始化GTK+*/

    window=gtk_window_new(GTK_WINDOW_TOPLEVEL); /*创建窗体*/

    gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL); /*登记destroy信号,调用退出函数*/

    box=gtk_vbox_new(FALSE,0); /*创建组装盒*/

     

    PackNewButton(box,”Button1”); /*调用创建按钮函数*/

    PackNewButton(box,”Button2”);

    PackNewButton(box,”Button3”);

    PackNewButton(box,”Button4”);

    PackNewButton(box,”Button5”);

     

    gtk_container_add(GTK_CONTAINER(window),box); /*把组装盒放入窗体*/

    gtk_widget_show(box); /*使组装盒可视*/

    gtk_widget_show(window); /*使窗体可视*/

    gtk_main(); /*等待用户操作*/

    }

     

    void PackNewButton(GtkWidget *box,char *szLabel)

    {

    GtkWidget *button;/*定义按钮*/

     

    button=gtk_button_new_with_label(szLabel); /*创建带标号的按钮*/

    gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,0); /*把按钮加入组装盒*/

    gtk_widget_show(button); /*使按钮可视*/

    }

    下面我们来编译它:

    $gcc –o box box.c `pkg-config –cflags –libs gtk+-2.0`

    $./box

    程序运行后会出现下面的图形:

    本例涉及到了按钮的创建,大家暂时不必关注,我会在下面的章节介绍。

     

    二、组合表

           组合表允许将多个构件放入一个窗口内,这一点类似于组装盒。但是,组装盒在放置构件时只允许纵向或横向的二维控制。组合表则类似于HTML表;允许用行和列控制构件的放置,并且对象可以取多行或多列。

          

    4

    名称:

    gtk_table_new

    功能

    创建组合表

    头文件

    #include <gtk/gtk.h>

    函数原形

    GtkWidget* gtk_table_new(guint rows,guint columns,gboolean homogeneous);

    参数

    rows           表的行数

    columns        表的列数

    homogeneous    子构件是否具有同样的大小

    返回值

    新的组合表

          

     

     

     

     

     

     

       

     

     

     

     

     

     

     

     

     

     

     

     

     

    rows columns表示建表所用的行数和列数。homogeneous的效果和在组装盒中homogeneous的使用效果相同。如果在建立组合表时它被设置为TRUE,表内的表框用最大构件的外框。如果它被设置为FALSE,则将每一列的宽度设置为本例中最大构件的宽度,每一行的高度设置为行中最大构件的高度。

    行的排列从0~rows-1,列的排列从0~columns-1.当增加构件时,每个构件提供开始列、结束列、开始行和结束行。如果构件将被放在表的左上角,列的范围从01。行的范围从01

          

    5

    名称:

    gtk_table_attach

    gtk_table_attch_defaults

    功能

    将控件加到表中

    头文件

    #include <gtk/gtk.h>

    函数原形

    void gtk_table_attach(GtkTable *table,GtkWidget * child,guint left_attach,guint right_attach,guint top_attach,guint  botton_attach, GtkAttachOptions xoptions,GtkAttachOptions yoptions,guint xpadding,guint ypadding);

    void gtk_table_attach_defaults( GtkTable *table,GtkWidget * child,guint left_attach,guint right_attach,guint top_attach,guint  botton_attach);

    参数

    table           组合表名

    child           子构件名

    left_attach      横向起始位置

    right_attach     横向结束位置

    top_attach      纵向起始位置

    botton_attach    纵向结束位置

    xoptions        横向选项

    yoptions        纵向选项

    xpadding       横向填充像元

    ypadding       纵向填充像元

    返回值

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    两个函数都可以将构件加到表中。

    table为表的名字,childwidget为构件的名字。

    left_attachright_attachtop_attachbotton_attach表示控件在表中的位置。

    xoptionsyoptions可以用GTK_FILLGTK_SHRINKGTK_EXPAND,或者用3者的任意组合。其中GTK_FILL选项表示构件充分利用分配给它的空间进行扩展。GTK_SHRINK选项允许构件缩小到比原来分配的空间还小的空间。GTK_EXPAND选项使表扩展填满它插入的所有空间。

    xpaddingypadding表示围绕构件填充的像元数。

     

    gtk_table_attach_defaults函数取比较少的参数,并对gtk_table_attach函数使用的xoptionsyoptionsxpaddingypadding参数用缺省值来代替。对gtk_table_attach_defaults函数来说,xpaddingypadding的缺省值为0;而xoptionsyoptions的却省值为(GTK_FILL|GTK_EXPAND)。

     

    下面是应用组合表的程序例子:

    /*table.c*/

    #include <getk/gtk.h>

     

    int main(int argc,char *argv[])

    {

    GtkWidget *window; /*定义窗体*/

    GtkWidget *table; /*定义组合表*/

    GtkWidget *button; /*定义按钮*/

     

    gtk_init(&argc,&argv); /*初始化*/

    window=gtk_window_new(GTK_WINDOW_TOPLEVEL); /*创建窗体*/

    gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL); /*登记destroy信号函数*/

    table=gtk_table_new(4,4,FALSE); /*创建组合表*/

     

    button=gtk_button_new_with_label(“button1”); /*创建按钮*/

    gtk_table_attach(GTK_TABLE(table),button,0,1,0,1,GTK_FILL,GTK_FILL,0,0);/*把按钮加入组合表*/

    gtk_widget_show(button); /*显示按钮*/

     

    button=gtk_button_new_with_label(“button1”);

    gtk_table_attach(GTK_TABLE(table),button,1,2,1,2,GTK_FILL,GTK_FILL,0,0);

    gtk_widget_show(button);

     

    button=gtk_button_new_with_label(“button1”);

    gtk_table_attach(GTK_TABLE(table),button,2,3,2,3,GTK_FILL,GTK_FILL,0,0);

    gtk_widget_show(button);

     

    gtk_container_add(GTK_CONTAINER(window),table); /*把组合表添加到窗体上*/

    gtk_widget_show(table); /*显示组合表*/

    gtk_widget_show(window); /*显示窗体*/

    gtk_main(); /*等待用户操作*/

    return FALSE;

    }

    $gcc –o table table.c `pkg-config –cflags –libs gtk+-2.0`

    $./table

    这里没有给出参数的所用情况的程序,大家可以把相应的参数换一下,体会各个参数的作用。

    三、固定容器构件

           GtkFixed(固定容器构件)允许将构件放在窗口的固定位置,这个位置是相对与窗口的左上角的。构件的位置可以动态改变。

           使用GtkFixed为构件定位,在大多数情况下都是不可取的。因为当用户调整窗口尺寸时,勾结不能适应窗口的尺寸变化。当然,你可以在窗口尺寸变化的时候采取行动,调整构件的位置和大小。

           gtk_fixed_new函数用于创建新的固定容器构件。

     

    6

    名称:

    gtk_fixed_new

    功能

    创建固定容器构件

    头文件

    #include <gtk/gtk.h>

    函数原形

    GtiWidget *gtk_fixed_new(void);

    参数

    返回值

    新的固定容器构件

          

          

     

     

     

     

     

     

    gtk_fixed_put函数将构件放在由x,y指定的位置。

     

    7

    名称:

    gtk_fixed_put

    功能

    将构件放入固定容器构件的指定位置

    头文件

    #include <gtk/gtk.h>

    函数原形

    void gtk_fixed_put(GtkFixed *fixed,GtkWidget *widget,gint16 x,gint16 y);

    参数

    fixed        固定容器容器构件

    widget       要放在固定容器构件中的构件

    x            放置的横坐标

    y            放置的纵坐标

    返回值

          

          

     

     

     

     

     

     

     

     

     

     

     

     gtk_fixed_move函数将指定构件移动到新位置。

     

    8

    名称:

    gtk_fixed_move

    功能

    移动固定容器构件里的构件到指定位子

    头文件

    #include <gtk/gtk.h>

    函数原形

    void gtk_fixed_move(GtkFixed *fixed,GtkWidget *widget,gint16 x,gint16 y);

    参数

    fixed        固定容器构件

    widget       要放在固定容器构件中的构件

    x            放置的横坐标

    y            放置的纵坐标

    返回值

          

     

     

     

     

     

     

     

     

     

     

     

     

    下面是固定构件的程序例子:

    #include <gtk/gtk.h>

     

    GtkWidget *window;/*定义窗体*/

    GtkWidget *fixed;/*定义固定容器构件*/

    GtkWidget *button;/*定义按钮*/

    gint function(gpointer data);

    gpointer data;

    gint sign;

    int x=0;

    int y=0;

     

    int main(int argc,char *argv[ ])

    {

    gtk_init(&argc,&argv);/*初始化*/

    window=gtk_window_new(GTK_WINDOW_TOPLEVEL);/*创建窗体*/

    gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL);

    fixed=gtk_fixed_new();/*创建固定容器构件*/

    button=gtk_button_new_with_label(“button”);/*创建按钮*/

    gtk_fixed_put(GTK_FIXED(fixed),button,10,10);/*将按纽放在固定容器构件的指定位置*/

     

    sign=g_timeout_add(600,function,data);/*创建定时器*/

    gtk_container_add(GTK_CONTAINER(window),fixed);/*把固定容器构件放入窗体*/

    gtk_widget_show(fixed);

    gtk_widget_show(button);

    gtk_widget_show(window);

    gtk_main();

    }

     

    gint function(gpointer data)

    {

    gtk_fixed_move(GTK_FIXED(fixed),button,++x,++y);/*移动按纽*/

    return TRUE;

    }

           程序运行后得到如下的窗体:

           窗体每隔600毫秒便会扩大一次。

     

     

    展开全文
  • 去掉表里组合字段重复的记录 2003-12 余枫 当设计的时候没有建组合字段唯一约束,以后需要增加这一约束时,却发现表里已经有了很多重复记录了。 请看看我用的去掉表里... (当然稍加修改也可以用到三个
      
    

    去掉表里组合字段重复的记录

    									2003-12 余枫
    	
    	当设计表的时候没有建组合字段唯一约束,以后需要增加这一约束时,却发现表里已经有了很多重复记录了。
    	
    	请看看我用的去掉表里组合字段重复的记录方法:
    	
    	假设原始表名为source_table,字段名1为field_name1,字段名2为field_name2。
    	
    	(当然稍加修改也可以用到三个及以上组合字段重复的情况)  
    	
    	第一步: 生成组合字段重复的临时表source_dup_simple
    	create table source_dup_simple
    	nologging 
    	pctfree 1 pctused 99 
    	as select field_name1,field_name2,count(0) as num from source_table
    	group by field_name1,field_name2 having count(0)>1;
    
    
    	第二步: 生成组合字段重复的主表里完整记录的临时表source_dup
    	create table source_dup 
    	nologging 
    	pctfree 1 pctused 99 
    	as select t1.* from source_table t1,source_dup_simple t2
    	where t1.field_name1=t2.field_name1 and t1.field_name2=t2.field_name2;
    
    
    	第三步: 删去source_dup里的重复记录 
    	
    	--可选择:保留rowid小的记录
    	delete from source_dup a where rowid > (
    	select min(rowid) from source_dup b where
    	a.field_name1 = b.field_name1 and a.field_name2=b.field_name2);
    	commit;
    	
    	--可选择:保留rowid大的记录
    	delete from source_dup a where rowid < (
    	select max(rowid) from source_dup b where
    	a.field_name1 = b.field_name1 and a.field_name2=b.field_name2);
    	commit;
     
     	注意:如果操作一万条以上的记录最好在source_dup的field_name1和field_name2字段上建索引.
     	
     	     如果想按别的删除规则,如保留日期最新的记录:
     	     
     	     --可选择:保留时间字段date_field大的记录
     	     
     	     delete from source_dup a where date_field < (
    		select max(date_field) from source_dup b where
    		a.field_name1 = b.field_name1 and a.field_name2=b.field_name2);
    	     commit;
    	     
     	     --可选择:保留时间字段date_field小的记录
     	     
     	     delete from source_dup a where date_field > (
    		select min(date_field) from source_dup b where
    		a.field_name1 = b.field_name1 and a.field_name2=b.field_name2);
    	     commit;
    
    	     如果时间字段上有重复,还需要再次根据rowid来删一次
     	      
    	     delete from source_dup a where rowid < (
    	        select max(rowid) from source_dup b where
    	        a.field_name1 = b.field_name1 and a.field_name2=b.field_name2);
    	     commit; 	
    	     
    	第四步: 删去所有重复组合字段原始表里记录 
    	delete from source_table 
    	where field_name1||field_name2 in (select field_name1||field_name2 from source_dup_simple);
     	commit;
    
     	注意:如果操作一万条以上的记录最好在source_table的field_name1和field_name2字段上建索引.
    
    	第五步: 把剩下的没有重复的记录插回原始表 
    	insert into source_table select * from source_dup;
     	commit;
    
    展开全文
  • undo保留时间的几相关参数

    千次阅读 2018-07-10 23:48:04
    (除非对undo tablespace 设置了retention guarantee 特性,强制保留undo segment达到保留时间值,不然不会覆盖,哪怕空间不足也是。隐患太大,不太考虑) PS:undo段的保留时间只是让已提交事务的 undo ...

    参考文档:
    https://docs.oracle.com/cd/E11882_01/server.112/e40402/initparams265.htm#REFRN10225
    https://docs.oracle.com/cd/E11882_01/server.112/e40402/initparams264.htm#REFRN10224
    MOS 文档 ID 1526122.1
    MOS 文档 ID 846079.1

    适用版本:10.1.0.5以上
    相关参数:

    _highthreshold_undoretention,_smu_debug_mode,_undo_autotune,undo_management,undo_retention,undo_tablespace
    undo主要功能:
    undo segement 回滚段主要工作是为了构造读一致性,事物回滚,数据库恢复,闪回查询

    正文:
    这里主要介绍几个参数的设置
    _highthreshold_undoretention —- 单位 秒,默认值 4294967294 。允许undo_retention 设置的最大值,当修改undo_retention的值超过改参数值,相关报错 ORA-55567,ORA-55568,ORA-55569

    _smu_debug_mode —undo调试参数,通过设置特定值可以启动特殊作用,如 4, 33445542

    _undo_autotune — 默认 true 开启。自动调整回滚段的保留时间。

    undo_retention — 单位 秒,默认900秒,undo段尽可能的保留时间

    undo_management —undo段管理方式,默认auto 自动使用undot ablespace 管理。MANUAL 利用 rollback segment管理

    undo_tablespace —- 指定undo使用的表空间

    SYS@  >select  a.inst_id, a.ksppinm  "Parameter",
      2               b.ksppstvl "Session Value",
                 c.ksppstvl "Instance Value"
      4        from x$ksppi a, x$ksppcv b, x$ksppsv c
      5       where a.indx = b.indx and a.indx = c.indx
      6         and a.inst_id=b.inst_id and b.inst_id=c.inst_id
           and a.ksppinm in ('_undo_autotune', '_smu_debug_mode',
      8                           '_highthreshold_undoretention',
                    'undo_tablespace','undo_retention','undo_management')
     10  order by 2;
    
    Instance # Parameter                           Session Value             Instance Value
    ---------- ----------------------------------- ------------------------- -------------------------
             1 _highthreshold_undoretention        4294967294                4294967294
             1 _smu_debug_mode                     0                         0
             1 _undo_autotune                      TRUE                      TRUE
             1 undo_management                     AUTO                      AUTO
             1 undo_retention                      900                       900
             1 undo_tablespace                     UNDOTBS1                  UNDOTBS1
    
    6 rows selected.

    实际undo段的保留时间,undo段覆盖与否,绝大数情况是由表空间的使用情况结合相关参数来决定的。(除非对undo tablespace 设置了retention guarantee 特性,强制保留undo segment达到保留时间值,不然不会覆盖,哪怕表空间不足也是。隐患太大,不太考虑)

    PS:undo段的保留时间只是让已提交事务的 undo segment 标记为 UNEXPIRED(未过期),我们其实知道不管是UNEXPIRED 还是 EXPIRED 状态的 undo segment 都是可能会被覆盖的。只是优先覆盖EXPIRED ,如果空间不足一样覆盖UNEXPIRED

    以下情况都是 undo tablespace 是NOGUARANTEE
    参数组合情况一:
    在默认情况下,及_undo_autotune=true 时候及undo tablespace 的autoextend =yes 自动扩展
    _smu_debug_mode =0
    _undo_autotune =true
    undo_retention =900 (这个值可自行修改)

    开启自动调整时实际的保留时间以试图V$UNDOSTAT中的字段 TUNED_UNDORETENTION 值为准,且>=undo_retention值

    SELECT TO_CHAR(BEGIN_TIME, 'YYYY-MM-DD HH24:MI:SS') BEGIN_TIME,TUNED_UNDORETENTION FROM V$UNDOSTAT;
    
    2018-07-08 01:59:26                1412
    2018-07-08 01:49:26                 900
    2018-07-08 01:39:26                1413
    2018-07-08 01:29:26                 900
    2018-07-08 01:19:26                1417
    2018-07-08 01:09:26                2021
    2018-07-08 00:59:26                1421
    2018-07-08 00:49:26                 900
    2018-07-08 00:39:26                1422
    2018-07-08 00:29:26                 900
    2018-07-08 00:19:26                1427
    2018-07-08 00:09:26                 900
    2018-07-07 23:59:26                1430
    2018-07-07 23:49:26                 900
    2018-07-07 23:39:26                1432
    2018-07-07 23:29:26                 900
    2018-07-07 23:19:26                1436

    情况二:

    相对于情况一,如果只是 undo tablespace 非自动扩展
    这时oracle根据undo表空间大小与使用情况自动调整最大可能的保留时间,及忽略undo_retention的值

    情况三:
    undo tablespace 自动扩展
    _smu_debug_mode = 33445542
    _undo_autotune =true
    undo_retention =900 (这个值可自行修改)

    这时oracle自动调整的
    TUNED_UNDORETENTION = (undo_retention值 or 运行时间最长的 SQL 的执行时间)

    情况四
    undo tablespace 自动扩展
    _undo_autotune =false
    undo_retention =900 (这个值可自行修改)

    这时oracle 自动调整关闭
    TUNED_UNDORETENTION = undo_retention

    情况五:
    对于lob 字段
    lob 字段 undo 不是利用undo tablespace,而是利用自己存储空间。 例如 BasicFiles lob字段指定了 retention参数 则继承 undo_retention参数的值。
    lob情况特殊,还有其他一些限制 参考 mos文档846079.1

    展开全文
  • --删除 TableName 中字段 A、B、C 同时重复的数据,并保留一条 ... --根据A,B,C三个字段查询出重复的数据 SELECT Id FROM ( SELECT *,OrderNo=ROW_NUMBER() OVER(PARTITION BY A,B,C ORDER B...
  • GTK+图形化应用程序开发学习笔记(五)—组装盒、组合表、固定容器构件   一、组装盒   组装盒(GtkBox)也称为组合构件。使用组装盒可以将多构件放在一容器中。容器可以把组装盒看作是一构件。不像按钮...
  • Oracle undo保留时间的几相关参数

    千次阅读 2018-08-03 10:49:52
    (除非对undo tablespace 设置了retention guarantee 特性,强制保留undo segment达到保留时间值,不然不会覆盖,哪怕空间不足也是。隐患太大,不太考虑) PS:undo段的保留时间只是让已提交事务的 undo ...
  • 函数运算结束后,局部变量就会被释放,它只是用于函数内部运算,可以用global保留字在函数内部使用全局变量 n,s = 10,100 df fact(n): s = 1 #若此处换作 global s 则声明是全局变量s = 100 for i in range(1,n+1...
  • Python3对多股票的投资组合进行分析

    万次阅读 多人点赞 2019-04-21 10:45:27
    目录 概述: ...、投资组合的相关性分析 1、投资组合的相关矩阵 2、投资组合的协方差矩阵 3、投资组合的标准差 四、探索股票的最优投资组合 1、使用蒙特卡洛模拟Markowitz模型 2、投资...
  • 这是自定义的list ,你们可以用jdk中的list,都一意思 MyArrayList list1 = new MyArrayList(); show1 s =new show1(); s.setId(1); s.setSoftware(“iphone”); show1 s1 =new show1(); s1.setId(2); s1....
  • 39转录组分析工具,120种组合评估

    万次阅读 2017-08-05 09:27:59
    RNA-seq工具哪家强RNA-seq分析工具知多少RNA-seq是研究转录组应用最广泛,也最重要的技术之一。RNAseq其分析内容包括序列比对、转录本拼装、表达定量、差异分析、...RNA-seq分析工具最优组合Nature Communication上一篇
  • 原文 :... 拖了一星期,终于开始写第篇了。走起!   聚合函数: SQL中提供的聚合函数可以用来统计、求和、求最值等等。 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值
  • 黑马程序员——Java的保留关键字

    千次阅读 2014-10-07 13:54:36
    在java中保留关键字是被java本身定义使用的字母组合,具有特殊意义,所以不能用作变量名、方法名以及包名。Java共有51关键字,中const和goto虽然被保留但未被使用。保留关键字分为8大类: 一、访问控制: ...
  • 简单来说,图一是要去做排列组合的基础的数据,基础数据只有1,2,3三个不同的值, 图二是图一通过排列组合后的最简结果,把里面能合并的数据合并,不能合并的数据继续用原始的数据写出来即可。。请问这个要如何实现。...
  • 数据库规范化三个范式应用实例

    千次阅读 2004-10-14 22:16:00
    在这过程中的改变以及添加的一些附加使数据库效率更高、错误更少、更容易维护。 数据库的规范化是优化的结构和把数据组织到中的实践,这样做数据才能更明确。规范化使你能够改变业务规则、需求和数据而不...
  • IP地址(定义、分类、掩码及保留地址)IP定义IP协议数据包分片地址A类地址B类地址C类地址D类地址E类地址无类地址掩码保留地址 IP IP,全称互联网协议地址,是指IP地址,意思是分配给用户上网使用的网际协议(英语:...
  • 组合和继承

    千次阅读 2009-10-24 12:48:00
     第二种方法是创建一新类,将其作为现有类的一“类型”。我们可以原样采取现有类的形式,并在其中加入新代码,同时不会对现有的类产生影响。这种魔术般的行为叫作“继承”(Inheritance),涉及的大多数工作都...
  • 奔跑吧,旅行商 - 当机器学习遇上组合优化

    千次阅读 多人点赞 2020-12-06 10:41:18
    背景 如今机器学习在视觉、自然语言处理、语音、推荐等领域的应用...在实际工程中,有一类优化问题需要我们从集合的所有组合中找出一最优方案。这类离散空间中的优化问题就称为组合优化问题(Combinatorial Optimizat
  • 目录一、的创建1.1创建学生student_one1.2创建教师teacher_one1.3创建课程course_one1.4创建成绩score_one二、基于多的连接查询...NOT EXISTS的子查询2.5 组合查询(使用UNION运算符组合结果) 一、
  • 计算机级网络技术考过指南

    万次阅读 多人点赞 2018-03-10 19:18:36
    计算机级网络技术考过指南 原文链接:计算机级网络技术考过指南 题库下载链接(50积分是CSDN上调的,不是我上传时设置的。更新版本请大家自行搜索):计算机级网络技术无纸化考试模拟软件(2018.3) 用...
  • 数字逻辑第四章(组合逻辑电路)

    千次阅读 2018-06-17 02:07:38
    一、组合逻辑电路分析 分析方法步骤: 根据逻辑电路图写出输出函数表达式; 化简输出函数表达式; 列出输出函数真值; 功能评述;(不一致电路,半加器……)二、组合逻辑电路设计 1. 设计方法概述: ...
  • 7.10 组合数据集:合并和连接 原文:Combining Datasets: Merge and Join 译者:飞龙 协议:CC BY-NC-SA 4.0 本节是《Python 数据科学手册》(Python Data Science Handbook)的摘录。 Pandas 提供的一基本特性...
  • 问题一:查找指定组合字段的重复记录SELECT * FROM tb_teacher a WHERE (a.user_id, a.create_time) IN ( SELECT user_id, create_time FROM tb_teacher WHERE type = 3 GROU...
  • 二:变量、标识符、保留字、变量

    千次阅读 多人点赞 2021-02-05 13:34:24
    文章目录01、关键字与保留字02、标识符2.1、什么是标识符(Identifier)2.2、定义合法标识符规则【重要】2.3、Java 中的名称命名规范03、变量3.1、变量的声明与使用3.2、基本数据类型3.2.1、整数类型:byte、short、...
  • 项目组合管理(PPM)

    千次阅读 2019-03-06 15:14:08
    PMI对组合管理的定义为“Project Portfolio management refers to the selection and support of projects or program investments. These investments in projects and programs are guided by the organization’s...
  • 2进制在组合数学中的应用

    千次阅读 2009-08-19 15:59:00
    有一字符串数组 r=[abc,bac,acb] 我只想保留其中一个组合,也就是说对于字符串内容相同,只是字符组合顺序不同的字符串进行删除。 我给大家介绍一位运算的技巧,只限制于少于32字母的情况。 假设字母a的asc码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 173,167
精华内容 69,266
关键字:

组合列表保留前三个