butterfly100
摘要: 目录: 1. 什么是混沌工程? 2. 混沌工程的实践原则 3. 混沌工程的好处 4. 基于上述原则如何落地? 4.1 故障注入能力 4.2 平台化建设 4.3 应用推广 5. 混沌工程的迭代方向 参考 1. 什么是混沌工程? 起源:Netflix 和 Chaos Monkey 2008 年 Netf 阅读全文
posted @ 2021-07-13 20:30 butterfly100 阅读(1848) 评论(0) 推荐(2) 编辑
摘要: 一、JVM的内存区域 对于C、C++程序员来说,在内存管理领域,他们既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。 对Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每个new操作去写匹对的 delete/free 代码,不容易出现内存泄露和内存溢出的问 阅读全文
posted @ 2018-08-31 17:16 butterfly100 阅读(12654) 评论(0) 推荐(3) 编辑
摘要: 一. Dubbo诞生背景 随着互联网的发展和网站规模的扩大,系统架构也从单点的垂直结构往分布式服务架构演进,如下图所示: 单一应用架构:一个应用部署所有功能,此时简化CRUD的ORM框架是关键 垂直应用架构:应用拆分为不相干的几个应用,前后端分离,此时用于加速前端页面开发的Web MVC框架是关键 阅读全文
posted @ 2018-07-08 14:33 butterfly100 阅读(2471) 评论(0) 推荐(2) 编辑
摘要: 一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。 数据库分布式核心 阅读全文
posted @ 2018-05-14 02:26 butterfly100 阅读(145907) 评论(29) 推荐(112) 编辑
摘要: polysh简介 polysh 是一个交互式命令,可以在一台服务器上批量的对一批服务器进行处理,运行交互式命令。官方的简介如下: 注: Polysh 是一个由几个远程脚本集合而成的工具,它被用于在许多服务器上运行一个交互式的远程脚本,由 Python 编写,最低要求为 Python 2.4 当需要查 阅读全文
posted @ 2018-05-09 22:19 butterfly100 阅读(3874) 评论(0) 推荐(0) 编辑
摘要: 本文主要介绍了 Salesforce 对于系统中数据的访问控制是如何设计的,然后也了解了下 Alfresco 和 Oracle VPD 的数据权限机制。希望对一些业务系统的数据权限的访问控制设计能有所参考和启发。 Salesforce 1. 产品功能 salesforce是基于 SaaS 的客户关系 阅读全文
posted @ 2018-05-02 22:29 butterfly100 阅读(7642) 评论(2) 推荐(6) 编辑
摘要: 1. 并发编程的3个概念 并发编程时,要想并发程序正确地执行,必须要保证原子性、可见性和有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。 1.1. 原子性 原子性:即一个或多个操作要么全部执行并且执行过程中不会被打断,要么都不执行。 一个经典的例子就是银行转账:从账户A向账户B转账100 阅读全文
posted @ 2018-04-22 23:35 butterfly100 阅读(1476) 评论(0) 推荐(1) 编辑
摘要: 1. 使用方法 synchronized 是 java 中最常用的保证线程安全的方式,synchronized 的作用主要有三方面: 语义上来讲,synchronized主要有三种用法: 2. 实现原理 2.1. 监视器锁 synchronized 同步代码块的语义底层是基于对象内部的监视器锁(mo 阅读全文
posted @ 2018-04-11 01:43 butterfly100 阅读(2842) 评论(2) 推荐(3) 编辑
摘要: 目录 1 权限控制是什么 1.1 ACL 1.2 RBAC 1.2.1 名词术语 1.2.2 RBAC定义 1.2.3 RBAC分类 1.2.3.1 RBAC0 1.2.3.2 RBAC1 1.2.3.3 RBAC2 1.2.4 RBAC 接口 2 垂直权限(功能权限) 3 水平权限(数据权限) 4 阅读全文
posted @ 2018-04-02 23:05 butterfly100 阅读(7760) 评论(0) 推荐(2) 编辑
摘要: 一、python简介 python语言的特性就是简单优雅,写容易明了的代码,而且尽量写少的代码。python为我们提供了完善的基础代码库,包括网络、文件、DB、文本等。除了内置库外,还有大量第三方库。所以,使用python开发,许多功能不需从零编写,直接使用现成的即可。 python是解释性语言,运 阅读全文
posted @ 2018-02-09 18:58 butterfly100 阅读(1226) 评论(0) 推荐(2) 编辑
摘要: Explain简介 本文主要讲述如何通过 explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。 下面是使用 explain 的例子: 阅读全文
posted @ 2018-01-15 12:26 butterfly100 阅读(37909) 评论(2) 推荐(11) 编辑
摘要: 1. 前言 HashMap是非线程安全的,在多线程访问时没有同步机制,并发场景下put操作可能导致同一数组下的链表形成闭环,get时候出现死循环,导致CPU利用率接近100%。 HashTable是线程安全的,使用synchronized锁住整个table的方式来保证并发访问下的线程安全,但效率却比 阅读全文
posted @ 2017-12-11 01:16 butterfly100 阅读(1230) 评论(0) 推荐(1) 编辑
摘要: HashMap是Map家族中使用频度最高的一个,下文主要结合源码来讲解HashMap的工作原理。 1. 数据结构 HashMap的数据结构主要由数组+链表+红黑树(JDK1.8后新增)组成,如下图所示: 左侧数组是哈希表,数组的每个元素都是一个单链表的头节点,当不同的key映射到数组的同一位置,就将 阅读全文
posted @ 2017-11-15 15:28 butterfly100 阅读(682) 评论(2) 推荐(1) 编辑
摘要: 1. 什么是领域(Domain) 我们所做的软件系统的目的都是来解决一系列问题,例如做一个电商系统来在线销售自己企业的产品;做一个灰度发布平台来提升服务的质量和稳定性。任何一个系统都会属于某个特定的领域,例如: 论坛是一个领域:要做一个论坛,那这个论坛的核心业务是确定的:比如用户发帖、回帖等核心基本 阅读全文
posted @ 2017-11-13 20:01 butterfly100 阅读(15752) 评论(2) 推荐(9) 编辑
摘要: Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服务部署 重构单体应用为微服务(本文) 原文链接:Refactoring a Monolith into Mi 阅读全文
posted @ 2017-11-13 19:38 butterfly100 阅读(746) 评论(0) 推荐(0) 编辑
摘要: Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服务部署(本文) 重构单体应用为微服务 原文链接:Choosing a Microservices Deplo 阅读全文
posted @ 2017-11-13 19:36 butterfly100 阅读(476) 评论(0) 推荐(0) 编辑
摘要: Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理(本文) 微服务部署 重构单体应用为微服务 原文链接:Event-Driven Data Management f 阅读全文
posted @ 2017-11-13 19:06 butterfly100 阅读(522) 评论(0) 推荐(0) 编辑
摘要: Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现(本文) 微服务之事件驱动的数据管理 微服务部署 重构单体应用为微服务 原文链接:Service Discovery in a Microse 阅读全文
posted @ 2017-11-13 19:04 butterfly100 阅读(615) 评论(0) 推荐(0) 编辑
摘要: Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯(本文) 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服务部署 重构单体应用为微服务 原文链接:Building Microservices: Inter- 阅读全文
posted @ 2017-11-13 19:01 butterfly100 阅读(526) 评论(0) 推荐(0) 编辑
摘要: Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关(本文) 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服务部署 重构单体应用为微服务 原文链接:Building Microservices: Using 阅读全文
posted @ 2017-11-13 18:54 butterfly100 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 作者简介:Chris Richardson,世界著名的软件架构师,经典著作《POJOS IN ACTION》的作者,cloudfoundry.com 的创始人 微服务目前正受到大量的关注,成为文章、博客、会议讨论的热点。与此同时,也有人质疑微服务并非新事物,只是SOA(Service Oriente 阅读全文
posted @ 2017-11-13 18:42 butterfly100 阅读(858) 评论(0) 推荐(0) 编辑
摘要: 1. 锁类型 锁是数据库区别与文件系统的一个关键特性,锁机制用于管理对共享资源的并发访问。 InnoDB使用的锁类型,分别有: 共享锁(S)和排他锁(X) 意向锁(IS和IX) 自增长锁(AUTO INC Locks) 1.1. 共享锁和排他锁 InnoDB实现了两种标准的行级锁:共享锁(S)和排他 阅读全文
posted @ 2017-11-13 17:20 butterfly100 阅读(906) 评论(0) 推荐(0) 编辑