自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

通往架构师的成长学习之路

他背起双手看着柳十岁,平静而认真地说道:“大道险且漫长,少有同行到最后,你已上路,更须专心,此去经年,忘却乃自然之事,莫刻意记起,那般不美”。

  • 博客(118)
  • 资源 (1)
  • 收藏
  • 关注

原创 回顾这两个月的面试总结,不断的试错不断地坚持!!你也可以的

从四月底开始复习,然后边面试边复习,总结,终于喜得BAT、TMD其中两家的offer,果然对于刚毕业不到一年经验的我们来说,社招还是有点残酷的,一次次的失败,还要不断复习不断面试,其中过程从四月底到六月底差不多两月,每天晚上学习到一点,早上七点半起来在学习一个小时半然后去公司上班,所以我自己坚信,肯定会有有所回报的,所以不断努力下去,面试过程中可能是我再一年当中进步最大的时候,疯狂的学习,不断的反...

2020-09-08 20:18:02 3249 7

原创 微服务详讲:具体实践方法和基础设施简述

微服务具体实践方法:针对:微服务拆分过细,过分强调“small”、微服务基础设施不健全,忽略了“automated”、微服务并不轻量级,规模大了后,“lightweight”不再适应。1、服务粒度基于团队规模进行拆分,微服务拆分粒度的“三个火枪手”原则,从系统规模来讲,3个人负责开发一个系统,系统的复杂度刚好达到每个人都能全面理解整个系统,又能够进行分工的粒度;从团队管理来说,...

2020-04-06 22:39:49 750

原创 可扩展架构 (分层架构、SOA、微服务、微内核架构)

可扩展的基本思想:都可以总结为一个字:拆!就是将原本大一统的系统拆分成多个规模小的部分,扩展时只修改其中一部分即可,无须整个系统到处都改,通过这种方式来减少改动范围,降低改动风险按照不同的思路来拆分软件系统,就会得到不同的架构。常见的拆分思路有如下三种:面向流程拆分:将整个业务流程拆分为几个阶段,每个阶段作为一部分。比如:信息管理学系统的 展示层 → 业务层 → 数据层 → 存储层...

2020-04-06 22:34:57 4766

转载 佛系程序员的月薪五万指南《转载》

摘要:大师:很简单,我这里有一份佛系月薪 5 万指南,我看你骨骼清奇、脑门光亮,一看就是将要大富大贵之人,这份指南可以助你快速实现小目标!程序员问大师……青年:大师,你看咪蒙的助理都月薪 5 万了,我也想月薪 5 万!大师:很简单,我这里有一份佛系月薪 5 万指南,我看你骨骼清奇、脑门光亮,一看就是将要大富大贵之人,这份指南可以助你快速实现小目标!青年:太好了,要多少钱,三年...

2020-02-13 15:32:10 635 2

原创 深度学习Nginx第四章:Nginx与网络事件以及驱动模型

Nginx是一个事件驱动的,主要事件是指网络事件,Nginx每个网络连接自然对应两个网络事件,一个读事件一个写事件。什么是网络事件:应用层发送get请求,传输层主要做一个事情,打开一个端口,把自己端口和nginx端口记录下来,传输层把我们主机ip和目标主机公网ip记录下来,到达链路层通过以太网到我们加的路由器,路由器主要记录我们所在运营商的ip,通过广域网跳转到服务器b的路由器中,...

2019-08-21 10:03:42 835

原创 IO模式和IO多路复用(阻塞IO、非阻塞IO、同步IO、异步IO等概念)

1 基础知识回顾注意:咱们下面说的都是Linux环境下,跟Windows不一样哈~~~1.1 用户空间和内核空间现在操作系统都采用虚拟寻址,处理器先产生一个虚拟地址,通过地址翻译成物理地址(内存的地址),再通过总线的传递,最后处理器拿到某个物理地址返回的字节。对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访...

2019-08-18 20:26:05 1620 1

原创 Redis网络架构及单线程模型

问题:1.Redis网络层基础组件主要包括哪几部分?2.什么是Redis的单线程模型?3.Redis怎样接收网络连接?Redis网络基础架构网络编程离不开Socket,网络I/O模型最常用的无非是同步阻塞、同步非阻塞、异步阻塞、异步非阻塞,高性能网络服务器最常见的线程模型也就是基于EventLoop模式的单线程模型。我们看看Redis的网络架构是怎么样的:R...

2019-08-18 20:23:47 2534

原创 一些高并发下web服务器http异常状态码分析

环境说明压测工具:apache/abweb服务器:NGINX/1.8.0 + PHP 5.6.25php脚本:get.php注:nignx 设置超时fastcgi_connect_timeout 60fastcgi_send_timeout 60fastcgi_read_timeout 60php-fpm 设置超时request_terminate_timeo...

2019-08-18 20:23:32 1085

原创 多线程还是多进程的选择及区别

1、鱼还是熊掌:浅谈多进程多线程的选择关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好...

2019-08-18 20:22:57 1514

原创 深度学习Nginx第三章:Nginx请求流程和进程结构

学习这方面知识主要解决问题:Nginx一般部署在内网边缘节点,它处理的流量一般比其他应用服务器流量数倍或者数个流量级别,所以在Nginx处理问题,所有问题都会被放大,所以我们要了解为什么要使用master和worker这种架构模型,并且worker必须要和cpu的核数所匹配,当我们在多个worker进程之间共享数据时,为什么在tls或者说限流、限速这些场景共享方式是有所不同的...

2019-08-13 10:16:49 519

原创 深度学习Nginx第二章:Nginx 关于SSL安全协议

表示层是SSL协议所发挥作用的这一层,通过握手、发送秘钥、告警TLS安全密码套件解读:怎么保证明文被加密的对称加密1>如何实现的?其中异或有一个对称的特点,把密文和密钥同样做异或操作,就可以得到明文,所以说性能非常的好。只要遍历一次得到最终密文,解密也是一样的非对称加密信息加密:根据数学原理生成一堆密钥,包含公钥和私钥,同一份明文文...

2019-07-30 09:39:08 712

转载 git使用笔记

文章目录 git状态说明 git 放弃本地某个文件的修改,或所有修改 git远程分支覆盖本地分支 git本地分支覆盖远程分支 git撤销commit但未push的记录 从远程仓库拉取最新代码合并到本地分支 git查看本地分支与远程分支的区别 git基本操作 git将本地工程上传到远程库 git 放弃本地某个文件的修改,或所有修改git checkout...

2019-07-29 00:49:39 198

原创 深度学习Nginx第一章:Nginx架构和工作流程、简单搭建、如何作为反向代理和缓存服务器以及分析access日志

Nginx源码目录auto->cc:用于编译的,剩下的是来帮助nginx的config脚本执行的时候,nginx支持哪些模块,当前操作系统有什么特性供给nginx使用CHANGES:nginx版本有哪些版本和bug fixman:帮助文件src:nginx的源代码通过执行./configure --help查看参数如果没有变动的话指定prefix就可以默...

2019-07-25 08:54:10 304

原创 初识Nginx

Nginx的优点 大多数程序或者服务器随着并发数的上升,他的rps会急剧下降,而Nginx的高并发则需要让每个连接尽可能少可以达到而在高并发又能达到高性能,就需要很好的设计,Nginx可以达到32核64G内存可以轻松达到数千万的并发连接,如果处理简单的静态资源请求可以达到100万的rps这个级别,可扩展行好主要体现到他的模块化设计,丰富的生态圈,高可靠性可以保证Ningx在服务器上运行...

2019-07-01 00:18:01 295

原创 《Linux网络编程》: connect()、listen()和accept()

基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下:connect()函数对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手,而这个连接的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成 TCP 三次握手连接(三次握手详情,请看《TCP 三次握手和...

2019-06-18 10:54:54 687

原创 Web的安全问题

1、XSS攻击(跨站点脚本攻击) 指黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式 常见的XSS攻击类型有两种: 1、反射性 (url参数直接注入) 反射性:攻击者诱导用户点击一个恶意嵌入脚本的链接,达到攻击的目的 2、存储型(持久性) 存储型(持久性):攻击者提交含有恶意脚本的请求...

2019-06-10 23:24:13 1964

原创 分布式事务

1、什么是分布式事务分布式事务就是指事务的资源分别位于不同的分布式系统的不同节点之上的事务;2、分布式事务产生的原因2.1、数据库分库分表在单库单表场景下,当业务数据量达到单库单表的极限时,就需要考虑分库分表,将之前的单库单表拆分成多库多表;分库分表之后,原来在单个数据库上的事务操作,可能就变成跨多个数据库的操作,此时就需要使用分布式事务; 在这种场景下,事务的提交会...

2019-06-03 11:21:15 265 1

原创 redis的一些问题分析

1、redis的原子性原子性:原子性是数据库的事务中的特性。在数据库事务的情景下,原子性指的是:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。 Redis的操作之所以是原子性的,是因为Redis是单线程的。由于对操作系统相关的知识不是很熟...

2019-06-02 19:45:41 234

原创 PHP源码分析(内存管理)

void *ptr=_emalloc(size);_efree(*ptr) //释放内存的时候只传入ptr,并没有传入释放内存大小当我们申请一个size大小的内存的时候,我们多申请一些存起来,下次用户申请的时候,直接给出相应大小的内存即可,这样减少了用户态和内核态的切换,提高效率,内存回收的时候需要知道这个内存属于哪个内存页page,属于哪个chunk,以便回收chunk内存...

2019-05-30 11:31:34 549

原创 PHP源码分析(基本变量、垃圾回收)

小而巧的zval扩充:结构体: 比如 struct test { char a //1 int b//4 long c //8 } 总共占了2*8=16字节 因为结构体对齐,虽然浪费字节,但是得益于内存对齐,存取速度会更快联合体:比如 union{ c...

2019-05-30 11:29:50 1725

原创 PHP7中数组(HashTable)类型

Hashtable 的概念:字符串的键先会被传递给一个 hash 函数(hashing function,中文也翻译为散列函数),然后这个函数会返回一个整数,而这个整数就是“通常”的数组的索引,通过这个数字索引可以访问到 字符串的键对应的数据。本质上PHP的数组是有序的字典,表示k-v对的是有序列表,其中k-v映射是使用hashTable实现的,PHP将字符串key通过哈希函数运算返...

2019-05-26 23:43:56 2888 2

转载 负载均衡集群介绍

1.1、什么是负载均衡集群负载均衡集群提供了一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载、带宽、增加吞吐量、加强网络数据的处理能力、提高网络的灵活性和可用性搭建负载均衡器的需求:1)把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待时间,提升用户体验2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果...

2019-05-24 14:35:02 704

转载 常见的DDOS攻击及原理-应用层

一、 简述 随着网络技术和网络应用的发展,网络安全问题显得越来越重要,已经被提到一个很高高的高度。DDOS攻击随着互联网的快速发展,也日益猖獗,从原来的的几兆、几十兆,到现在的几十G、几十T的流量攻击,形成了一个很大的利益链。DDOS攻击由于容易实施、难以防范、难以追踪等而成为最难解决的网络安全问题之一,给网络社会带来了极大的危害。同时,拒绝服务攻击也将是未来信息战的重要手段之一...

2019-05-24 11:06:15 1490

转载 数据库分库分表思路

一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存...

2019-05-22 18:23:28 430

原创 Redis底层数据类型

Redis主要数据结构:简单动态字符串(SDS)、双端链表、字典、跳跃表、整数集合、压缩列表和快速列表;一、简单动态字符串(SDS):Redis没有直接使用C语言中的传统的字节数组保存字符串,而是自行构建了简单动态字符串(SDS),C字符串只是作为简单动态字符串(SDS)的字面量,用于在无需对字符串值进行修改的地方。结构:struct __attribute__ ((__pack...

2019-05-22 11:02:15 258

转载 kafka:如何保证消息不丢失不重复

首先要考虑这么几个问题: 消息丢失是什么造成的?(从生产端和消费端两个角度来考虑) 消息重复是什么造成的?(从生产端和消费端两个角度来考虑) 如何保证消息有序? 如果保证消息不重不漏,损失的是什么? 下面是文章详情,这里先简单总结一下: 消费端重复消费:很容易解决,建立去重表。 消费端丢失数据:也容易解决,关闭自动提交offse...

2019-05-20 17:49:20 1114

原创 redis 双写一致性

首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三个部分...

2019-05-20 16:41:16 2470

原创 php-fpm 三种运行模式

php-fpm配置配置文件:php-fpm.conf开启慢日志功能的:slowlog = /usr/local/var/log/php-fpm.log.slowrequest_slowlog_timeout = 5s当某个请求的时间超过了5秒,就会在慢日志中记录相应的记录,注意上面的时间5s,不能忽略了单位,相应的还有其他单位,m分,h时php-fpm慢日志会记录下进程...

2019-05-15 15:46:44 696

原创 读书笔记:Mysql实战45讲 (11-21讲)

11、怎么给字符串加索引 比如email这个字段,如果email字段没有索引,那么这个语句只能做全表扫描 mysql支持前缀索引,所以可以定义字符串一部分为索引。 alter table s add index index1(email); alter table s add index index2(em...

2019-05-13 10:09:39 839 2

原创 PHP7新特性、运行模式和生命周期

1、PHP目录 PHP源码核心目录 Zend文件下,spai放在sapi的文件下,一些扩展的方法和库函数在ext文件下 编译的脚本是在configure目录下,接下来make进行编译,make install 会把相关的二进制文件拷贝到我指定的目录下 ./configure --prefix=/usr/tmp/php/php-7.1.0 --enable-fpm --...

2019-05-08 18:36:58 919

原创 聊聊Linux性能优化那些事四(如何快速分析出系统CPU的瓶颈以及如何优化)

CPU性能指标 首先,最容易想到应该是CPU使用率,CPU使用率描述了非空闲时间占总CPU时间的百分比,根据CPU上运行任务的不同,又被分为用户CPU、系统CPU、等待I/OCPU、软中断和硬中断等 用户CPU使用率,包括用户CPU使用率(user)和低优先级用户态CPU使用率(nice),表示CPU在用户态运行的时间百分比。用户CPU使用率高通常说明有应用程序繁忙系统CPU使...

2019-05-07 16:06:17 471

原创 聊聊Linux性能优化那些事三 (系统中出现大量不可中断或者僵尸进程怎么办)

进程状态其中对应的进程状态: 不可中断状态其实就是为了保证进程数据与迎接状态一致,并且正常情况下,不可中断状态在很短时间内就会结束。所以短时的不可中断状态进程我们一般可以忽略。但是如果系统或者硬件发送了故障,进程可能会在不可中断状态保持很久,甚至导致系统中出现大量不可中断进程。这个时候就要注意下,是不是I/O等性能问题 僵尸进程,这是多进程应用很容易...

2019-05-06 19:03:21 542

原创 pidstat 命令详解

pidstat 概述pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。pidstat 安装pidstat 是sysstat软件套件的一部分,sys...

2019-05-06 18:33:41 18003

原创 聊聊Linux性能优化那些事二(CPU使用率达到100%、为什么CPU很高却查不到是哪个应用)

某个应用的CPU使用率达到100%,该怎么办? 一般用来描述系统的CPU性能指标:平均负载、CPU上下文切换还有CPU使用率CPU使用率 Linux作为一个多任务操作系统,将每个CPU的时间划分为很短的时间片,再通过调度器轮流分配给每个任务使用,因此造成多任务同时运行的错觉。 Linux通过/proc虚拟文件系统,向用户提供了系统内部状态的信息。 比如 /p...

2019-05-05 19:45:00 3087

原创 聊聊Linux性能优化那些事一 (平均负载、CPU上下文切换)

性能指标:高并发和响应快 对应着性能优化的两个核心指标 吞吐 和 延迟。这两个指标是从应用负载的视角来考察性能,直接影响产品终端用户体验。跟他们对应的是从系统资源的视角触发的指标,比如资源使用率、饱和度等随着应用负载的增加,系统资源使用也会升高,甚至达到极限。而性能问题的本质,就是系统资源已经达到瓶颈,但请求的处理却还不够快,无法支撑更多的请求。 性能分析:找出应用或者系统的瓶颈...

2019-05-04 19:55:10 886

转载 分布式事物方案

面试官先是在纸上先画了这样一张图:让我看这张图按照上面的流程走,有没有什么问题?面试官并没有直接说出来这里面会有分布式事物的问题,而是让我来告诉他,这就是面试套路呀。我回答了这中间可能存在分布式事物的问题,当步骤2在调用 B 系统时,可能存在B 系统处理完成后,在响应的时候超时,导致 A 系统误认为 B 处理失败了,从而导致A 系统回滚,跟 B 系统存在数据不一致的情况。ok ,我...

2019-04-22 15:41:25 367

原创 http缓存

前端面试常问第二大问题是http缓存相关内容。说真的,http缓存相关的细节比较多,并且 http 常用协议版本有1.0、1.1,(本文暂不讨论http2.0)。缓存相关 header我们先罗列一下和缓存相关的请求响应头。Expires响应头,代表该资源的过期时间。Cache-Control请求/响应头,缓存控制字段,精确控制缓存策略。If-Modified-Sin...

2019-04-16 14:58:06 194

原创 读书笔记:PHP核心技术与最佳实践

第一章 面向对象思想的核心概念 面向对象是什么:面向对象(OOP)是一种程序设计范型,同事也是一张程序开发方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和可扩展性 面向过程、面向对象以及函数式编程呗称为编程语言中的三大范式(前两者同属于命令式编程) 类是对象的抽象组织,对象是类的具体存在 对象就是一堆数据,既然如此,可以把一个对象存储起来...

2019-04-15 13:06:40 2408

原创 浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景一、相关名词|--表级锁(锁定整个表)|--页级锁(锁定一页)|--行级锁(锁定一行)|--共享锁(S锁,MyISAM 叫做读锁)|--排他锁(X锁,MyISAM 叫做写锁)|--悲观锁(抽象性,不真实存在这个锁)|--乐观锁(抽象性,不真实存在这个锁)二、InnoDB与MyISAMMysql 在5...

2019-04-15 11:42:15 343

原创 读书笔记:Mysql实战45讲 (22-35讲)

22、MySQL有哪些 饮鸩止渴 提高性能的办法? 场景: 业务高峰期,生产环境的MySQL压力太大,没法正常响应,需要短期内、临时性地提高一些性能。但,如果是无损的方案的话,肯定不需要等到这个时候才上场 短连接风暴: 正常的短连接模式就是连接到数据库,执行很少的SQL语句就断开,下次需要的时候再建立连接的过程,成本是很高的。除了正常的网络连接三次握手外,还要...

2019-04-13 15:34:42 975

总结春招一线公司的面试题

总结春招一线公司的面试题,希望对各位春招的人有帮助

2018-05-21

空空如也

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

TA关注的人

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