目录
一、概述
二、原理
三、爬虫分类
1、传统爬虫
2、聚焦爬虫
3、通用网络爬虫(全网爬虫)
四、网页抓取策略
1、宽度优先搜索:
2、深度优先搜索:
3、最佳优先搜索:
4、反向链接数策略:
5、Partial PageRank策略:
五、网页抓取的方法
1、分布式爬虫
2、Java爬虫
3、非Java爬虫
六、项目实战
1、抓取指定网页
2、抓取包含关键词网页
3、下载贴吧中图片
4、股票数据抓取
六、结语
一、概述
网络爬虫(Web crawler),又称为网络蜘蛛(Web spider)或网络机器人(Web robot),主要用来爬取目标网站内容的程序或脚本。
从功能上来区分网络爬虫:
数据采集
数据处理
数据储存
以上三个部分,基本工作框架流程如下图:
二、原理
功能:下载网页数据,为搜索引擎系统提供数据来源。组件:控制器、解析器、资源库。
Web网络爬虫系统首先将种子URL放入下载队列,然后简单地从队首中取出一个URL下载其对应的网页。得到网页的内容将其储存后,再经过解析网页中的链接信息可以得到一些新的URL,将这些URL加入下载队列。然后取出一个URL,对其对应的网页进行下载,再解析,如此反复进行,直到遍历了整个网络或满足某种条件后才会停止下来。
三、爬虫分类
1、传统爬虫
传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。
2、聚焦爬虫
聚焦爬虫工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用链接并将其放入等待抓取URL队列。然后它将根据一定搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统某一条件时停止。另外所有被爬虫抓取的网页将会被系统存储,进行一定的分析、过滤,并建立索引,以便之后的查询和检索。对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
3、通用网络爬虫(全网爬虫)
通用网络爬虫又称全网爬虫, 爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面顺序要求相对较低,同时由于待刷新页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。虽然存在一定缺陷, 但通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强应用价值。
实际的网络爬虫系统通常是几种爬虫技术相结合实现的。
四、网页抓取策略
在爬虫系统中,待抓取URL队列是很重要的一部分。队列中URL以什么样顺序排列也是一个很重要的问题,因为这涉及先抓取哪个页面,后抓取哪个页面。
而决定这些URL排列顺序的方法,称之为抓取策略。
1、宽度优先搜索:
在抓取过程中,在完成当前层次搜索后,才进行下一层次搜索。
优点:算法设计和实现相对简单。缺点:随着抓取网页增多,大量无关网页将被下载并过滤,算法效率将变低。
2、深度优先搜索:
从起始网页开始,选择一个URL进入,分析这个网页中的URL,一个链接一个链接地抓取下去,直到处理完一条路线之后再处理下一条URL中的路线。
例如,下图中深度优先搜索的遍历方式时 A 到 B 到 D 到 E 到 F(ABDECF),而宽度优先搜索的遍历方式是 A B C D E F 。
3、最佳优先搜索:
按照一定的网页分析法,预测候选URL与目标网页的相似度,或者与主题的相关性,并选取评价最好的一个或几个URL进行抓取。
4、反向链接数策略:
反向链接数是指一个网页被其他网页链接指向的数量。反向链接数表示的是一个网页的内容受到其他人的推荐程度。
5、Partial PageRank策略:
Partial PageRank算法借鉴了PageRank算法的思想,对于已经下载的网页,连同待抓取URL队列中的URL,形成网页集合,计算每个页面的PageRank值,计算完之后,将待抓取URL队列中的URL按照PageRank值的大小排列,并按照该顺序抓取页面。
五、网页抓取的方法
1、分布式爬虫
用于目前互联网中海量URL管理,它包含多个爬虫(程序),每个爬虫(程序)需要完成的任务和单个爬行器类似。它们从互联网上下载网页,并把网页保存在本地的磁盘,从中抽取URL并沿着这些URL的指向继续爬行。由于并行爬行器需要分割下载任务,可能爬虫会将自己抽取的URL发送给其他爬虫。
这些爬虫可能分布在同一个局域网之中,或分散在不同地理位置。
现在比较流行的分布式爬虫:
Apache Nutch: 依赖hadoop运行,hadoop本身会消耗很多时间。Nutch是为搜索引擎设计的爬虫,如果不是要做搜索引擎,尽量不要选择Nutch。
2、Java爬虫
用Java开发的抓取网络资源的小程序,常用的工具包括Crawler4j、WebMagic、WebCollector等。
3、非Java爬虫
Scrapy: 由Python编写的,轻量级的、高层次的屏幕抓取框架。最吸引人的地方在于Scrapy是一个框架,任何使用者可以根据自己的需求进行进行修改,并具有一些高级函数,可以简化抓取过程。
六、项目实战
1、抓取指定网页
抓取某网首页
使用urllib模块,此模块提供了读取Web页面数据接口,可以像读取本地文件一样读取www和ftp上的数据。urllib是一个URL处理包,这个包中集合了一些处理URL的模块。
urllib.request 模块: 用来打开和读取URLs的。urllib.error 模块: 包含一些由 urllib.request 产生的错误,可以用try进行捕捉处理。urllib.parse 模块: 包含一些解析 URLs的方法。urllib.robotparser: 用来解析 robots.txt 文本文件。它提供了一个单独的 RobotFileParser 类,通过该类提供的 can_fetch() 方法测试爬虫是否可以下载一个页面。
以下代码为抓取某网页的代码:
import urllib.request
url = "https://www.douban.com/"
# 这边需要模拟浏览器才能进行抓取
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'}
request = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(request)
data = response.read()
# 这边需要转码才能正常显示
print(str(data, 'utf-8'))
# 下面代码可以打印抓取网页的各类信息
print(type(response))
print(response.geturl())
print(response.info())
print(response.getcode())
2、抓取包含关键词网页
代码如下:
import urllib.request
data = {'word': '海贼王'}
url_values = urllib.parse.urlencode(data)
url = "http://www.baidu.com/s?"
full_url = url + url_values
data = urllib.request.urlopen(full_url).read()
print(str(data, 'utf-8'))
3、下载贴吧中图片
代码如下:
import re
import urllib.request
# 获取网页源代码
def getHtml(url):
page = urllib.request.urlopen(url)
html = page.read()
return html
# 获取网页所有图片
def getImg(html):
reg = r'src="([.*\S]*\.jpg)" pic_ext="jpeg"'
imgre = re.compile(reg)
imglist = re.findall(imgre, html)
return imglist
html = getHtml('https://tieba.baidu.com/p/3205263090')
html = html.decode('utf-8')
imgList = getImg(html)
imgName = 0
# 循环保存图片
for imgPath in imgList:
f = open(str(imgName) + ".jpg", 'wb')
f.write((urllib.request.urlopen(imgPath)).read())
f.close()
imgName += 1
print('正在下载第 %s 张图片 ' % imgName)
print('该网站图片已经下载完')
4、股票数据抓取
代码如下:
import random
import re
import time
import urllib.request
# 抓取所需内容
user_agent = ["Mozilla/5.0 (Windows NT 10.0; WOW64)", 'Mozilla/5.0 (Windows NT 6.3; WOW64)',
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko',
'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; rv:11.0) like Gecko)',
'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1',
'Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3',
'Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12',
'Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6',
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0)',
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)',
'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Maxthon/4.0.6.2000 Chrome/26.0.1410.43 Safari/537.1 ',
'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; QQBrowser/7.3.9825.400)',
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0 ',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.92 Safari/537.1 LBBROWSER',
'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; BIDUBrowser 2.x)',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/3.0 Safari/536.11']
stock_total = []
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'}
for page in range(1, 8):
url = 'http://quote.stockstar.com/stock/ranklist_a_3_1_' + str(page) + '.html'
request = urllib.request.Request(url=url, headers={"User-Agent": random.choice(user_agent)})
response = urllib.request.urlopen(request)
content = str(response.read(), 'gbk')
pattern = re.compile('(.*?)<')
# 正则匹配
stock_page = re.findall(pattern, body[0])
stock_total.extend(stock_page)
time.sleep(random.randrange(1, 4))
# 删除空白字符
stock_last = stock_total[:]
print(' 代码', '\t', ' 简称', '\t', '最新价', '\t', '涨跌幅', '\t', '涨跌额', '\t', '5分钟涨幅')
for i in range(0, len(stock_last), 13):
print(stock_last[i], '\t', stock_last[i + 1], '\t', stock_last[i + 2], ' ', '\t', stock_last[i + 3], ' ', '\t',
stock_last[i + 4], '\t', stock_last[i + 5])
六、结语
以上使用Python版本为 3.9。
本篇内容参考自《Python3 数据分析与机器学习实战》一书,编写此篇以学习为主。
写完就有点懒洋洋的咩~(+ω+)
到此这篇关于python网络爬虫实战的文章就介绍到这了,更多相关python 爬虫内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
你可能感兴趣的:(python网络爬虫实战)
关于举办第十五届蓝桥杯全国软件和信息技术专业人才大赛项目实战赛的通知
QSNKJJSW
蓝桥杯 职场和发展 青少年编程 无人机 机器人 科技 人工智能
各高等院校及相关单位:为贯彻落实《中国教育现代化2035》和《国务院关于印发新时期促进集成电路产业和软件产业高质量发展若干政策的通知》有关精神,为我国制造强国和网络强国战略提供人才支持,提高学生自主创新意识和工程实践能力,工业和信息化部人才交流中心决定举办第十五届蓝桥杯全国软件和信息技术专业人才大赛——项目实战赛。大赛连续四年入围中国高等教育学会“全国普通高校大学生竞赛排行榜”竞赛项目榜单。现将项
k8s入门到实战(十)—— CronJob详细介绍及使用示例
一弓虽
k8s学习 kubernetes 容器 云原生
CronJob什么是CronJob在k8s中,CronJob是一种用于定期执行任务的资源对象。它基于Cron表达式,允许您在指定的时间间隔内自动运行容器化的任务。CronJob可以定义以下属性:schedule:指定任务执行的时间表,使用标准的Cron表达式语法。例如,“0****”表示每小时执行一次任务。jobTemplate:定义要执行的任务的模板,通常是一个Pod模板。这个模板包含了任务所需
Python极速入门:五分钟开启实战之旅!
知白守黑V
Python 编程语言 系统运维 python 编程语言 python开发 python学习 python入门 python数据分析
1.Python基础语法和结构:了解Python的基本语法,包括变量、数据类型、运算符、注释等。控制流:掌握条件语句(if-elif-else)、循环(for和while)及其控制(break和continue)。函数:学习如何定义和使用函数,包括参数传递、返回值、作用域和闭包。模块和包:理解如何导入和使用模块,以及如何创建和使用自己的包。2.数据处理列表、元组和集合:学习这些序列类型的操作和方法
自媒体运营培训机构,全媒体运营师
配音新手圈
一、自媒体运营培训的重要性自媒体运营培训对于想要在自媒体领域发展的人来说非常重要。兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设计、翻译、配音、无门槛、插画、翻译、等等。。。每日更新兼职。通过培训,可以了解自媒体运营的基本原理和技巧,提高自己的运营能力和实战经验。二、如何选择合适的自媒体
blog-engine-06-pelican 静态网站生成 支持 markdown 和 reST 语法
老马啸西风
java
拓展阅读blog-engine-01-常见博客引擎jekyll/hugo/Hexo/Pelican/Gatsby/VuePress/Nuxt.js/Middleman对比blog-engine-02-通过博客引擎jekyll构建githubpages博客实战笔记blog-engine-02-博客引擎jekyll-jekyll博客引擎介绍blog-engine-02-博客引擎jekyll-jekyl
心羚:早教视频号,从0粉丝到341人的复盘
心有羚兮
我是心羚,【心早教学院】院长,“心早教”理念发起人,专注陪你做早教!2020年,我创立了早教人学习实战基地【心早教学院】,并提出了“心早教”这个理念,旨在邀请同频的你一起共创“心早教”,让我们在这个早教圈里,不忘初心,正念利他,彼此成就!“心早教”的愿景:让天下没有难做的早教“心早教”的使命:陪伴你实现早教创业目标,践行教育使命“心早教”的价值观:不忘初心,极致付出,极致利他我希望,我的每一篇文章
【Django实战一】创建新项目
叨叨凡
django sqlite 数据库
一、新建Projectdjango-adminstartproject项目名称二、创建应用1、创建应用pythonmanage.pystartapp应用名称应用创建后,项目的根目录下会生成对应应用名称的文件夹2、注册应用新创建的应用需要在settings.py中的INSTALLED_APPS中注册该应用INSTALLED_APPS=['django.contrib.admin','django.c
Linux实战笔记(三) 文件压缩
半虹
Linux Linux tar zip rar gzip bzip2 gz
大家好,我是半虹,这篇文章来讲Linux系统中常用的文件压缩方式0、序言在Linux系统中,存在许多打包或压缩文件的工具这篇文章会对一些常用的工具进行分类整理和介绍如果只是需要知道怎么对不同格式的文件做解压缩,可以直接跳转到本文最后的总结部分如果希望了解不同压缩工具的使用方法和应用场景,那么可以跟随正文一起进行深入探讨好了,下面是正文部分1、tartar命令本质上是用于打包文件,并不会做压缩,其打
MATLAB 2023a:强化学习算法的实战演练与性能评估
zmjia111
机器学习 matlab matlab 算法 开发语言 深度学习 机器学习 yolo
在深度学习领域,MATLAB2023版深度学习工具箱以其完整的工具链和高效的运行环境,为研究人员和开发者提供了前所未有的便利。这一工具箱不仅集成了建模、训练和部署的全部功能,更以其简洁易用的语法和强大的算法库,为深度学习任务的快速实现铺平了道路。相较于Python等编程语言,MATLAB的语法更为直观,上手更为迅速。无需繁琐的环境配置和库安装,用户只需打开MATLAB界面,即可轻松开始深度学习之旅
Python机器学习笔记:CART算法实战
战争热诚
完整代码及其数据,请移步小编的GitHub传送门:请点击我如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote前言在python机器学习笔记:深入学习决策树算法原理一文中我们提到了决策树里的ID3算法,C4.5算法,并且大概的了
Java实战开发之swagger配置及访问
丁小喜
java 开发语言 swagger springboot
今天来讲讲swagger目录一、swagger简介及主要特点二、swagger的配置一、swagger简介及主要特点Swagger是一个流行的开源框架,用于生成、描述、调用和可视化RESTful风格的Web服务。它可以让开发者和用户更方便地理解和使用API。Swagger通过定义RESTfulAPI的规范(使用YAML或JSON格式)来实现这些功能。这些规范称为OpenAPI规范(之前称为Swag
实战虚拟资源知识付费项目第十六天:目标月入1w+
JJ项目
第十六天2022-4-9大家好,我是JJ项目创始人政一,一个在互联网上不停奔跑的创业者!昨晚和大佬聊到半夜四点多,大佬的团队搞小红书的流量搞到了微信都不够用的地步,而且他们的圈子非常的内卷,举报小红书的号还不够,还要追到微信里去举报。那种竞争的激烈程度真的是恐怖,从小红书引流过来做外卖券、接广告、卖号。收益他们可以做到一个粉变现4块钱、还不算卖号的。他们1万的阅读量能加到700、800的私域流量,
设计模式学习笔记 - 设计原则与思想总结:2.运用学过的设计原则和思想完善之前性能计数器项目
陈建111
设计模式-实战 设计原则 思想实战
概述在《设计原则-10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器》中,我们讲解了如何对一个性能计数器框架进行分析、设计与实现,并且实践了一些设计原则和设计思想。当时提到,小步快跑、逐步迭代式一种非常实用的开发模式。所以,针对这个框架的开发,我们分多个版本来逐步完善。《设计原则-10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现
“教即是最好的学”实战演练《猜猜我有多爱你》
英妈恋上思维导图
“教即是最好的学”!近期通过整合自己已有知识,再和正在学习的中级班•儿童阅读指导师课件内容进行复盘。今日和鹏宝玩的是《猜猜我有多爱你》,整个过程共分两个部分:一、讲读绘本《猜猜我有多爱你》二、实操环节:绘制思维导图笔记在整个讲读过程,初步让孩子认识隐喻这种写作手法,以及学会把抽象概念具体化,并会用空间来表达爱。【身体运动智能+数学逻辑智能的培养】在讲读的整个过程,孩子总是兴致高昂,现场学着兔子做着
Docker介绍与使用
叶域
docker linux
Docker介绍与使用目录:一、Docker介绍1、Docker概述与安装2、Docker三要素二、Docker常用命令的使用1、镜像相关命令2、容器相关命令三、Docker实战之下载mysql、redis、zimg一、Docker介绍Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的操作系统的机器上,也能实现虚拟化。1、Docke
差分数组实战——滴滴春招笔试第一题
晓宜
算法 python 算法 笔试 春招 实习 互联网大厂
前言作者:晓宜个人简介:互联网大厂Java准入职,阿里云专家博主,csdn后端优质创作者,算法爱好者上周末参与了滴滴的春招笔试,第一题是差分数组的改版题,但是测试数据不强,听同学说暴力遍历也能过,whatever,这里分享下两种解法,顺便讲解下差分数组❤️❤️❤️你的关注是我前进的动力题目描述:小明正在模拟陨石对地质的危害。在小明的模型下,将地面从0,1,2…直到N依次从左到右进行标号。每次陨石i
Cesium实战三:飞行航线动画
の月光の
Cesium gis 前端
飞行航线追踪可视化从旧金山到哥本哈根的真实航班。1、获取点位数据:构建飞行跟踪器–Cesium(cesium.com)2、在地图上添加飞行点位:循环遍历点位数据,利用Entity直接添加点至地图上。//添加飞行点位constaddFlightPoint=()=>{constlength=filghtData.length;for(leti=0;i{constlength=filghtData.le
音视频实战---音视频解码
weixin_45673259
音视频 音视频
该方法只能解码裸流。1、使用avcodec_find_decoder查找解码器根据使用解码器类型,决定是解码音频还是解码视频。2、使用av_parser_init获取裸流解析器和方法3、使用avcodec_alloc_context3分配编解码器上下文4、使用avcodec_open2将解码器和解码器上下文进行关联5、使用fopen打开输入、输出文件6、使用fread读取文件7、使用av_fram
count(*)、count(主键id)、count(字段)和count(1)的区别
追涨杀跌
# MySQL mysql count聚合函数
学习丁奇(林晓斌)老师MySQL实战45讲课程后提炼的笔记!!!需要注意的是,下面的讨论还是基于InnoDB引擎的。这里,首先你要弄清楚count()的语义。count()是一个聚合函数,对于返回的结果集,一行行地判断,如果count函数的参数不是NULL,累计值就加1,否则不加。最后返回累计值。所以,count(*)、count(主键id)和count(1)都表示返回满足条件的结果集的总行数;而
数据对比与处理利器——Pandas 实战
黑夜照亮前行的路
数据挖掘
Pandas作为数据处理利器,在数据对比与处理方面发挥着重要作用。下面我们将通过实战案例来展示Pandas的强大功能。一、数据导入与清洗首先,我们需要从数据源导入数据,并进行必要的清洗。Pandas支持多种数据格式,如CSV、Excel、SQL等。以CSV文件为例,我们可以使用Pandas的read_csv函数来读取数据:python复制代码importpandasaspd#读取CSV文件data
Spring Boot单元测试入门实战
程序员汤圆
软件测试 技术分享 spring boot 单元测试 后端
一、关于JUnit的一些东西在我们开发Web应用时,经常会直接去观察结果进行测试。虽然也是一种方式,但是并不严谨。作为开发者编写测试代码来测试自己所写的业务逻辑是,以提高代码的质量、降低错误方法的概率以及进行性能测试等。经常作为开发这写的最多就是单元测试。引入spring-boot-starter-testSpringBoot的测试依赖。该依赖会引入JUnit的测试包,也是我们用的做多的单元测试包
【思维导图实战派T5】16/21——《终结拖延症》
思维导图实战派_徐俊
感受:这几天的作业晚交让我发现自己是个拖延症患者,把今天就来了解什么是拖延症。听书所说,不要给自己定性贴标签。对的!立马觉得我只是有拖延行为,并不是拖延症患者,这条必须谨记!发现:造成我拖延最大的问题是“完美主义”——在乎自己在别人心目中的形象,之前也有朋友跟我讲要“放下我执”……嗯!这是我急需调整的。接受不完美。下一步:综合拖延和大吼大叫问题,着重pass它们!加油!图片发自App图片发自App
算法-位运算
风清扬-独孤九剑
golang 算法 算法 数据结构 go
目录前言位运算有的符号按位异或性质:指定位置的位运算位运算算法常用点实战前言机器是采用二进制对数值进行表示、存储和运输,在程序中恰当使用二进制,可以提高运行效率。本篇文章我们讲下位运算相关的问题。位运算有的符号含义运算符示例按位与&1011&0011=0011按位或|1011|0011=1011按位取反~~0011=1100按位异或^1011^0011=1000(相同得0不同得1)左移>0011>
hcie数通和云计算选哪个好?
腾科教育
华为 云计算 华为 数通
1.基础知识与技能要求数通技术是网络技术的核心,它涉及到网络协议、路由交换、网络安全等多个方面。如果你是一名网络工程师或开发者,想要在数通领域有所建树,你需要具备扎实的基础知识和丰富的实战经验。云计算则更注重于虚拟化、存储、网络和服务器等方面的知识。如果你对这些领域感兴趣,并且希望在云计算领域发展,那么选择HCIE云计算是明智的选择。2.职业发展方向选择不同的方向意味着你将走向不同的职业道路。如果
docker实战(2)
Loren_云淡风轻
运维 云原生 docker 容器 运维
docker安装redis一,搭建docker环境二,docker安装redis1,查看redis版本:dockersearchredisredis镜像仓库地址:DockerHub2,获取最新镜像版本:dockerpullredis:latest3,查看redis镜像是否安装成功:dockerimages4,运行容器:dockerrun-itd--nameredis-test-p6379:6379
基于Java+SpringMVC+vue+element宠物管理系统设计实现
央顺技术团队
成品程序项目 java vue.js 宠物 数据库 mybatis 前端 spring boot
基于Java+SpringMVC+vue+element宠物管理系统设计实现博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域作者主页央顺技术团队Java毕设项目精品实战案例《1000套》欢迎点赞收藏⭐留言文末获取源码联系方式文章目录基于Java+SpringMVC+vue+element宠物管理系统设计实现一、前言介绍:二、系统
鸿蒙HarmonyOS实战-ArkUI动画(页面转场动画)
蜀道山QAQ
鸿蒙 harmonyos 华为 华为od 鸿蒙 鸿蒙系统
前言页面转场动画是指在应用程序中,当用户导航到另一个页面时,使用动画效果来过渡页面之间的切换。这样做的目的是为了提升用户体验,使页面之间的切换更加平滑和有趣。常见的页面转场动画包括淡入淡出、滑动、翻转、缩放等效果。通过使用这些动画效果,可以给用户一种流畅的感觉,让页面之间的切换更加自然。在实现页面转场动画时,可以根据具体的需求和设计来选择合适的转场效果,并结合页面的布局和内容来调整动画效果的细节。
思维导图实战派21天训练计划02/21
何明_0198
图片发自App图片发自App图片发自App图片发自App图片发自App果真,多练就手熟,难怪燕子老师信手画来,线条流畅优美,无他,惟手熟尔,明天空闲多画画,儿子配了图我俩双拼,对比第一幅图,那差别啊!期待着21天后的图
Java实战:Spring Boot利用MinIO实现文件切片上传
拥抱AI
java spring boot 开发语言
本文将详细介绍如何在SpringBoot应用程序中使用MinIO实现文件切片极速上传技术。我们将深入探讨MinIO的概念、文件切片上传的原理,以及如何使用SpringBoot和MinIO实现文件切片上传和合并。1.引言在现代的互联网应用中,文件上传是一个常见的功能。然而,传统的文件上传功能可能无法满足大文件上传的需求。为了提高大文件上传的效率和速度,我们可以使用文件切片上传技术。文件切片上传技术可
基于Java+SpringBoot+vue+element实现前后端分离玩具商城系统
央顺技术团队
成品程序项目 java spring boot vue.js 毕业设计 spring 后端
基于Java+SpringBoot+vue+element实现前后端分离玩具商城系统博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域作者主页央顺技术团队Java毕设项目精品实战案例《1000套》欢迎点赞收藏⭐留言文末获取源码联系方式文章目录基于Java+SpringBoot+vue+element实现前后端分离玩具商城系统前言介
[星球大战]阿纳金的背叛
comsci
本来杰迪圣殿的长老是不同意让阿纳金接受训练的.........
但是由于政治原因,长老会妥协了...这给邪恶的力量带来了机会
所以......现代的地球联邦接受了这个教训...绝对不让某些年轻人进入学院
看懂它,你就可以任性的玩耍了!
aijuans
JavaScript
javascript作为前端开发的标配技能,如果不掌握好它的三大特点:1.原型 2.作用域 3. 闭包 ,又怎么可以说你学好了这门语言呢?如果标配的技能都没有撑握好,怎么可以任性的玩耍呢?怎么验证自己学好了以上三个基本点呢,我找到一段不错的代码,稍加改动,如果能够读懂它,那么你就可以任性了。
function jClass(b
Java常用工具包 Jodd
Kai_Ge
java jodd
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大! 写道 Jodd = Tools + IoC + MVC + DB + AOP + TX + JSON + HTML < 1.5 Mb
Jodd 被分成众多模块,按需选择,其中
工具类模块有:
jodd-core &nb
SpringMvc下载
120153216
springMVC
@RequestMapping(value = WebUrlConstant.DOWNLOAD)
public void download(HttpServletRequest request,HttpServletResponse response,String fileName) {
OutputStream os = null;
InputStream is = null;
Python 标准异常总结
2002wmj
python
Python标准异常总结
AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性 EOFError 用户输入文件末尾标志EOF(Ctrl+d) FloatingPointError 浮点计算错误 GeneratorExit generator.close()方法被调用的时候 ImportError 导入模块失
SQL函数返回临时表结构的数据用于查询
357029540
SQL Server
这两天在做一个查询的SQL,这个SQL的一个条件是通过游标实现另外两张表查询出一个多条数据,这些数据都是INT类型,然后用IN条件进行查询,并且查询这两张表需要通过外部传入参数才能查询出所需数据,于是想到了用SQL函数返回值,并且也这样做了,由于是返回多条数据,所以把查询出来的INT类型值都拼接为了字符串,这时就遇到问题了,在查询SQL中因为条件是INT值,SQL函数的CAST和CONVERST都
java 时间格式化 | 比较大小| 时区 个人笔记
7454103
java eclipse tomcat c MyEclipse
个人总结! 不当之处多多包含!
引用 1.0 如何设置 tomcat 的时区:
位置:(catalina.bat---JAVA_OPTS 下面加上)
set JAVA_OPT
时间获取Clander的用法
adminjun
Clander 时间
/**
* 得到几天前的时间
* @param d
* @param day
* @return
*/
public static Date getDateBefore(Date d,int day){
Calend
JVM初探与设置
aijuans
java
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台
SQL中ON和WHERE的区别
avords
SQL中ON和WHERE的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 www.2cto.com 在使用left jion时,on和where条件的区别如下: 1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
说说自信
houxinyou
工作 生活
自信的来源分为两种,一种是源于实力,一种源于头脑.实力是一个综合的评定,有自身的能力,能利用的资源等.比如我想去月亮上,要身体素质过硬,还要有飞船等等一系列的东西.这些都属于实力的一部分.而头脑不同,只要你头脑够简单就可以了!同样要上月亮上,你想,我一跳,1米,我多跳几下,跳个几年,应该就到了!什么?你说我会往下掉?你笨呀你!找个东西踩一下不就行了吗?
无论工作还
WEBLOGIC事务超时设置
bijian1013
weblogic jta 事务超时
系统中统计数据,由于调用统计过程,执行时间超过了weblogic设置的时间,提示如下错误:
统计数据出错!
原因:The transaction is no longer active - status: 'Rolling Back. [Reason=weblogic.transaction.internal
两年已过去,再看该如何快速融入新团队
bingyingao
java 互联网 融入 架构 新团队
偶得的空闲,翻到了两年前的帖子
该如何快速融入一个新团队,有所感触,就记下来,为下一个两年后的今天做参考。
时隔两年半之后的今天,再来看当初的这个博客,别有一番滋味。而我已经于今年三月份离开了当初所在的团队,加入另外的一个项目组,2011年的这篇博客之后的时光,我很好的融入了那个团队,而直到现在和同事们关系都特别好。大家在短短一年半的时间离一起经历了一
【Spark七十七】Spark分析Nginx和Apache的access.log
bit1129
apache
Spark分析Nginx和Apache的access.log,第一个问题是要对Nginx和Apache的access.log文件进行按行解析,按行解析就的方法是正则表达式:
Nginx的access.log解析正则表达式
val PATTERN = """([^ ]*) ([^ ]*) ([^ ]*) (\\[.*\\]) (\&q
Erlang patch
bookjovi
erlang
Totally five patchs committed to erlang otp, just small patchs.
IMO, erlang really is a interesting programming language, I really like its concurrency feature.
but the functional programming style
log4j日志路径中加入日期
bro_feng
java log4j
要用log4j使用记录日志,日志路径有每日的日期,文件大小5M新增文件。
实现方式
log4j:
<appender name="serviceLog"
class="org.apache.log4j.RollingFileAppender">
<param name="Encoding" v
读《研磨设计模式》-代码笔记-桥接模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/**
* 个人觉得关于桥接模式的例子,蜡笔和毛笔这个例子是最贴切的:http://www.cnblogs.com/zhenyulu/articles/67016.html
* 笔和颜色是可分离的,蜡笔把两者耦合在一起了:一支蜡笔只有一种
windows7下SVN和Eclipse插件安装
chenyu19891124
eclipse插件
今天花了一天时间弄SVN和Eclipse插件的安装,今天弄好了。svn插件和Eclipse整合有两种方式,一种是直接下载插件包,二种是通过Eclipse在线更新。由于之前Eclipse版本和svn插件版本有差别,始终是没装上。最后在网上找到了适合的版本。所用的环境系统:windows7JDK:1.7svn插件包版本:1.8.16Eclipse:3.7.2工具下载地址:Eclipse下在地址:htt
[转帖]工作流引擎设计思路
comsci
设计模式 工作 应用服务器 workflow 企业应用
作为国内的同行,我非常希望在流程设计方面和大家交流,刚发现篇好文(那么好的文章,现在才发现,可惜),关于流程设计的一些原理,个人觉得本文站得高,看得远,比俺的文章有深度,转载如下
=================================================================================
自开博以来不断有朋友来探讨工作流引擎该如何
Linux 查看内存,CPU及硬盘大小的方法
daizj
linux cpu 内存 硬盘 大小
一、查看CPU信息的命令
[root@R4 ~]# cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id"
model name : Intel(R) Xeon(R) CPU X5450 @ 3.00GHz
model name :
linux 踢出在线用户
dongwei_6688
linux
两个步骤:
1.用w命令找到要踢出的用户,比如下面:
[root@localhost ~]# w
18:16:55 up 39 days, 8:27, 3 users, load average: 0.03, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
放手吧,就像不曾拥有过一样
dcj3sjt126com
内容提要:
静悠悠编著的《放手吧就像不曾拥有过一样》集结“全球华语世界最舒缓心灵”的精华故事,触碰生命最深层次的感动,献给全世界亿万读者。《放手吧就像不曾拥有过一样》的作者衷心地祝愿每一位读者都给自己一个重新出发的理由,将那些令你痛苦的、扛起的、背负的,一并都放下吧!把憔悴的面容换做一种清淡的微笑,把沉重的步伐调节成春天五线谱上的音符,让自己踏着轻快的节奏,在人生的海面上悠然漂荡,享受宁静与
php二进制安全的含义
dcj3sjt126com
PHP
PHP里,有string的概念。
string里,每个字符的大小为byte(与PHP相比,Java的每个字符为Character,是UTF8字符,C语言的每个字符可以在编译时选择)。
byte里,有ASCII代码的字符,例如ABC,123,abc,也有一些特殊字符,例如回车,退格之类的。
特殊字符很多是不能显示的。或者说,他们的显示方式没有标准,例如编码65到哪儿都是字母A,编码97到哪儿都是字符
Linux下禁用T440s,X240的一体化触摸板(touchpad)
gashero
linux ThinkPad 触摸板
自打1月买了Thinkpad T440s就一直很火大,其中最让人恼火的莫过于触摸板。
Thinkpad的经典就包括用了小红点(TrackPoint)。但是小红点只能定位,还是需要鼠标的左右键的。但是自打T440s等开始启用了一体化触摸板,不再有实体的按键了。问题是要是好用也行。
实际使用中,触摸板一堆问题,比如定位有抖动,以及按键时会有飘逸。这就导致了单击经常就
graph_dfs
hcx2013
Graph
package edu.xidian.graph;
class MyStack {
private final int SIZE = 20;
private int[] st;
private int top;
public MyStack() {
st = new int[SIZE];
top = -1;
}
public void push(i
Spring4.1新特性——Spring核心部分及其他
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
配置HiveServer2的安全策略之自定义用户名密码验证
liyonghui160com
具体从网上看
http://doc.mapr.com/display/MapR/Using+HiveServer2#UsingHiveServer2-ConfiguringCustomAuthentication
LDAP Authentication using OpenLDAP
Setting
一位30多的程序员生涯经验总结
pda158
编程 工作 生活 咨询
1.客户在接触到产品之后,才会真正明白自己的需求。
这是我在我的第一份工作上面学来的。只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的。给出一个功能性原型设计远远比一张长长的文字表格要好。 2.只要有充足的时间,所有安全防御系统都将失败。
安全防御现如今是全世界都在关注的大课题、大挑战。我们必须时时刻刻积极完善它,因为黑客只要有一次成功,就可以彻底打败你。 3.
分布式web服务架构的演变
自由的奴隶
linux Web 应用服务器 互联网
最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而数据库出问题的时候,应用也容易
初探Druid连接池之二——慢SQL日志记录
xingsan_zhang
日志 连接池 druid 慢SQL
由于工作原因,这里先不说连接数据库部分的配置,后面会补上,直接进入慢SQL日志记录。
1.applicationContext.xml中增加如下配置:
<bean abstract="true" id="mysql_database" class="com.alibaba.druid.pool.DruidDataSourc