QQ第三方登录
qq互联申请开发者账号搞第三方登录,必须先进行接口的申请 得到授权;
QQ第三方接口的申请地址:QQ互联 https://connect.qq.com/index.html
申请之前,你必须有一个进行过国内备案过的网站,个人也可以;
登录QQ互联后,首先填写个人或者公司信息,然后申请网站应用,但是APP的话,需要申请移动应用.
填写后,一般一周内审核
这里有个回调地址注意下,是用户进行第三方登录的时候会带上这个参数一起请求服务器,然后腾讯服务器再调用这个地址,顺便把用户信息带也过来,这样开发者的服务器就能得到用户信息了;
get_user_info接口窥探申请通过过,腾讯开放平台给我们提供了get_user_info接口
我们得熟悉下这个接口,通过这个接口我们能获取到一些比如昵称,性别,头像等信息;
接口概要
请求参数:
请求Demo:
https://graph.qq.com/user/get_user_info?access_token=YOUR_ACCESS_TOKEN&oauth_consumer_key=YOUR_APP_ID&openid=YOUR ...
微信支付
微信支付1 开发准备1.1 开发文档微信支付接口调用的整体思路:
按API要求组装参数,以XML方式发送(POST)给微信支付接口(URL),微信支付接口也是以XML方式给予响应。程序根据返回的结果(其中包括支付URL)生成二维码或判断订单状态。
在线微信支付开发文档:
https://pay.weixin.qq.com/wiki/doc/api/index.html
这里用的是微信公众平台,微信登录是微信开发平台,并且不能同一个邮箱,这个微信支付必须是服务号且认证过的。所以鑫哥又没办法自己申请了,还是用的我们的大尚硅谷的,强势给尚硅谷打一波广告…..希望大家去B站关注一波吧…..
12341. appid:微信公众账号或开放平台APP的唯一标识2. mch_id:商户号 (配置文件中的partner)3. partnerkey:商户密钥4. sign:数字签名, 根据微信官方提供的密钥和一套算法生成的一个加密信息, 就是为了保证交易的安全性
1.2 微信支付模式这是官方的模式二,模式一是用户自己选择支付金额,二维码永久生效
这个模式二是系统生成价格,然后二维码只能使用一 ...
微信登录
一、准备工作https://open.weixin.qq.com
1、注册
2、邮箱激活
这是微信开放平台 不能和微信公众平台用一个邮箱号
3、完善开发者资料
4、开发者资质认证
准备营业执照,1-2个工作日审批、300元
5、创建网站应用
(这个我是没办法认证,所以也没截图了,下面放的是博客 blog.java1234.com中的图片哦,我是后面用的别的方法跳转到本地的….)
提交审核,7个工作日审批(其实和QQ认证差不多的,看这个之前还是先看看我手摸手带兄弟们写的QQ第三方的登录)
6、熟悉微信登录流程
参考文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=e547653f995d8f402704d5cb2945177dc8aa4e7e&lang=zh_CN
二、后端开发(开发授权Url)1、添加配置application.proper ...
Redis安装与配置
Redis 简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。(Vmware在资助着redis项目的开发和维护)BSD是”Berkeley Software Distribution”的缩写,意思是”伯克利软件发行版”。SD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。
1.1什么是NoSQLNoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的 ...
OpenResty+Lua+redis实现缓存
学习目标
了解Lua语言的基本语法
使用OpenResty+Lua+redis实现广告缓存
掌握OpenResty限流的基本使用方法
1. Lua介绍1.1 lua是什么 Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为 了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编 写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这 是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进 行的JIT项目,提供在特定平台上的即时编译功能。简单来说: Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计 ...
JWT令牌 JWT概述和简单使用
1. JWT介绍在介绍JWT之前先看一下传统校验令牌的方法,如下图:
问题:传统授权方法的问题是用户每次请求资源服务,资源服务都需要携带令牌访问认证服务去校验令牌的合法性,并根据令牌获取用户的相关信息,性能低下。
解决:使用JWT的思路是,用户认证通过会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。
JWT令牌授权过程如下图:
什么是JWT?JSON Web Token(JWT)是一个开放的行业标准(RFC 7519),它定义了一种简介的、自包含的协议格式,用于在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使用HMAC算法或使用RSA的公 钥/私钥对来签名,防止被篡改。
JWT令牌的优点:
jwt基于json,非常方便解析。
可以在令牌中自定义丰富的内容,易扩展。
通过非对称加密算法及数字签名技术,JWT防止篡改,安全性高。
资源服务使用JWT可不依赖认证服务即可完成授权。
缺点:
JWT令牌较长,占存储空间比较 ...
如何保证分布式唯一全局Id生成
集群高并发情况下如何保证分布式唯一全局Id生成问题为什么需要分布式全局唯一ID以及分布式ID的业务需求在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识,如在美团点评的金融、支付、餐饮、酒店
猫眼电影等产品的系统中数据逐渐增长,对数据库分库分表后需要有一个唯一ID来标识一条数据或信息;
特别Ian的订单、骑手、优惠券都需要有唯一ID做标识
此时一个能够生成全局唯一ID的系统是非常必要的
ID生成规则部分硬性要求
全局唯一
趋势递增
在MySQL的InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用Btree的数据结构来存储索引,在主键的选择上面我们应该尽量使用有序的主键保证写入性能
单调递增
保证下一个ID一定大于上一个ID,例如事务版本号、IM增量消息、排序等特殊需求
信息安全
如果ID是连续,恶意用户的爬取工作就非常容易做了,直接按照顺序下载指定URL即可,如果是订单号就危险了,竞争对手可以直接知道我们一天的单量,所以在一些应用场景下,需要ID无规则不规则,让竞争对手不好猜
含时间戳
一样能够快速在开发中了解这个分布式ID什么时候生成的
ID号生成 ...
数据同步解决方案-canal
常用场景1、讲用户信息导出eccel表格
2、将excel表中的信息录入到网站数据库
开发中经常会涉及到excel的处理,如导出excel,导入excel到数据库。
1234567891011121314151617181920<!--xls--><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version></dependency><!--xlsx--><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version></dependency><!--日期格式 ...
数据同步解决方案-canal
1.canal1.1 canal简介canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。canal是应阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的。阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅& 消费的业务。
原理相对比较简单:
canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
mysql master收到dump请求,开始推送binary log给slave(也就是canal)
canal解析binary log对象(原始为byte流)
1.2 环境部署1.2.1 mysql开启binlog模式(1)查看当前mysql是否开启binlog模式。
1SHOW VARIABLES LIKE '%log_bin%'
如果log_bin的值为OFF是未开启,为ON是已开启.
(2)修改/etc/my.cnf 需要开启binlog模式.
12345[mysqld] log-bin ...
Redis缓存设计与性能优化
05-Redis缓存设计与性能优化5.1 多级缓存架构
5.2 缓存设计5.2.1 缓存穿透缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。
缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。
造成缓存穿透的基本原因有两个:
第一, 自身业务代码或者数据出现问题。
第二, 一些恶意攻击、 爬虫等造成大量空命中。
缓存穿透问题解决方案:
1、缓存空对象
123456789101112131415161718String get(String key) { // 从缓存中获取数据 String cacheValue = cache.get(key); // 缓存为空 if (StringUtils.isBlank(cacheValue)) { // 从存储中获取 String storageValue = storage.get(key); cache.set(key, storageVal ...





