DFF

微信扫码登录是如何实现的?

空扰寡人 提交于 2020-08-11 14:22:17
网页版微信刚推出时,无数人被它的登录方式惊艳了一下,不需要输入用户名密码,打开手机微信扫一扫,便自动登录。从原理上讲,二维码只能是一段文本的编码,如何用它实现快捷登录的呢? 打开网页版微信,可以看到如下的页面: 微信扫码界面 如果你用我查查、支付宝、新浪微博等软件扫码二维码,你会发现此二维码解析出来是如下的网址: https://login.weixin.qq.com/l/obsbQ-Dzag== 接下来详细介绍一下扫码登录具体的每个步骤: 扫码登录完整流程 ①:用户 A 访问微信网页版,微信服务器为这个会话生成一个全局唯一的 ID,上面的 URL 中 obsbQ-Dzag== 就是这个 ID,此时系统并不知道访问者是谁。 ②:用户A打开自己的手机微信并扫描这个二维码,并提示用户是否确认登录。 ③:手机上的微信是登录状态,用户点击确认登录后,手机上的微信客户端将微信账号和这个扫描得到的 ID 一起提交到服务器 ④:服务器将这个 ID 和用户 A 的微信号绑定在一起,并通知网页版微信,这个 ID 对应的微信号为用户 A,网页版微信加载用户 A 的微信信息,至此,扫码登录全部流程完成 扫码登录看起来神奇,主要是因为微信 APP 扫自家的码会做一些普通二维码软件不会做的额外的操作,那就是将当前已登录的微信和扫出来的 ID 提交到微信服务器,类似的应用还有扫码支付、扫码加公众号等功能。

谈谈MySQL InnoDB存储引擎事务的ACID特性

寵の児 提交于 2020-08-11 10:40:19
1、前言 相信工作了一段时间的同学肯定都用过事务,也都听说过事务的4大特性ACID。ACID表示原子性、一致性、隔离性和持久性。一个很好的事务处理系统,必须具备这些标准特性: 原子性(Atomicity): 一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚。 一致性(consistency): 数据库总是从一个一致性的状态转换到另一个一致性的状态。(其实原子性和隔离性间接的保证了一致性) 隔离性(isolation): 通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。 持久性(durability): 一旦事务提交,则其所做的修改就会永久保存到数据库中。 而我们最常说的隔离性其实有对应的隔离级别,MySQL规定的隔离级别有4种,分别是: READ UNCOMMITTED(读未提交): 在此级别里,事务的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,也就是会产生 脏读 ,在实际应用中一般很少使用。 READ COMMITTED(读已提交): 大多数数据库系统的默认隔离级别都是它,但是MySQL不是。它能够避免脏读问题,但是在一个事务里对同一条数据的多次查询可能会得到不同的结果,也就是会产生 不可重复读 问题。 REPEATABLE READ(可重复读): 该隔离级别是MySQL默认的隔离级别

mysql

只谈情不闲聊 提交于 2020-08-11 06:25:14
int 四个字节 定长 char 也是定长 varchar text blob 变长 1、定长和变长适合放到不同表里 2、常用和不常用的字段放到不同表里 3、在一对多 需要关联查询时,进行适当合理的冗余字段 字段类型选择 整型》data time >enum char> varchar >blob text char 需要考虑字符集和校对集(校对规则 用于排序) 但是tinyint(一个字节)不存在这样的问题 mysql索引结构 1hash 2 btree https://www.cnblogs.com/tanshaoshenghao/p/12572841.html 来源: oschina 链接: https://my.oschina.net/u/3572435/blog/4321279

Java基础系列——数组(10)

偶尔善良 提交于 2020-08-10 07:27:40
数组的概述 数组(Array),是多个相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理。 数组中常用的概念:数组名、下标(或索引)、元素、数组的长度。 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。 数组的长度一旦确定,就不能修改。 我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。 数组的分类: 按照维度:一维数组、二维数组、三维数组、… 按照元素的数据类型分:基本数据类型元素的数组、引用数据类型元素的数组(即对象数组) 一维数组的使用 一维数组的声明方式 type var[] 或 type[] var ; 例如: int[] arrays ; int arrays[] ; 一般使用的方式是 type[] var 这种形式,这样就认为 type[] 是一个整体的类型。 注意:在Java语言中声明数组时不能指定长度(也就是数组中元素的个数)。 一维数组的使用:初始化 动态初始化 : 数组声明且为数组元素分配空间与赋值的操作分开进行。 int[] arr = new int[3] ; arr[0] =3 ; arr[1] = 4 ; arr[2] = 5 ; 静态初始化

Python网络爬虫项目:使用requests获取网页,通过xpath提取数据

时光毁灭记忆、已成空白 提交于 2020-08-09 05:58:41
本次讲解通过requests获取某一个网站,网址:http://www.gxccedu.com/sp2017/zli/index.html 然后使用xpath提取页面中的“专利名称”。 步骤: 1、使用pycharm新建项目,新建的时候记得勾选“Inherit global site-packages”否则可能找不到requests类库 2、编写代码,我们看到网页上的数据量是101行,如下所示: 代码如下: 项目结构(不重要): 程序代码: 首先我们要分析网页的源码,在浏览器按F12可以查看到源码,把源码全选复制到一个pycharm新建的HTML文档,可以看到对应的树形结构。 我们可以看到,在左边的编辑框这里,凡是有“-”号的,都是在树形结构内的。由此我们可以知道,如果想要获取到td,则完整的树形结构是: html-body-div-table-tr-td 但是tr是多个的,并且第一个是表头,所以第一个不是我们想要的,所以我们要对第一个的表头抛弃掉。 另外td也是多个的,并且我们只需要每个tr里面的第二个td,所以我们可以采用下标的方式来获取。 最终完整的树形结构是:/html/body/div/table/tr[postion()>1]/td[2] 所以,代码如下: 最后,运行结果: 来源: oschina 链接: https://my.oschina.net/u/4082616

OSChina 周六乱弹 —— 医生说要离可乐什么的含糖饮料远点

核能气质少年 提交于 2020-08-09 05:46:20
Osc乱弹歌单(2020)请戳( 这里 ) 【今日歌曲】 @ 薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Love Theme》 - 小瀬村晶 手机党少年们想听歌,请使劲儿戳( 这里 ) @ Xiaoshiyue :昨晚被打雷声惊醒的有没有 打雷了么? 我俩康康, 但是睡不着觉是另有原因, 看恐怖片看的, @ 罗马的王 :这几天看恐怖片,以前不敢看的也敢看了 晚上看恐怖片太饿了, 点个宵夜吃吧。 大王(@ 罗马的王 )你有7个室友呢, 怕什么 @ 章鱼丸子米饭 : 跟我一个朋友合租,他最近跟一个女生视频较为频繁,下班到宿舍就视频到晚上睡觉还舍不得挂,据说上班的时候也在视频。请问,我现在该怎么办,我是实在看不下去了。 不然的话, 你们是挺和谐的二人世界, “太极生2喵” 总是和男的在一起, 难得会和小姐姐一起吃个饭, @ 蓝瞳 :下个月有个聚餐,应该是跟小姐姐最后一次吃饭了,是时候瘦身了,目标是回到巅峰状态! 我现在就要按减肥来要求自己, “医生说要离可乐什么的含糖饮料远点。” 你去健身了, 没时间陪小姐姐了, 小心别人代替你照顾他, @ ArcticF0X :有个男生找我下单,说要买4箱白糖罂送女朋友,我想告诉他吃完再买就行,不用一下买那么多,我还没打完字,他丢给了我四个地址…… 我从来没有像今天这么自卑过! @ 傻傻躺着 :女的找对象,都无一不列外的提到钱

Java基础系列——关键字、保留字、标识符、变量(04)

允我心安 提交于 2020-08-08 23:50:32
关键字 在Java 语言中存在大量的关键字,这些关键字都是有特殊的用途。 关键字 : 被Java语言赋予了特殊含义,用做专门用途的字符串(单词)。而且这些关键字都是小写! 关键字的官网: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html 。 在这可以查看到所有的关键字,包括在什么时期出现的,使用情况等都有说明。下面是所有的关键字,在以后定义的变量的过程中,应该避免使用它们: abstract continue for new switch assert*** default goto* package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum**** instanceof return transient catch extends int short try char final interface static void class finally long strictfp** volatile const* float native super while * not used **

Java--反射(框架设计的灵魂)案例

假如想象 提交于 2020-08-07 19:23:34
Java--反射(框架设计的灵魂)案例 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 需求 写一个"框架",不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意方法 使用 配置文件 反射 步骤 将需要创建的对象的全类名和需要执行的方法定义在配置文件中 在程序中加载读取配置文件 使用反射技术来加载类文件进内存 创建对象 执行方法 配置文件 className=Student methodName=sleep 代码 import java.io.InputStream; import java.lang.reflect.Method; import java.util.Properties; /** * @author tanglei * @date 2020/6/11 3:10 下午 */ public class ReflectTest { public static void main(String[] args) throws Exception { Student s = new Student(); Properties pro = new Properties(); //获取配置文件的路径 ClassLoader classLoader = ReflectTest.class

怎么将CAJ格式的学术论文转换成PDF格式?简单两招教会你

我只是一个虾纸丫 提交于 2020-08-07 13:15:19
写过毕业论文的人都知道一种格式叫CAJ,它是中国学术期刊全文数据库中文件的一种格式,对于这些CAJ论文文件,我们最最最头疼的问题就是下载后无法直接打开CAJ文件使用,必须得配备一个相关的阅读器! 所以今天我介绍一款软件给大家,通过它可以批量将CAJ文件转换成PDF文件,绝对不影响阅读质量和效果。下面就是小编给大家整理的CAJ转换成PDF的具体操作方法,有需要可以的可以看看! 操作工具: 电脑一台 迅捷CAJ转换器软件一个 CAJ文件一个或多个 详细步骤: 1.软件安装 百度搜索迅捷CAJ转换器找到对应的官网,下载安装该软件并打开。 2.转换方法 打开软件后,即可看到以下界面,先后点击上方的CAJ/PDF转换和下方的CAJ转PDF,然后点选择添加相应的文件,添加完后点击开始转换。 转换成功后选择打开文件或打开文件夹即可。 根据上述步骤操作就可以啦!写论文的毕业狗无需另外下载相关的阅读器,只需要有一个迅捷CAJ转换器就可以对CAJ文件进行阅读啦!感兴趣的朋友不妨下载一个试试看! 来源: oschina 链接: https://my.oschina.net/u/4528176/blog/4284742

有哪些录音软件适合新手使用?这款软件的用户体验也太棒了!

≡放荡痞女 提交于 2020-08-06 19:40:19
有哪些录音软件适合新手使用?现如今很多公司都推出了音频录制软件,小编对于新出的产品也是抱着一百分的好奇,去尝试了之后发现,无论是新出的录音软件,还是老牌的音频录制工具,对于新手都不太友好。 复杂的页面让刚接触的新手们,根本找不到“开始录制”键。因此,在经过小编一次又一次的下载尝试之后,终于发现了这款非常适合新手使用的录音软件,“迅捷录音软件。” 打开浏览器,在搜索框中输入“迅捷录音软件,”进入官网点击下载,安装好之后打开软件,我们就可以看到简洁的软件页面了。 虽然页面简洁,但是迅捷录音软件的功能非常强大,提供多种录音格式和声音来源供大家选择,保存位置的设置也非常简单,还有显眼的“开始录制”键和录制时长。 除此之外,迅捷录音软件最方便的地方在于它的悬浮框,黑色的极简风格悬浮框,只有录制时长、开始键和停止键三个区域,在中途停止的时候,开始键转换成暂停键,非常方便实用。 迅捷录音软件对新手的友好度显然是极高的,除了简单的软件页面,它的录制功能不容小觑,软件能够还原无损音质,在进行录制保存的时候也不会压缩音频大小,同时不限制录制时间,用户体验感极好。感兴趣的小伙伴赶紧去下载安装吧。 来源: oschina 链接: https://my.oschina.net/u/4524402/blog/4288349