自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux CPU性能监控工具

微信公众号:云计算通俗讲义持续输出技术干货,欢迎关注!通过本文你将了解:架构性能指标监控工具故障分析架构CPU架构主要包括桌面端和移动端两种。对于桌面端,主要有Intel和AMD两家半导体厂商,2006年前主要是Intel 80386/80486等32位指令集,又称X86或8086,后来AMD推出64位指令集,又称AMD64/X86_64,该64位指令集兼容32位。对于移动端,只有ARM(现已被GPU巨头NVIDIA收购)一家独大,2010年之前,ARM指令集包括AR

2020-12-02 20:56:07 506

原创 一文详解什么是代理模式

微信公众号:云计算通俗讲义持续输出技术干货,欢迎关注!通过本文你将了解: 背景 概述 模式结构 代码实现 特点 应用场景 背景在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。通过引入一个新的对象来实现对真实对象的操作或者将新的对象作为真实对象的一个替身

2020-11-29 00:20:59 1701

原创 算法思想 | 贪心算法

微信公众号:云计算通俗讲义持续输出技术干货,欢迎关注!通过本文你将了解: 背景 概述 条件 特点 应用场景 背景有1元、5元、10元、20元、100元、200元的钞票无穷多张。现使用这些钞票支付X元,最少需要多少张?例如,X=628我们应该尽可能使用面值较大的钞票,最佳支付方法:3张200元的,1张20元的,1张5元的,3张1元的,共需要3+1+1+3=8张。为何这么做一定是对的?面额为1元、5元、10元、20元、100.

2020-11-26 22:46:22 422

原创 MySQL filesort原理及优化

微信公众号:云计算通俗讲义持续输出技术干货,欢迎关注!01概述在MySQL中的ORDER BY有两种排序实现方式: 1、利用有序索引获取有序数据; 2、文件排序。在使用explain分析查询的时候,利用有序索引获取有序数据显示Using index。如果MySQL在排序的时候没有使用到索引那么就会输出using filesort,即使用文件排序。文件排序是通过相应的排序算法,将取得的数据在内存中进行排序:MySQL需要将数据在内存中进行排序,...

2020-11-25 19:27:30 298

原创 MySQL binlog原理及应用

01概述Binlog它记录了所有的DDL和DML(除了数据查询语句)语句,以事件(EVENT)形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。一般来说开启二进制日志大概会有1%的性能损耗(MySQL官方测试数据),虽然会降低性能,但是binlog可以用于主从复制(replication)和point-in-time的恢复,所以还是很有必要开启的。 查看:SHOWBINLOGEVENTIN'mysqld.00001'\G; ...

2020-11-20 00:27:12 306

原创 大数据领域常用算法总结

01概述 大数据必然涉及海量数据,所谓海量数据,就是数据量太大,要么在短时间内无法计算出结果,要么因为数据太大无法一次性装入内存。针对时间,我们可以使用巧妙的算法搭配合适的数据结构,如bitmap/堆/trie树等进行优化。针对空间,就一个办法,大而化小,分而治之,常采用hash映射等方法。02hash映射这里的hash映射是指通过一种哈希算法,将海量数据均匀分布在对应的内存或更小的文件中,这是一种分而治之的实现思想。使用Hash映射有个最重...

2020-11-18 00:40:44 3381

原创 面试官问我:什么是布隆过滤器?

01背景假如需要过滤某些不安全网页,现有100亿个黑名单页面,每个网页的URL最多占用64字节。现要设计一种网页过滤系统,可以根据网页的URL判断该网页是否在黑名单上,要求该系统允许有万分之一以下的判断错误率,并且使用的额外空间不要超过30G。可以采用如下几种方案: 1、将访问过的URL保存到数据库每次需要过滤网页就需要启用一个数据库select查询,且当数据量变得非常庞大后,关系型数据库查询的效率会变得很低。 2、用HashSet将访问过的URL保...

2020-11-15 00:20:19 150

原创 数据库备份与恢复

01背景备份恢复的几个重要理由:1、灾难恢复2、审计3、测试4、误操作恢复02概述2.1 frm与表相关的元数据信息都存放在.frm文件中,主要是表结构的定义信息,不论什么存储引擎,每一个表都会有一个以表名命名的.frm文件。2.2 .MYD和.MYI .MYD:MY Data,是MyISAM存储引擎专用的用于存放MyISAM表的数据; .MYI:MY Index,也是专属于MyISAM存储引擎的主要...

2020-11-15 00:19:01 273

原创 MySQL主从复制

01背景之所以引入主从复制,是基于实际业务需求考虑的: 1、存在这样的一种场景:有一句SQL语句需要锁表,导致系统暂时无法提供读服务,这样就很影响运行中的业务,如果使用主从复制,让主库负责写操作,从库负责读操作,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作; 2、从库可以做数据的热备; 3、架构的扩展,业务量越来越大,I/O访问频率过高,单机无法满足,此时多从库存储,可以提高单个机器的I/O性能。02概述复制是指将主数据库的...

2020-11-15 00:18:52 80

原创 MySQL数据库锁机制

01概述数据库事务ACID中的隔离性是通过锁和MVCC实现的,锁用于并发写操作,MVCC用于并发读操作。因此,数据库锁是控制并发的一种手段。02分类2.1 粒度锁/范围锁根据锁的粒度,可以分为:记录锁:锁住行表锁:锁住表页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般数据库锁:锁住整个库2.2 算法锁算法锁(基于行锁的算法):记录锁,间隙锁,临键锁。注:...

2020-11-15 00:18:46 163

原创 分布式锁实现方案

01背景在单机系统中,多个线程同时访问某个共享资源时,可以采用线程间加锁保证数据一致性。但是,在分布式系统中,程序运行在多台机器上,各个节点之间无从知晓共享资源的锁定状态,即这种共享资源已经不是线程级别的,而是进程之间的。此时,就需要引入分布式锁,以实现多个客户端互斥访问共享资源。需要加锁的场景需要满足以下条件: 1、共享资源;2、共享资源互斥;3、多任务环境。分布式锁的思路是:在系统中提供一个全局唯一的针对共享资源获取锁的...

2020-11-15 00:18:38 76

原创 RabbitMQ原理

01AMQP协议1.1概述AMQP:是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。1.2核心概念Publisher消息的生产者。也是一个向交换器Exchange发送消息的客户端应用程序。Consumer消息的消费者。表示一个从消息队列中取得消息的客户端应用程序。Server/Broker又称Broker,接受客户端...

2020-11-15 00:18:32 313

原创 详解HTTP协议

01概述HTTP(Hyper Text Transformer Protocol,超文本传输协议)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。它是一个应用层协议,承载于TCP协议之上。作用:规定了应用进程间通信的准则 特点:1、传输效率高无连接:交换HTTP报文前,不需要建立HTTP连接无状态:数据传输过程中,不保存任何历史和状态信息传输格式简单:请求时,...

2020-11-15 00:18:24 340

原创 面试官:介绍一下数据库事务

01概述事务一般是指数据库事务,简称事务,是一组不可分割的操作。事务会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时,可以保证要么所有修改都保存了,要么所有修改都不保存(事务是数据库区别于文件系统的重要特征之一)。 说明:1、每个SQL语句都是一个事务;2、事务只对DML语句有效,对于DQL无效。用转账的例子来说,A 账户要给 B 账户转 100块,这中间至少包含了两个操作:1、A 账户减100块...

2020-11-15 00:17:58 587

原创 数据库索引原理及优化

01概述索引是帮助MySQL高效获取数据的排好序的数据结构,用于快速找出某个列中有一特定值的行。通过上述定义可以理解索引三个基本特性: 1、索引的作用是为了追求高效查找;2、索引是一种数据结构,且是有序的;3、索引用于快速查找某一个特定值的行(非特定值情况,即模糊匹配的情况是无效的)。不使用索引,MySQL必须从第一条记录开始读完整个表,直到找到相关的行,表越大,查询数据所花费的时间就越多(全表扫描)。如果表中查询的列有一个索引,MyS...

2020-11-15 00:17:45 417

原创 C与C++

01概述可以简单理解为C++是C的超集(当然,也有C的部分特性是C++不支持的),C语言较为底层,在嵌入式、操作系统等领域使用,C++则是面向对象的编程语言,引入了classes、templates、exceptions 等很多新特性,二者应用领域不同,不存在孰优孰劣。 C语言知识图谱:https://en.cppreference.com/w/c/language C++语言知识图谱:https://en.cppreference.com/w/...

2020-11-15 00:17:18 78

原创 RPC原理及应用

01背景对于一个电商平台而言,往往涉及购物车,订单,支付,商品等多个模块,这就需要多个人员进行维护,如果采用单机系统,就会导致这样的问题:1、某人在维护自己模块代码时,需要将所有代码编译打包,其余模块可能需要回归测试;2、其中一个模块出问题,可能导致整个系统故障。这就出现了远程过程调用RPC,它使得我们可以像调用本地函数一样调用远程服务器的函数。RPC是分布式的基石。从单机走向分布式,产生了很多分布式的通信方式: 1、TCP/UD...

2020-11-14 00:09:03 984

原创 LVM磁盘逻辑卷管理

01卷管理卷管理软件对待RAID提交给上层操作系统的逻辑盘(操作系统视为物理磁盘)和真正的物理磁盘是一视同仁的,即不管底层的磁盘组织形式如何,只要OS认为它是一块物理磁盘,卷管理器就可以对它进行卷管理。稍微不同的是,对于RAID提交的逻辑卷,最终还是要通过RAID控制器来和底层的物理磁盘交互。卷管理器包括: LDM(逻辑磁盘管理):Windows2000引入的动态磁盘VxVM(VeritasVolume Manager) LVM(Logic Vol...

2020-11-14 00:08:05 369

原创 详解块存储、文件存储、对象存储区别

01块存储1.1 概述块存储是将裸磁盘空间整个映射给主机使用的,比如磁阵中有3块1T硬盘,可以选择直接将裸设备给操作系统使用(此时识别出3个1T的硬盘),也可以划分经过RAID、逻辑卷等方式划分出多个逻辑的磁盘供系统使用(比如划分为6个500G的磁盘),主机层面操作系统识别出硬盘,但是操作系统无法区分这些映射上来的磁盘到底是真正的物理磁盘还是二次划分的逻辑磁盘,操作系统接着对磁盘进行分区、格式化,与我们服务器内置的硬盘没有什么差异。块存储不仅仅是直接使用物理设备,间接使用物理设...

2020-11-14 00:07:21 728

原创 数据冗余技术—RAID

01背景某台机器上安装了2块IDE硬盘(80G/块)和4块SCSI硬盘(73G/块),IDE硬盘直连到主板内置IDE接口,SCSI磁盘连接到PCI接口的SCSI卡上。此时,系统识别出6块磁盘,经过文件系统格式化后,挂载到某个目录下,供应用程序读写。这样其实是没有数据的校验和冗余的,安全性和效率较差。如果安装RAID后,将2块IDE硬盘做成一个RAID0系统,则变成一个16G的虚拟硬盘,将4块SCSI硬盘做成一个RAID5系统,则变成3个磁盘,容量为216G(因为RAID程序需要使用...

2020-11-14 00:06:30 1507

原创 哈希表原理及应用

01背景假设某大学有10000名同学,每个人的学号是由学院-年级-班级-序号组成,例如学号为16140113表示是16系,14级1班的13号。为了快速查找到13号的成绩信息,可以建立一张表,但是不能用学号作为下标,学号的数值实在太大。因此将学号除以1100100取余,即得到编号作为该表的下标,那么,要查找学号为16140113的成绩的时候,只要直接访问表下标为13的数据即可。这就能够在O(1)时间复杂度内完成成绩查找。实际上这里就用到了散列的思想。02概述理想散列表(哈希表)...

2020-11-14 00:05:21 388

原创 单例模式

01背景以我们常用办公软件WPS为例,我们使用的时候期望点击一次工具栏弹出一个对话框,再次点击的时候仍然是当前对话框,而不是出现多个对话框。反映到编程中,其实就是对话框只被实例化一次,这就是单例模式的一个应用场景。02概述单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。根据定义可知单例模式的要点有三个: 1、某个类只能有一个实例;...

2020-11-14 00:03:37 107

原创 设计模式分类及设计原则

01概述设计模式的基础是:多态。学习设计模式将有助于更加深入地理解面向对象思想,让你知道: 1、如何将代码分散在几个不同的类中? 2、为什么要有“接口”? 3、何谓针对抽象编程? 4、何时不应该使用继承? 5、如何不修改源代码增加新功能? 6、更好地阅读和理解现有类库与其他系统中的源代码。 推荐书籍:《设计模式:可复用面向对象软件的基础》《大话设计模式》02分类 1、从目的...

2020-11-14 00:03:04 95

原创 负载均衡算法及方案

01背景面对大量用户访问、高并发请求,单机网站可以从软硬件两个方面寻求解决方法: 1、硬件方面:可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器; 2、软件方面:采用高效率的编程语言(比如Go,Erlang,Scala)等。但是,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。即需要从架构方面寻求解决方案。02概述负载均衡(Load Balance),意思是将负载(如前端...

2020-11-14 00:02:15 541

原创 高并发架构设计

01 概述高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发一方面可以提高资源利用率,加快系统响应速度,但是同时也会带来安全性,分布式事务、死锁等问题。并发:一个处理器同时处理多个任务。并行:多个处理器或者是多核的处理器同时处理多个不同的任务。02度量指标并发的指标一般有QPS,TPS,IOPS,并发用户数,PV,响应时间等。2.1QPS...

2020-11-14 00:01:25 998 1

原创 进程间通信方式

01概述1.1 发展 Linux进程间通信(IPC)大致发展如下:早期UNIX进程间通信、基于System V进程间通信、基于Socket进程间通信和Posix进程间通信。 UNIX进程间通信方式包括:管道、FIFO、信号。 System V进程间通信方式包括:System V消息队列、System V信号量、System V共享内存。 Posix进程间通信包括:Posix消息队列、Posix信号量、Posix共享内存。1.2 目的进...

2020-11-14 00:00:26 382

原创 线程同步与互斥

01概述线程同步,是协调步调,按预定先后次序执行,解决与时间相关的错误。线程不同步,产生的现象就是数据混乱: 1、资源共享(系统层面)2、调度随机(系统层面)3、缺乏必要的同步机制(用户层面,我们可以在这里做限制)多个控制流访问同一共享资源时,必须同步。02互斥锁2.1 概述 当多个线程并发的访问同一个共享资源的时候,可能导致数据异常。可以通过互斥锁确保一个共享资源每次只能被一个线程访问。互斥锁属于重量级...

2020-11-13 23:57:11 738

原创 详解gdb的使用技巧

01概念GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。在实际应用中,有两种调试方法:在线调试和离线调试。离线调试适用于开发测试环境,可以自由启停进程,设置断点;在线调试一般用于现场问题分析,不能随便启停进程,对于技术要求较高。02前提条件2.1 编译若想执行gdb调试,在Makefile文件中需要增加编译调试选项-g,例如:gdbdup_file.c –o dum_file...

2020-11-13 23:54:58 1207

时间触发嵌入式系统设计模式

国外使用比较多的经典嵌入式开发资料,特别好的资料!

2015-08-25

Java函数大全手册

java函数大全

2015-01-28

空空如也

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

TA关注的人

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