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/1902020868167495680.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/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a>
                        <div>示例代码:fromloguruimportloggerfrompymongoimportMongoClientfrompymongo.errorsimportConnectionFailurefromllm_engineering.settingsimportsettingsclassMongoDatabaseConnector:_instance:MongoClient|None=Nonedef</div>
                    </li>
                    <li><a href="/article/1902020111888347136.htm"
                           title="有多少小于当前数字的数字 力扣1365" target="_blank">有多少小于当前数字的数字 力扣1365</a>
                        <span class="text-muted">随风756</span>
<a class="tag" taget="_blank" href="/search/leetcode%E5%88%B7%E9%A2%98/1.htm">leetcode刷题</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                        <div>一、题目给你一个数组nums,对于其中每个元素nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个nums[i]你必须计算出有效的j的数量,其中j满足j!=i且nums[j]map=newHashMap<>();int[]res=Arrays.copyOf(nums,nums.length);//复制新数组Arrays.sort(res);//排序for(inti=0;i<re</div>
                    </li>
                    <li><a href="/article/1902018725175947264.htm"
                           title="C# BindingFlags 使用详解" target="_blank">C# BindingFlags 使用详解</a>
                        <span class="text-muted">鲤籽鲲</span>
<a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E6%8D%A1%E6%BC%8F/1.htm">知识捡漏</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#编程的世界里,反射(Reflection)是一个强大且灵活的特性,它允许我们在运行时动态地获取和操作类型的信息。而BindingFlags枚举类型,作为反射中的核心概念之一,为我们提供了精确控制类型成员查找和操作的能力(通过组合多个标志来指定搜索类型如字段、方法、属性等成员的条件)。今天,就让我们深入探讨BindingFlags的使用,解锁反射的更多可能性。一、什么是Binding</div>
                    </li>
                    <li><a href="/article/1902018726220328960.htm"
                           title="Spark集群启动与关闭" target="_blank">Spark集群启动与关闭</a>
                        <span class="text-muted">陈沐</span>
<a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/big/1.htm">big</a><a class="tag" taget="_blank" href="/search/data/1.htm">data</a>
                        <div>Hadoop集群和Spark的启动与关闭Hadoop集群开启三台虚拟机均启动ZookeeperzkServer.shstartMaster1上面执行启动HDFSstart-dfs.shslave1上面执行开启YARNstart-yarn.shslave2上面执行开启YARN的资源管理器yarn-daemon.shstartresourcemanager(如果nodeManager没有启动(正常情况</div>
                    </li>
                    <li><a href="/article/1902018472964059136.htm"
                           title="C# 中泛型(Generics)‌的核心概念" target="_blank">C# 中泛型(Generics)‌的核心概念</a>
                        <span class="text-muted">ByteGeek‌</span>
<a class="tag" taget="_blank" href="/search/C%23%E5%9F%BA%E7%A1%80%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">C#基础从入门到精通</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</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#中,‌泛型(Generics)‌是一种强大的编程特性,允许你编写可重用、类型安全的代码,而无需为不同类型重复编写相似的逻辑。泛型的核心思想是‌参数化类型‌,即通过占位符(如T)表示类型,在编译时确定具体类型。以下是泛型的详细讲解:‌1.泛型的基本概念‌类型参数化‌:用占位符(如T、TKey、TValue)代替具体类型。编译时类型安全‌:泛型在编译时检查类型一致性,避免运行时类型错误。避免装箱</div>
                    </li>
                    <li><a href="/article/1902017339218522112.htm"
                           title="光学工程师中年危机" target="_blank">光学工程师中年危机</a>
                        <span class="text-muted">光学设计培训</span>
<a class="tag" taget="_blank" href="/search/%E6%BF%80%E5%85%89%E9%9B%B7%E8%BE%BE/1.htm">激光雷达</a><a class="tag" taget="_blank" href="/search/%E5%85%89%E5%AD%A6%E8%AE%BE%E8%AE%A1/1.htm">光学设计</a><a class="tag" taget="_blank" href="/search/zemax/1.htm">zemax</a><a class="tag" taget="_blank" href="/search/%E5%85%89%E5%AD%A6/1.htm">光学</a><a class="tag" taget="_blank" href="/search/%E5%85%89%E5%AD%A6%E5%B7%A5%E7%A8%8B/1.htm">光学工程</a>
                        <div>一、技术能力突围:向高价值领域迁移‌‌瞄准增量市场‌‌激光雷达与自动驾驶‌:将光学设计经验迁移至激光雷达光路优化(如VCSEL阵列准直算法)、热稳定性补偿算法(解决车载环境温度漂移问题)‌15。‌AR/VR光学模组‌:参与超表面透镜(Metasurface)设计,结合波导与全息技术提升显示效率,掌握LightTools或LucidShape光场仿真‌37。‌强化算法能力‌‌光学-算法交叉技能‌:从</div>
                    </li>
                    <li><a href="/article/1902016331360825344.htm"
                           title="JavaScript 浏览器对象实例" target="_blank">JavaScript 浏览器对象实例</a>
                        <span class="text-muted">lsx202406</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>JavaScript浏览器对象实例引言JavaScript作为一种广泛应用于网页开发的脚本语言,提供了丰富的浏览器对象模型(BrowserObjectModel,简称BOM)。BOM使得JavaScript能够与浏览器环境进行交互,从而实现各种动态效果和交互功能。本文将详细介绍JavaScript中的浏览器对象实例,包括其概念、常用对象及其使用方法。一、浏览器对象模型概述浏览器对象模型是JavaS</div>
                    </li>
                    <li><a href="/article/1902015701581885440.htm"
                           title="谈谈 TypeScript 中的模块系统,如何使用 ES Modules 和 CommonJS 模块?" target="_blank">谈谈 TypeScript 中的模块系统,如何使用 ES Modules 和 CommonJS 模块?</a>
                        <span class="text-muted">程序员黄同学</span>
<a class="tag" taget="_blank" href="/search/TypeScript/1.htm">TypeScript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/1.htm">前端开发</a><a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/typescript/1.htm">typescript</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>模块系统是TypeScript项目组织代码的核心机制,主要用于代码拆分、复用和依赖管理。TypeScript支持ESModules(ESM)和CommonJS两种主流模块系统,理解它们的差异和使用场景是前端开发中的必备技能。以下从基础语法、配置、互操作性到实战建议展开说明。一、ESModules(ESM):标准化的模块系统1.基础语法ESM使用import/export语法,是ECMAScript</div>
                    </li>
                    <li><a href="/article/1902011798257725440.htm"
                           title="String类" target="_blank">String类</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%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>1.String类的重要性在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想,而字符串应用又非常广泛,因此Java语言专门提供了String类。2.常用方法2.1字符串构造String类提供的构造方式非常多,常用的就以下三种:publicstaticvo</div>
                    </li>
                    <li><a href="/article/1902011672038535168.htm"
                           title="数据类型和变量" target="_blank">数据类型和变量</a>
                        <span class="text-muted">墨香染城城</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>1.字面常量常量即程序运行期间,固定不变的量称为常量,比如:一个礼拜七天,一年12个月等。publicclassDemo{publicstaticvoidmain(String[]args){System.Out.println("helloworld!");System.Out.println(100);System.Out.println(3.14);System.Out.println('A</div>
                    </li>
                    <li><a href="/article/1902011541536960512.htm"
                           title="实现组件裁剪鸿蒙示例代码" target="_blank">实现组件裁剪鸿蒙示例代码</a>
                        <span class="text-muted"></span>

                        <div>本文原创发布在华为开发者社区。介绍对Image组件设置clipShape属性,并通过PathShape传入不同的裁剪命令,将Image组件裁剪为不同形状。使用Path组件,通过设置commands属性,并传入不同的绘制命令,绘制出带圆角的不同形状的组件。实现组件裁剪源码链接效果预览使用说明安装到手机后点击应用图标即可进入本应用。点击不同按钮,查看clipShape裁剪组件和Path绘制圆角形状组件</div>
                    </li>
                    <li><a href="/article/1902011294031081472.htm"
                           title="P11451 [USACO24DEC] It‘s Mooin‘ Time B(枚举算法)" target="_blank">P11451 [USACO24DEC] It‘s Mooin‘ Time B(枚举算法)</a>
                        <span class="text-muted">爱干饭的boy</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E7%AB%9E%E8%B5%9B%E9%A2%98%E7%9B%AE%E8%B6%85%E8%AF%A6%E7%BB%86%E8%A7%A3%E6%9E%90/1.htm">算法竞赛题目超详细解析</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/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/%E9%9D%92%E5%B0%91%E5%B9%B4%E7%BC%96%E7%A8%8B/1.htm">青少年编程</a><a class="tag" taget="_blank" href="/search/%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95/1.htm">贪心算法</a><a class="tag" taget="_blank" href="/search/%E6%8E%A8%E8%8D%90%E7%AE%97%E6%B3%95/1.htm">推荐算法</a>
                        <div>题目描述FarmerJohn正在试图向Elsie描述他最喜欢的USACO竞赛,但她很难理解为什么他这么喜欢它。他说「竞赛中我最喜欢的部分是Bessie说『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。Elsie仍然不理解,所以FarmerJohn将竞赛以文本文件形式下载,并试图解释他的意思。竞赛被定义为一个长度为$N$($3≤N≤20000$)的小写字母字符串。一种哞叫一般地定义为子串$c_ic_j</div>
                    </li>
                    <li><a href="/article/1902010790148370432.htm"
                           title="Qt SQL-1" target="_blank">Qt SQL-1</a>
                        <span class="text-muted">EPICS Technical</span>
<a class="tag" taget="_blank" href="/search/Qt/1.htm">Qt</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                        <div>QtSQL是一个必要模块,它提供了对SQL数据库的支持。QtSQL的APIs被划分为不同层:驱动层SQLAPI层用户接口层SQL编程指南包含了有关使用QtSQL开发的信息。开始要在一个项目中启用QtSQL,添加以下指令到C++文件:#include要链接QtSQL模块,添加这一行到这个项目文件:QT+=sql相关信息这些链接指向API参考材料和相关的页:C++类SQL示例内容命名空间类详细描述Qt</div>
                    </li>
                    <li><a href="/article/1902010788860719104.htm"
                           title="Spring之底层架构核心概念解析" target="_blank">Spring之底层架构核心概念解析</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><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                        <div>BeanDefinitionBeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。比如:class,表示Bean类型scope,表示Bean作用域,单例或原型等lazyInit:表示Bean是否是懒加载initMethodName:表示Bean初始化时要执行的方法destroyMethodName:表示Bean销毁时要执行的方法还有很多</div>
                    </li>
                    <li><a href="/article/1902009778557743104.htm"
                           title="高亮动态物体——前景提取与动态物体检测器(opencv实现)" target="_blank">高亮动态物体——前景提取与动态物体检测器(opencv实现)</a>
                        <span class="text-muted">WenJGo</span>
<a class="tag" taget="_blank" href="/search/AI%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/1.htm">AI学习之路</a><a class="tag" taget="_blank" href="/search/Python%E4%B9%8B%E8%B7%AF/1.htm">Python之路</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/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><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a>
                        <div>目录代码说明1.导入库2.创建背景建模对象3.打开视频源4.逐帧处理视频5.应用背景建模获得前景掩码6.形态学操作去除噪声6.1定义形态学核6.2开运算去除噪点6.3膨胀操作填补前景区域空洞7.轮廓检测识别动态物体8.绘制轮廓和边界框9.显示处理结果10.退出控制与资源释放整体代码效果展示代码说明主要功能是通过背景建模检测视频中的运动目标。其工作流程如下:读取视频帧;利用MOG2算法生成前景掩码;</div>
                    </li>
                    <li><a href="/article/1902009778410942464.htm"
                           title="一文解秘Rust如何与Java互操作" target="_blank">一文解秘Rust如何与Java互操作</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a>
                        <div>本博客所有文章除特别声明外,均采用CCBY-NC-SA4.0许可协议。转载请注明来自唯你使用场景JAVA与Rust互操作让Rust可以背靠Java大生态来做更多事情,而Java也可以享受Rust语言特性的内存安全,所有权机制,无畏并发。互操作的典型场景包括:性能优化:利用Rust处理计算密集型任务,提高Java应用的整体性能。系统级编程:结合Rust的底层控制能力与Java的高级抽象,实现更高效的</div>
                    </li>
                    <li><a href="/article/1902009652334358528.htm"
                           title="Mmybatis xml 连接数据库的方法" target="_blank">Mmybatis xml 连接数据库的方法</a>
                        <span class="text-muted">墨香染城城</span>
<a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>1.添加依赖(Maven项目)在pom.xml中添加MyBatis和数据库驱动的依赖(以MySQL为例):org.mybatismybatis3.5.13mysqlmysql-connector-java8.0.332.配置MyBatis核心文件在resources目录下创建mybatis-config.xml,配置数据库连接和全局设置:3.创建实体类定义与数据库表对应的实体类,例如User:pu</div>
                    </li>
                    <li><a href="/article/1902009399593988096.htm"
                           title="如何将rust日志输出到android终端" target="_blank">如何将rust日志输出到android终端</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a>
                        <div>本博客所有文章除特别声明外,均采用CCBY-NC-SA4.0许可协议。转载请注明来自唯你背景在Rust中,使用println!打印日志时,输出实际上是发送到标准输出(stdout),而AndroidLogcat专门用于处理和显示应用程序的日志信息,此环境下标准输出实现被重新定义。这意味着Rust日志输出不会出现在Logcat中。android_logger直接与Android的日志系统集成,确保日</div>
                    </li>
                    <li><a href="/article/1902008139692175360.htm"
                           title="JavaScript执行机制" target="_blank">JavaScript执行机制</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>大纲1、场景分析2、执行机制相关知识点3、以实例来说明JavaScript的执行机制4、相关概念场景分析/*以下这段代码的执行结果是什么?如果依照:js是按照语句出现的顺序执行这个理念,那么代码执行的结果应该是://"定时器开始啦"//"马上执行for循环啦"//"执行then函数啦"//"代码执行结束"但结果并不是这样的,得到的结果是://"马上执行for循环啦"//"代码执行结束"//"执行t</div>
                    </li>
                    <li><a href="/article/1902008141323759616.htm"
                           title="tomcat下直接访问html网页" target="_blank">tomcat下直接访问html网页</a>
                        <span class="text-muted">努力的搬砖人.</span>

                        <div>在conf/server.html配置文件中添加(在标签上添加)访问地址:http://localhost:8081/hello.html</div>
                    </li>
                    <li><a href="/article/1902007511549014016.htm"
                           title="goldengate sqlserver mysql_使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务..." target="_blank">goldengate sqlserver mysql_使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务...</a>
                        <span class="text-muted">weixin_39907713</span>
<a class="tag" taget="_blank" href="/search/goldengate/1.htm">goldengate</a><a class="tag" taget="_blank" href="/search/sqlserver/1.htm">sqlserver</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                        <div>大多数关注数据复制的Oracle技术专家都熟悉OracleStreams。在2009年之前,Streams一直是推荐使用的最流行的Oracle数据分发技术。2009年7月,Oracle收购了GoldenGate这一数据库复制软件供应商。Oracle现在鼓励客户使用OracleGoldenGate(Oracle融合中间件系列的组成部分)来满足新应用中的数据复制需求。Oracle关于OracleStr</div>
                    </li>
                    <li><a href="/article/1902006756070977536.htm"
                           title="计算基因组学需要计算机知识吗,生物信息学——计算基因组学的一些参考书" target="_blank">计算基因组学需要计算机知识吗,生物信息学——计算基因组学的一些参考书</a>
                        <span class="text-muted">weixin_39610422</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E5%9F%BA%E5%9B%A0%E7%BB%84%E5%AD%A6%E9%9C%80%E8%A6%81%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9F%A5%E8%AF%86%E5%90%97/1.htm">计算基因组学需要计算机知识吗</a>
                        <div>有两个都可以在新浪爱问资料Bioinformatics.For.Dummies.2nd.Ed.2007.pdfAnIntroductiontoBioinformaticsAlgorithms.pdf另外看到Virginia大学的一些课程The2012ComputationalGenomicsCoursehasbeenrescheduledtoNovember28-December4,2012用mo</div>
                    </li>
                    <li><a href="/article/1902005622434492416.htm"
                           title="oracle 01476,GoldenGate 常见错误分析(一)" target="_blank">oracle 01476,GoldenGate 常见错误分析(一)</a>
                        <span class="text-muted">来来来看看</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/01476/1.htm">01476</a>
                        <div>(1)解决GoldenGate错误的一个关键点就是通过错误分析工具(包括report文件,ggserr.logdiscard文件logdump工具,GGSCI命令行)确定错误的根源是哪个组件引起的。系统或者网络?数据库报错或者应用报错?GoldenGate安装报错?GoldenGate的某个进程报错?GoldenGate的参数配置文件报错?SQL语句或者存储过程报错?然后再确定错误的原因,逐个排查</div>
                    </li>
                    <li><a href="/article/1902005495921700864.htm"
                           title="goldengate sqlserver mysql_Oracle GoldenGate 之 SqlServer数据同步到Mysql数据库" target="_blank">goldengate sqlserver mysql_Oracle GoldenGate 之 SqlServer数据同步到Mysql数据库</a>
                        <span class="text-muted">Huawei_Germany</span>
<a class="tag" taget="_blank" href="/search/goldengate/1.htm">goldengate</a><a class="tag" taget="_blank" href="/search/sqlserver/1.htm">sqlserver</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                        <div>C:\OGG>INSTALLADDSERVICEService'GGSMGR'created.Installprogramterminatednormally.C:\OGG>配置ODBC数据源MicrosoftSQLServerODBC驱动程序版本06.01.7601数据源名称:oa_test数据源描述:服务器:WIN-UGCMTTOTKE7数据库:(Default)语言:(Default)翻译字</div>
                    </li>
                    <li><a href="/article/1902005116744036352.htm"
                           title="空闲任务是什么?" target="_blank">空闲任务是什么?</a>
                        <span class="text-muted">九层指针</span>
<a class="tag" taget="_blank" href="/search/Free/1.htm">Free</a><a class="tag" taget="_blank" href="/search/RTOS/1.htm">RTOS</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%97%B6%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">实时操作系统</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>FreeRTOS的**空闲任务(IdleTask)**是系统自动创建的一个特殊任务,它在所有其他任务处于阻塞或挂起状态时运行。其核心作用是确保CPU始终有任务可执行(避免系统“空转”),同时为开发者提供资源管理和低功耗优化的入口。1.空闲任务的基本特性自动创建当调用vTaskStartScheduler()启动调度器时,FreeRTOS会自动创建空闲任务,无需手动配置。最低优先级空闲任务的优先级为</div>
                    </li>
                    <li><a href="/article/1902005117763252224.htm"
                           title="Package SeqIO" target="_blank">Package SeqIO</a>
                        <span class="text-muted">wangyiqi806643897</span>

                        <div>InputThemainfunctionisBio.SeqIO.parse(...)whichtakesaninputfilehandle(orinrecentversionsofBiopythonalternativelyafilenameasastring),andformatstring.ThisreturnsaniteratorgivingSeqRecordobjects:>>>fromB</div>
                    </li>
                    <li><a href="/article/1902004990399016960.htm"
                           title="java web 安全,如何认证客户端?时间戳和noce如何抵御重放攻击?" target="_blank">java web 安全,如何认证客户端?时间戳和noce如何抵御重放攻击?</a>
                        <span class="text-muted">ughome</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a>
                        <div>技术问答整理1.JavaHMAC签名验签示例问题如何用Java实现HMAC签名和验签?答案importjavax.crypto.Mac;importjavax.crypto.spec.SecretKeySpec;importjava.nio.charset.StandardCharsets;importjava.util.HexFormat;publicclassHmacExample{//生成H</div>
                    </li>
                    <li><a href="/article/1902004614694236160.htm"
                           title="征程 6 VP简介与单算子实操" target="_blank">征程 6 VP简介与单算子实操</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6%E7%AE%97%E6%B3%95/1.htm">自动驾驶算法</a>
                        <div>1.如何理解VPVP,全称VisionProcess,指UCP中的视觉处理功能模块。Backends,指UCP框架中的可分配处理单元。VP模块主要用于模型的前后处理环节,在地平线统一架构中,多种硬件均已搭载了图像处理的算子,而VP模块将图像处理相关的硬件调用进行了封装,通过设置backend来选择不同的硬件方案(若不指定backend,UCP会自动适配负载更低的处理单元),从而平衡开发板负载。VP</div>
                    </li>
                    <li><a href="/article/1902004611460427776.htm"
                           title="Java高级常用类" target="_blank">Java高级常用类</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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>LocalDateTime,StringBuilder,BigDecimalLocalDateTime使用(通过这个类创建一个日期时间的实例对象)//LocalDate-->日期//LocalTime-->时间//LocalDateTime-->日期和时间对于日期时间进行格式化输出:DateTimeFormatter.ofPattern(“指定的格式”)y表示年份,M表示月份,d表示日期,H表示小</div>
                    </li>
                    <li><a href="/article/1902004361500880896.htm"
                           title="CSS入门:为文档添加样式的几种方法" target="_blank">CSS入门:为文档添加样式的几种方法</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a>
                        <div>CSS入门:为文档添加样式的几种方法一、先从HTML开始吧HTML是网页的基础结构,我们需要先有HTML文档才能添加样式。二、添加CSS试试看?让我们开始为HTML添加一些基本的CSS样式。三、样式化HTML元素基本语法p{color:green;}四、改变元素的默认行为修改元素的默认显示方式和行为。五、使用类名通过类名选择器来定义样式:.special{color:orange;}六、根据元素在</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>