精华内容
下载资源
问答
  • 启动的分析预测

    万次阅读 多人点赞 2018-06-05 16:50:56
    启动的分析预测 一、摘要 加深对基因启动的理解认知; 学会如何获取已知基因的启动序列数据; 熟悉不同启动分析软件的使用及其适用范围; 学会设计启动克隆引物。 熟悉EPDTransFac数据库的使用...

    启动子的分析和预测

    一、摘要

    1. 加深对基因启动子的理解和认知;
    2. 学会如何获取已知基因的启动子序列数据;
    3. 熟悉不同启动子分析软件的使用及其适用范围;
    4. 学会设计启动子克隆引物。
    5. 熟悉EPD和TransFac数据库的使用;
    6. 学会使用已知的启动子和转录因子TransFac的HMM模型,并能够独立编程,利用该HMM模型来计算鉴别未知启动子

    二、材料和方法

    1、硬件平台

    处理器:Intel(R) Core(TM)i7-4710MQ CPU @ 2.50GHz
    安装内存(RAM):16.0GB

    2、系统平台

    Windows 8.1、Ubuntu

    3、软件平台

    【1】Primer-BLAST
    【2】Softberry系列工具
    【3】Promoter 2.0
    【4】BDGP
    【5】Cister
    【6】NEBcutter

    4、数据库资源

    NCBI数据库:https://www.ncbi.nlm.nih.gov/
    UCSC数据库:http://genome.ucsc.edu/

    5、研究对象

    人类谷胱甘肽硫转移酶M1的promoter区域

    三、结果

    基因启动子序列的获取

    选择基因:谷胱甘肽硫转移酶M1(GSTM1)
    概况:当携带风险基因型时,对环境毒素和致癌物质的敏感性提高,易发生DNA突变和染色体畸变,患白血病的风险因而显著增加。
    首先进入UCSC genome browser 查看GSTM1上游5kb范围内有无其他基因。发现该基因的上游存在同一家族的GSTM2,所以promoter大概只有3kb。
    UCSC genome browser
    图表 1UCSC genome browser
    接下来进入Genbank,搜索GSTM1,查看该基因在基因组中的定位和基因结构。
    查看基因定位和结构
    图表 2查看基因定位和结构
    打开该基因的序列信息,获取该基因的启动子序列(包含exon1)
    查看基因定位和结构
    查看基因定位和结构

    Neural Network Promoter Prediction

    进入BDGP: Neural Network Promoter Prediction网站http://www.fruitfly.org/seq_tools/promoter.html,进行启动子预测
    BDGP启动子预测
    图表 3 BDGP: Neural Network Promoter Prediction网站
    一共预测出来3个启动子(这个网站预测出来的promoter都是50bp)
    BDGP预测结果

    Promoter 2.0 Prediction

    使用Promoter 2.0 Prediction Server http://www.cbs.dtu.dk/services/Promoter/
    进行启动子预测,也是一共预测出来3个启动子
    Promoter 2.0预测结果
    图表 5Promoter 2.0预测结果

    Softberry预测

    TSSW、TSSP、TSSG、FPROM都是softberry提供的启动子预测工具,进入
    官网(http://www.softberry.com/),然后点击service即可,启动子预测工具网址:
    http://www.softberry.com/berry.phtml?topic=index&group=programs&subgroup=promoter

    TSSW

    TSSW具体网址如下(http://www.softberry.com/berry.phtml?topic=tssw&group=programs&subgroup=promoter),输入序列进行预测即可。TSSW并没有预测出来promoter区域。
    TSSW预测结果
    图表 6TSSW预测结果

    TSSP

    TSSP具体网址如下(http://www.softberry.com/berry.phtml?topic=tssp&group=programs&subgroup=promoter),输入序列进行预测即可。共计预测出来一个promoter区域。
    TSSP预测结果
    图表 7 TSSP预测结果

    TSSG

    TSSG具体网址如下(http://www.softberry.com/berry.phtml?topic=tssg&group=programs&subgroup=promoter),输入序列进行预测即可。TSSG并没有预测出来promoter区域。
    TSSG预测结果
    图表 8TSSG预测结果

    FPROM

    FPROM具体网址如下(http://www.softberry.com/berry.phtml?topic=fprom&group=programs&subgroup=promoter),输入序列进行预测即可。FPROM并没有预测出来promoter区域。
    FPROM预测结果
    图表 9FPROM预测结果

    Cister

    Transcription Elements预测平台:Cis-element Cluster Finder
    https://zlab.bu.edu/~mfrith/cister.shtml
    由于序列只有3kb,默认参数预测出来的转录元件太少,将average distance between clusters参数由默认的3w修改为3k,最有可能的结果还是NF-1
    Cister预测结果
    图表 10Cister预测结果

    Match

    转录因子预测集合网站http://gene-regulation.com/pub/programs.html (需要注册)
    具体网址http://gene-regulation.com/cgi-bin/pub/programs/match/bin/match.cgi
    Match预测结果
    图表 11Match预测结果

    AliBaba 2.1

    转录因子预测集合网站http://gene-regulation.com/pub/programs.html (需要注册)
    具体网址http://gene-regulation.com/pub/programs/alibaba2/index.html
    预测出来一大堆,下面仅截取其中一部分。
    AliBaba预测结果
    图表 12AliBaba预测结果

    基因结构绘图

    虽然使用了6个promoter预测在线平台,但是只有3个平台预测出promoter。
    利用在线平台processon绘制基因结构图
    基因结构图
    图表 13基因结构图
    接下来大致将预测结果分为4个区域,将引物设计的范围同时绘制出来(箭头为引物)

    PrimerBlast引物设计

    引物结构
    图表 14引物结构
    先使用默认参数进行尝试,设置好Forward primer和Reverse primer的Range,再将PCR product size最大值调成整段序列的长度3005,同时# of primers to return参数调整为1,以方便截图。
    引物位置引物位置引物位置引物位置
    图表 15引物位置
    初步设置参数
    图表 16初步设置参数
    然而由于有重复序列,经过repeat filtering,不会跑出来引物,只能将参数调宽松。
    默认参数结果
    图表 17默认参数结果
    在Advanced parameters的Primer Parameters栏目,将Repeat filter关掉,同样可以看出来GC含量和TM值也筛选掉很多引物,在Internal hybridization oligo parameters栏目,将引物内杂交的参数调整宽松。
    高级参数调整
    图表 18高级参数调整

    引物设计结果:

    第一段
    图表 19第一段
    第二段
    图表 20第二段
    第三段
    图表 21第三段
    第四段
    图表 22第四段
    第一段:

    · Sequence (5’->3’) Template strand Length Start Stop Tm GC% Self complementarity Self 3’ complementarity
    Forward primer TCGTACCTACCCTCTGTTCGT Plus 21 164 184 60 52.38 4 0
    Reverse primer GGGCTGCACTCAGTAAGACT Minus 20 2918 2899 59.39 55 5 3

    第二段:

    · Sequence (5’->3’) Template strand Length Start Stop Tm GC% Self complementarity Self 3’ complementarity
    Forward primer CCAAGTGCCCCAACTTAGCA Plus 20 849 868 60.54 55 4 0
    Reverse primer GGGCTGCACTCAGTAAGACT Minus 20 2918 2899 59.39 55 5 3

    第三段:

    · Sequence (5’->3’) Template strand Length Start Stop Tm GC% Self complementarity Self 3’ complementarity
    Forward primer CCAGGCGTCACTAACACAGG Plus 20 1522 1541 60.67 60 3 1
    Reverse primer GTTCCGGGAGCGAAGTCAG Minus 19 2874 2856 60.45 63.16 5 1

    第四段:

    · Sequence (5’->3’) Template strand Length Start Stop Tm GC% Self complementarity Self 3’ complementarity
    Forward primer CGAGGGCCCCTAACAGAAAA Plus 20 2405 2424 59.67 55 7 0
    Reverse primer CTGGGGCTGCACTCAGTAAG Minus 20 2921 2902 60.39 60 5 3

    NEBcutter酶切位点分析

    使用NEBcutter分析该启动子序列,为了更加全面,查找全部的特异性位点Enzymes to use: All specificities
    http://nc2.neb.com/NEBcutter2/
    保存没有酶切位点“0 cutters”的核酸内切酶数据,见附录。
    NEBcutter结果
    图表 23NEBcutter结果

    pGL4.17载体

    查询pGL4.17的载体数据,获得酶切信息。查询关键词:promega pGL4.17。
    pGL4.17载体信息
    图表 24pGL4.17载体信息
    其中SfiI、Acc65I、KpnI、SacI、NheI、XhoI、EcoRV、BglII、HindIII这九个酶都属于在promoter内部没有酶切位点的,这些都可以选用。

    引物设计

    从上面九个酶中随便选两个(真实情况要考虑到切割率等问题)
    选择KpnI和SacI,下面是酶切位点和保护碱基对应表,KpnI选两个保护碱基。
    引物设计
    可以看出来酶切位点序列在反向互补以后和原序列相同,直接把这段序列加在引物前面就成。
    最后按照“保护碱基+酶切序列+PCR引物”的顺序,设计用于可以转到pGL4.17载体的引物。

    · 164…184–2918…2899 849…868–2918…2899 1522…1541–2874…2856 2405…2424–2921…2902
    Forward Primer CGAGCTCTCGTACCTACCCTCTGTTCGT CGAGCTCCCAAGTGCCCCAACTTAGCA CGAGCTCCCAGGCGTCACTAACACAGG CGAGCTCCGAGGGCCCCTAACAGAAAA
    Reverse Primer GGGGTACCGGGCTGCACTCAGTAAGACT GGGGTACCGGGCTGCACTCAGTAAGACT GGGGTACCGTTCCGGGAGCGAAGTCAG GGGGTACCCTGGGGCTGCACTCAGTAAG

    后续实验流程

    接下来,用这四组引物,把四个promoter区域PCR出来,顺带PCR出来的还有保护碱基和酶切序列,导入pGL4.17,用双荧光素酶报告系统看看哪儿个promoter活性最高,大概会出来下面这种图,后面那张图明显说明promoter3活性最高。
    后续实验流程后续实验流程
    再接下来,还可以用TFSEARCH,TFBSs,TRED这样的转录因子预测软件(上面也做了几个预测),看看活性最高的那段区域和哪儿些转录因子相关,或者用pubmed查查看文献,ENCODE,TRANSFAC等数据库,查找这个基因启动子区域的转录因子信息。

    接下来是编程练习部分

    HMM模型

    TransFac是转录因子数据库,但是好像需要注册才能下载模型的矩阵。
    从EPD真核生物启动子数据库下载脊椎动物TATA-box的矩阵(共计12位碱基)。
    网址http://epd.vital-it.ch/promoter_elements.php
    利用该矩阵建立打分模型,对上面谷胱甘肽硫转移酶M1(GSTM1)的启动子序列进行分析,具体代码见附录。
    打分值:每次取出12bp序列计算,依次计算每位碱基所占比例,再累乘得到分值(由于数值太小,分值皆除以最大分值)
    打分值统计图
    图表 25打分值统计图
    P值计算:使用bootstrap方法,将12bp序列打乱1000次,再按照上述方法计算分值,如果1000次内有n次分值高于“打乱之前的分值”,则p值为n/1000
    p值统计图
    图表 26 p值统计图
    看的出来,整段promoter区域大部分分值都为0,p值为1。之前在线预测软件中的200,400,1200,2570这四个位置,此处也能预测出来,效果还可以。

    附录

    ”0 cutters”核酸内切酶

    Col1 Col2 Col3
    1 AatII GACGTC
    2 AbaCIII CTATCAV
    3 AbsI CCTCGAGG
    4 Acc65I GGTACC
    5 Acc65V GACGCA
    6 AclI AACGTT
    7 AfeI AGCGCT
    8 AflII CTTAAG
    9 AflIII ACRYGT
    10 AhyRBAHI GCYYGAC
    11 AjuI (N)5(N)7GAA(N)7TTGG(N)6(N)5
    12 AleI CACNNNNGTG
    13 AloI (N)5(N)7GAAC(N)6TCC(N)7(N)5
    14 AlwFI GAAAY(N)5RTG
    15 ApyPI ATCGAC(N)18NN
    16 AscI GGCGCGCC
    17 AseI ATTAAT
    18 AsiSI GCGATCGC
    19 AspDUT2V GNGCAAC
    20 Asu14238IV CGTRAC
    21 BaeI (N)5(N)10ACNNNNGTAYC(N)7(N)5
    22 BamHI GGATCC
    23 BarI (N)5(N)7GAAG(N)6TAC(N)7(N)5
    24 Bce3081I TAGGAG
    25 BceAI ACGGC(N)12NN
    26 BcgI NN(N)10CGA(N)6TGC(N)10NN
    27 BclI TGATCA
    28 BdaI NN(N)10TGA(N)6TCA(N)10NN
    29 BglII AGATCT
    30 BlpI GCTNAGC
    31 BmgBI CACGTC
    32 BmtI GCTAGC
    33 BpuJI CCCGT
    34 BsaAI YACGTR
    35 BsbI CAACAC(N)19NN
    36 BsiEI CGRYCG
    37 BsiWI CGTACG
    38 Bsp24I (N)5(N)8GAC(N)6TGG(N)7(N)5
    39 Bsp3004IV CCGCAT
    40 Bsp460III CGCGCAG
    41 BspDI ATCGAT
    42 BsrBI CCGCTC
    43 BsrGI TGTACA
    44 BssHII GCGCGC
    45 BstAPI GCANNNNNTGC
    46 BstBI TTCGAA
    47 BstEII GGTNACC
    48 BstZ17I GTATAC
    49 Bsu3610I GACGAG
    50 BtgZI GCGATG(N)10NNNN
    51 Cal14237I GGTTAG
    52 CcrNAIII CGACCAG
    53 Cdi11397I GCGCAG
    54 Cdi81III GCMGAAG
    55 CdiI CATCG
    56 Cgl13032I GGCGCA
    57 Cgl13032II ACGABGG
    58 ClaI ATCGAT
    59 Cma23826I CGGAAG
    60 CstMI AAGGAG(N)18NN
    61 DrdI GACNNNNNNGTC
    62 EagI CGGCCG
    63 EciI GGCGGA(N)9NN
    64 Eco53kI GAGCTC
    65 EcoRV GATATC
    66 Exi27195I GCCGAC
    67 FseI GGCCGGCC
    68 FspAI RTGCGCAY
    69 FspI TGCGCA
    70 GauT27I CGCGCAGG
    71 GdiII CGGCCR
    72 HindIII AAGCTT
    73 HpaI GTTAAC
    74 Hpy99I CGWCG
    75 HpyAXIV GCGTA
    76 Jma19592I GTATNAC
    77 Jma19592II GRGCRAC
    78 Kor51II RTCGAG
    79 KpnI GGTACC
    80 Lmo370I AGCGCCG
    81 Lsp6406VI CRAGCAC
    82 Maf25II CACGCAG
    83 MaqI CRTTGAC(N)19NN
    84 MauBI CGCGCGCG
    85 MkaDII GAGAYGT
    86 MluI ACGCGT
    87 MreI CGCCGGCG
    88 MslI CAYNNNNRTG
    89 MteI GCGCNGCGC
    90 NaeI GCCGGC
    91 Nbr128II ACCGAC
    92 NgoMIV GCCGGC
    93 NhaXI CAAGRAG
    94 NheI GCTAGC
    95 NotI GCGGCCGC
    96 NpeUS61II GATCGAC
    97 NruI TCGCGA
    98 PacI TTAATTAA
    99 PaeR7I CTCGAG
    100 Pal408I CCRTGAG
    101 PciI ACATGT
    102 PcsI WCGNNNNNNNCGW
    103 Pfl1108I TCGTAG
    104 PflFI GACNNNGTC
    105 PflMI CCANNNNNTGG
    106 PlaDI CATCAG(N)19NN
    107 PliMI CGCCGAC
    108 PmeI GTTTAAAC
    109 PmlI CACGTG
    110 PpiI (N)5(N)7GAAC(N)5CTC(N)8(N)5
    111 PshAI GACNNNNGTC
    112 PsiI TTATAA
    113 PspXI VCTCGAGB
    114 PsrI (N)5(N)7GAAC(N)6TAC(N)7(N)5
    115 Pst273I GATCGAG
    116 PvuI CGATCG
    117 RceI CATCGAC(N)18NN
    118 RdeGBI CCGCAG
    119 RpaB5I CGRGGAC(N)18NN
    120 RpaBI CCCGCAG(N)18NN
    121 RpaI GTYGGAG(N)9NN
    122 RpaTI GRTGGAG
    123 Rsp008IV ACGCAG
    124 RspPBTS2III CTTCGAG
    125 RsrII CGGWCCG
    126 SacI GAGCTC
    127 Saf8902III CAATNAG
    128 SalI GTCGAC
    129 SbfI CCTGCAGG
    130 SexAI ACCWGGT
    131 SfiI GGCCNNNNNGGCC
    132 SgrAI CRCCGGYG
    133 SgrDI CGTCGACG
    134 SnaBI TACGTA
    135 SpeI ACTAGT
    136 SphI GCATGC
    137 SpnRII TCGAG
    138 SrfI GCCCGGGC
    139 SsmI CTGATG
    140 Ssp714II CGCAGCG
    141 SstE37I CGAAGAC(N)18NN
    142 Sth20745III GGACGAC
    143 SwaI ATTTAAAT
    144 TaqIII CACCCA(N)9NN
    145 TspARh3I GRACGAC
    146 TssI GAGNNNCTC
    147 Tth111I GACNNNGTC
    148 UbaF12I CTACNNNGTC
    149 UbaF13I GAG(N)6CTGG
    150 UbaF14I CCA(N)5TCG
    151 UbaF9I TAC(N)5RTGT
    152 UbaPI CGAACG
    153 Xca85IV TACGAG
    154 XhoI CTCGAG
    155 ZraI GACGTC

    模型矩阵

    从EPD下载,保存为data.txt
    http://epd.vital-it.ch/promoter_elements.php

    Position 1 2 3 4 5 6 7 8 9 10 11 12
    A 17.7 19.3 6.6 83.4 0 95 72.3 94.2 53.3 29.3 17.7 22.7
    C 21.1 36.1 14.8 0 0 0 0 0 0 9 32.5 33
    G 29 36.4 6.8 0 0 0 0 5.8 20.1 51.2 37.7 33.2
    T 32.2 8.2 71.8 16.6 100 5 27.7 0 26.6 10.5 12.1 11.1

    R代码

    setwd("G:/AllShare/genomicsHomework/HMMmodel")
    hmmmodel<- read.table("data.txt",header = TRUE)
    rownames(hmmmodel) <- hmmmodel$Position
    hmmmodel <- hmmmodel[,-1]
    hmmmodel <- hmmmodel/100
    hmmmodel <- t(hmmmodel)
    library(seqinr)
    promoter<- read.fasta(file = "promoter.fa")
    seqmatrix<- as.matrix(promoter$`NC_000001.11:109684796-109687800`)
    # 转成大写字母
    seqmatrix<- toupper(seqmatrix)
    maxseq<- strsplit("TGTATAAAAGGG",split = "")[[1]]
    # 计算打分值
    computeScore <- function(seq){
      score <- 1
      for(i in 1:length(seq)){
        score <- score*hmmmodel[i,seq[i]]
      }
      return(score)
    }
    # 使用bootstrap方法,计算p值
    bootstrap<- function(seq){
      flag <- 0
      for(i in 1:1000){
        tmp <- sample(seq)
        score<- computeScore(tmp)
        if(score>=computeScore(seq)){
          flag <- flag+1
        }
      }
      return(flag/1000)
    }
    maxscore<- computeScore(maxseq)
    bootstrap(maxseq)
    scorevector <- c()
    pvaluevector <- c()
    for(i in 1:(length(seqmatrix)-11)){
      tmp<- seqmatrix[i:(i+11)]
      score <- computeScore(tmp)
      pvalue <- bootstrap(tmp)
      scorevector <- c(scorevector,score)
      pvaluevector <- c(pvaluevector,pvalue)
    }
    result <- data.frame(scorevector,pvaluevector)
    result$position <- 1:(length(promoter$`NC_000001.11:109684796-109687800`)-11)
    colnames(result) <- c("score","pvalue","position")
    result$score <- result$score/maxscore
    library(ggplot2)
    ggplot(result, aes(x=position, y=score)) + 
      geom_line() + 
      geom_point(size=4, shape=20) +
      labs(title="score by HMM model")+
      theme(plot.title = element_text(hjust = 0.5))
    ggsave("HMM模型打分图.pdf")
    
    ggplot(result, aes(x=position, y=pvalue)) + 
      geom_line() + 
      geom_point(size=4, shape=20) +
      geom_hline(aes(yintercept = 0.05),colour="red",linetype="dashed")+
      labs(title="p value by HMM model")+
      scale_x_continuous(breaks = c(0,200,400,1030,1200,1632,2570,2700))+
      theme(plot.title = element_text(hjust = 0.5))
    ggsave("HMM模型p值图.pdf")
    

    序列

    Promoter序列
    >NC_000001.11:109684796-109687800 Homo sapiens chromosome 1, GRCh38.p7 Primary Assembly
    TCTGCTCTTGAACCCTGTGTTCTGTTGTTTAAGATGTTTATCAAGACAATATGTGCACCACTGAACATAG
    ACCCTTATCAGGAGTTCTACTTTTGCCTTTGTCCTGTTTCCTCAGAAGCATGTGATCTTTGTTCTGCTTT
    TTGCCCTTTAAAGCATGTGATCTTCGTACCTACCCTCTGTTCGTACACCACCACCCCTTTTGCAATCCTT
    AATAAAAACTTGCTGGTTTTGAGGCTCGGGCAGGCATCATGGTCCTACCGATATGTGATGTCACCCCTGG
    CGGCCCAGCTGTAAAATTCTTCTCTTTGTACTCTTTCTCTTTATTTCTCAGCTGGCTGACACTTATGGAA
    AATAGAAAGAACCTACGTTGAAATATTGGGGGCAGGTTCCCCAATAGCCTTGCTGAGGAAATTAAATTTA
    TGTTCAAGTGCTATTTCTTTATGGCACCAAGGAACAAGTATTTCAAACAATACTAATGTAACAGTACTGG
    TTCTATGTGTTTCAAAATTATTATTCTCATGAGTGTTAGCTTTCTTAAAAAATCGTTTTTTTTTTCAATT
    GGATCTAGACATCTTATCTTTCACAGCTCAAGACGGATTAACTCAGAATCATAAACTCTTAATGCATAAT
    GAGAAATATAATGTTTCCTAGGGCCAGGCACTTGTGTCTGTGCTGGTGCTATTGCCTCAATGCAGGAAAA
    TCTATGTAAGAGTTCACTGTGAGGCCAAAACTGCTTCCTAAACATGGATACCTGCCAGGTATCTGAGCTG
    GGAGTACTGCCCAGGTCTGGATGGGCGGGGAGTGTTTGCAACAAGGACTGTGCCTTGCCAGCCTCAGTGA
    CACAGTGTCCAAGTGCCCCAACTTAGCAGCCACCTGCTGACCACCTGATTTCTGTGGCCTAATAGGGATG
    TGATGAAGTCTACCTGTTTACTCAACCCCAAACCACACATTATCCAGGTGGTTTGAAACTTTTTTGATAT
    ACTGGGTTCATCCTCTGGAGTCCTAACAATGTTTTAGCTAATTTACAAAAAACAAAACAAAACAAAACAA
    AACAAAACAAAACAAAAAAACTACTTTTTTTGCAGCACAACAGCCTGGTTTACATTGCAAAATGATTTCT
    CATTAAAGGTCTATCATCTATTTCCATATGTCCATTATTATTTGCAATATCCTTTAAAGCAGTCAACCCC
    AGGCTAATCCATTGCACAACTCTTTTGAAAGTCTTCCTTCTACCTTGAAAGAAGAAAGTTGGCAGGTTGG
    ACATTGTTCTCGTGGAGGTTGTACCATGGGTCACATATCACGGTGTGACTTCAAAGGCCACTGGAGCCAC
    CGTCTCATACTGAAGAACACACATGGGTCAGGAGCCAGGTCCAGGTCCGGAATGGTGGATCTGGAGAGGG
    GAGGGTCCCTGCCTGTGGTCCTGTGGGGAGCCCTCAGGCTCCTCTCTGGCCACCATCCTCTGACCTCCCT
    CCTCAGCAGGACAGGGTTCTGGCTTCTCTGAGGGACAGGTTCTGTGGCAGGCCAGGCGTCACTAACACAG
    GCCTCCATAACAACTGTTTCAGTACTGACTGAGTGGTGAAGTTAAATATTAAAAGCTGAAAAAAGCCAGT
    ACCTTTATACAGAGGCTGGATGTAACAAAAGCCCACCAAGAGTTTTGCTTAGGCCTTTCCTGGGCCTTAA
    AGCATGACAAAACAATGAAGGAATTCTTAACAGGACCTATTTAGAATTAAACAAGTTTTATTGTGAGTCT
    GAAGAAACTCCCCAGGCCTCCACAAACAAGTTTATTGGGCGTCTGAAGGAACTCCCCAAACCTCCGTGAT
    TTAGCAGGAGACAAGATAAGGGTAATCATCCCCCGCACCTGGACCCATTTAGATTAAATAAATAGACTGA
    GGCTCCAGAATAAGGTCCTCAGGACCCAGACCTCAGTTACAGATTAAAGAAGTTAATCACTTATGTCTTT
    AGATGAATGCACACTTACTTGTAGACATATACCTTAGAAGGTATATATGCTCTGGAAAACTTTGTAATAT
    TGAGTTGGTCTGGTGGTAATTTCTAGGCCTTCTCCCTGTTACCGGTTGCAGAAATAAAACCTCTCTTCCT
    CCCCATTTGATCTGCATCTCGTTATTGGGCCTAGAGAAATAGCAGCCGGACCCTCAGTTTGGTCCGGGAA
    GTTCTTCCATCCTCCCTCGCCTGCTCTCTGTGGCCACTGCACTCACTGTTGCTGTTGCTGTTCCGGTCTC
    TGTGAGGTTCACCTAGTGGACTGGCTGGACATTTCTAGGGGGCACCTCAGATACCTCACCAACTTGCTGG
    ATCTGATCCTTGGATTTCGATTCATAAATTGTGCCAAAATACGAAGTGGCTAATTTACACAGTACTTAGC
    CAGATGACCGAAGGACTCAGTACCCGAGGGCCCCTAACAGAAAACACAGACCACATTTCCTTTACTCTGG
    CCCTTTTCCTGGGGGTCCTTCCTATACCACTGACACTGTTCCTGTGTAGGCGGGGCTAGAGGGGAGACTA
    AGCCCTGGGAGTAGCTTTCGGATCAGAGGAAGTCCTGCTCTTACAGTGACAGGGGCTGAATTAAATTCCC
    AGGTTGGGGCCACCACTTTTTAGTCTGACCCCTGCAGCCGGAGTCTCCCAGAGCCCTTGGGAACTCGGCA
    GCGGAGAGAAGGCTGAGGGACACCGCGGGCAGGGAGGAGAAGGGAGAAGAGCTTTGCTCCGTTAGGATCT
    GGCTGGTGTCTCAAGCGCACAGCCAAGTCGCTGTGGACCTAGCAAGGGCTGGATGGACTCGTGGAGCCTC
    AGGGCTGGGTAGGGAAGCTGGCGAGGCCGAGCCCCGCCTTGGGCTTCTGGGCGCCCTGACTTCGCTCCCG
    GAACCCTCGGGCCTGGGAGGCGGGAGGAAGTCTTACTGAGTGCAGCCCCAGGCGCCCTCTCCCGGGCCTC
    CAGAATGGCGCCTTTCGGGTTGTGGCGGGCCGAGGGGCGGGGTCGCAGCAAGGCCCCGCCTGTCC
    
    展开全文
  • 汇编语言(王爽)实验十 编写程序

    万次阅读 多人点赞 2016-07-28 16:09:21
    在这次实验中,我们将要编写3个子程序,通过它们来认识几个常见的问题掌握解决这些问题的方法。同前面的所有实验一样,这个实验是必须要独立完成的,在后面的课程中,将要用到这个实验中编写的3个子程序。 1.显示...

    标 题: 汇编实验10—— 编写子程序
    作 者: XHS_12302
    时 间: 2016_7_28 16:56

     

     

     

     

     

    实验10编写子程序


      在这次实验中,我们将要编写3个子程序,通过它们来认识几个常见的问题和掌握解决这些问题的方法。同前面的所有实验一样,这个实验是必须要独立完成的,在后面的课程中,将要用到这个实验中编写的3个子程序。
    1.  显示字符串
    问题
    显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能。我们应该提供灵活的调用接口,使调用者可以决定显示的位置(行、列)、内容和颜色。

    提示
    (1)  子程序的入口参数是屏幕上的行号和列号,注意在子程序内部要将它们转化为显存中的地址,首先要分析一下屏幕上的行列位置和显存地址的对应关系:
    (2)  注意保存子程序中用到的相关寄存器:
    (3)  这个子程序的内部处理和显存的结构密切相关,但是向外提供了与显存结构无关的接口。通过调用这个子程序,进行字符串的显示时可以不必了解显存的结构,为编程提供了方便。在实验中,注意体会这种设计思想。

    子程序描述
    名称:show_str
    功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
    参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),
        (cl)=颜色,ds:si指向字符串的首地址
    返回:无
    就用举例:在屏幕的8行3列,用绿色显示data段中的字符串。

     

     

     

     

    代码:

     

    assume cs:code
       data segment
       db 'Welcome to masm!',0
       data ends
    
     code segment
       start:  mov dh,8
               mov dl,3
               mov cl,2
               mov ax,data
               mov ds,ax
               mov si,0
               call show_str
               mov ax,4c00h
               int 21h
       show_str: push dx
                 push cx
                 push ds
                 push si
    
         mov ax,0b800h
         mov es,ax
         
         mov al,160
         mul dh
         mov bx,ax
         mov al,2
         mul dl
         add bx,ax
        mov al,cl
        
             s: mov cl,[si] 
                  jcxz ok
                  mov dx,[si]
                  mov es:[bx],dx
                  mov es:[bx+1],al
                  inc si
                  add bx,2
                  loop s
    
     ok:             
      pop si
      pop ds
      pop cx
      pop dx
    ret
    code ends
    end start 

     

     

    实验截图

     

     

     

    2.  解决除法溢出的问题
    问题
    前面讲过,div指令可以做除法。当进行8位除法的时候,用al存储结果的商,ah存储结果的余数:进行16位除法的时候,用ax存储结果的商,dx存储结果的余数。可是,现在有一个问题,如果结果的商大于ah或ax所能存储的最大值,那么将如何?
    比如,下面的程序段:
     mov bh,1
     mov ax,1000
     div bh
    进行的是8位除法,结果的商为1000,而1000在ah中放不下,
    又比如,下面的程序段:
    mov ax,1000h
    mov dx,1
    mov bx,1
    div bx
    进行的是16位除法,结果的商为11000H,而11000H在ax中存放不下。
    我们在用div指令做除法的时候,很可能发生上面的情况:结果的商过大,超出了寄存器所能存储的范围。当CPU执行div等除法指令的时候。如果发生这样的情况,将引发CPU的一个内部错误。这个错误被称为:除法溢出。我们可以通过特殊的程序来处理这个错误, 这里我们不讨论这个错误的处理,这是后面的课程中要涉及的内容。

    好了,我们已经清楚了问题的所在:用div指令做除法的时候可能产生除法溢出。由于有这样的问题,在进行除法运算的时候要注意除数和被除数的值,比如1000000/10就不能用div指令来计算。那么怎么办呢?我们用下面的子程序divdw解决。


    子程序描述
    名称:divdw
    功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型。
    参数:(ax)=dword型数据的低16位
        (dx)=dword型数据的高16位
        (cx)=除数
    返回:(dx)=结果的高16位,(ax)=结果的低16位
        (cx)=余数
    应用举例:计算1000000/10(F4240H/0AH)

      mov ax,4240h
      mov v dx,000fh
      mov cx,0ah
      call divdw


    提示
    给出一个公式:
    X:被除数,范围:[0,FFFF FFFF]
    N:除数,范围:[0,FFFF]
    H:X高16位,范围:[0,FFFF]
    L:X低16位,范围:[0,FFFF]
    int():描述性运算符,取商,比如:rem(38/10)=8
    rem():描述性运算符,取答数,比如:rem(38/10)=8
    公式:X/N=int(H/N)*65536+[rem(H/N)*65536+L]/N
    这个公式将可能产生溢出的除法运算:X/N,转变为多个不会产生溢出的除法运算。
    公式中,等号右边的所有除法运算都可以用div指令来做,肯定不会导致除法溢出。

    代码:

     

    assume cs:code
        code segment
        start:mov ax,4240h
              mov dx,000fh
              mov cx,0Ah
              call divdw
              mov ax,4c00H
              int 21h
    divdw:
          push ax
          mov ax,dx
          mov dx,0
          div cx
          mov bx,ax
          pop ax
          div cx
          mov cx,dx
          mov dx,bx
          ret    
        code ends
    end start

     

     

     

    程序截图:

     

    3.数值显示
    问题
    编程,将data段中的数据以十进制的形式显示出来。
    data segment
    dw 123,12666,1,8,3,38
    data ends
      这些数据在内存中都是二进制信息,标记了数值的大小。要把它们显示到屏幕上,成为我们能够读懂的信息,需要进行信息的转化。比如,数值12666,在机器中存储为二进制信息:0011000101111010B(317AH),计算机可以理解它。而我们要在显示器上读到可以理解的数值12666,我们看到的应该是一串字符:“12666”。由于 显卡遵循的是ASCII编码,为了让我们能在显示器上看到这串字符,它在机器中应以ASCII码的形式存储为:31H、32H、36H、36H、36H(字符“0”~“9”对应的ASCII码为30H~39H)。
      通过上面的分析可以看到,在概念世界中,有一个抽象的数据12666,它表示了一个数值的大小。在现实世界中它可以有多种表示形式,可以在电子机器中以高低电平(二进制)的形式存储,也可以在纸上、黑板上、屏幕上以人类的语言“12666”来书写。现在,我们面临的问题就是,要将同一抽象的数据,从一种表示形式转化为另一种表示形式。
      可见,要将数据用十进制形式显示到屏幕上,要进行两步工作:
    (1)  将用二进制信息存储的数据转变为十进制形式的字符串:
    (2)  显示十进制形式的字符串。
    第二步我们在本次实验的第一个子程序中已经实现,在这里只要调用一下show_str即可。我们来讨论第一步,因为将二进制信息转变为十进制形式的字符串也是经常要用到的功能,我们应该为它编写一个通用的子程序。


    子程序描述
    名称:dtoc
    功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符。
    参数:(ax)=word型数据
        ds:si指向字符串的首地址
    返回:无
    应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。
    在显示时我们调用本次实验中的第一个子程序show-str。



    提示
      下面我们对这个问题进行一下简单地分析。
    (1)  要得到字符串“12666”,就是要得到一列表示该字符的ASCII码:31H、32H、36H、36H、36H。
    十进制数码字符对应的ASCII码=十进制数码值+30H
    要得到表示十进制数的字符串,先求十进制数每位的值。
    例:对于12666,先求得每位的值:1、2、6、6、6。再将这些数分别加上30H,便得到了表示12666的ASCII码串:31H、32H、36H、36H、36H。
    (2)  那么,怎样得到每位的值呢?采用如图10.2所示的方法。

    图10.2除10取余法示意


      可见,用10除12666,共除5次,记下每次的余数,就得到了每位的值。
    (3)  综合以上分析,可得出处理过程如下:
    用12666除以10,循环5次,记下每次的余数;将每次的余数分别加30H,便得到了表示十进制数的ASCII码串,如图10.3所示。



    图10.3得到十进制每位数字字符的方法示意

     


    (4)  对(3)的质疑:
    在已知数据是12666的情况下,知道进行5次循环。可在实际问题中,数据的值是多少
    程序员并不知道,也就是说,程序员不能事先确定循环次数。
      那么,如何确定数据各位的值已经全部求出了呢?我们可以看出,只要是除到商为0,各位的值就已经全部求出。可以使用jcxz指令来实现相关的功能。

     

     

     

     

     

    代码:

     

    assume cs:code
      data segment
      db 16 dup(0)
      data ends
    
     
      code segment
        start:mov ax,12666
              mov bx,data
              mov ds,bx
              mov si,0
              call dtoc
              mov dh,8
              mov dl,3
              mov cl,2
              call show_str
              mov ax,4c00h
              int 21h
    dtoc:
           mov cx,ax    ;17
           jcxz bk
           push ax
           mov al,ah
           mov ah,0
           mov bl,10
           div bl
           mov cl,al
           mov ch,ah
           pop ax
           mov ah,ch
           div bl
           mov dl,ah
           mov dh,0
           push dx
           mov ah,cl
           jmp short dtoc   ;29
         bk:pop ax 
            add ax,30h
            mov [si],al
            
            pop ax 
            add ax,30h
            mov [si+1],al
           
            pop ax 
            add ax,30h
            mov [si+2],al
            
            pop ax 
            add ax,30h
            mov [si+3],al    ;44
            
            pop ax 
            add ax,30h
            mov [si+4],al
            mov byte ptr [si+5],0
            ret
           
         
    show_str:
         mov si,0
         mov ax,0b800h
         mov es,ax
         
         mov al,160
         mul dh
         mov bx,ax
         mov al,2
         mul dl
         add bx,ax
         mov al,cl
        
             s: mov cl,[si] 
                  jcxz ok
                  mov dx,[si]
                  mov es:[bx],dx
                  mov es:[bx+1],al
                  inc si
                  add bx,2
                  loop s
    
     ok: ret    
      code ends
    end start


    程序运行截图

     

     

    至此    实验完成    

                               题中有不足之处  希望不吝赐教

                                             文中有的 文字是借鉴别人的    除了代码和截图

                                                 完成实验参考过别的资料,在第二个实验中受过小甲鱼视频(328/2)的启发

                                                                                                   视频资料上云盘找:链接: http://pan.baidu.com/s/1nvpQiLz 密码: et5r

                                                                                                                                                                                                                                     日期:2016_7_28

    展开全文
  • 【SQL】(不)相关子查询

    千次阅读 多人点赞 2020-04-09 17:15:08
    文章目录1. 不相关子查询特点示例2.... 父),且父查询和子查询可以轻松分开单独处理 示例 题目 查询与’韩梅梅’同专业的学生信息 分析 查询:得到’韩梅梅’的专业名 父查询:利用查询的结果,查询同专业的学...

    写在前面:大家好K。首先为你点进这篇有趣的文章点赞👍!文章在撰写过程中难免有疏漏和错误,欢迎你在下方留言指出文章的不足之处;如果觉得这篇文章对你有用,也欢迎你点赞和留下你的评论。更多内容请点进👉我的博客K。👈阅览。

    (不)相关查询在嵌套查询中应用,嵌套查询最能体现SQL结构化查询的特点

    本篇内容,先看示例,食用更佳

    1. 不相关子查询

    特点

    由子向父执行(子 -> 父),且父查询和子查询可以轻松分开单独处理

    示例

    题目

    查询与’韩梅梅’同专业的学生信息

    分析

    子查询:得到’韩梅梅’的专业名

    父查询:利用子查询的结果,查询同专业的学生信息

    /* 该表结构为:
     * 学生信息表(学号,姓名,专业名)
     */
    SELECT 学号, 姓名, 专业名
    FROM 学生信息表
    WHERE 专业 IN
    	(SELECT 专业名
         FROM 学生信息表
         WHERE 姓名='韩梅梅');
    

    分步第一步:可以轻松手动分开查询,先进行子查询

    /*
     * 第一步,查询'韩梅梅'的专业名
     */
    SELECT 专业名
    FROM 学生信息表
    WHERE 姓名='韩梅梅'
    
    /*
    结果示例:得到一个集合N,里面只有一个元素'计科'
    |专业名|
    +-----+
    | 计科 |
    */
    

    分步第二步:再利用第一步结果集合N,执行父查询的操作

    /*
     * 第二步,查询'计科'专业的学生信息
     */
    SELECT 学号, 姓名, 专业名
    FROM 学生信息表
    WHERE 专业 IN N -- N 为第一步结果
    

    类似的,父子查询仅有查询结果直接的关系(父用子的结果),而查询条件之间无依赖,则为不相关子查询

    2. 相关子查询

    特点

    1. 父查询和子查询使用一些相同的查询条件,所以不易分开处理
    2. 相关子查询不能一次就求解出子查询的结果,必须反复求值
    3. 相关子查询事先规定了执行规则,有固定处理顺序

    执行规则

    (父 -> 子 -> 父)

    1. 外层查询条件的表中取出一个元组传送给内层
    2. 执行内层查询,得到一个结果,返送给外层
    3. 执行外层查询,得到一个结果,作为这一次查询结果
    4. 执行步骤1,直到外层查询条件的表的元组全部取完

    执行规则的第一步,天坑!每次查询时只取一行,随即马上传送给内层来执行!!!

    外层不是一次性传整张表,否则内层条件与外层条件同为一张表,就无意义,一定体现差异!!!

    不是从内层开始执行,不同于不相关子查询,第一步在外层取元组!!!

    不是一次就求出结果,是反复查询,自带了循环!!!

    示例

    题目:查询每个学生超过他自己选修课程平均成绩的课程名

    /* 该表结构为:
     * 课程成绩表(学号,课程名,成绩)
     */
    SELECT 学号, 课程名
    FROM 课程成绩表 x
    WHERE 成绩>=(SELECT AVG(成绩)
                  FROM 课程成绩表 y
    			  WHERE y.学号=x.学号);
    

    最后一行需要别名的原因

    外层:课程成绩表在循环时是一行一行的取值;

    内层:需要整张表y由某一行x(x在内层查询中由相关子查询的规定已经成一个元组,而非整张表)限定,所以需要起别名区分

    (表面x,y同为一张表,私底下x已变身为一行元组)

    步骤

    1. 课程成绩表中取一行(x在此处含义为元组),传送给子查询
    2. 子查询通过WHERE限定,得到仅含x元组对应学号的所有课程成绩信息的表☆
    3. 从☆表中,求得成绩的平均值,即为x元组对应学号的所有课程平均成绩O
    4. 将O带到外层查询(此处外层x的含义又变成整张表),得本次循环的查询结果
    5. 循环执行步骤1,直到课程成绩表的所有元组处理完,得到最终值
    展开全文
  • 弹性元素相关属性 有排列次序 当弹性元素少,父元素大时,有留白空间 有放大比例设置 不够的情况下缩小比例设置 单个某一个子元素的对齐方式。 下面这些都是添加在父元素上的属性 创建弹性容器 父元素上创建:...

    在父元素上面有 创建弹性容器 设置主轴方向 主轴方向上的对齐方式,留白空间。交叉轴的对齐方式 一根轴线上排不下时的对齐方式 以及多根轴线的对齐方式
    弹性子元素相关属性 有排列次序 当弹性子元素少,父元素大时,有留白空间 有放大比例设置 不够的情况下缩小比例设置 单个某一个子元素的对齐方式。

    下面这些都是添加在父元素上的属性
    创建弹性容器
    父元素上创建:display:flex; 就是将元素设置为弹性容器。若子元素过多时,会有缩放,相当于浮动,但是区别于浮动的一点是其宽高仍然存在。
    display:inline-flex; 类似于行内元素。
    设置flex之后,子元素的float clear vertical 都会失效
    设置主轴方向
    flex-direction:row; row-reverse;
    column column-reverse
    主轴方向上的对齐方式
    justify-content:flex-start;子元素位于弹性盒的开头
    flex-end;子元素位于弹性盒的结尾,
    要和主轴的反转区别:比如反转是主轴跑到了右边,从右到左为box1 box2 box3。这个是从左到右box1 box2 box3 /
    center;子元素位于弹性盒中间
    主轴方向上子元素的留白空间:
    justify-content: space-around; /
    子元素之前之后中间都有空白空间 /
    justify-content: space-between; /
    子元素之前之后都没有空白空间,只有子元素中间有空白空间 /
    交叉轴方向上的对齐方式:
    align-items: stretch; /
    stretch的英文翻译是拉长、撑大、有弹性 /
    /
    默认值 如果子元素没有高度或者高度为自动(auto)时,将占满整个容器的高。 /
    align-items: flex-start; /
    子元素在交叉轴的起点对齐 /
    align-items: flex-end; /
    子元素在交叉轴的终点对齐 /
    align-items: center; /子元素在交叉轴的中点对齐 /
    align-items: baseline;/
    子元素在第一行文字的基线对齐 /
    交叉轴方向上的留白空间:没有
    设置弹性子元素在一根轴线上排不下时的换行方式。
    flex-wrap: nowrap; /
    默认值,不换行 /
    flex-wrap: wrap;/
    换行 ,换行之后宽度都变的一致,即为自己设置的宽度,它不再会对自己做压缩
    /
    flex-wrap: wrap-reverse;/
    换行,换行之后宽度一致,即为自己设置的宽度,它不再会对自己做压缩,而且第一行显示在下方 /
    设置多根轴线的对齐方式:
    align-content属性:设置多根轴线的对齐方式,如果只有一根轴线,属性失效。
    flex-wrap: wrap;/这是换行操作,换行之后宽度都变的一致,即为自己设置的宽度,它不再会对自己的宽高做压缩/
    align-content: stretch;/默认值,轴线占满整个交叉轴.这个属性曾在交叉轴垂直对齐方式出现过/
    align-content: flex-start;/
    与交叉轴的起点对齐 /
    align-content: flex-end;/
    与交叉轴的终点对齐 /
    align-content: center; /
    与交叉轴的中点对齐 /
    align-content: space-around;/
    在交叉轴的之上、中间、之下都有空间
    align-content: space-between; /* 只在交叉轴的轴线中间有留白 /
    下面这些都是添加在子元素上的属性
    order属性:调整子元素的排列次序
    order:数值;数值不加单位,默认值为0,数值越大,排列越靠后
    flow-grow属性:调整子元素的放大比例。
    flex-grow: 0; /
    0表示正常状态,不放大 /
    /
    1表示一旦发生变化,弹性子元素的宽度也会做出相应的调整。
    1表示把剩下的剩余空间分成三份,一个子元素都占其中的一份 /
    flex-grow: 2; /
    nth-child(2)相当于是挑出子元素中的第二个盒子进行设置,设置为2之后,发现wrap2相当于分成了四份,box2自己占了两份。 /
    flex-shrink: 0;/
    因为弹性盒子display:flex设置之后,当盒子个数过多时,小盒子会自动缩放,当拉着浏览器的右侧伸缩时,盒子会跟着伸缩,一起缩放。但是加了flex-shrink之后,盒子就不会跟着缩放了,实实在在的有多宽就是多宽,会出现水平滚动条 /
    flex-shrink: 1;/
    设置为1之后就可以缩放了 /
    align-self属性:调整弹性容器中被选中的子元素的对齐方式
    align-self: auto;/
    默认值,继承了父容器的align-items属性,如果没有父元素,值为stretch /
    align-self: stretch; /
    占满整个容器的高度 /
    align-self: flex-start; /
    交叉轴的起点对齐 /
    align-self: flex-end;/
    交叉轴的终点对齐 /
    align-self: center;
    align-self: baseline;/
    子元素的第一行文字的基线对齐 */

    需要详细的属性解释和代码解释的可以留言

    展开全文
  • 元素互不相邻的最大和子数组

    千次阅读 2017-05-13 11:39:15
    题目对于一个给定的数组,在其中选取其数组,要求相邻的元素不能选取,且要保证选出的数组元素最大。输入数组长度及其元素,输出所选数组的。 测试输入 7 4 2 6 1 3 5 8 测试输出 17 分析1为了让数组...
  • 其实最后得出的结论,就是关联查询速度快于查询 写这篇的目的主要是把尝试过的方法给记录下,同时复习下有一段时间没有用过的oracle存储过程、自定义函数、包的写法 一、问题说明 为了说清楚问题的核心,我把...
  • 为了实现这一方式我的思路是:1、首先判断当前二级菜单是否处于显示的转态2、根据二级菜单的显示与否来通过其他区域的父控件截取控件的触摸事件,做收回二级菜单操作第二个步骤就使用到了父控件和子控件之间的触摸...
  • Android的ListViewItem选中改变TextView字体颜色。
  • SQL相关子查询与非相关子查询

    万次阅读 多人点赞 2018-07-05 10:31:04
    SQL查询可以分为相关子查询非相关子查询两类。 假设Books表如下: 类编号 图书名 出版社 价格 2 c#高级应用 圣通出版 23.00 2 Jsp开发应用 机械出版社...
  • 棋(井棋)的实现

    千次阅读 多人点赞 2021-01-26 12:01:30
    棋(井棋)的玩法规则 两个玩家,一个打圈(O),一个打叉(X),(用什么符号可以根据自己想法使用)轮流在3乘3的格上打自己的符号,最先以横、直、斜连成一线则为胜。如果双方都下得正确无误,将得和局。 如何用...
  • 查询组合查询

    2015-10-25 23:12:03
    什么是查询? 嵌套在朱查询中的查询--查询 也就是说查询是潜逃在查询语句里面的查询语句,就像语句块里潜逃语句块类似...查询分为两种:一种无相关查询,一种是相关查询. 在select中嵌套 嵌套在select语句中
  • 【注】:为方便起见,如果所有整数均为负数,则最大序列为0。 解决这样一个问题是一个很有趣的过程,我们可以尝试着从复杂度比较高的算法一步一步地推出复杂度较低的算法。 【算法1】  时间...
  • 窗口及其相关

    2008-07-30 16:20:00
    建立窗口BTNLOOK定义了一个叫做button的结构,它包括了按钮窗口样式描述性字符串,它们对应于10个按钮型态,所有按钮窗口样式都以字母「BS」开头,它表示「按钮样式」。10个按钮子窗口是在WndProc中处理WM_...
  • 动态规划解最长公共序列(LCS)(附详细填表过程)

    万次阅读 多人点赞 2018-11-20 12:51:34
    目录 相关概念 序列形式化定义: ...下面演示下c数组的填表过程:(以求ABCBBDCA的LCS长度为例): 时间复杂度: 代码: 结果示例: 相关概念 序列形式化定义: 给定一个序列X=<x1,x2,x3,x...
  • 前言:上篇,我们说了有关代码生成菜单和子菜单的方法,这里我们再讲讲有关利用XML生成菜单和子菜单的问题。 业精于勤,荒于嬉,行成于思,毁于随 (日拱一卒) 系列文章: 1、《Menu详解(一):代码实现...
  • in关键字在查询中主要用在列子查询中代替人为手工罗列出来的多个“面值”数据。 举例: 找出联想品牌的商品都有哪些类别。 select * from product_type where protype_id in( #找出联想品牌的所有商品的...
  • fork() 进程父进程

    2014-08-05 22:03:20
    一、fork后的父子进程 ...将进程id返回给父进程的理由是:因为一个进程的进程可以多于一个,没有一个函数使一个进程可以获得其所有进程的进程id。对子进程来说,之所以fork返回0给它,是因为它随时可以调用
  • DSP6678网络系统之交换系统

    千次阅读 2018-07-25 13:06:14
    网络交换系统由EMAC模块、SGMII模块、PHY设备、MDIO模块、网络交换机、以及系统集成的其他相关模块。 NETCP的网络交换系统的主要作用是提供一个在主设备其他连接设备间进行数据传输的接口。 网络交换...
  • 程序设计

    2019-11-04 00:35:58
    设计良好的程序,如果其中要用到寄存器,则应在开头保存它将要用到的寄存器内容,而在返回前恢复它们,以保证调用...例如,要注意CALL调用类型和子程序定义类型的一致性、PUSHPOP指令的匹配、通过堆栈传递参数...
  • 数组中连续的一个或多个整数组成一个数组,每个数组都有一个。求所有数组的的最大值。 例如输入的数组为-9 -3 -2 2 -1 2 5 -7 1 5,最大的数组为2 -1 2 5。因此输出为该数组的8。 ...
  • SQL入门:相关子查询

    2007-11-22 23:06:00
    允许引用先前提到的任何表... 下列示例是一个不相关子查询,该查询列出部门 A00 中薪水超过该部门平均薪水的雇员的雇员编号姓名: SELECT EMPNO, LASTNAME FROM EMPLOYEE WHERE WORKDEPT = A00 AND SALARY > (S
  • 2,为一段文字中某些单独设置字体大小 3,设置字体 二,通过Span 相关知识 前言 有时候一个TextView显示很多文字,所有文字颜色,字体,大小不统一;这个时候就需要单独设置某些; 一,通过Html实现 1,...
  • Mysql查询

    2020-10-14 09:01:07
    查询分类 按照查询结果集的行列数的不分为4种 标量子查询(结果集中只有1行1列) 列子查询(结果集中只有1列多行) ...先执行主查询,然后将主查询的结果根据查询进行过滤,查询中涉及到主查询中用到的
  • 1、查询: 为什么要查询? 现有一数据表如下: 根据之前的知识我们可以查出每门科目的最高分,但是要想查出取得最高分的学生信息就做不到了。这时就需要用到查询来取得完整的信息。 什么是查询?...
  • 这章也算是高级查询的内容...查询就复杂了,分为:相关子查询、非相关子查询(单行单列子查询(标量子查询)、多行单列子查询、多列子查询)内联视图。其中,相关子查询最不好理解了,需要继续学习! --TBC 2016-
  • Mysql中的数据分组和子查询

    千次阅读 2017-04-19 21:13:43
    Mysql中的数据分组和子查询 一、数据分组 1、创建分组 分组是在SELECT语句的GROUP BY子句中建立的。 示例:SELECT book_id,COUNT(*) AS book_num FROM book GROUP BY book_id 上述语句首先根据book_id进行分组...
  • fork出的进程父进程

    千次阅读 2019-06-01 21:44:15
    进程id返回给父进程的理由是:因为一个进程的进程可以多于一个,没有一个函数使一个进程可以获得其所有进程的进程id。对子进程来说,之所以fork返回0给它,是因为它随时可以调用getp...
  • 今天再次就这个问题分析一下网站栏目选择目录和子域名的利弊。 首先要弄起什么是目录和子域名,那我的印度电影网来说吧,网站有爱情片、喜剧片、动作片等几个栏目, 主站网址:www.yindudianying.com...
  • VC父窗口和子窗口

    千次阅读 2016-05-16 16:05:41
    一、概念区别  在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息管理每个窗口。这个数据结构中有四个数据用来构建list,即child、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 656,285
精华内容 262,514
关键字:

和子有关的字