wechat

12. Go 语言流程控制:defer 延迟语句

偶尔善良 提交于 2020-05-07 08:55:06
Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客: http://golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 今天是最后一篇讲控制流程了,内容是 defer 延迟语句,这个在其他编程语言里好像没有见到。应该是属于 Go 语言里的独有的关键字,但即使如此,阅读后这篇文章后,你可以发现 defer 在其他编程语言里的影子。 1. 延迟调用 defer 的用法很简单,只要在后面跟一个函数的调用,就能实现将这个 xxx 函数的调用延迟到当前函数执行完后再执行。 defer xxx() 这是一个很简单的例子,可以很快帮助你理解 defer 的使用效果。 import "fmt" func myfunc() { fmt.Println("B") } func main() {

从入门到熟悉 HTTPS 的 9 个问题

倾然丶 夕夏残阳落幕 提交于 2020-05-07 01:30:06
作者:bestswifter https://juejin.im/post/58c5268a61ff4b005d99652a Q1: 什么是 HTTPS? BS: HTTPS 是安全的 HTTP HTTP 协议中的内容都是明文传输,HTTPS 的目的是将这些内容加密,确保信息传输安全。最后一个字母 S 指的是 SSL/TLS 协议,它位于 HTTP 协议与 TCP/IP 协议中间。 Q2: 你说的信息传输安全是什么意思 BS: 信息传输的安全有三个方面: 1、客户端和服务器直接的通信只 2、有自己能看懂,即使第三方拿到数据也看不懂这些信息的真实含义。 3、第三方虽然看不懂数据,但可以 XJB 改,因此客户端和服务器必须有能力判断数据是否被修改过。 4、客户端必须避免中间人攻击,即除了真正的服务器,任何第三方都无法冒充服务器。 很遗憾的是,目前的 HTTP 协议还不满足上述三条要求中的任何一条。 Q3: 这么多要求,一个一个去满足是不是很累? BS: 不累,第三个要求可以不用管 是的,我没开玩笑,你可以暂时别管第三个要求,因为它实际上隶属于第一个需求。我们都知道加密需要密码,密码不是天下掉下来,也得需要双方经过通信才能协商出来。所以一个设计良好的加密机制必然会防止第三者的干扰和伪造。等搞明白了加密的具体原理,我们自然可以检验是否满足:“任何第三者无法冒充服务器”这一要求。 Q4:

判断浏览器类型

余生颓废 提交于 2020-05-06 23:17:00
/** *判断当前的浏览器类型 */ function terminalInfo() { var jsons= {} var ua = navigator.userAgent; var isWeixin = !!/MicroMessenger/i.test(ua); var isAplipay = !!/AlipayClient/i.test(ua); var isUnionPay = !!/UnionPay/i.test(ua); //云闪付 //判断是否是微信访问 if(isWeixin){ jsons.appName = "WECHAT"; jsons.payChannel = "wxpay"; jsons.source = "WEB_WECHAT" }else if(isAplipay){ jsons.appName = "ALIPAY"; jsons.payChannel = "ALIPAY"; jsons.source = "WEB_ALIPAY" }else if(isUnionPay){ jsons.appName = "UNIONPAY"; jsons.payChannel = "UNIONPAY"; jsons.source = "WEB_UNIONPAY" }else{ jsons.appName = "WEB"; jsons.source = "WEB";

Pandas切片操作:很容易忽视的SettingWithCopyWarning

大城市里の小女人 提交于 2020-05-06 20:29:24
Pandas是一个强大的分析结构化数据的工具集,主要用于数据挖掘和数据分析,同时也提供数据清洗功能。 很多初学者在数据的选取,修改和切片时经常面临一些困惑。这是因为Pandas提供了太多方法可以做同样的事情,方法选择不当,可能导致一些意想不到的错误。 Pandas切片 Pandas数据访问方式包括:df[] ,.at,.iat,.loc,.iloc(之前有ix方法,pandas1.0之后已被移除) df[] :直接索引 at/iat:通过标签或行号获取某个数值的具体位置。 loc:通过标签选取数据,即通过index和columns的值进行选取。loc方法有两个参数,按顺序控制行列选取,范围包括start和end。 iloc:通过行号选取数据,即通过数据所在的自然行列数为选取数据。iloc方法也有两个参数,按顺序控制行列选取。 它们之间的区别不是文本重点,大家可以新建一个dataframe练习一下,本文我们主要来一个错误示范,然后给大家提一些合理的建议。 错误示范 新建一个DataFrame df = pd.DataFrame( {'x':[1,5,4,3,4,5], 'y':[.1,.5,.4,.3,.4,.5], 'w':[11,15,14,13,14,15]}) x y w 0 1 0.1 11 1 5 0.5 15 2 4 0.4 14 3 3 0.3 13 4 4 0.4

ERNIE加持,飞桨图神经网络PGL全新升级

做~自己de王妃 提交于 2020-05-06 19:58:59
在2019年深度学习开发者秋季峰会上,百度对外发布飞桨图学习框架PGL v1.0正式版,历经5个月的版本迭代,PGL再度升级,发布v1.1版本,带来了最新的算法突破、全面的工业级图学习框架能力以及工业级的实践案例。下面我们逐一揭秘升级点。 最新算法突破:结合语义与结构信息的图神经网络模型ERNIESage 在很多工业应用中,往往出现如下图所示的一种特殊的图:Text Graph。顾名思义,图的节点属性由文本构成,而边的构建提供了结构信息。如搜索场景下的Text Graph,节点可由搜索词、网页标题、网页正文来表达,用户反馈和超链信息则可构成边关系。 ​ PGL团队提出ERNIESage模型同时建模文本语义与图结构信息,有效提升Text Graph的应用效果。其中ERNIE是百度推出的基于知识增强的持续学习语义理解框架,在中英文16个任务上超越业内同类最优模型,以历史上首次超越90大关的成绩登顶自然语言处理领域最权威的 GLUE评测榜单 ,并在最近SemEval 2020上斩获5项世界冠军。 ERNIESage是ERNIE与GraphSAGE碰撞的结果,是ERNIE SAmple aggreGatE的简称,它的结构如下图所示,主要思想是通过ERNIE作为聚合函数(Aggregators),建模自身节点和邻居节点的语义与结构关系。 ERNIESage对于文本的建模是构建在邻居聚合的阶段

11. Go 语言流程控制:goto 无条件跳转

ε祈祈猫儿з 提交于 2020-05-06 09:18:33
Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客: http://golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 前面三种,我已经都讲过了,今天要讲讲 goto 的无条件跳转。 很难想象在 Go 居然会保留 goto,因为很多人不建议使用 goto,所以在一些编程语言中甚至直接取消了 goto。 我感觉 Go 既然保留,一定有人家的理由,只是我目前还没感受到。不管怎样,咱还是照常学习吧。 0. 基本模型 goto 顾言思义,是跳转的意思。 goto 后接一个标签,这个标签的意义是告诉 Go程序下一步要执行哪里的代码。 所以这个标签如何放置,放置在哪里,是 goto 里最需要注意的。 goto 标签; ... ... 标签: 表达式; 1. 最简单的示例 goto

微信公众号开发——那些令前端同学迷惑的微信校验

谁说我不能喝 提交于 2020-05-05 19:36:05
微信公众号开发——那些令前端同学迷惑的微信校验 微信公众号开发中几个阶段的权限校验,相对于前端同学来说(特别是没有nodejs基础的同学来说)可能相当费解,不过话说回来,现代前端不会nodejs可能会混的相当难受。 咱们今天把这些烦人的 access_token、 jsapi_ticket、signature 一次盘明白,本文所有操作都基于公众号的测试号,因此在开始 bibi 前需要先申请一个公众号的测试号,这里不再赘述。 一、消息接口 稍微复杂一些的公众号服务都会涉及自定义回复,比如某些消息内容需要返回数据库里面的数据,这就需要用到微信提供的消息接口: 第一步:填写接口配置信息 如上图 注意!在提交时微信会向你填写的URL地址发送一个get请求,所以提交之前你必须保证这个域名下的相应接口必须能正常返回(这里就涉及到了下一步要说的微信校验) 第二步:实现微信接口校验和消息接口 其实按理说这个才应该是第一步,因为如果服务端接口没有实现,上一步根本不能成功。好吧,顺序我就不改了,能看明白就行。 Step1:微信校验接口实现 这里是个什么概念呢?就是在你提交上面第一步填写的URL地址的时候,微信服务器会向你的地址发送一个get请求,同时带上四个参数: 为了你的服务器安全,你需要校验这个请求是否来自微信,校验的方法就是: 将你自己保存的token和微信带过来的timestamp

Vue开发企业级移动端音乐Web App

我是研究僧i 提交于 2020-05-05 15:49:51
开发企业级移动端音乐App,拿下Vue.js高级知识点 一、声明 本项目来自于 黄轶 老师的慕课网教程 Vue 2.0高级实战 开发移动端音乐 WebAPP ,目的在学习交流,如果有冒犯相关的权益,还望告知。 二、简述 由于本人也是第一次写文章,才薄智浅,博众一笑。关于某课上的音乐项目《Chicken Music》本人也是十分感兴趣,这篇文章主要目的是在于让更多的同学学习到深层次的前端知识(有点等于没说~哈哈哈)。本人是十分尊重知识产权的,但是日益增长的物质文化需要(支付不起价格)同落后的社会生产之间(工资低)的矛盾。本人怀着共同学习,共同进步的原则会为大家持续更新,数据接口一旦崩溃、修改、超时,会为大家在第一时间修改。 三、效果 四、页面代码块 由于代码量太多只能展示部分关键代码,还望海涵。 五、项目演示地址 六、项目帮助 此项目代码量巨大一篇文章,三言两语,远远不能表述清楚。如有需要本人可在闲暇之余提供力所能及的帮助 WeChat:13751817115 。也可以通过私人电邮联系我: 13751817115@163.com 。 项目运用了: 1.Vue.js 的高级应用 - Vuex、嵌套路由、slot、mixin、code spliting 等技术 2.庞大的组件库 - 13个基础组件+15个业务组件 3.MVVM框架:Vue.js 4.状态管理:Vuex 5.前端路由

Spring Boot Dubbo 应用启停源码分析

房东的猫 提交于 2020-05-04 13:07:31
作者:张乎兴 来源:Dubbo官方博客 背景介绍 Dubbo Spring Boot 工程致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发。同时也整合了 Spring Boot 特性: 自动装配 (比如: 注解驱动, 自动装配等). Production-Ready (比如: 安全, 健康检查, 外部化配置等). DubboConsumer启动分析 你有没有想过一个问题? incubator-dubbo-spring-boot-project 中的 DubboConsumerDemo 应用就一行代码, main 方法执行完之后,为什么不会直接退出呢? @SpringBootApplication(scanBasePackages = "com.alibaba.boot.dubbo.demo.consumer.controller") public class DubboConsumerDemo { public static void main(String[] args) { SpringApplication.run(DubboConsumerDemo.class,args); } } 其实要回答这样一个问题,我们首先需要把这个问题进行一个抽象,即一个JVM进程,在什么情况下会退出? 以Java 8为例,通过查阅JVM语言规范[1],在12

Spring Boot 微信-验证服务器有效性【转】

独自空忆成欢 提交于 2020-05-04 05:06:40
转: https://blog.csdn.net/jeikerxiao/article/details/68064145 概述 接入微信公众平台开发,开发者需要按照如下步骤完成: 在自己服务器上,开发验证微信验证服务器地址的有效性逻辑 在微信平台上,填写自己服务器地址信息 在自己服务器上,依据微信接口文档实现业务逻辑 第一步:实现验证服务器地址的有效性逻辑 开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数: 参数 描述 signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 timestamp 时间戳 nonce 随机数 echostr 随机字符串 开发者通过检验signature对请求进行校验(下面有校验方式)。 若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。 加密/校验流程如下: 将token、timestamp、nonce三个参数进行字典序排序 将三个参数字符串拼接成一个字符串进行sha1加密 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 java代码: 1 package com.jeiker.demo.controller; 2 3 import org