
架构
文章平均质量分 73
gb4215287
这个作者很懒,什么都没留下…
展开
-
【接口防刷】学习笔记(经典)
接口防刷转载 2023-01-12 10:01:04 · 315 阅读 · 0 评论 -
进行软件架构设计的益处
进件软件架构设计的益处转载 2023-01-05 18:25:27 · 703 阅读 · 0 评论 -
大流量高并发篇
大流量高并发转载 2023-01-05 18:22:38 · 277 阅读 · 0 评论 -
分布式接口幂等性、分布式限流(Guava 、nginx和lua限流)
分布式限流转载 2022-12-26 15:44:52 · 204 阅读 · 0 评论 -
谈谈在项目中,如何应对高并发流量
限流算法转载 2022-12-26 13:42:19 · 204 阅读 · 0 评论 -
Redis缓存穿透、击穿、雪崩到底是个啥?7张图告诉你
缓存相关的转载 2022-12-23 18:23:46 · 127 阅读 · 0 评论 -
TCP三次握手建立连接的过程
来源:TCP三次握手建立连接的过程TCP 是面向连接的协议,所以每次发出的请求都需要对方进行确认。TCP 客户端与 TCP 服务器在通信之前需要完成三次握手才能建立连接。下面详细讲解三次握手的过程。第 1 次握手第 1 次握手建立连接时,客户端向服务器发送 SYN 报文(SEQ=x,SYN=1),并进入 SYN_SENT 状态,等待服务器确认,如图所示。第 2 次握手第 2 次握手实际上是分两部分来完成的,即 SYN+ACK(请求和确认)报文。服务器收到了客户端的请求,向客.转载 2022-04-12 17:23:12 · 4207 阅读 · 0 评论 -
设计模式
1、七大软件设计原则个人认为,结合到现实开发中,组件化和模块化编程的原理本质上就是七大设计原则,其目的就是可以根据不同的业务低开销的将组件(method、class、service等)组装在一起,将通用贯彻到底。方法组件(Method:getUser(String idCardNo)):入参尽量满足迪米特法则,不必传用不到的参数,比如由idCardNo就已经能命中一个用户,就不必再传userName了。功能要满足单一职责原则,专人干专事,不要插足getUser以外的事情。 类(Class:Us转载 2021-04-20 16:24:46 · 512 阅读 · 0 评论 -
MySQL宏观架构与原理
我唯一知道的就是我一无所知——苏格拉底1、Linux安装MySQL1.1、安装参考资料MySQL的删除:https://blog.csdn.net/weixin_34462581/article/details/113010258MySQL的安装:参考官网https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.htmlMySQL的资源:https://dev.mysql.com/downloads/fi.转载 2021-04-20 16:03:31 · 456 阅读 · 0 评论 -
分布式数据库——TiDB的介绍和基本原理
1、TiDB 介绍1.1 TiDB 介绍1.1.1 TiDB 是什么?TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景(on-line transaction processing,联机事务处理)还适合 OLAP 场景(On-Line Analytical Processing,联机分析处理)的混合数据库。1.1.2 TiDB 是基于 MySQL 开转载 2021-04-20 14:17:51 · 25252 阅读 · 0 评论 -
分布式事务的解决方案总结
一、分布式事物1.1 数据库事务原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily),简称就是ACID1.2 分布式事物产生原因分布式事物产生的原因分布式事务产生的场景在分布式系统,都会垂直拆分数据库,分为支付数据库、订单数据库、积分数据库、优惠全数据库等,业务组成,分为多个数据源,会产生分布式事物问题。spring事务和分布式事务的区别是什么?spring事务,本地事务分布.转载 2021-02-26 11:00:03 · 131 阅读 · 0 评论 -
分布式事务的四种解决方案
简述分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。解决方案在分布式系统中,要实现分布式事务,无外乎那几种解决方案。一、两阶段提交(2PC)两阶段提交(Two-phase Commit,2PC),通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否要真正执行事务。1. 运行过程1.1 准备阶段协调者询问参与者事务是否执行成功,参与者发回事务执行结果。转载 2021-02-26 10:58:42 · 141 阅读 · 0 评论 -
Maven警告:“java使用了未经检查或不安全的操作。java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。“
在 jdk 1.5 之前,我们在定义一个集合时,无须给定元素类型:List list = new ArrayList();ArrayList al = new ArrayList();1 2 3但是,在 jdk 1.5 之后,Java增加了泛型机制,它要求我们在定义集合时给定元素类型:List<String> list = new ArrayList<String>();ArrayList<String> al = new ArrayLis转载 2021-02-20 14:00:16 · 1510 阅读 · 1 评论 -
写代码的16个好习惯,减少80%的bug
前言每一个好习惯都是一笔财富,本文整理了写代码的16个好习惯,每个都很经典,养成这些习惯,可以规避多数非业务的bug!希望对大家有帮助哈,谢谢阅读,加油哦~github地址,感谢每颗star。https://github.com/whx123/JavaHome一、 修改完代码,记得自测一下「改完代码,自测一下」是每位程序员必备的基本素养。尤其不要抱有这种侥幸「心理:我只是改了一个变量或者我只改了一行配置代码,不用自测了」。改完代码,尽量要求自己都去测试一下...转载 2021-02-19 16:57:11 · 244 阅读 · 0 评论 -
linux服务器文件索引inodes满了
inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。一般情况不需要特殊配置,如果存放文件很多,需要配置。有时磁盘空间有剩余但是不能存放文件,可能是由于inode节点数量不做了。查看inode的数量: 1 2 3 4 5 6 7 8 9 10 11 12 df -Th ..转载 2021-02-19 16:52:56 · 465 阅读 · 0 评论 -
什么是RPC?
1. 基本的RPC模型主要介绍RPC是什么,基本的RPC代码,RPC与REST的区别,gRPC的使用1.1 基本概念RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务 本地过程调用:如果需要将本地student对象的age+1,可以实现一个addAge()方法,将student对象传入,对年龄进行更新之后返回即可,本地方法调用的函数体通过函数指针来指定。 远程过程调用:上述操作的过程中,如果addAge()这个方法在服务端,执行函数转载 2021-02-04 18:00:50 · 645 阅读 · 0 评论 -
RPC框架(一)RPC简介
一、概述 二、RPC 2.1、RPC定义 2.2、RPC主要组成部分 三、影响RPC框架性能的因素 四、工业界的 RPC 框架一览 4.1、国内 4.2、国外 五、如何选择RPC框架一、概述随着公司规模的扩大,以及业务量的激增,单体应用逐步演化为服务/微服务的架构模式, 服务之间的调用大多采用rpc的方式调用,或者消息队列的方式进行解耦。几乎每个大厂都会创建自己的rpc框架,或者基于知名的rpc框架进行改造。目前, rpc框架主要沿着两条路线发展,一个是目标为了跨.转载 2021-02-04 17:57:00 · 1763 阅读 · 0 评论 -
怎样用通俗的语言解释REST,以及RESTful?
作者:覃超链接:https://www.zhihu.com/question/28557115/answer/48094438来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。我觉得问题很好:REST -- REpresentational State Transfer 直接翻译:表现层状态转移。这个中文直译经常出现在很多博客中。尼玛谁听得懂“表现层状态转移”?这是人话吗?我自己也困惑了很久,查询了很多资料,花了差不多一年有个还算清晰的理解。分享如下:@I..转载 2021-02-04 17:25:45 · 204 阅读 · 0 评论 -
RESTful简介
来源:https://zhuanlan.zhihu.com/p/9036787501 前言回归正题,看过很多RESTful相关的文章总结,参齐不齐,结合工作中的使用,非常有必要归纳一下关于RESTful架构方式了,RESTful只是一种架构方式的约束,给出一种约定的标准,完全严格遵守RESTful标准并不是很多,也没有必要。但是在实际运用中,有RESTful标准可以参考,是十分有必要的。实际上在工作中对api接口规范、命名规则、返回值、授权验证等进行一定的约束,一般的项目api只要易测试、足够安转载 2021-02-04 17:20:22 · 126 阅读 · 0 评论 -
mysql隔离级别底层实现_1、深入理解mysql四种隔离级别及底层实现原理(MVCC和锁)...
一、ACID特性持久性,我们就不讲了,易懂。1、原子性在同一个事务内部的一组操作必须全部执行成功(或者全部失败)。为了保证事务操作的原子性,必须实现基于日志的REDO/UNDO机制:将所有对数据的更新操作都写入日志,如果一个事务中的一部分操作已经成功,但以后的操作,由于断电/系统崩溃/其它的软硬件错误而无法继续,则通过回溯日志,将已经执行成功的操作撤销,从而达到“全部操作失败”的目的。 最常见的场景是,数据库系统崩溃后重启,此时数据库处于不一致的状态,必须先执行一个crash recover转载 2021-02-04 10:46:52 · 163 阅读 · 0 评论 -
Innodb隔离级别的实现原理
Mysql简介版本号3.23(2001)Mysql的诞生,引入MyISAM和InnoDB。版本号4.0(2003)支持更多语法,如UNION和多表DELETE语法,引入查询缓存。版本号5.0(2006)出现企业级Mysql特性:视图,触发器,存储过程和存储函数。之后Sun收购Mysql后,5.1版本,引入分区和基于行的复制备份,以及可插拔的存储引擎API。版本号5.5(2010)Oracle收购Sun以后,将InnoDB设为默认存储引擎,增加了其扩展性和性能提升。...转载 2021-02-04 10:45:30 · 230 阅读 · 0 评论 -
Linux 调优方案, 修改最大连接数(ulimit命令)
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数可以用ulimit -a 来显示当前的各种用户进程限制。下面我把某linux用户的最大进程数设为10000个:ulimit -u 10240对于需要做许多socket 连接并使它们处于打开状态的 Java 应用程序而言,最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。ulimit -n 4096 将每...转载 2021-02-02 17:45:46 · 3454 阅读 · 0 评论 -
linux中高并发socket最大连接数的优化详解
这篇文章主要给大家介绍了关于linux中高并发socket最大连接数优化的相关资料,文中介绍的很详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起学习学习吧。首先我们可以通过ulimit –a命令来查看系统的一些资源限制情况,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # ulimit -a转载 2021-02-02 17:44:36 · 571 阅读 · 0 评论 -
nginx优化worker进程最大打开文件数worker_rlimit_nofile 65535
来源:https://blog.csdn.net/ljx1528/article/details/87362561性能优化-优化worker进程最大打开文件数worker_rlimit_nofile 65535;参数语法:worker_rlimit_nofile 65535;默认配置:无放置位置:主标签段,不在任何区块在主配置文件nginx.conf中配置host-192-168-1-15:/usr/local/nginx/conf # cat /usr/local/nginx/conf/转载 2021-02-02 17:27:54 · 687 阅读 · 0 评论 -
nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile
参考nginx官网:http://nginx.org/en/docs/ngx_core_module.html#worker_connections 从用户的角度,http 1.1协议下,由于浏览器默认使用两个并发连接,因此计算方法: nginx作为http服务器的时候: max_clients = worker_processes * worker_connections/2 nginx作为反向代理服务器的时候: max_clients = worker...转载 2021-02-02 17:26:18 · 1835 阅读 · 0 评论 -
linux – 我怎么知道我到somaxconn有多近?
sysctl选项net.core.somaxconn默认为128(在我们的系统上)但可以引发.>这个限制测量和封顶究竟是什么?>我如何知道我有多接近极限?背景:我最近遇到了一个问题似乎是通过提高这个限制来纠正的.问题是间歇性的,所以我不相信它确实是固定的.我想知道[无论此设置上限]的当前数量是否大于先前的最大限制128.解决方法somaxconn确定系统上每个TCP端口允许的最大连接数.增加它(推荐用于服务器)可以防止“连接被拒绝”消息,但如果服务器无法处理增加的负载,则可能导转载 2021-02-02 17:12:21 · 176 阅读 · 0 评论 -
linux中tcp连接内核参数调优somaxconn
永久生效:vim /etc/sysctl.confnet.core.somaxconn=32768sysctl -p立即生效:sysctl -w net.core.somaxconn=32768sysctl -a显示所有内核参数看其解析: 对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后, 我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了. 每一个处于监听(Listen)状态的端口,都转载 2021-02-02 17:10:01 · 326 阅读 · 0 评论 -
Nginx核心要领五:worker_processes、worker_connections设置
worker_processes与worker_connections 设置好合适大小,可以提示nginx处理性能,非常重要。原作者的话:As a general rule you need the only worker with large number of worker_connections, say 10,000 or 20,000.However, if nginx does CPU-intensive work as SSL or gzipping and you have 2 o转载 2021-02-02 16:34:23 · 773 阅读 · 0 评论 -
PHP实现带重试功能的curl连接示例
这篇文章主要介绍了PHP实现带重试功能的curl连接方法,结合实例形式分析了php使用curl实现重复连接的方法,需要的朋友可以参考下本文实例讲述了PHP实现带重试功能的curl连接方法。分享给大家供大家参考,具体如下:/*** @param string $url 访问链接* @param string $target 需要重试的标准: 返回结果中是否包含$target字符串* @param int $retry 重试次数, 默认3次* @param int $sleep 重试间...转载 2021-02-01 17:39:25 · 555 阅读 · 0 评论 -
Mysql Binlog三种格式详细介绍
一.MySQLBinlog格式介绍mysqlbinlog日志有三种格式,分别为Statement,MiXED,以及ROW!现在就去查查自己数据库使用的是什么模式。现在是ROW模式,如何切换模式呢?问题来了,binlog 的不同模式有什么区别呢?1.Statement:每一条会修改数据的sql都会记录在binlog中。优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能与日志量,这个取决于应用的SQL...转载 2021-01-29 10:19:50 · 332 阅读 · 0 评论 -
什么是幂等性
幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等。在增删改查4个操作中,尤为注意就是增加或者修改,查询对于结果是不转载 2021-01-28 00:23:05 · 724 阅读 · 0 评论 -
什么是幂等性?
HTTP 幂等方法,是指无论调用多少次都不会有不同结果的 HTTP 方法。不管你调用一次,还是调用一百次,一千次,结果都是相同的。HTTP GET 方法HTTP GET 方法,用于获取资源,不管调用多少次接口,结果都不会改变,所以是幂等的。GET /tickets # 获取ticket列表GET /tickets/12 # 查看某个具体的ticket1 2只是查询数据,不会影响到资源的变化,因此我们认为它幂等。值得注意的是,幂等性指的是作用于结转载 2021-01-28 00:21:58 · 268 阅读 · 0 评论 -
xdebug 远程调试
----------------------------------------------------下面的链接下载对应版本的xdebug.https://xdebug.org/download/historical源码安装:https://xdebug.org/docs/install#linuxInstallation From SourceObtainYoucandownloadthe source of the l...转载 2021-01-26 17:07:38 · 467 阅读 · 0 评论 -
Master选举原理
为什么需要Zookeeper?为了防止集群的主NameNode挂掉,再另创建一个辅NameNode,两个保持数据同步,一旦主NameNode挂掉,集群就会把辅NameNode节点作为整个集群的主NameNode,而在这之间就需要用到Zookeeper来协调,帮助辅NameNode成为整个集群的主NameNode。在这里Zookeeper是实现的master选举机制完成这一过程,选举机制分两种: 第一种:谁先创建master临时节点,谁就是master,当一个master挂掉了,master节点转载 2021-01-26 16:53:43 · 642 阅读 · 0 评论 -
平滑重启更新(GR机制)
什么是平滑启动机制是一种在协议重启时保证转发业务不中断的机制。什么时候用到平滑重启平滑重启一般应用于业务更新或者版本发布过程中,能够避免因为代码发布重启服务导致的暂时性服务不可用的影响。ngnix 平滑重启和平滑更新Nginx的进程分为master主进程和work工作进程,master进程主要管理事件信号接受和分发,所有的请求处理都由work进程处理并返回结 果,Nginx的平滑重启或重载配置文件等升级,首先是向master发送重启或重载配置文件信号,然后master告诉所有的work进程不转载 2021-01-26 15:44:37 · 319 阅读 · 0 评论 -
Mysql-innoDB存储引擎(事务,锁,MVCC)
innoDB的特性: 从图中由上至下红色框中的信息是:基于主键的聚集索引 ,数据缓存,外键支持(逻辑上建立外键),行级别锁,MVCC多版本控制,事务支持。这些也是InnoDB最重要的特性。事务: 数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;事务是一组不可再分割的操作集合(工作逻辑单元)。典型事务场景(转账):这是两个事务 update user_account set balance = balance - 1000 where userID = 3;转载 2021-01-21 16:28:03 · 212 阅读 · 0 评论 -
B+Tree索引为什么可以支持千万级别数据量的查找——讲讲mysql索引的底层数据结构
MySQL索引底层数据结构索引是存储引擎快速找到记录的一种数据结构一、 有索引与没索引的差距先来看一张图:左边是没有索引的情况,右边是作为col2字段二叉树索引的情况。假如执行查找(假设表为 t)select *from t where col2 = 89;那么,左边的情况,需要比较6次才能找到,右边的情况,只需要比较2次就可以找到。当数据量非常大时,要查找的数据又非常靠后,那么二叉树结构的查询优势将非常明显。扩展:在右边二叉树的结构中,每个节点都是...转载 2021-01-21 16:26:12 · 684 阅读 · 0 评论 -
MySQL引擎之MyISAM,InnoDB,Btree与B+tree
目录:MyISAM与InnoDB模块 Btree模块 B-tree与哈希索引的区别一:MyISAM:创建一个myisam存储引擎的表的时候会出现三个文件tb_demo.frm,存储表定义; 2.tb_demo.MYD,存储数据; 3.tb_demo.MYI,存储索引。 因为MyISAM表有无法处理事务,所以它只适合在以下情况下使用 1.选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。 2.插入密集型的表。MyISAM的并发插入特性允许同时选择和插入转载 2021-01-21 16:24:05 · 265 阅读 · 0 评论 -
【php】使用gdb调试php程序
1、简介GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。同时GDB也具有例如ddd这样的图形化的调试端2、调试C/C++程序直接上代码了 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18转载 2020-12-25 15:33:37 · 476 阅读 · 0 评论 -
Go 为什么这么“快”
本文主要介绍了 Go 程序为了实现极高的并发性能,其内部调度器的实现架构(G-P-M 模型),以及为了最大限度利用计算资源,Go 调度器是如何处理线程阻塞的场景怎么让我们的系统更快随着信息技术的迅速发展,单台服务器处理能力越来越强,迫使编程模式由从前的串行模式升级到并发模型。并发模型包含 IO 多路复用、多进程以及多线程,这几种模型都各有优劣,现代复杂的高并发架构大多是几种模型协同使用,不同场景应用不同模型,扬长避短,发挥服务器的最大性能。而多线程,因为其轻量和易用,成为并发编程中使用频率最转载 2020-12-09 14:46:09 · 312 阅读 · 0 评论