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/1899352777931419648.htm"
                           title="页面跳转隐藏url参数" target="_blank">页面跳转隐藏url参数</a>
                        <span class="text-muted">Otaku love travel</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>在某些特定的情况下,直接请求会在url显示参数传值等,基于简单的安全性考虑,可以去掉参数,但是传参问题有出现了,以下提供了一个简单的解决方案1、a标签直接url跳转改为点击事件2、调用以下方法httpPostLocationUrl/***页面跳转*@paramurl请求地址xxx\xxx?xxx=xx&xx=xx*@paramparams可选参数json对象数据{‘a’:1}*/functionh</div>
                    </li>
                    <li><a href="/article/1899352523634962432.htm"
                           title="HIBERNATE - 符合Java习惯的关系数据库持久化" target="_blank">HIBERNATE - 符合Java习惯的关系数据库持久化</a>
                        <span class="text-muted">popkiler</span>
<a class="tag" taget="_blank" href="/search/Atleap%E4%BB%A3%E7%A0%81%E8%AF%BB%E8%A7%A3/1.htm">Atleap代码读解</a><a class="tag" taget="_blank" href="/search/hibernate/1.htm">hibernate</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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/class/1.htm">class</a><a class="tag" taget="_blank" href="/search/payment/1.htm">payment</a>
                        <div>HIBERNATE-符合Java习惯的关系数据库持久化Hibernate2参考文档2.1.1TableofContents前言1.在Tomcat中快速上手1.1.开始Hibernate之旅1.2.第一个可持久化类1.3.映射cat1.4.与猫同乐1.5.结语2.体系结构2.1.总览2.2.持久化对象标识(PersistentObjectIdentity)2.3.JMX集成2.4.JCA支持3.Se</div>
                    </li>
                    <li><a href="/article/1899352525644034048.htm"
                           title="如果,你想找 AI大模型相关的工作,这三个建议你一定要看!" target="_blank">如果,你想找 AI大模型相关的工作,这三个建议你一定要看!</a>
                        <span class="text-muted">我爱学大模型</span>
<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/chatgpt/1.htm">chatgpt</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">AI大模型</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%85%A5%E9%97%A8/1.htm">大模型入门</a><a class="tag" taget="_blank" href="/search/%E8%BD%AC%E8%A1%8C/1.htm">转行</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a>
                        <div>01各种大厂小厂创业团队和AI擦边的面试难度,由难到简单,依次是:大模型算法(⭐⭐⭐⭐⭐)模型部署加速(⭐⭐⭐⭐)RAG等相关技术(⭐⭐⭐)纯应用(⭐⭐)Prompt工程师等其他自媒体(⭐)会简单应用就行02这结果方向,B站找几个视频看看,这里推荐用Qwen7B,开源的模型,一个3060都能跑。例如这个,如何微调Qwen开源模型。https://www.bilibili.com/video/BV1</div>
                    </li>
                    <li><a href="/article/1899349626687909888.htm"
                           title="ES6语法详解" target="_blank">ES6语法详解</a>
                        <span class="text-muted">八月五</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/es6/1.htm">es6</a>
                        <div>ES的全称是ECMAScript,它是由ECMA国际标准化组织,制定的一项脚本语言的标准化规范。ES6实际上是一个泛指,泛指ES2015及后续的版本。目录1.let关键字和const关键字let关键字const关键字2.解构赋值数组解构赋值对象解构赋值解构赋值用于传参3.字符串新增特性模板字符串字符串实例新增方法4.数值新增特性新增二进制和八进制表示方法Number构造函数本身新增方法和属性安全整</div>
                    </li>
                    <li><a href="/article/1899349620543254528.htm"
                           title="CentOS停更;阿里发布全新操作系统(Anolis OS)" target="_blank">CentOS停更;阿里发布全新操作系统(Anolis OS)</a>
                        <span class="text-muted">萌褚</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>镜像下载、域名解析、时间同步请点击阿里云开源镜像站Linux系统对于Java程序员来说,就好比“乞丐手里的碗”,任何业务都离不开他的身影,因为服务端的广泛使用,也因此衍生出了各种不同的发行版,其中我个人用的最多、且最喜欢的就是CentOS;不幸的是,2021年底CentOS8宣布停止了维护;不过,喜欢CentOS的朋友们不用为此而难过;21年的云栖大会上,阿里云发布全新操作系统“龙蜥”(Anoli</div>
                    </li>
                    <li><a href="/article/1899349242577743872.htm"
                           title="公务员行测之速算分数记忆检验-无答案版本" target="_blank">公务员行测之速算分数记忆检验-无答案版本</a>
                        <span class="text-muted">Lemon爱吃苹果</span>
<a class="tag" taget="_blank" href="/search/%E5%85%AC%E5%8A%A1%E5%91%98/1.htm">公务员</a><a class="tag" taget="_blank" href="/search/%E5%85%AC%E5%8A%A1%E5%91%98/1.htm">公务员</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA/1.htm">计算机</a>
                        <div>前言为了提高速算速度,有一些分数是必须要记忆的,这个博客是为了检验自己记忆效果的,答案在下一篇博客上面,自己查看哟!!!速算之分数记忆检验12=%\frac{1}{2}=\%21=%13=%\frac{1}{3}=\%31=%14=%\frac{1}{4}=\%41=%15=%\frac{1}{5}=\%51=%16=%\frac{1}{6}=\%61=%17=%\frac{1}{7}=\%71=</div>
                    </li>
                    <li><a href="/article/1899349116274667520.htm"
                           title="QT::从Debug切换成Release模式后,qDebug输出不写入日志" target="_blank">QT::从Debug切换成Release模式后,qDebug输出不写入日志</a>
                        <span class="text-muted">lkasi</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/Relesae/1.htm">Relesae</a><a class="tag" taget="_blank" href="/search/Debug/1.htm">Debug</a>
                        <div>问题描述:从Debug切换成Release模式后,qDebug输出不写入日志解决方法:在.pro中加入DEFINES+=QT_MESSAGELOGCONTEXTQMAKE_CXXFLAGS_RELEASE=$$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFOQMAKE_LFLAGS_RELEASE=$$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO注意</div>
                    </li>
                    <li><a href="/article/1899348864192802816.htm"
                           title="Halcon 3月License 持续更新" target="_blank">Halcon 3月License 持续更新</a>
                        <span class="text-muted">lkasi</span>
<a class="tag" taget="_blank" href="/search/haclon/1.htm">haclon</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/c%2B%2B/1.htm">c++</a>
                        <div>大家新年快乐啊!3月License:仅仅支持以下版本24.05和24.1111月:呜呜呜呜,才装的23,又要装24了12月:yeah!我是24.05!!!1月:新的一年,24还是可以用大家春节快乐呀2月:新的一年,24依然可以用3月:24.0524.11依然可以用!!!链接:https://pan.baidu.com/s/1GmymNfYVFlokESK2r1HnmA?pwd=agey提取码:ag</div>
                    </li>
                    <li><a href="/article/1899348108433747968.htm"
                           title="零基础必看!CCF-GESP Python一级考点全解析:运算符这样学就对了" target="_blank">零基础必看!CCF-GESP 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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>第一章编程世界的基础工具:运算符三剑客在Python编程语言中,运算符如同魔法咒语般神奇。对于CCF-GESPPython一级考生而言,正确掌握比较运算符、算术运算符和逻辑运算符这三大基础工具,就相当于打开了数字世界的大门。这三个运算符家族共同构成了程序逻辑的核心骨架,其灵活组合能实现从简单计算到复杂判断的多样功能。1.1运算符分类图谱算术运算符:负责数字间的数学运算(+-*/%)比较运算符:用于</div>
                    </li>
                    <li><a href="/article/1899347478755471360.htm"
                           title="机器学习(Machine Learning)" target="_blank">机器学习(Machine Learning)</a>
                        <span class="text-muted">七指琴魔御清绝</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%AD%A6%E4%B9%A0/1.htm">大数据学习</a>
                        <div>原文链接:http://blog.csdn.net/zhoubl668/article/details/42921187希望转载的朋友,你可以不用联系我.但是一定要保留原文链接,因为这个项目还在继续也在不定期更新.希望看到文章的朋友能够学到更多.《BriefHistoryofMachineLearning》介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Ada</div>
                    </li>
                    <li><a href="/article/1899346470969077760.htm"
                           title="ES6解构赋值详解" target="_blank">ES6解构赋值详解</a>
                        <span class="text-muted">漫天转悠</span>
<a class="tag" taget="_blank" href="/search/ES6/1.htm">ES6</a><a class="tag" taget="_blank" href="/search/es6/1.htm">es6</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a>
                        <div>ES6解构赋值详解ES6解构赋值是JavaScript语言的一项强大特性,它允许从数组或对象中提取数据,并将其赋值给变量。这一特性不仅简化了代码,提高了可读性,还增强了代码的灵活性。本文将详细介绍ES6解构赋值的基本概念、语法、应用场景以及一些高级用法。1.基本概念解构赋值是对赋值运算符的扩展。它允许按照一定的模式,从数组或对象中提取值,并赋值给变量。这种语法使得从复杂数据结构中提取数据变得更加简</div>
                    </li>
                    <li><a href="/article/1899345715394572288.htm"
                           title="快速入门:利用fast-elasticsearch-vector-scoring提升ES向量搜索效率" target="_blank">快速入门:利用fast-elasticsearch-vector-scoring提升ES向量搜索效率</a>
                        <span class="text-muted">劳泉文Luna</span>

                        <div>快速入门:利用fast-elasticsearch-vector-scoring提升ES向量搜索效率fast-elasticsearch-vector-scoringScoredocumentsusingembedding-vectorsdot-productorcosine-similaritywithESLuceneengine项目地址:https://gitcode.com/gh_mirro</div>
                    </li>
                    <li><a href="/article/1899344959870398464.htm"
                           title="【PX4】Ubuntu20.04安装PX4教程" target="_blank">【PX4】Ubuntu20.04安装PX4教程</a>
                        <span class="text-muted">davidson1471</span>
<a class="tag" taget="_blank" href="/search/PX4/1.htm">PX4</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E4%BA%BA%E6%9C%BA/1.htm">无人机</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a>
                        <div>*建议早上安装*1.下载以往版本从github上clone源码gitclonehttps://github.com/PX4/PX4-Autopilot.git进入PX4-Autopilot文件夹cdPX4-Autopilot查看当前分支,位于origin/maingitstatus查看所有远程分支,带release的gitbranch-r|grep"release"切换到发行分支v1.12gitc</div>
                    </li>
                    <li><a href="/article/1899344581816807424.htm"
                           title="ES6解构语法详解" target="_blank">ES6解构语法详解</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/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/es6/1.htm">es6</a>
                        <div>ES6的解构语法简化了我们开发过程中复杂的取值过程,可能你在a.b.c.d的时候别人早就把值一开始就取出来了,使代码更加简洁。下面开始进行语法的详解。一、单层解构单层解构constearth={people:'人类',animal:'动物'}const{people,animal}=earthconsole.log(people,animal);//人类动物单层解构并更改变量名称consteart</div>
                    </li>
                    <li><a href="/article/1899344329625890816.htm"
                           title="Go 语言使用Protobuf 进行序列化详解" target="_blank">Go 语言使用Protobuf 进行序列化详解</a>
                        <span class="text-muted">尘鹄</span>
<a class="tag" taget="_blank" href="/search/Go/1.htm">Go</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/1.htm">语言学习之路</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/rpc/1.htm">rpc</a><a class="tag" taget="_blank" href="/search/go/1.htm">go</a>
                        <div>文章目录Go语言使用Protobuf进行序列化详解1.Protobuf是什么?2.安装Protobuf及Go依赖3.编写.proto文件4.实现序列化和反序列化Go语言使用Protobuf进行序列化详解1.Protobuf是什么?以下是Protobuf官方中文文档的概述:Protobuf(ProtocolBuffers)是一种语言中立、平台中立的可扩展机制,用于序列化结构化数据。它类似于JSON,</div>
                    </li>
                    <li><a href="/article/1899343699440103424.htm"
                           title="Qt 串口类QSerialPort 使用笔记" target="_blank">Qt 串口类QSerialPort 使用笔记</a>
                        <span class="text-muted">一对一答疑的编程作家朱文伟</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/%E7%AC%94%E8%AE%B0/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>Qt串口类QSerialPort使用笔记虽然现在大多数的家用PC机上已经不提供RS232接口了。但是由于RS232串口操作简单、通讯可靠,在工业领域中仍然有大量的应用。Qt以前的版本中,没有提供官方的对RS232串口的支持,编写串口程序很不方便。现在好了,在Qt5.1中提供了QtSerialPort模块,方便编程人员快速的开发应用串口的应用程序。本文就简单的讲讲QtSerialPort模块的使用。</div>
                    </li>
                    <li><a href="/article/1899343699897282560.htm"
                           title="Towards Multimodal Large-Language Models for Parent-Child Interaction: A Focus on Joint Attention" target="_blank">Towards Multimodal Large-Language Models for Parent-Child Interaction: A Focus on Joint Attention</a>
                        <span class="text-muted">UnknownBody</span>
<a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/Daily/1.htm">Daily</a><a class="tag" taget="_blank" href="/search/Multimodal/1.htm">Multimodal</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/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/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>摘要共同注意是儿童早期语言发展的关键组成部分,也是亲子互动有效性的重要指标。然而,目前对共同注意的检测和分析研究仍然有限,尤其是在多模态大语言模型(MLLMs)方面。本研究通过分析由两位语言病理学家标注的26段亲子互动视频,评估了多模态大语言模型理解共同注意的能力。这些标注识别出了共同注意程度高和低的片段,作为评估模型解释能力的基准。我们的研究结果显示,由于当前的多模态大语言模型对儿童发起的眼神交</div>
                    </li>
                    <li><a href="/article/1899343573246078976.htm"
                           title="web前端期末大作业:婚纱网页主题网站设计——唯一旅拍婚纱公司网站HTML+CSS+JavaScript" target="_blank">web前端期末大作业:婚纱网页主题网站设计——唯一旅拍婚纱公司网站HTML+CSS+JavaScript</a>
                        <span class="text-muted">IT-司马青衫</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                        <div>‍静态网站的编写主要是用HTMLDⅣV+CSSJS等来完成页面的排版设计‍,一般的网页作业需要融入以下知识点:div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉导航栏、鼠标划过效果等知识点,学生网页作业源码,制作水平和原创度都适合学习或交作业用,记得点赞。精彩专栏推荐【作者主页——获取更多优质源码】【web前端期末大作业——毕设项目精品实战案例(1</div>
                    </li>
                    <li><a href="/article/1899343443029716992.htm"
                           title="在 ASP.NET Core WebAPI 中使用 JWT 验证" target="_blank">在 ASP.NET Core WebAPI 中使用 JWT 验证</a>
                        <span class="text-muted">.NET跨平台</span>
<a class="tag" taget="_blank" href="/search/ASP.NET/1.htm">ASP.NET</a><a class="tag" taget="_blank" href="/search/Core/1.htm">Core</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/API/1.htm">API</a><a class="tag" taget="_blank" href="/search/IdentityServer4/1.htm">IdentityServer4</a><a class="tag" taget="_blank" href="/search/OAuth2.0%E5%8D%8F%E8%AE%AE/1.htm">OAuth2.0协议</a><a class="tag" taget="_blank" href="/search/.NET/1.htm">.NET</a><a class="tag" taget="_blank" href="/search/CORE/1.htm">CORE</a><a class="tag" taget="_blank" href="/search/WEBAPI/1.htm">WEBAPI</a><a class="tag" taget="_blank" href="/search/JWT/1.htm">JWT</a>
                        <div>为了保护WebAPI仅提供合法的使用者存取,有很多机制可以做,透过JWT(JSONWebToken)便是其中一种方式,这篇示范如何使用官方所提供的System.IdentityModel.Tokens.Jwt扩充套件,处理呼叫API的来源是否为合法的使用者身分。顺道一提,要产生JWTToken有很多套件可以帮助开发者快速建立,JWT这个NuGet套件就是其中一个,但这裡我使用官方所提供的Syste</div>
                    </li>
                    <li><a href="/article/1899342938668855296.htm"
                           title="【Go语言圣经1.1】" target="_blank">【Go语言圣经1.1】</a>
                        <span class="text-muted">Pyroyster</span>
<a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>目标学习Go的编译方式、包的组织方式以及工具链的统一调用方式概念与定义packageGo语言通过包来组织代码。包类似于其它语言的库librarries或模块modules,每个包通常对应一个目录,目录中的所有.go文件都属于同一个包。特殊的main包:当代码使用packagemain声明时,表示这是一个可独立执行的程序而非一个库。程序的执行入口就是main函数import通过import语句,编译</div>
                    </li>
                    <li><a href="/article/1899342308202049536.htm"
                           title="Spike Neural Network Introduction and Research Directions" target="_blank">Spike Neural Network Introduction and Research Directions</a>
                        <span class="text-muted">Debug_Snail</span>
<a class="tag" taget="_blank" href="/search/SNN/1.htm">SNN</a><a class="tag" taget="_blank" href="/search/Neuralnetwork/1.htm">Neuralnetwork</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/AIGC/1.htm">AIGC</a>
                        <div>1.SNNs是一类神经网络,其中的神经元通过脉冲(spikes)来传递信息,而不是像传统的人工神经网络中那样使用实数值激活。SNNs更接近生物学上的神经系统,因为生物神经元也是通过电信号脉冲来传递信息的。与传统神经网络相比,SNNs具有以下几个特点:更低的功耗-因为只在发生脉冲时才激活神经元,所以整体功耗会比传统神经网络低很多。这使得SNNs很适合应用在对功耗要求非常严格的场景,如边缘计算。时序编</div>
                    </li>
                    <li><a href="/article/1899342308868943872.htm"
                           title="一文理清:阿里系数据中台-数据治理工具集(傻傻也能分清楚)" target="_blank">一文理清:阿里系数据中台-数据治理工具集(傻傻也能分清楚)</a>
                        <span class="text-muted">Debug_Snail</span>
<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><a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E5%B7%A5%E5%85%B7/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/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/1.htm">数据仓库</a>
                        <div>阿里云提供的大数据与数据分析产品种类较多,各产品的定位和核心功能有所不同。以下是对DataWorks、MaxCompute、Dataphin、AnalyticDBforMySQL(ADB)、QuickBI、EMR的详细梳理。一、核心产品定位与功能DataWorks定位:一站式大数据开发治理平台,提供数据集成、开发、调度、治理、服务等全链路能力。核心功能:数据集成:支持异构数据源(如数据库、OSS、</div>
                    </li>
                    <li><a href="/article/1899341426584514560.htm"
                           title="如何注册下载币安" target="_blank">如何注册下载币安</a>
                        <span class="text-muted">FAC306</span>
<a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/web3/1.htm">web3</a>
                        <div>安卓注册下载链接如下,苹果下载需要更换IDwww.marketwebb.click/zh-CN/join?ref=TLMVPKLP</div>
                    </li>
                    <li><a href="/article/1899340922013937664.htm"
                           title="笔记:在.Net Core Web Api里使用JWT" target="_blank">笔记:在.Net Core Web Api里使用JWT</a>
                        <span class="text-muted">风中的余烬~</span>
<a class="tag" taget="_blank" href="/search/.netcore/1.htm">.netcore</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>首先,先建一个JWT配置类//////JWT配置类///publicclassJwtTokenOption{//////Token过期时间,默认为60分钟///publicintTokenExpireTime{get;set;}=60;//////接收人///publicstring?Audience{get;set;}//////秘钥///publicstring?SecurityKey{get</div>
                    </li>
                    <li><a href="/article/1899339285023223808.htm"
                           title="Webpack打包构建流程" target="_blank">Webpack打包构建流程</a>
                        <span class="text-muted">码上跑步</span>
<a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
                        <div>webpack的打包构建流程为什么需要打包?在前端有非常多的资源,如css、js、vue、vue、图片、字体等。有些资源需要加工处理1.ts->jsts-loader2.css->css-loader+style-loader3.图片->file-loader+url-loader4.html->html-webpack-plugin需要对产物进行优化optimization(webpack优化配</div>
                    </li>
                    <li><a href="/article/1899338906130771968.htm"
                           title="webpack" target="_blank">webpack</a>
                        <span class="text-muted">码上跑步</span>
<a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
                        <div>webpack介绍webpack是一个构建工具,实现了模块化管理项目.他的工作方式是用各种loader将各种资源转化为js文件或者对js文件进行压缩编译亦或对静态资源进行处理.官网:webpack由来模块化存在一些问题1.ESM的兼容性问题2.模块文件过多,网络请求频繁3.前端的所有资源包括html和css都需要模块化构建工具应运而生,需要一个集编译,模块打包,支持不同的资源的模块打包工具.Web</div>
                    </li>
                    <li><a href="/article/1899338906554396672.htm"
                           title="Vue初体验" target="_blank">Vue初体验</a>
                        <span class="text-muted">码上跑步</span>
<a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>Vue基础Vue是什么?Vue是javascript的渐进式框架。Vue初识Vue工作时必须要创建一个Vue的实例,并且传入一个配置对象。root容器里的代码是符合html的语法但是新添加了一些Vue语法,在这些地方Vue会自动进行解析。root容器里的代码称为Vue模版。Vue实例和容器是一一对应的。在实际开发中只有一个Vue,配合组件使用。在vue里的插值{{}}内部只要写js表达式就能正常解</div>
                    </li>
                    <li><a href="/article/1899338906982215680.htm"
                           title="vue脚手架" target="_blank">vue脚手架</a>
                        <span class="text-muted">码上跑步</span>
<a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</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>
                        <div>Vue脚手架脚手架是官方提供的标准化开发工具。下载配置//全局安装vue的脚手架npminstall@vue/cli-g//在项目目录下开启一个脚手架vuecreate‘项目名’//进入项目目录,直接运行npmrunserve1.vue.js与vue.runtime.xxx.js的区别:(1).vue.js是完整版的Vue,包含:核心功能+模板解析器。(2).vue.runtime.xxx.js是</div>
                    </li>
                    <li><a href="/article/1899337646648389632.htm"
                           title="ES6 解构详解" target="_blank">ES6 解构详解</a>
                        <span class="text-muted">yqcoder</span>
<a class="tag" taget="_blank" href="/search/es6/1.htm">es6</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>
                        <div>一、数组解构1.基本用法可以按照数组元素的顺序将数组中的值提取到变量中。constarr=[1,2,3];const[a,b,c]=arr;console.log(a);//1console.log(b);//2console.log(c);//32.忽略某些元素如果不想提取数组中的某些元素,可以使用逗号占位。const[x,,z]=[1,2,3];console.log(x);//1consol</div>
                    </li>
                    <li><a href="/article/1899336890570567680.htm"
                           title="机器学习实战——音乐流派分类(主页有源码)" target="_blank">机器学习实战——音乐流派分类(主页有源码)</a>
                        <span class="text-muted">喵了个AI</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%AE%9E%E6%88%98/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/%E5%88%86%E7%B1%BB/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>✨个人主页欢迎您的访问✨期待您的三连✨✨个人主页欢迎您的访问✨期待您的三连✨✨个人主页欢迎您的访问✨期待您的三连✨1.简介音乐流派分类是音乐信息检索(MusicInformationRetrieval,MIR)中的一个重要任务,旨在通过分析音频信号的特征,将音乐自动分类到不同的流派(如古典、摇滚、爵士、流行等)。随着数字音乐平台的普及,音乐流派分类技术被广泛应用于音乐推荐、自动标签生成和音乐库管理</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>