在正式爬取之前,先做一个试验,看一下爬取的数据对象的类型是如何转换为列表的:
写一个html文档:
x.html <html >< head >< title > This is a python demo pagetitle > head >
< body >
< p class ="title" >
< a > The demo python introduces several python courses.a >
< a href ="http://www.icourse163.org/course/BIT-133" class ="py1" id ="link1" > Basic Pythona >
p >
< p class ="course" > Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:
< a href ="http://www.icourse163.org/course/BIT-268001" class ="py1" id ="link1" > Basic Pythona > and
< a href ="http://www.icourse163.org/course/BIT-1001870001" class ="py2" id ="link2" > Advanced Pythona >
p >
body > html >
# coding:utf-8
from bs4 import BeautifulSoup
import requests
import bs4
soup = BeautifulSoup(open('D:/x.html', encoding='utf-8'), " html.parser " )
print (soup.find(' body ' ,).children) # .children返回可迭代对象,不是列表,需要用for循环遍历其中的内容
for t in soup.find(' body ' ).children: 迭代标签的儿子节点
if isinstance(t, bs4.element.Tag): # 判断子节点是否为Tag对象(因为子节点会包含如换行符之类的节点)
print (' body的子标签的内容是: ' , t) # 查看t变量获得的对象内容,body的子标签为p标签,一组
表示一个对象
print (' t的类型是: ' , type(t)) # 查看t的类型
可以看到每个t对象的类型是bs4.element.Tag,也就是标签对象。
那么,如果要从每个t对象中获取a标签的内容,并把所有a标签都保存到一个列表中,该如何做?
可以使用:
list = t(' a ' ) # t('a')会生成一个bs4.element.ResultSet 类型的数据对象,实际上就是Tag列表
for t in soup.find(' body ' ).children:
if isinstance(t, bs4.element.Tag): # 判断子标签是否为Tag对象(因为子节点会包含如换行符之类的节点)
# print('body的子标签的内容是:', t) # 查看t变量获得的对象内容
# print('t的类型是:', type(t)) # 查看t的类型
list = t(' a ' ) # 循环获取每个t对象中的所有a标签,并保存到一个列表中
print (list)
print (type(list))
print (' 每个p标签的第一个a标签的内容: ' , list[0].string) # a标签保存到列表后,便可以利用列表方法解析出其中的具体每个a标签对象,并利用.string获取标签字符串
接下来就可以正式编写爬虫了:
分析网页源代码
可以看到需要的一些信息如大学排名、大学名称、地址、分数等分别在如图标注的地方,每个大学信息所在的标签结构如下:所有大学信息都在标签下,每个大学都在各自的标签,然后大学自身的排名、名称、地址等信息都分别由一个标签包裹。
思路如下:先找到下的所有标签内容,然后再从中找出所有标签内容(为什么不直接用find_all()找 ?因为不只有我们需要的大学信息用到了 标签, 之外也有用到标签来包裹内容的)。
我要把每个学校的“排名、名称、地址、分数”的值都取出来,并且把每组数据都各自装在一个列表中,然后再把每个列表依次加到一个大列表里
(1)直接处理数据
from bs4 import BeautifulSoup
import requests
import bs4
url = ' http://www.zuihaodaxue.com/shengyuanzhiliangpaiming2018.html '
r = requests.get(url)
r.encoding = r.apparent_encoding # 转换编码,不然中文会显示乱码,也可以r.encoding = 'utf-8'
html = r.text
soup = BeautifulSoup(html, ' html.parser ' ) # 获取爬取网页的BeautifulSoup对象
for tr in soup.find(' tbody ' ).children:
if isinstance(tr, bs4.element.Tag):
td = tr(' td ' ) print(td)
t = [td[0].string, td[1].string, td[2].string, td[3].string] # 把每个学校解析出的数据各自装到一个列表中 print (t)
打印td的结果:
打印t的结果如下,其实排名信息已经可以看出来了
然后依次把每个大学信息写入一个文本文档:
from bs4 import BeautifulSoup
import requests
import bs4
url = ' http://www.zuihaodaxue.com/shengyuanzhiliangpaiming2018.html '
r = requests.get(url)
r.encoding = r.apparent_encoding # 转换编码,不然中文会显示乱码,也可以r.encoding = 'utf-8'
html = r.text
soup = BeautifulSoup(html, ' html.parser ' ) # 获取爬取网页的BeautifulSoup对象
for tr in soup.find(' tbody ' ).children:
if isinstance(tr, bs4.element.Tag):
td = tr(' td ' )
t = [td[0].string, td[1].string, td[2].string, td[3].string] # 把每个学校解析出的数据各自装到一个列表中print(t)
with open(' D:/test.txt ' ,' a ' ) as data: # 以'a'模式打开文件,即可 不停的追加写入而不改变原内容 print (t, file= data)
(2)把代码封装,写到函数中
# coding:utf-8
import requests
import bs4
from bs4 import BeautifulSoup
def get_html(url): """定义获取网页源码函数"""
try :
r = requests.get(url, timeout=20)
r.encoding = r.apparent_encoding
return r.text
except :
return None
def get_data(html, list): """定义从网页源码获取数据并处理数据函数"""
soup = BeautifulSoup(html, ' html.parser ' )
for tr in soup.find(' tbody ' ).children:
if isinstance(tr, bs4.element.Tag):
td = tr(' td ' )
t = [td[0].string, td[1].string, td[2].string, td[3].string] # 把每个学校解析处的数据各自装到一个列表中
list.append(t) # 把每个学校信息列表都追加到一个大列表中,方便后面写入文件
# return list # 不能加return,造成的后果就是第一次循环时就把结果返回出去了,只取到了第一条数据
def write_data(ulist, num): # num参数,控制提取多少组数据写入文件 """定义把数据写入文件函数"""
for i in range(num):
u = ulist[i]
with open( ' D:/test.txt ' , ' a ' ) as data:
print (u, file=data)
if __name__ == ' __main__ ' :
list = [] # 我之前是把list=[]放到get_data()函数的for循环里面了,导致每次循环都会先清空列表,然后再追加数据,结果最后遍历完只剩最后一组数据。。。 url = ' http://www.zuihaodaxue.com/shengyuanzhiliangpaiming2018.html ' html = get_html(url) get_data(html, list) write_data(list, 20)
把结果输出到屏幕(老师给出的代码) # coding: utf-8
import requests
from bs4 import BeautifulSoup
import bs4
# def GetHTMLText(url):
# try:
# r = requests.get(url, timeout=30)
# r.raise_for_status()
# r.encoding = r.apparent_encoding
# return r.text
# except:
# return ""
#
#
# def fillUnivList(ulist, html):
# soup = BeautifulSoup(html, "html.parser")
# for tr in soup.find('tbody').children:
# if isinstance(tr, bs4.element.Tag):
# tds = tr('td')
# ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string])
#
#
#
# def printUnivList(ulist, num):
# print("{:^10}\t{:^6}\t{:^10}\t{:^10}".format('排名', '学校名称', '地区', '总分'))
# for i in range(num):
# u = ulist[i]
# print("{:^10}\t{:^6}\t{:^10}\t{:^10}".format(u[0], u[1], u[2], u[3]))
#
#
# def main():
# uinfo = []
# url = 'http://www.zuihaodaxue.com/shengyuanzhiliangpaiming2018.html'
# html = GetHTMLText(url)
# fillUnivList(uinfo, html)
# printUnivList(uinfo, 20)
# return uinfo
#
#
# if __name__ == '__main__':
# t = main()
转载于:https://www.cnblogs.com/hanmk/p/8724727.html
你可能感兴趣的:(python爬虫学习(二):定向爬虫例子-->使用BeautifulSoup爬取"软科中国最好大学排名-生源质量排名2018",并把结果写进txt文件...)
使用Dall-E生成图像:文本到图像的魔力
shuoac
计算机视觉 人工智能 python
使用Dall-E生成图像:文本到图像的魔力技术背景介绍Dall-E是OpenAI开发的一个强大的文本到图像生成模型,它能够根据自然语言描述创造出全新的数字图像。这一技术基于深度学习的方法,使得创意与AI图像生成的结合更具可能性。本文将介绍如何调用Dall-EAPI来生成图像,从而使开发者能够将这一技术应用到自己的项目中。核心原理解析Dall-E利用大型语言模型(LLM)从用户提供的文本描述中提取详
【华为OD】游戏里面,队伍通过匹配实力相近的对手进行对战。但是如果匹配的队伍实力相差太大,对于双方游戏体验都不会太好。
测试_老姜
华为od python
游戏里面,队伍通过匹配实力相近的对手进行对战。但是如果匹配的队伍实力相差太大,对于双方游戏体验都不会太好。给定n个队伍的实力值,对其进行两两实力匹配,两支队伍实例差距在允许的最大差距d内,则可以匹配。要求在匹配队伍最多的情况下匹配出的各组实力差距的总和最小。输入描述第一行两个整数,n,d。队伍个数n。允许的最大实力差距d。2<=n<=500<=d<=100第二行,n个整数,表示队伍的实力值,以空格
头条原创文章一键转换剪映生成视频
Mr数据杨
Python 视频剪辑 python moveipy 图文转视频 西瓜视频 剪映
随着技术的进步,平台逐渐为创作者提供了更多便捷的功能来增强内容的表达效果。近期,某平台新增了一个实用功能,允许用户将自己发布的文章通过后台的视频生成工具一键转换为短视频。然而,这一功能的使用存在一些限制,比如仅支持原创文章,并且生成的视频只能在该平台发布,暂时无法同步至其他社交平台。尽管如此,通过对生成视频的观察与分析,可以发现其处理方式与剪映等主流视频编辑软件有相似之处,这为进一步扩展视频的应用
C语言程序配置搭建提纲
oicola
c语言 开发语言 编辑器 c++
C、C++语言程序配置搭建提纲一、环境准备安装编译器选择合适的C语言编译器,如MinGW(包含GCC)或MSVC。从官方渠道下载并安装,确保安装过程中选择正确的组件(如MinGW的GCC或MSVC的“桌面开发withC++”工作负载)。安装代码编辑器推荐使用VisualStudioCode(VSCode),从官网下载并安装。配置环境变量将编译器的路径添加到系统的环境变量PATH中。对于MinGW,
JVM常用概念之编译器黑洞
剑海风云
JDK(Java Development Kit) jvm 编译器 编译器黑洞
问题JMH如何避免微小基准测试中的不会运行的代码的消除工作?是否有隐式或显式编译器支持?基础知识优化编译器擅长优化简单的东西。例如,如果存在任何人都无法观察到的计算,则可以将其视为“不会运行的代码”并将其删除。这通常是一件好事,直到你运行基准测试。在那里,你想要计算,但你不需要结果。本质上,你观察基准测试所占用的“资源”,但没有简单的方法可以与编译器争论这一点。比如下面的测试用例,该方法中只涉及到
Angular 编译前的脚本执行
t0_54manong
编程问题解决手册 angular.js 前端 javascript 个人开发
在使用Angular开发项目时,有时候我们需要在每次编译之前执行特定的脚本或JavaScript函数。这在开发环境中非常有用,比如运行某些预处理、清理或其他自定义逻辑。今天我们将探讨如何在Angularv17结合esbuild实现这个功能。问题背景假设你正在使用Angularv17进行开发,并且已经配置了esbuild作为构建工具。现在你需要在每次Angular编译之前(特别是使用ngwatch时
深入了解盘古大模型:技术、应用与未来
Hardess-god
Literature review 人工智能
随着人工智能技术的迅猛发展,预训练大模型已成为AI领域最前沿、最热门的研究方向之一。近年来,中国自主研发的大模型之一——盘古模型(PanGuModel)逐渐进入公众视野,凭借其强大的性能和广泛的应用前景,引发了行业内外的广泛关注。什么是盘古大模型?盘古大模型是华为公司联合多家科研机构共同研发的超大规模预训练语言模型。该模型以中文数据为主进行训练,旨在推动中文自然语言处理(NLP)以及跨模态应用的技
华为OD机试 - 最佳对手( Python)
AsiaFT.
Py 华为OD机试AB卷 python od
题目描述游戏里面,队伍通过匹配实力相近的对手进行对战。但是如果匹配的队伍实力相差太大,对于双方游戏体验都不会太好。给定n个队伍的实力值,对其进行两两实力匹配,两支队伍实例差距在允许的最大差距d内,则可以匹配。要求在匹配队伍最多的情况下匹配出的各组实力差距的总和最小。输入描述第一行,n,d。队伍个数n。允许的最大实力差距d。2<=n<=500<=d<=100第二行,n个队伍的实力值空格分割。0<=各
2023华为OD机试真题-最佳对手(JAVA、Python、C++)
huaweiod123
华为OD机试真题2023 java c++ 算法 华为 python
题目描述:游戏里面,队伍通过匹配实力相近的对手进行对战。但是如果匹配的队伍实例相差太大,对于双方游戏体验都不会太好。给定n个队伍的实力值,对其进行两两实力匹配,两支队伍实例差距在允许的最大差距d内,则可以匹配。要求在匹配队伍最多的情况下,匹配出的各组实力差距的总和最小。输入描述:第一行,n,d。队伍个数n。允许的最大实力差距d。(2<=n<=50,0<=d<=100)。第二行,n个队伍的实力值,空
【人工智能之大模型】阐述生成式语言模型的工作机理...(二)
985小水博一枚呀
大大大模型知识点 人工智能 语言模型 自然语言处理 机器学习 神经网络
【人工智能之大模型】阐述生成式语言模型的工作机理…(二)【人工智能之大模型】阐述生成式语言模型的工作机理…(二)文章目录【人工智能之大模型】阐述生成式语言模型的工作机理...(二)前言4.代码逐行解释TransformerBlock类初始化前向传播GenerativeLM类初始化前向传播推理示例测试生成5.总结欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!祝所有的硕博生都能遇到好的导师!好的审稿
使用PyInstaller打包Python程序时,如何避免生成的可执行文件(exe)过大的解决方法
ta叫我小白
python python 开发语言 pyinstaller 可执行文件
使用PyInstaller打包出来的exe等可执行文件过大(比如我的一个小项目,打包之后超过了600M),大概率是使用的python解释器(PythonInterpreter)中安装了许多当前项目没有使用的库。解决方法:打包时,最好为这个项目创建一个独立的虚拟解释器环境,如下图:指定了新的虚拟环境之后,你需要在新环境中安装你所需要的依赖库。在py文件中选择安装即可,此时依赖库会安装到新的环境中。切
华为OD机试E卷 - 最佳对手 / 实力差距最小总和(Java & Python& JS & C++ & C )
算法大师
java python javascript c++
题目描述游戏里面,队伍通过匹配实力相近的对手进行对战。但是如果匹配的队伍实力相差太大,对于双方游戏体验都不会太好。给定n个队伍的实力值,对其进行两两实力匹配,两支队伍实例差距在允许的最大差距d内,则可以匹配。要求在匹配队伍最多的情况下匹配出的各组实力差距的总和最小。输入描述第一行,n,d。队伍个数n。允许的最大实力差距d。2<=n<=500<=d<=100第二行,n个队伍的实力值空格分割。0<=各
python语言程序设计基础,python编程代码大全
Rtee1
python 开发语言 服务器
大家好,小编为大家解答python语言程序设计基础第二版课后答案的问题。很多人还不知道PYTHON语言程序设计实践教程(陈东)答案,现在让我们一起来看看吧!目录1Python基本语法元素1.1程序设计基本方法1.1.1计算机与程序设计1.1.2编译与解释1.1.3程序的基本编写方法—IPO1.1.4计算机编程1.2Python开发环境配置1.2.1Python语言概述1.2.2Python程序的
人工智能 - 通用 AI Agent 之 LangManus、Manus、OpenManus 和 OWL 技术选型
天机️灵韵
具身智能 人工智能 人工智能 具身智能 智能体
一、核心项目概览1.Manus(闭源通用AIAgent)定位:全球首个全流程自动化通用AIAgent,GAIA基准测试SOTA水平。核心能力:全流程自动化:从任务规划(如撰写报告)到执行(代码生成、表格制作)的端到端处理。智能纠错机制:基于沙箱环境的实时错误反思与调整(类似CodeAct技术)。云端依赖:需联网运行,集成浏览器操作、信息检索等工具。局限性:闭源且采用邀请制,二手市场邀请码溢价至数万
Multisim在射频电路仿真与实验教学中的应用探究
She Ran 546
课程设计
摘要本文深入探究Multisim在射频电路仿真与实验教学中的应用。阐述Multisim软件在射频领域的功能特点,通过具体射频电路实验案例,详细说明如何运用Multisim进行电路搭建、参数设置与仿真分析。探讨其在实验教学中对学生理解射频电路原理、提升实践能力的积极作用,以及在丰富教学手段、提高教学质量方面的显著优势,为射频电路实验教学改革提供新思路与方法。关键词Multisim;射频电路;仿真;实
利用HFSS软件对射频电路电磁兼容性的深入研究
DidYour
课程设计
摘要本文旨在借助HFSS(HighFrequencyStructureSimulator)软件深入研究射频电路的电磁兼容性(EMC)。通过对射频电路中电磁干扰产生机制的剖析,阐述如何运用HFSS软件建立精确的射频电路模型,进行电磁兼容性仿真分析,包括近场和远场分析、信号完整性分析等。结合实际案例,探讨不同因素对射频电路EMC性能的影响,提出基于HFSS仿真结果的优化设计策略,为提升射频电路电磁兼容
c++算法赛万能模板个人笔记适用蓝桥杯,天梯赛,acm等赛事
a东方青
个人笔记 c++ 算法 笔记
算法笔记-更新与2025-3-22点赞收藏+关注持续更新算法基础二分整数二分//在一个单调区间里面去找答案boolcheck(intx){/*...*/}//检查x是否满足某种性质//区间[l,r]被划分成[l,mid]和[mid+1,r]时使用:intbsearch_1(intl,intr){while(l>1;if(check(mid))r=mid;//check()判断mid是否满足性质el
【蓝桥杯】真题 2386染色时间 (优先队列BFS)
遥感小萌新
蓝桥杯 蓝桥杯 宽度优先 职场和发展
思路这里每一个格子染色多了时间这一层限制,相当于图的每一边有了权重的限制,那么我们就不能直接用双向队列求最短路。而是使用优先队列。规则是这样的:每一个节点可以多次入队,但是只有第一次出队有效。所以这次我们不会在加入队列时更改标签vis,而是在出队时更改标签。如果在出队时发现vis已经更改,这说明这个元素以前出过队列(不是第一次出队),则直接continuecode我们额外设置两个数组,vis标签数
Spring Boot集成Redis并设置密码后报错: NOAUTH Authentication required
ta叫我小白
Java Spring Boot Redis spring boot redis
报错信息:io.lettuce.core.RedisCommandExecutionException:NOAUTHAuthenticationrequired.Redis密码配置确认无误,但是只要使用Redis存储就报这个异常。很可能是因为配置的spring.redis.password没有被读取到。基本依赖:implementation'org.springframework.boot:spr
《自动化开发之路:使用 Jenkins、GitLab CI 与 GitHub Actions 构建高效 CI/CD 流水线》
清水白石008
python Python题库 自动化 jenkins gitlab
《自动化开发之路:使用Jenkins、GitLabCI与GitHubActions构建高效CI/CD流水线》前言在现代软件开发中,持续集成(CI)与持续部署/交付(CD)已成为必不可少的实践。构建自动化流水线不仅可以加快开发迭代速度,还能显著提升代码质量,降低手工操作所带来的风险。在这篇文章中,我们将探讨如何利用三种主流工具——Jenkins、GitLabCI以及GitHubActions,实现从
python字符级差异分析并生成 Word 报告
myzzb
word python 文字识别 算法 文本差异
importdifflibfromdocximportDocumentfromdocx.sharedimportRGBColordefanalyze_char_differences(text_a,text_b):"""分析两个文本的字符级差异:paramtext_a:第一个文本:paramtext_b:第二个文本"""matcher=difflib.SequenceMatcher(None,te
力扣刷题-热题100题-第20题(c++、python)
weixin_44505472
c++ python leetcode
48.旋转图像-力扣(LeetCode)https://leetcode.cn/problems/rotate-image/?envType=study-plan-v2&envId=top-100-liked使用辅助矩阵直接创建一个新矩阵来装旋转好的矩阵,不过需要注意的是要将新矩阵的值赋值回原矩阵,在c++中是可以直接=,但python中要注意matrix[:]=matrix1才是赋值,直接=是改
HarmonyOS5开发:手把手教你用 Ark-TS UI 做一个会 “动” 的计数器:从代码到原理全解析
harmonyos-next
今天咱们用鸿蒙5的Ark-TSUI做一个简单又有趣的计数器应用。点击按钮数字就会增加,而且界面还能自动更新。通过这个案例,你能轻松理解Ark-TSUI的核心玩法。一、最终效果长什么样?打开应用,你会看到一个大按钮,上面写着“点击加1”。每次点击按钮,按钮上方的数字就会变大。比如第一次点击变成“1”,第二次变成“2”,依此类推。整个过程不需要手动刷新页面,数字会自动变化。二、完整代码长这样types
NLP高频面试题(七)——GPT和Bert的mask有什么区别?
Chaos_Wang_
NLP常见面试题 自然语言处理 gpt bert
GPT和BERT的Mask机制对比:核心区别与优化策略在NLP领域,GPT和BERT是最具代表性的预训练语言模型之一。它们都在训练过程中使用了Mask机制来引导模型学习语言表示,但具体实现方式和目标却有所不同。本文将深入探讨GPT和BERT的Mask方法的核心区别,并分析其优化策略。1.BERT的Mask机制:基于MLM(MaskedLanguageModel)BERT(Bidirectional
第三十一篇 数据仓库(DW)与商业智能(BI)架构设计与实践指南
随缘而动,随遇而安
数据库 sql 数据仓库 大数据 数据库架构
目录一、DW/BI架构核心理论与选型策略1.1主流架构模式对比(1)Kimball维度建模架构(2)Inmon企业工厂架构(3)混合架构二、架构设计方法论与实施步骤2.1维度建模实战指南(1)模型选择决策树(2)ETL开发规范2.2实时BI技术栈选型三、全链路实施与优化策略3.1五阶段实施框架3.2数据治理体系构建四、行业场景深度实践4.1电商用户行为分析4.2金融风控实时预警五、关键问题解析Q1
Oracle SQL 开发实战:高效技巧与核心特性解析
McRfee
sql
OracleSQL开发实战:高效技巧与核心特性解析OracleSQL开发实战:高效技巧与核心特性解析一、引言:OracleSQL的核心优势二、高效SQL编写技巧1.避免全表扫描的黄金法则2.用WITH子句简化复杂查询3.MERGE语句实现智能更新三、Oracle独有特性深度解析1.分析函数:窗口计算的利器2.CONNECTBY层级查询3.虚拟列(VirtualColumn)4.FLASHBACK闪
使用Annoy进行高效的近似最近邻搜索
eahba
前端 javascript angular.js python
在处理大型数据集时,我们经常面临需要快速、准确地查找与给定查询点相近的数据点的问题。Annoy(ApproximateNearestNeighborsOhYeah)就是为解决此类问题而生的一个强大工具。Annoy是一个用C++编写并具有Python绑定的库,专用于在空间中搜索与给定查询点相近的点。它能够创建大型的只读文件数据结构,并映射到内存中,以便于多个进程共享相同的数据。技术背景介绍Annoy
掌握ChatGPT写代码的秘诀:开发者的完整指南
酷酷的崽798
机器学习 chatgpt
文章目录前言:如何利用ChatGPT来写代码:一个深度指南1.ChatGPT的基本功能概述2.利用ChatGPT辅助代码编写的好处3.ChatGPT支持的编程语言4.如何向ChatGPT提问以获取最佳结果5.实际应用案例6.ChatGPT的局限性及其解决方法7.关于隐私和安全性的注意事项8.未来展望结论前言:如何利用ChatGPT来写代码:一个深度指南近年来,人工智能技术取得了飞跃性的进展,尤其是
第四章:ESP32零基础教学 - 4.2继电器、舵机与L298N电机
龙大大L
ESP32 arduino 单片机 嵌入式硬件 stm32
一、硬件准备ESP32开发板5V继电器模块9g微型舵机(SG90)L298N电机驱动模块DC电机(6-12V)面包板与杜邦线外部电源(用于电机供电)二、继电器控制接线说明继电器引脚ESP32引脚VCC5VGNDGNDINGPIO23代码实现#defineRELAY_PIN23//继电器信号引脚voidsetup(){pinMode(RELAY_PIN,OUTPUT);//设置引脚为输出模式}voi
平衡二叉树(AVL树):数据结构特性与自平衡技术详解
One Key Variable
课程设计
摘要平衡二叉树,尤其是AVL树,在追求高效数据存储与检索的场景中占据重要地位。本文深入剖析AVL树的数据结构特性,详细解读其自平衡技术原理与实现,帮助读者理解AVL树如何在动态数据操作中维持高效性能。一、引言在数据处理过程中,二叉搜索树虽能实现快速查找,但在频繁插入和删除节点时,可能因结构失衡导致查找效率大幅下降。AVL树作为一种自平衡二叉搜索树,通过严格的平衡条件和自平衡技术,确保树在动态操作下
[黑洞与暗粒子]没有光的世界
comsci
无论是相对论还是其它现代物理学,都显然有个缺陷,那就是必须有光才能够计算
但是,我相信,在我们的世界和宇宙平面中,肯定存在没有光的世界....
那么,在没有光的世界,光子和其它粒子的规律无法被应用和考察,那么以光速为核心的
&nbs
jQuery Lazy Load 图片延迟加载
aijuans
jquery
基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载。
对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度。
版本:
jQuery v1.4.4+
jQuery Lazy Load v1.7.2
注意事项:
需要真正实现图片延迟加载,必须将真实图片地址写在 data-original 属性中。若 src
使用Jodd的优点
Kai_Ge
jodd
1. 简化和统一 controller ,抛弃 extends SimpleFormController ,统一使用 implements Controller 的方式。
2. 简化 JSP 页面的 bind, 不需要一个字段一个字段的绑定。
3. 对 bean 没有任何要求,可以使用任意的 bean 做为 formBean。
使用方法简介
jpa Query转hibernate Query
120153216
Hibernate
public List<Map> getMapList(String hql,
Map map) {
org.hibernate.Query jpaQuery = entityManager.createQuery(hql);
if (null != map) {
for (String parameter : map.keySet()) {
jp
Django_Python3添加MySQL/MariaDB支持
2002wmj
mariaDB
现状
首先,
[email protected] 中默认的引擎为 django.db.backends.mysql 。但是在Python3中如果这样写的话,会发现 django.db.backends.mysql 依赖 MySQLdb[5] ,而 MySQLdb 又不兼容 Python3 于是要找一种新的方式来继续使用MySQL。 MySQL官方的方案
首先据MySQL文档[3]说,自从MySQL
在SQLSERVER中查找消耗IO最多的SQL
357029540
SQL Server
返回做IO数目最多的50条语句以及它们的执行计划。
select top 50
(total_logical_reads/execution_count) as avg_logical_reads,
(total_logical_writes/execution_count) as avg_logical_writes,
(tot
spring UnChecked 异常 官方定义!
7454103
spring
如果你接触过spring的 事物管理!那么你必须明白 spring的 非捕获异常! 即 unchecked 异常! 因为 spring 默认这类异常事物自动回滚!!
public static boolean isCheckedException(Throwable ex)
{
return !(ex instanceof RuntimeExcep
mongoDB 入门指南、示例
adminjun
java mongodb 操作
一、准备工作
1、 下载mongoDB
下载地址:http://www.mongodb.org/downloads
选择合适你的版本
相关文档:http://www.mongodb.org/display/DOCS/Tutorial
2、 安装mongoDB
A、 不解压模式:
将下载下来的mongoDB-xxx.zip打开,找到bin目录,运行mongod.exe就可以启动服务,默
CUDA 5 Release Candidate Now Available
aijuans
CUDA
The CUDA 5 Release Candidate is now available at http://developer.nvidia.com/<wbr></wbr>cuda/cuda-pre-production. Now applicable to a broader set of algorithms, CUDA 5 has advanced fe
Essential Studio for WinRT网格控件测评
Axiba
JavaScript html5
Essential Studio for WinRT界面控件包含了商业平板应用程序开发中所需的所有控件,如市场上运行速度最快的grid 和chart、地图、RDL报表查看器、丰富的文本查看器及图表等等。同时,该控件还包含了一组独特的库,用于从WinRT应用程序中生成Excel、Word以及PDF格式的文件。此文将对其另外一个强大的控件——网格控件进行专门的测评详述。
网格控件功能
1、
java 获取windows系统安装的证书或证书链
bewithme
windows
有时需要获取windows系统安装的证书或证书链,比如说你要通过证书来创建java的密钥库 。
有关证书链的解释可以查看此处 。
public static void main(String[] args) {
SunMSCAPI providerMSCAPI = new SunMSCAPI();
S
NoSQL数据库之Redis数据库管理(set类型和zset类型)
bijian1013
redis 数据库 NoSQL
4.sets类型
Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
sadd:向名称为key的set中添加元
异常捕获何时用Exception,何时用Throwable
bingyingao
用Exception的情况
try {
//可能发生空指针、数组溢出等异常
} catch (Exception e) {
 
【Kafka四】Kakfa伪分布式安装
bit1129
kafka
在http://bit1129.iteye.com/blog/2174791一文中,实现了单Kafka服务器的安装,在Kafka中,每个Kafka服务器称为一个broker。本文简单介绍下,在单机环境下Kafka的伪分布式安装和测试验证 1. 安装步骤
Kafka伪分布式安装的思路跟Zookeeper的伪分布式安装思路完全一样,不过比Zookeeper稍微简单些(不
Project Euler
bookjovi
haskell
Project Euler是个数学问题求解网站,网站设计的很有意思,有很多problem,在未提交正确答案前不能查看problem的overview,也不能查看关于problem的discussion thread,只能看到现在problem已经被多少人解决了,人数越多往往代表问题越容易。
看看problem 1吧:
Add all the natural num
Java-Collections Framework学习与总结-ArrayDeque
BrokenDreams
Collections
表、栈和队列是三种基本的数据结构,前面总结的ArrayList和LinkedList可以作为任意一种数据结构来使用,当然由于实现方式的不同,操作的效率也会不同。
这篇要看一下java.util.ArrayDeque。从命名上看
读《研磨设计模式》-代码笔记-装饰模式-Decorator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.Fi
Maven学习(一)
chenyu19891124
Maven私服
学习一门技术和工具总得花费一段时间,5月底6月初自己学习了一些工具,maven+Hudson+nexus的搭建,对于maven以前只是听说,顺便再自己的电脑上搭建了一个maven环境,但是完全不了解maven这一强大的构建工具,还有ant也是一个构建工具,但ant就没有maven那么的简单方便,其实简单点说maven是一个运用命令行就能完成构建,测试,打包,发布一系列功
[原创]JWFD工作流引擎设计----节点匹配搜索算法(用于初步解决条件异步汇聚问题) 补充
comsci
算法 工作 PHP 搜索引擎 嵌入式
本文主要介绍在JWFD工作流引擎设计中遇到的一个实际问题的解决方案,请参考我的博文"带条件选择的并行汇聚路由问题"中图例A2描述的情况(http://comsci.iteye.com/blog/339756),我现在把我对图例A2的一个解决方案公布出来,请大家多指点
节点匹配搜索算法(用于解决标准对称流程图条件汇聚点运行控制参数的算法)
需要解决的问题:已知分支
Linux中用shell获取昨天、明天或多天前的日期
daizj
linux shell 上几年 昨天 获取上几个月
在Linux中可以通过date命令获取昨天、明天、上个月、下个月、上一年和下一年
# 获取昨天
date -d 'yesterday' # 或 date -d 'last day'
# 获取明天
date -d 'tomorrow' # 或 date -d 'next day'
# 获取上个月
date -d 'last month'
#
我所理解的云计算
dongwei_6688
云计算
在刚开始接触到一个概念时,人们往往都会去探寻这个概念的含义,以达到对其有一个感性的认知,在Wikipedia上关于“云计算”是这么定义的,它说:
Cloud computing is a phrase used to describe a variety of computing co
YII CMenu配置
dcj3sjt126com
yii
Adding id and class names to CMenu
We use the id and htmlOptions to accomplish this. Watch.
//in your view
$this->widget('zii.widgets.CMenu', array(
'id'=>'myMenu',
'items'=>$this-&g
设计模式之静态代理与动态代理
come_for_dream
设计模式
静态代理与动态代理
代理模式是java开发中用到的相对比较多的设计模式,其中的思想就是主业务和相关业务分离。所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如我们在进行删除操作的时候需要检验一下用户是否登陆,我们可以删除看成主业务,而把检验用户是否登陆看成其相关业务
【转】理解Javascript 系列
gcc2ge
JavaScript
理解Javascript_13_执行模型详解
摘要: 在《理解Javascript_12_执行模型浅析》一文中,我们初步的了解了执行上下文与作用域的概念,那么这一篇将深入分析执行上下文的构建过程,了解执行上下文、函数对象、作用域三者之间的关系。函数执行环境简单的代码:当调用say方法时,第一步是创建其执行环境,在创建执行环境的过程中,会按照定义的先后顺序完成一系列操作:1.首先会创建一个
Subsets II
hcx2013
set
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note:
Elements in a subset must be in non-descending order.
The solution set must not conta
Spring4.1新特性——Spring缓存框架增强
jinnianshilongnian
spring4
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
shell嵌套expect执行命令
liyonghui160com
一直都想把expect的操作写到bash脚本里,这样就不用我再写两个脚本来执行了,搞了一下午终于有点小成就,给大家看看吧.
系统:centos 5.x
1.先安装expect
yum -y install expect
2.脚本内容:
cat auto_svn.sh
#!/bin/bash
Linux实用命令整理
pda158
linux
0. 基本命令 linux 基本命令整理
1. 压缩 解压 tar -zcvf a.tar.gz a #把a压缩成a.tar.gz tar -zxvf a.tar.gz #把a.tar.gz解压成a
2. vim小结 2.1 vim替换 :m,ns/word_1/word_2/gc  
独立开发人员通向成功的29个小贴士
shoothao
独立开发
概述:本文收集了关于独立开发人员通向成功需要注意的一些东西,对于具体的每个贴士的注解有兴趣的朋友可以查看下面标注的原文地址。
明白你从事独立开发的原因和目的。
保持坚持制定计划的好习惯。
万事开头难,第一份订单是关键。
培养多元化业务技能。
提供卓越的服务和品质。
谨小慎微。
营销是必备技能。
学会组织,有条理的工作才是最有效率的。
“独立
JAVA中堆栈和内存分配原理
uule
java
1、栈、堆
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(public static f