Python 现在越来越火,连小学生都在学习 Python了 ^ ^,为了跟上时代,赶个时髦,秉承活到老学到老的精神,慢慢也开始学习 Python;理论是实践的基础,把 Python 相关语法看了,就迫不及待,大笔一挥来个 Hello world 压压惊,理论终归是理论,实践还是要要的嘛,动手了之后,才能更好的掌(chui)握(niu)基(bi)础;发车了..........
首先浏览器输入 https://www.oschina.net/ 进入开源中国官网,点击顶部导航栏的 “博客” 选项进入博客列表页面,之后点击左侧 “服务端开发与管理” 选项,我们要爬取的是服务端相关的文章,如下图所示:
接下来分析文章列表的布局方式,按 F12 打开调试页面,如下所示:
可以看到,一篇文章的相关信息就是一个 div, class 属性为 item blog-item,打开该 div,如下:
我们要抓取的是文章的标题,描述,URL,和阅读数,标题和URL可以通过 a 标签来获取,描述通过 <dev class=description> 来获取,而阅读数则要麻烦些,是第三个 <div class=item>,
通过以下代码就可以获取到以上到相关信息:
# 获取每个文章相关的 DIV
articles_div = beautiful_soup.find_all("div", class_="item blog-item")
# 处理每个 DIV
for article_div in articles_div:
content_div = article_div.find("div", class_="content")
header_div = content_div.find("a", class_="header")
# 文章URL
url = header_div["href"]
# 文章标题
title = header_div["title"]
# 文章描述
description_str = content_div.find("div", class_="description").find("p", class_="line-clamp")
if description_str is None:
continue
description = description_str.text
# 文章阅读数
read_count_div = content_div.find("div", class_="extra").find("div", class_="ui horizontal list").find("div", class_="item")
# find_next_sibling 获取兄弟节点
read_count_i = read_count_div.find_next_sibling("div", class_="item").find_next_sibling("div", class_="item")
read_count = read_count_i.getText()
上述代码就是主要的获取相关信息的逻辑,因为阅读数没有唯一id,或者 class ,所有可以通过 find_next_sibling 来获取兄弟节点;
接下来就对获取到到文章进行处理,如按照阅读数大于等于1000过滤文章,并按照阅读数从高到低低排序,并且写到文件中:
首先要定义一个文章类,用来表示文章的相关信息,如下:
"""
文章实体类
@authon:tsmyk0715
"""
class Article:
def __init__(self, title, url, content="", read_cnt=0):
"""
文章类构造方法
:param title:文章标题
:param url: 文章 URL
:param content: 文章内容
:param read_cnt: 文章阅读数
"""
self.title = title
self.url = url
self.content = content
self.read_cnt = read_cnt
def __str__(self):
return u"文章:标题《{0}》,阅读数:{1},链接:{2}".format(self.title, self.read_cnt, self.url)
之后,定义文章的处理类 OschinaArticle ,相关处理逻辑在该类中实现:
import requests
# 使用 BeautifulSoup 库来解析 HTML 页面
from bs4 import BeautifulSoup
import logging
import time
# 导入定义的文章实体类
from Article import Article
class OschinaArticle:
def __init__(self):
# 日志
self.log = logging
# 设置日志级别为 INFO
self.log.basicConfig(level=logging.INFO)
# 把文章写到文件的行号
self.file_line_num = 1
接下来获取 BeautifulSoup 对象:
def getSoup(self, url):
"""
根据 url 获取 BeautifulSoup 对象
"""
# 请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Host": "www.oschina.net"}
# 请求的时候,需要加上头部信息,表示是人在操作,而不是机器,不加头部信息会报错
response = requests.get(url, headers=headers)
return BeautifulSoup(response.text, "html.parser")
之后,通过 BeautifulSoup 来解析 HTML 页面,获取文章相关信息,之后,根据相关信息创建文章对象,放到集合中进行返回:
def get_articles(self, url):
# 存放文章的集合,进行返回
article_list = []
beautiful_soup = self.getSoup(url)
self.log.info(u"开始解析 HTML 页面...")
articles_div = beautiful_soup.find_all("div", class_="item blog-item")
for article_div in articles_div:
content_div = article_div.find("div", class_="content")
header_div = content_div.find("a", class_="header")
# 文章URL
url = header_div["href"]
# 文章标题
title = header_div["title"]
# 文章描述
description_str = content_div.find("div", class_="description").find("p", class_="line-clamp")
if description_str is None:
continue
description = description_str.text
# 文章阅读数
read_count_div = content_div.find("div", class_="extra").find("div", class_="ui horizontal list").find("div", class_="item")
# find_next_sibling 获取兄弟节点
read_count_i = read_count_div.find_next_sibling("div", class_="item").find_next_sibling("div", class_="item")
read_count = read_count_i.getText()
# 根据相关信息创建文章对象,放到集合中,进行返回
__article = Article(title, url, description, read_count)
article_list.append(__article)
self.log.info(u"文章:标题《{0}》,阅读数:{1},链接:{2}".format(title, read_count, url))
return article_list
关于 BeautifulSoup 的相关 API 可以参考: www.crummy.com/software/BeautifulSoup/bs4/doc.zh/,有中文版哟
因为文章的阅读数如果超过 1000 的话,就用 K 来表示,为了在后面筛选指定阅读数的文章,所以需要进行处理,把 K 转换为 1000,代码如下:
def handler_read_count(self, article_list):
"""
处理阅读数:把 K 转换为 1000
:param article_list:文章列表
"""
if article_list is None or len(article_list) == 0:
self.log.info(u"文章列表为空...")
return
for article in article_list:
read_count_str = article.read_cnt.strip()
read_count = 0
if isinstance(read_count_str, str):
if read_count_str.endswith("K"):
read_count_str = read_count_str[:-1] # 去掉K
read_count = int(float(read_count_str) * 1000)
else:
read_count = int(read_count_str)
article.read_cnt = read_count
接下来就是文章根据阅读数进行筛选和排序了,筛选出阅读数大于等于指定值并且按照阅读数从高到低排序,代码如下:
def get_article_by_read_count_sort(self, article_list, min_read_cnt):
"""
获取大于等于指定阅读数的文章信息, 并按照阅读数从高到低排序
:param article_list: 文章列表
:param minx_read_cnt: 最小阅读数
:return:
"""
if article_list is None or len(article_list) == 0:
self.log.info(u"文章列表为空...")
return
article_list_return = []
for article in article_list:
if article.read_cnt >= min_read_cnt:
article_list_return.append(article)
# 使用 Lambda 对集合中的对象按照 read_cnt 属性进行排序
article_list_return.sort(key=lambda Article: Article.read_cnt, reverse=True)
return article_list_return
以上就可以获取到我们想要的文章信息了,此外,我们可以把信息写到文件文件中,代码如下:
def write_file(self, article_list, file_path):
# 创建 IO 对象
file = open(file_path + "/articles.txt", "a")
for article in article_list:
_article_str = str(article)
file.write("(" + str(self.file_line_num) + ")" + _article_str)
file.write("\n")
file.write("--------------------------------------------------------------------------------------------------------------------------------------------------------")
file.write("\n")
# 文件行号
self.file_line_num += 1
time.sleep(0.2) # 休眠 200 毫秒
file.close()
之后,把上面的方法整合在一起,代码如下:
def run(self, url, min_read_count):
# 获取所有文章
article_list = self.get_articles(url)
# 对阅读数进行处理
self.handler_read_count(article_list)
# 筛选阅读数大于等于指定值,并按阅读数从高到低排序
_list = self.get_article_by_read_count_sort(article_list, min_read_count)
# 写文件
self.write_file(_list, "G:/python")
# 打印控制台
for a in _list:
self.log.info(a)
main 方法测试一下,地址输入:https://www.oschina.net/blog?classification=428640, 文章阅读数要大于等于1000
if __name__ == '__main__':
article = OschinaArticle()
main_url = "https://www.oschina.net/blog?classification=428640"
min_read_count = 1000
article.run(main_url, min_read_count)
控制台日志打印如下:
写入到文件中的内容如下:
你以为到这里就完了吗,no, no, no.............,通过上述方式只能获取到首页的文章,如果想获取更多的文章怎么办?开源中国的博客文章列表没有分页,是通过滑动鼠标滚轮来获取更多的页,可是人家的地址导航栏却没有丝毫没有变动,但是可以通过 F12 来看呀,按 F12 后,通过 NetWork 来查看相关的请求和响应情况:
通过滚动几下鼠标滚轮之后,可以发现请求的 URL 还是有规律的:
https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=2&type=ajax
https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=2&type=ajax
https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=3&type=ajax
https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=4&type=ajax
https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=5&type=ajax
可以看到除了 p 的参数值不同的话,其他的都相同,p 就是分页标识,p=2就表示第二页,p=3就等于第三页,以此类推,就可以获取到更多的文章啦:
def main(self, min_read_count, page_size):
# 首页 URL
self.log.info("首页##########################")
main_url = "https://www.oschina.net/blog?classification=428640"
self.run(main_url, min_read_count)
# 第2页到第page_size页
for page in range(2, page_size):
self.log.info("第 {0} 页##########################".format(str(page)))
page_url = "https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=" + str(page) + "&type=ajax"
self.run(page_url, min_read_count)
time.sleep(2)
测试:
if __name__ == '__main__':
article = OschinaArticle()
# 获取到20页的相关文章,并且阅读数要大于等于1000
article.main(1000, 21)
日志控制台打印如下:
写到文件中如下:
可以看到,在 1-20 页中,阅读数大于等 1000 的文章有 114 篇,之后就可以 copy URL 到地址栏进行阅读啦....................
完整代码如下:
文章实体类:
"""
文章实体类
@authon:tsmyk0715
"""
class Article:
def __init__(self, title, url, content="", read_cnt=0):
"""
文章类构造方法
:param title:文章标题
:param url: 文章 URL
:param content: 文章内容
:param read_cnt: 文章阅读数
"""
self.title = title
self.url = url
self.content = content
self.read_cnt = read_cnt
def __str__(self):
return u"文章:标题《{0}》,阅读数:{1},链接:{2}".format(self.title, self.read_cnt, self.url)
OschinaArticle 处理逻辑类:
# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
import logging
import time
from Article import Article
"""
爬取开源中国上的文章,且阅读数大于等于1000
"""
class OschinaArticle:
def __init__(self):
self.log = logging
self.log.basicConfig(level=logging.INFO)
self.file_line_num = 1
def getSoup(self, url):
"""
根据 url 获取 BeautifulSoup 对象
"""
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Host": "www.oschina.net"}
response = requests.get(url, headers=headers)
return BeautifulSoup(response.text, "html.parser")
def get_articles(self, url):
article_list = []
beautiful_soup = self.getSoup(url)
self.log.info(u"开始解析 HTML 页面...")
articles_div = beautiful_soup.find_all("div", class_="item blog-item")
for article_div in articles_div:
content_div = article_div.find("div", class_="content")
header_div = content_div.find("a", class_="header")
# 文章URL
url = header_div["href"]
# 文章标题
title = header_div["title"]
# 文章描述
description_str = content_div.find("div", class_="description").find("p", class_="line-clamp")
if description_str is None:
continue
description = description_str.text
# 文章阅读数
read_count_div = content_div.find("div", class_="extra").find("div", class_="ui horizontal list").find("div", class_="item")
# find_next_sibling 获取兄弟节点
read_count_i = read_count_div.find_next_sibling("div", class_="item").find_next_sibling("div", class_="item")
read_count = read_count_i.getText()
__article = Article(title, url, description, read_count)
article_list.append(__article)
# self.log.info(u"文章:标题《{0}》,阅读数:{1},链接:{2}".format(title, read_count, url))
return article_list
def handler_read_count(self, article_list):
"""
处理阅读数:把 K 转换为 1000
:param article_list:文章列表
"""
if article_list is None or len(article_list) == 0:
self.log.info(u"文章列表为空...")
return
for article in article_list:
read_count_str = article.read_cnt.strip()
read_count = 0
if isinstance(read_count_str, str):
if read_count_str.endswith("K"):
read_count_str = read_count_str[:-1] # 去掉K
read_count = int(float(read_count_str) * 1000)
else:
read_count = int(read_count_str)
article.read_cnt = read_count
def get_article_by_read_count_sort(self, article_list, min_read_cnt):
"""
获取大于等于指定阅读数的文章信息, 并按照阅读数从高到低排序
:param article_list: 文章列表
:param minx_read_cnt: 最小阅读数
:return:
"""
if article_list is None or len(article_list) == 0:
self.log.info(u"文章列表为空...")
return
article_list_return = []
for article in article_list:
if article.read_cnt >= min_read_cnt:
article_list_return.append(article)
article_list_return.sort(key=lambda Article: Article.read_cnt, reverse=True)
return article_list_return
def write_file(self, article_list, file_path):
file = open(file_path + "/articles.txt", "a")
for article in article_list:
_article_str = str(article)
file.write("(" + str(self.file_line_num) + ")" + _article_str)
file.write("\n")
file.write("--------------------------------------------------------------------------------------------------------------------------------------------------------")
file.write("\n")
self.file_line_num += 1
time.sleep(0.2) # 休眠 200 毫秒
file.close()
def run(self, url, min_read_count):
# 获取所有文章
article_list = self.get_articles(url)
# 对阅读数进行处理
self.handler_read_count(article_list)
# 筛选阅读数大于等于指定值,并按阅读数从高到低排序
_list = self.get_article_by_read_count_sort(article_list, min_read_count)
# 写文件
self.write_file(_list, "G:/python")
# 打印控制台
for a in _list:
self.log.info(a)
def main(self, min_read_count, page_size):
# 首页 URL
self.log.info("首 页##########################")
main_url = "https://www.oschina.net/blog?classification=428640"
self.run(main_url, min_read_count)
# 第2页到第page_size页
for page in range(2, page_size):
self.log.info("第 {0} 页##########################".format(str(page)))
page_url = "https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=" + str(page) + "&type=ajax"
self.run(page_url, min_read_count)
time.sleep(2)
if __name__ == '__main__':
article = OschinaArticle()
# 获取到20页的相关文章,并且阅读数要大于等于1000
article.main(1000, 21)
结果如下:
(1)文章:标题《权限设计的杂谈》,阅读数:6400,链接:https://my.oschina.net/cloudcross/blog/1920706
-------------------------------------------------------------------------------------------------------------------------
(2)文章:标题《Spring核心——纯Java运行与@Bean》,阅读数:5300,链接:https://my.oschina.net/chkui/blog/1861819
----------------------------------------------------------------------------------------------------------------------------------------
(3)文章:标题《网站HTTP升级HTTPS完全配置手册》,阅读数:5200,链接:https://my.oschina.net/powertoolsteam/blog/1862967
-------------------------------------------------------------------------------------------------------------------------------------------------
(4)文章:标题《前两天网站访问慢的问题定位过程以及最终解决办法》,阅读数:5100,链接:https://my.oschina.net/javayou/blog/1928719
-------------------------------------------------------------------------------------------------------------
(5)文章:标题《如何优雅的使用和理解线程池》,阅读数:3800,链接:https://my.oschina.net/crossoverjie/blog/1919139
----------------------------------------------------------------------------------------------------------------------------------------
(6)文章:标题《从小程序的安全说起》,阅读数:3500,链接:https://my.oschina.net/qixiaobo025/blog/1924401
------------------------------------------------------------------------------------------------------------------------------------------
(7)文章:标题《使用Python分析《我不是药神》豆瓣电影短评》,阅读数:3300,链接:https://my.oschina.net/zhanglikun/blog/1845888
------------------------------------------------------------------------------------------------------------------------------------------
(8)文章:标题《J2Cache 和普通缓存框架有何不同,它解决了什么问题?》,阅读数:3200,链接:https://my.oschina.net/javayou/blog/1931381
--------------------------------------------------------------------------------------------------------------------------------------------
(9)文章:标题《J2Cache 和普通缓存框架有何不同,它解决了什么问题?》,阅读数:3200,链接:https://my.oschina.net/javayou/blog/1931381
----------------------------------------------------------------------------------------------------------------------------------------------
(10)文章:标题《spring boot应用测试框架介绍》,阅读数:2900,链接:https://my.oschina.net/yangjianzhou/blog/1859103
-----------------------------------------------------------------------------------------------------------------------------------------------
(11)文章:标题《Spring核心——资源数据管理》,阅读数:2700,链接:https://my.oschina.net/chkui/blog/1920637
-------------------------------------------------------------------------------------------------------------------------------------------------
(12)文章:标题《ELK三大日志中间组件之 kibana操作手册》,阅读数:2700,链接:https://my.oschina.net/suventop/blog/1857283
------------------------------------------------------------------------------------------------------------------------------------------------
(13)文章:标题《Dubbo服务发布之服务暴露&心跳机制&服务注册》,阅读数:2200,链接:https://my.oschina.net/LucasZhu/blog/1857584
-----------------------------------------------------------------------------------------------------------------------------------------------
(14)文章:标题《MySQL多版本并发控制机制(MVCC)-源码浅析》,阅读数:2100,链接:https://my.oschina.net/alchemystar/blog/1927425
----------------------------------------------------------------------------------------------------------------------------------------------
(15)文章:标题《k8s Kubernetes v1.10.0 集群安装文档 &踩坑日记》,阅读数:1000,链接:https://my.oschina.net/suncf/blog/1932826
----------------------------------------------------------------------------------------------------------------------------------------------
(16)文章:标题《k8s Kubernetes v1.10.0 集群安装文档 &踩坑日记》,阅读数:1000,链接:https://my.oschina.net/suncf/blog/1932826
----------------------------------------------------------------------------------------------------------------------------------------------
(17)文章:标题《Docker for mac 安装 Istio》,阅读数:1000,链接:https://my.oschina.net/xbl/blog/1928983
-----------------------------------------------------------------------------------------------------------------------------------------------
(18)文章:标题《Redis 数据结构-字符串源码分析》,阅读数:1000,链接:https://my.oschina.net/mengyuankan/blog/1926320
-------------------------------------------------------------------------------------------------------------------------------------------------
(19)文章:标题《redis架构演变与redis-cluster群集读写方案》,阅读数:1000,链接:https://my.oschina.net/u/2600078/blog/1923696
------------------------------------------------------------------------------------------------------------------------------------------------
(20)文章:标题《Dubbo 整合 Pinpoint 做分布式服务请求跟踪》,阅读数:1000,链接:https://my.oschina.net/yanpenglei/blog/1863383
-----------------------------------------------------------------------------------------------------------------------------------------------
(21)文章:标题《MyBatis源码解读之延迟加载》,阅读数:1000,链接:https://my.oschina.net/wenjinglian/blog/1857581
-----------------------------------------------------------------------------------------------------------------------------------------------
(22)文章:标题《前两天网站访问慢的问题定位过程以及最终解决办法》,阅读数:5100,链接:https://my.oschina.net/javayou/blog/1928719
----------------------------------------------------------------------------------------------------------------------------------------------
(23)文章:标题《MySQL多版本并发控制机制(MVCC)-源码浅析》,阅读数:2100,链接:https://my.oschina.net/alchemystar/blog/1927425
----------------------------------------------------------------------------------------------------------------------------------------------
(24)文章:标题《Docker for mac 安装 Istio》,阅读数:1000,链接:https://my.oschina.net/xbl/blog/1928983
----------------------------------------------------------------------------------------------------------------------------------------------
(25)文章:标题《Dubbo服务调用——流程分析》,阅读数:1000,链接:https://my.oschina.net/LucasZhu/blog/1928494
-----------------------------------------------------------------------------------------------------------------------------------------------
(26)文章:标题《从小程序的安全说起》,阅读数:3500,链接:https://my.oschina.net/qixiaobo025/blog/1924401
----------------------------------------------------------------------------------------------------------------------------------------------
(27)文章:标题《Redis 数据结构-字符串源码分析》,阅读数:1000,链接:https://my.oschina.net/mengyuankan/blog/1926320
-----------------------------------------------------------------------------------------------------------------------------------------------
(28)文章:标题《权限设计的杂谈》,阅读数:6400,链接:https://my.oschina.net/cloudcross/blog/1920706
-----------------------------------------------------------------------------------------------------------------------------------------------
(29)文章:标题《(亿级流量)分布式防重复提交token设计【史诗级】》,阅读数:2500,链接:https://my.oschina.net/u/2371923/blog/1921153
---------------------------------------------------------------------------------------------------------------------------------------------
(30)文章:标题《redis架构演变与redis-cluster群集读写方案》,阅读数:1000,链接:https://my.oschina.net/u/2600078/blog/1923696
---------------------------------------------------------------------------------------------------------------------------------------------
(31)文章:标题《基于swagger2的离线pdf和html文档生成》,阅读数:1000,链接:https://my.oschina.net/qixiaobo025/blog/1921568
---------------------------------------------------------------------------------------------------------------------------------------------
(32)文章:标题《如何优雅的使用和理解线程池》,阅读数:3800,链接:https://my.oschina.net/crossoverjie/blog/1919139
---------------------------------------------------------------------------------------------------------------------------------------------
(33)文章:标题《Spring核心——资源数据管理》,阅读数:2700,链接:https://my.oschina.net/chkui/blog/1920637
----------------------------------------------------------------------------------------------------------------------------------------------
(34)文章:标题《Redission分布式锁源码解析》,阅读数:1000,链接:https://my.oschina.net/u/2313177/blog/1919810
--------------------------------------------------------------------------------------------------------------------------------------------
(35)文章:标题《How To Do It - HelloWorld 项目总结报告》,阅读数:1000,链接:https://my.oschina.net/greenlaw110/blog/1916863
----------------------------------------------------------------------------------------------------------------------------------------
(36)文章:标题《Java 框架新贵入驻 TechEmpower Framework Benchmark》,阅读数:1000,链接:https://my.oschina.net/greenlaw110/blog/1863937
-----------------------------------------------------------------------------------------------------------------------------------------
(37)文章:标题《Dubbo 整合 Pinpoint 做分布式服务请求跟踪》,阅读数:1000,链接:https://my.oschina.net/yanpenglei/blog/1863383
--------------------------------------------------------------------------------------------------------------------------------------------
(38)文章:标题《Spring核心——纯Java运行与@Bean》,阅读数:5300,链接:https://my.oschina.net/chkui/blog/1861819
---------------------------------------------------------------------------------------------------------------------------------------------
(39)文章:标题《网站HTTP升级HTTPS完全配置手册》,阅读数:5200,链接:https://my.oschina.net/powertoolsteam/blog/1862967
-------------------------------------------------------------------------------------------------------------------------------------------
(40)文章:标题《使用Python分析《我不是药神》豆瓣电影短评》,阅读数:3300,链接:https://my.oschina.net/zhanglikun/blog/1845888
----------------------------------------------------------------------------------------------------------------------------------------
(41)文章:标题《spring boot应用测试框架介绍》,阅读数:2900,链接:https://my.oschina.net/yangjianzhou/blog/1859103
---------------------------------------------------------------------------------------------------------------------------------------------
(42)文章:标题《ELK三大日志中间组件之 kibana操作手册》,阅读数:2700,链接:https://my.oschina.net/suventop/blog/1857283
-----------------------------------------------------------------------------------------------------------------------------------------------
(43)文章:标题《Spring Boot 中如何使用拦截器(十五)》,阅读数:1000,链接:https://my.oschina.net/wangxincj/blog/1862880
-----------------------------------------------------------------------------------------------------------------------------------------------
(44)文章:标题《Spring Cloud Gateway 接口文档聚合实现》,阅读数:1000,链接:https://my.oschina.net/giegie/blog/1859800
------------------------------------------------------------------------------------------------------------------------------------------------
(45)文章:标题《Spring核心——JSR250与资源控制》,阅读数:1000,链接:https://my.oschina.net/chkui/blog/1858734
----------------------------------------------------------------------------------------------------------------------------------------------
(46)文章:标题《使用VsCode搭建Java开发环境,创建springboot应用》,阅读数:1000,链接:https://my.oschina.net/qsyan/blog/1858378
----------------------------------------------------------------------------------------------------------------------------------------------
(47)文章:标题《MyBatis源码解读之延迟加载》,阅读数:1000,链接:https://my.oschina.net/wenjinglian/blog/1857581
-----------------------------------------------------------------------------------------------------------------------------------------------
(48)文章:标题《关于Eureka 2.x,别再人云亦云了!》,阅读数:8900,链接:https://my.oschina.net/eacdy/blog/1844423
----------------------------------------------------------------------------------------------------------------------------------------------
(49)文章:标题《花一天半写了个http暴力压测工具,每秒可轰出83万个http请求,支持pipeline》,阅读数:4700,链接:https://my.oschina.net/talenttan/blog/1843645
---------------------------------------------------------------------------------------------------------------------------------------------
(50)文章:标题《性能优化之永恒之道(1)(实时sql优化vs业务字段冗余vs离线计算)》,阅读数:3700,链接:https://my.oschina.net/u/2371923/blog/1841088
--------------------------------------------------------------------------------------------------------------------------------------------
(51)文章:标题《惊艳,Dubbo域名已改,也不再局限于Java!》,阅读数:2800,链接:https://my.oschina.net/javaroad/blog/1843305
--------------------------------------------------------------------------------------------------------------------------------------------
(52)文章:标题《Zookeeper入门看这篇就够了》,阅读数:2400,链接:https://my.oschina.net/u/3796575/blog/1845035
----------------------------------------------------------------------------------------------------------------------------------------------
(53)文章:标题《[喵咪Liunx(7)]Ceph分布式文件共享解决方案》,阅读数:1000,链接:https://my.oschina.net/wenzhenxi/blog/1845710
---------------------------------------------------------------------------------------------------------------------------------------------
(54)文章:标题《Spring核心——FactoryBean》,阅读数:1000,链接:https://my.oschina.net/chkui/blog/1845123
---------------------------------------------------------------------------------------------------------------------------------------------
(55)文章:标题《Spring Boot搭建Web项目要点》,阅读数:1000,链接:https://my.oschina.net/woter/blog/1842970
-------------------------------------------------------------------------------------------------------------------------------------------
(56)文章:标题《 3个面试中遇到的问题》,阅读数:1000,链接:https://my.oschina.net/floor/blog/1841962
--------------------------------------------------------------------------------------------------------------------------------------------
(57)文章:标题《Spring核心——IOC处理器扩展》,阅读数:1000,链接:https://my.oschina.net/chkui/blog/1840824
--------------------------------------------------------------------------------------------------------------------------------------------
(58)文章:标题《RabbitMQ使用分析和高可用集群搭建》,阅读数:4700,链接:https://my.oschina.net/genghz/blog/1840262
----------------------------------------------------------------------------------------------------------------------------------------------
(59)文章:标题《Spring Cloud Gateway 原生的接口限流该怎么玩》,阅读数:3200,链接:https://my.oschina.net/giegie/blog/1838560
----------------------------------------------------------------------------------------------------------------------------------------------
(60)文章:标题《浅谈设计模式之建造者模式》,阅读数:2700,链接:https://my.oschina.net/lihaoshan/blog/1839623
----------------------------------------------------------------------------------------------------------------------------------------------
(61)文章:标题《Spring核心——Bean的定义与控制》,阅读数:2200,链接:https://my.oschina.net/chkui/blog/1837039
-----------------------------------------------------------------------------------------------------------------------------------------------
(62)文章:标题《Netty(二) 从线程模型的角度看 Netty 为什么是高性能的?》,阅读数:1000,链接:https://my.oschina.net/crossoverjie/blog/1840429
---------------------------------------------------------------------------------------------------------------------------------------------
(63)文章:标题《Spring Boot Admin 2 值得了解的新变化》,阅读数:1000,链接:https://my.oschina.net/giegie/blog/1839116
----------------------------------------------------------------------------------------------------------------------------------------------
(64)文章:标题《【Jenkins】构建并部署SpringBoot》,阅读数:1000,链接:https://my.oschina.net/gmarshal/blog/1838776
----------------------------------------------------------------------------------------------------------------------------------------------
(65)文章:标题《十分钟学会用docker部署微服务》,阅读数:1000,链接:https://my.oschina.net/u/3796575/blog/1838385
---------------------------------------------------------------------------------------------------------------------------------------------
(66)文章:标题《初体验Jenkins安装并进行Maven项目自动化部署》,阅读数:1000,链接:https://my.oschina.net/xshuai/blog/1837180
---------------------------------------------------------------------------------------------------------------------------------------------
(67)文章:标题《Tomcat启动慢问题,追根溯源,死磕到底》,阅读数:1000,链接:https://my.oschina.net/u/3896931/blog/1837148
--------------------------------------------------------------------------------------------------------------------------------------------
(68)文章:标题《从一份配置清单详解Nginx服务器配置》,阅读数:4700,链接:https://my.oschina.net/hansonwang99/blog/1835408
--------------------------------------------------------------------------------------------------------------------------------------------
(69)文章:标题《Elasticsearch 6.3 SQL功能使用案例分享》,阅读数:3500,链接:https://my.oschina.net/bboss/blog/1834375
----------------------------------------------------------------------------------------------------------------------------------------------
(70)文章:标题《oAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享 》,阅读数:2900,链接:https://my.oschina.net/giegie/blog/1834899
-------------------------------------------------------------------------------------------------------------------------------------------
(71)文章:标题《Spring核心——设计模式与IoC》,阅读数:1000,链接:https://my.oschina.net/chkui/blog/1835837
--------------------------------------------------------------------------------------------------------------------------------------------
(72)文章:标题《Spring Boot2.0 整合mybatis、分页插件、druid》,阅读数:1000,链接:https://my.oschina.net/bianxin/blog/1835680
-----------------------------------------------------------------------------------------------------------------------------------------
(73)文章:标题《Spring boot整合ElasticSearch案例分享》,阅读数:1000,链接:https://my.oschina.net/bboss/blog/1835601
----------------------------------------------------------------------------------------------------------------------------------------------
(74)文章:标题《MyBatis四大核心概念》,阅读数:1000,链接:https://my.oschina.net/waylau/blog/1833780
---------------------------------------------------------------------------------------------------------------------------------------------
(75)文章:标题《t-io 集群解决方案以及源码解析》,阅读数:3900,链接:https://my.oschina.net/zyw205/blog/1827495
---------------------------------------------------------------------------------------------------------------------------------------------
(76)文章:标题《为什么 PHP 程序员应该学习使用 Swoole》,阅读数:3700,链接:https://my.oschina.net/u/1244455/blog/1831238
-------------------------------------------------------------------------------------------------------------------------------------------
(77)文章:标题《Springboot 应用部署建议》,阅读数:1000,链接:https://my.oschina.net/seal90/blog/1828876
-------------------------------------------------------------------------------------------------------------------------------------------
(78)文章:标题《Intellij IDEA神器那些让人爱不释手的小技巧》,阅读数:7000,链接:https://my.oschina.net/samgege/blog/1823645
---------------------------------------------------------------------------------------------------------------------------------------------
(79)文章:标题《http2.0 --速度与激情》,阅读数:5200,链接:https://my.oschina.net/u/861562/blog/1823472
------------------------------------------------------------------------------------------------------------------------------------------
(80)文章:标题《MySQL-性能优化-索引和查询优化》,阅读数:3800,链接:https://my.oschina.net/qrmc/blog/1822373
---------------------------------------------------------------------------------------------------------------------------------------------
(81)文章:标题《SpringBoot应用部署于外置Tomcat容器》,阅读数:2700,链接:https://my.oschina.net/hansonwang99/blog/1824245
-------------------------------------------------------------------------------------------------------------------------------------------
(82)文章:标题《Tomcat Session管理分析》,阅读数:2600,链接:https://my.oschina.net/OutOfMemory/blog/1825123
---------------------------------------------------------------------------------------------------------------------------------------------
(83)文章:标题《用t-io花5分钟写个udp玩玩,顺便发上100万条消息》,阅读数:2200,链接:https://my.oschina.net/talenttan/blog/1823774
---------------------------------------------------------------------------------------------------------------------------------------------
(84)文章:标题《世界杯快到了,联想,华为又搞出大动作了!》,阅读数:6500,链接:https://my.oschina.net/osczb/blog/1820317
----------------------------------------------------------------------------------------------------------------------------------------------
(85)文章:标题《MySQL-性能优化-优化设计和设计原则》,阅读数:4200,链接:https://my.oschina.net/qrmc/blog/1819509
---------------------------------------------------------------------------------------------------------------------------------------------
(86)文章:标题《RESTFul 服务测试自动化的艺术 - TODO 服务篇》,阅读数:3600,链接:https://my.oschina.net/greenlaw110/blog/1821431
-----------------------------------------------------------------------------------------------------------------------------------------------
(87)文章:标题《Feign2.0用Apache的Httpclient发送请求并配置连接池》,阅读数:1000,链接:https://my.oschina.net/bianxin/blog/1821684
------------------------------------------------------------------------------------------------------------------------------------------
(88)文章:标题《从linux源码看socket的close》,阅读数:1000,链接:https://my.oschina.net/alchemystar/blog/1821680
---------------------------------------------------------------------------------------------------------------------------------------------
(89)文章:标题《Netty(一) SpringBoot 整合长连接心跳机制》,阅读数:1000,链接:https://my.oschina.net/crossoverjie/blog/1820353
-------------------------------------------------------------------------------------------------------------------------------------------
(90)文章:标题《Eureka2.0集群 高可用的认证服务实现与搭建》,阅读数:1000,链接:https://my.oschina.net/bianxin/blog/1819947
---------------------------------------------------------------------------------------------------------------------------------------------
(91)文章:标题《Why c++ coroutine?Why libgo?》,阅读数:4000,链接:https://my.oschina.net/yyzybb/blog/1817226
--------------------------------------------------------------------------------------------------------------------------------------------
(92)文章:标题《中国人自己的框架——蚂蚁金服RPC框架结构分析》,阅读数:1000,链接:https://my.oschina.net/u/3807747/blog/1819010
--------------------------------------------------------------------------------------------------------------------------------------------
(93)文章:标题《一场版本升级引发的性能血案的追凶过程》,阅读数:2700,链接:https://my.oschina.net/greenlaw110/blog/1815959
-------------------------------------------------------------------------------------------------------------------------------------------
(94)文章:标题《RPC框架实践之:Google gRPC》,阅读数:2700,链接:https://my.oschina.net/hansonwang99/blog/1815743
----------------------------------------------------------------------------------------------------------------------------------------------
(95)文章:标题《OpenApi开放平台架构实践》,阅读数:1000,链接:https://my.oschina.net/u/2476168/blog/1815482
--------------------------------------------------------------------------------------------------------------------------------------------
(96)文章:标题《基于Docker搭建MySQL主从复制》,阅读数:3400,链接:https://my.oschina.net/u/3773384/blog/1810111
-----------------------------------------------------------------------------------------------------------------------------------------------
(97)文章:标题《使用 maven 生成一个支持端到端自动测试的 RESTful 服务项目脚手架》,阅读数:2600,链接:https://my.oschina.net/greenlaw110/blog/1811714
---------------------------------------------------------------------------------------------------------------------------------------------
(98)文章:标题《深入浅出设计模式——从球赛中悟多例模式》,阅读数:1000,链接:https://my.oschina.net/jack90john/blog/1813483
--------------------------------------------------------------------------------------------------------------------------------------------
(99)文章:标题《理解 Dubbo SPI 扩展机制》,阅读数:1000,链接:https://my.oschina.net/j4love/blog/1813040
--------------------------------------------------------------------------------------------------------------------------------------------
(100)文章:标题《Intellij IDEA神器居然还有这些小技巧》,阅读数:13100,链接:https://my.oschina.net/samgege/blog/1808622
-----------------------------------------------------------------------------------------------------------------------------------------------
(101)文章:标题《秒杀架构实践》,阅读数:3700,链接:https://my.oschina.net/crossoverjie/blog/1809257
----------------------------------------------------------------------------------------------------------------------------------------------
(102)文章:标题《利用Zipkin追踪Mysql数据库调用链》,阅读数:2400,链接:https://my.oschina.net/hansonwang99/blog/1807943
--------------------------------------------------------------------------------------------------------------------------------------------
(103)文章:标题《接口方法上的注解无法被@Aspect声明的切面拦截的原因分析》,阅读数:2100,链接:https://my.oschina.net/guangshan/blog/1808373
----------------------------------------------------------------------------------------------------------------------------------------------
(104)文章:标题《Spring boot 前后台分离项目 怎么处理spring security 抛出的异常》,阅读数:1000,链接:https://my.oschina.net/liululee/blog/1808027
---------------------------------------------------------------------------------------------------------------------------------------------
(105)文章:标题《透过现象看原理:详解Spring中Bean的this调用导致AOP失效的原因》,阅读数:1000,链接:https://my.oschina.net/guangshan/blog/1807721
---------------------------------------------------------------------------------------------------------------------------------------------
(106)文章:标题《用t-io来写一个网页聊天室或客服是个怎样的体验》,阅读数:11400,链接:https://my.oschina.net/talenttan/blog/1806324
--------------------------------------------------------------------------------------------------------------------------------------------
(107)文章:标题《Spring Boot应用监控实战》,阅读数:4500,链接:https://my.oschina.net/hansonwang99/blog/1805402
---------------------------------------------------------------------------------------------------------------------------------------------
(108)文章:标题《Spring Boot 2.0.1 入门教程》,阅读数:1000,链接:https://my.oschina.net/u/3819492/blog/1805170
--------------------------------------------------------------------------------------------------------------------------------------------
(109)文章:标题《Quartz调度源码分析》,阅读数:3100,链接:https://my.oschina.net/OutOfMemory/blog/1800560
---------------------------------------------------------------------------------------------------------------------------------------------
(110)文章:标题《快速集成Elasticsearch Restful API案例分享》,阅读数:2600,链接:https://my.oschina.net/bboss/blog/1801273
---------------------------------------------------------------------------------------------------------------------------------------------
(111)文章:标题《SpringCloud 之 Zuul 源代码详细笔记》,阅读数:1000,链接:https://my.oschina.net/alexqdjay/blog/1802503
----------------------------------------------------------------------------------------------------------------------------------------------
(112)文章:标题《Ubuntu 编译ffmpeg 实现GPU 转码》,阅读数:3400,链接:https://my.oschina.net/u/2950272/blog/1796874
-----------------------------------------------------------------------------------------------------------------------------------------------
(113)文章:标题《数据权限管理中心 - 基于mybatis拦截器实现》,阅读数:2700,链接:https://my.oschina.net/gmarshal/blog/1797026
----------------------------------------------------------------------------------------------------------------------------------------------
(114)文章:标题《完全读懂Spring框架之AOP实现原理》,阅读数:2000,链接:https://my.oschina.net/guangshan/blog/1797461