置顶推荐

最新发布

经验

MQ 消息队列

1天前 11 浏览 评论

什么是队列?队列(Queue)是先进先出的线性数据结构。和堆栈一样的,队列只允许在后端进行插入操作:进队;在前端进行删除操作:出队。具体应用中通常用链表和数组来实现。什么是消息队列?消息队列,简称MQ(Message Queue)。我们可以简单理解为:把要传输的数据放在队列中。把数据放到消息队列叫做生产,发送消息的系统称为生产者。从消息队列取出数据叫做消费,接受消息的系统称为消费者。有哪些消息模式?JMS规范目前支持两种消息模式:点对点(Point To Point, queue)和发

经验

Redis 缓存数据一致性的理解和方案

1天前 11 浏览 评论

数据库和缓存读写顺序?在了解缓存数据一致之前,我们需要先了解数据库和缓存的读写顺序。最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。命中:程序先从缓存中读取数据,如果命中,则直接返回失效:程序先从缓存中读取数据,如果没有命中,则从数据库中读取,成功之后将数据放到缓存中更新:程序先更新数据库,然后再删除缓存关于更新操作,其实问题比较多。通常疑惑的就几种:1、我们不考虑更新缓存的原因:首先,并发情况下也可能出现数据不是最新的情况。其次,不确定要更新的这个缓存项是否会被经

经验

Redis 缓存需要了解和注意的问题

2天前 23 浏览 评论

Redis缓存想必大家都很熟悉,但是工作中可能使用到的地方都很片面,我们需要有个整体的认识。结合网上查询的和自己的理解,我们也具体总结下。什么是Redis?Redis是一个开源的底层使用C语言编写的key-value存储数据库。可用于缓存、事件发布订阅、高速队列等场景。而且支持丰富的数据类型:string(字符串)、hash(哈希)、list(列表)、set(无序集合)、zset(sorted set:有序集合)。为什么要使用Redis?高并发:单机缓存支持每秒QPS十几万,远远超过数据库;高性

经验

Redis 并发竞争的理解和方案

2天前 11 浏览 评论

Redis的并发竞争问题,主要是发生在并发写竞争。例如:两个连接同时对price进行写操作,同时加10,最终结果我们知道,应该为30才是正确。考虑到一种情况:T1时刻,连接1将price读出,目标设置的数据为10+10 = 20。T2时刻,连接2也将数据读出,也是为10,目标设置为20。T3时刻,连接1将price设置为20。T4时刻,连接2也将price设置为20,则最终结果是一个错误值20。怎么解决?主要思路就是把并行读写改成串行读写的方式,从而来避免资源竞争。| 分布式锁我们使用

优化

Mysql 优化

3天前 18 浏览 评论

MYSQL优化主要分为以下四大方面:架构:主从复制,读写分离,负载均衡。设计:存储引擎,字段类型,范式与逆范式功能:索引,缓存,分区分表。SQL:慢查询,经验。| 服务器架构服务器的架构,通常是由多台服务器通过负载均衡组合成的服务器集群。主从复制:Mysql服务器内部支持复制功能,仅仅需要通过简单配置即可,通常是一主多从的典型结构:主服务器负责写数据,从服务器负责读数据。读写分离、负载均衡:开启主从复制后,PHP不再操作Mysql数据库服务器,而是去操作读写分离、负载均衡服务器,只要服

经验分享

PHP PSR规范

3天前 3 浏览 评论

什么是PSR?PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。官网镇楼:https://www.php-fig.org/psr/PSR-0:自动加载标准,自2014-10-21起,PSR-0已被标记为已弃用。PSR-4现在被推荐作为替代品。PSR-1:基本编码标准PSR-2:编码风格指南,已弃用,由PSR-12扩展和替换。PSR-3:日志记录器接口PSR-4:自动加载标准PSR-5:PHPDo

经验

RESTful API的理解

1星期前 25 浏览 评论

说到 RESTful API,大部分人心中是有那么点概念的,但是让具体说说的话,又只能说出个大概,无非就是:前后端完全分离;无状态;统一数据格式返回等。这样的理解是片面的,这样的API勉强也算是REST架构设计,但是实际上可能没有满足REST约束条件和设计原则。所以参考网上简单总结了下:什么是REST?REST - Representational State Transfer,即:表述性(或表现层)状态转移。由于REST是面向资源的,全称 Resource&nbs

经验

浏览器端和WEB服务端间的通信

2星期前 28 浏览 评论

我们来了解下平时客户端请求接口的时候,是如何进行通信的,看下其过程:| 浏览器请求WEB服务端流程1、浏览器解析URL获取服务器主机名2、DNS将服务器主机名转换成其IP3、浏览器解析URL端口4、浏览器建立与WEB服务器的TCP连接5、浏览器向服务器发送HTTP报文6、服务器向浏览器回送HTTP报文7、关闭连接,浏览器显示数据| WEB服务端工作流程1、建立连接,接收客户端连接2、接收请求,读取HTTP报文3、处理请求,对报文进行解释,并采取行动。如:根据后缀判断该请求是P

Linux基础

Linux 常用指令

1个月前 50 浏览 评论

时间长了经常忘记某些命令,被问到了想不起来比较尴尬,这里想到就记录下,用作自己复习吧:| sedsed 可依照脚本的指令来处理、编辑文本文件。-n 仅显示script处理后的结果。# 时间段内的所有日志 sed -n '/2020-02-18 18:21:32/,/2020-02-18 18:36:06/p' error.log # 时间段内关键字为'keyword'的所有日志 sed

经验

Redis 缓存穿透、缓存雪崩、缓存击穿的理解和解决方案

1个月前 54 浏览 评论

今天被问到缓存的一些问题,缓存穿透、缓存雪崩、缓存击穿这些专属名词还真没了解过。后来了解了下,这些的确是我们必须考虑的,之前没有接触过的确是不应该的,好在赶紧了解下。总结情况如下:| 缓存流程正常的缓存流程一般是这样的:1、发起请求->缓存存在->返回正常数据->End2、发起请求->缓存不存在->数据库存在->更新缓存->返回正常数据->End3、发起请求->缓存不存在->数据库不存在->返回空->End正常的用