Zend 创始人提议创建 PHP 方言,暂命名为 P++
今日消息,不久前从 Zend 公司离职的 Zeev Suraski 以 PHP 开发组成员的身份提议要创建 PHP 方言,暂命名为 P++。
Zeev 表示,现有的 PHP 继续作为动态语言存在,而他提出的 PHP 方言暂命名为 P++,改成更严格的静态语言。他强调道,P++ 不是 PHP 的分叉。因为两者的代码库完全相同,维护代码库的开发者也会一样。另外,如果你安装了 PHP,那么将安装 P++,反之亦然。…
记录-交流-Web开发知识分享
今日消息,不久前从 Zend 公司离职的 Zeev Suraski 以 PHP 开发组成员的身份提议要创建 PHP 方言,暂命名为 P++。
Zeev 表示,现有的 PHP 继续作为动态语言存在,而他提出的 PHP 方言暂命名为 P++,改成更严格的静态语言。他强调道,P++ 不是 PHP 的分叉。因为两者的代码库完全相同,维护代码库的开发者也会一样。另外,如果你安装了 PHP,那么将安装 P++,反之亦然。…
xargs
是 Unix 系统的一个很有用的命令,但是常常被忽视,很多人不了解它的用法。
本文介绍如何使用这个命令。
Unix 命令都带有参数,有些命令可以接受"标准输入"(stdin)作为参数。…
PHP的新版本的性能是不断增强的,PHP最新版本是PHP7.3,我们来写个脚本,来测试一下PHP的性能如何
#!/usr/bin/env bash test=$(cat << 'eot' $time = microtime(true); $array = []; for ($i = 0; $i < 10000; $i++) { if (!array_key_exists($i, $array)) { $array[$i] = []; } for ($j = 0; $j < 1000; $j++) { if (!array_key_exists($j,…
提示下,编译MySQL 8.0版本,需要gcc版本5.3.0以上才行。我这次的编译环境是ubuntu 18.04,其gcc版本是7.4。…
你真的知道CHAR和VARCHAR类型在存储和读取时的区别吗?
还是先抛几条结论吧:
1、存储的时候,CHAR总是会补足空格后再存储,不管用户插入数据时尾部有没有包含空格。
2、存储的时候,VARCHAR不会先补足空格后再存储,但如果是用户在插入时特地加了空格那就会如实存储,而不会给删除。
3、读取数据时,CHAR总是会删除尾部空格(哪怕是写入时包含空格)。
4、读取数据时,VARCHAR总是如实取出之前存入的值(如果存储时尾部包含空格,就会继续保留着,不会像CHAR那样删除尾部空格)。…
该网络共享API是一个似乎已在雷达之下消失了,因为它是在Chrome 61首次推出为Android。从本质上讲,它提供了一种直接从网站或Web应用程序共享内容(例如链接或联系人卡片)时触发设备(或桌面,如果使用Safari)的本机共享对话框的方法。
虽然用户已经可以通过本地方式从网页共享内容,但他们必须在浏览器菜单中找到该选项,即使这样,也无法控制共享内容。通过引入此API,开发人员可以利用用户设备上的本机内容共享功能,将共享功能添加到应用程序或网站中。
与传统方法相比,这种方法具有许多优点:
相信很多人对于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可能存储的是整行数据,也有可能是主键的值。
面试官:那这两者有什么区别吗?
这可能是我15年博客中最长的帖子,也是我过去几个月里一直在做的偶然写作的结果。
认知偏差是影响我们决策制定的思维过程中的系统性错误。
作为人类,我们并不总是看到他们真实的东西,或者记住他们真实的东西。结果,我们创造了影响我们判断的主观社会现实。
…作为产品人,我们应该利用这些偏见来创造更好的产品。
近期评论