wechat

手把手教你使用Python抓取QQ音乐数据(第四弹)

风格不统一 提交于 2020-08-12 11:07:09
【一、项目目标】 通过 手把手教你使用Python抓取QQ音乐数据(第一弹) 我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。 通过 手把手教你使用Python抓取QQ音乐数据(第二弹) 我们实现了获取 QQ 音乐指定歌曲的歌词和指定歌曲首页热评。 通过 手把手教你使用Python抓取QQ音乐数据(第三弹) 我们实现了获取更多评论并生成词云图。 此次我们将将三个项目封装在一起,通过菜单控制爬取不同数据。 【二、需要的库】 主要涉及的库有:requests、openpyxl、html、json、wordcloud、jieba 如需更换词云图背景图片还需要numpy库和PIL库(pipinstall pillow) 如需生成.exe需要pyinstaller -F 【三、项目实现】 1.首先确定菜单,要实现哪些功能: ①获取指定歌手的歌曲信息(歌名、专辑、链接) ②获取指定歌曲歌词 ③获取指定歌曲评论 ④生成词云图 ⑤退出系统 代码如下: class QQ(): def menu(self): print('欢迎使用QQ音乐爬虫系统,以下是功能菜单,请选择。\n') while True: try: print('功能菜单\n1.获取指定歌手的歌曲信息\n2.获取指定歌曲歌词\n3.获取指定歌曲评论\n4.生成词云图\n5.退出系统\n')

打破你的认知,数字除以 0 一定会崩溃吗?

大兔子大兔子 提交于 2020-08-12 08:25:02
作者:IT互联网大叔 https://juejin.im/post/5edcc957e51d4578801683c0 一、引言 在这个浮躁的社会,我们都学会了一种技能,快速学习使用各种开源库、开源框架。 学习使用各种高端大气的技术,热修复、插件化、模块化、ORM…… 这些技能固然重要,但是有时候也要放慢脚步,耐着性子,打打基本功。 不要看不起这些零零碎碎的基础知识,这些基础日积月累,慢慢的会让你跟同事拉开差距。 接下来,我们直奔主题。开始我们的基本功。 二、代码1 System.out.println("1/0=" + 1/0); 大叔的灵魂拷问: 上面的代码会崩溃吗?如果不会,会输出什么呢? 上面的代码会崩溃吗?如果不会,会输出什么呢? 上面的代码会崩溃吗?如果不会,会输出什么呢? 运行直接崩溃。 三、代码2 我们再来看一行代码: System.out.println("1.0/0=" + 1.0/0); 大叔的灵魂拷问: 会崩溃吗?如果不会,会输出什么呢? 会崩溃吗?如果不会,会输出什么呢? 会崩溃吗?如果不会,会输出什么呢? 输出日志: 四、为什么? 为什么浮点数除以0不会崩溃? 我们先说结论: 因为java的 float 和double使用了 IEEE 754 标准。 这个标准规定:浮点数除以0等于正无穷或负无穷。 4.1、Double类的定义

Meteva——让预报检验不再重复造轮子

梦想与她 提交于 2020-08-12 08:09:12
更多精彩,请点击上方蓝字关注我们! **检验是什么?** 预报准确率的客观表达 说到天气预报,你最先会想到什么? 早上听了预报,带了一天伞却没下一滴雨的调侃? 还是 “蓝天白云晴空万里突然暴风雨” 的无奈? 其实,认为天气预报该百分百准确,是对现代科学的“蜜汁自信”。毕竟,由于大气系统的不确定性,天气预报不可能百分百准确已是不争的事实。同时,因为“选择性记忆”的存在,人脑对“不满”的记忆也往往更加深刻。 事实上,近年来,我国的天气预报准确率已经有快速提升,晴雨预报准确率高达90%,台风路径误差小于70公里。无论是普通民众、专业用户还是预报员,对预报的感受绝对比十年前准确得多。 其实说到准确率的问题,首先要明确一个关键词—— 检验标准 。 譬如暴雨的定义,国标规定是24小时降雨量为50-99.9毫米的降雨,而公众往往认为是“下得猛烈”的急雨,这就造成了理解上的偏差。作为衡量预报是否准确的一把标尺,客观的检验结果,有助于增进我们对天气预报的理解。 随着中国气象局研究型业务的开展,满足各方面需求的“全流程检验”应运而生。 什么是全流程检验程序库 全流程检验程序库(简称Meteva)是面向气象预报产品及中间产品进行全面检验评估所需要用到函数和功能的集成。它是国内第一款专门用于气象预报检验的Python程序库,也是一款开源程序。**数值模式和客观算法、精细化网格预报

20. Go 语言中关于包导入必学的 8 个知识点

℡╲_俬逩灬. 提交于 2020-08-12 03:05:42
Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客: http://golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 单行导入与多行导入 在 Go 语言中,一个包可包含多个 .go 文件(这些文件必须得在同一级文件夹中),只要这些 .go 文件的头部都使用 package 关键字声明了同一个包。 导入包主要可分为两种方式: 单行导入 import "fmt" import "sync" 多行导入 import( "fmt" "sync" ) 如你所见,Go 语言中 导入的包,必须得用双引号包含,在这里吐槽一下。 2. 使用别名 在一些场景下,我们可能需要对导入的包进行重新命名,比如 我们导入了两个具有同一包名的包时产生冲突,此时这里为其中一个包定义别名 import ( "crypto/rand" mrand "math/rand" // 将名称替换为mrand避免冲突 ) 我们导入了一个名字很长的包,为了避免后面都写这么长串的包名,可以这样定义别名 import hw

微信小程序

允我心安 提交于 2020-08-12 01:49:12
微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。 工具 微信开发者工具 下载链接: https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 微信小程序账号 注册连接: https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN&token= 小程序优点 即用即走 在微信界面就能使用所有的服务 不需要再安装一堆并非每天都会用到的应用 节省手机内存 它可以显示为一个单独的手机应用图标,访问很方便 开发成本低,你可以轻松地发布自己的程序。 小程序页面 index.js : 逻辑页面 index.json : 配置页面 index.wxml : 结构页面 index.wxss : 样式页面 wxml与wxss的语法和html与css基本一致 小程序单位 pt:为逻辑分辨率,与屏幕尺寸有关, 可以理解为长度单位; px:为物理分辨率,与屏幕尺寸无关,用于描述像素点的多少; ppi:每英寸包含的像素点 小程序单位换算关系 iphone6下1px=1rpx=0.5pt (rpx会在不同设备下转换

Prometheus监控神器-Alertmanager篇(1)

 ̄綄美尐妖づ 提交于 2020-08-11 21:37:48
本章节主要涵盖了Alertmanager的工作机制与配置文件的比较详细的知识内容,由浅入深的给大家讲解。 警报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的。警报规则在 Prometheus 定义,警报规则触发以后,才会将信息转发到给独立的组件 Alertmanager ,经过 Alertmanager r对警报的信息处理后,最终通过接收器发送给指定用户,另外在 Alertmanager 中没有通知组的概念,只能自己对软件重新Coding,或者使用第三方插件来实现。 注意,这个通知组不是Alertmanager中的group概念,下面会详细讲 Group ,不要混淆哦。 前面已经介绍过一些关于 Alertmanager 知识点,本章开始针通过安装 Alertmanager 组件,对配置文件做详细说明,同时介绍 Prometheus 的警报规则的定义,最后使用Email、Wechat(Robot)、Dingtalk(webhook)来接受警报通知。 Alertmanager工作机制 在Prometheus生态架构里,警报是由独立的俩部分组成,可以通过上图很清晰的了解到 Prometheus 的警报工作机制。其中 Prometheus 与 Alertmanager 是分离的俩个组件。我们使用Prometheus Server端通过静态或者动态配置

Linux下diff命令用法详解

徘徊边缘 提交于 2020-08-11 17:33:56
大家好,我是良许。 我们在平时工作的时候,经常要知道两个文件之间,以及同个文件不同版本之间有何异同点。在 Windows 下,有 beyond compare 这个好用的工具,而在 Linux 下,也有很多很强大的工具,良许之前也写过一篇文章介绍: Linux下9种优秀的代码比对工具推荐 这些比对工具其实都是基于 diff 命令,下面就详细介绍一些 diff 命令的用法。 diff 命令是一个分析文件信息的命令,可以打印出文件之间的差异。它可以逐行地比较两个文件的内容,也可以递归地比较文件夹的内容。 diff 命令的输出内容可以让我们知道要使两个文件相同需要做哪些修改,这对于我们的工作很有帮助。 在开始前,我们先用文件编辑器创建两个内容相同的文件。这里我们使用的是 nano 。 $ nano diffsample1 输入内容: 发布 优质的 技术文章 使用 Ctrl + X 和 Y 保存并退出。 创建第二个文件: $ nano diffsample2 输入同样的内容并保存退出。 需要注意的是,空格和 Tab 对两个文件是否完全相同会有影响。 使用 diff 命令查看两个文件是否有差异: $ diff diffsample1 diffsample2 这时 diff 命令没有输出任何信息,说明这两个文件的内容是完全相同的。 现在我们对 diffsample2 做一些修改,将 文章 改为

微信扫码登录是如何实现的?

空扰寡人 提交于 2020-08-11 14:22:17
网页版微信刚推出时,无数人被它的登录方式惊艳了一下,不需要输入用户名密码,打开手机微信扫一扫,便自动登录。从原理上讲,二维码只能是一段文本的编码,如何用它实现快捷登录的呢? 打开网页版微信,可以看到如下的页面: 微信扫码界面 如果你用我查查、支付宝、新浪微博等软件扫码二维码,你会发现此二维码解析出来是如下的网址: https://login.weixin.qq.com/l/obsbQ-Dzag== 接下来详细介绍一下扫码登录具体的每个步骤: 扫码登录完整流程 ①:用户 A 访问微信网页版,微信服务器为这个会话生成一个全局唯一的 ID,上面的 URL 中 obsbQ-Dzag== 就是这个 ID,此时系统并不知道访问者是谁。 ②:用户A打开自己的手机微信并扫描这个二维码,并提示用户是否确认登录。 ③:手机上的微信是登录状态,用户点击确认登录后,手机上的微信客户端将微信账号和这个扫描得到的 ID 一起提交到服务器 ④:服务器将这个 ID 和用户 A 的微信号绑定在一起,并通知网页版微信,这个 ID 对应的微信号为用户 A,网页版微信加载用户 A 的微信信息,至此,扫码登录全部流程完成 扫码登录看起来神奇,主要是因为微信 APP 扫自家的码会做一些普通二维码软件不会做的额外的操作,那就是将当前已登录的微信和扫出来的 ID 提交到微信服务器,类似的应用还有扫码支付、扫码加公众号等功能。

Java中的对象都是在堆上分配的吗?

拥有回忆 提交于 2020-08-11 14:00:16
作者:LittleMagic https://www.jianshu.com/p/8377e09971b8 为了防止歧义,可以换个说法: Java对象实例和数组元素都是在堆上分配内存的吗? 答:不一定。满足特定条件时,它们可以在(虚拟机)栈上分配内存。 JVM内存结构很重要,多多复习 这和我们平时的理解可能有些不同。虚拟机栈一般是用来存储基本数据类型、引用和返回地址的,怎么可以存储实例数据了呢? 这是因为Java JIT(just-in-time)编译器进行的两项优化,分别称作 逃逸分析 (escape analysis)和标量替换(scalar replacement)。 注意看一下JIT的位置 中文维基上对逃逸分析的描述基本准确,摘录如下: 在编译程序优化理论中,逃逸分析是一种确定指针动态范围的方法——分析在程序的哪些地方可以访问到指针。当一个变量(或对象)在子程序中被分配时,一个指向变量的指针可能逃逸到其它执行线程中,或是返回到调用者子程序。 如果一个子程序分配一个对象并返回一个该对象的指针,该对象可能在程序中被访问到的地方无法确定——这样指针就成功“逃逸”了。如果指针存储在全局变量或者其它数据结构中,因为全局变量是可以在当前子程序之外访问的,此时指针也发生了逃逸。 逃逸分析 确定某个指针可以存储的所有地方,以及确定能否保证指针的生命周期只在当前进程或线程中。 简单来讲

后端程序员就靠它吃饭了,推荐一份夯实基础的操作系统书单!

两盒软妹~` 提交于 2020-08-11 13:45:40
​ 学习编程,操作系统是你必须要掌握的基础知识,那么操作系统到底是什么呢? 这还用说么,操作系统不就是Windows、Linux、Mac、IOS、Android、IOS这类我们天天都在用的东西么? 此话不假,但是操作系统作为计算机科学里的一门基础学科,肯定不能这么接地气对不对,总的来点高大上的概念,震慑一下你们吧。 根据百度百科的介绍,操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。 这个介绍足够高大上了吧,那么到底啥是操作系统呢,简单来说,操作系统就是管理计算机硬件和软件资源的一种软件,计算机里的硬盘、鼠标键盘、显示器等设备,都要由它来管理,你打开游戏、打开浏览器或者是看电影,也都要通过操作系统来执行。 没有了操作系统,电脑就失去了灵魂,只是一堆硬件而已。 了解了操作系统的基本概念之后,接下来我们再来看看,为什么我们要学习操作系统呢? 首先,当然是因为面试要考啦。 其次,无论你学习什么编程语言,和都避免不了和操作系统打交道,比如你学习Java,用到多线程技术,实际上操作系统才是负责管理进程和线程的,所以Java里的线程常常要和操作系统的线程或者进程一一对应。 此外