prism

Python每日一练(5)-百词斩

99封情书 提交于 2020-04-07 07:39:57
目录 1. 单词背记 2. 单词提醒 3. 记忆功能 4. 语音朗读 5. 积分评价 6. 默写输出 7. 词汇获取 1. 单词背记 英语是目前世界上使用最广泛的语言之一,也是国际上通用的语言。随着各国交流越来越频繁,英语的地位与日俱增。在中国,已经有成千上万的人加入到英语学习大军中,英语对于我们来说已经是一门不可或缺的技能,但英语单词记忆是一大难题。请编写一个程序,帮助学习者快速背记英语单词。运行程序,随机输出英语单词的汉语意思,要求写出或说出英文。运行效果如下图所示。 示例代码如下: import random # 思考: 一个中文对应一个英语单词,用什么数据类型存储好呢? # 答: 字典 key(中文) --> value(英文) word_dict = { "手机" : "mobile phone" , "美女" : "beauty" , "电脑" : "computer" , "成语" : "idiom" , "价格" : "price" , "年龄" : "age" , "商店" : "shop" } word_list = list ( word_dict ) print ( "**************百词斩**************" ) while True : terms = random . choice ( word_list ) # terms:

Spring Boot2.X整合消息中间件RabbitMQ原理简浅探析

雨燕双飞 提交于 2020-04-07 07:29:59
前言 RabbitMQ是一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件最主要的作用还是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支持,RPC的调用等等。 文章目录 1、简单概述RabbitMQ重要作用 1.1、异步 1.2、解耦 2、简单概述RabbitMQ重要概念 2.1、RabitMQ的工作流程 2.2、交换机 2.3、RabbitMQ关键概念总览简述 3、Spring Boot整合RabbitMQ Spring Boot整合RabbitMQ原理分析 3.1、整合前准备Rabbitmq环境 3.2、搭建依赖环境 3.3、配置 application.properties文件 3.4、编写ApplicationTests测试代码 1、fanout广播方式发送数据观察 2、Topic指定路由键Key规则方式发送数据 3、direct单播方式发送数据 3.5、自定义消息转换规则 3.6、AmqpAdmin 管理组件的使用 1、创建Exchange 2、创建Queue 3、创建Binding 3.7、监听消息@EnableRabbit +

hive四种排序order by,sort by,distribute by,cluster by的区别

风流意气都作罢 提交于 2020-04-07 05:36:06
1.数据准备 创建person表 CREATE TABLE ` person ` ( ` id ` int, ` name ` string, ` address ` string ) 添加如下数据: hive > insert into person values ( 1, 'lisi' , 'beijing' ) ; hive > insert into person values ( 2, 'zhangsan' , 'chengdu' ) ; hive > insert into person values ( 3, 'wangwu' , 'shanghai' ) ; hive > insert into person values ( 4, 'zhaoliu' , 'guangzhou' ) ; hive > insert into person values ( 5, 'name5' , 'beijing' ) ; 2.order by order by会对查询结果执行一个全局排序,reducer的数量是1。因此这个过程可能会很漫长。 hive > select * from person order by id desc ; 5 name5 beijing 4 zhaoliu guangzhou 3 wangwu shanghai 2 zhangsan chengdu

一文读懂滤波器的线性相位,全通滤波器,群延迟

情到浓时终转凉″ 提交于 2020-04-06 18:26:34
一文读懂滤波器的线性相位,全通滤波器,群延迟 1. 延迟 2. 全通滤波器 3.相位延迟和群延迟 4. 实际生活中的例子 总结: 数字信号处理最常见的面试题,请简述FIR和IIR的区别。其中的一个区别是FIR可以方便地实现线性相位。那这个线性相位指的是什么呢?本篇博客通过两个例子, 延迟 和 全通滤波器 ,来解释这些概念。 先说结论: 线性相位能保证信号中各频率成分的相对相位关系不改变。 通俗解释是: 信号经过线性相位滤波器后,各个频率分量的延时时间是一样的 。 1. 延迟 举一个最简单的FIR的例子,延迟。假设16kHz的采样频率,一个采样周期的延迟,可以用FIR来表示。利用Matlab来观看这个滤波器的频率响应,代码如下。采样频率为Fs = 16kHz, 采样周期为Ts,Ts = 1/Fs。 num = [0,1] den = [1,0] fvtool(num,den) 下图中,蓝色的实线表示的幅频响应,为0dB。红色实线表示相频响应,主要看相频响应。图中对1k,2k,4kHz频点的横纵坐标有截图,16kHz采样率下,1kHz的正弦信号一个完整的周期(这里说的周期指的是 2 π 2\pi 2 π )内会得到16个采样值。一个采样周期的延迟,带来的相位变化是 − 2 π / 16 = − π / 8 = − 22.5 ° -2\pi/16=-\pi/8=-22.5\degree

bash-shell高级编程--退出和退出状态码

▼魔方 西西 提交于 2020-04-06 18:15:36
退出和退出状态码 大家都知道 exit 是用来退出一个脚本,既可以使用 exit 来结束一个脚本,像常用的C语言一样,它也会返回一个值,这个值会传递给脚本的父进程,父进程会使用这个值做下一步的处理。 其实在 linux 中执行任何一个命令都会返回一个退出码,成功的命令返回0,而不成功的命令返回非零值,非零值通常通常都会解释成一个错误码。 当然脚本中的函数和脚本本身也会返回退出状态码,在脚本中最后执行的命令决定脚本返回的状态码(就是exit之前的命令) #!/bin/bash tldr ls . . . # 在执行exit之前的一个命令决定脚本返回值状态码值 ls -l name exit # exit $? 不带参数的exit命令和exit $?的效果是一样的,就算你在脚本的末尾不写exit效果也是一样的 bash 脚本中 $? 保存这最后执行命令的退出状态码,当函数返回之后, $? 同样保存函数中最后执行的命令的退出状态码,这就是 bash 对函数返回值的处理方法,同样,当一个脚本退出 $? 保存了脚本的退出状态码,这个退出状态码就是脚本中最后执行的命令的退出状态码。 #!/bin/bash echo hello echo $? # 退出状态为0, 因为命令执行成功. lskdf # 无效命令. echo $? # 非零的退出状态, 因为命令执行失败. echo exit 113

UVA11456 Trainsorting【LIS+DP】

拜拜、爱过 提交于 2020-04-06 18:03:58
Erin is an engineer. She drives trains. She also arranges the cars within each train. She prefers to put the cars in decreasing order of weight, with the heaviest car at the front of the train. Unfortunately, sorting train cars is not easy. One cannot simply pick up a car and place it somewhere else. It is impractical to insert a car within an existing train. A car may only be added to the beginning and end of the train. Cars arrive at the train station in a predetermined order. When each car arrives, Erin can add it to the beginning or end of her train, or refuse to add it at all. The

pyqt5 异步事件 收集

北慕城南 提交于 2020-04-06 18:03:36
pyqt5 异步事件 收集 quamash, 利用Qt事件循环实现 PEP 3156事件循环( asyncio ) api https://www.kutu66.com//GitHub/article_112085 PyQt5 界面显示无响应的实现 http://www.cppcns.com/jiaoben/python/304010.html from PyQt5 . QtCore import QThread , pyqtSignal class interface ( QMainWindow , Ui_MainWindow ) : "" " Class documentation goes here . "" " def xxxx ( ) : "此处省略无数行代码......" self . Work ( ) def Work ( self ) : self . thread = RunThread ( ) self . thread . start ( ) class RunThread ( QThread ) : # python3,pyqt5与之前的版本有些不一样 # 通过类成员对象定义信号对象 # _signal = pyqtSignal ( str ) trigger = pyqtSignal ( ) def __init__ ( self , parent =

Spark-SQL adaptive 自适应框架

人盡茶涼 提交于 2020-04-06 17:35:02
一、自适应框架能解决什么问题 1、目前SparkSQL中reduce阶段的task个数取决于固定参数spark.sql.shuffle.partition(默认值200),一个作业一旦设置了该参数,它运行过程中的所有阶段的reduce个数都是同一个值。 而对于不同的作业,以及同一个作业内的不同reduce阶段,实际的数据量大小可能相差很大,比如reduce阶段要处理的数据可能是10MB,也有可能是100GB, 如果使用同一个值对实际运行效率会产生很大影响,比如10MB的数据一个task就可以解决,如果spark.sql.shuffle.partition使用默认值200的话,那么10MB的数据就要被分成200个task处理,增加了调度开销,影响运行效率。 SparkSQL自适应框架可以通过设置shuffle partition的上下限区间,在这个区间内对不同作业不同阶段的reduce个数进行动态调整。 通过区间的设置,一方面可以大大减少调优的成本(不需要找到一个固定值),另一方面同一个作业内部不同reduce阶段的reduce个数也能动态调整 参数如下: spark . sql . adaptive . enabled 默认false 自适应执行框架的开关 spark . sql . adaptive . minNumPostShufflePartitions 默认为1

Spark-SQL处理小文件问题

老子叫甜甜 提交于 2020-04-06 17:31:17
一、小文件产生的原因 1、在使用spark sql处理数据的过程中,如果有shuffle产生,依赖于spark.sql.shuffle.partitions配置信息,默认为200,当处理的数据量比较大时,通常会把该值调大,以避免单个分区处理的数据太大出现异常或者拖慢整个任务的执行时间。 2、如果没有shuffle产生,文件的数量依赖于数据源的文件数量以及文件是否可切分等特性决定任务的并发度即task数量,如果在进行数据清洗转换或者的过程中通常不会涉及shuffle,此时会产生很多小文件,造成资源的浪费,给NameNode增加压力。 二、如何解决小文件问题 1)、降低spark.sql.shuffle.partitions配置的值,但会影响处理的并发度 2)、使用repartition和coalesce 根据经验调整分区数的大小,但是太不灵活,如果使用spark-sql cli方式,就很不方便 3)、在数据入库的时候使用distribute by 字段或者rand(),但是此时对字段的选择就需要慎重 4)、spark sql adaptive 自适应框架 三、spark-sql adaptive框架解决小文件问题 1、打开自适应框架的开关 spark . sql . adaptive . enabled true 2、设置partition的上下限 spark . sql .

shell高级编程--引用

人盡茶涼 提交于 2020-04-06 17:30:09
引用 在shell中,引用的意思就是时讲字符串使用双拥好括起来,他的作用就是保护字符串中的特殊字符、不被shell或者shell脚本重新解释,或者扩展。 andrew@andrew:~$ ls -l [ Ss ] * -rwx------ 1 andrew andrew 3849 1月 19 01:07 sources.list andrew@andrew:~$ ls -l "[Ss]*" ls: 无法访问 '[Ss]*' : 没有那个文件或目录 andrew@andrew:~$ 某些程序和工具能够重新解释或者扩展被引用的特殊字符,引用的一个重要的作用就是保护命令行参数不被shell解释,但是还是能够让调用的程序来扩展它。 点赞 收藏 分享 文章举报 Achou.Wang 博客专家 发布了370 篇原创文章 · 获赞 153 · 访问量 34万+ 他的留言板 关注 来源: oschina 链接: https://my.oschina.net/u/4406332/blog/3216126