执行页-----------------------------------代码??----------------------------------
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 的 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 查看树形结构,具体命令如下: 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 ></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>©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&ct=df&a=1&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>
a
从0开始学golang--2.2--如何去爬园子的数据👉进阶篇,面向对象的单任务版
原文:https://www.cnblogs.com/Liang2790912648/p/10712895.html