用户接口

经验分享:程序员如何快速定位问题(BUG)

烂漫一生 提交于 2019-12-02 01:46:56
让我掉下眼泪的 不止内存泄漏 让我夜夜不眠的 不止你的需求 明天还要改多久 你攥着我的手 让我感到为难的 是善变的需求 发布总是在半夜 回滚是永远的愁 错误(Bug)随时的暴漏 困扰着我心头 作为程序员,以上这些场景你一定都经历过。今天就来聊聊如何快速定位问题。 先划重点, 下文所写都是一家之言,本人工作经验不多,语言表达能力有限,如果写的不好,还望轻喷。另外,本文所讲都是站在Java后端开发者的角度 。 背景 下文所讲内容,都会围绕以下几个真实案例来做举例分析,先描述一下具体案例: 案例1:App首页白屏。 详细描述:App、H5、小程序首页都是由同一个后端接口负责提供数据。测试大佬反馈说,App首页白屏了。 案例2:小程序商品会员价显示不正确。 详细描述:测试大佬反馈,某商品会员价显示不正确,客户端展示会员价为0元。为什么会员价0元是不正确的呢?因为我们在系统中做了限制,会员价必须大于0元。 案例3:优惠券领取不了了,弹窗显示“领取失败,该优惠券仅限新人领取”! 详细描述:这是一个领取优惠券的功能。用户可以通过该活动领取优惠券。用户在领取优惠券时,页面弹窗提示:”领取失败,该优惠券仅限新人领取“。同时,测试大佬反馈说,这个账号就是一个新人账号,是刚刚注册的用户。 案例4:某用户购买的xx评测专栏的评测课无法打开。 详细描述:评测专栏是我司的一个特色专栏,在这个专栏中

三大认证:认证组件、权限组件、频率组件,JWT认证

≯℡__Kan透↙ 提交于 2019-12-02 00:12:37
## 源码分析1)APIView的dispath(self, request, *args, **kwargs)2)dispath方法内 self.initial(request, *args, **kwargs) 进入三大认证 # 认证组件:校验用户 - 游客、合法用户、非法用户 # 游客:代表校验通过,直接进入下一步校验(权限校验) # 合法用户:代表校验通过,将用户存储在request.user中,再进入下一步校验(权限校验) # 非法用户:代表校验失败,抛出异常,返回403权限异常结果 self.perform_authentication(request) # 权限组件:校验用户权限 - 必须登录、所有用户、登录读写游客只读、自定义用户角色 # 认证通过:可以进入下一步校验(频率认证) # 认证失败:抛出异常,返回403权限异常结果 self.check_permissions(request) # 频率组件:限制视图接口被访问的频率次数 - 限制的条件(IP、id、唯一键)、频率周期时间(s、m、h)、频率的次数(3/s) # 没有达到限次:正常访问接口 # 达到限次:限制时间内不能访问,限制时间达到后,可以重新访问 self.check_throttles(request)认证组件 Request类的 方法属性 user 的get方法 => self.

spring boot rest 接口集成 spring security(2) - JWT配置

我是研究僧i 提交于 2019-12-01 23:11:37
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 spring boot 连接Mysql spring boot配置druid连接池连接mysql spring boot集成mybatis(1) spring boot集成mybatis(2) – 使用pagehelper实现分页 spring boot集成mybatis(3) – mybatis generator 配置 spring boot 接口返回值封装 spring boot输入数据校验(validation) spring boot rest 接口集成 spring security(1) – 最简配置 spring boot rest 接口集成 spring security(2) – JWT配置 spring boot 异常(exception)处理 spring boot 环境配置(profile)切换 spring boot redis 缓存(cache)集成 在教程 [spring boot rest 接口集成 spring security(1) - 最简配置] 里介绍了最简集成spring security的过程,本文将继续介绍spring

spring boot rest 接口集成 spring security(1) - 最简配置

被刻印的时光 ゝ 提交于 2019-12-01 23:11:32
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 spring boot 连接Mysql spring boot配置druid连接池连接mysql spring boot集成mybatis(1) spring boot集成mybatis(2) – 使用pagehelper实现分页 spring boot集成mybatis(3) – mybatis generator 配置 spring boot 接口返回值封装 spring boot输入数据校验(validation) spring boot rest 接口集成 spring security(1) – 最简配置 spring boot rest 接口集成 spring security(2) – JWT配置 spring boot 异常(exception)处理 spring boot 环境配置(profile)切换 spring boot redis 缓存(cache)集成 概述 本篇教程我们将介绍spring security的集成,为易于学习,我们会尽量剔除无关部分,用最小的配置集成spring security。当你学会怎么集成spring security之后

基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建

谁说我不能喝 提交于 2019-12-01 21:57:34
前言 最近做回后台开发,重新抓起以前学过的SSM(Spring+Spring MVC+Mybatis),但是发现配置实在过于复杂,好多东西配置起来麻烦,虽然最终是配置出来了,但是还是感觉开发速度跟不上,本来打算切换到jfianl,但是后来发现需要用的几个框架不支持jfianl,如Swagger2(根据代码中的注解生成接口文档和测试页面,非常的方便);同时我也不愿意放弃SpringMVC强大的验证参数模块,jfianl中好像只能手动验证(当然我对jfianl只处于简单的开发,并不是特别熟),而SpringMVC中,直接就能通过注解来确定哪些参数是必须的,哪些不是必须的,这对于写接口的人来说,方便了很多,所以决定还是使用Spring家族的东西,下面先一一介绍下本文的主角们 Spring boot spring-boot是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者 多年以来, Spring IO 平台饱受非议的一点就是大量的XML配置以及复杂的依赖管理。在2013年的 SpringOne 2GX 会议上,Pivotal的CTO

Future模式的学习以及JDK内置Future模式的源码分析

南楼画角 提交于 2019-12-01 13:23:46
并发程序设计之Future模式 一)、使用Future模式的原因 当某一段程序提交了一个请求,期待得到一个答复,但服务程序对这个请求的处理可能很慢,在单线程的环境中,调用函数是同步的,必须等到服务程序返回结果后才能进行其他处理,在这段时间里,客户端一直处于等待状态。 二)、Future模式 使用并发的设计思想,解决客户端发送请求到应用程序,等待响应数据时间过长的问题. 三)、Future模式的核心结构 1.main: 系统启动类 作用:调用Client,发送请求。 2.client: 发送请求类 作用:返回Data对象,即FutureData对象,并开启一个线程给返回的FutureData对象装配RealData。 3.Data:数据接口 作用:FutureData和RealData共同实现了这个接口。 4.FutureData: 虚假数据类 作用:Future数据,构造快,虚假数据,装配RealData对象,相当于RealData的一个代理。 5.RealData: 真实数据类 作用:返回服务程序处理的真实数据。 四)、Future模式的实现流程 1).用户发送client请求服务到应用程序,先返回一个虚假的数据FutureData类,并启一个新的线程,用于装配真正的数据返回对象。 2).提供一个接口类Data,类中提供一个接口方法

[转载]微信公众号 订阅号与服务号的区别

可紊 提交于 2019-12-01 12:53:33
1. 说明 微信公众平台有4类账号:订阅号、服务号、企业号及小程序。 订阅号和服务号统称为公众号。 2. 区别 2.1 主要区别 订阅号的注册主体可以为 个人 ,但现在已关闭个人认证。服务号的注册主体不能为个人。 表:主要区别 说明 订阅号 服务号 账号说明 偏于为用户传达资讯(类似报纸杂志) 偏于服务交互(类似银行,114,提供服务查询) 注册主体 政府、媒体、企业、其他组织、个人 政府、媒体、企业、其他组织 消息显示位置 显示在对话列表内的【订阅号】里 直接显示在对话列表内 群发消息上限 每天有条 每月4条 2.2 接口区别 在接口权限方面,服务号比订阅号多支持以下接口: 模板消息(业务通知) 、 获取用户地理位置 、 生成带参数的二维码 、 长链接转短链接接口 、 语义理解接口 、 微信支付接口 、 微信小店接口 、 设备功能接口 、 网页授权获取用户基本信息 、 跳转微信商品页接口 、 发起一个微信支付请求 等方面。 表:接口支持情况 类目 功能 接口 订阅号 服务号 对话服务 基础支持 获取access_token 有 有 获取微信服务器IP地址 有 有 接收信息 验证消息真实性 、 接收普通消息 、 接收事件推送 、 接收语音识别结果 有 有 发送消息 自动回复 有 有 客服接口 有 有 群发接口 有 有 模板消息(业务通知) - 有 用户管理 用户分组管理 有 有

微信公众号接口权限表汇总

白昼怎懂夜的黑 提交于 2019-12-01 12:53:21
微信 公众号目前分为订阅号、服务号、企业号,订阅号和服务号又区分认证和非认证,部分权限又有细微差异,整理个列表方便大家检索和查询相关功能! 文章更新历史: 2015年01月24日 增加网页 JS-SDK调用权限说明,并且根据两位朋友的提示修改了订阅号已认证权限中的错误,感谢两位朋友! 2014年12月09日 公众平台认证订阅号接口调整 2014年12月04日 创建该文档 1、目前收集到的包含未认证服务号、已认证服务号、未认证订阅号,已认证订阅号! 2、未认证订阅号与未认证服务号两者接口差异仅体现在自定义菜单上!注意这里说的是接口差异,如果想了解区别移步这里 微信公众平台 企业号与服务号、订阅号的区别 ! 3、点击接口中的超链可以直接跳转微信公众平台查看接口描述! 服务号未认证权限 类目 功能 接口 每日调用上限/次 接口状态 操作 对话服务 基础支持 获取access_token 2000 已获得 获取微信服务器IP地址 已获得 接收消息 验证消息真实性 无上限 已获得 接收普通消息 无上限 已获得 接收事件推送 无上限 已获得 接收语音识别结果 (已关闭) 无上限 已获得 开启 发送消息 自动回复 无上限 已获得 客服接口 未获得 群发接口 未获得 模板消息(业务通知) 未获得 用户管理 用户分组管理 未获得 设置用户备注名 未获得 获取用户基本信息 未获得 获取用户列表 未获得

大型网站后台稳定性技术策略

一世执手 提交于 2019-12-01 10:19:45
https://blog.csdn.net/paolei/article/details/94390330 背景简介   对于大型应用后台系统来说,稳定性至关重要。目前越来越多的大型应用系统采用微服务架构,更加需要关注稳定性的技术能力建设。稳定性是服务系统基础能力的体现。   基础知识   在介绍稳定性技术策略主题之前,我们首先梳理一些基础概念和知识。   针对我们业务后台系统建设,任何大型业务后台系统绝对不是一蹴而就。它是伴随着业务不同阶段,不断进行演进的过程。如果经历过从 0 到 1 建设一个业务后台系统的同学,都会有类似的体会。   启动阶段   启动阶段,业务模型相对简单,用户量少,这时候我们可以将所有的系统模块耦合在一个工程里面,进行单机部署。这时候可能仅仅需要将业务系统与数据库进行隔离。   探索阶段   探索阶段,业务模型不断演进,用户量增加,单机服务能力瓶颈凸显。这时候就需要由单机服务部署向集群服务部署来优化,利用负载均衡将请求合理分配,减少单机服务压力。另外一个方面,数据量不断的增加,也需要考虑针对数据来进行水平的扩展(主从部署,读写分离)。   在这一阶段,我们仅仅是做了集群扩展,但所有的业务代码都在同一个工程维护,所有的数据信息都在同一个数据库中存储。随着团队的扩充与业务交互不断复杂化,在工程维护上存在很大的风险,工程研发效率受到制约

拿起键盘就是干:跟我一起徒手开发一套分布式IM系统

倾然丶 夕夏残阳落幕 提交于 2019-12-01 09:01:01
1、引言 老读者应该还记得我在去年国庆节前分享过一篇《 技术干货:从零开始,教你设计一个百万级的消息推送系统 》,虽然我在文中有贴一些伪代码,依然有些朋友希望能直接分享一些可以运行的源码。好吧,质疑我穷我无话可说(因为是真穷。。),怀疑我撸码的能力那是绝对不行,所以这次准备拉起键盘大干一场——徒手撸套分布式IM出来!^_^! 本文记录了我开发的一款面向IM学习者的 IM系统—— CIM (全称:CROSS-IM),同时提供了一些组件帮助开发者构建一款属于自己可水平扩展的 IM。 通过学习本文和CIM代码,你可以获得以下知识: 1)如何从头开发一套IM(CIM的客户有点弱,见谅见谅); 2)如何设计分布式的IM架构; 3)如何将你的分布式IM架构用代码和相关技术实现出来。 本文配套的CIM源码地址: 主要镜像: https://github.com/crossoverJie/cim 备用镜像: https://github.com/52im/cim 以下文章与本文类似或相关,同样有助于您的IM开发入门: 《 自已开发IM有那么难吗?手把手教你自撸一个Andriod版简易IM (有源码) 》 《 适合新手:从零开发一个IM服务端(基于Netty,有完整源码) 》 《 拿起键盘就是干:跟我一起徒手开发一套分布式IM系统 》 《 浅谈IM系统的架构设计 》 《 简述移动端IM开发的那些坑