1.前言
1.1 抓取网页
本文将举例说明抓取网页数据的三种方式:正则表达式、BeautifulSoup、lxml。 获取网页内容所用代码详情请参照Python网络爬虫-你的第一个爬虫。利用该代码获取抓取整个网页。
import requests
def download (url, num_retries=2 , user_agent='wswp' , proxies=None) :
'''下载一个指定的URL并返回网页内容
参数:
url(str): URL
关键字参数:
user_agent(str):用户代理(默认值:wswp)
proxies(dict): 代理(字典): 键:‘http’'https'
值:字符串(‘http(s)://IP’)
num_retries(int):如果有5xx错误就重试(默认:2)
#5xx服务器错误,表示服务器无法完成明显有效的请求。
#https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81
'''
print('==========================================' )
print('Downloading:' , url)
headers = {'User-Agent' : user_agent}
try :
resp = requests.get(url, headers=headers, proxies=proxies)
html = resp.text
if resp.status_code >= 400 :
print('Download error:' , resp.text)
html = None
if num_retries and 500 <= resp.status_code < 600 :
return download(url, num_retries - 1 )
except requests.exceptions.RequestException as e:
print('Download error:' , e)
html = None
return html
1.2 爬取目标
爬取http://example.webscraping.com/places/default/view/Australia-14网页中所有显示内容。 分析网页结构可以看出,所有内容都在标签
中,以area为例可以看出,area的值在:
根据这个结构,我们用不同的方式来表达,就可以抓取到所有想要的数据了。
7,686,850 square kilometres
re.search(r'.*?(.*?) ').groups()[0 ]
soup.find('table' ).find('tr' , id='places_area__row' ).find('td' , class_="w2p_fw" ).text
tree.cssselect('table > tr#places_area__row > td.w2p_fw' )[0 ].text_content()
tree.xpath('//tr[@id="places_area__row"]/td[@class="w2p_fw"]' )[0 ].text_content()
Chrome 浏览器可以方便的复制出各种表达方式:
有了以上的download函数和不同的表达式,我们就可以用三种不同的方法来抓取数据了。
2.不同方式抓取数据
2.1 正则表达式爬取网页
正则表达式不管在python还是其他语言都有很好的应用,用简单的规定符号来表达不同的字符串组成形式,简洁又高效。学习正则表达式很有必要。https://docs.python.org/3/howto/regex.html。 python内置正则表达式,无需额外安装。
import re
targets = ('area' , 'population' , 'iso' , 'country' , 'capital' , 'continent' ,
'tld' , 'currency_code' , 'currency_name' , 'phone' , 'postal_code_format' ,
'postal_code_regex' , 'languages' , 'neighbours' )
def re_scraper (html) :
results = {}
for target in targets:
results[target] = re.search(r'.*?(.*?) '
% target, html).groups()[0 ]
return results
2.2BeautifulSoup抓取数据
BeautifulSoup用法可见python 网络爬虫 - BeautifulSoup 爬取网络数据 代码如下:
from bs4 import BeautifulSoup
targets = ('area' , 'population' , 'iso' , 'country' , 'capital' , 'continent' ,
'tld' , 'currency_code' , 'currency_name' , 'phone' , 'postal_code_format' ,
'postal_code_regex' , 'languages' , 'neighbours' )
def bs_scraper (html) :
soup = BeautifulSoup(html, 'html.parser' )
results = {}
for target in targets:
results[target] = soup.find('table' ).find('tr' , id='places_%s__row' % target) \
.find('td' , class_="w2p_fw" ).text
return results
2.3 lxml 抓取数据
from lxml.html import fromstring
def lxml_scraper (html) :
tree = fromstring(html)
results = {}
for target in targets:
results[target] = tree.cssselect('table > tr#places_%s__row > td.w2p_fw' % target)[0 ].text_content()
return results
def lxml_xpath_scraper (html) :
tree = fromstring(html)
results = {}
for target in targets:
results[target] = tree.xpath('//tr[@id="places_%s__row"]/td[@class="w2p_fw"]' % target)[0 ].text_content()
return results
2.4 运行结果
scrapers = [('re' , re_scraper), ('bs' ,bs_scraper), ('lxml' , lxml_scraper), ('lxml_xpath' ,lxml_xpath_scraper)]
html = download('http://example.webscraping.com/places/default/view/Australia-14' )
for name, scraper in scrapers:
print(name,"=================================================================" )
result = scraper(html)
print(result)
==========================================
Downloading: http://example.webscraping.com/places/default/view/Australia-14
re =================================================================
{'area' : '7,686,850 square kilometres' , 'population' : '21,515,754' , 'iso' : 'AU' , 'country' : 'Australia' , 'capital' : 'Canberra' , 'continent' : 'OC ' , 'tld' : '.au' , 'currency_code' : 'AUD' , 'currency_name' : 'Dollar' , 'phone' : '61' , 'postal_code_format' : '####' , 'postal_code_regex' : '^(\\d{4})$' , 'languages' : 'en-AU' , 'neighbours' : '' }
bs =================================================================
{'area' : '7,686,850 square kilometres' , 'population' : '21,515,754' , 'iso' : 'AU' , 'country' : 'Australia' , 'capital' : 'Canberra' , 'continent' : 'OC' , 'tld' : '.au' , 'currency_code' : 'AUD' , 'currency_name' : 'Dollar' , 'phone' : '61' , 'postal_code_format' : '####' , 'postal_code_regex' : '^(\\d{4})$' , 'languages' : 'en-AU' , 'neighbours' : ' ' }
lxml =================================================================
{'area' : '7,686,850 square kilometres' , 'population' : '21,515,754' , 'iso' : 'AU' , 'country' : 'Australia' , 'capital' : 'Canberra' , 'continent' : 'OC' , 'tld' : '.au' , 'currency_code' : 'AUD' , 'currency_name' : 'Dollar' , 'phone' : '61' , 'postal_code_format' : '####' , 'postal_code_regex' : '^(\\d{4})$' , 'languages' : 'en-AU' , 'neighbours' : ' ' }
lxml_xpath =================================================================
{'area' : '7,686,850 square kilometres' , 'population' : '21,515,754' , 'iso' : 'AU' , 'country' : 'Australia' , 'capital' : 'Canberra' , 'continent' : 'OC' , 'tld' : '.au' , 'currency_code' : 'AUD' , 'currency_name' : 'Dollar' , 'phone' : '61' , 'postal_code_format' : '####' , 'postal_code_regex' : '^(\\d{4})$' , 'languages' : 'en-AU' , 'neighbours' : ' ' }
从结果可以看出正则表达式在某些地方返回多余元素,而不是纯粹的文本。这是因为这些地方的网页结构和别的地方不同,因此正则表达式不能完全覆盖一样的内容,如有的地方包含链接和图片。而BeautifulSoup和lxml有专门的提取文本函数,因此不会有类似错误。
既然有三种不同的抓取方式,那有什么区别?应用场合如何?该如何选择呢?
3. 爬虫性能对比
上面的爬虫由于爬取数据量有限,因此无法对比它们的性能。接下来将对比它们爬取大量数据时的性能。
目标 :爬取网页所有显示内容,重复1000次,比较不同爬虫的爬取时间。 准备 :导入网页爬取函数download,导入所有爬虫。
开始coding:
import time
import re
from chp2_all_scrapers import re_scraper, bs_scraper, lxml_scraper, lxml_xpath_scraper
from chp1_download import download
num_iterations = 1000
html = download('http://example.webscraping.com/places/default/view/Australia-14' )
scrapers = [('re' , re_scraper), ('bs' , bs_scraper), ('lxml' , lxml_scraper),
('lxml_xpath' , lxml_xpath_scraper)]
for name, scraper in scrapers:
start_time = time.time()
for i in range(num_iterations):
if scraper == re_scraper:
re.purge()
result = scraper(html)
assert result['area' ] == '7,686,850 square kilometres'
end_time = time.time()
print("=================================================================" )
print('%s: %.2f seconds' % (name, end_time - start_time))
注意 :re.purge() 是为了清除缓存。因为正则表达式默认情况下会缓存搜索,需要对其清除以保证公平性。如果不清除缓存,后面的999次都是在作弊,结果惊人!
运行结果:
Downloading: http://example.webscraping.com/places/default/view/Australia-14
=================================================================
re: 2.40 seconds
=================================================================
bs: 18.49 seconds
=================================================================
lxml: 3.82 seconds
=================================================================
lxml_xpath: 1.53 seconds
Process finished with exit code 0
Downloading: http://example.webscraping.com/places/default/view/Australia-14
=================================================================
re: 0.19 seconds
=================================================================
bs: 18.12 seconds
=================================================================
lxml: 3.43 seconds
=================================================================
lxml_xpath: 1.50 seconds
Process finished with exit code 0
从结果可以明显看出正则表达式和lxml的性能差不多,采用xpath性能最佳,BeautifulSoup性能最差! 因为BeautifulSoup是纯python写的而lxml是c写的,性能可见一斑。
绝大部分网上教程都在使用BeautifulSoup写爬虫,这是因为BeautifulSoup可读性更高,更加人性,而css selector 和xpath需要学习他们特有的表达方式,但是绝对值得学习的。性能提高不止十倍(相对)!
4.结论
爬取方式
性能
易用性
易安装性
正则表达式
快
难
内置
BeautifulSoup
慢
易
易
lxml
快
易
偏难
因此在爬取少量数据时,BeautifulSoup可以胜任,而且易读性高,但是大量数据采集时就建议使用lxml。
你可能感兴趣的:(学习笔记)
C++ 11 Lambda表达式和min_element()与max_element()的使用_c++ lamda函数 min_element((1)
2401_84976182
程序员 c语言 c++ 学习
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上CC++开发知识点,真正体系化!由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新如果你需要这些资料,可以戳这里获取#include#include#includeusingnamespacestd;boolcmp(int
算法学习笔记:17.蒙特卡洛算法 ——从原理到实战,涵盖 LeetCode 与考研 408 例题
在计算机科学和数学领域,蒙特卡洛算法(MonteCarloAlgorithm)以其独特的随机抽样思想,成为解决复杂问题的有力工具。从圆周率的计算到金融风险评估,从物理模拟到人工智能,蒙特卡洛算法都发挥着不可替代的作用。本文将深入剖析蒙特卡洛算法的思想、解题思路,结合实际应用场景与Java代码实现,并融入考研408的相关考点,穿插图片辅助理解,帮助你全面掌握这一重要算法。蒙特卡洛算法的基本概念蒙特卡
分布式学习笔记_04_复制模型
NzuCRAS
分布式 学习 笔记 架构 后端
常见复制模型使用复制的目的在分布式系统中,数据通常需要被分布在多台机器上,主要为了达到:拓展性:数据量因读写负载巨大,一台机器无法承载,数据分散在多台机器上仍然可以有效地进行负载均衡,达到灵活的横向拓展高容错&高可用:在分布式系统中单机故障是常态,在单机故障的情况下希望整体系统仍然能够正常工作,这时候就需要数据在多台机器上做冗余,在遇到单机故障时能够让其他机器接管统一的用户体验:如果系统客户端分布
算法学习笔记:15.二分查找 ——从原理到实战,涵盖 LeetCode 与考研 408 例题
呆呆企鹅仔
算法学习 算法 学习 笔记 考研 二分查找
在计算机科学的查找算法中,二分查找以其高效性占据着重要地位。它利用数据的有序性,通过不断缩小查找范围,将原本需要线性时间的查找过程优化为对数时间,成为处理大规模有序数据查找问题的首选算法。二分查找的基本概念二分查找(BinarySearch),又称折半查找,是一种在有序数据集合中查找特定元素的高效算法。其核心原理是:通过不断将查找范围减半,快速定位目标元素。与线性查找逐个遍历元素不同,二分查找依赖
OKHttp3源码分析——学习笔记
Sincerity_
源码相关 Okhttp 源码解析 读书笔记 httpclient cache
文章目录1.HttpClient与HttpUrlConnection的区别2.OKHttp源码分析使用步骤:dispatcher任务调度器,(后面有详细说明)Request请求RealCallAsyncCall3.OKHttp架构分析1.异步请求线程池,Dispather2.连接池清理线程池-ConnectionPool3.缓存整理线程池DisLruCache4.Http2异步事务线程池,http
Python学习笔记5|条件语句和循环语句
iamecho9
Python从0到1学习笔记 python 学习 笔记
一、条件语句条件语句用于根据不同的条件执行不同的代码块。1、if语句基本语法:if布尔型语句1:代码块#语句1为True时执行的代码示例:age=int(input("请输入你的年龄:"))ifage>=18:print("你已成年")2、if-else语句如果if条件不成立,则执行else代码块:if布尔型语句1:代码块#语句1为True时执行的代码else:代码块#语句1为False时执行的代
5G标准学习笔记14 - CSI--RS概述
刘孬孬沉迷学习
5G 学习 笔记 信息与通信
5G标准学习笔记14-CSI–RS概述大家好~,这里是刘孬孬,今天带着大家一起学习一下5GNR中一个非常非常重要的参考信号------------------CSI-RS信号,CSI-RS不是持续发送,UE只能在网络明确配置了CSI-RS的情况下才能使用其进行信道测量。前言对于CSI-RS,肯定还离不开前面所说的CSI(channelstateinformation),前面也讲过CSI对于MIMO
5G标准学习笔记06-基于AI/ML波束管理
刘孬孬沉迷学习
5G 学习 笔记
5G标准学习笔记06-基于AI/ML波束管理前言前面对于孬孬学习了波束管理的概述,下面要进一步来看一下传统波束管理和现在3GPP中推动的AL/ML波束管理之前的区别联系。一、传统波束管理方法流程传统BM流程主要包括以下步骤:波束扫描(BeamSweeping):gNB通过顺序发送多个窄波束(SSB或CSI-RS),覆盖整个服务区域,UE测量每个波束的信号质量(如L1-RSRP或L1-SINR)。波
5G标准学习笔记03- CSI 反馈增强概述
刘孬孬沉迷学习
5G 笔记 学习
5G标准学习笔记03-CSI反馈增强概述大家好,最近在研究AI/ML3gpp标准NR空口的有关内容,后面可能会给大家介绍一下对应的有关内容AI/ML在3GPP标准中的研究进展在AI/ML在NR空口的应用中,对应标准主要聚焦了3个case进行讨论研究分别是:CSI反馈增强;波束管理;定位精度增强;这三个内容可能比较涉及RAN1/2的具体内容,后面会基于这个进行一定的介绍。今天主要是主要介绍CSI反馈
学习笔记(33):matplotlib绘制简单图表-绘制混淆矩阵热图
宁儿数据安全
# 机器学习 学习 笔记 matplotlib
学习笔记(33):matplotlib绘制简单图表-绘制混淆矩阵热图一、绘制混淆矩阵热图代码解析1.1、导入必要的库importmatplotlib.pyplotaspltfromsklearn.metricsimportconfusion_matriximportseabornassnsmatplotlib.pyplot:Python中最常用的绘图库,用于创建各种图表confusion_matr
LLaMA 学习笔记
AI算法网奇
深度学习基础 人工智能 深度学习
目录LLaMA模型结构:模型微调手册:推理示例:指定位置加载模型测试ok:模型下载:llama-stack下载modelscope下载LLaMA优化技术RMSNormSwiGLU激活函数旋转位置编码(RoPE)LLaMA模型结构:llama3结构详解-CSDN博客模型微调手册:大模型微调LLaMA详细指南(准备环境、数据、配置微调参数+微调过程)_llama微调-CSDN博客显存占用:FP16/B
BOOT_KEY按键(学习笔记)
小高Baby@
学习 笔记
先来让我们了解一下GPIO是什么吧,它在单片机中也有很重要的作用,接下来我们来看看吧。esp32C3是QFN32封装(一种集成电路(IC)封装类型),GPIO引脚一共有22个,从GPIO-0到GPIO-21。从理论上来说,所有的IO引脚都可以复用为任何外设功能,但有些引脚用作连接芯片内部FLASH或者外部FLASH功能时,官方不建议用作其它用途。esp32c3的GPIO,可以用作输入、输出,可以配
【机器学习笔记Ⅰ】9 特征缩放
巴伦是只猫
机器学习 机器学习 笔记 人工智能
特征缩放(FeatureScaling)详解特征缩放是机器学习数据预处理的关键步骤,旨在将不同特征的数值范围统一到相近的尺度,从而加速模型训练、提升性能并避免某些特征主导模型。1.为什么需要特征缩放?(1)问题背景量纲不一致:例如:特征1:年龄(范围0-100)特征2:收入(范围0-1,000,000)梯度下降的困境:量纲大的特征(如收入)会导致梯度更新方向偏离最优路径,收敛缓慢。量纲小的特征(如
Kotlin学习笔记
qq_26907861
1.Val和Varval:用于声明不可变量,不可变是指引用不可变;var:用于声明可变的变量;packagehello//可选的包头funmain(args:Array){//包级可见的函数,接受一个字符串数组作为参数vala="不可变的变量"//不可变的变量varn=2//可变println(a)println(n)}2.fun函数Kotlin中的函数可以这样声明:fun函数名(参数列表):返回
WPF学习笔记(2)——x名称空间详解 上
幽冥宇少
WPF C# WPF学习笔记 初学者 C# VS2013
先说一些基本的,.NET的模块称为程序集(Assembly)。一般情况下,用VS创建的是解决方案(Solution),一个解决方案就是一个完整的程序。解决方案中包含若干个项目(Project),每个项目是可以独立编译的,他的编译结果是一个程序集。常见的程序集是以.exe为扩展名的可执行程序或者是以.dll为扩展名的动态链接库,大多数情况下,我们说“引用其他程序集”的时候,说的是动态链接库。因为.N
初学者的指针学习笔记(1)
近津薪荼
学习 笔记
1.内存和地址1.1内存像学生宿舍一样,被分成许多个房间,每个房间都有自己的房号,每个房间能住8个学生内存被分成许多个单元(小为1Byte),每个单元都有自己的编号,每个单元里能住8个小比特(bite)c语言中,指针就是该单元内存的编号也就是地址,我们可以通过指针快速找到我们要访问的内存1.2编址计算机中的内存编址,是通过硬件设计来完成的,也就是说他被做出来的时候各个内存单元的地址就已经确定了。计
初学者关于自定义类型结构体的学习笔记
近津薪荼
学习 笔记 数据结构
1.结构的特殊声明//匿名结构体类型struct{inta;charb;floatc;}x;struct{inta;charb;floatc;}a[20],*p;p=&x;不可取,本质上是两个不同类型的结构体上述代码的声明方式,该结构体类型,如果不重命名的话,只能用一次(声明时顺便创建变量)2.结构体的自引用structNode{intdata;structNodenext;};上述代码,结构体中
Xilinx系FPGA学习笔记(三)Vivado的仿真及ILA使用
贾saisai
FPGA学习 fpga开发 学习 笔记
系列文章目录文章目录系列文章目录前言仿真验证(类似modelsim)ILA在线调试工具添加ILAILA的例化ILA的使用前言接着学习vivado的使用方法仿真验证(类似modelsim)首先类似添加.v文件的方法,在File-AddSource中选择Addorcreatesimulationsources或者直接在Sources里面选就行然后就编写testbench,类似之前介绍的modelsim
学习笔记day1
Linux基础Linux到底是什么?Linux主要指的是内核(主机中的CPU),它也是我们系统的大脑Ubuntu跟Linux的关系:Ubuntu是Linux系统的一个分支。为什么要选⽤Linux?开源的,用户可以根据自己的喜好和需求来定制系统。性免费,企业可以减少开发成本。安全性可移植性高Linux跟我们⽇常使⽤的windows的区别?操作习惯不⼀样:windows是以图形交互为主;Linux操作
【机器学习|学习笔记】用 Python 结合 graphviz 生成 ID3、C4.5、CART 三种决策树的结构示意图。
【机器学习|学习笔记】用Python结合graphviz生成ID3、C4.5、CART三种决策树的结构示意图【机器学习|学习笔记】用Python结合graphviz生成ID3、C4.5、CART三种决策树的结构示意图文章目录【机器学习|学习笔记】用Python结合graphviz生成ID3、C4.5、CART三种决策树的结构示意图用Python结合graphviz生成ID3、C4.5、CART三种
Text2Reward学习笔记
1.提示词请问,“glew”是一个RL工程师常用的工具库吗?请问,thiscodebase主要是做什么用的呀?1.1解释代码是否可以请您根据thiscodebase的主要功能,参考PyTorch的文档格式和文档风格,使用Markdown格式为选中的代码行编写一段相应的文档说明呢?2.项目环境配置2.1新建环境[official]2.1.1Featurizecondacreate-p~/work/d
pandas学习笔记
kara_486
pandas 学习 笔记
pandas是python中一个性能强大的数据处理库,能进行复杂的数据处理。pandas的数据结构分为三种类型,分别为series,DataFrame和index,对于初学者而言,series和DataFrame这两种结构最为重要。下面作者将重点介绍series和DataFrame这两部分。series的介绍series按照作者的目前的理解是pandas库中最基础的组成部分,seriers是由索引
英语学习笔记2.0
飞升不如收破烂~
学习 笔记
✅正确表达:“HowlonghaveyoubeenteachingEnglish?”或者更简单地问:“HowlongdoyouteachEnglish?”(这个句子语法对,但用在现在习惯性的行为上)用法说明:如果你想问:️“你教英语多久了?”✅用现在完成时(表示一段持续的时间):HowlonghaveyoubeenteachingEnglish?️你可以这样试试新的句子:Howlonghaveyo
C语言笔记
学习笔记仅供参考基础介绍程序就是一组计算机能识别的指令,计算机的一切操作都是由程序控制的。人和计算机都能识别的语言就是就是计算机语言,计算机工作是基于二进制的。计算机能直接识别的二进制代码就是机器指令,机器指令的集合就是机器语言。机器语言与人们习惯使用的语言差别太大,所以人们创造出了符号语言,计算机不能直接识别符号语言的指令,需要汇编程序软件将符号语言指令转成机器指令(二进制代码)。机器语言与汇编
黑马程序员_学习笔记2——wpf计算器
马林雷
WPF学习笔记(27)科学计算器
三千道应用题
C#实例 WPF学习笔记 wpf
科学计算器1.前端界面2.功能代码1.前端界面2.功能代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Wind
【机器学习笔记Ⅰ】10 特征工程
特征工程(FeatureEngineering)详解特征工程是机器学习和数据科学中的核心环节,旨在通过对原始数据的转换、组合和提取,构建更适合模型的高质量特征。其质量直接决定模型性能上限(“数据和特征决定了模型的上限,而算法只是逼近这个上限”)。1.特征工程的核心目标提升模型性能:增强特征与目标变量的相关性。降低计算成本:减少冗余特征,加速训练。改善泛化能力:避免过拟合,提高鲁棒性。2.特征工程的
Java基础学习笔记2
qichi333
学习 笔记 java eclipse
今天是Java基础学习第二天,加油!!!下面是我今天记的一些笔记。(有点懒惰了,爬虫今天没学,因为赖床了(bushi),但我会勤奋起来的^_^,一定一定!明天不能偷懒了天!!)一、运算符例子:inta=10;intb=20;intc=a+b;其中,“+”是运算符,且是算术运算符;“a+b”是表达式,且是算术表达式。1.算术运算符例1:publicclassdemo3{publicstaticvoi
SystemVerilog LRM 学习笔记 -- clocking块
1clocking...endclocking块clocking块是SV新feature,主要是为了更好解决testbench和DUT之间的timing和同步建模的问题,可以使user基于clockcycle在更高的抽象层次上写testbench(如“##3”,表示三个clock)。clocking只能在module/interface/checker/program中声明,不能在function
JavaWeb(苍穹外卖)--学习笔记03(登录生成令牌)
老虎0627
JavaWeb(苍穹外卖) 学习 笔记 java
前言本片文章是学习B站黑马程序员苍穹外卖的学习笔记。在Day01(如果学到登录界面这里卡住了,可以看看这篇文章),登陆界面的后端实现大致可以分为两部分登录功能和登录校验,其中登陆校验的实现是基于令牌JWT技术来实现会话追踪(校验部分还有拦截器Interceptor这个我没太学懂视频也没提,以后在更)JWT令牌基本概念JWT是一种在Web应用程序,简单且安全地处理用户身份验证和信息交换的技术,首先我
java的(PO,VO,TO,BO,DAO,POJO)
Cb123456
VO TO BO POJO DAO
转:
http://www.cnblogs.com/yxnchinahlj/archive/2012/02/24/2366110.html
-------------------------------------------------------------------
O/R Mapping 是 Object Relational Mapping(对象关系映
spring ioc原理(看完后大家可以自己写一个spring)
aijuans
spring
最近,买了本Spring入门书:spring In Action 。大致浏览了下感觉还不错。就是入门了点。Manning的书还是不错的,我虽然不像哪些只看Manning书的人那样专注于Manning,但怀着崇敬 的心情和激情通览了一遍。又一次接受了IOC 、DI、AOP等Spring核心概念。 先就IOC和DI谈一点我的看法。IO
MyEclipse 2014中Customize Persperctive设置无效的解决方法
Kai_Ge
MyEclipse2014
高高兴兴下载个MyEclipse2014,发现工具条上多了个手机开发的按钮,心生不爽就想弄掉他!
结果发现Customize Persperctive失效!!
有说更新下就好了,可是国内Myeclipse访问不了,何谈更新...
so~这里提供了更新后的一下jar包,给大家使用!
1、将9个jar复制到myeclipse安装目录\plugins中
2、删除和这9个jar同包名但是版本号较
SpringMvc上传
120153216
springMVC
@RequestMapping(value = WebUrlConstant.UPLOADFILE)
@ResponseBody
public Map<String, Object> uploadFile(HttpServletRequest request,HttpServletResponse httpresponse) {
try {
//
Javascript----HTML DOM 事件
何必如此
JavaScript html Web
HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序。
事件通常与函数结合使用,函数不会在事件发生前被执行!
注:DOM: 指明使用的 DOM 属性级别。
1.鼠标事件
属性  
动态绑定和删除onclick事件
357029540
JavaScript jquery
因为对JQUERY和JS的动态绑定事件的不熟悉,今天花了好久的时间才把动态绑定和删除onclick事件搞定!现在分享下我的过程。
在我的查询页面,我将我的onclick事件绑定到了tr标签上同时传入当前行(this值)参数,这样可以在点击行上的任意地方时可以选中checkbox,但是在我的某一列上也有一个onclick事件是用于下载附件的,当
HttpClient|HttpClient请求详解
7454103
apache 应用服务器 网络协议 网络应用 Security
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需
递归 逐层统计树形结构数据
darkranger
数据结构
将集合递归获取树形结构:
/**
*
* 递归获取数据
* @param alist:所有分类
* @param subjname:对应统计的项目名称
* @param pk:对应项目主键
* @param reportList: 最后统计的结果集
* @param count:项目级别
*/
public void getReportVO(Arr
访问WEB-INF下使用frameset标签页面出错的原因
aijuans
struts2
<frameset rows="61,*,24" cols="*" framespacing="0" frameborder="no" border="0">
MAVEN常用命令
avords
Maven库:
http://repo2.maven.org/maven2/
Maven依赖查询:
http://mvnrepository.com/
Maven常用命令: 1. 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName 
PHP如果自带一个小型的web服务器就好了
houxinyou
apache 应用服务器 Web PHP 脚本
最近单位用PHP做网站,感觉PHP挺好的,不过有一些地方不太习惯,比如,环境搭建。PHP本身就是一个网站后台脚本,但用PHP做程序时还要下载apache,配置起来也不太很方便,虽然有好多配置好的apache+php+mysq的环境,但用起来总是心里不太舒服,因为我要的只是一个开发环境,如果是真实的运行环境,下个apahe也无所谓,但只是一个开发环境,总有一种杀鸡用牛刀的感觉。如果php自己的程序中
NoSQL数据库之Redis数据库管理(list类型)
bijian1013
redis 数据库 NoSQL
3.list类型及操作
List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。
&nbs
谁在用Hadoop?
bingyingao
hadoop 数据挖掘 公司 应用场景
Hadoop技术的应用已经十分广泛了,而我是最近才开始对它有所了解,它在大数据领域的出色表现也让我产生了兴趣。浏览了他的官网,其中有一个页面专门介绍目前世界上有哪些公司在用Hadoop,这些公司涵盖各行各业,不乏一些大公司如alibaba,ebay,amazon,google,facebook,adobe等,主要用于日志分析、数据挖掘、机器学习、构建索引、业务报表等场景,这更加激发了学习它的热情。
【Spark七十六】Spark计算结果存到MySQL
bit1129
mysql
package spark.examples.db
import java.sql.{PreparedStatement, Connection, DriverManager}
import com.mysql.jdbc.Driver
import org.apache.spark.{SparkContext, SparkConf}
object SparkMySQLInteg
Scala: JVM上的函数编程
bookjovi
scala erlang haskell
说Scala是JVM上的函数编程一点也不为过,Scala把面向对象和函数型编程这两种主流编程范式结合了起来,对于熟悉各种编程范式的人而言Scala并没有带来太多革新的编程思想,scala主要的有点在于Java庞大的package优势,这样也就弥补了JVM平台上函数型编程的缺失,MS家.net上已经有了F#,JVM怎么能不跟上呢?
对本人而言
jar打成exe
bro_feng
java jar exe
今天要把jar包打成exe,jsmooth和exe4j都用了。
遇见几个问题。记录一下。
两个软件都很好使,网上都有图片教程,都挺不错。
首先肯定是要用自己的jre的,不然不能通用,其次别忘了把需要的lib放到classPath中。
困扰我很久的一个问题是,我自己打包成功后,在一个同事的没有装jdk的电脑上运行,就是不行,报错jvm.dll为无效的windows映像,如截图
最后发现
读《研磨设计模式》-代码笔记-策略模式-Strategy
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化
简单理解:
1、将不同的策略提炼出一个共同接口。这是容易的,因为不同的策略,只是算法不同,需要传递的参数
cmd命令值cvfM命令
chenyu19891124
cmd
cmd命令还真是强大啊。今天发现jar -cvfM aa.rar @aaalist 就这行命令可以根据aaalist取出相应的文件
例如:
在d:\workspace\prpall\test.java 有这样一个文件,现在想要将这个文件打成一个包。运行如下命令即可比如在d:\wor
OpenJWeb(1.8) Java Web应用快速开发平台
comsci
java 框架 Web 项目管理 企业应用
OpenJWeb(1.8) Java Web应用快速开发平台的作者是我们技术联盟的成员,他最近推出了新版本的快速应用开发平台 OpenJWeb(1.8),我帮他做做宣传
OpenJWeb快速开发平台以快速开发为核心,整合先进的java 开源框架,本着自主开发+应用集成相结合的原则,旨在为政府、企事业单位、软件公司等平台用户提供一个架构透
Python 报错:IndentationError: unexpected indent
daizj
python tab 空格 缩进
IndentationError: unexpected indent 是缩进的问题,也有可能是tab和空格混用啦
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且在Python语言里,缩进而非花括号或者某种关键字,被用于表示语句块的开始和退出。增加缩进表示语句块的开
HttpClient 超时设置
dongwei_6688
httpclient
HttpClient中的超时设置包含两个部分:
1. 建立连接超时,是指在httpclient客户端和服务器端建立连接过程中允许的最大等待时间
2. 读取数据超时,是指在建立连接后,等待读取服务器端的响应数据时允许的最大等待时间
在HttpClient 4.x中如下设置:
HttpClient httpclient = new DefaultHttpC
小鱼与波浪
dcj3sjt126com
一条小鱼游出水面看蓝天,偶然间遇到了波浪。 小鱼便与波浪在海面上游戏,随着波浪上下起伏、汹涌前进。 小鱼在波浪里兴奋得大叫:“你每天都过着这么刺激的生活吗?简直太棒了。” 波浪说:“岂只每天过这样的生活,几乎每一刻都这么刺激!还有更刺激的,要有潮汐变化,或者狂风暴雨,那才是兴奋得心脏都会跳出来。” 小鱼说:“真希望我也能变成一个波浪,每天随着风雨、潮汐流动,不知道有多么好!” 很快,小鱼
Error Code: 1175 You are using safe update mode and you tried to update a table
dcj3sjt126com
mysql
快速高效用:SET SQL_SAFE_UPDATES = 0;下面的就不要看了!
今日用MySQL Workbench进行数据库的管理更新时,执行一个更新的语句碰到以下错误提示:
Error Code: 1175
You are using safe update mode and you tried to update a table without a WHERE that
枚举类型详细介绍及方法定义
gaomysion
enum javaee
转发
http://developer.51cto.com/art/201107/275031.htm
枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。建议大家可以看看,这两篇文章,《java枚举类型入门》和《C++的中的结构体和枚举》,供大家参考。
枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum
Merge Sorted Array
hcx2013
array
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:You may assume that nums1 has enough space (size that is
Expression Language 3.0新特性
jinnianshilongnian
el 3.0
Expression Language 3.0表达式语言规范最终版从2013-4-29发布到现在已经非常久的时间了;目前如Tomcat 8、Jetty 9、GlasshFish 4已经支持EL 3.0。新特性包括:如字符串拼接操作符、赋值、分号操作符、对象方法调用、Lambda表达式、静态字段/方法调用、构造器调用、Java8集合操作。目前Glassfish 4/Jetty实现最好,对大多数新特性
超越算法来看待个性化推荐
liyonghui160com
超越算法来看待个性化推荐
一提到个性化推荐,大家一般会想到协同过滤、文本相似等推荐算法,或是更高阶的模型推荐算法,百度的张栋说过,推荐40%取决于UI、30%取决于数据、20%取决于背景知识,虽然本人不是很认同这种比例,但推荐系统中,推荐算法起的作用起的作用是非常有限的。
就像任何
写给Javascript初学者的小小建议
pda158
JavaScript
一般初学JavaScript的时候最头痛的就是浏览器兼容问题。在Firefox下面好好的代码放到IE就不能显示了,又或者是在IE能正常显示的代码在firefox又报错了。 如果你正初学JavaScript并有着一样的处境的话建议你:初学JavaScript的时候无视DOM和BOM的兼容性,将更多的时间花在 了解语言本身(ECMAScript)。只在特定浏览器编写代码(Chrome/Fi
Java 枚举
ShihLei
java enum 枚举
注:文章内容大量借鉴使用网上的资料,可惜没有记录参考地址,只能再传对作者说声抱歉并表示感谢!
一 基础 1)语法
枚举类型只能有私有构造器(这样做可以保证客户代码没有办法新建一个enum的实例)
枚举实例必须最先定义
2)特性
&nb
Java SE 6 HotSpot虚拟机的垃圾回收机制
uuhorse
java HotSpot GC 垃圾回收 VM
官方资料,关于Java SE 6 HotSpot虚拟机的garbage Collection,非常全,英文。
http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning
&