1.前言
日本动漫凭着剧情的创新和趣味性在全球占有着重要地位,一般日漫新番播出的时间在一、四、七、十这四个月份上面。
正处于2021年年末,大家大多都对即将开播的一月新番还不了解,本次爬虫实战则是爬取一月新番数据,在本次实战中,yuc.wiki网站中对动漫的数据整理比较齐全,所以博主选择了yuc.wiki进行新番数据爬取。
在本次实验中,所得数据仅进行学习交流使用,建议大家合理使用爬虫。
1.1流程介绍
导入库->爬取网站->在爬取网站的过程中逐一解析数据->数据保存->数据分析->数据的可视化,在本次中,数据的可视化通过flask,对数据进行html的展示
def main():
baseurl = "https://yuc.wiki/202201/"
#1.爬取网页 2.在爬取数据过程中逐一解析数据
datalist = getData(baseurl)
dbpath = "anime_1month.db"
#3.保存数据
saveData(datalist,dbpath)
#创建正则表达式
#爬取网页与逐一解析数据
def getData(baseurl):
#得到一个网页的数据
def askURL(url):
#保存数据
def saveData(datalist,dbpath):
def init_db(dbpath):
if __name__ == "__main__":
main()
print("爬取完毕!")
#数据的可视化
from flask import Flask,render_template
import sqlite3
app = Flask(__name__)
@app.route('/')
def index():
if __name__ == '__main__':
app.run()
2.数据爬取
2.1对网页获取基本的信息
打开需要爬取的网页,按F12,点击网络(不同浏览器中,按F12后可能布局不太一样,此处以火狐浏览器为例),
对网页进行刷新操作,点击左侧任意栏,找到右侧的user-agent一栏对其复制(注意去除其中的空格)
2.2对爬虫进行伪装
def askURL(url):
head = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.43"
}#模拟头部,进行伪装
#此处User-Agent的内容为前一步中复制的内容
request = urllib.request.Request(url,headers=head)
html = ""
try:
response = urllib.request.urlopen(request)
html = response.read().decode("utf-8")
#print(html)
except urllib.error.URLError as e:
if hasattr(e,"code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)
return html
2.3正则表达式
在本次中,因为网站中对同一类数据使用了多种标签,因此此处正则表达式较多。正则表达式可以对爬取到的数据进行信息匹配、筛选,在处理后则会得到自己想要的数据信息。标签的信息可以在网页中按F12->查看器,即可看到自己想要爬取的数据的标签。
#创建正则表达式,表示规则
#片名
findNameA = re.compile(r'(.*)
')
findNameB = re.compile(r'(.*)
')
findNameC = re.compile(r'(.*)
')
# PV链接
findPVLink = re.compile(r'a.*href="(.*)" target="_blank">PV',re.S)#re.S表示忽略其中的换行符
#播放时间
findTime = re.compile(r'(.*?)
')
#番剧性质
findTypeA = re.compile(r'(.*) ') #原创动画
findTypeB = re.compile(r' (.*) ') #漫画改编
findTypeBB = re.compile(r' (.*) ')
findTypeBBB = re.compile(r' (.*) ')
findTypeC = re.compile(r' (.*) ') #小说改编
findTypeCC = re.compile(r' (.*) ')
findTypeD = re.compile(r' (.*) ') #游戏改编
findTypeE = re.compile(r' (.*) ') #其他题材
#番剧类型(标签)
findBQA = re.compile(r' (.*) ')
findBQB = re.compile(r'(.*) ')
2.4爬取网页并逐一解析数据
def getData(baseurl):
datalist = []
url = baseurl
html = askURL(url)#保存获取的网页源码
# 2.逐一解析数据
soup = BeautifulSoup(html,"html.parser")
for tbody in soup.find_all('table',width="500px"):#查找符合要求的字符串,行形成列表
#print(tbody) #对爬取的一个番剧的信息进行输出测试
data = [] #保存一个番剧的所有信息
tbody = str(tbody)
NameA = re.findall(findNameA,tbody) #re库来通过正则表达式查找指定字符串
if len(NameA) == 0:
NameB = re.findall(findNameB,tbody)
if len(NameB) == 0:
NameC = re.findall(findNameC,tbody)
Name = ''.join(NameC)
Name = re.sub(' ', "", str(Name))
data.append(Name)
else:
Name = ''.join(NameB)
Name = re.sub(' ', "", str(Name))
data.append(Name)#片名
else:
Name = ''.join(NameA)
Name = re.sub(' ', "", str(Name))
data.append(Name)
# print(Name)
TypeA = re.findall(findTypeA, tbody)
if len(TypeA) == 0:
TypeB = re.findall(findTypeB,tbody)
if len(TypeB) == 0:
TypeC = re.findall(findTypeC, tbody)
if len(TypeC) == 0:
TypeD = re.findall(findTypeD,tbody)
if len(TypeD) == 0:
TypeBB = re.findall(findTypeBB, tbody)
if len(TypeBB) == 0:
TypeBBB = re.findall(findTypeBBB, tbody)
if len(TypeBBB) == 0:
TypeCC = re.findall(findTypeCC, tbody)
if len(TypeCC) == 0:
TypeE = re.findall(findTypeE,tbody)
Type = ''.join(TypeE)
Type = re.sub(' ',"",str(Type))
data.append(str(Type))
else:
Type = ''.join(TypeCC)
data.append(str(Type))
else:
Type = ''.join(TypeBBB)
data.append(str(Type))
else:
Type = ''.join(TypeBB)
data.append(str(Type))
else:
Type = ''.join(TypeD)
data.append(str(Type))
else:
Type = ''.join(TypeC)
data.append(str(Type))
else:
Type = ''.join(TypeB)
data.append(str(Type))
else:
Type = ''.join(TypeA)
data.append(str(Type))#性质
BQA = re.findall(findBQA,tbody)
if len(BQA) == 0:
BQB = re.findall(findBQB, tbody)
BQS = ''.join(BQB)
BQS = re.sub('/', " ", str(Type))
data.append(str(BQS))#标签
else:
BQS = ''.join(BQA)
BQS = re.sub(' ', "", str(BQS))
BQS = re.sub('/', " ", str(BQS))
data.append(str(BQS))
Time = re.findall(findTime,tbody)[0]
if Time != '':
if Time != '':
Time = re.sub('/', ".", str(Time))
data.append(Time)
else:
data.append('暂无播放时间') # 播放时间
else:
data.append('暂无播放时间')
PVLink = re.findall(findPVLink,tbody)
if len(PVLink) != 0:
PVLink = ''.join(PVLink)
data.append(str(PVLink))#PV播放链接
else:
data.append("") #留空
datalist.append(data) #把一部番剧数据放入datalist
#print(datalist) #输出测试
return datalist
3.数据存储
3.1数据库(表)建立
在数据进行存储前,我们先创建表,此处为定义函数创建表的内容
def init_db(dbpath):
sql = '''
create table anime_1month
(
id integer primary key autoincrement,
anime_name varchar,
anime_type varchar,
anime_bq varchar,
anime_time varchar,
anime_link varchar
)
'''#创建数据库
conn = sqlite3.connect(dbpath)
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()
conn.close()
3.2数据存储
#保存数据
def saveData(datalist,dbpath):
init_db(dbpath)#此处进行前面的创建过程
conn = sqlite3.connect(dbpath)
cur = conn.cursor()
for data in datalist:
for index in range(len(data)):
data[index] = '"'+data[index]+'"'
sql = '''insert into anime_1month(
anime_name,anime_type,anime_bq,anime_time,anime_link)
values(%s)'''%",".join(data)
print(sql)
cur.execute(sql)
conn.commit()
cur.close()
conn.close()
在存储后可打开数据库进行数据的查看
共计41条数据,数据无误。
4.数据分析与可视化
4.1数据分析
通过爬取的41条信息,我们可以分析到,新番类型是漫画改编最多,这也说明了目前日本主流仍旧是漫画进行动漫化,对于日本的动漫产业,漫画具有一定的基础粉丝,进行动漫化的具有更高的收益价值并且风险较低。
4.2可视化
在本次数据可视化中利用了在网上下载的现成CSS样式,可在模板之家等网站中下载。
新建一个flask项目
from flask import Flask,render_template
import sqlite3
app = Flask(__name__)
@app.route('/')
def index(): # put application's code here
datalist = []
con = sqlite3.connect("anime_1month.db")
cur = con.cursor()
sql = "select * from movie41"
data = cur.execute(sql)
for item in data:
datalist.append(item)
cur.close()
con.close()
return render_template("index.html",movies = datalist)
if __name__ == '__main__':
app.run()
在下载的模板中打开index.html文件,删除部分不需要的元素,并对其中的图片进行替换,对部分文字进行修改
代码中仅展示在网页中新添加的内容
序号
动漫名
类型
标签
播放时间
{% for movie in movies %}
{{movie[0]}}
{{ movie[1] }}
{{movie[2]}}
{{movie[3]}}
{{movie[4]}}
{% endfor %}
网页截图1:此部分截图为修改html中的文字和图片实现
网页截图2:
同时对动漫名做了超链接,点击名字可以直接跳转到相应的PV链接网站 ,此处截图的代码为新添加内容
你可能感兴趣的:(python,爬虫,数据挖掘)
python本地连接minio
伶星37
python 网络 服务器
在你浏览器能成功访问到你的minio网页,并且成功登录之后。接下来如果你想用python连接数据库,并且想用python连接minio,就可以用这个blog。连接代码client=Minio("localhost:9000",#9000是默认端口号access_key="admin",#你的账户secret_key="password",#你的密码secure=False,#这点我会详细说明)为什
逆向爬虫-筑基篇-第二层-壹-计算机网络和因特网-008
蓝花楹下
逆向爬虫 计算机网络 网络
第二层网络初探计算机网络和因特网计算机网络与因特网之史分组交换之兴:1961-1972昔时,电话网为天下通信之主宰,其以电路交换之术,使语音恒速传于发收之间。然至20世纪60年代,计算机之重要日增,分时计算机亦现于世。彼时,智者思虑如何将计算机相连,使地理分布之用户共享其能。用户之流量,多具突发之性,如发一令于远机,继而静待其应,或思其答。当此之时,天下有三组智者,各自发明分组交换之术,以代电路交
头歌实践教学平台 Python程序设计 实训答案(三)
学习的锅
头哥实践教学平台实训答案 python
第七阶段文件实验一文本文件的读取第1关:学习-Python文件之文本文件的读取任务描述本关任务:使用open函数以只写的方式打开文件,打印文件的打开方式。相关知识为了完成本关任务,你需要掌握:文本文件;open函数及其参数;文件打开模式;文件对象常用属性;关闭文件close函数。#请在下面的Begin-End之间按照注释中给出的提示编写正确的代码##########Begin###########
python基础之--面相对象--OOP基本特性
暴龙胡乱写博客
python 开发语言 人工智能
python基础之–面相对象–OOP基本特性文章目录python基础之--面相对象--OOP基本特性一,OOP基本特性1.1封装1.2继承/派生1.2.1基础概念1.2.3继承实现1.3多态1.4对象对成员的操作(补充)1.5私有属性1.6重写魔术方法二,super函数2.1基本使用2.2super().\__init__()一,OOP基本特性OOP的四大基本特性是封装、继承、多态和抽象。1.1封
Dify1.01版本vscode 本地环境搭建运行实践
hamish-wu
vscode 编辑器 dify 大模型 python flask
dify是python编写的低代码AI开发平台,是常用的大模型开发平台。本文基于最新的1.0.1版本实践完成,有需要的可以私信交流。咨询免费,详细文档及视频需要一定成本,大概相当于节约的时间成本。搭建环境windows11开发工具vscode搭建步骤:1.Startthedocker-composestackwindow环境下运行docker命令,需要下载docker官网镜像,会遇到timeout
vscode python 入门教程(一) window 10 环境下安装pyenv
hamish-wu
Python python 开发语言 pyenv
python的环境配置方法很多,由于python有两个大版本,很多时候需要切换某个固定的版本才能运行三方包,所以推荐使用pyenv配置python环境变量pyenv的安装安装方法:Invoke-WebRequest-UseBasicParsing-Uri"https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/i
mongodb与爬虫的关系
getapi
mongodb 爬虫 数据库
MongoDB与爬虫之间的关系主要体现在数据存储和管理的层面。爬虫(WebCrawler或Spider)是一种自动化工具,用于从互联网上抓取网页内容或特定数据。而MongoDB是一个NoSQL数据库,常被用来存储和管理爬虫抓取到的数据。以下是它们之间关系的具体分析:1.爬虫的数据存储需求爬虫在运行过程中会抓取大量的非结构化或半结构化数据(例如HTML页面、JSON数据、图片链接等)。这些数据通常具
1-5 Python 入门之运算符的使用
Sa_sa_ki_Haise
python
第1关:算术、比较、赋值运算符100任务要求参考答案评论201任务描述相关知识算术运算符比较(关系)运算符赋值运算符编程要求测试说明任务描述在编程时,我们常常需要对数值或对象进行算术、比较运算和赋值运算,以此来实现我们的功能需求。本关介绍Python中的一些基本运算符,并要求对给定的苹果和梨的数量进行算术运算、比较、赋值运算,然后输出相应的结果。相关知识要实现上述功能,需要用到Python中的各种
rabbitmq + minio +python 上传文件
伶星37
rabbitmq python ruby
功能实现RabbitMq接收hello里面传来的消息根据消息在MobileFile里面新建文件新建文件上传到miniopython新建文件importospath='./MobileFile'file_path=os.path.join(path,"new_file.txt")withopen(file_path,"w")asfile:pass转换成函数格式importosdefcreatefil
vscode python 入门教程(二) vscode使用gti 管理代码
hamish-wu
vscode ide 编辑器
vscode代码管理需要用管道git的命令,这点和idea的代码管理区别比较大。作为java开发需要自己熟悉适应一下。一、GitHub新建一个仓库过程略二、本地git项目初始化gitinitvscode中可以看到文件状态gitstatus使用gitremote命令吧本地git仓库和远程git仓库链接起来
[email protected] 提交代码gitcommit-m"评论
Python进阶之-加密库cryptography使用详解
夏天Aileft
Python python 网络 加密
✨前言cryptography库是一个强大的Python加密库,提供了对加密算法和协议的高层和低层访问。它是用来实现数据加密、签名、密钥管理等功能的。以下是一些常见用法的详解,帮助你理解如何使用这个库。✨安装首先,你需要确保安装了cryptography库:pipinstallcryptography✨1.对称加密对称加密是指加密和解密使用相同的密钥。Fernet是cryptography库中提供
python列表添加元素的三种方法定义集合数据对象_python 学习第三天 可迭代对象(列表,字典,元组和集合)...
weixin_39852491
列表,字典,元组和集合列表list列表是由一系列特定元素组成的,元素和元素之间没有任何关联关系,但他们之间有先后顺序关系列表是一种容器列表是序列的一种列表是可以被改变的序列Python中的序列类型简介(sequence)字符串(str)列表(list)元组(tuple)字节串(bytes)字节数组(bytearray)创建空列表的字面值L=[]#L绑定空列表创建非空列表:L=[1,’two’,3,
python~集合详解
鱼跃龙
python python集合详解 set集合
集合的基本操作首先需要明确的是:集合(set)是一个无序的不重复元素序列,多用来进行排重;不支持切片和索引取值!1.创建集合>>>a={1,2,4,4}>>>a{1,2,4}>>>type(a)**创建空集合时需要注意:不能直接用大括号,只能用set();否则创建的是一个字典>>>b=set()>>>type(b)>>>c={}>>>type(c)2.添加元素add()方法是将要添加的元素作为一个
Python密码学:cryptography库
零 度°
python python 密码学
在数字时代,确保数据的安全性和隐私至关重要。Python中的cryptography库是一个全面的包,为Python开发者提供了密码学原语和配方。它支持高级配方和常见密码学算法的低级接口。cryptography库概述cryptography库旨在易于使用且默认安全。它包括各种密码学操作的高级和低级API,如:对称加密非对称加密哈希函数消息认证码(MAC)数字签名密钥管理cryptography库
Python---frozenset集合
爱听雨声的北方汉
快快乐乐学Python Python
frozenset是set的不可变版本,因此set集合中所有能改变集合本身的方法(如add、remove、discard、xxx_update等),frozenset都不支持;set集合中不改变集合本身的方法,fronzenset都支持。frozenset的作用主要有以下两点:1、当集合元素不需要改变时,使用frozenset代替set更安全。2、当某些API需要不可变对象时,必须用frozens
(python)保障信息安全的加密库-cryptography
Marst·Zhang
基础知识 实用工具 python
前言cryptography是一个广泛使用的Python加密库,提供了各种加密、哈希和签名算法的实现。它支持多种加密算法,如AES、RSA、ECC等,以及哈希函数(如SHA-256、SHA-384等)和数字签名算法(如DSA、ECDSA等).目录常见用途密码学函数主要功能优点缺点总结常见用途数据加密使用对称加密算法(如AES)对数据进行加密,确保数据在传输或存储过程中的机密性。数字签名生成和验证数
Python if-else对缩进的要求
宇寒风暖
python编程 python 开发语言 学习 笔记
在Python中,缩进是语法的一部分,用于表示代码块的层次结构。if-else语句的代码块必须通过缩进来定义,缩进不正确会导致语法错误或逻辑错误。1.缩进的基本规则1.1缩进的作用缩进用于表示代码块的层次结构。同一代码块中的语句必须具有相同的缩进级别。缩进通常使用4个空格,这是Python官方推荐的风格。1.2示例x=10ifx>5:print("x大于5")#缩进4个空格print("这是if代
一文弄懂 Python assert 断言
宇寒风暖
python编程 python 开发语言 学习 笔记
在Python中,assert是一种用于调试的语句,用于检查某个条件是否为True。如果条件为False,assert会抛出AssertionError异常,并可选地输出错误信息。assert通常用于在开发阶段验证程序的假设条件,确保代码的正确性。1.assert的基本语法1.1语法assertcondition,messagecondition:需要检查的条件表达式。message:可选参数,当
开源项目常见问题解决方案——cryptography
周屹隽
开源项目常见问题解决方案——cryptographycryptographycryptographyisapackagedesignedtoexposecryptographicprimitivesandrecipestoPythondevelopers.项目地址:https://gitcode.com/gh_mirrors/cr/cryptography项目基础介绍cryptography是一个
python 利用pandas实现从CSV导出并格式化后写入.jsonl文件
风_流沙
python工具备忘录 python pandas 开发语言
你可以使用pandas库来读取CSV文件,然后通过一些格式化操作将数据转换为JSONL格式并写入文件。JSONL(JSONLines)格式是一种每行一个JSON对象的文件格式。下面是一个示例,演示了如何使用pandas读取CSV文件,处理数据并将其导出到JSONL文件中:示例代码:importpandasaspdimportjson#读取CSV文件df=pd.read_csv('data.csv'
Python文件加密库之cryptography使用详解
Rocky006
python 开发语言
概要在现代信息社会中,数据的安全性变得越来越重要。为了保护敏感信息,文件加密技术被广泛应用。Python的cryptography库提供了强大的加密功能,可以轻松实现文件加密和解密。本文将详细介绍如何使用cryptography库进行文件加密,包含具体的示例代码。cryptography库简介cryptography是Python中一个功能强大且易用的加密库,提供了对称加密、非对称加密、哈希算法、
【Python系列】高效Parquet数据处理策略:合并与分析实践
小团团0
python 开发语言
在大数据时代,数据的存储、处理和分析变得尤为重要。Parquet作为一种高效的列存储格式,被广泛应用于大数据处理框架中,如ApacheSpark、ApacheHive等。Parquet是一个开源的列存储格式,它被设计用于支持复杂的嵌套数据结构,同时提供高效的压缩和编码方案,以优化存储空间和查询性能。以下将详细介绍如何使用Python对Parquet文件进行数据处理与合并,并提供相应的源码示例。一、
cryptography,一个神奇的 Python 库!
Sitin涛哥
Python python 开发语言
更多资料获取个人网站:ipengtao.com大家好,今天为大家分享一个神奇的Python库-cryptography。Github地址:https://github.com/pyca/cryptography在当今数字化时代,信息安全越来越受到重视。数据加密是保护数据安全的重要手段之一,而Python的cryptography库提供了丰富的功能来支持各种加密算法和协议。本文将深入探讨crypto
深度讨论Python for循环
观智能
python 开发语言
作者的其他文章推荐:强化学习再受关注!for循环使用于遍历可迭代对象的Python语句,工作原理如下:#for循环foriteminiterable:print(item)#等价于iterator=iter(iterable)#获取迭代器whileTrue:try:item=next(iterator)#获取下一个元素print(item)exceptStopIteration:break#迭代结
Python第六章08:元组操作练习题
苹果.Python.八宝粥
python 开发语言
#元组定义操作练习题"""定义一个元组,内容是:('周杰伦',11,['football','music']),记录一个学生的信息(姓名、年龄、爱好)请通元组(tuple)的功能,对其进行如下操作:1.查询其年龄所在的下标位置2.查询学生的姓名3.删除学生爱好中的football4.增加爱好:coding"""my_tuple=('周杰伦',11,['football','music'])#1.查
Python第六章07:元组的定义和操作
苹果.Python.八宝粥
python 前端 开发语言
#tuple元组的定义和操作#tuple元组定义用小括号:(1,2,3,4,5),可以是不同类型元素#给变量定义元组时,写括号不写tuple:a=(1,2,3,4,5)#变量=()变量=tuple()空元组变量#tuple元组定义完成后,不可以修改,但是,如果元组中嵌套了一个列表时,元组中列表的内容可以修改#封装数据后,不希望被篡改数据,就使用元组tuple#1.定义一个元组t1=("halibo
利用Python爬虫获取Shopee(虾皮)商品详情:实战指南
小爬虫程序猿
python 爬虫 开发语言
在跨境电商领域,Shopee(虾皮)作为东南亚及台湾地区领先的电商平台,拥有海量的商品信息。无论是进行市场调研、数据分析,还是寻找热门商品,获取Shopee商品详情都是一项极具价值的任务。然而,手动浏览和整理这些信息显然是低效且容易出错的。幸运的是,通过编写Python爬虫程序,我们可以高效地完成这一任务。本文将详细介绍如何利用Python爬虫获取Shopee商品详情,并提供完整的代码示例。一、为
在Mac M1/M2芯片上完美安装DeepCTR库:避坑指南与实战验证
ku_code_ku
机器学习 macos 推荐算法 推荐系统
让推荐算法在AppleSilicon上全速运行概述作为推荐系统领域的最经常用的明星库,DeepCTR集成了CTR预估、多任务学习等前沿模型实现。但在AppleSilicon架构的Mac设备上,安装过程常因ARM架构适配、依赖库版本冲突等问题受阻。本文通过20+次环境搭建实测,总结出最稳定的安装方案。关键版本说明(2024年验证)组件推荐版本注意事项Python3.10.x向下兼容至3.7,但3.1
数据库数值函数详解
web安全工具库
数据库 oracle jvm
各类资料学习下载合集https://pan.quark.cn/s/8c91ccb5a474数值函数是数据库中用于处理数值数据的函数,可以用于执行各种数学运算、统计计算等。数值函数在数据分析及处理时非常重要,能够帮助我们进行数据的聚合、计算和转换。在本篇博客中,我们将详细介绍常用的数据库数值函数,并通过Python和SQLite进行示例,帮助您理解和应用这些函数。1.数值函数的基本概念数值函数是用于
Python中Requests的Cookies的简单使用
北条苒茗殇
python 开发语言 Requests
概述Python的Requests库中有一个cookies,是用于管理HTTPCookie的工具,可以像字典一样操作Cookie,支持自动处理作用域(域名、路径)和持久化,cookies是一个RequestsCookieJar的类型。一、概念1.作用自动存储服务器返回的Cookie根据请求域名和路径进行自动发送匹配的Cookie支持手动添加、修改、删除Cookie2.RequestsCookieJ
对于规范和实现,你会混淆吗?
yangshangchuan
HotSpot
昨晚和朋友聊天,喝了点咖啡,由于我经常喝茶,很长时间没喝咖啡了,所以失眠了,于是起床读JVM规范,读完后在朋友圈发了一条信息:
JVM Run-Time Data Areas:The Java Virtual Machine defines various run-time data areas that are used during execution of a program. So
android 网络
百合不是茶
网络
android的网络编程和java的一样没什么好分析的都是一些死的照着写就可以了,所以记录下来 方便查找 , 服务器使用的是TomCat
服务器代码; servlet的使用需要在xml中注册
package servlet;
import java.io.IOException;
import java.util.Arr
[读书笔记]读法拉第传
comsci
读书笔记
1831年的时候,一年可以赚到1000英镑的人..应该很少的...
要成为一个科学家,没有足够的资金支持,很多实验都无法完成
但是当钱赚够了以后....就不能够一直在商业和市场中徘徊......
随机数的产生
沐刃青蛟
随机数
c++中阐述随机数的方法有两种:
一是产生假随机数(不管操作多少次,所产生的数都不会改变)
这类随机数是使用了默认的种子值产生的,所以每次都是一样的。
//默认种子
for (int i = 0; i < 5; i++)
{
cout<<
PHP检测函数所在的文件名
IT独行者
PHP 函数
很简单的功能,用到PHP中的反射机制,具体使用的是ReflectionFunction类,可以获取指定函数所在PHP脚本中的具体位置。 创建引用脚本。
代码:
[php]
view plain
copy
// Filename: functions.php
<?php&nbs
银行各系统功能简介
文强chu
金融
银行各系统功能简介 业务系统 核心业务系统 业务功能包括:总账管理、卡系统管理、客户信息管理、额度控管、存款、贷款、资金业务、国际结算、支付结算、对外接口等 清分清算系统 以清算日期为准,将账务类交易、非账务类交易的手续费、代理费、网络服务费等相关费用,按费用类型计算应收、应付金额,经过清算人员确认后上送核心系统完成结算的过程 国际结算系
Python学习1(pip django 安装以及第一个project)
小桔子
python django pip
最近开始学习python,要安装个pip的工具。听说这个工具很强大,安装了它,在安装第三方工具的话so easy!然后也下载了,按照别人给的教程开始安装,奶奶的怎么也安装不上!
第一步:官方下载pip-1.5.6.tar.gz, https://pypi.python.org/pypi/pip easy!
第二部:解压这个压缩文件,会看到一个setup.p
php 数组
aichenglong
PHP 排序 数组 循环 多维数组
1 php中的创建数组
$product = array('tires','oil','spark');//array()实际上是语言结构而不 是函数
2 如果需要创建一个升序的排列的数字保存在一个数组中,可以使用range()函数来自动创建数组
$numbers=range(1,10)//1 2 3 4 5 6 7 8 9 10
$numbers=range(1,10,
安装python2.7
AILIKES
python
安装python2.7
1、下载可从 http://www.python.org/进行下载#wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
2、复制解压
#mkdir -p /opt/usr/python
#cp /opt/soft/Python-2
java异常的处理探讨
百合不是茶
JAVA异常
//java异常
/*
1,了解java 中的异常处理机制,有三种操作
a,声明异常
b,抛出异常
c,捕获异常
2,学会使用try-catch-finally来处理异常
3,学会如何声明异常和抛出异常
4,学会创建自己的异常
*/
//2,学会使用try-catch-finally来处理异常
getElementsByName实例
bijian1013
element
实例1:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/x
探索JUnit4扩展:Runner
bijian1013
java 单元测试 JUnit
参加敏捷培训时,教练提到Junit4的Runner和Rule,于是特上网查一下,发现很多都讲的太理论,或者是举的例子实在是太牵强。多搜索了几下,搜索到两篇我觉得写的非常好的文章。
文章地址:http://www.blogjava.net/jiangshachina/archive/20
[MongoDB学习笔记二]MongoDB副本集
bit1129
mongodb
1. 副本集的特性
1)一台主服务器(Primary),多台从服务器(Secondary)
2)Primary挂了之后,从服务器自动完成从它们之中选举一台服务器作为主服务器,继续工作,这就解决了单点故障,因此,在这种情况下,MongoDB集群能够继续工作
3)挂了的主服务器恢复到集群中只能以Secondary服务器的角色加入进来
2
【Spark八十一】Hive in the spark assembly
bit1129
assembly
Spark SQL supports most commonly used features of HiveQL. However, different HiveQL statements are executed in different manners:
1. DDL statements (e.g. CREATE TABLE, DROP TABLE, etc.)
Nginx问题定位之监控进程异常退出
ronin47
nginx在运行过程中是否稳定,是否有异常退出过?这里总结几项平时会用到的小技巧。
1. 在error.log中查看是否有signal项,如果有,看看signal是多少。
比如,这是一个异常退出的情况:
$grep signal error.log
2012/12/24 16:39:56 [alert] 13661#0: worker process 13666 exited on s
No grammar constraints (DTD or XML schema).....两种解决方法
byalias
xml
方法一:常用方法 关闭XML验证
工具栏:windows => preferences => xml => xml files => validation => Indicate when no grammar is specified:选择Ignore即可。
方法二:(个人推荐)
添加 内容如下
<?xml version=
Netty源码学习-DefaultChannelPipeline
bylijinnan
netty
package com.ljn.channel;
/**
* ChannelPipeline采用的是Intercepting Filter 模式
* 但由于用到两个双向链表和内部类,这个模式看起来不是那么明显,需要仔细查看调用过程才发现
*
* 下面对ChannelPipeline作一个模拟,只模拟关键代码:
*/
public class Pipeline {
MYSQL数据库常用备份及恢复语句
chicony
mysql
备份MySQL数据库的命令,可以加选不同的参数选项来实现不同格式的要求。
mysqldump -h主机 -u用户名 -p密码 数据库名 > 文件
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > ba
小白谈谈云计算--基于Google三大论文
CrazyMizzz
Google 云计算 GFS
之前在没有接触到云计算之前,只是对云计算有一点点模糊的概念,觉得这是一个很高大上的东西,似乎离我们大一的还很远。后来有机会上了一节云计算的普及课程吧,并且在之前的一周里拜读了谷歌三大论文。不敢说理解,至少囫囵吞枣啃下了一大堆看不明白的理论。现在就简单聊聊我对于云计算的了解。
我先说说GFS
&n
hadoop 平衡空间设置方法
daizj
hadoop balancer
在hdfs-site.xml中增加设置balance的带宽,默认只有1M:
<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>10485760</value>
<description&g
Eclipse程序员要掌握的常用快捷键
dcj3sjt126com
编程
判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。 曾有人在豆瓣评
《卓有成效的程序员》:“人有多大懒,才有多大闲”。之前我整理了一个
程序员图书列表,目的也就是通过读书,让程序员变懒。 程序员作为特殊的群体,有的人可以这么懒,懒到事情都交给机器去做,而有的人又可以那么勤奋,每天都孜孜不倦得
Android学习之路
dcj3sjt126com
Android学习
转自:http://blog.csdn.net/ryantang03/article/details/6901459
以前有J2EE基础,接触JAVA也有两三年的时间了,上手Android并不困难,思维上稍微转变一下就可以很快适应。以前做的都是WEB项目,现今体验移动终端项目,让我越来越觉得移动互联网应用是未来的主宰。
下面说说我学习Android的感受,我学Android首先是看MARS的视
java 遍历Map的四种方法
eksliang
java HashMap java 遍历Map的四种方法
转载请出自出处:
http://eksliang.iteye.com/blog/2059996
package com.ickes;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
/**
* 遍历Map的四种方式
【精典】数据库相关相关
gengzg
数据库
package C3P0;
import java.sql.Connection;
import java.sql.SQLException;
import java.beans.PropertyVetoException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBPool{
自动补全
huyana_town
自动补全
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml&quo
jquery在线预览PDF文件,打开PDF文件
天梯梦
jquery
最主要的是使用到了一个jquery的插件jquery.media.js,使用这个插件就很容易实现了。
核心代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.
ViewPager刷新单个页面的方法
lovelease
android viewpager tag 刷新
使用ViewPager做滑动切换图片的效果时,如果图片是从网络下载的,那么再子线程中下载完图片时我们会使用handler通知UI线程,然后UI线程就可以调用mViewPager.getAdapter().notifyDataSetChanged()进行页面的刷新,但是viewpager不同于listview,你会发现单纯的调用notifyDataSetChanged()并不能刷新页面
利用按位取反(~)从复合枚举值里清除枚举值
草料场
enum
以 C# 中的 System.Drawing.FontStyle 为例。
如果需要同时有多种效果,
如:“粗体”和“下划线”的效果,可以用按位或(|)
FontStyle style = FontStyle.Bold | FontStyle.Underline;
如果需要去除 style 里的某一种效果,
Linux系统新手学习的11点建议
刘星宇
编程 工作 linux 脚本
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。这里介绍学习Linux的一些建议。
一、从基础开始:常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了 Linu
hibernate dao层应用之HibernateDaoSupport二次封装
wangzhezichuan
DAO Hibernate
/**
* <p>方法描述:sql语句查询 返回List<Class> </p>
* <p>方法备注: Class 只能是自定义类 </p>
* @param calzz
* @param sql
* @return
* <p>创建人:王川</p>
* <p>创建时间:Jul