学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺。
本文通过爬取豆瓣top250电影学习python requests的使用。
1、准备工作 在pycharm中安装request库 请看上图,在pycharm中依次点击:File->Settings。然后会弹出下图的界面:
点击2中左上角的“+”按钮,弹出下图的界面:
在右上角的查询框输入requests,然后点击“Install Package”按钮安装requests插件。
2、目标 抓取每部电影的名字、主演、评分、图片等信息, 并保存在txt文本文件中。
3、分析豆瓣top250电影首页 1、分析豆瓣电影top250的网页https://movie.douban.com/top250,在浏览器中打开该网页:
可以看到一页显示25部电影。250部电影分10显示:
要抓取250部电影需要抓取10次。下面是每一页的网页链接:
https://movie.douban.com/top250?start=0&filter= 首页,等效于https://movie.douban.com/top250
https://movie.douban.com/top250?start=25&filter= #第2页
https://movie.douban.com/top250?start=50&filter= #第3页
...
...
...
https://movie.douban.com/top250?start=225&filter= #第10页
通过分析上面的链接可以得出一个规律:start=0显示1到25部电影,start=25显示26到50部电影,以此类推,在抓取每一页的电影时,是需要改变start的值即可。
4、抓取豆瓣电影top250首页 代码如下:
import requests
import re
import json
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"}
url = 'https://movie.douban.com/top250?start=0&filter='
proxies = {
"http": "http://123.207.96.189:80"
}
response = requests.get(url, proxies = proxies,headers=headers)
text = response.text
print(text)
通过上述的代码我们可以学习到requests类库中如何使用headers信息和设置代理。 headers头信息和proxies代理信息都是定义为dict词典变量,然后在调用requests.get()方法时传输这个两个参数:
response = requests.get(url, proxies = proxies,headers=headers)
很多网站都有反爬虫的措施,对于没有headers头信息的请求一律认为是爬虫,禁止该请求的访问。因此在每次爬取网页时都需要加上headers头信息。
对于访问过于频繁的请求,客户端的IP会被禁止访问,因此设置代理可以将请求伪装成来自不同的IP,前提是要保证代理的IP地址是有效的。
5、抓取每一部电影的信息
查看网页源代码有两种方式: 通过鼠标右键点击查看“查看源文件”选项,或者通过浏览器的开发者工具选项,然后点击Network查看源码:
下图是一部电影在HTML网页中的显示,我们要做的就是从HTML中提取出电影名称、主演、图片等信息。
提取电影的信息需要用到正则表达式。 通过上图可以看到一部电影的信息对应的源代码是节点,红色框所示。我们先用正则表达式提取到每部电影的所有信息:
regix = ''
class为pic的div节点包含电影的排名和电影图片信息,提取电影排名和电影图片信息的正则表:
regix = '.*?
.*?
(.*?) .*?
'
class为info的div标签中包含了电影的名字、导演和演员等信息,电影名字是在class为hd的div的节点内,
节点内包含的是电影的名字,
节点内包含的是电影的别名,上图中的褐色框部分,因此提取电影名字的正则表达式为:
regix = '.*?
.*?
(.*?) .*?
.*?div
class="info.*?class="hd".*?class="title">(.*?).*?class="other">(.*?)'
class为bd的节点内包含的是电影的导演和主演信息,其中class为“”的p节点内包含的是电影的导演和演员信息,其中还包含了
标签,上图中的紫色框部分,为了提取电影导演和演员的信息,正则表达式改写为:
regix = '.*?
.*?
(.*?) .*?
.*?div
class="info.*?class="hd".*?class="title">(.*?).*?class="other">(.*?).*?.*?
(.*?) (.*?)
'
class为start的div标签中包含的是电影的星级和评分,上图黑色框部分。提取星级和评分的规则和提取电影排名、图片等信息类似,最后提取整个电影信息的正则表达式为:
regix = '.*?
.*?
(.*?) .*?
.*?div class="info.*?class="hd".*?class="title">(.*?).*?class="other">(.*?).*?.*?
(.*?) (.*?)
.*?class="star.*?
.*?span class="rating_num".*?average">(.*?)'
提取一页中所有电影信息的代码如下:
import requests
import re
import json
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"}
url = 'https://movie.douban.com/top250?start=0&filter='
proxies = {
"http": "http://123.207.96.189:80"
}
response = requests.get(url, proxies = proxies,headers=headers)
text = response.text
regix = '.*?
.*?
(.*?) .*?
.*?div class="info.*?class="hd".*?class="title">(.*?).*?class="other">(.*?).*?.*?
(.*?) (.*?)
.*?class="star.*?
.*?span class="rating_num".*?average">(.*?)'
results = re.findall(regix,text,re.S)
for item in results:
print(item)
结果为:
('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.6')
('2', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910813120.jpg', '霸王别姬', ' / 再见,我的妾 / Farewell My Concubine', '\n 导演: 陈凯歌 Kaige Chen 主演: 张国荣 Leslie Cheung / 张丰毅 Fengyi Zha...', '\n 1993 / 中国大陆 香港 / 剧情 爱情 同性\n ', 'rating5-t', '9.6')
('3', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p511118051.jpg', '这个杀手不太冷', ' / 杀手莱昂 / 终极追杀令(台)', '\n 导演: 吕克·贝松 Luc Besson 主演: 让·雷诺 Jean Reno / 娜塔莉·波特曼 ...', '\n 1994 / 法国 / 剧情 动作 犯罪\n ', 'rating45-t', '9.4')
('4', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p510876377.jpg', '阿甘正传', ' / 福雷斯特·冈普', '\n 导演: Robert Zemeckis 主演: Tom Hanks / Robin Wright Penn / Gary Sinise', '\n 1994 / 美国 / 剧情 爱情\n ', 'rating45-t', '9.4')
('5', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p510861873.jpg', '美丽人生', ' / 一个快乐的传说(港) / Life Is Beautiful', '\n 导演: 罗伯托·贝尼尼 Roberto Benigni 主演: 罗伯托·贝尼尼 Roberto Beni...', '\n 1997 / 意大利 / 剧情 喜剧 爱情 战争\n ', 'rating5-t', '9.5')
('6', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p457760035.jpg', '泰坦尼克号', ' / 铁达尼号(港 / 台)', '\n 导演: 詹姆斯·卡梅隆 James Cameron 主演: 莱昂纳多·迪卡普里奥 Leonardo...', '\n 1997 / 美国 / 剧情 爱情 灾难\n ', 'rating45-t', '9.3')
('7', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1606727862.jpg', '千与千寻', ' / 神隐少女(台) / Spirited Away', '\n 导演: 宫崎骏 Hayao Miyazaki 主演: 柊瑠美 Rumi Hîragi / 入野自由 Miy...', '\n 2001 / 日本 / 剧情 动画 奇幻\n ', 'rating45-t', '9.3')
('8', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p492406163.jpg', '辛德勒的名单', ' / 舒特拉的名单(港) / 辛德勒名单', '\n 导演: 史蒂文·斯皮尔伯格 Steven Spielberg 主演: 连姆·尼森 Liam Neeson...', '\n 1993 / 美国 / 剧情 历史 战争\n ', 'rating5-t', '9.5')
('9', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p513344864.jpg', '盗梦空间', ' / 潜行凶间(港) / 全面启动(台)', '\n 导演: 克里斯托弗·诺兰 Christopher Nolan 主演: 莱昂纳多·迪卡普里奥 Le...', '\n 2010 / 美国 英国 / 剧情 科幻 悬疑 冒险\n ', 'rating45-t', '9.3')
('10', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1461851991.jpg', '机器人总动员', ' / 瓦力(台) / 太空奇兵·威E(港)', '\n 导演: 安德鲁·斯坦顿 Andrew Stanton 主演: 本·贝尔特 Ben Burtt / 艾丽...', '\n 2008 / 美国 / 爱情 科幻 动画 冒险\n ', 'rating45-t', '9.3')
('11', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p524964016.jpg', '忠犬八公的故事', ' / 忠犬小八(台) / 秋田犬八千(港)', '\n 导演: 莱塞·霍尔斯道姆 Lasse Hallström 主演: 理查·基尔 Richard Ger...', '\n 2009 / 美国 英国 / 剧情\n ', 'rating45-t', '9.3')
('12', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p579729551.jpg', '三傻大闹宝莱坞', ' / 三个傻瓜(台) / 作死不离3兄弟(港)', '\n 导演: 拉库马·希拉尼 Rajkumar Hirani 主演: 阿米尔·汗 Aamir Khan / 卡...', '\n 2009 / 印度 / 剧情 喜剧 爱情 歌舞\n ', 'rating45-t', '9.2')
('13', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p511146807.jpg', '海上钢琴师', ' / 声光伴我飞(港) / 一九零零的传奇', '\n 导演: 朱塞佩·托纳多雷 Giuseppe Tornatore 主演: 蒂姆·罗斯 Tim Roth / ...', '\n 1998 / 意大利 / 剧情 音乐\n ', 'rating45-t', '9.2')
('14', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910824951.jpg', '放牛班的春天', ' / 歌声伴我心(港) / 唱诗班男孩', '\n 导演: 克里斯托夫·巴拉蒂 Christophe Barratier 主演: 杰拉尔·朱诺 Géra...', '\n 2004 / 法国 瑞士 德国 / 剧情 音乐\n ', 'rating45-t', '9.2')
('15', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2455050536.jpg', '大话西游之大圣娶亲', ' / 西游记完结篇仙履奇缘 / 齐天大圣西游记', '\n 导演: 刘镇伟 Jeffrey Lau 主演: 周星驰 Stephen Chow / 吴孟达 Man Tat Ng...', '\n 1995 / 香港 中国大陆 / 喜剧 爱情 奇幻 冒险\n ', 'rating45-t', '9.2')
('16', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p479682972.jpg', '楚门的世界', ' / 真人Show(港) / 真人戏', '\n 导演: 彼得·威尔 Peter Weir 主演: 金·凯瑞 Jim Carrey / 劳拉·琳妮 Lau...', '\n 1998 / 美国 / 剧情 科幻\n ', 'rating45-t', '9.2')
('17', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2190556185.jpg', '教父', ' / Mario Puzo's The Godfather', '\n 导演: 弗朗西斯·福特·科波拉 Francis Ford Coppola 主演: 马龙·白兰度 M...', '\n 1972 / 美国 / 剧情 犯罪\n ', 'rating45-t', '9.2')
('18', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2539252713.jpg', '龙猫', ' / 邻居托托罗 / 邻家的豆豆龙', '\n 导演: 宫崎骏 Hayao Miyazaki 主演: 日高法子 Noriko Hidaka / 坂本千夏 Ch...', '\n 1988 / 日本 / 动画 奇幻 冒险\n ', 'rating45-t', '9.1')
('19', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2206088801.jpg', '星际穿越', ' / 星际启示录(港) / 星际效应(台)', '\n 导演: 克里斯托弗·诺兰 Christopher Nolan 主演: 马修·麦康纳 Matthew Mc...', '\n 2014 / 美国 英国 加拿大 冰岛 / 剧情 科幻 冒险\n ', 'rating45-t', '9.2')
('20', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1363250216.jpg', '熔炉', ' / 无声呐喊(港) / 漩涡', '\n 导演: 黄东赫 Dong-hyuk Hwang 主演: 孔侑 Yoo Gong / 郑有美 Yu-mi Jeong ...', '\n 2011 / 韩国 / 剧情\n ', 'rating45-t', '9.2')
('21', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2233971046.jpg', '无间道', ' / Infernal Affairs / Mou gaan dou', '\n 导演: 刘伟强 / 麦兆辉 主演: 刘德华 / 梁朝伟 / 黄秋生', '\n 2002 / 香港 / 剧情 犯罪 悬疑\n ', 'rating45-t', '9.1')
('22', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1312700744.jpg', '当幸福来敲门', ' / 寻找快乐的故事(港) / 追求快乐', '\n 导演: 加布里尔·穆奇诺 Gabriele Muccino 主演: 威尔·史密斯 Will Smith ...', '\n 2006 / 美国 / 剧情 传记 家庭\n ', 'rating45-t', '9.0')
('23', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1454261925.jpg', '触不可及', ' / 闪亮人生(港) / 逆转人生(台)', '\n 导演: 奥利维·那卡什 Olivier Nakache / 艾力克·托兰达 Eric Toledano 主...', '\n 2011 / 法国 / 剧情 喜剧\n ', 'rating45-t', '9.2')
('24', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p663036666.jpg', '怦然心动', ' / 萌动青春 / 青春萌动', '\n 导演: 罗伯·莱纳 Rob Reiner 主演: 玛德琳·卡罗尔 Madeline Carroll / 卡...', '\n 2010 / 美国 / 剧情 喜剧 爱情\n ', 'rating45-t', '9.0')
('25', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1963126880.jpg', '乱世佳人', ' / 飘', '\n 导演: 维克多·弗莱明 Victor Fleming / 乔治·库克 George Cukor 主演: 费...', '\n 1939 / 美国 / 剧情 历史 爱情 战争\n ', 'rating45-t', '9.2')
从上面的结果看到电影的星级是rating5-t、rating45-t、rating4-t这样的字符代表五星、四星半、四星等。转换代码为:
def star_transfor(str):
if str == 'rating5-t':
return '五星'
elif str == 'rating45-t' :
return '四星半'
elif str == 'rating4-t':
return '四星'
elif str == 'rating35-t' :
return '三星半'
elif str == 'rating3-t':
return '三星'
elif str == 'rating25-t':
return '两星半'
elif str == 'rating2-t':
return '两星'
elif str == 'rating15-t':
return '一星半'
elif str == 'rating1-t':
return '一星'
else:
return '无星'
在爬取网页时,会将图片也爬取下来,下面的代码是将每部电影的图片保存到本地:
def down_image(url,headers):
r = requests.get(url,headers = headers)
filename = re.search('/public/(.*?)$',url,re.S).group(1)
with open(filename,'wb') as f:
f.write(r.content)
爬取到网页的信息后,一般会将爬取的信息保存到数据库或文本文件中,下面的代码是将爬取到的电影信息保存到文本文件中:
def write_movies_file(str):
with open('douban_film.txt','a',encoding='utf-8') as f:
f.write(json.dumps(str,ensure_ascii=False) + '\n')
写入文本文件用到了json库的dumps方法,该方法实现了字典的序列化,并且要指定ensure_ascii参数为False,保证中文不乱码。
write_movies_file方法传入的是一个字典的参数,因此在爬取到一部电影的信息时,需要将电影信息格式化为一个字典,代码为:
results = re.findall(regix, text, re.S)
for item in results:
yield {
'电影名称' : item[2] + ' ' + re.sub(' ','',item[3]),
'导演和演员' : re.sub(' ','',item[4].strip()),
'评分': star_transfor(item[6].strip()) + '/' + item[7] + '分',
'排名' : item[0]
}
到目前为止,我们已经实现了爬取一页电影的信息,一页包含有25部电影,250部电影有10页,之前已经提到过,改变start的值即可抓取不同页的电影,下面的代码是构造10页电影url的代码:
for offset in range(0, 250, 25):
url = 'https://movie.douban.com/top250?start=' + str(offset) +'&filter='
爬取豆瓣电影top250的完整代码如下:
import requests
import re
import json
def parse_html(url):
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
regix = '.*?
(.*?) .*?
.*?div class="info.*?class="hd".*?class="title">(.*?).*?class="other">' \
'(.*?).*?.*?
(.*?) (.*?)
.*?class="star.*?
.*?' \
'span class="rating_num".*?average">(.*?)'
results = re.findall(regix, text, re.S)
for item in results:
down_image(item[1],headers = headers)
yield {
'电影名称' : item[2] + ' ' + re.sub(' ','',item[3]),
'导演和演员' : re.sub(' ','',item[4].strip()),
'评分': star_transfor(item[6].strip()) + '/' + item[7] + '分',
'排名' : item[0]
}
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)
def write_movies_file(str):
with open('douban_film.txt','a',encoding='utf-8') as f:
f.write(json.dumps(str,ensure_ascii=False) + '\n')
def down_image(url,headers):
r = requests.get(url,headers = headers)
filename = re.search('/public/(.*?)$',url,re.S).group(1)
with open(filename,'wb') as f:
f.write(r.content)
def star_transfor(str):
if str == 'rating5-t':
return '五星'
elif str == 'rating45-t' :
return '四星半'
elif str == 'rating4-t':
return '四星'
elif str == 'rating35-t' :
return '三星半'
elif str == 'rating3-t':
return '三星'
elif str == 'rating25-t':
return '两星半'
elif str == 'rating2-t':
return '两星'
elif str == 'rating15-t':
return '一星半'
elif str == 'rating1-t':
return '一星'
else:
return '无星'
if __name__ == '__main__':
main()
总结 使用requests爬取一个网页的基本步骤:
设置头信息。
设置代理
使用get方法爬取网页
使用正则表达式提取相应的信息
下载图片
将爬取到的数据保存到文本文件或数据库中。
通过本文可以学习到如何使用requests库爬取网页,使用正则表达式提取网页的信息,下载图片,保存信息到文本文件中。
你可能感兴趣的:(一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用)
python 读excel每行替换_Python脚本操作Excel实现批量替换功能
weixin_39646695
python 读excel每行替换
Python脚本操作Excel实现批量替换功能大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换。使用的工具Openpyxl,一个处理excel的python库,处理excel,其实针对的就是WorkBook,Sheet,Cell这三个最根本的元素~明确需求原始excel如下我们的目标是把下面excel工作表的sheet1表页A列的内容“替换我吧”批量替换为B列的“我用来替换的
x86-64汇编语言训练程序与实战
十除以十等于一
本文还有配套的精品资源,点击获取简介:汇编语言是一种低级语言,与机器代码紧密相关,特别适用于编写系统级代码及性能要求高的应用。nasm编译器是针对x86和x86-64架构的汇编语言编译器,支持多种语法风格和指令集。项目Euler提供数学和计算机科学问题,鼓励编程技巧应用,前100个问题的答案可共享。x86-64架构扩展了寄存器数量并引入新指令,提升了数据处理效率。学习汇编语言能够深入理解计算机底层
三菱PLC全套学习资料及应用手册
good2know
本文还有配套的精品资源,点击获取简介:三菱PLC作为工业自动化领域的核心设备,其系列产品的学习和应用需要全面深入的知识。本次资料包为学习者提供从基础到进阶的全方位学习资源,包括各种型号PLC的操作手册、编程指南、软件操作教程以及实际案例分析,旨在帮助用户系统掌握PLC的编程语言、指令系统及在各类工业应用中的实施。1.三菱PLC基础知识入门1.1PLC的基本概念可编程逻辑控制器(PLC)是工业自动化
移动端城市区县二级联动选择功能实现包
good2know
本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery
日更006 终极训练营day3
懒cici
人生创业课(2)今天的主题:学习方法一:遇到有用的书,反复读,然后结合自身实际,列践行清单,不要再写读书笔记思考这本书与我有什么关系,我在哪些地方能用到,之后我该怎么用方法二:读完书没映像怎么办?训练你的大脑,方法:每读完一遍书,立马合上书,做一场分享,几分钟都行对自己的学习要求太低,要逼自己方法三:学习深度不够怎么办?找到细分领域的榜样,把他们的文章、书籍、产品都体验一遍,成为他们的超级用户,向
9、汇编语言编程入门:从环境搭建到简单程序实现
神经网络酱
汇编语言 MEPIS GNU工具链
汇编语言编程入门:从环境搭建到简单程序实现1.数据存储介质问题解决在处理数据存储时,若要使用MEPIS系统,需确保有其可访问的存储介质。目前,MEPIS无法向采用NTFS格式(常用于Windows2000和XP工作站)的硬盘写入数据。不过,若硬盘采用FAT32格式,MEPIS就能进行写入操作。此外,MEPIS还能将文件写入软盘和大多数USB闪存驱动器。若工作站连接到局域网,还可通过FTP协议或挂载
day15|前端框架学习和算法
universe_01
前端 算法 笔记
T22括号生成先把所有情况都画出来,然后(在满足什么情况下)把不符合条件的删除。T78子集要画树状图,把思路清晰。可以用暴力法、回溯法和DFS做这个题DFS深度搜索:每个边都走完,再回溯应用:二叉树搜索,图搜索回溯算法=DFS+剪枝T200岛屿数量(非常经典BFS宽度把树状转化成队列形式,lambda匿名函数“一次性的小函数,没有名字”setup语法糖:让代码更简洁好写的语法ref创建:基本类型的
《极简思维》第三部分
小洋苏兮
整理你的人际关系如何改善人际关系?摘录:因为人际关系问题是人们生活中不快乐的主要原因。感想:感觉这个说的挺对,之前我总是埋头学习,不管舍友不管自己的合作伙伴的一些事情,但实际上,这学期关注了之后好多了摘录:“亲密关系与社交会让你健康而快乐。这是基础。太过于关注成就或不太关心人际关系的人都不怎么快乐。基本上来说,人类就是建立在人脉关系上的。”感想:但是如果有时想的太多就不太好,要以一个开放的心态跟别
你要记住,最重要的是:随时做好准备,为了你可能成为更好的自己,放弃现在的自己。
霖霖z
打卡人:周云日期:2018年11月09日【日精进打卡第180天】【知~学习】《六项精进》0遍共214遍《通篇》1遍共106遍《大学》2遍共347遍《坚强工作,温柔生活》ok《不抱怨的世界》104-108页《经典名句》你要记住,最重要的是:随时做好准备,为了你可能成为更好的自己,放弃现在的自己。【行~实践】一、修身:(对自己个人)1、坚持打卡二、齐家:(对家庭和家人)打扫卫生,接送孩子,洗衣做饭,陪
C++ 计数排序、归并排序、快速排序
每天搬一点点砖
c++ 数据结构 算法
计数排序:是一种基于哈希的排序算法。他的基本思想是通过统计每个元素的出现次数,然后根据统计结果将元素依次放入排序后的序列中。这种排序算法适用于范围较小的情况,例如整数范围在0到k之间计数排序步骤:1初始化一个长度为最大元素值加1的计数数组,所有元素初始化为02遍历原始数组,将每个元素值作为索引,在计数数组中对应位置加13将数组清空4遍历计数器数组,按照数组中的元素个数放回到元数组中计数排序的优点和
贫穷家庭的孩子考上985以后会怎样?
Mellisa蜜思言
我出生在一个贫穷的农村家庭,据我妈说,我出生的时候才4斤多,而她生完我以后月子里就瘦到70斤。家里一直很穷,父母都是在菜市场卖菜的,家里还有几亩地种庄稼的。我很小开始就要去帮忙,暑假的生活就是帮忙去卖菜和割稻谷,那时候自己对于割稻谷这种事情有着莫名的恐惧,生怕自己长大以后还是每年都要过着割稻谷这种日子。父母因为忙于生计无暇顾及我的学习,幸好我因为看到他们这样子的生活,内心里有深深的恐惧感,驱使着我
实时数据流计算引擎Flink和Spark剖析
程小舰
flink spark 数据库 kafka hadoop
在过去几年,业界的主流流计算引擎大多采用SparkStreaming,随着近两年Flink的快速发展,Flink的使用也越来越广泛。与此同时,Spark针对SparkStreaming的不足,也继而推出了新的流计算组件。本文旨在深入分析不同的流计算引擎的内在机制和功能特点,为流处理场景的选型提供参考。(DLab数据实验室w.x.公众号出品)一.SparkStreamingSparkStreamin
重大通知!SH-TY数字体育樊纲,操盘手汪定山就是一场騙局!背后利益阴谋让人恼羞成怒
法律咨询维权
原来,所谓的炒股群就是骗子组群表演,团伙以“炒股群”的名义,向不知情的人步步加套,最终目的是骗取钱财。实际上,在这个炒股群内,所谓的投资成功的“股友”、诲人不倦的“老师”、亲切友好的“客服”等,都是嫌疑人设局扮演的,目的就是拉拢想要投资挣钱的股民,骗取他们的信任,从而进一步实施诈骗。诈骗团伙会通过非法渠道获取受害人联系方式,添加为好友后,以免费推荐股票、送牛股,吸引受害人眼球,将受害人拉进“炒股群
2019-06-05
第十七把巴鲁克
今天去实验田里实习,见到了福寿螺真的可怕且牛皮,六级也快来了,说实话还是害怕。我昨天考了环工原理,真的太难了,太烦了,理工科真的难,烦。实验报告还是没写,要抓紧速度抓紧时间,还是应该学会努力学习,远离一些不上进的事物。
JVM 内存模型深度解析:原子性、可见性与有序性的实现
练习时长两年半的程序员小胡
JVM 深度剖析:从面试考点到生产实践 jvm java 内存模型
在了解了JVM的基础架构和类加载机制后,我们需要进一步探索Java程序在多线程环境下的内存交互规则。JVM内存模型(JavaMemoryModel,JMM)定义了线程和主内存之间的抽象关系,它通过规范共享变量的访问方式,解决了多线程并发时的数据一致性问题。本文将从内存模型的核心目标出发,详解原子性、可见性、有序性的实现机制,以及volatile、synchronized等关键字在其中的作用。一、J
什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
daixin8848
缓存 redis java 开发语言
缓存雪崩:在一个时间段内,有大量的key过期,或者Redis服务宕机,导致大量的请求到达数据库,带来巨大压力-给key设置不同的TTL、利用Redis集群提高服务的高可用性、添加多级缓存、添加降级流策略缓存击穿:给某一个key设置了过期时间,当key过期的时间,恰好这个时间点有大量的并发请求访问这个key,可能会瞬间把数据库压垮-互斥锁:缓存失败时,只允许一个请求去加载数据并更新缓存,其他请求阻塞
Java | 多线程经典问题 - 售票
Ada54
一、售票需求1)同一个票池2)多个窗口卖票,不能出售同一张票二、售票问题代码实现(线程与进程小总结,请戳:Java|线程和进程,创建线程)step1:定义SaleWindow类实现Runnable接口,覆盖run方法step2:实例化SaleWindow对象,创建Thread对象,将SaleWindow作为参数传给Thread类的构造函数,然后通过Thread.start()方法启动线程step3
企业级区块链平台Hyperchain核心原理剖析
boyedu
区块链 区块链 企业级区块链平台 Hyperchain
Hyperchain作为国产自主可控的企业级联盟区块链平台,其核心原理围绕高性能共识、隐私保护、智能合约引擎及可扩展架构展开,通过多模块协同实现企业级区块链网络的高效部署与安全运行。以下从核心架构、关键技术、性能优化、安全机制、应用场景五个维度展开剖析:一、核心架构:分层解耦与模块化设计Hyperchain采用分层架构,将区块链功能解耦为独立模块,支持灵活组合与扩展:P2P网络层由验证节点(VP)
JAVA接口机结构解析
秃狼
SpringBoot 八股文 Java java 学习
什么是接口机在Java项目中,接口机通常指用于与外部系统进行数据交互的中间层,负责处理请求和响应的转换、协议适配、数据格式转换等任务。接口机的结构我们的接口机的结构分为两个大部分,外部接口机和内部接口机,在业务的调度上也是通过mq来实现的,只要的目的就是为了解耦合和做差异化。在接口机中主要的方法就是定时任务,消息的发送和消费,其他平台调用接口机只能提供外部接口机的方法进行调用,外部接口机可以提供消
Aop +反射 实现方法版本动态切换
需求分析在做技术选型的时候一直存在着两个声音,mongo作为数据库比较mysql好,mysql做为该数据比mongo好。当然不同数据库都有有着自己的优势,我们在做技术选型的时候无非就是做到对数据库的扬长避短。mysql最大的优势就是支持事务,事务的五大特性保证的业务可靠性,随之而来的就是事务会产生的问题:脏读、幻读、不可重复度,当然我们也会使用不同的隔离级别来解决。(最典型的业务问题:银行存取钱)
通义万相2.2:开启高清视频生成新纪元
Liudef06小白
特殊专栏 AIGC 人工智能 人工智能 通义万相2.2 图生视频
通义万相2.2:开启高清视频生成新纪元2025年7月28日,中国AI领域迎来里程碑时刻——通义万相团队正式开源其革命性视频生成模型Wan2.2的核心权重,这标志着开源社区首次获得支持720P高清视频生成的先进模型架构。一、架构革新:混合专家系统1.1MoE视频扩散架构通义万相2.2首次将混合专家(MoE)架构引入视频扩散模型,通过双专家系统实现计算效率与模型容量的平衡:classMoEVideoD
为什么焦虑、抑郁、自残的青少年越来越多?
精神健康
很多家长觉得没缺孩子吃的穿的,他们有安稳的生活,他们有什么可焦虑、抑郁的,但现在的孩子,学习压力越来越大,每天休息的时间越来越少,出现焦虑抑郁是很正常的。从发展的角度看,青少年时期,人的身体、情绪,智力、人格都急剧发展,正从未成熟走向成熟,情绪起伏不定,易冲动,再者,由于缺乏生活经验,以及来自于家长、学校、社会的各种要求和压力,从而不知所措,心中的焦虑、恐惧、彷徨得不到及时的排解,从而导致心理上的
最新阿里四面面试真题46道:面试技巧+核心问题+面试心得
风平浪静如码
前言做技术的有一种资历,叫做通过了阿里的面试。这些阿里Java相关问题,都是之前通过不断优秀人才的铺垫总结的,先自己弄懂了再去阿里面试,不然就是去丢脸,被虐。希望对大家帮助,祝面试成功,有个更好的职业规划。一,阿里常见技术面1、微信红包怎么实现。2、海量数据分析。3、测试职位问的线程安全和非线程安全。4、HTTP2.0、thrift。5、面试电话沟通可能先让自我介绍。6、分布式事务一致性。7、ni
可处理!环境排放3.0项目怎么提现?裕华投资会刘裕华免费荐股骗局曝光!
墨守成法
骗子冒充裕华投资会刘裕华通过伪造或仿冒投资平台,向股民发送虚假环境排放3.0项目链接,引导股民者下载进行投资,以送一万体验金操作小额投资能提现作为诱饵,不断引导消费者加大资金投入。不法分子随后迅速转移资金,当投资者要提现时候就以“流水未完成”“登录异常”“服务器维护”“比赛未结束”等借口不让提现,直到平台关闭跑了或者完成流水任务为由一波亏完。在以翻本为借口继续让投资者加入资金。若你不幸遭遇到裕华投
读书打卡《别想太多啦》
chenchen_68ed
第一,世间之事,不去尝试永远不知道其中的奥秘,在尝试中有失败是必然的。如果担心失败,那什么都学不会。第二,经历的失败越多,越会对失败者抱有宽容的态度,“原来如此,我也经历过类似的失败啦,那只是暂时的”。经历越多失败的长者,越能包容别人,这也就是所谓的“越年长越宽容”。成熟的人,就是在众多失败经历中不断学习,并接纳别人的失败。对于他人的小小过失不吹毛求疵,自己的心态会更加平和。在不断失败中学习,让自
模拟退火(SA):如何“故意走错路”,才能找到最优解?
小瑞瑞acd
小瑞瑞学数模 模拟退火算法 python 启发式算法 算法
模拟退火(SA):如何“故意走错路”,才能找到最优解?图示模拟退火算法如何通过接受较差解(橙色虚线标注)从局部最优(绿色点)逃逸,最终找到全局最优解(紫色点),展示其跳出局部极小值的能力。大家好,我是小瑞瑞!欢迎回到我的专栏!想象一下,你站在一座连绵不绝的山脉中,目标是找到海拔最低的那个山谷。你手上只有一个高度计,视野被浓雾笼罩,只能看清脚下的一小片区域。如果你是一个“贪心”的登山者,你的策略会非
2023-01-26
胡喜平
我觉得《可见的学习》一书确实从底层逻辑说清楚了,教学的本质。可是太多术语和概念,一时间难以消化啊。而且知道和懂得有距离,运用就更不行了,需要高手和专家的指导。我需要多听听新课标的讲座了,来反复印证。读论文也有了一点点灵感,明天修改我的论文。
平静得接受自己的笨拙 20190118 晨间日记
吴伯符
图片发自App最近做了一个关于微习惯的分享,这里有八个字:微量开始,超额完成。这里的言下之意其实是要你在一开始的时候,平静地接受自己的笨拙。接受自己的笨拙,理解自己的笨拙,放慢速度尝试,观察哪里可以改进,再反复练习,观察自己哪里可以再进一步改进,再反复…这是学习一切技能的必须的过程。这里的两个关键点是:1.尽快的开始这个过程,这就能够用到微习惯的微量开始。2.尽快的度过这个过程,这就需要用到超额完
读张萌萌姐《从受欢迎到被需要》第一章读书总结
韩静_Han
我是@张萌-萌姐#从受欢迎到被需要#读书会10班的书记官韩静我们的领读者是@郝美-菱这是今天的读书总结通过第一章的阅读,对高情商和自我介绍有了新的认知。思考题复盘:“我是谁,我需要什么,我能提供什么”【我是谁】我叫韩静,在房地产行业工作5年,现担任行政经理一职,是一位个子小却很坚强很拼的女生。【我能提供什么】️用自己减重26斤的经验帮助需要的人健康减肥️能提供房地产购房等方面的知识和问题️早起陪伴
编程算法:技术创新的引擎与业务增长的核心驱动力
在数字经济时代,算法已成为推动技术创新与业务增长的隐形引擎。从存内计算突破冯·诺依曼瓶颈,到动态规划优化万亿级金融交易,编程算法正在重塑产业竞争格局。一、存内计算:突破冯·诺依曼瓶颈的算法革命1.1存内计算的基本原理传统计算架构中90%的能耗消耗在数据搬运上。存内计算(Processing-in-Memory)通过直接在存储单元执行计算,实现能效10-100倍提升:#传统计算vs存内计算能耗模型i
ztree设置禁用节点
3213213333332132
JavaScript ztree json setDisabledNode Ajax
ztree设置禁用节点的时候注意,当使用ajax后台请求数据,必须要设置为同步获取数据,否者会获取不到节点对象,导致设置禁用没有效果。
$(function(){
showTree();
setDisabledNode();
});
JVM patch by Taobao
bookjovi
java HotSpot
在网上无意中看到淘宝提交的hotspot patch,共四个,有意思,记录一下。
7050685:jsdbproc64.sh has a typo in the package name
7058036:FieldsAllocationStyle=2 does not work in 32-bit VM
7060619:C1 should respect inline and
将session存储到数据库中
dcj3sjt126com
sql PHP session
CREATE TABLE sessions (
id CHAR(32) NOT NULL,
data TEXT,
last_accessed TIMESTAMP NOT NULL,
PRIMARY KEY (id)
);
<?php
/**
* Created by PhpStorm.
* User: michaeldu
* Date
Vector
171815164
vector
public Vector<CartProduct> delCart(Vector<CartProduct> cart, String id) {
for (int i = 0; i < cart.size(); i++) {
if (cart.get(i).getId().equals(id)) {
cart.remove(i);
各连接池配置参数比较
g21121
连接池
排版真心费劲,大家凑合看下吧,见谅~
Druid
DBCP
C3P0
Proxool
数据库用户名称 Username Username User
数据库密码 Password Password Password
驱动名
[简单]mybatis insert语句添加动态字段
53873039oycg
mybatis
mysql数据库,id自增,配置如下:
<insert id="saveTestTb" useGeneratedKeys="true" keyProperty="id"
parameterType=&
struts2拦截器配置
云端月影
struts2拦截器
struts2拦截器interceptor的三种配置方法
方法1. 普通配置法
<struts>
<package name="struts2" extends="struts-default">
&
IE中页面不居中,火狐谷歌等正常
aijuans
IE中页面不居中
问题是首页在火狐、谷歌、所有IE中正常显示,列表页的页面在火狐谷歌中正常,在IE6、7、8中都不中,觉得可能那个地方设置的让IE系列都不认识,仔细查看后发现,列表页中没写HTML模板部分没有添加DTD定义,就是<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3
String,int,Integer,char 几个类型常见转换
antonyup_2006
html sql .net
如何将字串 String 转换成整数 int?
int i = Integer.valueOf(my_str).intValue();
int i=Integer.parseInt(str);
如何将字串 String 转换成Integer ?
Integer integer=Integer.valueOf(str);
如何将整数 int 转换成字串 String ?
1.
PL/SQL的游标类型
百合不是茶
显示游标(静态游标) 隐式游标 游标的更新和删除 %rowtype ref游标(动态游标)
游标是oracle中的一个结果集,用于存放查询的结果;
PL/SQL中游标的声明;
1,声明游标
2,打开游标(默认是关闭的);
3,提取数据
4,关闭游标
注意的要点:游标必须声明在declare中,使用open打开游标,fetch取游标中的数据,close关闭游标
隐式游标:主要是对DML数据的操作隐
JUnit4中@AfterClass @BeforeClass @after @before的区别对比
bijian1013
JUnit4 单元测试
一.基础知识
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)@After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次
精通Oracle10编程SQL(12)开发包
bijian1013
oracle 数据库 plsql
/*
*开发包
*包用于逻辑组合相关的PL/SQL类型(例如TABLE类型和RECORD类型)、PL/SQL项(例如游标和游标变量)和PL/SQL子程序(例如过程和函数)
*/
--包用于逻辑组合相关的PL/SQL类型、项和子程序,它由包规范和包体两部分组成
--建立包规范:包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等
--在包规
【EhCache二】ehcache.xml配置详解
bit1129
ehcache.xml
在ehcache官网上找了多次,终于找到ehcache.xml配置元素和属性的含义说明文档了,这个文档包含在ehcache.xml的注释中!
ehcache.xml : http://ehcache.org/ehcache.xml
ehcache.xsd : http://ehcache.org/ehcache.xsd
ehcache配置文件的根元素是ehcahe
ehcac
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL
白糖_
java eclipse spring tomcat Web
今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
随后启动
angular.element
boyitech
AngularJS AngularJS API angular.element
angular.element
描述: 包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。(类似于jQuery的选择器啦) 如果jQuery被引入了,则angular.element就可以看作是jQuery选择器,选择的对象可以使用jQuery的函数;如果jQuery不可用,angular.e
java-给定两个已排序序列,找出共同的元素。
bylijinnan
java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CommonItemInTwoSortedArray {
/**
* 题目:给定两个已排序序列,找出共同的元素。
* 1.定义两个指针分别指向序列的开始。
* 如果指向的两个元素
sftp 异常,有遇到的吗?求解
Chen.H
java jcraft auth jsch jschexception
com.jcraft.jsch.JSchException: Auth cancel
at com.jcraft.jsch.Session.connect(Session.java:460)
at com.jcraft.jsch.Session.connect(Session.java:154)
at cn.vivame.util.ftp.SftpServerAccess.connec
[生物智能与人工智能]神经元中的电化学结构代表什么?
comsci
人工智能
我这里做一个大胆的猜想,生物神经网络中的神经元中包含着一些化学和类似电路的结构,这些结构通常用来扮演类似我们在拓扑分析系统中的节点嵌入方程一样,使得我们的神经网络产生智能判断的能力,而这些嵌入到节点中的方程同时也扮演着"经验"的角色....
我们可以尝试一下...在某些神经
通过LAC和CID获取经纬度信息
dai_lm
lac cid
方法1:
用浏览器打开http://www.minigps.net/cellsearch.html,然后输入lac和cid信息(mcc和mnc可以填0),如果数据正确就可以获得相应的经纬度
方法2:
发送HTTP请求到http://www.open-electronics.org/celltrack/cell.php?hex=0&lac=<lac>&cid=&
JAVA的困难分析
datamachine
java
前段时间转了一篇SQL的文章(http://datamachine.iteye.com/blog/1971896),文章不复杂,但思想深刻,就顺便思考了一下java的不足,当砖头丢出来,希望引点和田玉。
-----------------------------------------------------------------------------------------
小学5年级英语单词背诵第二课
dcj3sjt126com
english word
money 钱
paper 纸
speak 讲,说
tell 告诉
remember 记得,想起
knock 敲,击,打
question 问题
number 数字,号码
learn 学会,学习
street 街道
carry 搬运,携带
send 发送,邮寄,发射
must 必须
light 灯,光线,轻的
front
linux下面没有tree命令
dcj3sjt126com
linux
centos p安装
yum -y install tree
mac os安装
brew install tree
首先来看tree的用法
tree 中文解释:tree
功能说明:以树状图列出目录的内容。
语 法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式
Map迭代方式,Map迭代,Map循环
蕃薯耀
Map循环 Map迭代 Map迭代方式
Map迭代方式,Map迭代,Map循环
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年
Spring Cache注解+Redis
hanqunfeng
spring
Spring3.1 Cache注解
依赖jar包:
<!-- redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
Guava中针对集合的 filter和过滤功能
jackyrong
filter
在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子:
@Test
public void whenFilterWithIterables_thenFiltered() {
List<String> names = Lists.newArrayList("John"
学习编程那点事
lampcy
编程 android PHP html5
一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧!
接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去
架构师之流处理---------bytebuffer的mark,limit和flip
nannan408
ByteBuffer
1.前言。
如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。
2.例子.
例子代码:
String str = "helloWorld";
ByteBuffer buff = ByteBuffer.wrap(str.getBytes());
Sy
org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1
Everyday都不同
$ 转义 el表达式
最近在做Highcharts的过程中,在写js时,出现了以下异常:
严重: Servlet.service() for servlet jsp threw exception
org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1,
用Java实现发送邮件到163
tntxia
java实现
/*
在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。问题零散,而历史的回复早已经淹没在问题的海洋之中。
本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。
此篇仅介绍用
探索实体类存在的真正意义
java小叶檀
POJO
一. 实体类简述
实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的
POJO(Plain Old Java Objects)简单的Java对象
它的一般格式就是
public class A{
private String id;
public Str