c语言正则表达式库pcre使用例子

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 


#define OVECCOUNT 30 /* should be a multiple of 3 */
#define EBUFLEN 128
#define BUFLEN 1024

int main_adfs()
{
    pcre *reCM, *reUN, *reTC, *reCDMA;
    const char *error;
    int erroffset;
    int ovector[OVECCOUNT];
    int rcCM, rcUN, rcTC, rcCDMA, i;

    /*
            yidong:134.135.136.137.138.139.150.151.152.157.158.159.187.188,147
            liandong:130.131.132.155.156.185.186
            dianxin:133.153.180.189
            CDMA :133,153
         */
    char src[22];
    char pattern_CM[] = "^1(3[4-9]|5[012789]|8[78])\\d{8}$";
    char pattern_UN[] = "^1(3[0-2]|5[56]|8[56])\\d{8}$";
    char pattern_TC[] = "^18[09]\\d{8}$";
    char pattern_CDMA[] = "^1[35]3\\d{8}$";

    printf("please input your telephone number \n");
    scanf("%s", src);
    printf("String : %s\n", src);
    printf("Pattern_CM: \"%s\"\n", pattern_CM);
    printf("Pattern_UN: \"%s\"\n", pattern_UN);
    printf("Pattern_TC: \"%s\"\n", pattern_TC);
    printf("Pattern_CDMA: \"%s\"\n", pattern_CDMA);

    reCM = pcre_compile(pattern_CM, 0, &error, &erroffset, NULL);
    reUN = pcre_compile(pattern_UN, 0, &error, &erroffset, NULL);
    reTC = pcre_compile(pattern_TC, 0, &error, &erroffset, NULL);
    reCDMA = pcre_compile(pattern_CDMA, 0, &error, &erroffset, NULL);

    if (reCM==NULL && reUN==NULL && reTC==NULL && reCDMA==NULL) {
        printf("PCRE compilation telephone failed at offset %d: %s\n", erroffset, error);
        return 1;
    }

    rcCM = pcre_exec(reCM, NULL, src, strlen(src), 0, 0, ovector, OVECCOUNT);
    rcUN = pcre_exec(reUN, NULL, src, strlen(src), 0, 0, ovector, OVECCOUNT);
    rcTC = pcre_exec(reTC, NULL, src, strlen(src), 0, 0, ovector, OVECCOUNT);
    rcCDMA = pcre_exec(reCDMA, NULL, src, strlen(src), 0, 0, ovector, OVECCOUNT);

    if (rcCM<0 && rcUN<0 && rcTC<0 && rcCDMA<0) {
        if (rcCM==PCRE_ERROR_NOMATCH && rcUN==PCRE_ERROR_NOMATCH &&
                rcTC==PCRE_ERROR_NOMATCH && rcTC==PCRE_ERROR_NOMATCH) {
            printf("Sorry, no match ...\n");
        }
        else {
            printf("Matching error %d\n", rcCM);
            printf("Matching error %d\n", rcUN);
            printf("Matching error %d\n", rcTC);
            printf("Matching error %d\n", rcCDMA);
        }
        free(reCM);
        free(reUN);
        free(reTC);
        free(reCDMA);
        return 1;
    }
    printf("\nOK, has matched ...\n\n");
    if (rcCM > 0) {
        printf("Pattern_CM: \"%s\"\n", pattern_CM);
        printf("String : %s\n", src);
    }
    if (rcUN > 0) {
        printf("Pattern_UN: \"%s\"\n", pattern_UN);
        printf("String : %s\n", src);
    }
    if (rcTC > 0) {
        printf("Pattern_TC: \"%s\"\n", pattern_TC);
        printf("String : %s\n", src);
    }
    if (rcCDMA > 0) {
        printf("Pattern_CDMA: \"%s\"\n", pattern_CDMA);
        printf("String : %s\n", src);
    }
    free(reCM);
    free(reUN);
    free(reTC);
    free(reCDMA);
    return 0;
}

#include 
#include 
#include 
#define OVECCOUNT 30 /* should be a multiple of 3 */
#define EBUFLEN 128
#define BUFLEN 1024

int main(int argc, char **argv)
{


    pcre *re;
    const char *error;
    int  erroffset;
    int  ovector[OVECCOUNT];
    int  rc, i;

    char src[] = "123.123.123.123:80|1.1.1.1:88";
    char pattern[] = "(\\d*.\\d*.\\d*.\\d*):(\\d*)";

    printf("String : %s\n", src);
    printf("Pattern: \"%s\"\n", pattern);


    re = pcre_compile(pattern, 0, &error, &erroffset, NULL);
    if (re == NULL) {
        printf("PCRE compilation failed at offset %d: %s\n", erroffset, error);
        return 1;
    }

    char *p = src;
    while ( ( rc = pcre_exec(re, NULL, p, strlen(p), 0, 0, ovector, OVECCOUNT)) != PCRE_ERROR_NOMATCH )
    {
        printf("\nOK, has matched ...\n\n");

        for (i = 0; i < rc; i++)
        {
            char *substring_start = p + ovector[2*i];
            int substring_length = ovector[2*i+1] - ovector[2*i];
            char matched[1024];
            memset( matched, 0, 1024 );
            strncpy( matched, substring_start, substring_length );

            printf( "match:%s\n", matched );
        }

        p += ovector[1];
        if ( !p )
        {
            break;
        }
    }
    pcre_free(re);

    return 0;
}

/*************************************************
*           PCRE DEMONSTRATION PROGRAM           *
*************************************************/

/* This is a demonstration program to illustrate the most straightforward ways
of calling the PCRE regular expression library from a C program. See the
pcresample documentation for a short discussion ("man pcresample" if you have
the PCRE man pages installed).

In Unix-like environments, if PCRE is installed in your standard system
libraries, you should be able to compile this program using this command:

gcc -Wall pcredemo.c -lpcre -o pcredemo

If PCRE is not installed in a standard place, it is likely to be installed with
support for the pkg-config mechanism. If you have pkg-config, you can compile
this program using this command:

gcc -Wall pcredemo.c `pkg-config --cflags --libs libpcre` -o pcredemo

If you do not have pkg-config, you may have to use this:

gcc -Wall pcredemo.c -I/usr/local/include -L/usr/local/lib \
  -R/usr/local/lib -lpcre -o pcredemo

Replace "/usr/local/include" and "/usr/local/lib" with wherever the include and
library files for PCRE are installed on your system. Only some operating
systems (e.g. Solaris) use the -R option.

Building under Windows:

If you want to statically link this program against a non-dll .a file, you must
define PCRE_STATIC before including pcre.h, otherwise the pcre_malloc() and
pcre_free() exported functions will be declared __declspec(dllimport), with
unwanted results. So in this environment, uncomment the following line. */

/* #define PCRE_STATIC */

#include 
#include 
#include 

#define OVECCOUNT 30    /* should be a multiple of 3 */


//http://tool.chinaz.com/regex/
int main2(int argc, char **argv)
{
    pcre *re;
    const char *error;
    char *pattern;
    char *subject;
    unsigned char *name_table;
    unsigned int option_bits;
    int erroffset;
    int find_all;
    int crlf_is_newline;
    int namecount;
    int name_entry_size;
    int ovector[OVECCOUNT];
    int subject_length;
    int rc, i;
    int utf8;


    /**************************************************************************
* First, sort out the command line. There is only one possible option at  *
* the moment, "-g" to request repeated matching to find all occurrences,  *
* like Perl's /g option. We set the variable find_all to a non-zero value *
* if the -g option is present. Apart from that, there must be exactly two *
* arguments.                                                              *
**************************************************************************/

    find_all = 0;
    for (i = 1; i < argc; i++)
    {
        if (strcmp(argv[i], "-g") == 0) find_all = 1;
        else break;
    }

    /* After the options, we require exactly two arguments, which are the pattern,
and the subject string. */

    if (argc - i != 2)
    {
        printf("Two arguments required: a regex and a subject string\n");
        return 1;
    }

    pattern = argv[i];
    subject = argv[i+1];
    subject_length = (int)strlen(subject);


    /*************************************************************************
* Now we are going to compile the regular expression pattern, and handle *
* and errors that are detected.                                          *
*************************************************************************/

    re = pcre_compile(
                pattern,              /* the pattern */
                0,                    /* default options */
                &error,               /* for error message */
                &erroffset,           /* for error offset */
                NULL);                /* use default character tables */

    /* Compilation failed: print the error message and exit */

    if (re == NULL)
    {
        printf("PCRE compilation failed at offset %d: %s\n", erroffset, error);
        return 1;
    }


    /*************************************************************************
* If the compilation succeeded, we call PCRE again, in order to do a     *
* pattern match against the subject string. This does just ONE match. If *
* further matching is needed, it will be done below.                     *
*************************************************************************/

    rc = pcre_exec(
                re,                   /* the compiled pattern */
                NULL,                 /* no extra data - we didn't study the pattern */
                subject,              /* the subject string */
                subject_length,       /* the length of the subject */
                0,                    /* start at offset 0 in the subject */
                0,                    /* default options */
                ovector,              /* output vector for substring information */
                OVECCOUNT);           /* number of elements in the output vector */

    /* Matching failed: handle error cases */

    if (rc < 0)
    {
        switch(rc)
        {
        case PCRE_ERROR_NOMATCH: printf("No match\n"); break;
            /*
    Handle other special cases if you like
    */
        default: printf("Matching error %d\n", rc); break;
        }
        pcre_free(re);     /* Release memory used for the compiled pattern */
        return 1;
    }

    /* Match succeded */

    printf("\nMatch succeeded at offset %d\n", ovector[0]);


    /*************************************************************************
* We have found the first match within the subject string. If the output *
* vector wasn't big enough, say so. Then output any substrings that were *
* captured.                                                              *
*************************************************************************/

    /* The output vector wasn't big enough */

    if (rc == 0)
    {
        rc = OVECCOUNT/3;
        printf("ovector only has room for %d captured substrings\n", rc - 1);
    }

    /* Show substrings stored in the output vector by number. Obviously, in a real
application you might want to do things other than print them. */

    for (i = 0; i < rc; i++)
    {
        char *substring_start = subject + ovector[2*i];
        int substring_length = ovector[2*i+1] - ovector[2*i];
        printf("%2d: %.*s\n", i, substring_length, substring_start);
    }


    /**************************************************************************
* That concludes the basic part of this demonstration program. We have    *
* compiled a pattern, and performed a single match. The code that follows *
* shows first how to access named substrings, and then how to code for    *
* repeated matches on the same subject.                                   *
**************************************************************************/

    /* See if there are any named substrings, and if so, show them by name. First
we have to extract the count of named parentheses from the pattern. */

    (void)pcre_fullinfo(
                re,                   /* the compiled pattern */
                NULL,                 /* no extra data - we didn't study the pattern */
                PCRE_INFO_NAMECOUNT,  /* number of named substrings */
                &namecount);          /* where to put the answer */

    if (namecount <= 0) printf("No named substrings\n"); else
    {
        unsigned char *tabptr;
        printf("Named substrings\n");

        /* Before we can access the substrings, we must extract the table for
  translating names to numbers, and the size of each entry in the table. */

        (void)pcre_fullinfo(
                    re,                       /* the compiled pattern */
                    NULL,                     /* no extra data - we didn't study the pattern */
                    PCRE_INFO_NAMETABLE,      /* address of the table */
                    &name_table);             /* where to put the answer */

        (void)pcre_fullinfo(
                    re,                       /* the compiled pattern */
                    NULL,                     /* no extra data - we didn't study the pattern */
                    PCRE_INFO_NAMEENTRYSIZE,  /* size of each entry in the table */
                    &name_entry_size);        /* where to put the answer */

        /* Now we can scan the table and, for each entry, print the number, the name,
  and the substring itself. */

        tabptr = name_table;
        for (i = 0; i < namecount; i++)
        {
            int n = (tabptr[0] << 8) | tabptr[1];
            printf("(%d) %*s: %.*s\n", n, name_entry_size - 3, tabptr + 2,
                   ovector[2*n+1] - ovector[2*n], subject + ovector[2*n]);
            tabptr += name_entry_size;
        }
    }


    /*************************************************************************
* If the "-g" option was given on the command line, we want to continue  *
* to search for additional matches in the subject string, in a similar   *
* way to the /g option in Perl. This turns out to be trickier than you   *
* might think because of the possibility of matching an empty string.    *
* What happens is as follows:                                            *
*                                                                        *
* If the previous match was NOT for an empty string, we can just start   *
* the next match at the end of the previous one.                         *
*                                                                        *
* If the previous match WAS for an empty string, we can't do that, as it *
* would lead to an infinite loop. Instead, a special call of pcre_exec() *
* is made with the PCRE_NOTEMPTY_ATSTART and PCRE_ANCHORED flags set.    *
* The first of these tells PCRE that an empty string at the start of the *
* subject is not a valid match; other possibilities must be tried. The   *
* second flag restricts PCRE to one match attempt at the initial string  *
* position. If this match succeeds, an alternative to the empty string   *
* match has been found, and we can print it and proceed round the loop,  *
* advancing by the length of whatever was found. If this match does not  *
* succeed, we still stay in the loop, advancing by just one character.   *
* In UTF-8 mode, which can be set by (*UTF8) in the pattern, this may be *
* more than one byte.                                                    *
*                                                                        *
* However, there is a complication concerned with newlines. When the     *
* newline convention is such that CRLF is a valid newline, we want must  *
* advance by two characters rather than one. The newline convention can  *
* be set in the regex by (*CR), etc.; if not, we must find the default.  *
*************************************************************************/

    if (!find_all)     /* Check for -g */
    {
        pcre_free(re);   /* Release the memory used for the compiled pattern */
        return 0;        /* Finish unless -g was given */
    }

    /* Before running the loop, check for UTF-8 and whether CRLF is a valid newline
sequence. First, find the options with which the regex was compiled; extract
the UTF-8 state, and mask off all but the newline options. */

    (void)pcre_fullinfo(re, NULL, PCRE_INFO_OPTIONS, &option_bits);
    utf8 = option_bits & PCRE_UTF8;
    option_bits &= PCRE_NEWLINE_CR|PCRE_NEWLINE_LF|PCRE_NEWLINE_CRLF|
            PCRE_NEWLINE_ANY|PCRE_NEWLINE_ANYCRLF;

    /* If no newline options were set, find the default newline convention from the
build configuration. */

    if (option_bits == 0)
    {
        int d;
        (void)pcre_config(PCRE_CONFIG_NEWLINE, &d);
        /* Note that these values are always the ASCII ones, even in
  EBCDIC environments. CR = 13, NL = 10. */
        option_bits = (d == 13)? PCRE_NEWLINE_CR :
                                 (d == 10)? PCRE_NEWLINE_LF :
                                            (d == (13<<8 | 10))? PCRE_NEWLINE_CRLF :
                                                                 (d == -2)? PCRE_NEWLINE_ANYCRLF :
                                                                            (d == -1)? PCRE_NEWLINE_ANY : 0;
    }

    /* See if CRLF is a valid newline sequence. */

    crlf_is_newline =
            option_bits == PCRE_NEWLINE_ANY ||
            option_bits == PCRE_NEWLINE_CRLF ||
            option_bits == PCRE_NEWLINE_ANYCRLF;

    /* Loop for second and subsequent matches */

    for (;;)
    {
        int options = 0;                 /* Normally no options */
        int start_offset = ovector[1];   /* Start at end of previous match */

        /* If the previous match was for an empty string, we are finished if we are
  at the end of the subject. Otherwise, arrange to run another match at the
  same point to see if a non-empty match can be found. */

        if (ovector[0] == ovector[1])
        {
            if (ovector[0] == subject_length) break;
            options = PCRE_NOTEMPTY_ATSTART | PCRE_ANCHORED;
        }

        /* Run the next matching operation */

        rc = pcre_exec(
                    re,                   /* the compiled pattern */
                    NULL,                 /* no extra data - we didn't study the pattern */
                    subject,              /* the subject string */
                    subject_length,       /* the length of the subject */
                    start_offset,         /* starting offset in the subject */
                    options,              /* options */
                    ovector,              /* output vector for substring information */
                    OVECCOUNT);           /* number of elements in the output vector */

        /* This time, a result of NOMATCH isn't an error. If the value in "options"
  is zero, it just means we have found all possible matches, so the loop ends.
  Otherwise, it means we have failed to find a non-empty-string match at a
  point where there was a previous empty-string match. In this case, we do what
  Perl does: advance the matching position by one character, and continue. We
  do this by setting the "end of previous match" offset, because that is picked
  up at the top of the loop as the point at which to start again.

  There are two complications: (a) When CRLF is a valid newline sequence, and
  the current position is just before it, advance by an extra byte. (b)
  Otherwise we must ensure that we skip an entire UTF-8 character if we are in
  UTF-8 mode. */

        if (rc == PCRE_ERROR_NOMATCH)
        {
            if (options == 0) break;                    /* All matches found */
            ovector[1] = start_offset + 1;              /* Advance one byte */
            if (crlf_is_newline &&                      /* If CRLF is newline & */
                    start_offset < subject_length - 1 &&    /* we are at CRLF, */
                    subject[start_offset] == '\r' &&
                    subject[start_offset + 1] == '\n')
                ovector[1] += 1;                          /* Advance by one more. */
            else if (utf8)                              /* Otherwise, ensure we */
            {                                         /* advance a whole UTF-8 */
                while (ovector[1] < subject_length)       /* character. */
                {
                    if ((subject[ovector[1]] & 0xc0) != 0x80) break;
                    ovector[1] += 1;
                }
            }
            continue;    /* Go round the loop again */
        }

        /* Other matching errors are not recoverable. */

        if (rc < 0)
        {
            printf("Matching error %d\n", rc);
            pcre_free(re);    /* Release memory used for the compiled pattern */
            return 1;
        }

        /* Match succeded */

        printf("\nMatch succeeded again at offset %d\n", ovector[0]);

        /* The match succeeded, but the output vector wasn't big enough. */

        if (rc == 0)
        {
            rc = OVECCOUNT/3;
            printf("ovector only has room for %d captured substrings\n", rc - 1);
        }

        /* As before, show substrings stored in the output vector by number, and then
  also any named substrings. */

        for (i = 0; i < rc; i++)
        {
            char *substring_start = subject + ovector[2*i];
            int substring_length = ovector[2*i+1] - ovector[2*i];
            printf("%2d: %.*s\n", i, substring_length, substring_start);
        }

        if (namecount <= 0) printf("No named substrings\n"); else
        {
            unsigned char *tabptr = name_table;
            printf("Named substrings\n");
            for (i = 0; i < namecount; i++)
            {
                int n = (tabptr[0] << 8) | tabptr[1];
                printf("(%d) %*s: %.*s\n", n, name_entry_size - 3, tabptr + 2,
                       ovector[2*n+1] - ovector[2*n], subject + ovector[2*n]);
                tabptr += name_entry_size;
            }
        }
    }      /* End of loop to find second and subsequent matches */

    printf("\n");
    pcre_free(re);       /* Release memory used for the compiled pattern */
    return 0;
}

/* End of pcredemo.c */

#include 
#include 
#include 

int main_split(int argc, char **argv)
{
    pcre *re;
    const char *error;
    int errorOffset, i = 0;
    /**
     * pcre_exec匹配的结果
     * ovector的结构为
     * {匹配结果1的起始位置,匹配结果1的结束位置,匹配结果2的起始位置,...匹配结果N的结束位置}
     */
    int oveccount = 2;
    int ovector[2];

    /**
     * rc是pcre_exec匹配到的结果数量
     */
    int rc;
    /**
     * pcre_exec执行的偏移量
     * 从匹配到的结果的结束位置开始下一次匹配
     */
    int exec_offset = 0;


    const char *captured_string;
    char *subject = "1t  2t  3t  4t    5t  6t7t8t9t0ta tbtct f1024 t 96t";
    char *pattern = "[^ ]+[^ ]";

    re = pcre_compile( pattern, PCRE_CASELESS, &error, &errorOffset, NULL );

    if ( re == NULL ) {
        printf("compilation failed at offset%d: %s\n", errorOffset, error);
        return 0;
    }

    do {
        // exec_offset偏移量 默认从1开始,然后循环的时候从匹配到的结果开始
        rc = pcre_exec( re, NULL, subject, strlen(subject), exec_offset, 0, ovector, oveccount );
        if ( rc > 0 ) {
            // 获取到匹配的结果
            pcre_get_substring( subject, ovector, rc, 0, &captured_string );
            printf("captured string : [%s]\n", captured_string);
            // 设置偏移量
            exec_offset = ovector[1];
            i++;
        }
    } while ( rc > 0 );

    printf("match %d\n", i);

    return 0;
}

#include 
#include 
#include 
#define OVECCOUNT 30 /* should be a multiple of 3 */
#define EBUFLEN 128
#define BUFLEN 1024

int main002()
{
    pcre  *re;
    const char *error;
    int  erroffset;
    int  ovector[OVECCOUNT];
    int  rc, i;
    char  src [] = "111 Hello World 222";   // 要被用来匹配的字符串
    char  pattern [] = "(.*)</(tit)le>";              // 将要被编译的字符串形式的正则表达式
    printf("String : %s\n", src);
    printf("Pattern: \"%s\"\n", pattern);
    re = pcre_compile(pattern,       // pattern, 输入参数,将要被编译的字符串形式的正则表达式
                      0,            // options, 输入参数,用来指定编译时的一些选项
                      &error,       // errptr, 输出参数,用来输出错误信息
                      &erroffset,   // erroffset, 输出参数,pattern中出错位置的偏移量
                      NULL);        // tableptr, 输入参数,用来指定字符表,一般情况用NULL
    // 返回值:被编译好的正则表达式的pcre内部表示结构
    if (re == NULL) {                 //如果编译失败,返回错误信息
        printf("PCRE compilation failed at offset %d: %s\n", erroffset, error);
        return 1;
    }
    rc = pcre_exec(re,            // code, 输入参数,用pcre_compile编译好的正则表达结构的指针
                   NULL,          // extra, 输入参数,用来向pcre_exec传一些额外的数据信息的结构的指针
                   src,           // subject, 输入参数,要被用来匹配的字符串
                   strlen(src),  // length, 输入参数, 要被用来匹配的字符串的指针
                   0,             // startoffset, 输入参数,用来指定subject从什么位置开始被匹配的偏移量
                   0,             // options, 输入参数, 用来指定匹配过程中的一些选项
                   ovector,       // ovector, 输出参数,用来返回匹配位置偏移量的数组
                   OVECCOUNT);    // ovecsize, 输入参数, 用来返回匹配位置偏移量的数组的最大大小
    // 返回值:匹配成功返回非负数,没有匹配返回负数
    if (rc < 0) {                     //如果没有匹配,返回错误信息
        if (rc == PCRE_ERROR_NOMATCH)
            printf("Sorry, no match ...\n");
        else
            printf("Matching error %d\n", rc);
        pcre_free(re);
        return 1;
    }
    printf("\nOK, has matched ...\n\n");   //没有出错,已经匹配
    for (i = 0; i < rc; i++) {             //分别取出捕获分组 $0整个正则公式 $1第一个()
        char *substring_start = src + ovector[2*i];
        int substring_length = ovector[2*i+1] - ovector[2*i];

        printf("$%2d: %.*s\n", i, substring_length, substring_start);
    }

    pcre_free(re);                     // 编译正则表达式re 释放内存
    return 0;
}
</code></pre> 
  <br> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1177205966534406144"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(c/c++)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1902038387670446080.htm"
                           title="python的try和except_Python 异常处理(Try...Except)" target="_blank">python的try和except_Python 异常处理(Try...Except)</a>
                        <span class="text-muted">weixin_40001309</span>

                        <div>版权所有,未经许可,禁止转载try块让你可以检测代码块中的错误。except块让你可以处理错误。finally块让你可以执行最终代码,不管try与except块的结果如何,finally块的代码都将执行。异常处理当错误(或者异常)发生时,Python通常会停止执行,并报错。这些异常可以使用try/except语句处理:示例下面try块会产生异常,因为x没有定义:try:print(x)except</div>
                    </li>
                    <li><a href="/article/1902036121492189184.htm"
                           title="NLP高频面试题(四)——BN和LN的区别与联系,为什么attention要用LN" target="_blank">NLP高频面试题(四)——BN和LN的区别与联系,为什么attention要用LN</a>
                        <span class="text-muted">Chaos_Wang_</span>
<a class="tag" taget="_blank" href="/search/NLP%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">NLP常见面试题</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>在深度学习模型中,Normalization是一种极为重要的技巧,BatchNormalization(BN)和LayerNormalization(LN)是其中最为常用的两种方法。然而,二者在实际应用中有着明显的区别与联系,尤其在Transformer的Attention机制中,LN有着独特的优势。一、BN与LN的核心区别与联系1.BatchNormalization(BN)BN的思想源于一个叫</div>
                    </li>
                    <li><a href="/article/1902035994551578624.htm"
                           title="一文掌握python异常处理(try...except...)" target="_blank">一文掌握python异常处理(try...except...)</a>
                        <span class="text-muted">程序员neil</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>目录1、基础结构2、try块3、except块4、else块5、finally块6、自定义异常7、抛出异常8、常用的内置异常类型1)、Exception:捕捉所有异常。2)、BaseException:所有异常的基类。通常不应该直接捕获这个类的实例,除非你确实打算捕获所有异常。3)、SyntaxError:Python语法错误,比如拼写错误或不正确的语句结构。4)、ImportError:尝试导入</div>
                    </li>
                    <li><a href="/article/1902035489997778944.htm"
                           title="利用Python进行数据可视化(Plotly与Dash的应用)" target="_blank">利用Python进行数据可视化(Plotly与Dash的应用)</a>
                        <span class="text-muted">步入烟尘</span>
<a class="tag" taget="_blank" href="/search/Python%E8%B6%85%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97%E5%85%A8%E5%86%8C/1.htm">Python超入门指南全册</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/plotly/1.htm">plotly</a>
                        <div>本文已收录于《Python超入门指南全册》本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从基础到精通不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/mrdeam/category_12647587.html优点:订阅限时19.9付费专栏,私信博主还可进入全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以</div>
                    </li>
                    <li><a href="/article/1902035489347661824.htm"
                           title="基于STM32单片机的人脸识别电子密码锁RFID刷卡门禁锁设计+红外避障检测人流量液晶显示设计DIY25-147" target="_blank">基于STM32单片机的人脸识别电子密码锁RFID刷卡门禁锁设计+红外避障检测人流量液晶显示设计DIY25-147</a>
                        <span class="text-muted">通旺科技</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a>
                        <div>STM32单片机+红外人流量统计+人脸识别(管理)+RFID刷卡+密码可设+TFT屏+舵机+蜂鸣器+矩阵按键本系统由STM32F103C8T6单片机核心板、1.44寸TFT彩屏、红外避障传感器、人脸识别模块、RFID射频卡读写模块、舵机驱动电路、蜂鸣器报警电路、矩阵按键电路及电源组成。【1】设备识别到已录入的人脸信息、已录入的RFID卡号信息、输入密码正确,则进行舵机控制,打开门禁;同时液晶能够显</div>
                    </li>
                    <li><a href="/article/1902034984961634304.htm"
                           title="JavaScript基础-DOM 简介" target="_blank">JavaScript基础-DOM 简介</a>
                        <span class="text-muted">難釋懷</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在现代Web开发中,JavaScript与HTML和CSS一起构成了网页的核心技术。而在这三者之中,DOM(DocumentObjectModel,文档对象模型)作为浏览器处理网页内容的一种接口,扮演着至关重要的角色。通过DOM,JavaScript能够动态地访问和操作网页的内容、结构以及样式。本文将介绍DOM的基本概念、核心组成部分以及如何使用JavaScript来操作DOM。一、什么是DOM?</div>
                    </li>
                    <li><a href="/article/1902034481099894784.htm"
                           title="python中 except与 except Exception as e的区别" target="_blank">python中 except与 except Exception as e的区别</a>
                        <span class="text-muted">东木月</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python%E6%80%A7%E8%83%BD%E6%8F%90%E5%8D%87/1.htm">python性能提升</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>python中except与exceptExceptionase的区别1、捕获所有异常使用except#-*-coding:utf-8-*-"""@contact:微信1257309054@file:except与exceptExceptionase的区别.py@time:2024/4/1313:26@author:LDC"""importsysdeffun1():try:sys<</div>
                    </li>
                    <li><a href="/article/1902033347937366016.htm"
                           title="【H2O2 | 软件开发】什么是Promise?" target="_blank">【H2O2 | 软件开发】什么是Promise?</a>
                        <span class="text-muted">过期的H2O2</span>
<a class="tag" taget="_blank" href="/search/%E3%80%90H2O2%E3%80%91%E5%85%A8%E6%A0%88%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">【H2O2】全栈面试题</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ecmascript6/1.htm">ecmascript6</a>
                        <div>目录前言开篇语准备工作正文概述三种状态创建和使用链式操作多对象处理语法糖回调地狱和优化结束语前言开篇语本系列为短篇,每次讲述少量知识点,无需一次性灌输太多的新知识点。该主题文章主要是围绕前端、全栈开发相关面试常见问题撰写的,希望对诸位有所帮助。如果您需要为面试八股文做准备,笔者建议重点关注加粗强调部分,它们是概念中的关键词。准备工作软件:【参考版本】VisualStudioCode系统版本:Win</div>
                    </li>
                    <li><a href="/article/1902033221110001664.htm"
                           title="JAVA中List数组与泛型" target="_blank">JAVA中List数组与泛型</a>
                        <span class="text-muted">Yeauty</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%B3%9B%E5%9E%8B/1.htm">泛型</a>
                        <div>去除ArrayList中重复字符串元素方式A:案例演示需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)思路:创建新集合方式/***A:案例演示*需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)*思路:创建新集合方式*/publicstaticvoidmain(String[]args){ArrayListlist=newArrayList();list.ad</div>
                    </li>
                    <li><a href="/article/1902032086190059520.htm"
                           title="快速部署一个k8s集群" target="_blank">快速部署一个k8s集群</a>
                        <span class="text-muted">懒人P</span>
<a class="tag" taget="_blank" href="/search/Kubernetes/1.htm">Kubernetes</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>部署单Master的K8s集群kubeadm方式文章目录部署单Master的K8s集群一,前置知识点1.1生产环境可部署Kubernetes集群的两种方式1.2准备环境1.3操作系统初始化配置【所有节点】二,安装Docker/kubeadm/kubelet(所有节点)2.1安装Docker。2.2添加阿里云YUM软件源。2.3安装kubeadm,kubelet和kubectl.三,部署Kubern</div>
                    </li>
                    <li><a href="/article/1902032087523848192.htm"
                           title="编程提示异常就不用挨个度娘了——Python初识必备" target="_blank">编程提示异常就不用挨个度娘了——Python初识必备</a>
                        <span class="text-muted">爱码小士</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">网络爬虫</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/web%E5%BC%80%E5%8F%91/1.htm">web开发</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>相信对于很多小白,新手对一些异常提示,都不一定明白其含义,所以给大家整理了这样一份中英对照表,对大家一定有所帮助,当然最好都能熟记于心,这样就不用再去一个个度娘了,觉得这个表不错就点个赞加转发吧,文末更多福利异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception常规错误的基类StopI</div>
                    </li>
                    <li><a href="/article/1902031832816349184.htm"
                           title="百度站群收录2025最新:实战策略与趋势解读" target="_blank">百度站群收录2025最新:实战策略与趋势解读</a>
                        <span class="text-muted">SEO黑猫</span>
<a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a><a class="tag" taget="_blank" href="/search/dubbo/1.htm">dubbo</a>
                        <div>引言:重新认识站群生态最近接触到一个跨境电商案例:某服饰企业通过搭建15个行业细分站群,在2024年百度收录量同比提升380%。这不禁让人思考——2025年的站群运营,究竟需要哪些创新策略?一、2024实战案例拆解案例背景:某母婴用品品牌通过「三级站群矩阵」实现收录突破:1个品牌主站(权重培育)5个地域分站(长尾词覆盖)9个产品专题站(精准流量捕获)RewriteRule^(.*)/product</div>
                    </li>
                    <li><a href="/article/1902031580747067392.htm"
                           title="ESP8266使用AT指令回传判断思路(STM32上位机)" target="_blank">ESP8266使用AT指令回传判断思路(STM32上位机)</a>
                        <span class="text-muted">2501_91184823</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/esp8266/1.htm">esp8266</a>
                        <div>前言ESP8266是由安信可科技开发的一款低成本、高性能Wi-Fi模块,上位机可以通过使用串口发送AT指令配置Wi-Fi连接、TCP/UDP通信等以接入互联网,但是ESP8266返回的内容十分不规范,上位机判断ESP8266返回的内容还是有点难度的。最初的回传判断方法最初判断ESP8266返回的内容使用的是最简单的办法,就是上位机通过串口给ESP8266发送AT指令之后,直接延时等待ESP8266</div>
                    </li>
                    <li><a href="/article/1902031327360774144.htm"
                           title="【C++经典例题】反转字符串中单词的字符顺序:两种实现方法详解" target="_blank">【C++经典例题】反转字符串中单词的字符顺序:两种实现方法详解</a>
                        <span class="text-muted">倔强的石头_</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B%E7%BB%8F%E5%85%B8%E4%BE%8B%E9%A2%98/1.htm">C++经典例题</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>博客主页:倔强的石头的CSDN主页Gitee主页:倔强的石头的gitee主页⏩文章专栏:C++经典例题期待您的关注目录问题描述基于快慢指针的解法基于索引的解法两种方法的比较问题描述在处理字符串相关的问题时,反转字符串中每个单词的字符顺序是一个常见的任务,同时要保证空格和单词的初始顺序不变。给定一个字符串s,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。s包含可打印的ASCI</div>
                    </li>
                    <li><a href="/article/1902031328442904576.htm"
                           title="### 深入解析:如何构建三角形并求解自顶向下的最小路径和 的基础—(构建三角形)" target="_blank">### 深入解析:如何构建三角形并求解自顶向下的最小路径和 的基础—(构建三角形)</a>
                        <span class="text-muted">小学仔</span>
<a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>####一、问题分析给定一个三角形`triangle`,要求找出自顶向下的最小路径和。每次移动只能到下一行相邻的节点(当前下标`i`或`i+1`)。例如,三角形如下时:```2346574183```####二、代码框架搭建#####1.输入处理与三角形构建```javaScannersc=newScanner(System.in);List>triangle=newArrayListrow=ne</div>
                    </li>
                    <li><a href="/article/1902031201061892096.htm"
                           title="第十六届蓝桥杯模拟赛(第一期)-c++/c" target="_blank">第十六届蓝桥杯模拟赛(第一期)-c++/c</a>
                        <span class="text-muted">shix .</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E7%AB%9E%E8%B5%9B/1.htm">算法竞赛</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%AF/1.htm">蓝桥杯</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>c++/c蓝桥杯模拟赛题解,非常详细质因数1、填空题【问题描述】如果一个数p是个质数,同时又是整数a的约数,则p称为a的一个质因数。请问2024有多少个质因数。【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分.写一个判断质数和约数的函数判断即可约数判断可以直接使用c++的__gcd(最大公因数)函数,当然也可以</div>
                    </li>
                    <li><a href="/article/1902030823025078272.htm"
                           title="java的WeakHashMap可以用来做缓存使用?强软弱虚四种引用对比" target="_blank">java的WeakHashMap可以用来做缓存使用?强软弱虚四种引用对比</a>
                        <span class="text-muted">爱的叹息</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80%E6%95%B4%E7%90%86/1.htm">基础整理</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a>
                        <div>在Java中,引用(Reference)机制用于管理对象的生命周期和垃圾回收。Java提供了四种类型的引用:强引用(StrongReference)、软引用(SoftReference)、弱引用(WeakReference)和虚引用(PhantomReference)。WeakHashMap使用弱引用来存储键,从而在键不再被强引用引用时自动移除对应的条目。下面是WeakHashMap的使用方法以及</div>
                    </li>
                    <li><a href="/article/1902030192247894016.htm"
                           title="王者荣耀道具页面爬虫(json格式数据)" target="_blank">王者荣耀道具页面爬虫(json格式数据)</a>
                        <span class="text-muted">shix .</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/js%E9%80%86%E5%90%91/1.htm">js逆向</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>首先这个和英雄页面是不一样的,英雄页面的图片链接是直接放在源代码里面的,直接就可以请求到,但是这个源代码里面是没有的虽然在检查页面能够搜索到,但是应该是动态加载的,源码中搜不到该链接然后就去看看是不是某个接口中返回的数据刷新了一下返回了一个json估计一些数据在这里面,我们下载下来试试没错,那接下来就是简单的拼接了下面是实现codeimportrequestsimportcsvfromurllib</div>
                    </li>
                    <li><a href="/article/1902030193304858624.htm"
                           title="从FFmpeg命令行到Rust:多场景实战指南" target="_blank">从FFmpeg命令行到Rust:多场景实战指南</a>
                        <span class="text-muted">Yeauty</span>
<a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/rust/1.htm">rust</a><a class="tag" taget="_blank" href="/search/video-codec/1.htm">video-codec</a>
                        <div>FFmpeg作为功能强大的多媒体处理工具,被广泛应用于视频编辑、格式转换等领域。然而,直接使用FFmpeg的命令行界面(CLI)可能会遇到以下挑战:命令复杂度高:FFmpeg的命令行参数众多且复杂,初学者可能难以掌握,配置错误时调试困难。集成困难:在Rust等现代编程语言中,直接调用FFmpeg的C语言API需要处理复杂的内存管理和安全性问题,可能引发内存泄漏、非法访问等问题。为了解决这些问题,R</div>
                    </li>
                    <li><a href="/article/1902029687111086080.htm"
                           title="《Python实战进阶》No26: CI/CD 流水线:GitHub Actions 与 Jenkins 集成" target="_blank">《Python实战进阶》No26: CI/CD 流水线:GitHub Actions 与 Jenkins 集成</a>
                        <span class="text-muted">带娃的IT创业者</span>
<a class="tag" taget="_blank" href="/search/Python%E5%AE%9E%E6%88%98%E8%BF%9B%E9%98%B6/1.htm">Python实战进阶</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/ci%2Fcd/1.htm">ci/cd</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a>
                        <div>No26:CI/CD流水线:GitHubActions与Jenkins集成摘要持续集成(CI)和持续部署(CD)是现代软件开发中不可或缺的实践,能够显著提升开发效率、减少错误并加速交付流程。本文将探讨如何利用GitHubActions和Jenkins构建高效的CI/CD流水线,并通过实战案例展示如何自动化构建、测试和部署Python应用程序。无论你是个人开发者还是团队成员,本文都将帮助你掌握CI/</div>
                    </li>
                    <li><a href="/article/1902029688251936768.htm"
                           title="PostgreSQL vs MySQL——哪种关系数据库更好?" target="_blank">PostgreSQL vs MySQL——哪种关系数据库更好?</a>
                        <span class="text-muted">全能资料库</span>
<a class="tag" taget="_blank" href="/search/postgresql/1.htm">postgresql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>PostgreSQL和MySQL是世界上最流行的两种关系数据库管理系统(RDMS)。包括商业企业和开源基金会在内的所有市场人口都在使用它们。它们的共同点是强大的网络容错能力和对数据聚类的支持。这篇文章的主题是将它们区分开来。RDMS起源和历史1973年,加州大学伯克利分校启动了一个名为“Ingres”的项目,为关系数据库管理系统制定新标准。该项目是用C编写的,并根据开源许可证向公众发布。根据[Wi</div>
                    </li>
                    <li><a href="/article/1902028553302634496.htm"
                           title="一条查询sql的执行流程和底层原理" target="_blank">一条查询sql的执行流程和底层原理</a>
                        <span class="text-muted">weixin_30608503</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>1、一条查询SQL执行流程图2、查询SQL执行流程之发送SQL请求(1)客户端按照Mysql通信协议将SQL发送到服务端,SQL到达服务端后,服务端会单起一个线程执行SQL。(2)执行时Mysql首先判断SQL的前6个字符是否为select。并且语句中是否带有SQL_NO_CACHE关键字,如果没有则进入查询缓存。3、查询SQL执行流程之查询缓存查询缓存说白了就是一个哈希表,将执行过的语句及其结果</div>
                    </li>
                    <li><a href="/article/1902028554003083264.htm"
                           title="python tcl,Python tcl没有正确安装" target="_blank">python tcl,Python tcl没有正确安装</a>
                        <span class="text-muted">邓永泉</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/tcl/1.htm">tcl</a>
                        <div>Ijustinstalledgraphics.pyforpython.Then,whenItriedtorunthefollowingcode:fromgraphicsimport*defmain():win=GraphWin("MyCircle",100,100)c=Circle(Point(50,50),10)c.draw(win)win.getMouse()#Pausetoviewresul</div>
                    </li>
                    <li><a href="/article/1902026790537326592.htm"
                           title="Unreal Engine开发:Unreal Engine基础入门_蓝图基础" target="_blank">Unreal Engine开发:Unreal Engine基础入门_蓝图基础</a>
                        <span class="text-muted">chenlz2007</span>
<a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%912/1.htm">游戏开发2</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E5%B9%BB/1.htm">虚幻</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E/1.htm">游戏引擎</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>蓝图基础蓝图概述什么是蓝图?蓝图(Blueprint)是UnrealEngine中的一个可视化脚本系统,允许开发者通过拖拽和连接节点来创建游戏逻辑、关卡脚本和自定义行为。蓝图使得非程序员也能轻松地进行游戏开发,同时也为程序员提供了一个快速迭代和调试的工具。蓝图系统基于C++的底层架构,因此可以实现与使用C++相同的功能,但更加直观和易于理解。蓝图的类型UnrealEngine中的蓝图主要有以下几种</div>
                    </li>
                    <li><a href="/article/1902026538262523904.htm"
                           title="【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的起步依赖:快速构建 JavaWeb 项目" target="_blank">【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的起步依赖:快速构建 JavaWeb 项目</a>
                        <span class="text-muted">Foyo Designer</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Data/1.htm">Data</a><a class="tag" taget="_blank" href="/search/JPA/1.htm">JPA</a><a class="tag" taget="_blank" href="/search/JUnit/1.htm">JUnit</a>
                        <div>点击此处查看合集https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link一、起步依赖:SpringBoo</div>
                    </li>
                    <li><a href="/article/1902026286180659200.htm"
                           title="MySQL(二):逻辑查询" target="_blank">MySQL(二):逻辑查询</a>
                        <span class="text-muted">2401_84003690</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>CREATETABLEt(aCHAR(5))ENGINE=INNODB;INSERTINTOt(a)VALUES(‘a’),(NULL),(‘b’),(‘c’),(NULL);SELECT*FROMtORDERBYa;//这也是一个小技巧,当想使用GROUPBY后,想统计各个组/块的数量,可以使用COUNT(1)SELECTa,COUNT(1)FROMtGROUPBYa;结果如上,很清楚可以看到o</div>
                    </li>
                    <li><a href="/article/1902026159802085376.htm"
                           title="动态规划-第4篇" target="_blank">动态规划-第4篇</a>
                        <span class="text-muted">藤椒味的火腿肠真不错</span>
<a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>19.最⼤⼦数组和(medium)1.题⽬链接:53.最大子数组和-力扣(LeetCode)2..解法(动态规划):算法思路:1.状态表⽰:对于线性dp,我们可以⽤「经验+题⽬要求」来定义状态表⽰:i.以某个位置为结尾,巴拉巴拉;ii.以某个位置为起点,巴拉巴拉。这⾥我们选择⽐较常⽤的⽅式,以「某个位置为结尾」,结合「题⽬要求」,定义⼀个状态表⽰:dp[i]表⽰:以i位置元素为结尾的「所有⼦数组」</div>
                    </li>
                    <li><a href="/article/1902025026262069248.htm"
                           title="鸿蒙30道高频面试题总结" target="_blank">鸿蒙30道高频面试题总结</a>
                        <span class="text-muted">zero_godv</span>
<a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a>
                        <div>1.什么是弹性布局?Flex容器,弹性布局分为单行布局和多行布局,单行内:当子元素尺寸总和大于Flex容器尺寸是,子元素会自动挤压。多行内:用wrap属性控制自动换行2.绝对定位和相对定位的区别?绝对定位:position,相对父组件左上角进行偏移,不占位置相对定位:offset,相对自身左上角进行便宜,占位置3.什么是层叠布局?Stack:实现位置的固定定位与层叠,后一个子元素覆盖前一个子元素通</div>
                    </li>
                    <li><a href="/article/1902024648187506688.htm"
                           title="C++ 智能指针详解及示例" target="_blank">C++ 智能指针详解及示例</a>
                        <span class="text-muted">EPICS Technical</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/C/1.htm">C</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>C++智能指针是C++11引入的自动化内存管理工具,用于替代裸指针,防止内存泄漏和悬空指针问题。以下是三种主要智能指针的详细说明及示例:1.std::unique_ptr:独占所有权特点:同一时间只能有一个unique_ptr指向对象。对象生命周期与unique_ptr绑定,指针销毁时对象自动释放。不可复制,但可通过std::move转移所有权。适用场景:明确资源唯一所有权的场景(如工厂模式返回对</div>
                    </li>
                    <li><a href="/article/1902024270196830208.htm"
                           title="Spring之Bean生命周期源码解析-一文掌握(一)" target="_blank">Spring之Bean生命周期源码解析-一文掌握(一)</a>
                        <span class="text-muted">小徐Chao努力</span>
<a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/1.htm">源码分析</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>Spring最重要的功能就是帮助程序员创建对象(也就是IOC),而启动Spring就是为创建Bean对象做准备,所以我们先明白Spring到底是怎么去创建Bean的,也就是先弄明白Bean的生命周期。Bean的生命周期就是指:在Spring中,一个Bean是如何生成的,如何销毁的Bean的生成过程1.生成BeanDefinitionSpring启动的时候会进行扫描,会先调用org.springfr</div>
                    </li>
                                <li><a href="/article/40.htm"
                                       title="java线程Thread和Runnable区别和联系" target="_blank">java线程Thread和Runnable区别和联系</a>
                                    <span class="text-muted">zx_code</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/Runnable/1.htm">Runnable</a>
                                    <div>我们都晓得java实现线程2种方式,一个是继承Thread,另一个是实现Runnable。 
 
模拟窗口买票,第一例子继承thread,代码如下 
 
package thread;

public class ThreadTest {
	
	public static void main(String[] args) {
		
		Thread1 t1 = new Thread1(</div>
                                </li>
                                <li><a href="/article/167.htm"
                                       title="【转】JSON与XML的区别比较" target="_blank">【转】JSON与XML的区别比较</a>
                                    <span class="text-muted">丁_新</span>
<a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a>
                                    <div>1.定义介绍 
(1).XML定义 
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。 
XML是标</div>
                                </li>
                                <li><a href="/article/294.htm"
                                       title="c++ 实现五种基础的排序算法" target="_blank">c++ 实现五种基础的排序算法</a>
                                    <span class="text-muted">CrazyMizzz</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                                    <div>#include<iostream>
using namespace std;


//辅助函数,交换两数之值
template<class T>
void mySwap(T &x, T &y){
	T temp = x;
	x = y;
	y = temp;
}

const int size = 10;

//一、用直接插入排</div>
                                </li>
                                <li><a href="/article/421.htm"
                                       title="我的软件" target="_blank">我的软件</a>
                                    <span class="text-muted">麦田的设计者</span>
<a class="tag" taget="_blank" href="/search/%E6%88%91%E7%9A%84%E8%BD%AF%E4%BB%B6/1.htm">我的软件</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E4%B9%90%E7%B1%BB/1.htm">音乐类</a><a class="tag" taget="_blank" href="/search/%E5%A8%B1%E4%B9%90/1.htm">娱乐</a><a class="tag" taget="_blank" href="/search/%E6%94%BE%E6%9D%BE/1.htm">放松</a>
                                    <div>     这是我写的一款app软件,耗时三个月,是一个根据央视节目开门大吉改变的,提供音调,猜歌曲名。1、手机拥有者在android手机市场下载本APP,同意权限,安装到手机上。2、游客初次进入时会有引导页面提醒用户注册。(同时软件自动播放背景音乐)。3、用户登录到主页后,会有五个模块。a、点击不胫而走,用户得到开门大吉首页部分新闻,点击进入有新闻详情。b、</div>
                                </li>
                                <li><a href="/article/548.htm"
                                       title="linux awk命令详解" target="_blank">linux awk命令详解</a>
                                    <span class="text-muted">被触发</span>
<a class="tag" taget="_blank" href="/search/linux+awk/1.htm">linux awk</a>
                                    <div>awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 
awk处理过程: 依次对每一行进行处理,然后输出 
awk命令形式: 
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file 
 [-F|-f|-v]大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=val</div>
                                </li>
                                <li><a href="/article/675.htm"
                                       title="各种语言比较" target="_blank">各种语言比较</a>
                                    <span class="text-muted">_wy_</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">编程语言</a>
                                    <div>                       Java Ruby PHP   擅长领域                      </div>
                                </li>
                                <li><a href="/article/802.htm"
                                       title="oracle 中数据类型为clob的编辑" target="_blank">oracle 中数据类型为clob的编辑</a>
                                    <span class="text-muted">知了ing</span>
<a class="tag" taget="_blank" href="/search/oracle+clob/1.htm">oracle clob</a>
                                    <div>public void updateKpiStatus(String kpiStatus,String taskId){
	Connection dbc=null;
	Statement stmt=null;
	PreparedStatement ps=null;
	try {
		dbc = new DBConn().getNewConnection();
		//stmt = db</div>
                                </li>
                                <li><a href="/article/929.htm"
                                       title="分布式服务框架 Zookeeper -- 管理分布式环境中的数据" target="_blank">分布式服务框架 Zookeeper -- 管理分布式环境中的数据</a>
                                    <span class="text-muted">矮蛋蛋</span>
<a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a>
                                    <div>原文地址: 
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ 
安装和配置详解 
本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两</div>
                                </li>
                                <li><a href="/article/1056.htm"
                                       title="tomcat数据源" target="_blank">tomcat数据源</a>
                                    <span class="text-muted">alafqq</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
                                    <div>数据库 
 
 JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。 
 
 
 没有使用JNDI时我用要这样连接数据库: 
 
 
03.  Class.forName("com.mysql.jdbc.Driver");  
04.  conn</div>
                                </li>
                                <li><a href="/article/1183.htm"
                                       title="遍历的方法" target="_blank">遍历的方法</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/%E9%81%8D%E5%8E%86/1.htm">遍历</a>
                                    <div>                                                      遍历 
在java的泛</div>
                                </li>
                                <li><a href="/article/1310.htm"
                                       title="linux查看硬件信息的命令" target="_blank">linux查看硬件信息的命令</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>linux查看硬件信息的命令 
一.查看CPU: 
cat /proc/cpuinfo 
  
二.查看内存: 
free 
  
三.查看硬盘: 
df 
  
linux下查看硬件信息 
1、lspci 列出所有PCI 设备; 
lspci - list all PCI devices:列出机器中的PCI设备(声卡、显卡、Modem、网卡、USB、主板集成设备也能</div>
                                </li>
                                <li><a href="/article/1437.htm"
                                       title="java常见的ClassNotFoundException" target="_blank">java常见的ClassNotFoundException</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>1.java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory   添加包common-logging.jar2.java.lang.ClassNotFoundException: javax.transaction.Synchronization    </div>
                                </li>
                                <li><a href="/article/1564.htm"
                                       title="【Gson五】日期对象的序列化和反序列化" target="_blank">【Gson五】日期对象的序列化和反序列化</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96/1.htm">反序列化</a>
                                    <div>对日期类型的数据进行序列化和反序列化时,需要考虑如下问题: 
  
1. 序列化时,Date对象序列化的字符串日期格式如何 
2. 反序列化时,把日期字符串序列化为Date对象,也需要考虑日期格式问题 
3. Date A -> str -> Date B,A和B对象是否equals 
  默认序列化和反序列化 
  
  
import com</div>
                                </li>
                                <li><a href="/article/1691.htm"
                                       title="【Spark八十六】Spark Streaming之DStream vs. InputDStream" target="_blank">【Spark八十六】Spark Streaming之DStream vs. InputDStream</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Stream/1.htm">Stream</a>
                                    <div>  1. DStream的类说明文档: 
  
/**
 * A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous
 * sequence of RDDs (of the same type) representing a continuous st</div>
                                </li>
                                <li><a href="/article/1818.htm"
                                       title="通过nginx获取header信息" target="_blank">通过nginx获取header信息</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/nginx+header/1.htm">nginx header</a>
                                    <div>1. 提取整个的Cookies内容到一个变量,然后可以在需要时引用,比如记录到日志里面, 
  if ( $http_cookie ~* "(.*)$") { 
          set $all_cookie $1; 
  } 
      变量$all_cookie就获得了cookie的值,可以用于运算了 
 
</div>
                                </li>
                                <li><a href="/article/1945.htm"
                                       title="java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999" target="_blank">java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>参考了网上的http://blog.csdn.net/peasking_dd/article/details/6342984 
写了个java版的: 
 
 



public class Print_1_To_NDigit {

	/**
	 * Q65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
	 * 1.使用字符串</div>
                                </li>
                                <li><a href="/article/2072.htm"
                                       title="Netty源码学习-ReplayingDecoder" target="_blank">Netty源码学习-ReplayingDecoder</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a>
                                    <div>ReplayingDecoder是FrameDecoder的子类,不熟悉FrameDecoder的,可以先看看 
 
http://bylijinnan.iteye.com/blog/1982618 
 
API说,ReplayingDecoder简化了操作,比如: 
 
FrameDecoder在decode时,需要判断数据是否接收完全: 
 
 

public class IntegerH</div>
                                </li>
                                <li><a href="/article/2199.htm"
                                       title="js特殊字符过滤" target="_blank">js特殊字符过滤</a>
                                    <span class="text-muted">cngolon</span>
<a class="tag" taget="_blank" href="/search/js%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6/1.htm">js特殊字符</a><a class="tag" taget="_blank" href="/search/js%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%E8%BF%87%E6%BB%A4/1.htm">js特殊字符过滤</a>
                                    <div>1.js中用正则表达式 过滤特殊字符, 校验所有输入域是否含有特殊符号function stripscript(s) {    var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()&mdash;—|{}【】‘;:”“'。,、?]"</div>
                                </li>
                                <li><a href="/article/2326.htm"
                                       title="hibernate使用sql查询" target="_blank">hibernate使用sql查询</a>
                                    <span class="text-muted">ctrain</span>
<a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a>
                                    <div>
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transa</div>
                                </li>
                                <li><a href="/article/2453.htm"
                                       title="linux shell脚本中切换用户执行命令方法" target="_blank">linux shell脚本中切换用户执行命令方法</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%E5%91%BD%E4%BB%A4/1.htm">命令</a><a class="tag" taget="_blank" href="/search/%E5%88%87%E6%8D%A2%E7%94%A8%E6%88%B7/1.htm">切换用户</a>
                                    <div>经常在写shell脚本时,会碰到要以另外一个用户来执行相关命令,其方法简单记下: 
  
1、执行单个命令:su - user -c "command" 
如:下面命令是以test用户在/data目录下创建test123目录 
[root@slave19 /data]# su - test -c "mkdir /data/test123" </div>
                                </li>
                                <li><a href="/article/2580.htm"
                                       title="好的代码里只要一个 return 语句" target="_blank">好的代码里只要一个 return 语句</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/return/1.htm">return</a>
                                    <div>别再这样写了:public boolean foo() {    if (true) {         return true;     } else {          return false;    </div>
                                </li>
                                <li><a href="/article/2707.htm"
                                       title="Android动画效果学习" target="_blank">Android动画效果学习</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>1、透明动画效果 
方法一:代码实现 
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
		{
			View rootView = inflater.inflate(R.layout.fragment_main, container, fals</div>
                                </li>
                                <li><a href="/article/2834.htm"
                                       title="linux复习笔记之bash shell (4)管道命令" target="_blank">linux复习笔记之bash shell (4)管道命令</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/linux%E7%AE%A1%E9%81%93%E5%91%BD%E4%BB%A4%E6%B1%87%E6%80%BB/1.htm">linux管道命令汇总</a><a class="tag" taget="_blank" href="/search/linux%E7%AE%A1%E9%81%93%E5%91%BD%E4%BB%A4/1.htm">linux管道命令</a><a class="tag" taget="_blank" href="/search/linux%E5%B8%B8%E7%94%A8%E7%AE%A1%E9%81%93%E5%91%BD%E4%BB%A4/1.htm">linux常用管道命令</a>
                                    <div>转载请出自出处:
http://eksliang.iteye.com/blog/2105461   
  bash命令执行的完毕以后,通常这个命令都会有返回结果,怎么对这个返回的结果做一些操作呢?那就得用管道命令‘|’。 
    上面那段话,简单说了下管道命令的作用,那什么事管道命令呢? 
    答:非常的经典的一句话,记住了,何为管</div>
                                </li>
                                <li><a href="/article/2961.htm"
                                       title="Android系统中自定义按键的短按、双击、长按事件" target="_blank">Android系统中自定义按键的短按、双击、长按事件</a>
                                    <span class="text-muted">gqdy365</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>在项目中碰到这样的问题: 
由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成: 
1、单击事件:就是普通key的单击; 
2、双击事件:500ms内同一按键单击两次; 
3、长按事件:同一按键长按超过1000ms(系统中长按事件为500ms); 
4、组合按键:两个以上按键同时按住; </div>
                                </li>
                                <li><a href="/article/3088.htm"
                                       title="asp.net获取站点根目录下子目录的名称" target="_blank">asp.net获取站点根目录下子目录的名称</a>
                                    <span class="text-muted">hvt</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/hovertree/1.htm">hovertree</a><a class="tag" taget="_blank" href="/search/Web+Forms/1.htm">Web Forms</a>
                                    <div>使用Visual Studio建立一个.aspx文件(Web Forms),例如hovertree.aspx,在页面上加入一个ListBox代码如下: 
<asp:ListBox runat="server" ID="lbKeleyiFolder" /> 
  
那么在页面上显示根目录子文件夹的代码如下: 
string[] m_sub</div>
                                </li>
                                <li><a href="/article/3215.htm"
                                       title="Eclipse程序员要掌握的常用快捷键" target="_blank">Eclipse程序员要掌握的常用快捷键</a>
                                    <span class="text-muted">justjavac</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/%E5%BF%AB%E6%8D%B7%E9%94%AE/1.htm">快捷键</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a>
                                    <div>   判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。       曾有人在豆瓣评
《卓有成效的程序员》:“人有多大懒,才有多大闲”。之前我整理了一个
程序员图书列表,目的也就是通过读书,让程序员变懒。     写道   程序员作为特殊的群体,有的人可以这么懒,懒到事情都交给机器去做,而有的人又可</div>
                                </li>
                                <li><a href="/article/3342.htm"
                                       title="c++编程随记" target="_blank">c++编程随记</a>
                                    <span class="text-muted">lx.asymmetric</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                                    <div> 为了字体更好看,改变了格式…… 
  
&&运算符: 
  
#include<iostream> 
using namespace std; 
int main(){ 
     int a=-1,b=4,k; 
     k=(++a<0)&&!(b--</div>
                                </li>
                                <li><a href="/article/3469.htm"
                                       title="linux标准IO缓冲机制研究" target="_blank">linux标准IO缓冲机制研究</a>
                                    <span class="text-muted">音频数据</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>一、什么是缓存I/O(Buffered I/O)缓存I/O又被称作标准I/O,大多数文件系统默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,操作系统会将I/O的数据缓存在文件系统的页缓存(page cache)中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。1.缓存I/O有以下优点:A.缓存I/O使用了操作系统内核缓冲区,</div>
                                </li>
                                <li><a href="/article/3596.htm"
                                       title="随想 生活" target="_blank">随想 生活</a>
                                    <span class="text-muted">暗黑小菠萝</span>
<a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a>
                                    <div>其实账户之前就申请了,但是决定要自己更新一些东西看也是最近。从毕业到现在已经一年了。没有进步是假的,但是有多大的进步可能只有我自己知道。 
  
毕业的时候班里12个女生,真正最后做到软件开发的只要两个包括我,PS:我不是说测试不好。当时因为考研完全放弃找工作,考研失败,我想这只是我的借口。那个时候才想到为什么大学的时候不能好好的学习技术,增强自己的实战能力,以至于后来找工作比较费劲。我</div>
                                </li>
                                <li><a href="/article/3723.htm"
                                       title="我认为POJO是一个错误的概念" target="_blank">我认为POJO是一个错误的概念</a>
                                    <span class="text-muted">windshome</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/J2EE/1.htm">J2EE</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1/1.htm">设计</a>
                                    <div>  
            这篇内容其实没有经过太多的深思熟虑,只是个人一时的感觉。从个人风格上来讲,我倾向简单质朴的设计开发理念;从方法论上,我更加倾向自顶向下的设计;从做事情的目标上来看,我追求质量优先,更愿意使用较为保守和稳妥的理念和方法。 
   &</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>