- 博客(17)
- 收藏
- 关注
原创 在开发中如何正确的应对系统故障
或多或少我们都会经历线上的故障。在我的职业生涯中,就经历过很多的线上故障。老实说,线上故障是我们技术人员成长中必须要经历的事。从故障中我们可以吸取到很多教训,也能让我们学到很多书本上学不到的知识。坑踩多了,我们会变得越来越有经验,也就成为老司机了。故障发生时在故障发生时,最重要的是快速恢复故障。而快速恢复故障的前提是快速定位故障源。因为在很多分布式系统中,一旦发生故障就会出现“多米诺骨牌效应”。也就是说,系统会随着一个故障开始一点一点地波及到其它系统,而且这个过程可能会很快。一旦很多系统都在报.
2020-11-23 09:39:44 17168 3
原创 最完整的秒杀设计方案-不服来辩
话不多说, 直接上干货!如何才能更好地理解秒杀系统呢?在我看来,秒杀其实主要解决两个问题,一个是并发读,一个是并发写。所以我们要设计的初衷肯定是要打造一个超大流量并发读写、高性能、高可用的系统,所以在设计上我们一般要遵循几个原则,1.就是要保证用户请求的数据尽量少、请求数尽量少 所谓“数据要尽量少”,首先是指用户请求的数据能少就少。请求的数据包括上传给系统的数据和系统返回给用户的数据(通常就是网页)。因为首先这些数据在网络上传输需要时间,其次不管是请求数据还是返回数据都需要服务器做处...
2020-12-28 11:09:51 1547 2
原创 如何优雅设计你的架构-隔离设计
架构性能提高:1.缓存:缓存系统 缓存分区,缓存命中,缓存更新2.负载均衡:网关系统 负载均衡,服务路由,服务发现3.异步调用:异步系统 消息队列,消息持久,异步事务4.数据镜像:数据镜像 数据同步,数据分离,数据一致性5.数据分区:数据分区 分区策略,数据访问层,数据一致性...
2020-12-15 10:26:47 595
原创 系统出问题后我们该做些什么?
我看到很多公司处理线上故障的方式并不科学,而且存在很多问题,所以,今天这篇文章就来分享一些我的经验。这些经验主要来自亚马逊和国美这两家公司,以及我个人的经验总结。故障复盘过程对于故障,复盘是一件非常重要的事情,因为我们的成长基本上就是从故障中总结各种经验教训,从而可以获得最大的提升。在亚马逊和阿里,面对故障的复盘有不一样的流程,虽然在内容上差不多,但细节上有很多不同。亚马逊内部面对 S1 和 S2 的故障复盘,需要那个团队的经理写一个叫 COE(Correction of Errors)的文档。
2020-12-09 17:22:31 14717 1
原创 并发编程第二章--出现并发的根本原因?
源头之一:缓存导致的可见性问题在单核时代,所有的线程都是在一颗 CPU 上执行,CPU 缓存与内存的数据一致性容易解决。因为所有线程都是操作同一个 CPU 的缓存,一个线程对缓存的写,对另外一个线程来说一定是可见的。如图所示:线程A和线程B读到的是一块缓存块....
2020-11-03 16:13:39 474
原创 LInux 命令总结
LInux查看有哪些用户命令 cut -d: -f1 /etc/passwdLinux切换普通 用户 su test解压:tar zxvf FileName.tar.gz压缩:tar zcvf FileName.tar.gz DirName查看内存 使用状态 top
2020-10-29 13:08:44 14784
原创 并发编程第一章--为什么需要并发编程?
为什么需要并发编程 并发编程出现的主要原因是硬件的驱动以及国内互联网行业的飞速发展决定的,现在 64 核的服务器已经司空见惯了,大型互联网厂商的系统并发量轻松过百万,传统的中间件和数据库已经不能为我们遮风挡雨,反而成了瓶颈所在。而且现在并发编程已经成了高级程序猿必备的基本技能,相信大家在面试中肯定也经常被提问并发编程的问题,下面我们就一起来探究下并发编程吧!并发编程的三个核心问题(分工,协作,异步)1. 分工 &
2020-10-28 22:39:58 279
翻译 MySQL(基础篇) 第二章 带你看看MySQL的日志系统
前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?与查询流程不一样的是,更新流程还涉及两个重要的日志模块,它们正是我们今天要讨论的主角:redo log(重做日志)和 binlog(归档日志)。如果接触 MySQL,那这两个词肯定是绕不过的,我后面的内容里也会不断地和你强调。不过话说回来,redo log 和 binlog 在设
2020-08-07 17:17:39 14433 1
翻译 MySQL(基础篇) 第一章 先来了解下一条SQL语句是如何执行的吧
什么是数据库?数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。RDBMS 即关系数据库管理系统(Relational Database Man
2020-07-31 20:18:41 242
原创 浅谈为什么要使用池化技术(线程池,内存池等)
池化技术常见应用在系统开发过程中,我们经常会用到池化技术来减少系统消耗,提升系统性能。对象池通过复用对象来减少创建对象、垃圾回收的开销;连接池(数据库连接池、Redis连接池和HTTP连接池等)通过复用TCP连接来减少创建和释放连接的时间。线程池通过复用线程提升性能。简单来说,池化技术就是通过复用来提升性能。线程、内存、数据库的连接对象都是资源,在程序中,当你创建一个线程或者在堆上申请一块内存的时候都涉及到很多的系统调用,也是非常消耗CPU的。如果你的程序需要很多类似的工作线程或者需要频繁地申请释放
2020-07-28 14:31:21 15137
原创 Netty实战-实现聊天室功能(Netty介绍)
Netty介绍1 what Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网...
2020-04-11 08:09:47 314
原创 关于HashMap的一些总结
HashMap的结构 数组的寻址快,但是数据的插⼊与删除速度不⾏。 链表的插⼊与删除速度快,但是寻址速度不⾏。 那 有没有⼀种两者兼具的数据结构,答案肯定是有的,那就是hash表。 HashMap 就是根据 数组+链表的 ⽅式组成了hash表:对于HashMap的⼀些疑问⼀、HashMap的resize过程是什么样的? HashMap在put的时候会先检查当前数组的...
2020-03-29 18:46:34 291
原创 关于ArrayLisy的一些疑问?
是否保证线程安全? ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全。 底层数据结构区别? Arraylist 底层使⽤的是Object数组;LinkedList 底层使⽤的是双向循环链表数据结构。 插⼊和删除是否受元素位置的影响? ArrayList 采⽤数组存储,所以插⼊和删除元素的时间复杂度受元素位置的影响。 ⽐如:执⾏add(...
2020-03-19 16:39:03 1801
翻译 Redis中对ZSet类型的操作命令
Redis中对ZSet类型的操作命令----------------------------------------------------------------------------------------------------------------------------------------1、zadd :添加元素,格式是:zadd zset的key scor...
2019-04-10 11:26:37 1235
原创 MySQL优化的12条建议(第二篇)
8,不使用ORDER BY RAND() select id from `dynamic` order by rand() limit 1000;上面的SQL语句,可优化为:select id from `dynamic` t1 join (select rand() * (select max(id) from `dynamic`) as nid) t2 on t1.id &g...
2019-04-08 20:17:17 263
原创 MySQL的12条优化建议(第一篇)
1、SQL语句中IN包含的值不应过多MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗也是比较大的。再例如:select id from t where num in(1,2,3) 对于连续的数值,能用between就不要用in了;再或者使用连接来替换。2、SELECT语句务必指明字段名称SELECT*增加很多...
2019-01-07 10:30:53 341 2
原创 如何高效的对接安卓移动端接口
本人也是第一次对接移动端接口,我们做的项目是一个二手车的项目,但是在之前做的都是一些比较传统的项目,比如一些传统的OA办公系统.物流项目,电商项目(项目最高访问的峰值也就400多的并发量),本来觉得对接移动端的参数绑定会成为一大难题,但是其实跟B/S端对接没什么不一样,SpringMVC进行的参数时候效果也是一样的好用,话不多说,直接上代码;我们先来看移动端的代码:Ps:打马的地方是IP和项目名下...
2018-05-30 17:03:52 2555 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人