标签中包含了
标签。如下表:
文件
是末梢,目录
下包含了目录
和文件
。点击文件
超链接能进入内容呈现页面。点击目录
的链接进入到它所包含内容的呈现页面。因此我们只需要一层层不断进入目录中,拿到该目录所包含的所有文件的URL,即算是完成目标。
爬取思路
我们把爬取的目标抽象成树型结构,先假设这是一颗无环的生成树,不对爬到的URL进行重复检测。因此只需要借助队列,对树进行层次遍历即可。
工具
爬网页用的两库已经很熟悉了,除此之外我还需要用到python自带的队列库queue
。我要用到 queue.Queue() 类中提供了三个方法,入队put()
、出队get()
和判队空empty()
。get()
如果在空队列上操作,会一直阻塞等待新元素入队。
from bs4 import BeautifulSoup
import requests
from queue import Queue
我准备设置两个队列,一个是用于暂存URL的cache
,一个用于输出爬取成果的result
。 处理流程如下:
先来看看伪码的实现
def 爬取(url):
html = 访问(url)
for td in html:
if 在中找到了:
cache.入队(td.url)
elif 在 中找到了:
result.入队(td.url)
def 多线程处理result
print(result.出队())
while 队列不为空:
url = 首元素出队
爬取(url)
完整代码:
from queue import Queue
from bs4 import BeautifulSoup
import requests
import threading
cache = Queue()
result = Queue()
link = 'https://opendev.org/openstack/neutron'
cache.put(link)
def find_links(url, queue1, queue2):
try:
html = requests.get(url, timeout=30)
html.raise_for_status
html.encoding = html.apparent_encoding
except:
html.text = ''
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']
queue1.put(href)
elif td.find('span', class_='octicon octicon-file-text') is not None:
# file enqueue 'result'
href = 'https://opendev.org' + td.find('a')['href']
queue2.put(href)
def process_result(queue):
while True:
url = queue.get()
print('Result:{}'.format(url))
threading.Thread(target=process_result, args=(result,)).start()
while not cache.empty():
url = cache.get_nowait()
print('Accessing:{}'.format(url))
find_links(url, cache, result)
处理result队列数据的函数是放在另外一个线程里跑的,面对这种异步的情况,我希望每当队列里的元素全部被取空之后,它就会停下来等待新元素入队。get()方法恰好就是为这种场景设计的,不过这里还有点小问题,因为它无法自己停下来,我放到后面完善这个地方。 处理cache队列的循环是同步的,即每次取一个URL拿给find_links
去跑,跑完之后后再取下一个URL。因此它没有“停-等”的必要,get_nowait()方法恰好就是为这种场景设计的。
完善功能
前面的场景假设有点单纯,实际情况来看,网站中会存超链接指向闭环的情况(环路),还会有许多重复的链接。因此它们看起来更像一张由超连接组成的有向图
。由于我们并不关注它是链接还是被链接(出入度),因此这张图可以化简成无向图
。这样一来爬取整站的问题就变成了图中各节点的遍历。 防止环路爬取的有效办法是设置 visited 标识符、重复URL检测。我准备使用后一种方法,因为用Python实现这个很简单。 图的遍历有两种方法:深度优先
和广度优先
。前者使用递归的方法实现,后者依靠队列。我认为深度优先在处理层级数未知的情况,函数反复递归可能会出现意想不到的情况,并且很耗费内存。广度优先就很有意思了,因为它依靠队列,因此无论是使用外部存储或是增加处理节点,都会变的很容易扩展,再者就实现原理来讲,它更容易理解。
处理流程
前面使用的队列库没有元素重复检测方法,因此我需要重新封装一个队列,实质上它就是一个list。
先看看伪码的实现:
def 爬取(url):
html = 访问(url)
for td in html:
if 在中找到了:
if cache.重复检测(url):
cache.入队(td.url)
elif 在 中找到了:
if result.重复检测(url):
result.入队(td.url)
def 多线程处理result:
print(result.出队())
while 队列不为空:
url = 首元素出队
爬取(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(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:
# 等待超时后,返回 None
return None
self.condition.wait(remaining)
def get_nowait(self):
with self.condition:
try:
return self._queue.pop(0)
except:
IndexError('Empty queue')
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
cache = LQueue()
result = LQueue()
link = 'https://opendev.org/openstack/neutron'
cache.put(link)
single = True
def find_links(url, queue1, queue2):
print('Accessing:{}'.format(url))
try:
html = requests.get(url, timeout=30)
html.raise_for_status
html.encoding = html.apparent_encoding
except:
html.text = ''
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 queue1.has(href):
queue1.put(href)
elif td.find('span', class_='octicon octicon-file-text') is not None:
# file enqueue 'result'
href = 'https://opendev.org' + td.find('a')['href']
if not queue2.has(href):
queue2.put(href)
def process_result(queue):
while True:
# get()方法等待35秒后就会超时,在超时前依然没有新元素进入 cache
# 队列,就说明当所有链接都爬完了。这时候 get() 会返回None,判断返回值
# 如果是None就结束任务。在这设置35秒的超时时间是由于我设置访问URL的超时时间为30。
url = queue.get(35)
if url is None:
break
print('Result:{}'.format(url))
threading.Thread(target=process_result, args=(result,)).start()
while not cache.empty():
url = cache.get_nowait()
find_links(url, cache, result)
你可能感兴趣的:(爬取目录型整站URL的思路)
让我如何爱你
轻一舟
每个人的一生中都会有第一次,第一次踏入校园,第一次恋爱,第一次结婚,第一次为人父母。我的第一次踏入校园是九岁,生日月份太小,同龄的孩子都八岁就上了学,而我要晚一年。(这样我就遇到了给我的第一次恋爱和第一次结婚,第一次为人父母机会的田先生。)学习成绩中上等,没有出奇的完成了学业。第一次恋爱是参加工作后的25岁,恋爱很简单,单纯的认为找同学靠谱,异地恋,每个月见一次面,一次面吃一顿饭,然后各自回家,未
今天是个好日子,红红火火!
杨蓉
今天是个好日子,喜事连连!首先,我的好姐妹四儿乔迁新居,开火大吉!兄弟姐妹们一起回家闹新房,从一早到半夜,迎来送往,做大餐话家常,喝小酒唠闲嗑,小朋友们喧叫打闹,好不红火!满汉全席一角一川秋景,一壶香茗,一席佳人。今朝逢吉日,万里吐清光。水墨青花伴知音,红烛台,影印成对。香浴家满园,更喜事无数。大厨超级辛苦,是腹有诗华的教授,当然也是我们最强有力的后盾。小吐槽一下,干净整洁温馨的窝,秒变成乱得一塌
松浦弥太郎的人生信条DAY3
韩小渔儿
图片发自App002舍弃自尊,凡事忍耐独立于世的37个年岁,仅以上八字便已很难做到。自尊是人隐藏在明暗外表之下的核心精神,是与肉身相关、甚至予以支撑能源的根本。再读下文:“自尊心,不是用来肆意宣扬的武器”,豁然开朗,唯有保持冷静,精神、思想才不会被身体、情绪左右,而只是客观存在的事实。恰巧今天听樊登读书会讲解《活好》一书,这是一本浓缩日本百岁老人,日野原重明先生105年人生感悟的专访纪实。他用久经
插入排序(含动画演示)——C++
Bennnnnnn
小楷算法题解 算法 排序算法 c++
算法思想插入排序,即将数列中无序的元素插入到数列中已排序数列的适当位置,最终形成完全有序数列。学习插入算法,我们应先了解原理如何,先上动画图解进行演示具体代码如下:#includeusingnamespacestd;voiddengzilin(int*a,intlen)//dengzilin是我宿友,hhhh{for(inti=1;i=0&&key>len;cout>a[i];}dengzilin
商标注册的好处
R15628995770
科技 人工智能 制造 大数据
注册商标的好处我国对于商标是实行自愿注册原则,商标不经注册也可以使用。那么商标注册究竟有什么好处呢?1、商标注册后,商标注册人享有商标专用权,商标注册人可以排除他人在相同或类似商品上使用相同或近似商标。他人不但不可以在相同商品上使用相同的商标,也不能在类似商品上使用近似的商标。而未注册的商标则不能受到这种保护,只能自己使用,如果使用过程当中商标被他人抢先注册,则使用人只能在自己在先使用的范围内继续
给史多多的第三百八十七封信
七千22
你好,这里是七千每日文字输出的第470天。你好,史多多今天大年初六了,是爸爸的最后一天假期了。昨晚也是多多自己睡小床的一晚,妈妈担心多多掉下来,一晚上也是心惊胆战的没怎么睡好。昨晚的多多整体还是挺乖的,最长的一次是睡了有三个半小时。哈哈,但是我们多多大了,小床都有点睡不下了,多多现在还不会翻身,但是昨晚上自己来回蹭,还是蹭到了床边上。爸爸妈妈要给多多换一个小床了。今天妈妈抱着多多,怎么都觉得不够,
婆婆妈妈
揉碎浮躁
双十一,桃子在网上买了两条围巾,两条颜色不一样,桃子打算送给自己妈妈和婆婆。周六,桃子送女儿去学画画。趁着等女儿放学时间,跑到妈妈家。桃子看到妈妈,拿出两条围巾,抖开来,嘴里说:“妈,冬天到了,出门买菜围条围巾。”当妈的心中甚是欢喜,口中却说:你去年就有买了,又围不坏,我拿去年那条围巾出来围就好。这个围巾可以退吗?妞妞学画学琴,要用钱的地方多。桃子打断妈的话:这条跟去年的不一样,这是新款的,快看看
一个难忘的清明节
柠萌有点甜
今年的清明节让人们眼含泪水,令人痛心。凉山的一场大火让30名救火英雄失去了年轻的生命,其中最小的仅仅19岁,正是豆蔻年华。可是大火无情,带走了这些英雄。在视频中看到了英雄的追悼会,泪流满面,希望天堂没有大火,但有光明,一路走好。今天早上刷微博,看到了牺牲人员又多了1名,多少令人痛心的一件事情。愿悲剧再无发生,向人民英雄致敬!
日语自学该怎么学才好呢?
蓝色的枕头12
说一下日语自学的步骤:1、起步阶段——日语的字母叫做五十音图。背诵五十音图的时候不但要能熟练地按行背,还要能按列背,这对将来的学习是非常重要的。片假名的记忆一直是初学者的难题。推荐的做法是:总结一些有效的句子,让同学们按照平假名将其书面翻译成片假名,开始有些困难,但一两天后就能牢记了。来测测你的日语天赋吧2、单词学习——单词记忆讲究拆散和联合。“拆散”是指背单词的时候要知道单词中每个汉字的读音,开
【Android】最好用的网络库:Retrofit
愿相知
网络 retrofit
最好用的网络库:Retrofit文章目录最好用的网络库:RetrofitRetrofit的基本用法Retrofit的使用逻辑Retrofit的基本操作处理复杂的接口地址类型进阶删除提交header中指定参数Retrofit构建器的最佳写法Retrofit的使用封装Retrofit的基本用法Retrofit是一款由Square公司开发的网络库,但是它和OkHttp的定位完全不同。OkHttp侧重的是
《被讨厌的勇气》8、人生很简单:认真而无需深刻
满塘荷叶一枝莲
甘于平凡的勇气之前我们曾说,一切烦恼都来源于人际关系,而其实,我们的幸福也同样来自于人际关系。而阿德勒对幸福的定义更加的简单,幸福就是贡献感,就是主观的感觉我对共同体有益或者是我对他人有用,这就是幸福。是的,主观的!只要我们自觉对他人有用就是幸福,而且还不需要得到别人的认可。青年对哲人不满的说,先生你把一切都归结于人际关系,这根本就不是普世的自我实现式的幸福。比如说,有人希望获得社会性的成功,有人
我的教官——随感篇
噗通噗通杨小白
图片发自App军训二十一天,带着我们训练的教官是我们学校的师兄。我们的教官黑黑的,高高瘦瘦的,第一眼开始就觉得教官特别帅。平时训练不让带手机,那天开会能带手机了,每个人都不自觉的偷拍了教官。朋友圈刷屏教官多好。果然,全班女生都是教官的小迷妹呀。我的教官特别善良。别人在炎炎烈日下训练,我们在树底下训练。别人的训练没有休息,我们训练开始的最晚,休息的最早,解散的最早。不能说没有惩罚,但是相对其他教官,
简单的PHP订单小程序
董.
php 小程序 chrome
HTML代码项目数量轮胎汽油火花塞收货地址PHP代码这是Bob的订单详情Bob的订单订单结果订单处理时间不知道";echo"订单处理结果如下:";$totalqty=0;#总数$totalamount=0.0;#总金额define('TIREPRICE',100);#轮胎单价define('OILPRICE',50);#油耗单价define('SPARKPRICE',20);#火花单价$docum
安心呆在家里
快乐的子亿
文/子亿过年了,本来都开开心心的,可是最近出来个冠状病毒,让人有点害怕。为了预防这种病毒,口罩都卖断货了。看来是有点严重的。早上,老公说要去小吃店吃面,我总觉得小吃店里的人来自不同的地方,最好少接触,所以跟老公说,早饭还是自己烧吧,避免去人多的地方。晚上,老公临时说起,说要去打篮球。我说,还是别去了,打篮球的地方人挺杂的。这都快过年了,万一弄出点事情来,那多难受呀。老公听了我的话,想想也有道理,就
我为什么在做事情前,一定要和团队在一起
王英钰涵
为什么我在做事情前一定要和团队在一起?因为我要靠团队的力量为什么要靠团队的力量呢?我觉得我自己不行,我很害怕?我怕什么呢?我害怕自己很孤单?孤单了就会很弱小弱小了就被拒绝被拒绝了就会很痛苦痛苦了就很无力无力就不想动不动就在原地在原地又恢复从前一摊烂泥动不了被困被痛苦折磨回不来家实际是你觉得自己孤单就很弱小,弱小代表没有力量,没有力量回应别人的拒绝,不想面对痛苦,不想被痛苦折磨,被痛苦折磨了什么也干
Go语言结构快速说明
常家壮
# Go语言学习 golang Go语言 Go语言学习 后端
Go语言结构详细说明Go语言,作为一种编译型、并发型,并具有垃圾回收功能的编程语言,自2009年发布以来,凭借其简洁、高效、易于并发的特性,迅速在软件开发领域获得了广泛的关注和应用。本文将详细介绍Go语言的基本结构,包括关键字、数据类型、变量、函数等,并阐述其特点和优势,最后通过一些实用示例帮助读者更好地理解和应用。1.Go语言的基本结构关键字:Go语言的设计哲学是简洁而高效,因此其关键字数量相对
基于Python的机器学习系列(16):扩展 - AdaBoost
会飞的Anthony
信息系统 机器学习 人工智能 python 机器学习 开发语言
简介在本篇中,我们将扩展之前的AdaBoost算法实现,深入探索其细节并进行一些修改。我们将重点修复代码中的潜在问题,并对AdaBoost的实现进行一些调整,以提高其准确性和可用性。1.修复Alpha计算中的问题在AdaBoost中,如果分类器的错误率e为0,则计算出的权重α将是未定义的。为了解决这个问题,我们可以在计算过程中向分母中添加一个非常小的值,以避免除零错误。2.调整学习率sklearn
qnx /var/log/la_gvm.txt 系统日志
sun007700
android
qnx/var/log/la_gvm.txt系统日志/var/log/la_gvm.txt是QNX操作系统中一个特定的日志文件,通常用于记录与LA(LoadableModule)或GVM(GlobalVirtualMemory)相关的信息。这个文件可以帮助系统管理员或开发者诊断与系统内存管理和模块加载相关的问题。关键点解释:QNX:QNX是一款实时操作系统(RTOS),主要用于嵌入式系统。它以其高
每日一题2024年8月30日
Gin387
算法
E-不知道叫什么名字_2023年广东工业大学腾讯杯新生程序设计竞赛(nowcoder.com)大致思路:题目要求选择连续的,男女人数相等的。题目给出男生为1,女生为0,这里猜测要把女生的0改成-1(猜测,不知道对不对)通过一些手段,前缀和+map,发现可以完美解决这个问题。#includeusingnamespacestd;typedeflonglongll;typedefdoubledb;typ
2023年阿里云用户注册新账号之后可以享受哪些优惠活动和福利政策
阿里云最新优惠和活动汇总
很多用户注册阿里云新账号之后的第一件事就是直接去买云服务器ECS等产品去了,其实阿里云对新注册的账号有很多优惠活动和福利政策的,我们应该首先了解和参与这些优惠活动和福利政策,有助于我们获得云产品免费使用权并在正式购买过程中获得更便宜的购买价格,下面是小编为大家整理汇总的2023年阿里云新用户福利政策。了解这些优惠政策可帮助我们在选购阿里云产品时少走很多弯路,最大化的享受优惠政策带来的福利。阿里云针
推荐召回中ALS(交替最小二乘法)算法验证
山水阳泉曲
算法 最小二乘法 机器学习 推荐算法 python
文章目录需求流程设计步骤1:数据准备步骤2:模型训练步骤3:评估指标选择步骤4:性能评估代码实现导入依赖Mysql获取数据分批加载到矩阵目标coo_matrixvstackbm25_weight模型训练测试评估完整代码需求为了验证推荐系统中ALS(交替最小二乘)算法的召回效果以及离线数据推荐的效果,我们需要进行一系列的实验步骤。这些步骤包括数据准备、模型训练、评估指标的选择以及最终的性能评估流程设
众生百相
招财猫333333
图片发自App老公村里拆迁了。众生百相。短短几个月的时间里,一个喝药的,三对离婚的,明里暗里闹矛盾的不在少数。喝药的是一个七十岁的老爷子,一子两女,论辈分叫他舅舅,一个个子高高的总是笑眯眯的老人。听说是拆迁款下来后全部被儿子提走了,老人要二十万儿子不给,怕老人给女儿,老人一气之下喝了药,还好被夺了瓶抢救又及时才没有酿成苦果,结果在重症监护室里待了二十多天。老公的一个发小(浩)离婚了。听到消息我们以
摄影杂谈
漫天雪_15ac
自去年底购入单反后一直没时间、也没机会学摄影,一度处于自学状态,凭感觉照些花花草草的照片,倒也漂亮自在。邻居杜大哥是个摄影爱好者,他热情介绍我加入省老年大学摄影协会,报了名,交了钱却没怎么去上课,一因路途遥远,二因有些内容不感兴趣,三因家中事情耽误,算起来总共也就上了三节课。图片发自App说起摄影,我更偏爱拍自然风景,看到漂亮的花也有想拍的欲望,对人像摄影我从心底里并没太大兴趣,碍于杜大哥的面子,
岛国6天游回顾------(下)续
一击必杀z
2016-06-11本来打算写3篇就够了,随着越写越发觉还要分开一篇来写,呵呵。话说原文再续,在中野购物完,拿着大包小包去返回地铁站,继续去下一站,第三站-----池袋。话说池袋我最想去的当然是Jumpworld博物馆,在一间商场的3楼,买票分两种,一种是全票,另一种是普通票,区别是全票包括入场费和里面的游乐设施全部费用,普通票只包括入场费和基本设施费用。其实主要是针对海贼王里面的设施要收费(收费
公认口碑最佳!莆田微商排行榜TOP10大公开!
优鞋之家
公认口碑最佳!莆田微商排行榜TOP10大公开!寂静的夜晚,星空璀璨,仿佛在诉说着时间的故事。在这个快速变化的时代,公认口碑最好的莆田微商以其独特的方式闪耀在时尚界的星空之中。正如古语所言:“桃李不言,下自成蹊”,这些莆田微商凭借其卓越的产品质量和服务,在消费者心中自成一蹊。让我们一起探寻这些闪耀的星辰,了解他们独特的魅力所在。微信图片_20240301163452.jpg一、Karry潮鞋——品质
2022年5月7日《儿童纪律教育》培训总结
静看一本书
——王利平春蕾六幼一、感受通过学习,认识到正确的教育方式对孩子是多么的重要。通过今天的学习,才认识到原来之前自己教育孩子的方式都是错误的,之前都是通过奖励和惩罚来让孩子达到某种自己想要的结果,但是之后一定要努力学习,改掉自己的这种行为主义的教育方式。二、新知1.行为矫正的危害:自主性被破坏、自我管理受限、成绩下降、忽视问题的原因、关系遭到破坏、内部动机遭到破坏。2.当孩子的学习是被动发生时,这个学
不同类型的孩子,不同的教育方式
英子yz
1.不自信的孩子❤最需要发现他的点滴进步,并说出来,给予及时鼓励2.自大的孩子❤最需要的,不是打击,而是放大他的梦想,拓宽他的眼界,因为自大。是因为看到的世界太小。3.胆小的孩子❤最需要的不是鼓励,而是给他提供各种各样接触人,新鲜事物的机会。4.对自我要求过高的孩子❤最需要的,是让她关注别人的不同,欣赏别人的不同,而不是在乎别人的评价。5.不自律的孩子❤最需要的不是催促,提醒,而是对他的信任,信任
精辟励志语录:现在不玩命,将来命玩你,现在不努力,未来不给力
慢热的H小姐
1.一旦抱怨成为恶习,人生就会暗无天日。2.勤奋的含义是今天的热血,而不是明天的决心,后天的保证。人生没有如果,只有后果和结果。少问别人为什么,多问自己凭什么。3.雄鹰,不需鼓掌,也在飞翔;小草,没人心疼,也在成长;野花,没人欣赏,也在芬芳;做事不需人人都理解,只需尽心尽力;做人不需人人都喜欢,只需坦坦荡荡。4.人生就应该:尽己力,听天命。无愧于心,不惑于情。顺势而为,随遇而安。知错即改,迷途知返
阳光小美女
希言希语
看过这部电影的人一定知道电影中最后比赛的情景。历尽万苦的一家人陪着小女儿去加州参加儿童才艺比赛---阳光小美女。整部影片没有渲染小女儿有任何才艺,只到最后比赛时观众才看到她只会跳一支爷爷教的老年迪斯科。她无视比赛规则,险些被赶下场,而家人却看透了这个充满了虚伪的儿童选秀比赛,整个比赛过程家人无视观众的唏嘘,评委的咒骂,尽最大可能地守护着小女孩的美好童年。电影最后没有说出小女孩的比赛成绩,而这才是对
鸿蒙( Beta5.0版)开发实战:自定义TabBar页签
让开,我要吃人了
鸿蒙开发 HarmonyOS OpenHarmony 前端 harmonyos 华为 linux 移动开发 鸿蒙 鸿蒙系统
介绍本示例主要介绍了TabBar中间页面如何实现有一圈圆弧外轮廓以及TabBar页签被点击之后会改变图标显示,并有一小段动画效果。效果图预览使用说明:依次点击tabBar页面,除了社区图标之外,其它图标往上移动一小段距离。实现思路场景1:TabBar中间页面实现有一圈圆弧外轮廓将Image组件外层包裹一层容器组件,通过设置borderRadius以及margin的top值实现圆弧外轮廓效果。这里b
iOS http封装
374016526
ios 服务器交互 http 网络请求
程序开发避免不了与服务器的交互,这里打包了一个自己写的http交互库。希望可以帮到大家。
内置一个basehttp,当我们创建自己的service可以继承实现。
KuroAppBaseHttp *baseHttp = [[KuroAppBaseHttp alloc] init];
[baseHttp setDelegate:self];
[baseHttp
lolcat :一个在 Linux 终端中输出彩虹特效的命令行工具
brotherlamp
linux linux教程 linux视频 linux自学 linux资料
那些相信 Linux 命令行是单调无聊且没有任何乐趣的人们,你们错了,这里有一些有关 Linux 的文章,它们展示着 Linux 是如何的有趣和“淘气” 。
在本文中,我将讨论一个名为“lolcat”的小工具 – 它可以在终端中生成彩虹般的颜色。
何为 lolcat ?
Lolcat 是一个针对 Linux,BSD 和 OSX 平台的工具,它类似于 cat 命令,并为 cat
MongoDB索引管理(1)——[九]
eksliang
mongodb MongoDB管理索引
转载请出自出处:http://eksliang.iteye.com/blog/2178427 一、概述
数据库的索引与书籍的索引类似,有了索引就不需要翻转整本书。数据库的索引跟这个原理一样,首先在索引中找,在索引中找到条目以后,就可以直接跳转到目标文档的位置,从而使查询速度提高几个数据量级。
不使用索引的查询称
Informatica参数及变量
18289753290
Informatica 参数 变量
下面是本人通俗的理解,如有不对之处,希望指正 info参数的设置:在info中用到的参数都在server的专门的配置文件中(最好以parma)结尾 下面的GLOBAl就是全局的,$开头的是系统级变量,$$开头的变量是自定义变量。如果是在session中或者mapping中用到的变量就是局部变量,那就把global换成对应的session或者mapping名字。
[GLOBAL] $Par
python 解析unicode字符串为utf8编码字符串
酷的飞上天空
unicode
php返回的json字符串如果包含中文,则会被转换成\uxx格式的unicode编码字符串返回。
在浏览器中能正常识别这种编码,但是后台程序却不能识别,直接输出显示的是\uxx的字符,并未进行转码。
转换方式如下
>>> import json
>>> q = '{"text":"\u4
Hibernate的总结
永夜-极光
Hibernate
1.hibernate的作用,简化对数据库的编码,使开发人员不必再与复杂的sql语句打交道
做项目大部分都需要用JAVA来链接数据库,比如你要做一个会员注册的 页面,那么 获取到用户填写的 基本信后,你要把这些基本信息存入数据库对应的表中,不用hibernate还有mybatis之类的框架,都不用的话就得用JDBC,也就是JAVA自己的,用这个东西你要写很多的代码,比如保存注册信
SyntaxError: Non-UTF-8 code starting with '\xc4'
随便小屋
python
刚开始看一下Python语言,传说听强大的,但我感觉还是没Java强吧!
写Hello World的时候就遇到一个问题,在Eclipse中写的,代码如下
'''
Created on 2014年10月27日
@author: Logic
'''
print("Hello World!");
运行结果
SyntaxError: Non-UTF-8
学会敬酒礼仪 不做酒席菜鸟
aijuans
菜鸟
俗话说,酒是越喝越厚,但在酒桌上也有很多学问讲究,以下总结了一些酒桌上的你不得不注意的小细节。
细节一:领导相互喝完才轮到自己敬酒。敬酒一定要站起来,双手举杯。
细节二:可以多人敬一人,决不可一人敬多人,除非你是领导。
细节三:自己敬别人,如果不碰杯,自己喝多少可视乎情况而定,比如对方酒量,对方喝酒态度,切不可比对方喝得少,要知道是自己敬人。
细节四:自己敬别人,如果碰杯,一
《创新者的基因》读书笔记
aoyouzi
读书笔记 《创新者的基因》
创新者的基因
创新者的“基因”,即最具创意的企业家具备的五种“发现技能”:联想,观察,实验,发问,建立人脉。
第一部分破坏性创新,从你开始
第一章破坏性创新者的基因
如何获得启示:
发现以下的因素起到了催化剂的作用:(1) -个挑战现状的问题;(2)对某项技术、某个公司或顾客的观察;(3) -次尝试新鲜事物的经验或实验;(4)与某人进行了一次交谈,为他点醒
表单验证技术
百合不是茶
JavaScript DOM对象 String对象 事件
js最主要的功能就是验证表单,下面是我对表单验证的一些理解,贴出来与大家交流交流 ,数显我们要知道表单验证需要的技术点, String对象,事件,函数
一:String对象;通常是对字符串的操作;
1,String的属性;
字符串.length;表示该字符串的长度;
var str= "java"
web.xml配置详解之context-param
bijian1013
java servlet web.xml context-param
一.格式定义:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>contextConfigLocationValue></param-value>
</context-param>
作用:该元
Web系统常见编码漏洞(开发工程师知晓)
Bill_chen
sql PHP Web fckeditor 脚本
1.头号大敌:SQL Injection
原因:程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,
获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
本质:
对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。
示例:
String query = "SELECT id FROM users
【MongoDB学习笔记六】MongoDB修改器
bit1129
mongodb
本文首先介绍下MongoDB的基本的增删改查操作,然后,详细介绍MongoDB提供的修改器,以完成各种各样的文档更新操作 MongoDB的主要操作
show dbs 显示当前用户能看到哪些数据库
use foobar 将数据库切换到foobar
show collections 显示当前数据库有哪些集合
db.people.update,update不带参数,可
提高职业素养,做好人生规划
白糖_
人生
培训讲师是成都著名的企业培训讲师,他在讲课中提出的一些观点很新颖,在此我收录了一些分享一下。注:讲师的观点不代表本人的观点,这些东西大家自己揣摩。
1、什么是职业规划:职业规划并不完全代表你到什么阶段要当什么官要拿多少钱,这些都只是梦想。职业规划是清楚的认识自己现在缺什么,这个阶段该学习什么,下个阶段缺什么,又应该怎么去规划学习,这样才算是规划。
国外的网站你都到哪边看?
bozch
技术 网站 国外
学习软件开发技术,如果没有什么英文基础,最好还是看国内的一些技术网站,例如:开源OSchina,csdn,iteye,51cto等等。
个人感觉如果英语基础能力不错的话,可以浏览国外的网站来进行软件技术基础的学习,例如java开发中常用的到的网站有apache.org 里面有apache的很多Projects,springframework.org是spring相关的项目网站,还有几个感觉不错的
编程之美-光影切割问题
bylijinnan
编程之美
package a;
public class DisorderCount {
/**《编程之美》“光影切割问题”
* 主要是两个问题:
* 1.数学公式(设定没有三条以上的直线交于同一点):
* 两条直线最多一个交点,将平面分成了4个区域;
* 三条直线最多三个交点,将平面分成了7个区域;
* 可以推出:N条直线 M个交点,区域数为N+M+1。
关于Web跨站执行脚本概念
chenbowen00
Web 安全 跨站执行脚本
跨站脚本攻击(XSS)是web应用程序中最危险和最常见的安全漏洞之一。安全研究人员发现这个漏洞在最受欢迎的网站,包括谷歌、Facebook、亚马逊、PayPal,和许多其他网站。如果你看看bug赏金计划,大多数报告的问题属于 XSS。为了防止跨站脚本攻击,浏览器也有自己的过滤器,但安全研究人员总是想方设法绕过这些过滤器。这个漏洞是通常用于执行cookie窃取、恶意软件传播,会话劫持,恶意重定向。在
[开源项目与投资]投资开源项目之前需要统计该项目已有的用户数
comsci
开源项目
现在国内和国外,特别是美国那边,突然出现很多开源项目,但是这些项目的用户有多少,有多少忠诚的粉丝,对于投资者来讲,完全是一个未知数,那么要投资开源项目,我们投资者必须准确无误的知道该项目的全部情况,包括项目发起人的情况,项目的维持时间..项目的技术水平,项目的参与者的势力,项目投入产出的效益.....
oracle alert log file(告警日志文件)
daizj
oracle 告警日志文件 alert log file
The alert log is a chronological log of messages and errors, and includes the following items:
All internal errors (ORA-00600), block corruption errors (ORA-01578), and deadlock errors (ORA-00060)
关于 CAS SSO 文章声明
denger
SSO
由于几年前写了几篇 CAS 系列的文章,之后陆续有人参照文章去实现,可都遇到了各种问题,同时经常或多或少的收到不少人的求助。现在这时特此说明几点:
1. 那些文章发表于好几年前了,CAS 已经更新几个很多版本了,由于近年已经没有做该领域方面的事情,所有文章也没有持续更新。
2. 文章只是提供思路,尽管 CAS 版本已经发生变化,但原理和流程仍然一致。最重要的是明白原理,然后
初二上学期难记单词
dcj3sjt126com
english word
lesson 课
traffic 交通
matter 要紧;事物
happy 快乐的,幸福的
second 第二的
idea 主意;想法;意见
mean 意味着
important 重要的,重大的
never 从来,决不
afraid 害怕 的
fifth 第五的
hometown 故乡,家乡
discuss 讨论;议论
east 东方的
agree 同意;赞成
bo
uicollectionview 纯代码布局, 添加头部视图
dcj3sjt126com
Collection
#import <UIKit/UIKit.h>
@interface myHeadView : UICollectionReusableView
{
UILabel *TitleLable;
}
-(void)setTextTitle;
@end
#import "myHeadView.h"
@implementation m
N 位随机数字串的 JAVA 生成实现
FX夜归人
java Math 随机数 Random
/**
* 功能描述 随机数工具类<br />
* @author FengXueYeGuiRen
* 创建时间 2014-7-25<br />
*/
public class RandomUtil {
// 随机数生成器
private static java.util.Random random = new java.util.R
Ehcache(09)——缓存Web页面
234390216
ehcache 页面缓存
页面缓存
目录
1 SimplePageCachingFilter
1.1 calculateKey
1.2 可配置的初始化参数
1.2.1 cach
spring中少用的注解@primary解析
jackyrong
primary
这次看下spring中少见的注解@primary注解,例子
@Component
public class MetalSinger implements Singer{
@Override
public String sing(String lyrics) {
return "I am singing with DIO voice
Java几款性能分析工具的对比
lbwahoo
java
Java几款性能分析工具的对比
摘自:http://my.oschina.net/liux/blog/51800
在给客户的应用程序维护的过程中,我注意到在高负载下的一些性能问题。理论上,增加对应用程序的负载会使性能等比率的下降。然而,我认为性能下降的比率远远高于负载的增加。我也发现,性能可以通过改变应用程序的逻辑来提升,甚至达到极限。为了更详细的了解这一点,我们需要做一些性能
JVM参数配置大全
nickys
jvm 应用服务器
JVM参数配置大全
/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -
搭建 CentOS 6 服务器(14) - squid、Varnish
rensanning
varnish
(一)squid
安装
# yum install httpd-tools -y
# htpasswd -c -b /etc/squid/passwords squiduser 123456
# yum install squid -y
设置
# cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
# vi /etc/
Spring缓存注解@Cache使用
tom_seed
spring
参考资料
http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/
http://swiftlet.net/archives/774
缓存注解有以下三个:
@Cacheable @CacheEvict @CachePut
dom4j解析XML时出现"java.lang.noclassdeffounderror: org/jaxen/jaxenexception"错误
xp9802
java.lang.NoClassDefFoundError: org/jaxen/JaxenExc
关键字: java.lang.noclassdeffounderror: org/jaxen/jaxenexception
使用dom4j解析XML时,要快速获取某个节点的数据,使用XPath是个不错的方法,dom4j的快速手册里也建议使用这种方式
执行时却抛出以下异常:
Exceptio