<template>
<div id="app">
<h1>微信授权登陆</h1>
<div>
<div>
<span>手机号</span>
<input type="number" :value="account" placeholder="请输入手机号">
</div>
<br>
<div>
<span>验证码</span>
<input type="text" :value="smsCode" placeholder="请输入验证码" maxlength="6">
</div>
<br>
<button @click="init">授权登陆</button>
<p>{{code}}</p>
</div>
</div>
</template>
<script>
/**
* @description
*
* 官方网文档地址:http://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
*
* 网页授权步骤
*
* 1、拼接授权地址
* 2、访问授权地址
* 3、微信回调携带 code 参数
* 4、code 发送给服务器获取 openId token 等信息 结束
*
* 注意事项:
* 1、redirect_uri 重定向地址.
* 1)线上环境:该参数是对应线上的域名,例如:http:xxx.web.com/ 这个地址要可以访问到你的 web 项目
* 2)开发环境:可能访问路径是:http://192.168.0.18:8080 但是这是内网地址,外网无法访问需要借助 内网穿透 工具
* 把内网映射到外网 例如: http://n9yjxe.natappfree.cc -> 127.0.0.1:8080 我这里就可以填写 http://n9yjxe.natappfree.cc/ 这个地址
*
* 2、微信公众号管理端配置 http://mp.weixin.qq.com/cgi-bin/settingpage?t=setting/function&action=function&token=1538596787&lang=zh_CN
* 1)设置与开发->公众号设置->功能设置->网页授权域名,配置你对应的线上域名或内网穿透域名,是域名没有http://或http:// 访问路径等
* 2)文件校验域名,这个步骤是微信要验证你的域名,放在域名根路径下要可以访问到 例如:http:xxx.web.com/MP_verify_JrxFeFmrqcxyTPAW.txt 即可
* 3)如果是开发环境,MP_verify_JrxFeFmrqcxyTPAW 放在项目 public 开启内网穿透就可以了
* 3、内网穿透 http://natapp.cn/
* 4、使用微信开发工具进行网页调试,需要把自己添加为微信公众号的开发者才可以
*
*/
// 微信授权登陆地址
const WX_AUTH_URL = 'http://open.weixin.qq.com/connect/oauth2/authorize?';
// 重定向参数-固定写法
const REDIRECT = '#wechat_redirect';
export default {
data() {
return {
account: '',
smsCode: '',
params: {
appid: 'wxca62acc6a4560ddc', // 公众号 APP ID
redirect_uri: `${encodeURI('http://n9yjxe.natappfree.cc/')}`, // 授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理
response_type: 'code', // 固定写法
scope: 'snsapi_base' // snsapi_base 静默授权获取 open id ;snsapi_userinfo 需要用户授权,获取详细信息
// state:'code', // a-zA-Z0-9的参数值,最多128字节
},
code: '', // 微信返回 code
}
},
created() {
// 获取地址参数
const params = new URLSearchParams(location.search);
this.code = params.get('code');
console.log(this.code)
},
methods: {
init() {
// 访问地址
const access_url = WX_AUTH_URL + `${new URLSearchParams(this.params)}` + REDIRECT;
// 这些需要判断没有 code 情况拉起授权登陆,有就结束放在重复拉起授权登陆
if (!this.code) {
location.href = access_url;
}
}
}
}
</script>
<style>
button {
background-image: linear-gradient(219deg, #00A45A 0%, #03CE72 100%);
color: #FFFFFF;
width: 100%;
height: 42px;
box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(0, 164, 90, 0.08);
border-radius: 48px;
font-size: 38rpx;
border: none;
}
input {
height: 29px;
width: 90%;
border-radius: 10px;
border: 1px solid #cfcfcf;
padding: 2px 13px;
}
</style>
效果图
本文来自博客园,作者:天葬,转载请注明原文链接:http://www.cnblogs.com/bxmm/p/17264680.html
preface这篇文章来写一下用pytorch训练的一个CNN分类器,数据集选用的是kaggle上的猫狗大战数据集,只有两个class,不过数据集还是挺多的,足够完成我们的分类任务。这份数据集分为train和test两个文件夹,装着训练集和测试集,还有一个sample_submission.csv用来提交我们训练的模型在测试集上的分类情况。值得注意的是,训练集是带标签的,标签在文件名中,如cat.7741.jpg,而测试集是不带标签的,因为我们模型在测试集中测试后分类的结果是要填到csv文件中提交的,所以不能拿测试集来评估模型,我们可以在训练集中划分出一个验证集来评估模型。划分数据集首先这是我们需要的所有的模块,缺少的可以用pip安装fromtorchvision.models.resnetimportresnet18 importos importrandom fromPILimportImage importtorch.utils.dataasdata importnumpyasnp importtorchvision.transformsastransforms importto
最近进行了为期将近一个月的前端知识学习,目标是掌握当前业界最新的前端技能,完成一个纯前后端分离的小系统;前端使用React开发,接口层使用Node.js进行转发,服务后台是云服务。由应用开发工作转前端开发工作,边学习边开发,中间阅读了不少材料,其中有一些自己觉得挺好,而且都是免费的资源,所以整理成册,方便自己回顾,也方便有类似需求的其他人。下图的技能地图来源于网上,供进阶学习参考。近几年,前端技术栈的发展非常快,社区上有各种各样的组件、工具提供使用,编程思想也跟以前Jquery直接操作DOM的方式截然不同,代码复用的粒度也由难复用到UI组件复用再到交互行为复用。如果你看到这些变化时表示比较蒙,我觉得蛮正常的,一个月前听前端同事这样描述的时候,我也是一脸懵逼。由于涉及的知识点还有工具很多,学习曲线在起初阶段非常陡峭,我比较幸运能得到不少有丰富经验的前端同事指导,学习虽然累,但还算顺利。正因为前端技术目前还处于更新较快的阶段,所以本文中介绍的一些文章、视屏等学习素材,建议读者尽量在每年都找类似的、较新的来学习,以免走弯路。先讲讲开始学习之前需要有的背景知识:htmlcssjsHTML掌握基
iptable基本概念Iptables表链规则iptables传输数据包的过程iptables命令格式iptables常用选项OPTIONS解释常用命令COMMANDS解释常用参数PARAMETERS解释使用MATCHEXTENSIONS扩展模块其他举例搭建samba服务器配置samba服务器添加samba账户关闭SELinux防火墙配置iptables首先查看当前的规则添加规则以启用samba所使用的端口查看添加的规则保存当前规则并启用sambaiptable基本概念iptables防火墙包含两部分,即位于用户空间的iptables模块和位于内核空间netfilter模块。用户空间模块提供插入、修改和除去包过滤表中规则,内核模块进行实际的过滤,所以更准确的名称应该是iptables/netfilter。表(tables):提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。规则(rules):其实就是网络管理员预定义的条件。链(chains):是数据包传播的路径,每一条链其
Oracle是甲骨文公司的一款关系型数据库管理系统,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。系统的可移植性好,使用方便,功能强,适用于各类大,中,小环境,是一种高效,可靠性好的,适应高吞吐量的数据库。但对于开发人员来说,一般考虑团队实际情况,选择一种第三方工具,也就是所谓的Oracle数据库管理工具。下面我们为大家讲一讲8种常用的Oracle数据库管理工具。1、Oracle自带的pl/sqlplusOracle的sql*plus是与Oracle数据库进行交互的客户端工具,可以使用sql*plus进行查看,修改数据库记录。在sql*plus中,可以运行sql*plus命令与sql语句。基于命令行;企业管理器,基于GUI/WEBUI的。2、pl/sqlDeveloperPL/SQLDeveloper是一个集成开发环境,由AllroundAutomations公司开发,专门面向Oracle数据库存储的程序单元的开发。具有语法加强、SQL和PL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航
最近在研究安卓相关的知识点,安卓手机有限,所以考虑在电脑上安装模拟器,于是安装来Genymotion,发现无法上网,从网上找来好多方案,都无法解决mac的问题。(怀疑搜索方式有问题)。所以我就想着自己尝试,在想到了,之前大学的知识,于是乎,尝试下,大学配置电脑上的linux的虚拟机无法访问,也是通过设置桥连接等方式。我先尝试了这种方式。由于Genymotion本身需要开启Wi-Fi,所以先开启系统的,右边栏,点击打开wifi,然后尝试上网,还是无法上网。由于需要运行在VirtualBox。我怀疑是需要这里的配置,网上也说了,但是网上的教程的确没有解决了我的问题,我就尝试了自己去选择配置。打开VirtualBox选择你要设置的虚拟机。然后选择设置,选择网络,对网卡1,网卡2进行配置。这里的还是用的主机的网网络。 然后设置网卡2 配置完毕,这个时候,你会发现,其实,模拟器还是无法上网的,于是你可能就会怀疑了,这些网上一搜都搜到的解决方案,怎么还是解决不了我的问题呢,但是你可能忘记了,mac电脑本身,可能会有很多地方需要设置,我也在查看,我打开设置。 首先,我想到的是要看网络,首先,我要确定
1.可以通过settings/dev.py的ALLOWED_HOSTS,设置允许访问#设置哪些客户端可以通过地址访问到后端 ALLOWED_HOSTS=[ 'api.luffycity.cn', ]复制2.安装跨域模块(一下代码修改都是在settings.dev下进行的)pipinstalldjango-cors-headers-ihttps://pypi.douban.com/simple添加应用 INSTALLED_APPS=( ... 'corsheaders', ... )复制中间件设置【必须写在第一个位置】MIDDLEWARE=[ 'corsheaders.middleware.CorsMiddleware', ... ]复制添加白名单#CORS组的配置信息 CORS_ORIGIN_WHITELIST=( 'www.luffycity.cn:8080', ) CORS_ALLOW_CREDENTIALS=False#允许ajax跨域请求时携带cookie复制以上就是本文的全部内容
软件架构的终极目标:最大化程序员的生产力,最小化运营的总成本。 前奏目前我在看两本书《领域驱动设计精粹》和《实现领域驱动设计》,前一本比较薄,不到150页,后一本就非常厚实了,有500多页,那么读起来可能就会显得有点心理障碍,但如果要想更多了解DDD,还是要以第二本为主,第一本可以作为概要性阅读。领域驱动设计,类似**驱动,我们也接触过不少,比如测试驱动,敏捷驱动等等。领域驱动设计,这六个字或者在前面再加上业务两字,业务领域驱动设计,最终的目标都是为了设计服务的,那么设计是设计的什么,肯定是应用程序系统架构,那么应用程序系统的架构有什么样的需求呢。架构有两种需求:功能性需求和非功能性需求。功能性需求就是我们在使用一个系统的时候所接触到的,所用到的诸多功能,比如发布一个商品,展示一个统计报表,做权限的管理和控制等,代表的是一个应用程序系统架构能做什么。非功能性需求是我们的这个应用程序系统架构是否做到了可监控、可扩展、是否高可用、高性能等,代表的是一个应用程序在运行时的质量。非功能性需求中,还有一个非常重要的点就是:快速安全的交付软件。那么我们就随着如何快速安全的交付软件说起。DDD重要的
GitHub很多开源库都会有几个酷炫的小徽章,比如:这些是怎么加上去的呢? Shields.io首先这些徽章可以直接去shields.io网站自动生成。比如:npm@latestv0.3.2 就是version这一类里的一种图标,选择npm一栏填入包名,然后复制成Markdown内容,就会得到诸如:复制直接粘贴在.md文件中就可以使用了,最后展现的就是这个图标。当然还有其他很多徽章都任由你挑选,不过某些徽章是需要额外进行一些配置,比如这里的buildpassing(自动构建通过)和coverage72%(测试覆盖率)。AVA谈到测试覆盖率必须先有单元测试,本文使用ava作为示例,ava是一个js测试库,强烈推荐你使用它。1、安装npminitava复制2、使用示例编写test.js文件:importtestfrom'ava' importMemcachedfrom'../lib/memcached'; test.befor
来自CSDN:https://blog.csdn.net/qq_43652793/article/details/83962086作为开发者来说,必备的除了对编码的热情还要有自己的一套技巧,另外不可缺少的就是平时学习的网站。今天给大家推荐几个学习编程的优秀网站,平时呢也是小编经常逛的地方,这些网站可以提供学习信息、还能解答、面试问题等。1.StackoverflowStackoverflow.com可能是编程界中最流行的网站了,是一个与程序相关的IT技术问答网站,用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。一部分的程序员学习API或者编程语言,通常依赖于代码示例,stackoverflow就可以提供大量的代码片段。 Stackoverflow的另一个优点在于它的社交性。你可以在一些特定的标签下查看问题,比如“Java”、“regex”,你就会看到哪些是高频问题。这对于学习,以及Java博主书写热门话题都是一种非常好的资源。2.DZone这是一个非常有趣的网站,有相当多的开发者在这个网站上分享他们博客文章。就像一场冒险一样,在这里,你永远不知道
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。Fayson的github: https://github.com/fayson/cdhproject提示:代码块部分可以左右滑动查看噢1.文档编写目的在前面的文章Fayson介绍过《如何使用SparkStreaming读取HBase的数据并写入到HDFS》,关于SparkStreaming的应用场景很多,本篇文章Fayson主要介绍使用Scala语言开发一个SparkStreaming应用读取Kafka数据并写入HBase。本文的数据流图如下:内容概述1.环境准备2.编写SparkSteaming代码读取Kafka数据并写入HBase3.流程测试4.总结测试环境1.CM和CDH版本为5.12.12.采用root用户操作前置条件1.集群已安装Kafka2.环境准备1.编写向Kafka生成数据的ReadUserInfoFIleToKafka.java代码,具体内容可以在Fayson的GitHub上查看https://github.com/fayson/cdhproject/blob/master/kafkademo/src/m
选自pythonfiles.wordpress机器之心编译参与:Panda、蒋思源近日,PythonFiles博客发布了几篇主题为「HuntingPerformanceinPythonCode」的系列文章,对提升Python代码的性能的方法进行了介绍。在其中的每一篇文章中,作者都会介绍几种可用于Python代码的工具和分析器,以及它们可以如何帮助你更好地在前端(Python脚本)和/或后端(Python解释器)中找到瓶颈。机器之心对这个系列文章进行了整理编辑,将其融合成了这一篇深度长文。本文的相关代码都已经发布在GitHub上。代码地址:https://github.com/apatrascu/hunting-python-performance目录一、环境设置二、内存分析三、CPU分析——Python脚本四、CPU分析——Python解释器本文是该教程的第一部分,主要从环境设置和内存分析两个方面探讨Python代码优化的路径。一、环境设置设置在深入到基准测试和性能分析之前,首先我们需要一个合适的环境。这意味着我们需要为这项任务配置我们的机器和操作系统。我的机器的规格如下:处理器:In
导语:在经过一天之后,我们的活动人数已经达到40人了,感谢大家对小编的支持,同时在本文末附上前一天的众筹榜单。希望能跟小伙伴们度过愉快的6天!上过JeremyHoward的深度学习课程后,我意识到我在线性代数方面的不足,而这大大影响我对类似反向传播这样的概念的理解。因此我决定在这个方面花点时间,以补全这方面的知识。本文是对线性代数的基本介绍,用于深度学习中会使用到的一些常见的线性代数操作。什么是线性代数?在深度学习的背景下,线性代数是一个数学工具,它提供了有助于同时操作数组的技术。它提供了像向量和矩阵(电子表格)这样的数据结构用来保存数字和规则,以便进行加,减,乘,除的运算。线性代数为什么有用?线性代数可以将复杂的问题简单化,让我们能够对问题进行高效的数学运算。以下是线性代数如何达到这些目标的一个例子。 #Multiplytwoarraysx=[1,2,3] y=[2,3,4] product=[] foriinrange(len(x)): product.append(x[i]*y[i])#Linearalgebraversionx=numpy.array([1,2,3]) y=nu
单点登录是多域名企业站点流行的登录方式。本文以现实生活场景辅助理解,力争彻底理清OAuth2.0实现单点登录的原理流程。同时总结了权限控制的实现方案,及其在微服务架构中的应用。1什么是单点登录1.1多点登录传统的多点登录系统中,每个站点都实现了本站专用的帐号数据库和登录模块。各站点的登录状态相互不认可,各站点需要逐一手工登录。如下图,有两个术语含义如下:认证(authentication):验证用户的身份;授权(authorization):验证用户的访问权限。1.2单点登录 单点登录,英文是SingleSignOn,缩写为SSO。多个站点(192.168.1.20X)共用一台认证授权服务器(192.168.1.110,用户数据库和认证授权模块共用)。用户经由其中任何一个站点(比如192.168.1.201)登录后,可以免登录访问其他所有站点。而且,各站点间可以通过该登录状态直接交互。2OAuth2认证授权的原理流程 2.1生活实例【★★重点★★】为了直观的理解OAuth2.0原理流程,我们假设这样一个生活场景:(1)档案局A(客户端/Client):以“档案局ID/密码”标识,是掌握
ssm框架 controller: packagecom.sgcc.controller; importjava.util.ArrayList; importjava.util.List; importorg.omg.CORBA.PUBLIC_MEMBER; importorg.springframework.stereotype.Controller; importorg.springframework.ui.ModelMap; importorg.springframework.web.bind.annotation.PathVariable; importorg.springframework.web.bind.annotation.RequestMapping; importcom.sgcc.entity.User; @Controller @RequestMapping("/user")//窄化--分模块开发,团队协作--注意页面跳转加/或视图解析器 publicclassUserController{ privateList<User>list=new
Q:在扫整个链表的时候,到底什么时候用while(cur!=null) 什么时候用 while(cur.next!=null) 呢? 以[leetcode]83.RemoveDuplicatesfromSortedList有序链表去重(有重去重)和[leetcode]82.RemoveDuplicatesfromSortedListII有序链表去重(有重删光)为例 以链表1->1->null为例 1.如果题意要求有重去重,那么需要保留去重之后的该元素cur,故cur.next==null时停下,因为cur必须被保留 2.如果题意要求有重删光,那么需要删光有重的该元素cur, 故cur==null时停下,因为cur必须被删掉 Q:什么时候要用 ListNodedummy=newListNode(-1)? 只要涉及对给定链表ListNodehead的操作(包括删除、移动等等),都应该预先用dummy把给定链表ListNodehead勾搭起来,防止在后续操作中,ListNode
manysum 链接:https://ac.nowcoder.com/acm/contest/879/G来源:牛客网 时间限制:C/C++1秒,其他语言2秒 空间限制:C/C++524288K,其他语言1048576K 64bitIOFormat:%lld 题目描述 输入描述: 第一行三个整数N,A1,M复制 输出描述: 第一行一个整数,表示答案。复制 示例1 输入 复制 1010313复制 输出 复制 441复制 备注: 1≤N≤2×10^6,0≤A1,M<10^4通过此题的同学,不妨来想一些如果N=2×107的时候该怎么做呢?d|i为“d整除i”或“i被d整除”,可看作i%d==0,也就是需要找i所有的因子。筛因子法利用逆向思维,枚举因子的倍数反向加入到i中。一开始存表预处理1~n因子T了,这里找到直接加入Bi即可,一步到位。复制 #include<bits/stdc++.h> usingnamespacestd; typedeflonglongll; inta[2000005],b[2000005
注意: sendmessage只可以从网页发信息到unity游戏里,但是没有返回值 只可以发布三种类型的data,不可以其他复杂的强类型 发信息的时不会做编译检测 SendMessageWorkflow ImplementUnityObject2.js varu=newUnityObject2; u.GetUnity(); sendmessage(): 注意:sendmessage是blockingcall,callsendMessage在Mono里的一个function是一个死循环会blockbroswer,所以这些要被call到的methord里我们可以使用Coroutine,来splitup一些logicacrossframe
Description 今天突然想来发一篇博客防死 [Portal][https://vjudge.net/problem/2650668/origin] 定义被x-y生成器生成的序列为,一开始有一个数字S=0,每次输出S%10,然后把这个数字加上x或y. 现在给你一个串,对于$0\leqx,y\leq9$要你计算至少要在串中插入几个数位才能将其变成正确的x-y生成器生成的串 字符串长度\(\leq2e6\) Solution 这种数字之间跳来跳去的直接考虑最短路. 从\(i\)向\((i+x)\mod10\),连一条边权为1的单向边. 从\(i\)向\((i+y)\mod10\),连一条边权为1的单向边. \(dis[i][i]=inf\) 直接跑floyd即可,那么答案就是数字之间的距离-1的和. Code #include<bits/stdc++.h> usingnamespacestd; #definerep(i,a,b)for(inti=(a),i##_end_=(b);i<=i##_end_;++i) #definedrep(i,a,b)for(inti=