首页 > 其他 > 详细

从0开始学golang--2.2--如何去爬园子的数据👉进阶篇,面向对象的单任务版

时间:2019-04-15 20:42:17      阅读:278      评论:0      收藏:0      [点我收藏+]

 

执行页-----------------------------------代码??----------------------------------

package main

import (
    "../sole/cnblogs/parserabc"
    "../sole/engine"
)

func main() {
    engine.Run(engine.Request{
        //Url:        "http://www.zhenai.com/zhenghun",
        ParserFunc: parserabc.ParseCategory,
        Url:        "https://www.cnblogs.com/",
    })
}

 

engine页1----run代码块-----------------------------------代码??----------------------------------

package engine

import (
    "log"

    "../fetcher"
)

func Run(seeds ...Request) {
    var requests []Request
    for _, r := range seeds {
        requests = append(requests, r)
    }
    for len(requests) > 0 {
        r := requests[0]
        requests = requests[1:]

        log.Printf("Fetching %s", r.Url)

        body, err := fetcher.Fetch(r.Url)
        if err != nil {
            log.Printf("Fetch:error"+
                "fetching url %s:%v",
                r.Url, err)
            continue
        }
        ParseResult := r.ParserFunc(body)
        requests = append(requests,
            ParseResult.Requests...)

        for _, item := range ParseResult.Items {
            log.Printf("Got item %v", item)
        }
    }
}

engine页2----处理数据代码块-----------------------------------代码??----------------------------------

package engine

type Request struct {
    Url        string
    ParserFunc func([]byte) ParseResult
}
type ParseResult struct {
    Requests []Request
    Items    []interface{}
}

func NilParser([]byte) ParseResult {
    return ParseResult{}
}

fetcher页1------------提取数据代码块-----------------------------------代码??----------------------------------

package fetcher

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func Fetch(url string) ([]byte, error) {
    resp, err := http.Get(url)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()

    if resp.StatusCode != http.StatusOK {
        return nil,
            fmt.Errorf("wrong status code :%d",
                resp.StatusCode)
    }
    return ioutil.ReadAll(resp.Body)
}

cnblgos页1category------------拉取cnblgos数据代码块-----------------------------------代码??----------------------------------

package main

import (
    "../sole/cnblogs/parser"
    "../sole/engine"
)

func main() {
    engine.Run(engine.Request{
        ParserFunc: parser.ParseCategory,
        Url: "https://www.cnblogs.com/",
    })
}

cnblgos页2------------测试category拉取cnblgos数据代码块-----------------------------------代码??----------------------------------

package parser

import (
    "io/ioutil"
    "testing"
)

func TestParseCategory(t *testing.T) {
    // contents, err := fetcher.Fetch(
    //     "https://www.cnblogs.com/")

    contents, err := ioutil.ReadFile("category_test_data.html")
    if err != nil {
        panic(err)
    }
    //fmt.Printf("%s\n", contents)
    result := ParseCategory(contents)

    const resultSize = 10
    expectedUrls := []string{
        "https://home.cnblogs.com/", "https://q.cnblogs.com/", "https://ing.cnblogs.com/",
    }
    expectedCities := []string{
        "园子", "博问", "闪存",
    }
    if len(result.Requests) != resultSize {
        t.Errorf("resykt should have %d "+
            "requests;but had %d", resultSize, len(result.Requests))
    }
    for i, url := range expectedUrls {
        if result.Requests[i].Url != url {
            t.Errorf("expected url #%d:%s;but"+
                "was %s",
                i, url, result.Requests[i].Url)
        }
    }

    if len(result.Items) != resultSize {
        t.Errorf("resykt should have %d "+
            "requests;but had %d", resultSize, len(result.Items))
    }
    for i, city := range expectedCities {
        if result.Items[i].(string) != city {
            t.Errorf("expected url #%d:%s;but"+
                "was %s",
                i, city, result.Items[i].(string))
        }
    }
}

cnblgos页3category_test_data.html------------category_test.go需要的页面-----------------------------------代码??----------------------------------

技术分享图片
Running tool: C:\Go\bin\go.exe test -timeout 30s -run ^(TestParseCategory)$

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="referrer" content="always" />
    <title>博客园 - 代码改变世界</title>
        <meta name="keywords" content="开发者,博客园,开发者,程序猿,程序媛,极客,编程,代码,开源,IT网站,Developer,Programmer,Coder,Geek,技术社区" />
            <meta name="description" content="博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。" />
    <link rel="shortcut icon" href="//common.cnblogs.com/favicon.ico" type="image/x-icon" />
    <link rel="Stylesheet" type="text/css" href="/bundles/aggsite.css?v=IlEZk4Ic2eCzcO6r0s4bGm62FAo8VZI-US_0EqUe2Bk1" />
        <link id="RSSLink" title="RSS" type="application/rss+xml" rel="alternate" href="http://feed.cnblogs.com/blog/sitehome/rss" />
    <script src="//common.cnblogs.com/scripts/jquery-2.2.0.min.js" type="text/javascript"></script>
    <script src="/bundles/aggsite.js?v=fTlQli-jwWdKDcIWXi6j2mlPIsYotYs01MmOSKnPUvw1" type="text/javascript"></script>
    <script async=‘async‘ src=‘https://www.googletagservices.com/tag/js/gpt.js‘></script>
    <script>
        var googletag = googletag || {};
        googletag.cmd = googletag.cmd || [];
    </script>

    <script>
        googletag.cmd.push(function () {
            googletag.defineSlot(/1090369/A1, [468, 60], div-gpt-ad-1547816814884-0).addService(googletag.pubads());
            googletag.defineSlot(/1090369/B1, [300, 250], div-gpt-ad-1546331539224-0).addService(googletag.pubads());
            googletag.defineSlot(/1090369/B2, [300, 250], div-gpt-ad-1539007469525-0).addService(googletag.pubads());
            googletag.defineSlot(/1090369/B3, [300, 250], div-gpt-ad-1546331252242-0).addService(googletag.pubads());
            googletag.defineSlot(/1090369/B4, [300, 250], div-gpt-ad-1546331385104-0).addService(googletag.pubads());
            googletag.pubads().enableSingleRequest();
            googletag.enableServices();
        });
    </script>
</head>
<body>
    <div id="wrapper">
        <div id="hd_info">
            <div id="cnts">
                <div id="site_nav_top">代码改变世界</div>
                <div id="login_area"><span id="span_userinfo"></span></div>
                <div class="clear"></div>
            </div>
        </div>
        <div id="header">
            <p class="h_r_3"></p><p class="h_r_2"></p><p class="h_r_1"></p>
            <div id="header_block">
                <div id="logo">
                    <h1>
                            <a href="https://www.cnblogs.com/" title="开发者的网上家园"><img src="/images/logo_small.gif" alt="博客园Logo" width="142" height="55" /></a>
                    </h1>
                </div>

                <div class="clear"></div>
            </div>
            <p class="h_r_1"></p><p class="h_r_2"></p><p class="h_r_3"></p>
        </div>
        <div id="nav_menu"><a href="https://home.cnblogs.com/">园子</a><a href="https://news.cnblogs.com">新闻</a><a href="https://q.cnblogs.com/">博问</a><a href="https://ing.cnblogs.com/">闪存</a><a href="https://group.cnblogs.com/">小组</a><a href="https://wz.cnblogs.com/">收藏</a><a href="https://job.cnblogs.com/">招聘</a><a href="https://edu.cnblogs.com/">班级</a><a href="http://zzk.cnblogs.com/">找找看</a></div>
        <div id="main">
            <div class="post_nav_block_wrapper">
                <ul class="post_nav_block">
                        <li><a href="/"  class="current_nav" >首页</a></li>
                        <li><a href="/pick/"   title="编辑精选博文">精华</a></li>
                        <li><a href="/candidate/"   title="候选区的博文">候选</a></li>
                        <li><a href="/news/"   title="新闻频道最新新闻">新闻</a></li>
                        <li><a href="/following"   title="我关注博客的最新博文">关注</a></li>
                        <li><a href="/aggsite/mycommented"   title="我评论过的博文">我评</a></li>
                        <li><a href="/aggsite/mydigged"   title="我推荐过的博文">我赞</a></li>
                </ul>
                <div class="clear"></div>
            </div>
            <div class="rss_link" id="rss_block">
<span id="posts_refresh_tips"></span><a id="posts_refresh" href="#" class="refresh" title="刷新博文列表" onclick="aggSite.loadCategoryPostList();return false">刷新</a>                <a href="http://feed.cnblogs.com/blog/sitehome/rss"><img src="//common.cnblogs.com/images/icon_rss.gif" alt="点击订阅" style="position:relative;top:2px;" title="订阅博客园文章" /></a>            </div>
                <div id="headline_block" class="headline"><ul><li class="editor_pick"><a href="https://www.cnblogs.com/kubidemanong/p/10681550.html" id="editor_pick_lnk" target="_blank">【编辑推荐】并发的核心:Java 8 是如何优化 CAS 的?<span id="editor_pick_count"></span></a> <a href="/aggsite/headline" title="查看更多编辑推荐" class="right_more">»</a></li><li><a href="https://www.cnblogs.com/bobositlife/p/create-windows-service-with-topshelf-in-csharp-console-application.html" target="_blank" title="阅读344, 评论0, 推荐6">[最多推荐]C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载(极速,简洁)(0/344)</a> <a href="/aggsite/topdigged24h" title="查看24小时推荐排行" class="right_more">»</a></li><li><a href="https://www.cnblogs.com/lwqlun/p/10693763.html" target="_blank" title="阅读443, 评论13, 推荐3">[最多评论]使用强类型实体Id来避免原始类型困扰(一)(13/443)</a> <a href="/aggsite/topcommented24h" title="查看24小时评论排行" class="right_more">»</a></li><li><a href="https://news.cnblogs.com/n/623699/" target="_blank" title="阅读989, 评论3, 推荐8">[新闻头条]SpaceX重型猎鹰火箭升空 系首次商业发射(3/989)</a> <a href="https://news.cnblogs.com/" title="查看更多新闻" class="right_more">»</a></li><li><a href="https://news.cnblogs.com/n/623730/" target="_blank" title="阅读1540, 评论21, 推荐0">[推荐新闻]马云谈996:只有付出巨大的代价才可能有回报(21/1540)</a> <a href="https://news.cnblogs.com/n/recommend" title="查看更多推荐新闻" class="right_more">»</a></li></ul></div>

            

            
            <div id="pager_top" style="display:none"></div>
            <div id="post_list_tips" class="hide"></div>
            
            <div id="post_list">
                
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘31415926535x‘,10697659,394278,1)"> 
    <span class="diggnum" id="digg_count_10697659">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10697659" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/31415926535x/p/10697659.html" target="_blank">Java实验-课程设计报告一:个人银行账户管理系统SavingAccountManageSystem-具体文档+源码</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/31415926535x/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1028485/20180729142414.png" alt=""/></a>    课程设计报告一:个人银行账户管理系统 此文档及源码仅供参考 不得直接复制使用 author: [xxxxxxxxx xx xxxx] date: "2019 04 12" 作 者:31415926535x 出 处:https://www.cnblogs.com/31415926535x/p/1069 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/31415926535x/" class="lightblue">31415926535x</a> 
    发布于 2019-04-12 18:45 
    <span class="article_comment"><a href="https://www.cnblogs.com/31415926535x/p/10697659.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/31415926535x/p/10697659.html" class="gray">阅读(10)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘wshiqtb‘,10697804,131855,1)"> 
    <span class="diggnum" id="digg_count_10697804">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10697804" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/wshiqtb/p/10697804.html" target="_blank">vue-cli@2的原理解析</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/wshiqtb/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/339959/20160202162047.png" alt=""/></a>    作为一个菜鸟,我有一颗好奇的心,每当vue init 的时候,看到那流畅的进度和神奇的结果,心里都充满一窥其本质的期望…… 以下就是我不断的console,大致理出来的一个流程心得,纪录在此,以作备忘。 1、which vue,定位vue命令的实际位置 2、去往命令vue的目录,查看代码 这里的co ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/wshiqtb/" class="lightblue">钱天兵</a> 
    发布于 2019-04-12 18:35 
    <span class="article_comment"><a href="https://www.cnblogs.com/wshiqtb/p/10697804.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/wshiqtb/p/10697804.html" class="gray">阅读(13)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘kenken2018‘,10651435,464035,1)"> 
    <span class="diggnum" id="digg_count_10651435">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10651435" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/kenken2018/p/10651435.html" target="_blank">MariaDB Galera集群部署--技术流ken</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/kenken2018/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1499615/20180927123523.png" alt=""/></a>    Galera集群介绍 MariaDB集群是MariaDB同步多主机集群。它仅支持XtraDB/ InnoDB存储引擎。 主要功能 同步复制 真正的multi-master,即所有节点可以同时读写数据库 自动的节点成员控制,失效节点自动被清除 新节点加入数据自动复制 真正的并行复制,行级 用户可以直接 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/kenken2018/" class="lightblue">技术流ken</a> 
    发布于 2019-04-12 18:33 
    <span class="article_comment"><a href="https://www.cnblogs.com/kenken2018/p/10651435.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/kenken2018/p/10651435.html" class="gray">阅读(14)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘Vam8023‘,10684651,138392,1)"> 
    <span class="diggnum" id="digg_count_10684651">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10684651" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/Vam8023/p/10684651.html" target="_blank">.net core 注入中的三种模式:Singleton、Scoped 和 Transient</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/Vam8023/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/485374/20140317093749.png" alt=""/></a>    从上篇内容不如题的文章《.net core 并发下的线程安全问题》扩展认识.net core注入中的三种模式:Singleton、Scoped 和 Transient 我们都知道在 Startup 的&#160;ConfigureServices 可以注入我们想要的服务,那么在注入的时候有三种模式可以选择,那 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/Vam8023/" class="lightblue">Vam8023</a> 
    发布于 2019-04-12 18:29 
    <span class="article_comment"><a href="https://www.cnblogs.com/Vam8023/p/10684651.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/Vam8023/p/10684651.html" class="gray">阅读(23)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘yifchan‘,10697766,497617,1)"> 
    <span class="diggnum" id="digg_count_10697766">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10697766" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/yifchan/p/others-1-2.html" target="_blank">Git的使用</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/yifchan/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1618401/20190306101158.png" alt=""/></a>    本文为学习Git教程后的个人小结,比较简洁,适合有一定Git基础的人;内容包括git基础命令,版本相关命令,分支相关命令,推送github,协同开发及其他。 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/yifchan/" class="lightblue">YifChan</a> 
    发布于 2019-04-12 18:25 
    <span class="article_comment"><a href="https://www.cnblogs.com/yifchan/p/others-1-2.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/yifchan/p/others-1-2.html" class="gray">阅读(17)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘chillsrc‘,10697463,13897,1)"> 
    <span class="diggnum" id="digg_count_10697463">1</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10697463" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/chillsrc/p/10697463.html" target="_blank">使用 ASP.NET Core MVC 创建 Web API(三)</a></h3>                   
    <p class="post_item_summary">
    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 十、添加 GetBookItem 方法 1) 在Visual Studio 2017中的“解决方案资源 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/chillsrc/" class="lightblue">DotNet菜园</a> 
    发布于 2019-04-12 17:39 
    <span class="article_comment"><a href="https://www.cnblogs.com/chillsrc/p/10697463.html#commentform" title="2019-04-12 18:10" class="gray">
        评论(1)</a></span><span class="article_view"><a href="https://www.cnblogs.com/chillsrc/p/10697463.html" class="gray">阅读(81)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘tgis‘,10689322,179791,1)"> 
    <span class="diggnum" id="digg_count_10689322">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10689322" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/tgis/p/10689322.html" target="_blank">最大似然估计</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/tgis/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/107065/20150810214343.png" alt=""/></a>    公司年会的抽奖环节需要一个抽奖程序,部门A承担了这个抽奖程序的编写。抽奖结果出来后,发现100个奖项中的35个都被部门A的成员抽到了,而其它部门的中奖数量与与部门的人数占比是一致的;但是部门A的成员人数只占公司总人数的10%。此时大家肯定会认为抽奖程序是不公平的,并且偏向了部门A。这里涉及了概率与统... ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/tgis/" class="lightblue">tgis</a> 
    发布于 2019-04-12 17:34 
    <span class="article_comment"><a href="https://www.cnblogs.com/tgis/p/10689322.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/tgis/p/10689322.html" class="gray">阅读(104)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘kevin-nancy‘,10696681,496592,1)"> 
    <span class="diggnum" id="digg_count_10696681">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10696681" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/kevin-nancy/p/10696681.html" target="_blank">STM32F407 使用HAL库延时微妙实现方法(附配置过程)</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/kevin-nancy/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1617398/20190302110607.png" alt=""/></a>    STM32F407 使用HAL库延时微妙实现方法(STM32CubeMX配置) 作者 : 李剀出处 : https://www.cnblogs.com/kevin-nancy/p/10696681.html 或者 https://blog.csdn.net/Kevin_8_Lee/article/d ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/kevin-nancy/" class="lightblue">K35inL</a> 
    发布于 2019-04-12 17:25 
    <span class="article_comment"><a href="https://www.cnblogs.com/kevin-nancy/p/10696681.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/kevin-nancy/p/10696681.html" class="gray">阅读(26)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘freeself‘,10697337,367464,1)"> 
    <span class="diggnum" id="digg_count_10697337">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10697337" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/freeself/p/10697337.html" target="_blank">iOS逆向开发(6):微信伪造位置</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/freeself/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1200587/20190126105210.png" alt=""/></a>    仍然以微信为例,实战地练习一下使用Reveal、iOSOpenDev等工具注入APP的流程,积累经验。这一系列的文章都是学习过程的总结,不带任何商业目的。 本文解决一个问题:如何伪造一个经纬度,在微信的附近的人中,看到外国的朋友。 小白:我要瞬间移动到旧金山,看看黄师傅的宝芝林的同事们! 之前小程已 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/freeself/" class="lightblue">广州小程</a> 
    发布于 2019-04-12 17:23 
    <span class="article_comment"><a href="https://www.cnblogs.com/freeself/p/10697337.html#commentform" title="2019-04-12 17:39" class="gray">
        评论(1)</a></span><span class="article_view"><a href="https://www.cnblogs.com/freeself/p/10697337.html" class="gray">阅读(77)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘yanfei1819‘,10697156,361618,1)"> 
    <span class="diggnum" id="digg_count_10697156">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10697156" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/yanfei1819/p/10697156.html" target="_blank">并发编程之面试题一</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/yanfei1819/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1183871/20190126092846.png" alt=""/></a>    并发编程之面试题一 面试题 ?    创建一个容器,其中有两个方法,一个方法是 add(),一个方法时size(),起两个线程,一个线程是往容器中添加1 10这是个数字,另外一个线程在数字添加到5的时候结束。 初始代码 该问题咋一看是一个很简单的面试题,创建两个线程,分别执行对应的任务即可。以下就是简单的 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/yanfei1819/" class="lightblue">追梦1819</a> 
    发布于 2019-04-12 17:04 
    <span class="article_comment"><a href="https://www.cnblogs.com/yanfei1819/p/10697156.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/yanfei1819/p/10697156.html" class="gray">阅读(100)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘asche‘,10696853,454343,1)"> 
    <span class="diggnum" id="digg_count_10696853">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10696853" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/asche/p/10696853.html" target="_blank">网站Http升级至Https(基于Tomcat)</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/asche/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1470456/20180824192711.png" alt=""/></a>    首先域名和服务器自然是必须的,大致流程分为以下几部: 申请https证书 上传文件至服务器 配置https 申请https证书 https证书通常是收费的, 不过也有免费版的可以使用。我使用的是在腾讯云上申请的免费版,下面就以腾讯云的为例讲解吧。 首先进入腾讯云中云产品列表,选择 "SSL证书管理" ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/asche/" class="lightblue">Asche</a> 
    发布于 2019-04-12 16:53 
    <span class="article_comment"><a href="https://www.cnblogs.com/asche/p/10696853.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/asche/p/10696853.html" class="gray">阅读(183)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘orange911‘,10696835,419682,1)"> 
    <span class="diggnum" id="digg_count_10696835">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10696835" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/orange911/p/10696835.html" target="_blank">SpringCloud应对高并发的思路</a></h3>                   
    <p class="post_item_summary">
    一、Eureka的高可用性 Eureka下面的服务实例默认每隔30秒会发送一个HTTP心跳给Eureka,来告诉Eureka服务还活着,每个服务实例每隔30秒也会通过HTTP请求向Eureka获取服务列表,这就相当于一个服务实例一分钟会与Eureka进行四次请求,当服务实例多了以后,就要考虑Eure ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/orange911/" class="lightblue">未分配微服务</a> 
    发布于 2019-04-12 16:39 
    <span class="article_comment"><a href="https://www.cnblogs.com/orange911/p/10696835.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/orange911/p/10696835.html" class="gray">阅读(105)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘Jasonchan1994‘,10696930,492082,1)"> 
    <span class="diggnum" id="digg_count_10696930">1</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10696930" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/Jasonchan1994/p/10696930.html" target="_blank">volatile关键字到底做了什么?</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/Jasonchan1994/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1215098/20190213110030.png" alt=""/></a>    话不多说,直接贴代码 这是一个大家耳熟能详的单例实现,其中有两个关键要点,一是使用双重检查锁定(Double-Checked Locking)来尽量延迟加锁时间,以尽量降低同步开销;二就是instance实例上加了volatile关键字。那么为什么一定要加volatile关键字,volatile又为 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/Jasonchan1994/" class="lightblue">Jasonchan1994</a> 
    发布于 2019-04-12 16:37 
    <span class="article_comment"><a href="https://www.cnblogs.com/Jasonchan1994/p/10696930.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/Jasonchan1994/p/10696930.html" class="gray">阅读(113)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘lc-chenlong‘,10696896,99256,1)"> 
    <span class="diggnum" id="digg_count_10696896">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10696896" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/lc-chenlong/p/10696896.html" target="_blank">springboot+mybatis+dubbo+aop日志终结篇</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/lc-chenlong/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/340919/20140223164001.png" alt=""/></a>    之前的几篇文章把dubbo服务层都介绍完毕,本篇文章咱们主要写web层如何调用服务层的方法。文章底部附带源码。 启动服务 服务启动时,会向zk注册自己提供的服务,zk则会记录服务提供者的IP地址以及暴露的接口名称,通过zkCli.cmd&#160;查看树形结构,具体命令如下: 1、ls / 展示两个目录:du ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/lc-chenlong/" class="lightblue">Eric.Chen</a> 
    发布于 2019-04-12 16:32 
    <span class="article_comment"><a href="https://www.cnblogs.com/lc-chenlong/p/10696896.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/lc-chenlong/p/10696896.html" class="gray">阅读(82)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘JackHou‘,10696786,502823,1)"> 
    <span class="diggnum" id="digg_count_10696786">1</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10696786" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/JackHou/p/10696786.html" target="_blank">Spiring系列__03IOC补充</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/JackHou/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1632582/20190315150845.png" alt=""/></a>    这篇文章是对前一篇的一些补充: 1.SpringIOC容器可以管理Bean的声明周期: 通过构造器或工厂方法创建bean的实例; 为bean属性设置值或者引入其他bean; 调用bean的初始化方法 ,此时bean就可以使用了; 容器关闭时,调用bean的清理方法 。 在bean的声明里定义init ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/JackHou/" class="lightblue">本墨</a> 
    发布于 2019-04-12 16:20 
    <span class="article_comment"><a href="https://www.cnblogs.com/JackHou/p/10696786.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/JackHou/p/10696786.html" class="gray">阅读(47)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘lori‘,10696640,67785,1)"> 
    <span class="diggnum" id="digg_count_10696640">1</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10696640" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/lori/p/10696640.html" target="_blank">设计一下类似SpringIoC的注入工具~Lind.DI</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/lori/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/118538/20180819124909.png" alt=""/></a>    通过注解(特性)的方式进行对象的注册与注入,方便,灵活! 本篇主要讲如何去实现,下一篇主要讲如何把它集成到mvc和api环境里,实现自动的注入! spring ioc工作的过程大致为,统一的注册组件,拦截当前请求,统一的注入当前请求所需要的组件,事实上,说到这事,.net也完全可以实现这个功能和工作 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/lori/" class="lightblue">张占岭</a> 
    发布于 2019-04-12 16:02 
    <span class="article_comment"><a href="https://www.cnblogs.com/lori/p/10696640.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/lori/p/10696640.html" class="gray">阅读(118)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘happymeng‘,10696274,481819,1)"> 
    <span class="diggnum" id="digg_count_10696274">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10696274" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/happymeng/p/10696274.html" target="_blank">Python爬虫入门教程 58-100 python爬虫高级技术之验证码篇4-极验证识别技术之一</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/happymeng/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1562022/20181213081554.png" alt=""/></a>    @[toc] 验证码类型 今天要搞定的验证码属于现在使用非常多的验证码的一种类型 极验证滑动验证码,关于这个验证码的详细说明查阅他的官网,https://www.geetest.com/ 把验证码做到这个地步,必须点赞了。 官网最新效果 官方DEMO最新的效果如下,按照验证码的更新频率,基本博客看完 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/happymeng/" class="lightblue">梦想橡皮擦</a> 
    发布于 2019-04-12 15:20 
    <span class="article_comment"><a href="https://www.cnblogs.com/happymeng/p/10696274.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/happymeng/p/10696274.html" class="gray">阅读(225)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘jian0110‘,10690483,445573,1)"> 
    <span class="diggnum" id="digg_count_10690483">1</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10690483" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/jian0110/p/10690483.html" target="_blank">如何正确使用Java泛型</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/jian0110/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1352849/20180724000144.png" alt=""/></a>    前言 Java 1.5之前是没有泛型的,以前从集合中读取每个对象都必须先进行转换,如果不小心存入集合中对象类型是错的,运行过程中转换处理会报错。有了泛型之后编译器会自动帮助转换,使程序更加安全,但是要正确使用泛型才能取得事半功倍的效果。 本文主要从不要使用原生类型,泛型方法,限制通配符,类型安全的异 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/jian0110/" class="lightblue">JJian</a> 
    发布于 2019-04-12 14:53 
    <span class="article_comment"><a href="https://www.cnblogs.com/jian0110/p/10690483.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/jian0110/p/10690483.html" class="gray">阅读(256)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘danvid‘,10691547,502601,1)"> 
    <span class="diggnum" id="digg_count_10691547">0</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10691547" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/danvid/p/10691547.html" target="_blank">es 修改拼音分词器源码实现同音字不匹配</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/danvid/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1567872/20190319234601.png" alt=""/></a>    在业务中经常会用到拼音匹配查询,大家都会用到拼音分词器,但是拼音分词器匹配的时候有个问题,就是会出现同音字匹配,有时候这种情况是业务不希望出现的
 ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/danvid/" class="lightblue">Liu_d_w</a> 
    发布于 2019-04-12 14:52 
    <span class="article_comment"><a href="https://www.cnblogs.com/danvid/p/10691547.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/danvid/p/10691547.html" class="gray">阅读(81)</a></span></div>
</div>
<div class="clear"></div>
</div>
<div class="post_item">
<div class="digg">
    <div class="diggit" onclick="DiggPost(‘bobositlife‘,10695977,106643,1)"> 
    <span class="diggnum" id="digg_count_10695977">6</span>
    </div>
    <div class="clear"></div>
    <div id="digg_tip_10695977" class="digg_tip"></div>
</div>      
<div class="post_item_body">
    <h3><a class="titlelnk" href="https://www.cnblogs.com/bobositlife/p/create-windows-service-with-topshelf-in-csharp-console-application.html" target="_blank">C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载(极速,简洁)</a></h3>                   
    <p class="post_item_summary">
<a href="https://www.cnblogs.com/bobositlife/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/u244932.jpg?id=01092331" alt=""/></a>    对于使用Windows操作系统的人来说,Windows Service(Windows服务)应该不会陌生。在Windows操作系统中,我们可以在”运行”窗口中运行service.msc,即可打开一个查看Windows服务的窗口。Windows服务基本都是一些后台运行的服务进程,没有UI界面,每个服务... ...
    </p>              
    <div class="post_item_foot">                    
    <a href="https://www.cnblogs.com/bobositlife/" class="lightblue">Rector</a> 
    发布于 2019-04-12 14:41 
    <span class="article_comment"><a href="https://www.cnblogs.com/bobositlife/p/create-windows-service-with-topshelf-in-csharp-console-application.html#commentform" title="" class="gray">
        评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/bobositlife/p/create-windows-service-with-topshelf-in-csharp-console-application.html" class="gray">阅读(344)</a></span></div>
</div>
<div class="clear"></div>
</div>
   

            </div>
            <script>editorPickStat(); aggSite.user.getUserInfo();</script>
            <script type="text/javascript">
                var aggSiteModel = {"CategoryType":"SiteHome","ParentCategoryId":0,"CategoryId":808,"PageIndex":1,"TotalPostCount":4000,"ItemListActionName":"PostList"};
            </script>
            <div id="pager_bottom"><div id="paging_block"><div class="pager"><a href="/" class="p_1 current" onclick="aggSite.loadCategoryPostList(1,20);buildPaging(1);return false;">1</a><a href="/sitehome/p/2" class="p_2 middle" onclick="aggSite.loadCategoryPostList(2,20);buildPaging(2);return false;">2</a><a href="/sitehome/p/3" class="p_3 middle" onclick="aggSite.loadCategoryPostList(3,20);buildPaging(3);return false;">3</a><a href="/sitehome/p/4" class="p_4 middle" onclick="aggSite.loadCategoryPostList(4,20);buildPaging(4);return false;">4</a><a href="/sitehome/p/5" class="p_5 middle" onclick="aggSite.loadCategoryPostList(5,20);buildPaging(5);return false;">5</a><a href="/sitehome/p/6" class="p_6 middle" onclick="aggSite.loadCategoryPostList(6,20);buildPaging(6);return false;">6</a><a href="/sitehome/p/7" class="p_7 middle" onclick="aggSite.loadCategoryPostList(7,20);buildPaging(7);return false;">7</a><a href="/sitehome/p/8" class="p_8 middle" onclick="aggSite.loadCategoryPostList(8,20);buildPaging(8);return false;">8</a><a href="/sitehome/p/9" class="p_9 middle" onclick="aggSite.loadCategoryPostList(9,20);buildPaging(9);return false;">9</a><a href="/sitehome/p/10" class="p_10 middle" onclick="aggSite.loadCategoryPostList(10,20);buildPaging(10);return false;">10</a><a href="/sitehome/p/11" class="p_11 middle" onclick="aggSite.loadCategoryPostList(11,20);buildPaging(11);return false;">11</a><span class="ellipsis">···</span><a href="/sitehome/p/200" class="p_200 last" onclick="aggSite.loadCategoryPostList(200,20);buildPaging(200);return false;">200</a><a href="/sitehome/p/2" onclick="aggSite.loadCategoryPostList(2,20);buildPaging(2);return false;">Next &gt;</a></div></div><script type="text/javascript">var pagingBuider={"OnlyLinkText":false,"TotalCount":4000,"PageIndex":1,"PageSize":20,"ShowPageCount":5,"SkipCount":0,"UrlFormat":"/sitehome/p/{0}","OnlickJsFunc":"aggSite.loadCategoryPostList()","FirstPageLink":"/","AjaxUrl":"/mvc/ToolkitPaging/load.aspx","AjaxCallbak":null,"TopPagerId":"pager_top","IsRenderScript":true};function buildPaging(pageIndex){pagingBuider.PageIndex=pageIndex;$.ajax({url:pagingBuider.AjaxUrl,data:JSON.stringify(pagingBuider),type:post,dataType:text,contentType:application/json; charset=utf-8,success:function (data) { $(#paging_block).html(data); var pagerTop=$(#pager_top);if(pageIndex>1){$(pagerTop).html(data).show();}else{$(pagerTop).hide();}}});}</script>
</div>
            <div id="side_nav">
                
<div id="cate_title_block">
<div id="cate_title_title"><div class="cate_title">网站分类</div></div>
<ul id="cate_item">
<li id="cate_item_108698" onmouseover="cateShow(108698)" onmouseout="cateHidden(108698)">
<a href="/cate/108698/">.NET技术(21)</a>
</li>
<li id="cate_item_2" onmouseover="cateShow(2)" onmouseout="cateHidden(2)">
<a href="/cate/2/">编程语言(75)</a>
</li>
<li id="cate_item_108701" onmouseover="cateShow(108701)" onmouseout="cateHidden(108701)">
<a href="/cate/108701/">软件设计(3)</a>
</li>
<li id="cate_item_108703" onmouseover="cateShow(108703)" onmouseout="cateHidden(108703)">
<a href="/cate/108703/">Web前端(17)</a>
</li>
<li id="cate_item_108704" onmouseover="cateShow(108704)" onmouseout="cateHidden(108704)">
<a href="/cate/108704/">企业信息化(3)</a>
</li>
<li id="cate_item_108705" onmouseover="cateShow(108705)" onmouseout="cateHidden(108705)">
<a href="/cate/108705/">手机开发(2)</a>
</li>
<li id="cate_item_108709" onmouseover="cateShow(108709)" onmouseout="cateHidden(108709)">
<a href="/cate/108709/">软件工程(1)</a>
</li>
<li id="cate_item_108712" onmouseover="cateShow(108712)" onmouseout="cateHidden(108712)">
<a href="/cate/108712/">数据库技术(15)</a>
</li>
<li id="cate_item_108724" onmouseover="cateShow(108724)" onmouseout="cateHidden(108724)">
<a href="/cate/108724/">操作系统(5)</a>
</li>
<li id="cate_item_4" onmouseover="cateShow(4)" onmouseout="cateHidden(4)">
<a href="/cate/4/">其他分类(31)</a>
</li>
<li id="cate_item_0" onmouseover="cateShow(0)" onmouseout="cateHidden(0)">
<a href="/cate/all/">所有随笔(3015)</a>
</li>
<li id="cate_item_-1" onmouseover="cateShow(-1)" onmouseout="cateHidden(-1)">
<a href="/comment/">所有评论(638)</a>
</li>
</ul>
<div class="cate_bottom"></div>
<div id="cate_sub_block"></div>
<script type="text/javascript">var cateIdList = 108698,2,108701,108703,108704,108705,108709,108712,108724,4;aggSite.loadSubCategories();</script>
</div>
    <div class="l_s"></div>
<p class="r_l_3"></p><p class="r_l_2"></p><p class="r_l_1"></p>
<div class="w_l">
<h4>链接</h4>        
<ul>
    <li><a href="https://group.cnblogs.com/forum/public/" target="_blank">反馈或建议</a></li> 
    <li><a href="//www.cnblogs.com/cmt/" target="_blank">官方博客</a></li>
    <li><a href="/skins.aspx" target="_blank">博客模板</a></li>
    <li><a href="http://www.blogjava.net/">Java博客</a></li>
    <li><a href="http://www.cppblog.com/">C++博客</a></li>
    <li><a href="//www.cnblogs.com/cmt/archive/2009/09/26/1574616.html">手机版</a></li>
</ul>
</div>
<p class="r_l_1"></p><p class="r_l_2"></p><p class="r_l_3"></p>
<div class="l_s"></div>
<div id="user_stats"></div>
<div class="l_s"></div>        
<p class="r_l_3"></p><p class="r_l_2"></p><p class="r_l_1"></p>
<div class="w_l">                
<h4>统计信息</h4>
<div id="site_stats"></div>      
</div>
<p class="r_l_1"></p><p class="r_l_2"></p><p class="r_l_3"></p>

            </div>
            <div id="side_right">
                    <div id="search_block">
                        <div class="side_search">
                            <input type="text" id="zzk_q" class="search_input" onkeydown="return zzk_go_enter(event);" tabindex="3" /><input onclick="zzk_go()" type="button" class="search_btn" value="找找看" />
                        </div>
                        <div id="google_search" class="side_search">
                            <input type="text" id="google_search_q" class="search_input" onkeydown="return google_search_enter(event);" /><input type="button" value="Google" class="search_btn" onclick="return google_search();" />
                        </div>
                    </div>
                <div id="a1">
                    <div id=‘div-gpt-ad-1547816814884-0‘ style=‘height:60px; width:468px;‘>
                        <script>
                            googletag.cmd.push(function () { googletag.display(div-gpt-ad-1547816814884-0); });
                        </script>
                    </div>
                </div>
                <div id="b1" class="sidebar-image">
                    <div id=‘div-gpt-ad-1546331539224-0‘ style=‘height:250px; width:300px;‘>
                        <script>
                            googletag.cmd.push(function () { googletag.display(div-gpt-ad-1546331539224-0); });
                        </script>
                    </div>
                </div>
                <div id="ad_right_text" class="ad_right_text"></div>
                <div id="side_right_block"></div>
            </div>
        </div>
            <div id="footer">
                <div class="footer_block">
                    <p class="r_b_3"></p><p class="r_b_2"></p><p class="r_b_1"></p><div id="friend_link">
    友情链接:<a href="https://www.aliyun.com" target="_blank">阿里云</a><a href="https://cloud.tencent.com/?fromSource=gwzcw.541531.541531.541531" target="_blank">腾讯云</a><a href="https://www.163yun.com" target="_blank">网易云</a><a href="https://cloud.baidu.com" target="_blank">百度云</a><a href="https://www.jdcloud.com" target="_blank">京东云</a><a href="http://www.hujiang.com" target="_blank">沪江网</a><a href="http://www.chinaz.com/" target="_blank">站长之家</a><a href="http://dev.yesky.com" target="_blank">天极网</a><a href="http://down.admin5.com" target="_blank">A5源码下载</a><a href="http://www.gcpowertools.com.cn" target="_blank">葡萄城控件</a><a href="https://www.upyun.com/?md=cnblogs" target="_blank">又拍云</a><a href="http://zt.cnblogs.com/tingyun/" target="_blank">听云APP</a><a href="http://www.hightopo.com/cn-index.html" target="_blank">图扑软件</a><a href="http://www.cnblogs.com/mipengine/" target="_blank">百度MIP博客</a><a href="http://wetest.qq.com/?from=links_cnblogs" target="_blank">腾讯WeTest</a><a href="http://yaq.qq.com/" target="_blank">腾讯御安全</a><a href="http://www.ucancode.com/index.html" target="_blank">工控组态源码</a><a href="https://163yun.cnblogs.com/" target="_blank">网易云博客</a><a href="https://www.qiniu.com/" target="_blank">七牛云</a><a href="https://www.huanpingge.com/" target="_blank">换屏哥手机维修</a>
</div><p class="r_b_1"></p><p class="r_b_2"></p><p class="r_b_3"></p>
                </div>
            </div>
        <div id="footer_bottom">
            <div><a href="https://about.cnblogs.com/">关于博客园</a><a href="https://about.cnblogs.com/contact">联系我们</a><a href="https://about.cnblogs.com/ad">广告服务</a>&copy;2004-2019<a href="http://www.cnblogs.com/">博客园</a>保留所有权利<a href="http://www.miitbeian.gov.cn" target="_blank">沪ICP备09004260号</a></div>
            <div><a href="https://ss.knet.cn/verifyseal.dll?sn=e131108110100433392itm000000&amp;ct=df&amp;a=1&amp;pa=0.25787803245785335" rel="nofollow" target="_blank"><img id="cnnic_img" src="//common.cnblogs.com/images/cnnic.png" alt="" width="64" height="23" /></a><a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31011502001144" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;"><img src="//common.cnblogs.com/images/ghs.png" alt="" /><span style="float:left;height:20px;line-height:20px;margin: 0 5px 0 5px; color:#939393;">沪公网安备 31011502001144号</span></a></div>
        </div>
    </div>
</body>
</html>
View Code

 

 

 

a

从0开始学golang--2.2--如何去爬园子的数据👉进阶篇,面向对象的单任务版

原文:https://www.cnblogs.com/Liang2790912648/p/10712895.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!