自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 位运算在常见场景下的运用

位运算在常见场景下的运用首先需要回顾一下常用的位运算操作^ 异或运算: 两个位相同为0,相异为1。& 与运算:两个位都为1时,结果才为1。| 或运算:两个位都为0时,结果才为0。<<左移:各二进位全部左移若干位,高位丢弃,低位补0。>>:各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)LeetCode 461.汉明距离两个整数之间的[汉明距离](https://baike.bai

2020-11-01 22:27:15 398

原创 优化特定类型的查询

优化特定类型的查询优化COUNT()查询COUNT(*) 忽略所有列,直接统计所有行数。当没有条件时;可以通过MySQL的存储引擎直接获取对应的值。COUNT一般都需要扫描大量的行,即大量的数据访问。比较难优化,善用补集进行替代,减少扫描数量优化关联查询确保ON或者USING子句中的列上有索引;确保任何的GROUP BY 和ORDER BY中的表达式只涉及到一个表中的列,这样MySQL才有可能使用索引来优化这个过程。升级MySQL时需要注意关联语法的变化。优化子查询尽量使用关联查询代替

2020-10-08 19:18:45 135 1

原创 MySQL查询优化器的局限性

MySQL查询优化器的局限性关联子查询关联子查询中的WHERE条件中的IN()子查询语句;一般会被改写成为,外部嵌套查询;建议使用内联优化。进行改进UNION的限制MySQL无法将限制条件从外层”下推”到内层。使得限制条件无法应用到内层查询的优化上面。使用UNION时,应该尽量先对部分结果进行筛选,最后再进行结果集合的合并。例如:# 这条查询,会将两个集合查找20条记录进行,添加到临时表中;再筛选20条(SELECT first_name,last_name FROM sakila.acto

2020-10-08 19:15:48 172 1

原创 查询执行的基础

MySQL的一般查询流程如下:6.4.1 MySQL 客户端/服务器通信协议MySQL客户但和服务器中间的通信协议时”半双工”的。因此当查询语句较长时参数”max_allowed_packet”很重要。都是从数据库中的缓存获取数据。可以通过对MySQL的接口,进行设置取消缓冲。MySQL的查询状态(SHOW FULL PROCESSLIST进行查询)Sleep:线程正在等待客户端发送新的请求Query:线程正在执行查询或者正在将结果发送给客户端Locked:该线程正在等待表锁,InnoDB

2020-10-08 19:11:43 222 1

原创 查询性能优化

慢查询基础:优化数据访问查询的最基本的原因是 访问的数据太多。可以通过减少访问的数据两进行优化;具体步骤如下:确认应用程序是否检索大量超过需要是数据–访问行列太多查询不需要的记录:会返回所有值再筛选总是取出全部列重复查询相同的数据:例如再用户评论中–不断地重复执行相同的查询多表关联时返回全部列表:例如# 返回三个表的全部数据列SELECT * FROM sakila.actor INNER JOIN sakila.film_actor USING(actor_id)INNER

2020-10-08 19:06:19 176

原创 MySQL的存储引擎

MySQL的存储引擎参考链接: mysql存储引擎文件系统中,MySQL将每个数据库保存为数据目录下的一个子目录。创建表时,会创建.frm保存表的定义和数据InnoDB是默认事物型引擎,设计用来处理大量的短期(short-liived)事物,短期事物大部分正常提交,很少会被回滚。它支持排序创建索引、删除或者增加索引时不需要复制全表数据、新的支持压缩的存储格式。InnoDB可以通过间隙锁(检索条件必须有索引(没有索引的话,mysql会全表扫描,那样会锁定整张表所有的记录,包括不存在的记录,此时其他事务

2020-10-08 19:02:13 88 1

原创 代码的坏味道

重复代码:设法合二为一同一个类的两个函数还有相同的表达式,这时需要提炼出重复代码。两个互为兄弟的子类内含有相同的表达式,可以提炼相同代码,并放到父类中。如果只是代码间相似,并非完全相同,那么可以将相似部分和差异部分拆开,构成单独的函数。然后你可以使用模板方法的设计模式。如果两个毫不相关的类中出现重复代码,则可以将重复代码提炼成一个函数放到一个独立类中或者只放在某一个类中(总之要放在合适的地方),然后其他类都去调用这个函数。过长函数一条原则:每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东

2020-10-08 18:51:01 241

原创 黑客马拉松比赛复盘

比赛结束,感触是收获还是不少的。从团队其它成员中学到很多东西,比赛是有裁判的,而裁判作为评分的关键,所以需要掌握与了解裁判所想要追求的痛点问题。如果能够直击痛点,那就说明成功了第一步,方向上没有出现错误。方向性的错误可能会导致后续的努力都显得没有那么重要了,所以方向是很重要的。比赛的过程,需要团队成员之间相互配合,一起面对问题,良好的沟通是至关重要的,这一次团队在这一点也是不错的。比赛最后的演示环节,更多的是对于 ppt 的展示,这个环节让我深刻的认识到写好一个 ppt 的能力是有多重要,一个好的口才也是如

2020-10-08 18:45:46 151

原创 第一次敏捷版本复盘

第一次敏捷开发的开发阶段,体会最深的时候,就是时间不够用,一方面要和其他团队对接处理对接问题,一方面要完成当日的开发任务,还有要解决出现的bug问题。当问题接踵而至的时候,应该学会先处理最紧急的事情。然后是合理延后处理优先级没有那么高的事情。还有一方面的原因是,在作出处理之前需要有一个需要有一个比较好的思考,好的思考才会给到一个相对合理的逻辑,不容易出问题。在紧急情况下,也需要对心理状态做一个调整应该要保持一个好的心态。紧张的心理状态,脑袋容易懵,给自己两分钟冷静下,再去思考解决问题。...

2020-10-08 18:44:54 309

原创 查询性能优化

为什么查询速度会慢1.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数,要么让子任务运行得更快2.查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端慢查询基础:优化数据访问1.两个分析步骤:* 确认应用程序是否在检索大量超过需要的数据* 确认MySQL服务器层是否在分析大量超过需要的数据行2.是否向数据库请求了不需要的数据* 查询不需要的记录* 多表关联并返回全部列* 总是取出

2020-08-23 15:20:20 310

原创 重构的原则

何谓重构重构”这个词既可以用作名词也可以用作动词。​ 重构 (名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。​ 重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。​   所以,可能会花一两个小时进行重构(动词),其间会使用几十个不同的重构(名词)。重构的关键在于运用大量微小且保持软件行为的步骤,一步步达成大规模的修改。每个单独的重构要么很小,要么由若干小步骤组合而成。因此,在重构的过程中,的代码很少进入不可工作的状

2020-08-09 19:24:35 340

原创 MySQL中索引的类型

  ​索引(在MySQL中也被叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构。这是索引的基本功能。索引的类型  ​索引很很多种类型,可以为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层实现而不是服务器层。所以不同的存储引擎索引的工作方式不同,也不是所有存储引擎都支持所有类型的索引。即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。B-Tree索引  ​B-Tree索引使用B-Tree数据结构来存储数据。大多数MySQL引擎都支持这种索引,Archive引擎

2020-08-02 21:10:43 125

原创 2020 七月复盘

​   ​回顾七月,在工作上主要是经历了一个完整的0728版本,以及0811版本的一半。完成的结果来看算是完成了需要的基本工作任务,基本上就是这样子平平淡淡的。如果说有什么感觉自己值得高兴的事情,也是有的。在这个月开始思考之前的思考方式是否正确。以前拿到产品的一个需求,并不会考虑,为什么需要这个功能,觉得这个是产品才需要做的事情,而作为一个开发工程师,只需要做好自己的开发工作即可,只需要想着使用什么设计方式来更好地实现这个需求。但是似乎在有些时候,产品给的需求不一定是那么地合理,而是作

2020-08-02 21:06:56 189

原创 InnoDB 存储引擎中的锁

InnoDB 存储引擎中的锁1.什么是锁?​ 锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。​ 并且人们总是认为行级锁总会增加开销。实际上,只有当实现本身会增加开销时,行级锁才会增加开销。InnoDB 存储引擎不需要锁升级,因为一个锁和多个锁的开销是相同的。2.lock 与 latch​ 这里还要区分锁中容易混淆的两个概念 lock 和latch。在数据库中,lock 与 latch 都

2020-07-26 22:23:23 215

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除