工作中我们经常查询数据库,用一个查询,得到想要的数据。可有想过,我们得到答案经过了哪些磨难?经历了哪些诱惑?...第2关 查询缓存 执行查询语句的时候,会先查询缓存,我们会发现某个查询,查询第二次的时候非常快便是这个原因(MySQL8.0 废除这个功能,太鸡肋)。 ...... ?...单词别写错了,写错了,我可不会干活。 ? 第二步:解析涉及到的对象是否存在; 人都没有,跟空气聊个啥呢? ? ? 第三步:涉及到的对象用户是否有对应的权限。 ?...特性2 插入缓冲 对于非聚集类索引的插入和更新操作,不是每一次都直接插入到索引页中,而是先插入到内存中。...具体做法是:如果该索引页在缓冲池中,直接插入;否则,先将其放入插入缓冲区中,再以一定的频率和索引页合并,这时,就可以将同一个索引页中的多个插入合并到一个IO操作中,大大提高写性能(一定是非聚集索引)。
if not exists XX(数据库名); 这段代码的好处是显而易见的,在我们这里可能体现不出来,但如果是做项目的时候或者在企业中,数据库非常非常多,你用肉眼看都要看花了,到底哪些数据库已经存在了...所以就可以用上面这句代码,下面我们用这段代码创建一下”test”数据库,看会发生什么事情 看到没,显示”OK”,没有报错了,但是有一个警告,这个警告就是告诉用户,”test”这个数据库存在 还有个问题...很明显,报错了,因为不存在”a”这个数据库,我们可以判断一下,这个数据库存在才删除,下面给出代码。...,插入的时候就要加上"" 字段可以和数据库中的字段顺序不一致,但是值和插入字段的顺序必须一致 插入字段是可以省略的,这时插入的值和数据表的字段顺序和个数必须一致 2....查询数据(查) 这里本来应该按照顺序给大家讲删除数据的,但是因为想给的大家看一下插入数据之后,表内变成什么样了,让大家加深印象,所以这里讲查询数据,首先给大家介绍一个知识点——运算符 比较运算符 >
因为' '在浏览器中没有转义,我们需要转换为转义字符+ http://192.168.1.19/Less-5/?...,发现在第三条数据这里报错了! 我们再插入一条数据,再执行语句 说明我们只要查询的数据超过2条必定报错!!!!...那么我们就可以肯定是因为floor(rand(0)*2)的结果存在确定的可能性,并且在多数据表中这个函数的唯一执行结果导致的报错问题必然出现!...那么key就是floor(rand(0)*2) 在此之前我们需要知道floor(rand(0)*2)被多次执行后的结果是什么,我们牢记这个顺序 1.在查询之前默认会创建虚拟表,之后我们取第一条数据执行...但是虚表的主键必须是唯一的,所以插入时就直接报错了! 这三条数据的查询floor(rand(0)*2)一共被执行了5次,所以也就是为什么3条及其以上数据存在时,语句才会报错了!
在文章之前先提一下~~~ Jdrops0同学问到上次的黑客技能训练网址是这个:https://www.vulnhub.com国外的一个不错的网站。...> 输入一撇 ’ ,报错了,因为这样造成引号没有闭合导致了sql引号成双成对的爱情梦破灭。 那么同样,我们可以进行union查询。 为什么注入中要用哦order by 进行字段数的判断呢?...那我们可以构造sql语句查询users这个表,当然了,你要加union 来合并多个select语句的结果集。 http://192.168.217.128/1.php?...我们要查询users表中的admin 和admin对应的password没错,但是要用1,2,3来补齐字段。 那为什么我查询出来的这条记录不死admin呢?你要知道。...以下是常见的注入叫法: POST注入:注入字段POST数据中。 Cookie注入:注入字段在cookie字段中。 延时注入:使用数据库延时特性注入。 搜索注入:注入处为搜索的地点。
linkedlist是双链表,并且很坑的一点是,Java里的linkedlist自带按索引访问的api,结果我没用过,面试的时候被问到答错了,导致我美团直接凉凉= =。...1.8则放弃使用分段锁,改用cas+synchronized方式实现并发控制,查询时不加锁,插入时如果没有冲突直接cas到成功为止,有冲突则使用synchronized插入。...Linkedhashmap 在原来hashmap基础上将所有的节点依据插入的次序另外连成一个链表。...这个东西还是很好用的,做算法题的时候经常会用到自定义的排序方式。...当然可能还有一些遗漏,但是大部分我在面试中能遇到的问题都已经包含进去了。
你在其他业务中可能遇到的问题,在电商系统中基本都会遇到。 作为开发,希望自己成为某几个业务领域的技术专家,最好能先精通电商领域,有很强的借鉴意义。...方案一: 利用数据库自身特性 “主键唯一约束”,在插入订单记录时,带上主键值,如果订单重复,记录插入会失败。...在了解的数据的冷、热特性后,便可以指导我们做一些有针对性的性能优化。这里面有业务层面的优化,也有技术层面的优化。...比如:电商网站,一般只能查询3个月内的订单,如果你想看看3个月前的订单,需要访问历史订单页面。 实现思路: 1、冷热数据区分的标准是什么?...但是查询维度很多 1、买家,查询 我的订单 列表,需要根据 buyer_id 来查询 2、查看订单详情,需要根据 order_id 来查询 3、卖家,查询 我的销售 列表,需要根据 seller_id
那问题就出现了,我只需要找出zhangsan的名字,却需要查询一整行的数据,如果列非常多,那么查询效率可想而知了。 查询的操作速度会受到以下两个因素的制约: 表被并发的插入、编辑以及删除操作。...查询出来的数据放入到缓存中,下一次查询直接从缓存中拿数据。插入数据怎么办呢?也可以这样理解,我把要插入的数据放进缓存中,再也不用管了,直接由数据库从缓存拿数据插入到数据库。...此时程序不需要等待数据插入成功,提高了并行工作的效率。 可是这样做有了很大的风险,服务器宕机的话,缓存中的数据没来得及插入到数据库中,那不就丢数据了嘛。...参考Redis的持久化策略,可以给插入数据这个操作添加一个操作日志,用于持久化插入操作,宕机重启后从日志恢复。 这样设计架构就变成了这个样子: ?...行中的数据所属的列族从该表所定义的列族中选取,不能选择这个表中不存在的列族。由于HBase是一个面向列存储的数据库,所以一个行中的数据可以分布在不同的服务器上。
两种查询对的磁盘访问 从表中可以看出,在都使用了索引的情况下,如果是按值查询那么有序存储和无序存储基本都能做到一次磁盘IO就能实现数据读取。...还是以一个小例子来做下说明: SELECT avg(price) FROM orders where age between 20 and 30; 计算订单中年龄在20到30岁用户的平均订单金额。...以clickhouse官方提供的hits_v1库为例,我挑选了其中的UserID列为例,使用clickhouse提供的compressor工具读取该列的数据文件,可以看到这个文件中每一个block的压缩前和压缩后的大小...附 可能有读者会问,为什么无序存储要乘以4K。这个原因是因为操作系统在读取磁盘时,依据数据局部性原理,会按照页为单位读取,每页的大小默认是4k。...在unistd.h头文件中的getpagesize()可以获取本机的页面大小,这里按照默认大小进行计算。 式子中的27.1%是指的缓存命中率,命中率由需要查询的数据占所有数据的百分比r决定。
1.前言提到数据库,大家肯定会想到数据库的索引,很多人都知道索引是为了提高查询效率的,那么今天我就给大家讲一下,什么是索引,索引的数据结构是什么,索引是如何工作的。...但是缺点是,因为不是有序的,所以哈希索引做区间查询的速度是很慢的。你可以设想一下,如果你现在要找身份证号在ID_card_x, ID_card_y这个区间的所有用户,就必须要全部扫描一遍。...也就是说,基于非主键索引的查询需要多扫描一颗索引树,因此,我们在应用中应该尽量使用主键查询。4.索引维护B+树为了维护索引的有序性,在插入新值的时候需要做必要的维护。...原本放在一个页的数据,现在分到两个页中,整体空间利用率大约降低50%。当然有分裂就有合并。当相邻两个页由于删除数据,利用率很低之后,会将数据页做合并。合并的过程,可以认为是分裂的逆过程。...5.小结今天,我跟你分析了数据库引擎可用的数据结构,介绍了 InnoDB 采用的 B+ 树结构,以及为什么 InnoDB 要这么选择。B+ 树能够很好地配合磁盘的读写特性,减少单次查询的磁盘访问次数。
当然为了维持 O(log(N)) 的查询复杂度,就需要保持这棵树是平衡二叉树。为了做这个保证,更新的时间复杂度也是 O(log(N))。...在 InnoDB 里,主键索引也被称为聚簇索引(clustered index),非主键索引也被称为二级索引(secondary index)。 基于主键索引和普通索引的查询有什么区别?...这个过程称为回表,也就是说,基于非主键索引的查询需要多扫描一棵索引树。 因此,我们在应用中应该尽量使用主键查询。 维护索引的开销 B+ 树为了维护索引有序性,在插入新值的时候需要做必要的维护。...当相邻两个页由于删除了数据,利用率很低之后,会将数据页做合并,合并的过程,可以认为是分裂过程的逆过程。...将利用率低的页数据进行合并之后,另一个数据叶会被标记为可复用供后续数据利用, 所以我们为什么建议使用自增主键,因为自增主键的插入数据模式,正好符合了我们前面提到的递增插入的场景。
提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个 SQL 查询比较慢,分析完原因之后,你可能就会说“给某个字段加个索引吧”之类的解决方案。但到底什么是索引,索引又是如何工作的呢?...所以,哈希表这种结构适用于只有等值查询的场景,比如 Memcached 及其他一些 NoSQL 引擎。 而有序数组在等值查询和范围查询场景中的性能就都非常优秀。...当然为了维持 O(log(N)) 的查询复杂度,你就需要保持这棵树是平衡二叉树。为了做这个保证,更新的时间复杂度也是 O(log(N))。 树可以有二叉,也可以有多叉。...也就是说,基于非主键索引的查询需要多扫描一棵索引树。因此,我们在应用中应该尽量使用主键查询。 索引维护 B+ 树为了维护索引有序性,在插入新值的时候需要做必要的维护。...当然有分裂就有合并,当相邻两个页由于删除了数据,利用率很低之后,会将数据页做合并,合并的过程,可以认为是分裂过程的逆过程。
想清楚给谁看 我们的看板应该是一个故事,用故事来讲述公司过去发生了什么(Tableau中故事这个词真的是极妙)。对于公司中不同的人,我们对故事的着眼点和需求是不一样的。...想清楚这个问题之后,可以在纸上简单地画个页面布局的草图:放几个图,每个图用什么图示,折线图还是柱状图等,哪个最重要需要放在中间。...基于个人经验,我建议每次在做数据表的时候都做这么6个sheet页: 原始数据页——从系统导出的数据或别人给你的原始数据,一个字都不要改动,万一不小心搞错了什么东西还可以回来检查。...此处说句题外话,虽然我大多数的实践中数据分析结果都是在PPT中予以呈现的,一般不会在Excel单独设计一个展示页,但其他几个sheet页都会有。...完成插入后用复制粘贴或剪切的功能把数据透视图放到独立的sheet页中(我敢说很多觉得这个图表很难做的小伙伴就是因为不知道数据透视表可以直接出图,或者不知道图放到另一个sheet页中依然可以联动公式) 不信的话可以试试这个操作
来源2022-生信入门年度交流 Project大小写没写对,大小写是敏感的 Q17:热图聚类参数已经调整为T,对照组中怎么会参差不齐地插入实验组的样本?...有一些穷人会假装有钱人的 Q18:空转图片读不进去怎么处理 来源2022-生信入门年度交流 写错了文件夹名 Q19:我想合并TCGA-COAD和TCGA-READ的数据一起分析。...来源2022-生信入门年度交流 有更好的,没必要这个,去查看菜鸟团公众号介绍 Q21:我在练习GEO代码的时候拼图那一步报错了,在网上搜了一下,说是把右下角空白拉大即可,但是我尝试过了也不行。...但是不推荐做无重复差异分析,转录组很便宜,做重复好一点。 Q47:我运行hisat2比对的时候,好几次提示。...应该就指的是红框中的-符号,当时新叶老师讲的时候说这个符号表示上步运行生成的数据,我运行的时候有时报错有时不报错,麻烦老师帮看看是什么原因 来源2022-07(生信入门马拉松授课) 这个符号不是报错,
很多小知识点,我以为自己懂了,实际没搞透。 数据库字段允许空值(null)的问题,你遇到过吗?...=1; 【插入一行,id会出现空值(null)】 insert into user(name) values('wangwu'); 【问题二:再次select,会返回什么?】...=1; 一起来看一下,这个小实验,涉及哪些知识点呢? 知识点1(热身):负向查询不能命中索引,会导致全表扫描。 explain select * from user where id!...=1; 再次执行不等于查询。 你猜结果集有几条记录(共4条,不等于排除1条)? 答错了! 结果集只有2条记录,空值记录并未出现在结果集里。 画外音:第二次select的结果,意不意外?...架构师之路-分享技术思路 相关推荐: 《必须知道的RPC内核细节(收藏)》 《谁家的加密密钥,写死在代码里?》 《每秒10W次分词搜索,如何满足(收藏)》
最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。...最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。...在第三步中,将这个无效的条件移除了。 2.2).substitute_generated_columns 字面含义是用于替换虚拟生成列。但自己创建虚拟列测试了一下,该字段无任何输出,怀疑未起作用。...如下例中新创建一张表,插入100万记录。表中对b,c两个字段创建了索引。...这种方式即查询中同时使用两个(或更多)索引,然后对索引结果进行合并(merge),再读取表数据。针对示例中,b和c字段的索引组合同样进行了评估,并且最终的评估结果还不错,比访问单一索引要小。
今天的想法是,要在插入数据库时,如果有某某一个主要字段的值重复,则不插入,否则则插入! 看了一下mybatis-Plus是有这个saveOrUpdate 方法!...当saveOrUpdate不使用条件构造器时,会先做根据主键查询,如果查出来的结果为0,那么就执行插入操作,如果查出来的结果不为0,则执行更新操作。 但是一般情况下,主键都不会重复啊!...,然后做插入操作!...哈哈,这个还是很重要的! saveOrUpdate 是否有映射id 我们知道mybatis在插入时,会映射id,但是如果是saveOrUpdate会怎么样呢?...但是这次加了wrapper,我再试试如果只插入一条,会怎么样。哈哈,不去读源码去debug,就只能这样试试了,莫怪。 诶,对啊,我去看看源码先,看能不能看出什么门道。 之前好像也有看了点源码。
领取专属 10元无门槛券
手把手带您无忧上云