自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 如何理解Mysql中的锁?

本文以一个线上问题为背景,对 Mysql 中的各种锁机制进行了详细的总结,分析了各个锁的加锁时机和具体使用场景,其中特别要注意间隙锁的使用,因间隙锁和间隙锁之间不互斥,当多个事务之间并发执行时很容易形成死锁asc。

2024-03-28 09:02:25 20

转载 mysql每天有1千万数据 怎么办?分表吗 有什么好的方案。?

分库是指在表数量不变的情况下对库进行切分。举例:如下图,数据库A 中存放了 user 和 order 两张表,将两张表切分到两个数据库中,user表放到 database A,order表放到 database B。两种方案的核心思想都是类似的,都是将分库分表的逻辑进行抽象封装,业务无需关注分库分表的实现细节,只需按照规则进行简单的配置和开发,就能正常的使用分库分表。两者各有优劣,客户端模式比较轻量,性能也会比较好;代理模式需要部署额外的服务器,所以对于该服务器的稳定性和性能等都需要保障。

2024-03-26 11:54:39 30

转载 玩转SQL执行顺序就是这么简单!

关键字包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY等,它们共同构成了SQL查询的结构。SQL查询的总体执行顺序是按照FROM、WHERE、GROUP BY、HAVING、SELECT、DISTINCT、ORDER BY、LIMIT/OFFSET的顺序进行。通过遵循正确的执行顺序,结合实际案例的代码示例,可以更好地理解和优化SQL查询,确保数据库操作的准确性和效率。这确保了查询从指定表中选择数据,经过适当的筛选和分组,最终以期望的形式呈现结果。(仅针对DQL语句)

2024-02-23 14:47:12 44 1

转载 SQL中碰到的坑之GROUP BY

在上面的例子中,employee_name列没有被包含在聚合函数中,也没有在GROUP BY子句中列出,导致返回的employee_name并非每个部门的最大工资对应的员工。要解决这个问题,确保SELECT语句中的列要么是聚合函数的结果,要么在GROUP BY子句中列出。在上面的例子中,实际上有两个坑,一个是坑一中所说的,另外由于SELECT语句中列的顺序与GROUP BY子句中的不同,导致结果与预期不一致。在GROUP BY子句中,列的顺序并不重要,但在SELECT语句中,列的顺序会影响结果的显示顺序。

2024-02-23 14:45:14 55

转载 8个必知必会的SQL小技巧!

通过条件聚合,你可以在聚合函数中使用条件语句。通用表格表达式(CTE)可用于更清晰、模块化地构建复杂的查询。使用PIVOT关键字,你可以将行数据转换为列。使用UNION操作符,你可以合并多个查询结果。使用联结是优化查询的重要手段之一。子查询可以嵌套在主查询中,增强查询的灵活性。不过,UNION慎用,它自带去重功能。在不需要去重时,可以考虑用UNION ALL。除了INNER JOIN,还有LEFT JOIN、FULL JOIN、后两个如何使用,可以查看下方链接哦。不过要慎用,影响查询性能。

2024-02-23 14:44:08 26

转载 基于 Nginx 实现一个灰度上线系统

新版本代码的上线基本都会用灰度系统,可以逐步放量的方式来保证上线过程不会出大问题,也可以用来做产品 AB 实验。我们可以用 nginx 实现这样的功能。nginx 有反向代理的功能,可以转发请求到应用服务器,也叫做网关层。我们可以在这一层根据 cookie 里的 version 字段来决定转发请求到哪个服务。在这之前,还需要按照比例来给流量染色,也就是返回不同的 cookie。不管灰度系统做的有多复杂,底层也就是流量染色、根据标记转发流量这两部分,我们完全可以自己实现一个。

2023-09-12 09:17:40 100

转载 一次非常有意思的 SQL 优化经历:从 30248.271s 到 0.001s

mysql嵌套子查询效率确实比较低可以将其优化成连接查询连接表时,可以先用where条件对表进行过滤,然后做表连接(虽然mysql会对连表语句做优化)建立合适的索引,必要时建立多列联合索引学会分析sql执行计划,mysql会对sql进行优化,所以分析执行计划很重要。

2023-09-12 09:09:37 92

转载 10张图,完全掌握 MySQL 事务隔离级别

MySQL 的 InnoDB 引擎才支持事务,其中可重复读是默认的隔离级别。读未提交和串行化基本上是不需要考虑的隔离级别,前者不加锁限制,后者相当于单线程执行,效率太差。读提交解决了脏读问题,行锁解决了并发更新的问题。并且 MySQL 在可重复读级别解决了幻读问题,是通过行锁和间隙锁的组合 Next-Key 锁实现的。

2023-08-10 13:52:04 116

原创 使用PHP和Redis实现简单秒杀功能

在Redis中,可以使用List数据类型来存储秒杀活动信息。每个活动有一个唯一的键,值为一个字符串,包含活动的开始时间和结束时间。还可以使用另一个List来存储已经结束的活动信息,方便后续的处理。如果请求有效,则从Redis中扣除商品的库存,并将该请求信息存储到Redis中。在秒杀活动结束后,需要将该活动从活动中列表中移除,并将已经结束的活动的请求信息从Redis中删除。在PHP中,可以使用Redis扩展来连接Redis服务器。需要在PHP文件中包含Redis扩展,并创建一个Redis连接对象。

2023-08-04 11:17:29 926

转载 如何从0到1构建一个稳定、高性能的 Redis 集群?(附16张图解)

好了,我们来总结一下,我们是如何一步步构建一个稳定、高性能的 Redis 集群的。首先,在使用最简单的单机版 Redis 时,我们发现当 Redis 故障宕机后,数据无法恢复的问题,因此我们想到了「数据持久化」,把内存中的数据也持久化到磁盘上一份,这样 Redis 重启后就可以从磁盘上快速恢复数据。在进行数据持久化时,我们又面临如何更高效地将数据持久化到磁盘的问题。之后我们发现 Redis 提供了 RDB 和 AOF 两种方案,分别对应了数据快照和实时的命令记录。

2023-07-19 15:44:00 102

转载 一文搞懂TCP、HTTP、Socket、Socket连接池

如果想要使传输的数据有意义,则必须使用到应用层协议比如Http、Mqtt、Dubbo等。基于TCP协议上自定义自己的应用层的协议需要解决的几个问题:心跳包格式的定义及处理报文头的定义,就是你发送数据的时候需要先发送报文头,报文里面能解析出你将要发送的数据长度你发送数据包的格式,是json的还是其他序列化的方式下面我们就一起来定义自己的协议,并编写服务的和客户端进行调用:定义报文头格式:length:000000000xxxx;xxxx代表数据的长度,总长度20,举例子不严谨。

2023-05-29 09:06:46 91

转载 SQL 优化 20 连问

一、查询SQL尽量不要使用select *,而是具体字段1、反例2、正例3、理由节省资源、减少网络开销。可能用到覆盖索引,减少回表,提高查询效率。

2023-05-04 15:56:39 61

转载 1.8w 字的 SQL 优化大全

索引就是帮助MySQL高效获取数据的一种【数据结构】。索引是一种树结构,MySQL中一般用的是【B+树】。

2023-05-04 15:51:59 80

转载 如何保障 MySQL 和 Redis 的数据一致性?

对于这种方案,看看就行,反正我是不会用,太 Low 了,风险也不可控。

2023-04-20 17:30:21 299

转载 300 万数据导入导出优化方案,从 80s 优化到 8s

因为你所创建的book,Sheet,row,cell等在写入到Excel之前,都是存放在内存中的(这还没有算Excel的一些样式格式等等),可想而知,内存不溢出就有点不科学了!具体我没有看网上其他人的测试情况,这东西一般也很少有人愿意测试,不过这个速度对于我当时解决公司大数据的导入和导出已经足够,当然公司的业务逻辑很复杂,数据量也比较多,表的字段也比较多,导入和导出的速度会比现在测试的要慢一点,但是也在人类能接受的范围之内。在2003以前Excel的版本后缀还是.xls。它的优点是 不会报内存溢出。

2023-03-20 14:52:39 268

转载 面试官:从 MySQL 读取 100w 数据进行处理,应该怎么做?

分库分表场景下,单个表的查询结果集虽然不大,但如果某个查询跨了多个库多个表,又要做结果集的合并、排序等动作,依然有可能撑爆内存;当查询百万级的数据的时候,还可以使用游标方式进行数据查询处理,不仅可以节省内存的消耗,而且还不需要一次性取出所有数据,可以进行逐条处理或逐条取出部分批量处理。如果没有流式查询,我们想要从数据库取 100w 条记录而又没有足够的内存时,就不得不分页查询,而分页查询效率取决于表设计,如果设计的不好,就无法执行高效的分页查询。流式查询:内存会保持稳定,不会随着记录的增长而增长。

2023-03-20 14:51:24 177

转载 经典的 Shell 十三问

若从技术的细节来看,shell会依据IFS(Internal Field Seperator) 将command line所输入的文字拆解为"字段"(word/field)。当我们执行一个shell script时,其实是先产生一个sub-shell的子进程, 然后sub-shell再去产生命令行的子进程。环境变量只能从父进程到子进程单向传递。我们可用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案。我们可用 < 来改变读进的数据信道(stdin),使之从指定的档案读进。

2022-11-15 10:09:52 167

原创 fastadmin自定义导出——带查询

【代码】fastadmin自定义导出——带查询。

2022-09-29 17:59:06 2509

转载 消息队列经典十连问

1. 什么是消息队列你可以把消息队列理解为一个使用队列来通信的组件。它的本质,就是个转发器,包含发消息、存消息、消费消息的过程。最简单的消息队列模型如下:我们通常说的消息队列,简称MQ(Message Queue),它其实就指消息中间件,当前业界比较流行的开源消息中间件包括:RabbitMQ、RocketMQ、Kafka。2. 消息队列有哪些使用场景。有时候面试官会换个角度问你,为什么使用消息队列。你可以回答以下这几点: 应用解耦 流量削峰 异步处理

2022-03-18 14:42:13 98

转载 MySQL的主从

前言金三银四面试的时候,面试官经常会问MySQL主从。今天就跟大家聊聊MySQL的主从。 数据库主从概念、优点、用途 数据库主从复制原理 主主、主从、主备的区别 MySQL是怎么保证主从一致的 数据库主从延迟的原因与解决方案 聊聊数据库的高可用方案 1. 数据库主从概念、优点、用途主从数据库是什么意思呢,主是主库的意思,从是从库的意思。数据库主库对外提供读写的操作,从库对外提供读的操作。数据库为什么需要主从架构呢? 高可用,实

2022-03-15 09:24:06 18345 2

转载 如何设计一个通用的权限管理系统?说的太详细了

一个系统,如果没有安全控制,是十分危险的,一般安全控制包括身份认证和权限管理。用户访问时,首先需要查看此用户是否是合法用户,然后检查此用户可以对那些资源进行何种操作,最终做到安全访问。身份认证的方式有很多种,最简单的就是直接用户名密码,还有业内比较通用的方式CAS方式登陆等;授权的框架也很多,比如OAuth2,Shiro等。本文首先会讲解一下CAS的概念,以及基于角色的权限管理模型(RBAC)的概念,接着进行数据表的设计,最后讲解如何利用Shiro进行权限管理。一、CAS身份认证集中式认证服务(英语

2022-01-26 11:20:00 5534

转载 Nginx 代理解决跨域问题分析

分析前准备:前端网站地址:http://localhost:8080服务端网址:http://localhost:59200首先保证服务端是没有处理跨域的,其次,先用postman测试服务端接口是正常的当网站8080去访问服务端接口时,就产生了跨域问题,那么如何解决?接下来我把跨域遇到的各种情况都列举出来并通过nginx代理的方式解决(后台也是一样的,只要你理解的原理)。跨域主要涉及4个响应头: Access-Control-Allow-Origin 用于设置允许跨域请求源地址

2022-01-25 17:20:30 2547 1

转载 数据库主库与从库的一致性问题

问:常见的数据库集群架构如何?一主多从,主从同步,读写分离。如上图:(1)一个主库提供写服务;(2)多个从库提供读服务,可以增加从库提升读性能;(3)主从之间同步数据;画外音:任何方案不要忘了本心,加从库的本心,是提升读性能。问:为什么会出现不一致?主从同步有时延,这个时延期间读从库,可能读到不一致的数据。如上图:(1)服务发起了一个写请求;(2)服务又发起了一个读请求,此时同步未完成,读到一个不一致的脏数据;(3)数据库主从同步最后才完成;画

2021-12-29 09:14:11 949

转载 吃透 MQ

本文主要讲解 MQ 的通用知识,让大家先弄明白:如果让你来设计一个 MQ,该如何下手?需要考虑哪些问题?又有哪些技术挑战?有了这个基础后,我相信后面几篇文章再讲 Kafka 和 RocketMQ 这两种具体的消息中间件时,大家能很快地抓住主脉络,同时分辨出它们各自的特点。对于 MQ 来说,不管是 RocketMQ、Kafka 还是其他消息队列,它们的本质都是:一发一存一消费。下面我们以这个本质作为根,一起由浅入深地聊聊 MQ。01 从 MQ 的本质说起将 MQ 掰开了揉碎了来看,都是「一..

2021-11-28 15:50:02 86

转载 缓存和数据库一致性问题,看这篇就够了

如何保证缓存和数据库一致性,这是一个老生常谈的话题了。但很多人对这个问题,依旧有很多疑惑: 到底是更新缓存还是删缓存? 到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库? 为什么要引入消息队列保证一致性? 延迟双删会有什么问题?到底要不要用? ... 这篇文章,我们就来把这些问题讲清楚。这篇文章干货很多,希望你可以耐心读完。引入缓存提高性能我们从最简单的场景开始讲起。如果你的业务处于起步阶段,流量非常小,那无论是读请求还

2021-11-27 18:35:08 326

转载 MySQL面试夺命连环24问

1、MySQL 逻辑架构分层把 MySQL 分成三层,跟客户端对接的连接层,真正执行操作的服务层,和跟硬件打交道的存储引擎层。Mysql逻辑架构图主要分三层:(1)第一层负责连接处理,授权认证,安全等等(2)第二层负责编译、语法分析并优化SQL(3)第三层是存储引擎。连接层我们的客户端要连接到 MySQL 服务器 3306 端口,必须要跟服务端建立连接,那么管理所有的连接,验证客户端的身份和权限,这些功能就在连接层完成。服务层连接层会把 SQL 语句交给服务层,这里面...

2021-11-07 15:34:23 220

转载 最多能创建多少个 TCP 连接?

我是一个 Linux 服务器上的进程,名叫小进。老是有人说我最多只能创建 65535 个 TCP 连接。我不信这个邪,今天我要亲自去实践一下。我走到操作系统老大的跟前,说:"老操,我要建立一个 TCP 连接!"老操不慌不忙,拿出一个表格递给我,"小进,先填表吧"我一看这个表,这不就是经典的socket 四元组嘛。我只有一块网卡,其 IP 地址是123.126.45.68,我想要与110.242.68.3的 80 端口建立一个 TCP 连接,我将这些信息填写在了表中。...

2021-07-29 17:39:29 219

原创 递归算法 ---PHP

1,通过递归实现阶乘function multi($n){ if($n == 0){ return 1 ;//终止递归 } $value = $n * multi($n-1); return $value;}2,通过递归,实现斐波那契数列function Fib($n){ if($n ==1||$n==0){ return 1;//终止递归 } $value = Fib($n-1)+Fib($n-2)

2021-07-16 15:02:26 232 2

转载 order by 详解

日常开发中,我们经常会使用到order by,亲爱的小伙伴,你是否知道order by 的工作原理呢?order by的优化思路是怎样的呢?使用order by有哪些注意的问题呢?本文将跟大家一起来学习,攻克order by~一个使用order by 的简单例子假设用一张员工表,表结构如下:CREATETABLE`staff`(`id`BIGINT(11)AUTO_INCREMENTCOMMENT'主键id',`id_card`VARCHAR(20)NOT...

2021-07-15 13:33:40 6970

转载 mysql 复合索引(联合索引) a b c的使用

本博文中所用数据版本为mysql 5.7.28通过命令行查看 mysql版本信息如下:~ mysql --versionmysql Ver 14.14 Distrib 5.7.28, for macos10.14 (x86_64) using EditLine wrapper缘由:经常面试被问到 符合索引 (a,b,c) 这三个字段组成的符合复合(联合索引)是否使用的问题。网上答案 通常这样解释复合索引(联合索引)情况下a b c 三个字段在用到 where 条件为a &&

2021-07-07 11:25:09 6306 2

转载 这几种技巧,能有效帮你提升接口查询速度

1. MySQL查询慢是什么体验?大多数互联网应用场景都是读多写少,业务逻辑更多分布在写上。对读的要求大概就是要快。那么都有什么原因会导致我们完成一次出色的慢查询呢?1.1 索引在数据量不是很大时,大多慢查询可以用索引解决,大多慢查询也因为索引不合理而产生。MySQL 索引基于 B+ 树,这句话相信面试都背烂了,接着就可以问最左前缀索引、 B+ 树和各种树了。说到最左前缀,实际就是组合索引的使用规则,使用合理组合索引可以有效的提高查询速度,为什么呢?因为索引下推。如果查询条件包含在了

2021-07-06 14:04:32 475

转载 MySql 的隔离级别是什么

首先要明白什么是事务?事务是程序中一系列严密的操作,所有的操作必须完成,否则在所有的操作中所做的所有的更改都会被撤销。也就是事务的原子性,一个事务中的一系列的操作要么全部成功,要么就是失败。事务的结束有两种,当事务中所有的步骤全部成功执行的时候,事务提交。如果其中一个步骤失败,将会发生回滚操作,撤销到事务开始之前的所有的操作。事务的ACID事务具有四个特征 原子性 事务是数据库的逻辑工作单位,事务中包含多个操作,要么都做完,要么都不做 隔离性(隔离性也是本文...

2021-06-11 18:33:25 332

原创 laravel中外部定义whereIn的用法和where中使用in

原因事情是这样的,新的项目中使用laravel作为开发框架,在使用查询构造器的时候就出现了这个问题。我在查询的时候需要使用 ,结果发现 下面这种使用方式是错误的,所以就花时间研究了一下。$where[] = ['id','in',[1,2]];官方给出的答案是使用:whereIn()我很不解,十分不解,所以就在网上搜了搜资料,有人指出如果想再where中使用in 可以使用这种方法:$whereOr[] = [Db::Raw("id in (" . join(',',[1,2,3]) . .

2021-06-01 15:13:00 2832

转载 Redis数据库——主从复制、哨兵模式、集群

一、Redis主从复制1、Redis主从模式介绍通过持久化功能,redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,因为持久化会把内存中的数据保存到硬盘上,重启会从硬盘上加载数据,但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同的服务器上,这样即使有一台服务器出现故障其他服务器依然可以继续提供服务,为此,redis提供了复制(replication)功能,可以实现当一台数据库中的数据更

2021-05-27 18:06:16 100

转载 php常见方法封装

一、curl的get请求function get_curl($url, $timeout = 5) { $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true ); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPE...

2021-05-27 17:02:42 399

转载 吊炸天的 Docker 图形化工具 Portainer,必须推荐给你

之前操作Docker的时候,一直使用的是命令行的形式。命令行虽说看起来挺炫酷,但有时候还是挺麻烦的。今天给大家推荐一个Docker图形化工具Portainer,轻量级又好用,希望对大家有所帮助!简介Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。GitHub 地址https://github.com/portainer/portainer安装直接使用Docker来安装Portainer是非常方便的,仅需要两步即可完

2021-05-26 15:32:38 149

转载 Nginx 五大常见应用场景

Nginx 是一个很强大的高性能 Web 和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx 是 Apache 服务不错的替代品。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力在同类型的网页服务器中表现较好,因此国内知名大厂例如:淘宝,京东,百度,新浪,网易,腾讯等等都在使用 Nginx 网站。在我们的日常工作学习中,我们会该如何去优化自己的 Nginx 服务器?遇到以下问题我们该如何处理呢?一、自定义返回客户端的404错误页面1)优化前,客户端使用浏

2021-05-04 18:21:49 875

转载 php对接金蝶系统

金蝶系统是强大的财务系统,可对公司的财务进行整理,所以有的时候需要去我php系统来对接金蝶系统,为金蝶系统生成各种单据。下面是php对接金蝶的流程。  各种方法已经封装好,直接可以调用就行了。  1.如果是用的TP框架,请将下面的方法放在common.php中,方便系统调用。 1 /*****=======================================对接金蝶需要用到的方法==================================================

2021-04-20 16:49:27 1283

转载 二维码扫码登录是什么原理

在日常生活中,二维码出现在很多场景,比如超市支付、系统登录、应用下载等等。了解二维码的原理,可以为技术人员在技术选型时提供新的思路。对于非技术人员呢,除了解惑,还可以引导他更好地辨别生活中遇到的各种二维码,防止上当受骗。二维码,大家再熟悉不过了购物扫个码,吃饭扫个码,坐公交也扫个码在扫码的过程中,大家可能会有疑问:这二维码安全吗?会不会泄漏我的个人信息?更深度的用户还会考虑:我的系统是不是也可以搞一个二维码来推广呢?这时候就需要了解一下二维码背后的技术和逻辑了!二维码最常用的场景

2021-04-13 17:44:49 134

转载 PHP JSON_decode 返回为 null 问题

解决方案问题原因因为 API 是 aspx、ashx, 可能会有 BOM (回传有中文), 于是使用此篇 "PHP 判断 / 移除 BOM (UTF-8)" 的 方法 先將 $json_data 过滤一次,再来解析就行了

2021-04-13 17:40:00 376

空空如也

空空如也

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

TA关注的人

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