Python + ElasticSearch:有了这个超级武器,你也可以报名参加诗词大会了! | 博文精选...

来源 | CSDN 博客

作者 | 天元浪子

责编 | Carol

出品 | CSDN云计算(ID:CSDNcloud)

意犹未尽的诗词大会

正月十六,中国诗词大会第五季落下帷幕。从2016年2月12日第一季于开播,迄今恰好四周年。在这个舞台上,时年16岁的才女武亦姝、雨无阻的外卖小哥雷海为、端庄美丽的北京大学博士生陈更,不留遗憾的三季老将彭敏,都以精彩表现给我们留下了深刻印象。中国诗词大会潜移默化地影响了一大批中国人,激发了很多人对诗词的热爱。

因为喜欢,就想到了用 Python + ElasticSearch 这个大数据的手段搞一个“诗词大会”。如果你也喜欢,就请跟我一起来体验一下吧。读完了文末的飞花令,相信你一定会萌生出足够的勇气和信心报名参加下一季的中国诗词大会!

Python + ElasticSearch的环境搭建

1、安装ElasticSearch

ElasticSearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值。

ElasticSearch采用的是NoSql数据库,其基本概念与传统的关系型数据库的概念有所不同。我们先了解一下这两个概念:

  • 文档

NoSql数据库又叫做文档型数据库。文档就相当于关系型数据库的记录(行)。

  • 索引

在关系数据库中的索引,是为了加速查询设置的一种数据结构。不同于关系数据库的索引,Elasticsearch会为每个字段创建这个含义的索引,而且Elasticsearch中的索引是透明的,因此Elasticsearch不再谈论这个含义的索引,而是赋予索引两个含义:

  • 名词:一个索引类似于传统关系数据库中的一个数据库,是一个存储关系型文档的地方

  • 动词:索引一个文档,就是存储一个文档到一个索引(名词)中以便它可以被检索和查询到,相当于关系数据库的insert

ElasticSearch是使用java编写的,安装ElasticSearch之前,首先要安装java运行环境。为了减轻电脑的负担,可以不安装JDK,只安装JRE即可。

安装完成后,需要设置环境变量。我安装的是jre1.8.0_241,安装路径在C:\Program Files\Java\,如果你安装的版本路和路径有所不同,请根据实际安装情况填写:

  • JAVAHOME:C:\Program Files\Java\jre1.8.0_241

  • CLASSPATH:.;%JAVA_HOME%\lib

  • PATH: %JAVA_HOME%\bin

环境变量设置好后,就可以安装ElasticSearch了。ElasticSearch安装很简单,从官方网站下载下载以后解压, 在其解压路径下的bin文件中运行elasticsearch.bat,即可启动ElasticSearch服务。

ElasticSearch:

https://www.elastic.co/cn/downloads/elasticsearch

2、安装Python的Elasticsearch客户端

万能的pip:

pip install elasticsearch

安装成功后,即可使用该客户端连接Elasticsearch服务器。

>>> from elasticsearch import Elasticsearch
>>> es = Elasticsearch()
>>> es.info()
{'name': 'LAPTOP-8507OGEN', 'cluster_name': 'elasticsearch', 'cluster_uuid': 'OwrXmbSwTk6LB-q9lFDV0w', 'version': {'number': '7.5.2', 'build_flavor': 'default', 'build_type': 'zip', 'build_hash': '8bec50e1e0ad29dad5653712cf3bb580cd1afcdf', 'build_date': '2020-01-15T12:11:52.313576Z', 'build_snapshot': False, 'lucene_version': '8.3.0', 'minimum_wire_compatibility_version': '6.8.0', 'minimum_index_compatibility_version': '6.0.0-beta1'}, 'tagline': 'You Know, for Search'}

使用Python爬取诗词数据

这次我爬取的目标是古诗文网,这里面很多诗词的分类方法。我要爬取的是有唐诗三百首和宋词三百首。

1、创建索引

ElasticSearch可以不创建索引直接索引数据,不过,要使用一些高级聚合功能,自动创建的索引并不理想,而索引在创建之后不能更改。最好在索引数据之前,先创建索引。

>>> from elasticsearch import Elasticsearch, client
>>> es = Elasticsearch()
>>> ic = client.IndicesClient(es)
>>> doc = {"mappings": {"properties": {"title": { # 题目 "type":  "keyword" },"epigraph": { # 词牌名 "type":  "keyword" },"dynasty": { # 朝代  "type":  "keyword" },"author": { # 作者 "type":  "keyword" },"content": { # 内容 "type":  "text" }}}}
>>> ic.create(index='poetry', body=doc)
{'acknowledged': True, 'shards_acknowledged': True, 'index': 'poetry'}

2、爬取诗词(以唐诗为例)

Python访问http的库有很多,使用最方便的是requests,我就用requests来获取网页的内容,用bs4来解析网页的内容。

1)取得唐诗三百首列表

取得唐诗三百首列表页面的html:

>>> import requests
>>> html = requests.get('https://so.gushiwen.org/gushi/tangshi.aspx').text

然后使用BeautifulSoup模块对html代码进行解析,得到诗名和诗文地址的列表:

>>> from bs4 import BeautifulSoup
>>> import lxml
>>> soup = BeautifulSoup(html, "lxml")
>>> typecont = soup.find_all(attrs={"class":"typecont"})
>>> index = 1
>>> for div in typecont:    for ch in div.children:if ch.name == 'span':print(index, ch.a.text, ch.a.attrs['href'])index += 1

这样,就取到了唐诗的地址列表,共320首。

2)取得唐诗的内容

访问https://so.gushiwen.org/shiwenv_c90ff9ea5a71.aspx,取到《登鹳雀楼》的页面,并用bs4解析:

>>> html = requests.get('https://so.gushiwen.org/shiwenv_c90ff9ea5a71.aspx').text    
>>> soup = BeautifulSoup(html, "lxml")

3)取得唐诗标题:

>>> cont = soup.select('.main3 .left .sons .cont')[0]
>>> title = cont.h1.text
>>> title
'登鹳雀楼'

4)取得朝代和作者:

>>> al = cont.p.select('a')
>>> dynasty = al[0].text
>>> dynasty
'唐代'
>>> author = al[1].text
>>> author

5)取得诗文内容:

>>> content = cont.select('.contson')[0].text
>>> content
'\n白日依山尽,黄河入海流。欲穷千里目,更上一层楼。\n'
>>> content.strip()
'白日依山尽,黄河入海流。欲穷千里目,更上一层楼。'

3、索引诗词数据

数据拿到了,我们就可以将它们保存到ElasticSearch中了。用ElasticSearch的术语,这叫做“索引诗词数据”。

>>> from elasticsearch import Elasticsearch
>>> es = Elasticsearch()
>>> doc = {'title':title,'dynasty':dynasty, 'author':author,'content':content
}
>>> ret = es.index(index='poetry', body=doc)
>>> print(json.dumps(ret, indent=4, separators=(',', ': '), ensure_ascii=False))
{"_index": "test","_type": "test","_id": "bp3tNnABnXfYifgM_GRI","_version": 1,"result": "created","_shards": {"total": 2,"successful": 1,"failed": 0},"_seq_no": 0,"_primary_term": 1
}

根据返回的id,查询一下刚才保存的数据:

>>> ret = es.get(index='poetry', id='bp3tNnABnXfYifgM_GRI')
>>> print(json.dumps(ret, indent=4, separators=(',', ': '), ensure_ascii=False))
{"_index": "test","_type": "test","_id": "bp3tNnABnXfYifgM_GRI","_version": 1,"_seq_no": 0,"_primary_term": 1,"found": true,"_source": {"title": "登鹳雀楼","dynasty": "唐代","author": "王之涣","content": "白日依山尽,黄河入海流。欲穷千里目,更上一层楼。"}
}


4、完整的爬取代码

全部爬取代码不足100行,可直接复制保存为本地文件。只要环境安装没问题,ElasticSearch服务正常启动,代码可直接运行。

#!/usr/bin/env python
# coding:utf-8import lxml
import requests
from bs4 import BeautifulSoup
from elasticsearch import Elasticsearch, clientdef create_index():es = Elasticsearch()ic = client.IndicesClient(es)# 判断索引是否存在if not ic.exists(index="poetry"):# 创建索引doc = {"mappings": {"properties": {"title": {"type":  "keyword" },"epigraph": {"type":  "keyword" },"dynasty": {"type":  "keyword" },"author": {"type":  "keyword" },"content": {"type":  "text" }}}}ic.create(index='poetry', body=doc)def get_poetry(list_url):es = Elasticsearch()# 取得列表页面html = requests.get(list_url).textsoup = BeautifulSoup(html, "lxml")typecont = soup.find_all(attrs={"class":"typecont"})# 遍历列表for div in typecont:for ch in div.children:if ch.name == 'span':# 取得诗词内容print('get:', ch.a.text, ch.a.attrs['href'])html = requests.get('https://so.gushiwen.org' + ch.a.attrs['href']).textsoup = BeautifulSoup(html, "lxml")cont = soup.select('.main3 .left .sons .cont')[0]# 标题title = cont.h1.text# 词牌epigraph = ""if '·' in title:epigraph = title[:title.index('·')]al = cont.p.select('a')# 朝代dynasty = al[0].text# 作者author = al[1].text# 内容content = cont.select('.contson')[0].text.strip()# 索引数据doc = {"title": title,"epigraph": epigraph,"dynasty": dynasty,"author": author,"content": content}# ret = es.index(index='poetry', doc_type='poetry', body=doc)ret = es.index(index='poetry', body=doc)print(ret)
def main():create_index()get_poetry('https://so.gushiwen.org/gushi/tangshi.aspx')get_poetry('https://so.gushiwen.org/gushi/songsan.aspx')if __name__ == '__main__':main()



诗词数据分析

1、牛刀小试

有了诗词数据,我们就可以进行统计分析了。先牛刀小试一下,查询我一共收录了多少篇诗词:

>>> from elasticsearch import Elasticsearch
>>> es = Elasticsearch()
>>> ret = es.search(index='poetry')
>>> ret.keys() # 查询结果是一个字典,可以逐一查看其数据
dict_keys(['took', 'timed_out', '_shards', 'hits'])
>>> ret['hits']['total']['value'] # 这是查询到的文档总数
613
>>> for item in ret['hits']['hits']: # 这里是部分查询到的文档(ElasticSearch默认只返回前10条)print(item['_source']['title'], '--', item['_source']['author'])早发白帝城 / 白帝下江陵 -- 李白
夜上受降城闻笛 -- 李益
贾生 -- 李商隐
隋宫 -- 李商隐
瑶池 -- 李商隐
芙蓉楼送辛渐 -- 王昌龄
闺怨 -- 王昌龄
春宫曲 -- 王昌龄
九月九日忆山东兄弟 -- 王维
凉州词 -- 王翰

返回结果中的ret[‘hits’][‘total’][‘value’]是我们要的统计结果,ret[‘hits’][‘hits’]是查询到的文档。

ElasticSearch默认只返回前10条,可以使用参数指定返回的数量。下面指定返回2个文档:

>>> ret = es.search(index='poetry', body={'size':2})
>>> ret['hits']['total']['value'] # 查询总数任然是613
613
>>> for item in ret['hits']['hits']:  # 返回2个文档print(item['_source']['title'], '--', item['_source']['author'])print(item['_source']['content'])print()早发白帝城 / 白帝下江陵 -- 李白
朝辞白帝彩云间,千里江陵一日还。两岸猿声啼不住,轻舟已过万重山。夜上受降城闻笛 -- 李益
回乐烽前沙似雪,受降城外月如霜。(回乐烽 一作:回乐峰)不知何处吹芦管,一夜征人尽望乡。

那么这里面有多少是李白写的呢:

>>> condition = {"query":{"match":{"author":"李白"}},"size":0}
>>> ret = es.search(index='poetry', body=condition)
>>> ret['hits']['total']['value']
37

哇,竟然有37篇之多!

2、诗词作品收录排行榜

唐宋两代,是中国诗词的鼎盛时期,名篇佳作灿若星河,诗词大家群星璀璨。在这613篇作品中,究竟谁的作品最多呢?是诗仙李白?或者诗圣杜甫?抑或是开一代词风的李清照、苏东坡?让他们来一场PK吧。

>>> ret = es.search(index='poetry', body={'size':0, 'aggs': {'authors':{"terms": { "field": "author"}}}})
>>> for item in ret['aggregations']['authors']['buckets']:print(item['key'], item['doc_count'])杜甫 39
李白 37
王维 29
李商隐 24
苏轼 16
辛弃疾 16
孟浩然 15
李清照 14
周邦彦 12
韦应物 12

恭喜以上选手获得了本次比赛前10名。请看大屏幕:

3、最热门词牌排行榜

词的特点之一是词牌名,而几乎每一个词牌名的背后,都隐藏着一个故事。在我们的诗词库中,哪些词牌最受诗词达人的欢迎呢?对上面的检索条件略加修改,就可以很快知道结果了。这里检索结果取前11个,因为有些词是没有词牌名的(也许本事就是词牌吧)。

>>> ret = es.search(index='poetry', body={'size':0, 'aggs': {'epigraphs':{"terms": { "field": "epigraph",'size':11 }}}})
>>> for item in ret['aggregations']['epigraphs']['buckets']:print(item['key'], item['doc_count'])273
清平乐 11
浣溪沙 9
蝶恋花 9
鹧鸪天 9
卜算子 8
西江月 8
菩萨蛮 7
贺新郎 7
长相思 7
临江仙 6

最热门词牌排行榜为:

4、文字频率排行榜

创建索引时,有些朋友应该发现content字段的类型与其他的不一样,其他的都是keyword,而content是text。这么做是因为ElasticSearch有个分词机制,分词机制会将keyword类型的视为一个词,而对于text的字段,英文每个单词是一个词而中文则是每个字为一个词。

对于text字段,ElasticSearch使用了Fielddata缓存技术,要对这样的字段进行聚合,首先要开启字段的Fielddata:

>>> es.index(index='poetry', doc_type='_mapping', body={"properties": {"content": {"type": "text","fielddata": True}}})
{'acknowledged': True}

然后就可以进行聚合操作了:

>>> ret = es.search(index='poetry', body={'size':0, 'aggs': {'content':{"terms": { "field": "content",'size':20 }}}})
>>> 
>>> for item in ret['aggregations']['content']['buckets']:print(item['key'], item['doc_count'])一 288
人 287
不 280
风 265
山 217
无 208
月 205
花 205
天 185
来 184
春 182
时 178
云 177
日 171
上 168
何 166
水 166
夜 163
有 155
雨 146

文字频率TOP20,按照顺序写出来,几乎就是一首五言绝句:

一人不风山,无月花天来。

春时云日上,何水夜有雨。

奇也不奇?难怪!因为每一个汉字,本身就是一幅画、一个故事。有请TOP20出场:

5、飞花令

中国诗词大会最精彩的环节莫过于飞花令了。第八场彭敏绝地反击,与百人团进行飞花令的场景让人印象深刻。当时飞的是“江”字,那我们就来看一个包含有“江”字的诗词都有哪些。

上面的实例都是使用的ElasticSearch的聚合分析功能,这个例子则是使得全文检索功能。

>>> ret = es.search(index='poetry', body={"query":{"match":{"content":"江"}}, "highlight":{"fields":{"content":{}}}})
>>> ret['hits']['total']['value']
138
>>> for item in ret['hits']['hits']:print(item['_source']['title'], item['_source']['author'])print(item['highlight']['content'])print()

body增加了高亮选项,“highlight”:{“fields”:{“content”:{}}},可以高亮显示关键词。包含“江”字的诗词,一共138首,这里只显示了前10首。

忆江南 白居易 

江南好,风景旧曾谙。日出江花红胜火,春来江水绿如蓝。能不忆江南?

忆江南词三首 白居易 

江南好,风景旧曾谙。日出江花红胜火,春来江水绿如蓝。能不忆江南? 

江南忆,最忆是杭州。山寺月中寻桂子,郡亭枕上看潮头。何日更重游! 

江南忆,其次忆吴宫。吴酒一杯春竹叶,吴娃双舞醉芙蓉。早晚复相逢!

遣怀 杜牧 

落魄江南载酒行,楚腰纤细掌中轻。(江南 一作:江湖;纤细 一作:肠断)十年一觉扬州梦,赢得青楼薄幸名。

长干行·家临九江水 崔颢 

家临九江水,来去九江侧。同是长干人,生小不相识。

卜算子·我住长江头 李之仪 

我住长江头,君住长江尾。日日思君不见君,共饮长江水。

此水几时休,此恨何时已。只愿君心似我心,定不负相思意。

长相思·吴山青 林逋 

(谁知离别情 一作:争忍有离情)君泪盈,妾泪盈,罗带同心结未成,江边潮已平。(江边 一作:江头)

霜天晓角·仪真江上夜泊 黄机
寒江夜宿。长啸江之曲。水底鱼龙惊动,风卷地、浪翻屋。诗情吟未足。酒兴断还续。草草兴亡休问,功名泪、欲盈掬。

菩萨蛮·人人尽说江南好 韦庄
人人尽说江南好,游人只合江南老。春水碧于天,画船听雨眠。垆边人似月,皓腕凝霜雪。未老莫还乡,还乡须断肠。

采桑子·恨君不似江楼月 吕本中
恨君不似江楼月,南北东西,南北东西,只有相随无别离。恨君却似江楼月,暂满还亏,暂满还亏,待得团圆是几时?

清平乐·独宿博山王氏庵 辛弃疾
平生塞北江南,归来华发苍颜。布被秋宵梦觉,眼前万里江山。

再来一个超级飞花令,同时包含“江”和“水”的诗词有哪些呢?

>>> condition = {"query" : {"match" : {"content" : {"query": "江 水","operator" : "and"}}},"highlight": {"fields" : {"content" : {}}}
}
>>> ret = es.search(index='poetry', body=condition)
>>> ret['hits']['total']['value']
52
>>> for item in ret['hits']['hits']:print(item['_source']['title'], item['_source']['author'])print(item['highlight']['content'])print()

我们的诗词库中,共有52首同时包含“江”和“水”的诗词,这里只显示了前10首。

忆江南 白居易
江南好,风景旧曾谙。日出江花红胜火,春来江水绿如蓝。能不忆江南?

卜算子·我住长江头 李之仪
我住长江头,君住长江尾。日日思君不见君,共饮长江水。此水几时休,此恨何时已。只愿君心似我心,定不负相思意。

长干行·家临九江水 崔颢
家临九江水,来去九江侧。同是长干人,生小不相识。

竹枝词·山桃红花满上头 刘禹锡
山桃红花满上头,蜀江春水拍山流。花红易衰似郎意,水流无限似侬愁。

忆江南词三首 白居易
江南好,风景旧曾谙。日出江花红胜火,春来江水绿如蓝。能不忆江南?\n江南忆,最忆是杭州。山寺月中寻桂子,郡亭枕上看潮头。何日更重游!\n江南忆,其次忆吴宫。吴酒一杯春竹叶,吴娃双舞醉芙蓉。早晚复相逢!

霜天晓角·仪真江上夜泊 黄机
寒江夜宿。长啸江之曲。水底鱼龙惊动,风卷地、浪翻屋。诗情吟未足。酒兴断还续。草草兴亡休问,功名泪、欲盈掬。

菩萨蛮·人人尽说江南好 韦庄
人人尽说江南好,游人只合江南老。春水碧于天,画船听雨眠。垆边人似月,皓腕凝霜雪。未老莫还乡,还乡须断肠。

望江南·梳洗罢 温庭筠
梳洗罢,独倚望江楼。过尽千帆皆不是,斜晖脉脉水悠悠。肠断白蘋洲。

寄扬州韩绰判官 杜牧
青山隐隐水迢迢,秋尽江南草未凋。二十四桥明月夜,玉人何处教吹箫?

泊秦淮 杜牧
烟笼寒水月笼沙,夜泊秦淮近酒家。商女不知亡国恨,隔江犹唱后庭花。

有了这个武器,是不是也想报名参加下一期的诗词大会了?那就赶快去报名吧!


推荐阅读:10 个实用功能告诉你,谷歌云(Google Cloud)相对亚马逊云(AWS)有哪些优势?
我是如何用6个月,从0编程经验变成数据科学家的?
爱荷华大选 App 投票酿闹剧的反思:为什么我们在软件工程方面如此糟糕?
愿得一心人:硅谷亿万富豪们的婚姻怎样?有人白首相守七十年
一文告诉你,如何使用Python构建一个“谷歌搜索”系统 | 内附代码
区块链的阴暗面
真香,朕在看了!猛戳“阅读原文”,填写中国远程办公-调查问卷

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node.js 应用故障排查手册 —— 大纲与常规问题指标简介

楔子 你是否想要尝试进行 Node.js 应用开发但是又总听人说它不安全、稳定性差,想在公司推广扩张大前端的能力范畴和影响又说服不了技术领导。 JavaScript 发展到今天,早已脱离原本浏览器的战场,借助于 Node.js 的诞生将其触角伸到了服务端、P…

蚂蚁金服CTO程立:做工程要有“拧螺丝”的精神

“一台机器可能有无数颗螺丝,需要一个一个地拧,而且需要一圈一圈地拧,才能让系统间严丝合缝,顺利工作。代码的世界里,一个项目到底成功与否,也是取决于几个模型的关键特殊设置,就像拧螺丝一样。…

linux 环境安装DBI和DBD_03

文章目录一、软件下载二、安装DBI2.1. DBI下载2.2. 解压2.3. 安装依赖2.4. 编译2.5. 执行测试2.6. 安装2.6. 修改权限三、安装DBD-ORACLE组件3.1. DBI下载3.2. 修改权限3.3. 切换用户3.4. 解压3.5. 进入目录3.6. 初始化环境变量3.6. 查看配置的环境变量是否配置3.7. 刷新配置文…

像数据科学家一样思考:12步指南(上)

介绍 目前,数据科学家正在受到很多关注,因此,有关数据科学的书籍正在激增。我看过很多关于数据科学的书籍,在我看来他们中的大多数更关注工具和技术,而不是数据科学中细微问题的解决。直到我遇到Brian Godsey的“像数…

Mybatis-plus 大数据量数据流式查询通用接口

文章目录一、案例需求二、使用案例:2.1. 自定义查询接口2.2. 逻辑处理类2.3. 调用案例2.4. 具体逻辑处理案例三、企业案例3.1. key名称获取3.2. 逻辑类测试3.3.最后一个批次处理方案四、 通用SQL预编译处理4.1. 业务场景4.2. xml形式4.3. 注解形式五、企业案例5.1. …

基于MaxCompute的数仓数据质量管理

声明 本文中介绍的非功能性规范均为建议性规范,产品功能无强制,仅供指导。 参考文献 《大数据之路——阿里巴巴大数据实践》——阿里巴巴数据技术及产品部 著。 背景及目的 数据对一个企业来说已经是一项重要的资产,既然是资产&#xff…

IP应用加速 – DCDN迈入全栈新篇章

4月11日,第七届"亚太内容分发大会"暨CDN峰会国际论坛中,阿里云资深技术专家姚伟斌发布了DCDN子产品IP应用加速(IPA)。IPA是基于阿里云CDN本身的资源优化,对传输层(TCP&UDP)协议进…

十年磨一剑,王坚自研的MaxCompute如何解决世界级算力难题

大数据时代,随着企业数据规模的急剧增长,传统软件已无法承载,这也推动了大数据技术的发展,Google、AWS、微软等硅谷巨头纷纷投入大数据技术的研发;而在国内,王坚也在十年前带领阿里云团队研发MaxCompute&am…

matlab和robotstudio,MATLAB与Robotstudio建立socket通信(初探)

前记:听一首《不想病》,歌词唱开头:做什么都不对,说什么都浪费,想什么我都可悲....;感觉就是不一样,好歌!哎,,,回到正题。好多事要去做,还得挤时间…

贾扬清:我对人工智能方向的一点浅见

阿里妹导读:作为 AI 大神,贾扬清让人印象深刻的可能是他写的AI框架Caffe ,那已经是六年前的事了。经过多年的沉淀,成为“阿里新人”的他,对人工智能又有何看法?最近,贾扬清在阿里内部分享了他的…

Node.js 应用故障排查手册 —— 类死循环导致进程阻塞

类死循环导致进程阻塞 楔子 在实践篇一中我们看到了两个表象都是和 CPU 相关的生产问题,它们基本也是我们在线上可能遇到的这一类问题的典型案例,而实际上这两个案例也存在一个共同点:我们可以通过 Node.js 性能平台 导出进程对应的 CPU Pro…

如何使用5个Python库管理大数据?

来源 | medium编译 | 武明利责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)如今,Python真是无处不在。尽管许多看门人争辩说,如果他们不使用比Python更难的语言编写代码,那么一个人是否真是软件开发人员&…

如何把创建ECS(CreateInstance)作为触发器来触发函数计算

问题描述 函数计算虽然不支持直接集成到ECS的管控事件上,但是函数计算本身是支持日志服务作为触发器的。即可以配置日志服务中logstore里的增强日志作为触发器来触发函数计算服务中的函数,同时可以传递project 和 logstore的name以及beginCursor/endCur…

ORACLE添加字段、删除字段

文章目录1. 删除表2. 创建表3. 添加字段4. 删除指定字段5. 修改指定字段长度1. 删除表 DROP TABLE SYS_JOB;2. 创建表 -- CREATE TABLE CREATE TABLE SYS_JOB (JOB_ID NUMBER(30) NOT NULL,JOB_NAME VARCHAR2(30) NOT NULL ); ALTER TABLE SYS_JOB ADD CONSTRA…

像数据科学家一样思考:12步指南(中)

像数据科学家一样思考:12步指南(上)《像数据科学家一样思考》 7-工程产品 下一步是建立统计软件。如果统计是分析和从数据中得出结论的框架,那么软件就是将这个框架付诸行动的工具。数据科学家必须为任何项目做出许多软件选择。如…

2020云计算,是四强争霸还是赢家通吃?

来源 | 架构师技术联盟责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)近日,谷歌母公司Alphabet首次公布了谷歌云计算业务的数据,这一举动将云计算行业重新推到了聚光灯下。众所周知,全球云市场竞争激烈&…

加载程序中数据库账号密码加密策略wallet_04

文章目录1. 切换到oracle用户2. 创建wallet目录3. 创建wallet 账户4. 查看创建的wallet5. 创建wallet目录6. 查看证书7. 把证书拷贝到客户端8. 在客户端的sqlnet.ora里添加9. 客户端的tnsnames.ora10. 测试登陆11. oracle环境变量oracle服务端创建wallet 1. 切换到oracle用户 …

利用丁香园数据生成疫情分布地图(R语言)| 博文精选

来源 | CSDN 博客作者 | 万里写入胸怀间责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)疫情牵动大家,除了做好分内工作,管好自己不给社会添乱,也就是只能持续关注疫情了。现在各大门户平台都上线了疫情实时地…

php连接数据库性能测试,无需安装配置,多操作系统支持数据库及性能测试

iBoxDB是一个NoSQL数据库, 有SQLite的特性,但拥有更强大的Replication功能,支持更多的数据类型,自动完成ORMSQLite是全球知名度Top 10的数据库之一, 在文章 中对 SQLite 与 MySQL进行了一个事务中1万次插入测试, 测试的结果是"sqlite3用时仅0.4s,mysql用时2.2s"iBoxD…

ORACLE 添加和查看注释

文章目录一、表二、字段一、表 #1.给表加注释 COMMENT ON TABLE SYS_JOB IS 任务调度表;#2.查看表的COMMENT SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAMETABLENAME; 例如: SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAMESYS_JOB;二、字段 # 1.给字段加…