熟悉Python的requests库即re之后,可以尝试构建一个简单的爬虫系统。我们选用网站结构比较稳定且不会造成较大服务器负载的豆瓣网站,爬取豆瓣评分top250的电影名称、封面等详细信息。
目录
一、网页分析
1.网页概览
2.匹配分析
二、爬虫编写
1.网页获取
2.信息提取
3.保存数据
4.循环结构
一、网页分析
1.网页概览
首先在浏览器中输入以下网址打开爬取的目标网站豆瓣电影top250 :https://movie.douban.com/top250?start=225&filter=,得到如下界面。
通过查看豆瓣电影官网的robots 协议,发现此网站并不在Disallow 里,表明该网站不限制爬取 。
2.匹配分析
接着按下F12键查看谷歌浏览器的Devtools工具 ,发现第一部电影(即肖申克的救赎)的完整内容都在一个class 属于"item " 的标签中,且其后每一部电影都在相同的结构中。
接着我们逐步通过查看源代码来进行信息匹配,通过下图可以看到在class 为"pic" 的div 标签中储存了电影排名信息和图片url。
因此我们可以利用正则表达式中的非贪婪匹配 依次匹配到每个电影条目中的电影排名和图片url信息,非贪婪匹配即(.*?) 的原因在于此页源代码中包含了多部电影。代码如下,第一个(.*?)即为排名 ,第二个(.*?)为图片url 。
.*?
(.*?) .*?
.*?
依次类推,名称和别名依次在class 为"title" 的 标签和class 为"other" 的 标签中,整合上面的正则表达式后代码如下:
.*?
(.*?) .*?
.*?div class="info.*?class="hd".*?class="title">(.*?).*?class="other">(.*?)
接下来是导演主演 、年份国家 和类型 的标签位置和正则表达式:
.*?
(.*?) .*?
.*?div class="info.*?class="hd".*?class="title">(.*?).*?class="other">(.*?)
.*?.*?
(.*?) (.*?)
.*?
之后是评分 和评价人数 的标签位置及整合后的正则表达式:
.*?
(.*?) .*?
.*?div class="info.*?class="hd".*?class="title">(.*?).*?class="other">(.*?)
.*?.*?
(.*?) (.*?)
.*?
class="star.*? .*?span class="rating_num".*?average">(.*?).*?(.*?) .*?
最后是提取储存在class 为"inq" 的 标签中的经典评价内容:
.*?
(.*?) .*?
.*?div class="info.*?class="hd".*?class="title">(.*?).*?class="other">(.*?)
.*?.*?
(.*?) (.*?)
.*?
class="star.*? .*?span class="rating_num".*?average">(.*?).*?(.*?) .*
span class="inq"?>(.*?)
二、爬虫编写
1.网页获取
在进行上面的匹配分析之后我们得到了本文最核心的正则匹配表达式 ,接下来我们开始尝试写出网页获取的代码。
首先导入相关库,之后将上述豆瓣电影top250的网址存储在url 变量中,定义浏览器头,之后调用requests 库的ge t 方法获取网页源代码。
import requests
import re
import json
url = "https://movie.douban.com/top250?start=0&filter="
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
}
response = requests.get(url, headers=headers)
text = response.text
2.信息提取
接着将上文的正则表达式存储为字符串,调用re库的findall函数 匹配出所有满足条件的子串 。
regix = '.*?
(.*?) .*?
.*?' \ 'div class="info.*?class="hd".*?class="title">(.*?).*?class="other">(.*?)'\
'.*?.*?
(.*?) (.*?)
.*?' \
'class="star.*? .*?span class="rating_num".*?average">(.*?).*?(.*?) .*?' \
'span class="inq"?>(.*?)'
res = re.findall(regix, text, re.S)
print(res)
通过输出结果可知电影的排名 、封面url 、名称 、导演和演员 、评分 、评价 人 数 及评价内容 都在多个元组组成的列表之中。
[('1',
'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg',
'肖申克的救赎',
' / 月黑高飞(港) / 刺激1995(台)',
'\n 导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins /...',
'\n 1994 / 美国 / 犯罪 剧情\n ',
'rating5-t',
'9.7',
'1893209人评价',
'希望让人自由。'),
由于图片文件需要单独发送请求,我们在此单独定义一个图片下载函数,调用python内置函数open 将响应内容写入到jpg格式 文件中。
# 定义下载图片函数
def down_image(url,name,headers):
r = requests.get(url,headers = headers)
filename = re.search('/public/(.*?)$',url,re.S).group(1)
with open("film_pic/"+name.split('/')[0]+".jpg",'wb') as f:
f.write(r.content)
在此基础上我们将上文代码整合为一个网页解析函数 ,此函数完成了一页中获取网页、提取信息、处理信息和输出信息的功能,此处的yield 生成器能够在在一次调用过程中多次返回值,较return有明显的优势。
# 定义解析网页函数
def parse_html(url):
response = requests.get(url, headers=headers)
text = response.text
# 正则表达式头部([1:排名 2:图片] [3:名称 4:别名] [5:导演 6:年份/国家/类型] [7:评星 8:评分 9:评价人数] [10:评价])
regix = '.*?
(.*?) .*?
.*?' \ 'div class="info.*?class="hd".*?class="title">(.*?).*?class="other">(.*?)'\
'.*?.*?
(.*?) (.*?)
.*?' \
'class="star.*? .*?span class="rating_num".*?average">(.*?).*?(.*?) .*?' \
'span class="inq"?>(.*?)'
# 匹配出所有结果
res = re.findall(regix, text, re.S)
for item in res:
rank = item[0]
down_image(item[1],item[2],headers = headers)
name = item[2] + ' ' + re.sub(' ','',item[3])
actor = re.sub(' ','',item[4].strip())
year = item[5].split('/')[0].strip(' ').strip()
country = item[5].split('/')[1].strip(' ').strip()
tp = item[5].split('/')[2].strip(' ').strip()
tmp = [i for i in item[6] if i.isnumeric()]
if len(tmp) == 1:
score = tmp[0] + '星/' + item[7] + '分'
else:
score = tmp[0] + '星半/' + item[7] + '分'
rev_num = item[8][:-3]
inq = item[9]
# 生成字典
yield {
'电影名称': name,
'导演和演员': actor,
'类型': tp,
'年份': year,
'国家': country,
'评分': score,
'排名': rank,
'评价人数': rev_num,
'评价': inq
}
3.保存数据
上文返回的格式为字典,因此我们调用json库的dumps 方法将字典编码为json格式名写入到top250_douban_film.txt 文本文件中。
# 定义输出函数
def write_movies_file(str):
with open('top250_douban_film.txt','a',encoding='utf-8') as f:
f.write(json.dumps(str,ensure_ascii=False) + '\n')
4.循环结构
上文仅仅爬取了一页共25条数据,通过点击页面中的下一页对比发现,各页码的url仅仅是start= 后面的参数不同,且都是25的倍数。
鉴于此,我们利用循环结构和字符串拼接就可以实现多页爬取:
# 定义主函数
def main():
for offset in range(0, 250, 25):
url = 'https://movie.douban.com/top250?start=' + str(offset) +'&filter='
for item in parse_html(url):
print(item)
write_movies_file(item)
最终爬取的封面图片及电影信息结果如下:
至此豆瓣电影top250爬取实战结束~爬虫完整代码可以在 公众号中回复 “top250 ”获得。当然一个爬虫远远不能让笔者和大家熟练,要想举一反三还需要去反复体会案例中的分析思路 和具体解决途径 。
因此我们对上述爬虫做一下总结:在爬虫中首先对网页结构 及robots 协议进行分析,得到正则匹配表达式 ,再利用requests 库对目标网页发起请求 ,再用re 库及正则匹配表达式对目标网页源代码进行信息提取 ,之后利用json 库和open 函数将图片及提取的信息存储 起来,在最再利用循环结构 和字符串拼接 实现翻页爬取。
然而有些网页比如淘宝 或者京东 我们会发现源代码中无法提取到想要的信息,原因在于这些网站都属于动态加载 的网站,而豆瓣电影网站属于静态网页 ,在后文中将对这些技术进行进一步的讲解。前文涉及的基础知识可参考下面链接:
Python网络爬虫数据采集实战:基础知识
Python网络爬虫数据采集实战:Requests和Re库
你可能感兴趣的:(Python,python,数据分析)
使用 Nginx 实现镜像流量:提升系统可用性与负载均衡
绝顶少年
nginx 负载均衡 java
在现代分布式系统中,确保高可用性和负载均衡是至关重要的。Nginx作为一个高性能的反向代理服务器,不仅可以用于负载均衡,还可以通过镜像流量(TrafficMirroring)功能,将实时流量复制到其他服务器,用于测试、监控或数据分析,而不会影响生产环境。本文将详细介绍如何使用Nginx实现镜像流量。(有时候只是实现单接口的数据共享也同样可以采用单接口配置!如果你遇到按照配置完成后主服务器实现了转发
Python——函数
生如雪花
Python python
一、十进制小数转换成二进制小数【问题描述】编写程序,输入十进制小数(只考虑正数),把它转换为以字符串形式存储的二进制小数,输出该二进制小数字符串。对于转换得到的二进制小数,小数点后最多保留10位。小数点后不足10位,则输出这些位,尾部不补0;小数点后超出10位,则直接舍弃超出部分。【输入形式】十进制浮点小数【输出形式】对应输入小数的二进制小数字符串。若整数部分或者小数部分为0,则输出0。比如输入0
Python Web框架 Flask vs Django vs FastAPI
ZengDerby
python flask fastapi django
如果您需要构建大型的、功能丰富的应用程序,Django可能是一个很好的选择。如果您需要更灵活的框架,可以选择Flask来定制开发。而对于追求极致性能和高并发处理的项目,FastAPI可能是一个更加理想的选择。优缺点Flask在小型项目或微服务理想的选择。Flask灵活且轻量,非常适合快速开发小型应用。Flask是一个非常灵活的框架,它允许您根据项目需求进行定制。您可以根据需要选择合适的插件和扩展。
python if用法
IT技术土狗
python从入门到入狱 python
pythonif用法流程控制流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(用到if判断)、循环结构(用到while与for)1、分支结构分支结构就是根据条件判断的真假去执行不同分支对应的子代码2、为什么需要分支结构人类某些时候需要根据条件来决定做什么事情,比如:如果今天下雨,就带伞所以程序中必须有相应的机制来控制计算
python与数值有关的问题
cbxjsdg
python
1.复数的问题x=123+456j#后面没加j部分为实数,加j部分为虚数print('实数部分',x.real)#表示实数print('虚数部分',x.imag)#表示虚数2.查看数值的类型a=10b=10.0c=1.99E2#表示1.99*10的二次方的意思,这是科学计数法print('数值为',a,'数值类型为',type(a))print('数值为',b,'数值类型为',type(b))pr
【架构设计】前置知识
GIS程序媛—椰子
架构设计 架构设计
架构设计是软件开发的进阶技能,需要结合理论知识和实践经验。以下是掌握架构设计所需的前置知识及其重要性,以及学习路径建议:一、基础编程能力1.编程语言与核心概念掌握至少一门主流语言(如Java、Python、C#、Go等),理解其语法、特性及生态。核心概念:面向对象(OOP)、函数式编程(FP)、并发/异步、内存管理等。示例:通过Java理解接口、多态、设计模式。通过Go学习并发模型(Gorouti
Python, C ++开发家庭开支
Geeker-2025
python c++
开发一款**家庭开支数字化记录与结算App**是一个非常有意义的项目,旨在帮助家庭用户高效管理开支、记录消费、分析财务状况,并提供结算和预算管理功能。以下是基于**Python**和**C++**的开发方案,结合两者在数据处理、实时通信和系统开发中的优势。---##1.**项目需求分析**家庭开支数字化记录与结算App的核心功能包括:1.**用户管理**:-用户注册、登录,支持家庭成员管理。2.*
linux执行python脚本conda库_Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))...
weixin_39992462
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))1.首先在PycharmTools->Deployment->Configurations打开新建SFTP输入host:ip地址username密码然后点击TestConnection出现下图,则测试成功因为已经连接成功,这时候已经可以读取远程服务器的目录了:2.选择项目mapping(可以跳过3.在Set
brew mysql client_Mac安装mysqlclient过程解析
weixin_39630440
brew mysql client
尝试在虚拟环境下通过pip安装:pipinstallmysqlclient然后报错:OSError:mysql_confignotfound找到官方文档https://github.com/PyMySQL/mysqlclient-python,解释说安装前需安装另一个模块:brewinstallmysql-connector-c但是报错:查看报错信息,在安装mysql-connector-c前先b
macos安装python-nodejs_MAC平台基于Python Appium环境搭建过程图解
weixin_39612038
前言最近笔者要为python+appium课程做准备,mac在2019年重新安装了一次系统,这次重新在mac下搭建appium环境,刚好顺带写个文稿给大家分享分享搭建过程。一、环境和所需软件概述1.1目前环境:MacOS(10.15.3)1.2所需软件:jdk-8u91-macosx-x64.dmg(jdk1.8及以上版本应该都可以)android-sdk_r24.4.1-macosx.zip(m
python接口自动化
全世界最帅的男人
python 自动化 开发语言
Python是一种非常流行的编程语言,也是许多接口自动化测试框架的首选语言。下面是一个简单的接口自动化测试框架的思路:1.安装必要的库和工具:在Python中,我们可以使用requests库来发送HTTP请求,使用unittest库来编写测试用例,使用HTMLTestRunner库来生成测试报告。此外,我们还需要安装一个代码编辑器,如PyCharm或VSCode。2.创建测试用例:编写测试用例是接
Python接口自动化
花落同学
Python自动化从入门到放弃 python 自动化
4接口自动化4.1使用python实现接口自动化如果不了解接口测试可参考https://ke.qq.com/course/4092904使用Python的request库实现接口测试:importjsonimportrequests#使用session管理:#1.可以自动关联set-cookie里面的内容#2.可以加快与服务器的连接速度session=requests.session()#auth
阻止 Mac 在运行任务时进入休眠状态
好好学习 666
macos
掌握`Caffeinate`命令:让您的Mac保持清醒以完成关键任务开发人员经常发现自己在Mac上运行持续时间较长的进程。无论是大量文件上传、广泛的数据分析脚本,还是复杂的构建过程,我们最不希望的就是我们的机器在任务中途进入睡眠状态。输入`caffeinate`命令–macOS的内置解决方案,可在您最需要时保持系统唤醒。##睡眠困境MacOS在设计时考虑了电源效率,这对电池寿命非常有用,但在运行时
Python异步编程:从基础到高级
CarlowZJ
python 网络 数据库
前言在现代软件开发中,异步编程已经成为一种必不可少的技能。Python的异步编程模型(基于asyncio)为开发者提供了一种高效的方式来处理高并发任务,而无需依赖多线程或多进程。异步编程不仅可以提高程序的性能,还能简化并发代码的复杂性。本文将带你从异步编程的基础概念出发,逐步深入到高级应用,帮助你掌握Python异步编程的核心技能。一、异步编程的基础概念1.1什么是异步编程?异步编程是一种编程范式
python实现接口自动化
一只小H呀の
python 自动化 开发语言
代码实现自动化相关理论代码编写脚本和工具实现脚本区别是啥?代码:优点:代码灵活方便缺点:学习成本高工具:优点:易上手缺点:灵活度低,有局限性。总结:功能脚本:工具自动化脚本:代码代码接口自动化怎么做的?第一步:python+request+unittest;具体描述?第二步:封装、调用、数据驱动、日志、报告;详细举例:第三步:api\scripts\data\log\report\until…脚本
探索Python中的集成方法:Stacking
Echo_Wish
Python 笔记 Python 算法 python 开发语言
在机器学习领域,Stacking是一种高级的集成学习方法,它通过将多个基本模型的预测结果作为新的特征输入到一个元模型中,从而提高整体模型的性能和鲁棒性。本文将深入介绍Stacking的原理、实现方式以及如何在Python中应用。什么是Stacking?Stacking,又称为堆叠泛化(StackedGeneralization),是一种模型集成方法,与Bagging和Boosting不同,它并不直
【Python】 Stacking: 强大的集成学习方法
音乐学家方大刚
Python python 集成学习 开发语言
我们都找到天使了说好了心事不能偷藏着什么都一起做幸福得没话说把坏脾气变成了好沟通我们都找到天使了约好了负责对方的快乐阳光下的山坡你素描的以后怎么抄袭我脑袋想的薛凯琪《找到天使了》在机器学习中,单一模型的性能可能会受到其局限性和数据的影响。为了解决这个问题,我们可以使用集成学习(EnsembleLearning)方法。集成学习通过结合多个基模型的预测结果,来提高整体模型的准确性和稳健性。Stacki
minimind2学习:(1)训练
溯源006
minimind学习 学习 深度学习 生成模型
1、数据下载参考:https://github.com/jingyaogong/minimind/tree/master2、预训练训练6个epochspythontrain_pretrain.py--epochs6训练过程:LLM总参数量:25.830百万Epoch:[1/6](0/11040)loss:8.940lr:0.000550000000epoch_Time:106.0min:Epoch
使用Seaborn库中的`violinplot`函数绘制水平小提琴图(Violin Plot)是一种常见的数据可视化方法
code_welike
信息可视化 数据分析 数据挖掘 Python
使用Seaborn库中的violinplot函数绘制水平小提琴图(ViolinPlot)是一种常见的数据可视化方法。水平小提琴图可以展示数据的分布特征,并可以对比不同组别之间的差异。本文将介绍如何使用Python和Seaborn库绘制水平小提琴图,并提供相应的源代码示例。首先,我们需要确保已经安装了Seaborn库。可以使用以下命令在Python中安装Seaborn:pipinstallseabo
【集成学习】:Stacking原理以及Python代码实现
Geeksongs
机器学习 python 机器学习 深度学习 人工智能 算法
Stacking集成学习在各类机器学习竞赛当中得到了广泛的应用,尤其是在结构化的机器学习竞赛当中表现非常好。今天我们就来介绍下stacking这个在机器学习模型融合当中的大杀器的原理。并在博文的后面附有相关代码实现。总体来说,stacking集成算法主要是一种基于“标签”的学习,有以下的特点:用法:模型利用交叉验证,对训练集进行预测,从而实现二次学习优点:可以结合不同的模型缺点:增加了时间开销,容
使用Seaborn绘制水平小提琴图
YOUFDJ
python 开发语言 Python
使用Seaborn绘制水平小提琴图水平小提琴图是一种常用的数据可视化工具,可以用于展示不同类别之间的分布情况。在Python中,我们可以使用Seaborn库的catplot函数来轻松地绘制水平小提琴图。本文将介绍如何使用Seaborn绘制水平小提琴图,并附带相应的源代码示例。首先,确保你已经安装了Seaborn库。如果没有安装,可以使用以下命令在命令行中安装:pipinstallseaborn安装
Python文件与格式化:编程世界的“读写之道“(技术深挖版)
被窝妄想家
python进阶指南 python 数据库 开发语言
一、文件操作:Python的"读写之眼"1.1文件基础哲学在计算机世界中,文件就像一本本等待翻阅的典籍。Python的open()函数如同手持放大镜,让我们能精确控制阅读和书写:#经典打开模式组合withopen("data.txt","r+",encoding="utf-8")asf:#r+模式:可读可写,文件指针初始位置在开头content=f.read(10)#读取前10个字节f.seek(
使用Seaborn绘制小提琴图
CodeWG
python 开发语言
使用Seaborn绘制小提琴图在数据分析与可视化中,小提琴图是一种常用的图表类型。它能够展示数据的分布情况,同时还能显示中位数、四分位数和异常值等统计指标。在Python中,我们可以使用Seaborn库来轻松地绘制小提琴图。下面就来详细介绍一下如何使用Seaborn来创建小提琴图。首先,我们需要导入必要的库和数据集。这里我们使用Seaborn自带的数据集tips作为例子。importseaborn
Elasticsearch + Docker:实现容器化部署指南
IT成长日记
elasticsearch docker 容器化部署
Elasticsearch是一款强大的分布式搜索和分析引擎,广泛应用于日志分析、全文检索、实时数据分析等场景。而Docker作为一种轻量级的容器化技术,能够帮助开发者快速部署和管理应用。将Elasticsearch与Docker结合,不仅可以简化部署流程,还能提高资源利用率和系统可维护性。1环境准备1.1安装Docker安装操作请参考:Docker入门指南:1分钟搞定安装+常用命令,轻松入门容器化
python实际应用场景代码
yzx991013
python 前端 服务器
1.自动化文件整理importosimportshutildeforganize_downloads_folder():download_path="/Users/YourName/Downloads"#修改为你的下载路径file_types={"Images":[".jpg",".png",".gif"],"Documents":[".pdf",".docx",".txt"],"Videos":
python大赛对名_用100行Python爬虫代码抓取公开的足球数据玩(一)
司马各
python大赛对名
在《用Python模拟2018世界杯夺冠之路》一文中,我选择从公开的足球网站用爬虫抓取数据,从而建模并模拟比赛,但是略过了爬虫的实施细节。虽然爬虫并不难做,但希望可以让更多感兴趣的朋友自己动手抓数据下来玩,提供便利,今天就把我抓取球探网的方法和Python源码拿出来分享给大家,不超过100行代码。希望球友们能快速get爬虫的技能。#-*-coding:utf-8-*-from__future__i
从入门到进阶:Python数据可视化实战技巧
Blossom.118
分布式系统与高性能计算领域 信息可视化 python 开发语言 网络协议 spring boot java 后端
在数据分析和数据科学领域,数据可视化是将复杂数据以直观图形展示的重要手段。Python作为数据科学领域的首选语言之一,提供了强大的数据可视化库,如Matplotlib、Seaborn、Plotly等。本文将从入门到进阶,逐步介绍Python数据可视化的实战技巧,帮助读者快速提升数据可视化能力。一、入门:Matplotlib基础Matplotlib是Python中最基础、最强大的数据可视化库之一。它
【人工智能】大模型的幻觉问题:DeepSeek 的解决策略与实践
蒙娜丽宁
Python杂谈 人工智能 人工智能
《PythonOpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界大语言模型(LLM)的“幻觉”问题,即模型生成与事实不符或脱离上下文的内容,是限制其广泛应用的关键挑战之一。本文深入探讨了幻觉问题的成因,包括训练数据的偏差、推理过程中的过度泛化以及缺乏外部验证机制。以DeepSeek系列模型为研究对象,我们分析了其在解
wooyun知识库爬虫(自动整理保存为pdf)
大囚长
编程人生 黑客帝国 spider python
#!C:\Python27\python.exe#coding=utf8importosimportpdfkitimporturllib2frombs4importBeautifulSoupfrommultiprocessingimportPoolimportsocketsocket.setdefaulttimeout(60)importsysreload(sys)sys.setdefaulten
HCIA-AI人工智能笔记3:数据预处理
噗老师
华为认证 人工智能 笔记 wpf 数据处理 AI 华为认证
统讲解数据预处理的核心技术体系,通过Python/Pandas与华为MindSpore双视角代码演示,结合特征工程优化实验,深入解析数据清洗、标准化、增强等关键环节。一、数据预处理技术全景图graphTDA[原始数据]-->B{数据清洗}B-->B1[缺失值处理]B-->B2[异常值检测]B-->B3[重复值删除]A-->C{特征工程}C-->C1[标准化/归一化]C-->C2[离散化分箱]C--
[星球大战]阿纳金的背叛
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