如何使用Web Share API 在网页调用系统的分享按钮
该网络共享API是一个似乎已在雷达之下消失了,因为它是在Chrome 61首次推出为Android。从本质上讲,它提供了一种直接从网站或Web应用程序共享内容(例如链接或联系人卡片)时触发设备(或桌面,如果使用Safari)的本机共享对话框的方法。
虽然用户已经可以通过本地方式从网页共享内容,但他们必须在浏览器菜单中找到该选项,即使这样,也无法控制共享内容。通过引入此API,开发人员可以利用用户设备上的本机内容共享功能,将共享功能添加到应用程序或网站中。
与传统方法相比,这种方法具有许多优点:
- 与您在DIY实施中可能拥有的有限数量相比,向用户提供了广泛的共享内容选项。
- 您可以通过取消来自各个社交平台的第三方脚本来改善页面加载时间。
- 您无需为不同的社交媒体网站和电子邮件添加一系列按钮。单个按钮足以触发设备的本机共享选项。
- 用户可以在自己的设备上自定义其首选共享目标,而不仅限于预定义的选项。
我以为我对Mysql索引很了解,直到我遇到了阿里的面试官
相信很多人对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。
因为索引是MySQL中比较重点的知识,相信很多人都有一定的了解,尤其是在面试中出现的频率特别高。楼主自认为自己对MySQL的索引相关知识有很多了解,而且因为最近在找工作面试,所以单独复习了很多关于索引的知识。
但是,我还是图样图森破,直到我被阿里的面试官虐过之后我才知道,自己在索引方面的知识,只是个小学生水平。
以下,是我总结的一次阿里面试中关于索引有关的问题以及知识点。
索引概念、索引模型
我们是怎么聊到索引的呢,是因为我提到我们的业务量比较大,每天大概有几百万的新数据生成,于是有了以下对话:
面试官:你们每天这么大的数据量,都是保存在关系型数据库中吗?
我:是的,我们线上使用的是MySQL数据库
面试官:每天几百万数据,一个月就是几千万了,那你们有没有对于查询做一些优化呢?
我:我们在数据库中创建了一些索引(我现在非常后悔我当时说了这句话)。
这里可以看到,阿里的面试官并不会像有一些公司一样拿着题库一道一道的问,而是会根据面试者做过的事情以及面试过程中的一些内容进行展开。
面试官:那你能说说什么是索引吗?
我:(这道题肯定难不住我啊)索引其实是一种数据结构,能够帮助我们快速的检索数据库中的数据。
面试官:那么索引具体采用的哪种数据结构呢?
我:(这道题我也背过)常见的MySQL主要有两种结构:Hash索引和B+ Tree索引,我们使用的是InnoDB引擎,默认的是B+树。
这里我耍了一个小心机,特意说了一下索引和存储引擎有关。希望面试官可以问我一些关于存储引擎的问题。
面试官:既然你提到InnoDB使用的B+ Tree的索引模型,那么你知道为什么采用B+ 树吗?这和Hash索引比较起来有什么优缺点吗?
我:(突然觉得这道题有点难,但是我还是凭借着自己的知识储备简单的回答上一些)因为Hash索引底层是哈希表,哈希表是一种以key-value存储数据的结构,所以多个数据在存储关系上是完全没有任何顺序关系的,所以,对于区间查询是无法直接通过索引查询的,就需要全表扫描。所以,哈希索引只适用于等值查询的场景。而B+ Tree是一种多路平衡查询树,所以他的节点是天然有序的(左子节点小于父节点、父节点小于右子节点),所以对于范围查询的时候不需要做全表扫描。
面试官:除了上面这个范围查询的,你还能说出其他的一些区别吗?
我:(这个题我回答的不好,事后百度了一下)
科普时间:B+ Tree索引和Hash索引区别 哈希索引适合等值查询,但是不无法进行范围查询 哈希索引没办法利用索引完成排序 哈希索引不支持多列联合索引的最左匹配规则 如果有大量重复键值得情况下,哈希索引的效率会很低,因为存在哈希碰撞问题
聚簇索引、覆盖索引
面试官:刚刚我们聊到B+ Tree ,那你知道B+ Tree的叶子节点都可以存哪些东西吗?
我:InnoDB的B+ Tree可能存储的是整行数据,也有可能是主键的值。
面试官:那这两者有什么区别吗?
你应该利用84种认知偏见来设计更好的产品
这可能是我15年博客中最长的帖子,也是我过去几个月里一直在做的偶然写作的结果。
认知偏差是影响我们决策制定的思维过程中的系统性错误。
作为人类,我们并不总是看到他们真实的东西,或者记住他们真实的东西。结果,我们创造了影响我们判断的主观社会现实。
…作为产品人,我们应该利用这些偏见来创造更好的产品。
单体应用与微服务
什么是Monolith,即单片架构?
单个应用程序,我们称之为Monolith,是通过单个部署单元提供的应用程序。示例可以是作为单个WAR提供的应用程序,也可以是具有单个入口点的Node应用程序。
例:
让我们举个例子:一个经典的在线商店。我们的业务范围包括订单,项目,客户,运输和付款。提供的与服务交互的方式有:REST api和Web前端。
构建Monolith,所有这些东西都将在同一个工件中进行管理。我没有编写“相同的进程”,因为对于我们的工件的多个实例将运行以处理更高负载的情况,这不是真的。
关于eMQTT的部署架构
一:emqtt的架构设计为:
Topic tree每台机器有副本,down机不影响数据
连接、订阅是单节点,一台down机客户端必须重连其他节点,并重新订阅相关主题。
二:官方推荐部署架构为:
一通骚操作,我把SQL执行效率提高了10000000倍!
场景
我用的数据库是mysql5.6,下面简单的介绍下场景
课程表:
create table Course(
c_id int PRIMARY KEY,
name varchar(10)
)
数据100条
学生表:
create table Student(
id int PRIMARY KEY,
name varchar(10)
)
数据70000条
学生成绩表SC
CREATE table SC(
sc_id int
… 原在PHP 7.4中使用预加载–Opcache Preloading
PHP 7.4增加了预加载(Opcache Preloading)的支持,这一功能可以显著提高PHP程序的运行性能。
它是如何工作的:
- 为了预加载文件,您需要编写一个自定义PHP脚本
- 此脚本在服务器启动时执行一次
- 所有预加载的文件都在内存中可用于所有请求
- 在重新启动服务器之前,对预加载的文件所做的更改不会生效
简单来说就是把PHP代码完全加载到内存中来达到提升性能的目的。
让我们深入研究一下。
最后更新于 2020年1月7日 …
PHP-DI和依赖注入的最佳实践
PHP-DI是用PHP编写的、强大的和实用的、框架无关的依赖注入容器。这是一个关于如何使用PHP-DI和依赖注入的最佳实践指南。
文章来源于PHP-DI,作者:Matthieu Napoli和贡献者。PHP-DI是用PHP编写的、强大的和实用的、框架无关的依赖注入容器。…
原php设置samesite cookie,有效防止CSRF
php设置samesite cookie,支持所有PHP版本。
PHP 7.3 的setcookie函数已经支持samesite属性,但对于7.3以下版本,可以用以下函数代替:
<?php $options = [ 'expires' => time()+18400, 'domain' => 'localhost', 'httponly' => false, 'samesite' => 'Lax', 'secure' => false, 'path' => '/' ]; function samesite_setcookie($name, $value, array $options) { $header = 'Set-Cookie:'; $header .= rawurlencode($name)…
近期评论