:
处理爬取成果
while:
url = 首元素出队
if 超时返回:
已经爬完整站,退出循环
启动新线程(爬取(url))
完整代码
from bs4 import BeautifulSoup
import requests
import threading
import time
class LQueue:
def __init__(self):
self._queue = []
self.mutex = threading.Lock()
self.condition = threading.Condition(self.mutex)
def put(self, item):
with self.condition:
self._queue.append(item)
self.condition.notify()
def get_nowait(self):
if not self.empty():
return self._queue.pop(0)
else:
raise IndexError('Empty Queue')
def get(self, timeout=60):
with self.condition:
endtime = time.time() + timeout
while True:
if not self.empty():
return self._queue.pop(0)
else:
remaining = endtime - time.time()
if remaining <= 0.0:
return None
self.condition.wait(remaining)
def has(self, item):
if item in self._queue:
return True
else:
return False
def empty(self):
if self._queue.__len__() == 0:
return True
else:
return False
def find_links(url, queue):
print('Accessing:{}'.format(url))
headers = {
'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5'
}
try:
html = requests.get(url, headers=headers, timeout=30)
html.raise_for_status
html.encoding = html.apparent_encoding
except:
return
soup = BeautifulSoup(html.text, "html.parser")
tds = soup.find('tbody').find_all('td', class_='name four wide')
for td in tds:
if td.find('span', class_='octicon octicon-file-directory') is not None:
# directory enqueue 'cache'
href = 'https://opendev.org' + td.find('a')['href']
if not queue.has(href):
queue.put(href)
elif td.find('span', class_='octicon octicon-file-text') is not None:
href = 'https://opendev.org' + td.find('a')['href']
# 处理爬取成果
cache = LQueue()
link = 'https://opendev.org/openstack/neutron'
cache.put(link)
while True:
url = cache.get(35)
if url is None:
break
threading.Thread(target=find_links, args=(url, cache)).start()
这时候你可以跑一下,体会那种充分利用计算机资源的感觉。不过在这段代码里,我没有写对爬取成果处理的部分。因为我想介绍一个有意思的东西——任务队列。在这个场景中,它跟多线程的作用差不多,但它真正的意义在于能帮我把任务分发到其他机器上去执行,类似的好处还有使用“订阅-发布”让多台机器帮你一起干等等。至于分发什么任务,这就随心所欲了。比如把所有URL成果放进数据库里,再设计一个定时任务,让它每过一会帮你做一次去重操作。 我用的是RQ(RedisQueue),一个很轻量级的 python 任务队列库,RQ 的工作依赖于Redis,并且需要 Redis版本 >= 3.0.0.。我已经安装过了,直接运行。
$ redis-server
注意: 由于我是本地运行、使用,因此Redis侦听localhost:6379,并且我连接它的时候也不需要安全验证。如果你是在不同的机器上,需要合理的修改配置文件。
接着安装rq库
$ pip3 install rq
增加实现 rq 的代码
...
import rq
from redis import Redis
class LQueue:
...
def find_links(url, queue, task_queue):
...
elif td.find('span', class_='octicon octicon-file-text') is not None:
# 把爬取成果发送到任务队列,让 'process_result' 去处理
href = 'https://opendev.org' + td.find('a')['href']
task_queue.enqueue('tasks.process_result', href)
...
cache.put(link)
# 创建任务队列对象,绑定到名叫 'task1' 的worker上
task_queue1 = rq.Queue('task1', connection=Redis.from_url('redis://'))
while True:
url = cache.get(35)
if url is None:
break
threading.Thread(target=find_links, args=(url, cache, task_queue1)).start()
任务队列里有个worker
的概念,当我使用obj.enqueue()
把任务送进队列之后,worker
正这个任务的执行者。即然是交给人家任务,那就得告诉人家怎么干,如果需要加工原材料,那原材料也得一并提供。例如我把一张原始表单发给助理,告诉她明天下班之前按预定模板整理成报表并邮件发送给张三抄给我。助理就是worker。在task_queue.enqueue('tasks.process_result', href)
中,'tasks.process_result'
是任务描述,href
是原始表单。多个worker可以同时绑定到一个队列上,就好比我有多个助理,他们同时帮我干一件事。每个worker也可以分别绑到不同的队列上,就像我把不同的任务交给不同的助理。
在工作目录下创建文件tasks.py
,并添加任务处理代码。我尽量言简意赅,保持页面清爽,就直接print了,想像留给你。
def process_result(href):
print(href)
接着开启一个新的终端窗口,进入到工作目录,启动一个worker
rqworker task1
再试着跑一下,看看worker的控制台是不是像我的一样输出的url内容。
限制并发访问数量
如果一直停留在访问初始连接的字样上,很有可能是刚刚开启的线程数量太大,导致目标站服务器让你“冷静一会”。这时候尝试用浏览器再访问一下初始URL,如果一直连接不成功,就可以确认结果了。 说实话我是非常喜欢那种简单粗爆直接硬来的畅快感,像不堵车的五环一脚油到底。可目标站显然承受不了这种过量的连接。工具在给我们带来便利的同时,它也产生了一定的危害。说到底,关键在于利刃作什么用。切记要在合理合法的范围内收集信息。 像上面的例子实际来说是不可取的,也行不通。我准备再次优化一下,限制它并发访问的数量。
还是先来看看伪码的实现
def 爬取(url):
html = 访问(url)
for td in html:
if 在中找到了:
cache.入队(td.url)
elif 在 中找到了:
处理爬取成果
唤醒因数量过载而被阻塞的线程
while 队列不为空:
url = 首元素出队
if url is None:
已经爬完整站,退出循环
if 计数器过载
等待运行中的线程执行完毕后唤醒我
计数器 ++
多线程爬取(url)
计数器 --
增加限制和唤醒线程的代码
class LQueue:
...
def find_links(url, queue, task_queue, condition):
print('Accessing:{}'.format(url))
headers = {
'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5'
}
try:
html = requests.get(url, headers=headers, timeout=30)
html.raise_for_status
html.encoding = html.apparent_encoding
except:
with condition:
# 异常情况下的唤醒
condition.notify()
return
soup = BeautifulSoup(html.text, "html.parser")
tds = soup.find('tbody').find_all('td', class_='name four wide')
for td in tds:
if td.find('span', class_='octicon octicon-file-directory') is not None:
# directory enqueue 'cache'
href = 'https://opendev.org' + td.find('a')['href']
if not queue.has(href):
queue.put(href)
elif td.find('span', class_='octicon octicon-file-text') is not None:
# send to task queue
href = 'https://opendev.org' + td.find('a')['href']
task_queue.enqueue('tasks.process_result', href)
with condition:
# 正常执行完毕后的唤醒
condition.notify()
cache = LQueue()
link = 'https://opendev.org/openstack/neutron'
cache.put(link)
task_queue1 = rq.Queue('task1', connection=Redis.from_url('redis://'))
condition = threading.Condition(threading.Lock())
# 最多同时开启线程
counter = 5
while True:
url = cache.get(35)
if url is None:
break
if counter <= 0:
with condition:
condition.wait()
counter = counter + 1
threading.Thread(target=find_links, args=(url, cache, task_queue1, condition)).start()
counter = counter - 1
你可能感兴趣的:(对爬取整站进行多线程优化)
统一的视频动作模型
三谷秋水
计算机视觉 机器学习 人工智能 计算机视觉 深度学习 机器学习 人工智能
25年3月来自斯坦福大学的论文“UnifiedVideoActionModel”。统一的视频和动作模型对机器人技术具有重大意义,其中视频为动作预测提供丰富的场景信息,而动作为视频预测提供动态信息。然而,有效地结合视频生成和动作预测仍然具有挑战性,当前基于视频生成的方法在动作准确性和推理速度方面难以与直接策略学习的性能相匹配。为了弥补这一差距,引入统一的视频动作模型(UVA),它联合优化视频和动作预
DeepSeek、Grok 与 ChatGPT 三巨头:技术架构与应用场景的全方位解析
云策量化
Deepseek chatgpt deepseek grok
前言在当今人工智能领域,DeepSeek、Grok和ChatGPT作为语言模型的三巨头,各自凭借独特的技术架构和广泛的应用场景,在自然语言处理领域占据着重要地位。本文将对这三款模型的技术架构和应用场景进行全方位解析,以期为读者提供深入的了解和有价值的参考。一、技术架构(一)DeepSeekDeepSeek是由DeepSeek团队开发的一款大型语言模型,其技术架构基于深度学习中的Transforme
侯捷 C++ 课程学习笔记:深入掌握 C++ 高阶特性 —— 实践与心得分享
清水白石008
C++ 学习笔记 课程教程 c++ 学习 笔记
侯捷C++课程学习笔记:深入掌握C++高阶特性——实践与心得分享自从开始接触侯捷C++系列精品课程以来,我对C++语言有了全新的认识与深入理解。这套课程不仅系统地梳理了C++的基础知识,更从实际案例中展示了许多高阶特性和工程实战技巧。作为一名长期从事C++开发的专业人士,我深深感受到侯捷老师讲解中那种由浅入深、逻辑严密的魅力,也正是这种教学风格让我在短时间内掌握了不少难以琢磨的知识点。今天,我将结
Python多进程Logging
ftpeak
Python python linux 开发语言 logging
多个进程的logging向同一个.log文件写入是一套Python程序被多次启动时(多进程启动)无法回避的问题。一个进程的程序正在向.log文件写入的同时,另一个进行启动的程序也需要向同一个.log文件写入,会产生异常吗?答案是:会的!直接写入存在的问题如果多个进程直接使用Python的logging模块向同一个文件写入日志,可能会出现日志内容混乱、数据丢失等问题。这是因为多个进程同时访问和修改文
OpenCV 4.2.0与扩展模块安装与应用指南
土城三富
本文还有配套的精品资源,点击获取简介:OpenCV4.2.0是一个先进的计算机视觉库,包含了图像处理、计算机视觉和机器学习算法。本压缩包包含OpenCV核心库和扩展模块(opencv_contrib),版本均为4.2.0。该版本引入了性能增强、API优化以及对深度学习框架和硬件加速技术的更新支持。扩展模块提供了额外的实验性算法和功能,有助于研究和开发新算法。指南详细介绍了如何安装和配置这些库,并提
SQLAlchemy 的内存消耗
ftpeak
DB Python 数据库 python sql
为何要研究SQLAlchemy的内存消耗问题?因为SQLAlchemy在应用中,绝大多数问题体现在应用人员对SQLAlchemy的内存消耗问题不认知、不重视、不处理,最终造成整个系统的大问题,使SQLAlchemy的性能大打折扣,最终影响了SQLAlchemy的在您手中的可用性。通过以下解决问题的手法,可以有效控制SQLAlchemy的内存消耗,提高应用程序的性能和稳定性。1.连接池相关内存消耗原
C# 如何给kafka消息配置优先级按序消费
躺着发呆
C# 大数据 kafka c# 分布式 开发语言
顾名思义kafka消息主题是没有优先级的配置,没办法配置消费顺序的,所有我们需要想办法给kafka消息配置消费顺序,如何做呢?下面我给大家举个简单优先级事例,比如高中低三个顺序消费消息首先要定义三个消息主题,分别是高、中、低是哪个主题,英文分别是high、medium、low这个时候他们还是没有先后消费的本领,下面需要我们赋予他们这个顺序级别思路如下消费顺序,高》中》低,高和中都是可以插队来进行消
YOLOV11|YOLO12改进系列指南
魔鬼面具
YOLO
基于Ultralytics的YOLO11|YOLO12改进目前自带的一些改进方案(持续更新)为了感谢各位对本项目的支持,本项目的赠品是yolov5-PAGCP通道剪枝算法.具体使用教程专栏改进汇总YOLO11系列二次创新系列ultralytics/cfg/models/11/yolo11-RevCol.yaml使用(ICLR2023)ReversibleColumnNetworks对yolo11主
使用ssh-keygen命令生成密钥对无密码远程登陆linux主机
哎哟喂我去
rhel6
我们在工作或试验中经常会需要登录多台linux主机进行操作,开启过多的ssh登陆界面,在不同的主机间切换时是非常让人的抓狂一件事情,只登陆一台linux主机然后通过此主机ssh登陆到其他主机这样是比较好的一种方式,但是在ssh登陆到其他主机时频繁的输入密码会让我们一直做重复的输入密码的工作,那有没有可以自动记住密码,或者不需要输入密码的工具呢?linux自带的ssh-kengen命令可以让我们轻松
PyQt6/PySide6 的 QSettings 类(配置管理)
燃灯工作室
Pyside python 开发语言
一、QSettings核心机制存储原理:基于键值对的持久化存储Windows:注册表路径HKEY_CURRENT_USER\Software\[组织名]\[应用名]macOS:~/Library/Preferences/[组织名].[应用名].plistLinux:~/.config/[组织名]/[应用名].conf基础代码框架:fromPySide6.QtCoreimportQSettings#
OpenCV ML 模块使用指南
ice_junjun
OpenCV opencv 人工智能 计算机视觉
一、模块概述OpenCV的ML模块提供了丰富的机器学习算法,可用于解决各种计算机视觉和数据分析问题。本指南将详细介绍该模块中主要的机器学习算法,包括支持向量机(SVM)、K均值聚类(K-Means)和神经网络(ANN),并结合图像分类和聚类分析这两个典型应用场景进行代码实现与解释。二、主要函数及类详解(一)支持向量机(SVM):cv.ml.SVM_create()功能支持向量机(SVM)是一种强大
鸿蒙系统--搭建Ubuntu环境
ice_junjun
ubuntu linux bash
搭建Ubuntu环境在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的VisualStudioCode进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、Hi3516系列开发板。因此,建议使用Ubuntu的编译环境对源码进行编译。在以上的设备开发场景中,可以搭建一套Windows+Ubu
Qt C++ 多线程串口通讯同步机制示例
ice_junjun
qt c++ 开发语言
当在QtC++中使用多线程进行串口通讯时,由于串口的阻塞读取特性,必要的线程同步和数据保护也是非常重要的。以下给出一个实现多个线程共享一个串口实例的示例程序,并使用QMutex作为线程同步机制来确保资源的安全访问:创建一个名为SerialPortManager的单例类,该类封装了串口的打开、关闭、读写等操作并提供给其他线程调用:classSerialPortManager:publicQObjec
SQLAdmin 开源项目教程
羿辰果Gemstone
SQLAdmin开源项目教程项目地址:https://gitcode.com/gh_mirrors/sq/sqladmin项目介绍SQLAdmin是一个灵活的Admin接口,专为SQLAlchemy模型设计。它支持SQLAlchemy的同步/异步引擎,并与Starlette和FastAPI框架集成。SQLAdmin使用WTForms进行表单构建,并支持SQLModel。其用户界面基于Tabler。
Linux内核网络设备注册与地址族协同机制深度解析
109702008
# C语言 编程 网络 网络 人工智能 c语言
在Linux网络子系统中,网络设备注册与地址族(AddressFamily)的协同工作机制是构建高性能网络应用的核心基础。本文将以IPoIB(InfiniBandoverIP)驱动为例,深入解析register_netdev函数在设备注册中的作用,地址族的选择对网络通信的影响,以及如何通过自定义协议实现灵活的网络控制。一、网络设备注册机制解析1.1register_netdev的核心作用regis
【001安卓开发方案调研】之Java+Gradle+XML 原生安卓开发
ThinkPet
移动app开发 android java xml
基于2025年国内安卓开发领域的最新动态,结合Java+Gradle+XML技术组合的生态发展,以下是综合分析:一、技术成熟度评估1.核心架构稳定性Java语言基础作为安卓开发官方支持语言,Java在国内拥有超过15年的技术积累,字节码编译机制与安卓ART虚拟机的深度适配,使其在内存管理、多线程处理等场景表现稳定。主流应用如微信、支付宝均保留Java核心模块。Gradle构建体系Gradle8.5
Oracle证书靠谱吗?值得考吗?
噗老师
Oracle认证 oracle 数据库
Oracle认证在数据库管理领域享有极高的声誉和价值,是许多专业人士职业生涯中的重要里程碑。那么,Oracle认证是否值得投入时间和精力去考取呢?这个问题的答案很大程度上取决于你的职业规划、个人兴趣和对未来的展望。首先,Oracle认证的价值还体现在其广泛的行业需求上。在金融、医疗、政府等多个行业中,对数据库管理和分析的依赖性日益增加,这导致了对Oracle专业人才的巨大需求。Oracle数据库在
深入理解Python闭包与递归:原理、应用与实践
Multiple-ji
python 开发语言
目录闭包什么是闭包:闭包的基本结构:实现闭包的条件:1.嵌套函数2.内函数引用外部函数的变量3.外部函数返回内部函数4.外部函数已经执行完毕递归函数什么是递归函数:递归函数条件1.必须有个明确的结束条件———递归出口2.每进行更深一步的递归,问题规模相比上一次递归都要有所减少3.相邻两次重复之间有紧密联系分析一下这段代码1.函数定义:2.基准条件(BaseCase)3.递归条件(Recursive
Golang可选参数实践
yzh_1346983557
golang 可选参数
背景:go不支持类似java的方法重载,但对于函数的可选参数和默认参数配置,通常要在不影响不破坏现有逻辑基础上进行参数的添加。实现:通过options选项,使用函数进行参数的初始化和可选值的设置。代码:packagemainimport"fmt"//go实现可选参数实践//背景:go不支持方法重载,但对于函数的可选参数和默认参数配置,通常要在不影响不破坏现有逻辑基础上进行参数的添加//实现:通过o
强化学习中策略网络模型设计与优化技巧
数字扫地僧
计算机视觉 深度学习
I.引言强化学习(ReinforcementLearning,RL)是一种通过与环境交互,学习如何采取行动以最大化累积奖励的机器学习方法。策略网络(PolicyNetwork)是强化学习中一种重要的模型,它直接输出动作的概率分布或具体的动作。本篇博客将深入探讨策略网络的设计原则、优化技巧,并结合具体实例展示其应用。II.策略网络的基本概念A.策略网络的定义策略网络是一种神经网络,它接受当前状态作为
【MySQL基础-10】MySQL中的LENGTH()函数:用法详解与实例分析
AllenBright
# MySQL mysql 数据库
在MySQL数据库中,LENGTH()函数是一个非常常用的字符串函数,用于计算字符串的字节长度。理解并掌握LENGTH()函数的用法,对于处理字符串数据、优化查询以及进行数据验证都非常有帮助。本文将详细介绍LENGTH()函数的用法,并通过实例演示其在实际中的应用。1.LENGTH()函数的基本语法LENGTH()函数的基本语法如下:LENGTH(str)str:要计算长度的字符串或字段。可以是字
麒麟服务器操作系统Redis部署手册
太极淘
麒麟操作系统管理工具 服务器 redis 运维
软件简介Redis****介绍REmoteDIctionaryServer(Redis)是一个由SalvatoreSanfilippo写的key-value存储系统,是跨平台的非关系型数据库。Redis是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的API。Redis通常被称为数据结构服务器,因为
桥接模式 (Bridge Pattern)
直隶码农
二十三种设计模式 桥接模式 c++ 设计模式
桥接模式(BridgePattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化。一、基础1意图将抽象部分与实现部分分离,使它们可以独立变化。2适用场景当你不希望在抽象和实现部分之间有固定的绑定关系时。当类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充时。当对一个抽象的实现部分的修改应对客户不产生影响时。当你想对客户完全隐藏抽象的实现部分时。当你有许多类要生成的类
Linux系统安全加固基础
linux言叙
Linux安全 系统加固 linux centos 运维
注:建议在修改相关配置文件时,首先对需要修改文件进行备份。1、ssh远程连接vi/etc/sshd/sshd_configPort65531#修改ssh端口,默认22ListenAddress192.168.1.X#允许ssh登录的IP地址PermitRootLoginno#禁止root通过ssh连接)
[email protected] .*#允许用户test从IP为192.168.1
精密校平机:工业制造的精度之源
玛哈特-小易
制造 精密矫平机 科技
在现代工业制造的精密领域,精密校平机已成为确保材料平整度和产品精度的关键设备。它广泛应用于汽车制造、电子设备、航空航天、医疗设备等多个行业,为提高产品质量和生产效率发挥着不可或缺的作用。工作原理与技术优势精密校平机采用先进的多辊矫平技术,结合高精度的压力调节系统,能够自动适应不同材质、厚度的板材,确保每一次校平作业都精准无误。其工作原理是通过机械设备对材料施加一定的力,使材料在弹塑性弯曲条件下,通
nginx请求限流设置:常见的有基于 IP 地址的限流、基于请求速率的限流以及基于连接数的限流
绝顶少年
nginx tcp/ip 运维
在Nginx中可以通过不同的方式进行请求限流,常见的有基于IP地址的限流、基于请求速率的限流以及基于连接数的限流等,以下为你详细介绍各种限流设置的实现方法。基于IP地址的限流这种方式可以限制每个IP地址在一定时间内的请求次数。配置步骤定义限流区域:在http块中定义一个限流区域,使用limit_req_zone指令。http{#定义一个名为one的限流区域,使用$binary_remote_add
【数学建模】熵权法
烟锁池塘柳0
数学建模 数学建模 算法
熵权法介绍熵权法是一种常用的用于多指标决策问题中的权重确定方法,它通过对决策矩阵的熵值进行计算,来自动地评估各个指标的权重。熵值能够反映各个指标的不确定性,熵值越小,表明该指标的信息量越大,反之亦然。熵权法可以避免人为设定权重的问题,通过熵权法确定的权重是一个客观量,只和数据本身的性质有关。熵权法在多目标优化问题中具有广泛的应用。文章目录熵权法介绍1.熵权法的基本原理2.熵权法步骤步骤1:标准化决
对 Ajax 技术的理解
向贤
技术面试 前端开发 ajax 前端 javascript
文章目录一、技术原理与核心机制1.异步通信流程2.核心对象与API3.数据格式演进二、Ajax的核心优势三、应用场景与示例1.表单动态验证2.动态内容加载3.实时数据更新四、Ajax与传统同步请求对比五、安全性考量与解决方案1.安全威胁2.防御措施3.跨域解决方案六、现代演进与相关技术1.FetchAPI取代XHR2.异步编程优化3.单页应用(SPA)框架七、总结应用建议:Ajax(Asynchr
介于YOLOv5的裂缝识别系统
程序员~小强
YOLO
介于YOLOv5的裂缝识别系统在现代工业中,裂缝监测是的保障设施安全的重要环节。我们公司的新项目——基于YOLOv5的裂缝识别系统,将为您提供高效、精准的解决方案,助力各类工程项目的质量管理。系统优势我们的裂缝识别系统借助YOLOv5进行深度学习,经过精心训练,拥有强大的图像识别能力。只需简单的步骤,您就能将复杂的裂缝检测转化为轻松的操作,让分析变得更加简单、高效。核心功能图片上传与场景选择用户可
nebula graph传统使用Docker进行项目发版
boy快快长大
解决问题合集 Nebula Graph数据库 docker java 容器
nebulagraph传统使用Docker进行项目发版1.nebulagraph服务2.搭建ES集群3.注意事项3.1图数据库的启动顺序3.2模糊查询失效1.nebulagraph服务1.在测试服务器中执行如下命令dockercommit85b6e2b8xxxxxx_nebula_es:1.0.0.2执行dockerimages之后能看到新的镜像xxx_nebula_es:1.0.0.2这里将测试
312个免费高速HTTP代理IP(能隐藏自己真实IP地址)
yangshangchuan
高速 免费 superword HTTP代理
124.88.67.20:843
190.36.223.93:8080
117.147.221.38:8123
122.228.92.103:3128
183.247.211.159:8123
124.88.67.35:81
112.18.51.167:8123
218.28.96.39:3128
49.94.160.198:3128
183.20
pull解析和json编码
百合不是茶
android pull解析 json
n.json文件:
[{name:java,lan:c++,age:17},{name:android,lan:java,age:8}]
pull.xml文件
<?xml version="1.0" encoding="utf-8"?>
<stu>
<name>java
[能源与矿产]石油与地球生态系统
comsci
能源
按照苏联的科学界的说法,石油并非是远古的生物残骸的演变产物,而是一种可以由某些特殊地质结构和物理条件生产出来的东西,也就是说,石油是可以自增长的....
那么我们做一个猜想: 石油好像是地球的体液,我们地球具有自动产生石油的某种机制,只要我们不过量开采石油,并保护好
类与对象浅谈
沐刃青蛟
java 基础
类,字面理解,便是同一种事物的总称,比如人类,是对世界上所有人的一个总称。而对象,便是类的具体化,实例化,是一个具体事物,比如张飞这个人,就是人类的一个对象。但要注意的是:张飞这个人是对象,而不是张飞,张飞只是他这个人的名字,是他的属性而已。而一个类中包含了属性和方法这两兄弟,他们分别用来描述对象的行为和性质(感觉应该是
新站开始被收录后,我们应该做什么?
IT独行者
PHP seo
新站开始被收录后,我们应该做什么?
百度终于开始收录自己的网站了,作为站长,你是不是觉得那一刻很有成就感呢,同时,你是不是又很茫然,不知道下一步该做什么了?至少我当初就是这样,在这里和大家一份分享一下新站收录后,我们要做哪些工作。
至于如何让百度快速收录自己的网站,可以参考我之前的帖子《新站让百
oracle 连接碰到的问题
文强chu
oracle
Unable to find a java Virtual Machine--安装64位版Oracle11gR2后无法启动SQLDeveloper的解决方案
作者:草根IT网 来源:未知 人气:813标签:
导读:安装64位版Oracle11gR2后发现启动SQLDeveloper时弹出配置java.exe的路径,找到Oracle自带java.exe后产生的路径“C:\app\用户名\prod
Swing中按ctrl键同时移动鼠标拖动组件(类中多借口共享同一数据)
小桔子
java 继承 swing 接口 监听
都知道java中类只能单继承,但可以实现多个接口,但我发现实现多个接口之后,多个接口却不能共享同一个数据,应用开发中想实现:当用户按着ctrl键时,可以用鼠标点击拖动组件,比如说文本框。
编写一个监听实现KeyListener,NouseListener,MouseMotionListener三个接口,重写方法。定义一个全局变量boolea
linux常用的命令
aichenglong
linux 常用命令
1 startx切换到图形化界面
2 man命令:查看帮助信息
man 需要查看的命令,man命令提供了大量的帮助信息,一般可以分成4个部分
name:对命令的简单说明
synopsis:命令的使用格式说明
description:命令的详细说明信息
options:命令的各项说明
3 date:显示时间
语法:date [OPTION]... [+FORMAT]
eclipse内存优化
AILIKES
java eclipse jvm jdk
一 基本说明 在JVM中,总体上分2块内存区,默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。 1)堆内存(Heap memory):堆是运行时数据区域,所有类实例和数组的内存均从此处分配,是Java代码可及的内存,是留给开发人
关键字的使用探讨
百合不是茶
关键字
//关键字的使用探讨/*访问关键词private 只能在本类中访问public 只能在本工程中访问protected 只能在包中和子类中访问默认的 只能在包中访问*//*final 类 方法 变量 final 类 不能被继承 final 方法 不能被子类覆盖,但可以继承 final 变量 只能有一次赋值,赋值后不能改变 final 不能用来修饰构造方法*///this()
JS中定义对象的几种方式
bijian1013
js
1. 基于已有对象扩充其对象和方法(只适合于临时的生成一个对象):
<html>
<head>
<title>基于已有对象扩充其对象和方法(只适合于临时的生成一个对象)</title>
</head>
<script>
var obj = new Object();
表驱动法实例
bijian1013
java 表驱动法 TDD
获得月的天数是典型的直接访问驱动表方式的实例,下面我们来展示一下:
MonthDaysTest.java
package com.study.test;
import org.junit.Assert;
import org.junit.Test;
import com.study.MonthDays;
public class MonthDaysTest {
@T
LInux启停重启常用服务器的脚本
bit1129
linux
启动,停止和重启常用服务器的Bash脚本,对于每个服务器,需要根据实际的安装路径做相应的修改
#! /bin/bash
Servers=(Apache2, Nginx, Resin, Tomcat, Couchbase, SVN, ActiveMQ, Mongo);
Ops=(Start, Stop, Restart);
currentDir=$(pwd);
echo
【HBase六】REST操作HBase
bit1129
hbase
HBase提供了REST风格的服务方便查看HBase集群的信息,以及执行增删改查操作
1. 启动和停止HBase REST 服务 1.1 启动REST服务
前台启动(默认端口号8080)
[hadoop@hadoop bin]$ ./hbase rest start
后台启动
hbase-daemon.sh start rest
启动时指定
大话zabbix 3.0设计假设
ronin47
What’s new in Zabbix 2.0?
去年开始使用Zabbix的时候,是1.8.X的版本,今年Zabbix已经跨入了2.0的时代。看了2.0的release notes,和performance相关的有下面几个:
:: Performance improvements::Trigger related da
http错误码大全
byalias
http协议 javaweb
响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。
响应码分五种类型,由它们的第一位数字表示:
1)1xx:信息,请求收到,继续处理
2)2xx:成功,行为被成功地接受、理解和采纳
3)3xx:重定向,为了完成请求,必须进一步执行的动作
4)4xx:客户端错误,请求包含语法错误或者请求无法实现
5)5xx:服务器错误,服务器不能实现一种明显无效的请求
J2EE设计模式-Intercepting Filter
bylijinnan
java 设计模式 数据结构
Intercepting Filter类似于职责链模式
有两种实现
其中一种是Filter之间没有联系,全部Filter都存放在FilterChain中,由FilterChain来有序或无序地把把所有Filter调用一遍。没有用到链表这种数据结构。示例如下:
package com.ljn.filter.custom;
import java.util.ArrayList;
修改jboss端口
chicony
jboss
修改jboss端口
%JBOSS_HOME%\server\{服务实例名}\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml
中找到
<!-- The ports-default bindings are obtained by taking the base bindin
c++ 用类模版实现数组类
CrazyMizzz
C++
最近c++学到数组类,写了代码将他实现,基本具有vector类的功能
#include<iostream>
#include<string>
#include<cassert>
using namespace std;
template<class T>
class Array
{
public:
//构造函数
hadoop dfs.datanode.du.reserved 预留空间配置方法
daizj
hadoop 预留空间
对于datanode配置预留空间的方法 为:在hdfs-site.xml添加如下配置
<property>
<name>dfs.datanode.du.reserved</name>
<value>10737418240</value>
 
mysql远程访问的设置
dcj3sjt126com
mysql 防火墙
第一步: 激活网络设置 你需要编辑mysql配置文件my.cnf. 通常状况,my.cnf放置于在以下目录: /etc/mysql/my.cnf (Debian linux) /etc/my.cnf (Red Hat Linux/Fedora Linux) /var/db/mysql/my.cnf (FreeBSD) 然后用vi编辑my.cnf,修改内容从以下行: [mysqld] 你所需要: 1
ios 使用特定的popToViewController返回到相应的Controller
dcj3sjt126com
controller
1、取navigationCtroller中的Controllers
NSArray * ctrlArray = self.navigationController.viewControllers;
2、取出后,执行,
[self.navigationController popToViewController:[ctrlArray objectAtIndex:0] animated:YES
Linux正则表达式和通配符的区别
eksliang
正则表达式 通配符和正则表达式的区别 通配符
转载请出自出处:http://eksliang.iteye.com/blog/1976579
首先得明白二者是截然不同的
通配符只能用在shell命令中,用来处理字符串的的匹配。
判断一个命令是否为bash shell(linux 默认的shell)的内置命令
type -t commad
返回结果含义
file 表示为外部命令
alias 表示该
Ubuntu Mysql Install and CONF
gengzg
Install
http://www.navicat.com.cn/download/navicat-for-mysql
Step1: 下载Navicat ,网址:http://www.navicat.com/en/download/download.html
Step2:进入下载目录,解压压缩包:tar -zxvf navicat11_mysql_en.tar.gz
批处理,删除文件bat
huqiji
windows dos
@echo off
::演示:删除指定路径下指定天数之前(以文件名中包含的日期字符串为准)的文件。
::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
::本例假设文件名中包含的日期字符串(比如:bak-2009-12-25.log)
rem 指定待删除文件的存放路径
set SrcDir=C:/Test/BatHome
rem 指定天数
set DaysAgo=1
跨浏览器兼容的HTML5视频音频播放器
天梯梦
html5
HTML5的video和audio标签是用来在网页中加入视频和音频的标签,在支持html5的浏览器中不需要预先加载Adobe Flash浏览器插件就能轻松快速的播放视频和音频文件。而html5media.js可以在不支持html5的浏览器上使video和audio标签生效。 How to enable <video> and <audio> tags in
Bundle自定义数据传递
hm4123660
android Serializable 自定义数据传递 Bundle Parcelable
我们都知道Bundle可能过put****()方法添加各种基本类型的数据,Intent也可以通过putExtras(Bundle)将数据添加进去,然后通过startActivity()跳到下一下Activity的时候就把数据也传到下一个Activity了。如传递一个字符串到下一个Activity
把数据放到Intent
C#:异步编程和线程的使用(.NET 4.5 )
powertoolsteam
.net 线程 C# 异步编程
异步编程和线程处理是并发或并行编程非常重要的功能特征。为了实现异步编程,可使用线程也可以不用。将异步与线程同时讲,将有助于我们更好的理解它们的特征。
本文中涉及关键知识点
1. 异步编程
2. 线程的使用
3. 基于任务的异步模式
4. 并行编程
5. 总结
异步编程
什么是异步操作?异步操作是指某些操作能够独立运行,不依赖主流程或主其他处理流程。通常情况下,C#程序
spark 查看 job history 日志
Stark_Summer
日志 spark history job
SPARK_HOME/conf 下:
spark-defaults.conf 增加如下内容
spark.eventLog.enabled true spark.eventLog.dir hdfs://master:8020/var/log/spark spark.eventLog.compress true
spark-env.sh 增加如下内容
export SP
SSH框架搭建
wangxiukai2015eye
spring Hibernate struts
MyEclipse搭建SSH框架 Struts Spring Hibernate
1、new一个web project。
2、右键项目,为项目添加Struts支持。
选择Struts2 Core Libraries -<MyEclipes-Library>
点击Finish。src目录下多了struts