基于 antd pro 的短信验证码登录功能(流程分析)

2021-05-07
概要 最近使用 antd pro 开发项目时遇到个新的需求, 就是在登录界面通过短信验证码来登录, 不使用之前的用户名密码之类登录方式. 这种方式虽然增加了额外的短信费用, 但是对于安全性确实提高了不少. antd 中并没有自带能够倒计时的按钮, 但是 antd pro 的 ProForm components 中倒是提供了针对短信验证码相关的组件. 组件说明可参见: https://procomponents.ant.design/components/form 整体流程 通过短信验证码登录的

vue完美实现el-table列宽自适应

2021-05-07
背景 Element UI 是 PC 端比较流行的 Vue.js UI 框架,它的组件库基本能满足大部分常见的业务需求.但有时候会有一些定制性比较高的需求,组件本身可能没办法满足.最近在项目里就碰到了. 很多页面都需要用到表格组件el-table.如果没有给el-table-column指定宽度,默认情况下会平均分配给剩余的列.在列数比较多的情况,如果el-table宽度限定在容器内,单元格里的内容就会换行.强制不换行,内容要么在单元格内滚动,要么就会溢出或被截断. 产品想要的效果是:内容保持单

golang 对私有函数进行单元测试的实例

2021-05-07
在待测试的私有函数所在的包内,新建一个xx_test.go文件 书写方式如下: import ( "github.com/stretchr/testify/assert" "testing" ) var XXFunc = yourPrivateFunc func TestXXFunc(t *testing.T) { ret, ... := XXFunc(...) assert.Equal(t, ret, ...) } 就可以了~ 补充:golang test使用(简

MySQL Threads_running飙升与慢查询的相关问题解决

2021-05-07
背景 年前本应该是回顾一年工作和收尾的阶段,奈何各种促销,活动都等着春节,因此也遇到了不少的问题,回顾了一下最近遇到的问题,发现有好几个问题比较类似,正好整理一下,作为年前收尾的案例吧.表现上都是数据库假死,无响应,发生的场景有较高的业务压力到来时,也有业务正常运行的时候,突然就出现问题了. 问题描述 由于腾讯云数据库 MySQL 本身是有故障检测和高可用机制的,这几例问题发生的时候,从用户反馈的问题出现的时间点到实际介入排查的时候已经有好几分钟了,但是并没有触发高可用切换,说明这个问题可能并不

微信小程序用户授权最佳实践指南

2021-05-07
前言 开发微信小程序中,经常会用到获取一些用户权限的页面,比如你要登录,就要获取个人信息.你要做人脸识别,就要获取相机权限.你要做位置地图功能.就要获取用户的位置权限,你要将图片保存在用户的相册,需要获取相册权限等等 微信的 scope 流程: 大多数功能都是没有授权不可用的,一般我会检测是否开启权限,然后如果开启了就继续使用,没开启就给出提示继续请求授权..如果还是拒绝 就给出提示 然后让用户手动去设置页打开... #正常逻辑 但是这一套写下来可能就是这样的: wx.getSetting({

基于Redis过期事件实现订单超时取消

2021-05-07
订单超时取消的实现,首先想到的是定时任务,但是这种实现方式在订单量较大的情况下是有问题的,而且时间也会有误差,最大时间差就是定时任务的执行间隔时间. 使用redis的过期监听事件可以比较好的解决这个问题.实现的方式是订单创建后向redus中存一记录,一般就以订单号为key.设置过期时间(订单超时时间),一旦时间超时会触发监听事件,这时候就可以通过key判断这个订单是否支付,未支付时取消订单. redis过期监听的实现: 1.修改redis.windows.conf配置文件中notify-keys

Node.js里面的内置模块和自定义模块的实现

2021-05-07
一.Commonjs Commonjs是nodejs中的自定义模块 Commonjs规范的提出,弥补javascript没有标准的缺陷,提供一个类似后端语言的标准库,也就是说commonjs是模块化的标准,nodejs就是commonjs模块化的实现.在nodejs中除了http,url,fs等等都是nodejs的内置模块,可以直接使用. commonjs中自定义模块的实现: 在nodejs中将公共的功能抽离为单独的js文件作为模块,在外部是没有办法访问的(类似后端的私有的属性和方法);要想使用

Flutter数据库的使用方法

2021-05-07
说明 Flutter原生是没有支持数据库操作的,它使用SQLlit插件来使应用具有使用数据库的能力.其实就是Flutter通过插件来与原生系统沟通,来进行数据库操作. 平台支持 FLutter的SQLite插件支持IOS,安卓,和MacOS平台 如果要对Linux / Windows / DartVM进行支持请使用sqflite_common_ffi 不支持web平台 数据库操作在安卓或ios的后台执行 使用案例 notepad_sqflite 可以在iOS / Android / Window

Kotlin中?和!!的区别详细对比

2021-05-07
前言 很多同学刚上手使用Kotlin知道它有针对Java NullPointerException的管理,而在Kotlin中?和!!均是和NullPointerException有关系,可他们的区别到底是什么呢?为什么别人开发的项目中出现了好多"?",而我读起来却满脸问号. 不懂就问百度呀,确实有人解释它们的区别,比如: 这是输入"kotlin ?和!!"搜索到的百度第一条答案,确实这位说的没错.不过我觉得对于一个刚接触KT(Kotlin)的新手来说,他恐怕需要有汉

Python基础之教你怎么在M1系统上使用pandas

2021-05-07
一.问题 目前为止,M1系统上还不能使用pip3安装pandas库,无法使用pandas进行数据分析和处理.虽然网上也有专门适配M1的python环境,但实施起来也比较麻烦,不够纯粹. 那在M1上,如何使用pandas? 二.方案 docker新版本已经支持M1了,我们不妨尝试一下,是否可以用vscode+docker使用pandas. 1.安装M1版本的docker 访问https://docs.docker.com/docker-for-mac/install/,下载M1版本的docker.

redis通过6379端口无法连接服务器(redis-server.exe闪退)

2021-05-07
程序中报错:Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379 原因是redis没有启动,解决方法: 找到redis安装路径,按如下步骤便可启动redis 按正常情况来说redis便可通过6379端口连接到服务器,我这里报双击redis-server.exe时出现闪退(很多人出现这种现象) 原因是:

postgresql高级应用之合并单元格的思路详解

2021-05-07
1.写在前面✍ 继上一篇postgresql高级应用之行转列&汇总求和之后想更进一步做点儿复杂的(圖表暫且不論哈

Golang 获取文件md5校验的方法以及效率对比

2021-05-07
近期有一个需求:获取多个文件 md5 校验和判断是否存在重复文件,因为文件数量较多,有的文件还比较大,需要处理的文件还没有到位,我就考虑了一下效率的问题. 目前我已知的 Golang 中获取 md5 校验和的方法有两个 这里直接给出实现源码. package main import ( "crypto/md5" "flag" "fmt" "io" "io/ioutil" "os" ) v

Java设计模式之代理模式详解

2021-05-07
一.代理模式 代理模式就是有一个张三,别人都没有办法找到他,只有他的秘书可以找到他.那其他人想和张三交互,只能通过他的秘书来进行转达交互.这个秘书就是代理者,他代理张三. 再看看另一个例子:卖房子 卖房子的步骤: 1.找买家 2.谈价钱 3.签合同 4.和房产局签订一些乱七八糟转让协议 一般卖家只在签合同的时候可能出面一下,其他的1,2,4都由中介去做.那你问这样有什么用呢? 首先,一个中介可以代理多个卖房子的卖家,其次,我们可以在不修改卖家的代码的情况下,给他实现房子加价.打广告等等夹带私货的

Java基础语法之二维数组详解

2021-05-07
一.二维数组 进入正题之前.首先为了便于大家理解,我画了一个图: xx枪战游戏中, 我是一个刚刚注册账号的小白,系统送了我两把枪,此时,我的武器库只有这么一层(可以理解为一位数组,枪就是对应的数组中对应的元素) 经过艰苦卓绝的战斗,终于有了一笔钱,现在我打算配置好的游戏装备,我现在有了一个枪柜,它可以存放三层的枪械,每一层都可以放多把武器(这个就是二维数组,有多层,每层都是一个一维数组) 随着游戏时长和我的高超技术,获取游戏装备的效率越来越高了,一个枪柜已经存不下了,于是,我就有了多个枪柜(这个

C语言中杨氏矩阵与杨辉三角的实现方法

2021-05-07
一.杨氏矩阵 杨氏矩阵 1.杨氏矩阵的概念 在数学中,杨表(英语:Young tableau),又称杨氏矩阵.是对组合表示理论和舒伯特演算很有用的工具.它提供了一种方便的方式来描述对称和一般线性群的群表示,并研究它们的性质.杨表是剑桥大学数学家 Alfred Young 在1900年推提出.然后,它被弗罗贝尼乌斯应用对称群的研究中.他们的理论由许多数学家进一步发展,包括PercyMacMahon.W. V. D. Hodge.G. de B. Robinson.吉安-卡洛·罗塔.Alain La

redis 限制内存使用大小的实现

2021-05-07
记录一次生产环境问题排查过程: 生产环境部署方式:nginx + uwsgi + flask 问题描述: 发现生产环境中之前正常运行的服务突然不可用了,查看程序日志发现部分接口访问时报I/O写错误,nginx acess.log显示504,error.log显示 upstream time out. 同时 netstat -apn | grep 6379 | wc -l 检查发现redis存在大量连接,进一步检查发现其中大多为 SYN_SENT 包,连接大多归属于uwsgi 进程.   因为程序

关于C/C++内存管理示例详解

2021-05-07
1.内存分配方式 在C++中,内存分成五个区,分别是堆.栈.自由存储区.静态存储区和常量存储区. 1) 栈 执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置处理器指令集中,效率很高,但分配的内存容量有限. 2) 堆 由new分配的内存块,释放由程序员控制.如果程序员没有释放,那么就在程序结束的时候,被操作系统回收. 3) 自由存储区 由malloc等分配的内存块,用free结束自己的生命. 4) 静态存储区 全局变量和静态变量被分配到

Java基础之static的用法

2021-05-07
一.前言 在java中static可以用来修饰以下内容: 成员变量 静态变量,可以直接通过类名去访问 成员方法 静态方法,可以直接通过类名去访问 代码块 静态代码块,当java虚拟机加载类时,就会执行该代码块 二.static修饰成员变量 成员变量 静态变量,可以直接通过类名去访问 2.1 类的成员变量 类的成员变量包括 类变量(静态变量) 被static修饰的变量 在内存中只有一个拷贝 类内部,可以在任何方法内直接访问静态变量 其它类中,可以直接通过类名访问 实例变量 没有被static修饰的

Android创建悬浮窗的完整步骤

2021-05-07
在Android中想要创建悬浮窗分为三步 1.申请权限 2.使用服务启动悬浮窗 3.设置悬浮窗参数并添加进WindowManager 下面话不多说了,来一起看看详细的实现过程 申请权限 首先需要申请悬浮窗权限,在清单文件中 manifest 下添加 <!-- 低版本悬浮窗所需权限 --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 在Activity中动态申请权