![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
性能优化专题
文章平均质量分 75
性能调优大牛职场必备技能
1、Mysql性能调优
2、Redis高级
3、数据结构和算法
D老歪
有效的程序员不应该浪费时间用于程序调试,他们应该一开始就不要把故障引入
展开
-
线程、进程、协程
一、进程定义:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础;“执行中的程序”进程是线程的容器;进程是程序的实体;特征:动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的;并发性:任何进程都可以同其他进程一起并发执行独立性:进程是一个独立运行的基本单位,同时也是系统分配资源和调度的独立单位;异步性:由于进程间的相互制约,使进程具有执行的间断性;进程按各自独立的、不可预知的速度向前推进;切换: 进程切原创 2022-02-25 17:28:55 · 238 阅读 · 1 评论 -
【面试题】计算机网络基础
一、在浏览器中输入url地址到显示主页的过程大部分人的回答:1、DNS域名解析;[域名->IP地址]2、TCP链接;3、发送HTTP请求;4、服务器处理请求并返回HTTP报文;5、浏览器解析渲染页面;6、连接结束;如果你是面试官,听到这样的回答你会怎么想?觉得面前这个面试者没啥亮点吧!!所以我们还是尽可能的详细拆分每一个步骤DNS域名解析以www.baidu.com举例;首先在本地域名服务器中查询IP地址,如果没有找到的情况下,本地域名服务器会像根域名服务器发送一个请求,如果根域原创 2022-02-24 22:23:12 · 672 阅读 · 0 评论 -
【面试题】数据结构和算法
一、谈一谈,id全局唯一且自增,如何实现?SnowFlake算法,是Twitter开源的分布式id生成算法。核心思想:使用一个64bit的long型的数字作为全局唯一id。【在分布式系统中的应用十分广泛】SnowFlake id生成规则第一位标识符:0,正数是0,负数是1;第2-42位标识符(41位标识符):时间戳:当前时间-开始时间 的值;第43-52位标识符(10位机器标识码):5位机房ID+5位机器ID;第53-64位标识符:毫秒内的计数,每毫秒内生成的id的序号;SnowF原创 2022-02-21 11:01:37 · 523 阅读 · 0 评论 -
MySQL 面试之基础知识篇
一、概念MySQL是一个传统的RDBM数据库,也是关系型数据库。广泛应用于OLTP场景;拓展OLTP:联机事务处理,是传统的关系型数据库的主要应用,用于基本的事务处理;【日常处理】OLAP:联机分析处理,数据仓库系统的主要应用;支持复杂的分析操作,侧重决策支持,并且提供易懂的查询结果;【数据分析】...原创 2022-01-28 10:40:32 · 1514 阅读 · 0 评论 -
MySQL 面试之性能调优篇
一、MySQL调优思路整天大概主要有三个维度:SQL语句优化:包括索引优化、特定查询优化;对频率控制优化:包括读缓存,写缓冲分库分表;SQL语句优化:应该是面试或者我们写sql语句中最常考虑的点慢查询日志:用来记录MySQL在响应时间超过阀值的语句,这个值通常为10s;慢查询日志是默认关闭的,我们需要手动开启;执行计划explain:可以获取MySQL语句的执行计划,包括使用到的索引,扫描行数,表如何链接等信息都会显示;分库分表随着业务持续扩张,单表新能一定会达到极限,分表是把一个原创 2022-01-28 10:40:23 · 1315 阅读 · 0 评论 -
Redis 分区
分区:怎么将数据分布到多个redis实例定义:分区就是将你的数据分发到不同redis实例上的一个过程,每个redis实例只是你所有key的一个子集;根据要映射的不同系统来决定用户映射到哪个Redis实例。目的:1、分区可以让Redis管理更大的内存,Redis可以使用所有机器的内存。如果没有分区,你只能使用一台机器的内存。2、分区使Redis的计算能力通过简单的增加计算机得到成倍提升,Redis的网络宽带也会随着计算机和网卡的增加而成倍增长;方法:1、范围分区:将不同范围的对象映射到不同Redi原创 2021-12-30 16:48:24 · 376 阅读 · 0 评论 -
Redis 大批量数据插入
前言如果我们此时需要往redis导入大量数据,如果能快速操作??一行一行的命令加入的话耗费往返时间使用管道可以节省往返时间,但是会占用很多内存,即使发送大量的命令,也是要分批次的处理才可以;我们先创建一个redis命令集文件,将所有要设置的命令写在这个文件里,最后统一执行这个文件就可以;记:这个redis数据集文件,记得转码;linux请先确保有转码工具,没有的话请brew install unix2dos转码指令:unix2dos 文件名例如:我们要生成一个’keyN’->.原创 2021-12-22 11:16:46 · 3442 阅读 · 0 评论 -
Redis 持久化
一、Redis 持久化方式:RDB 持久化:能够在指定的时间间隔对你的数据进行快照存储。AOF持久化:记录每次对服务器的写的操作,当服务器重启的时候会重新执行这些命令来回复原始的数据,AOF命令以redis协议追加保存每次到写的操作到文件末尾;Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大;可以同时开启两种持久化方式当redis重启的时候会优先载入AOF文件来回复原始的数据;在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整;...原创 2021-12-20 16:26:57 · 422 阅读 · 0 评论 -
Redis 事务
Redis的事务是非原子性的事务中所有命令都会序列化,按顺序地执行;事务中单个命令时具有原子性的一、用法事务执行流程1、开启事务:MULTI命令用于开启一个事务;2、命令入队:客户端继续像服务器发送任意多跳命令,这些命令不会立即执行,而是放在一个队列中;3、执行事务:EXEC命令执行所有在队列中的命令。取消事务队列:DISCARD放弃执行事务;//事务开始到执行127.0.0.1:6379> multiOK127.0.0.1:6379> set k1 v1QU.原创 2021-12-03 16:52:42 · 930 阅读 · 0 评论 -
Redis 过期Expires
Redis对存储值得过期处理实际上是针对该值得键(key)处理的,即时间的设置也是设置key的有效时间设置key的过期时间,超过时间后,将会自动删除key;一、设置过期时间expire key time(以秒为单位):最常见的方式pexpire key time(以毫秒为单位)setex key seconds value :字符串独有的方式;设置值并且给过期时间,如果key已经存在,setex命令将会替换旧值;expireat key timestamp 将key的.原创 2021-11-29 18:37:36 · 4973 阅读 · 0 评论 -
Redis Pub/Sub 发布/订阅模式
一、概念:redis 是一个快速、稳定的发布/订阅的信息系统;发布者不是计划发送消息给特定的接受者,而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅;订阅者对一个或者多个频道感兴趣,只需接受感兴趣的消息,不需要知道什么样的发布者发布的;发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑特点1、客户端执行订阅以后,除了可以继续订阅,取消订阅,PING命令和结束连接外,不能执行任何其他操作,客户端将阻塞直到订阅通道上发布消息的到来。2、发布的消息在Redis系统中不存原创 2021-11-24 15:18:21 · 1257 阅读 · 0 评论 -
Redis Pipelining管道
一、请求和响应发送请求的流程:1、客户端向服务端发送一个请求,并监听Scoket返回,通常是以阻塞模式,等待服务端响应。2、服务端处理命令,并将结果返回给客户端。无论网络如何延时或者其他的阻塞发生,数据包总是能从客户端到达服务器,并从服务器返回数据回复客户端。这个时间称为RTT(往返时间)如果客户端需要在一个批处理中执行多次请求时很容易影响性能;每秒的请求数也会少之又少;所以就有了下面的方法,用来改善这种情况;二、Redis 管道 ------ Pipelining定义:一次请求/响应原创 2021-11-12 17:50:42 · 735 阅读 · 0 评论 -
Redis(Remote Dictionary Server)自我介绍
一、定义Redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。支持的数据类型:字符串(string)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)与范围查询, bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询;Redis内置了复制(replication),LUA(Lua scripting)脚本,LRU驱动事件(LRU eviction),事务(transactions) 和不同原创 2021-10-30 13:56:22 · 126 阅读 · 0 评论 -
【超长文】 耗时三周整理出来的Redis的指令 (全网最全)、沉下心,提起笔
一、指令单个键值对增删改查操作set->key 不存在则新增,存在则修改set key valueget->key 获取对应key的value,不存在返回(nil)get keydel->key 删除指定的key(key可以是多个)del key [key……]示例:127.0.0.1:6379> set name hahhaOK127.0.0.1:6379> get name"hahha"127.0.0.1:6379>原创 2021-10-30 13:48:40 · 303 阅读 · 0 评论 -
Mysql 一条sql查询语句是如何执行的
接下来的有关mysql基础架构的文章参照物来自于极客时间的Mysql实战45讲Mysql 其实是My ESS QUE ELL的简写Mysql的基础架构示意图:大体看的出来:mysql分两部分,Server层和存储引擎层;Server层包括的东西就比较多了,除了分析器优化器等,还有内置函数,触发器等都在这一层;而存储引擎层则是负责数据的存储和读取第一部分:连接器连接器就是负责跟客户端建立链接,获取权限,维持和管理链接;注意:-p和密码之间没有空格 mysql -h 192..原创 2021-08-04 22:13:53 · 130 阅读 · 0 评论 -
详解Mysql 窗口函数 解决排名问题yyds
最近这段时间在刷leetcode数据库的题,在题解中发现窗口函数可以解决很多排名的问题but before this ……我并不知道有<窗口函数>这样的概念。可能是一直再用mysql5.6的版本,没有对mysql8的版本有过了解^^^ 简言之:窗口函数只有mysql8以上的版本才支持so make a simple understanding of this...原创 2021-08-03 16:57:53 · 562 阅读 · 0 评论 -
图解SQL语句:分组查询TOP N
力扣184题 & 力扣185题【题目】184、部门工资最高的员工信息,name ,salary ,department_name185、部门工资前三高的员工 表emplyee:id name salary departmentid 1 joe 7000 1 2 jim 8500 1 3 henry 8000 2 4 sam 6000 2 5 max...原创 2021-07-30 22:33:09 · 654 阅读 · 0 评论 -
图解SQL语句:经典排名问题+TOP N
力扣178题 分数排名问题题目:如果两个分数相同,则两个分数排名(Rank)相同,平分后的下一个名次应该是下一个连续的整数值值。换句话说,名次之间不应该有“间隔”。id salary 1 100 2 89 3 84 4 89 5 68 根据推断:所得到的值应该是id salary rank 1 100 1 2 89 2 4 89 2 3 84 3 ...原创 2021-07-29 21:50:44 · 609 阅读 · 0 评论 -
图解SQL面试题:如何多表查询 ?
力扣 SQL175题题目:表1:personpersonid firstname lastname 1 jia duan 2 san zhang 3 si li 表二:addressaddressid personid city state 1 1 山西 1 2 3 北京 1 问题:无论person是否有地址信息,都需要基于上述两表提供person一下信息:..原创 2021-07-28 17:44:56 · 493 阅读 · 0 评论 -
图解sql面试题:查找TOPN的数据
力扣SQL 第176题题目:求第二高的薪水employee表idsalary1100220033004300分析结果:查询结果应该最后返回的是200作为第二高的薪水。如果不存在则为null【解题思路】1:考虑到成绩可能有重复的值,所以我们第一就是使用distinct去重;2:思路一、可以先求出最大的值,然后再找出小于这个最大值的列即为第二高的薪水;如下:select max(distinct salary) from emplyee;原创 2021-07-27 16:16:02 · 240 阅读 · 0 评论