自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多路I/O复用模型,非阻塞IO

下面举一个例子,模拟一个tcp服务器处理30个客户socket。 假设你是一个监考老师,让30个学生解答一道竞赛考题,然后负责验收学生答卷,你有下面几个选择:第一种选择:按顺序逐个验收,先验收A,然后是B,之后是C、D。。。这中间如果有一个学生卡住,全班都会被耽误。 这种模式就好比,你用循环挨个处理socket,根本不具有并发能力。 第二种选择:你创建30个分身,每个分身检查一个学生的答案是否正确。 这种类似于为每一个用户创建一个进程或者线程处理连接。 第三种选择,你站在讲台上等,谁解答完谁举手。这

2021-06-03 10:21:23 308

原创 PHP二维数组排序 array_multisort

对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下:array_multisort(array1,sorting order, sorting type,array2,array3..)是对多个数组或多维数组进行排序的函数。array1 必需。排序数组键值数组。sorting order 可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。sorting type 可选。规定排序类型。可能的值是SORT_...

2021-05-29 10:59:14 707

原创 PHP实现获取文件后缀名的几种常用方法

方法1:function get_file_type($filename){ $type = substr($filename, strrpos($filename, ".")+1); return $type;}方法2:function get_file_type($filename){ $type = pathinfo($filename); $type = strtolower($type["extension"]); return $type;}方法.

2021-05-29 10:53:41 899

原创 Laravel中使用Redis

先在composer里安装(输入这条命令)1.composer require predis/predis2.控制器里引入Redisuse Illuminate\Support\Facades\Redis;//选择一个redis的库Redis::select(9);//如果redis里有数据($goods)直接从redis里取数据 如果没有从数据库里去取数据再存到redis里一份if(Redis::exists('goods')){//反序列化 得到数据$goods ...

2021-05-29 10:51:54 118 1

原创 数据库跟缓存的双写一致性

1 关于一致性为加速系统性能一般都会引入缓存机制,比如 Redis。这种情况下当用户读数据时一般会按照如下流程:关于读的流程大家是没有异议的,但是对于数据的更新呢,如何操作才算合理呢?先更新数据库再更新缓存。先删缓存再更新数据库。先更新数据库再删缓存。2 一致性解决方法2.1 缓存TTL简单直接又暴力的方法,如果有些数据不重要,我们读完一次数据到缓存后设置个TTL即可,等待超时后缓存自动从数据库读取下数据。2.2 先更新数据库 再更新缓存假如我们有A、B两个请求,A请求将age =

2021-05-16 18:54:30 80 1

原创 Mysql亿级数据该如何优化?

一:4个大的方向:分库 、 读写分离 、 设计好索引 、 优化你的查询Sql二:13太保:1,单库表别太多,一般保持在200以下2,尽量避免SQL中出现运算,例如select a2 from A where 3bb = ddd3,表设计尽量小而精,能用5个字段就不要用6个(取决于业务,该冗余时坚决不要手软)4,SQL事务不能设计太大,比如一次性提交10W条insert,当然这个不仅仅是性能问题了,可能直接内存溢出了一般来说insert事务的话,500-1000来做批处理就可以了(字段不能太大)

2021-05-16 18:42:35 1121

原创 分库分表的5大方案

一.数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库。2、CPU瓶颈第一种:SQL问题,如SQL中包含join

2021-05-16 18:40:06 4346

原创 Tcp服务的握手与分手

关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了。现在把之前的疑惑总结起来,方便一下大家。先上个TCP三次握手和四次分手的图网上好多都是错的,只能自己画了,一个正确的图的确可以方便理解。疑问一,上图传递过程中出现的几个字符(SYN,ACK,FIN,seq,ack)各代表什么意思SYN,ACK,FIN存放在TCP的标志位,一共有6个字符,这里就介绍这三个:SYN:代表请求创建连接,所以在三次握手中前两次要SYN=

2021-05-12 09:59:45 131

原创 GIT安装及初识

git和githup基础操作git的安装查看电脑是否安装过git如果出现上图结果,证明未安装过git打开git官网:https://git-scm.com/找到符合自己系统的版本下载即可windows安装简单,一直下一步即可,安装完毕在桌面点击鼠标右键出现这样的标志即可github简介以及账号注册打开官网:https://github.com/进入这样的界面什么是github(1)全球最大的代码托管网站(2)全球最大的代码开源网站(3)程序员交流网站注册完成后进入仓库的概念以及

2021-04-13 15:45:50 86

原创 2021-04-12

列出所有索引(数据库)列出所有索引(列出所有的数据库)GET /_cat/indices?v删除索引(数据库)DELETE /索引名称添加索引(数据库)PUT /es{“settings”: {“number_of_replicas”: 1,“number_of_shards”: 1}}插入数据(插入数据的同时建表)post /es/user{“name”:“张晓东”,“age”:18}es:索引名(数据库)user:类型名(表名)name:字段名(列)“张晓东”

2021-04-12 19:44:44 81

原创 Swoole的基础入门

一:简介SwooleSwoole 是一个使用 C++ 语言编写的基于异步事件驱动和协程的并行网络通信引擎,为 PHP 提供协程、高性能网络编程支持。提供了多种通信协议的网络服务器和客户端模块,可以方便快速的实现 TCP/UDP服务、高性能Web、WebSocket服务、物联网、实时通讯、游戏、微服务等,使 PHP 不再局限于传统的 Web 领域。二:为什么swoole走的是TCP/IP协议(传输协议)web走的是http协议(应用协议)Socket是网络应用程序接口,是应用层到传送层的接口。也就是

2021-03-20 08:06:37 583

原创 秒杀从设计到实现

一、秒杀活动基本概要用户量:超大量、好人/坏人都有。地域:全国各地业务流程:[前台]商品展示、登记、[后台]数据接入、数据处理需要注意:不要把秒杀活动的部署在现有商城中,这样极容易让商城服务奔溃,需脱离原站点部署;需要监控。关键点:高可用:双活;高并发:负载均衡、安全过滤。设计思路:静态页面:cdn、网站隐藏、页面压缩、缓存机制动态页面:排队、异步、资质抢购二、架构整体架构主要分成四个层级:商品展示层/页、用户登记层、数据接入层、后续处理层。具体的处理过程如下图:架构三、技术

2021-03-20 08:04:04 54

空空如也

空空如也

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

TA关注的人

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