- 博客(21)
- 资源 (6)
- 收藏
- 关注
原创 分库分表
什么是分库分表分库分表是在系统承受大量数据前提下提供的一种解决方案,如数据表中存在百万甚至千万的数据,每次的查询更新操作对IO,CPU,数据库都是一次考验。不仅是性能的降低,甚至业务系统要承受着数据库宕机的风险。而分库分表是将数据进行拆分,按照业务或者热点数据拆分到不同的数据库表中,使得数据库承受的压力分摊到不同的节点上从而提高系统稳定性及性能。数据库分库分表主要包括四类:垂直分表垂直分库水平分表水平分库垂直分表垂直分表定义:将一个表按照字段分成多表,每个表存储其中一部分字段。垂直
2021-02-19 10:55:04 448 2
原创 设计模式概括
设计模式是工程设计中积累出经验,是软件开发过程的总结。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。设计模式的六大原则设计模式遵循六大原则:开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、迪米特法则及合成复用原则开闭原则(Open Close Principle):对扩展开放,对修改关闭。程序尽量支持扩展而避免去修改原有代码里氏代换原则(.
2021-02-18 11:40:56 155
原创 UML 类关系图
在UML类图中,常见的有以下几种关系:泛化/继承(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)类图基本属性类在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示。例如下图Person类,包含了name、age等属性,还有eact、drink方法等。属性与方法前的 +/-表示权限,其含义分别是-表示pr
2021-02-18 11:34:37 2283
原创 seata TCC事务流程
TCC是一种资源服务化的两阶段提交协议,用户需要实现Try、Confirm/Cancel接口。通过一阶段的Try操作决定执行Confirm(确认)或者Cancel(取消)操作。Seata TCC三种接口去对资源进行管理prepare资源预留commit资源提交rollback 资源回滚然后将分支事务纳入到全局事务中,对全局事务管理。使用通过与Spring的结合使用了解Seata TCC模式的执行流程。定义接口,通过实现接口去进行资源的预留提交和回滚操作,每个分支事务都是RMpub
2020-05-11 11:39:36 998 2
原创 seata server启动源码
版本:1.2.0Seata主要包括三大组件:TC、TM和RM。TC(Transaction Coordinator)主要负责全局事务的提交和回滚,是seata的关键组件。对可用性及性能都有着较高的要求。seata TC实现源码Server的各个包:coordinator:协调器核心模块event:事件管理模块lock:资源锁模块metrics: metrics指标模块sessi...
2020-04-25 11:27:31 1420
原创 seata 简介
背景在分布式微服务架构中,应用部署在不同的服务器环境中,因此需要服务与服务之间远程协作才能完成事务操 作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务,如何解决分布式事务问题也是在分布式架构系统所必须考虑的。seata是ali开源的分布式事务解决方案,提供了AT、TCC、及SAGA(长事务)、XA等模式。seat架构seata 是将各分布式分支事务统一为全局...
2020-04-16 18:37:27 1760
原创 Ehcache 3 官方文档整理
介绍什么是Ehcache?Ehcache 是一个开源的、基于标准的,健壮、可靠、快速、简单、轻量级的java分布式缓存,支持与其他框架的集成,是Hibernate默认的CacheProvider。同时也实现了JSR107的规范,是Jcache的一种实现。Ehcache 目前提供四层模型,支持四种级别:heapoff-heapdiskclustered分层架构Ehcache3....
2020-04-13 12:30:09 3600
原创 Synchronizied锁原理及锁优化
基本原理解析synchronized可以修饰方法与代码块,首先看下在同步代码块中的实现方式同步代码块public class Monitor { public void synCodeBlock() { synchronized (this) { System.out.println("running"); } }}...
2020-02-26 11:37:04 346
原创 Log4j2配置与自定义
新需求要在log4j上做些自定义的东西,所以补了log4j2这一块的东西配置先看下log4j2的传统配置<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN"> <properties> <property name="log_path">C:/<...
2020-01-17 17:44:20 3161 1
原创 观察者模式
介绍观察者模式(有时又被称为模型(Model)-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。 --百度百科观察者模式是一种对象行为模式。当然必须存在两种对象,观察者和被观察...
2019-08-16 15:51:39 126
原创 Mybatis主键返回策略
MyBatis 主键返回策略最近在项目中需要用到MyBatis的主键返回策略,感觉官方文档给的例子很简短,上网搜索时又被人所误导,可能也是自己没认真看官方文档,特此记录。背景Mysql 数据库表主键自增(注意当表主键已设置自增时使用下面实现,MyBatis存在两种实现)先把实现展示下实现这个是我最终的实现,其实很简单。Mapper接口@Mapperpublic interf...
2019-08-14 17:38:10 923
原创 多线程Callable与Future
由于Runnable接口只能实现程序的操作无法返回数据,所以在需要返回结果的多线程操作中局限性就凸现出来。而Callable接口则可以实现结果的返回,同时Future则提供了线程任务的取消,查询是否完成,获取结果等。Callable@FunctionalInterfacepublic interface Callable<V> { /** * Computes ...
2019-07-25 11:31:21 213 1
原创 Prometheus ubuntu安装使用
Prometheus ububtu安装普罗米修斯是一款开源的监控报警工具,下面介绍在linux的安装过程环境准备环境版本操作系统ubuntu16.04Prometheus2.2.1GO1.8.3Grafana5.2.3go环境安装Prometheus需要go语言环境,先安装gotar -xzf go1.8.3.linux-amd64.t...
2019-04-09 09:08:20 4244
原创 SpringCloud Config
SpringCloud Config分布式配置在微服务数量越来越多,同时配置文件也变得越来越多,如何管理这些配置文件是一个问题。SpringCloud 提供了解决方案,分布式配置。它支持将配置文件配置在本地和远程的git仓库。主要功能点:提供服务端和客户端支持集中管理各环境的配置文件配置文件修改快速生效版本管理简单搭建新建ConfigServer模块,并创建applicati...
2019-02-28 17:46:24 238
原创 SpringCloud Alibaba Sentinel
为什么需要服务熔断和降级微服务是当前业界的一大趋势,原理就是将单一职责的功能模块独立化为子服务,降低服务间的耦合,服务间互相调用。但是这样也会出现一些问题:大量微服务互相调用,存在大量的依赖关系,难免会出现某个服务故障,然后变成级联故障,最终导致系统不可用的坍塌,也就是服务雪崩。当然还有某些场景,在一些时间段某些服务会出现高并发的情况,而某些服务占用着那些紧缺的资源显然是不太合理的,...
2019-02-01 14:12:00 4688
原创 Maven插件开发
Maven插件开发HelloWorld命名规范:插件命名为<youurplugin> -maven-plugin。maven-<yourplugin>-plugin是Maven官方插件命名规范,不可使用。新建Maven项目groupId:com.fxtahe.pluginartufactId:fx-maven-pluginpom文件设置打包方式<packa...
2019-01-31 10:08:31 5293
原创 Spring使用ActiveMQ
背景相信各位一定在网上买过东西、收过快递。在过去,快递员需要送到你家门口而你恰好有事不在家,所以快递员只能拿着快递给你打电话最后只能在你家门口等待。很大的可能就是你需要跑到快递点自己取快递。这种情况我们称之为同步通信。 现如今出现了类似蜂巢的快递寄存服务,快递员大可以将你的快递放到蜂巢等你自己回来取快递。快递员再也不用担心客户不在家的情况。这种不需要等待服务端是否处理完毕,甚至不需要知道...
2018-09-16 17:34:56 549
原创 Spring整合redis
Spring Data RedisRedis介绍 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库 Redis 是如今的互联网较为流行的NoSQL数据库,解决了一些高并发应用场景的需求问题。例如抢红包,秒杀活动,这些应用的实现主要得益于Redis数据库高性能、高响应特性。 Redis作为主流Redis数据库拥...
2018-09-09 11:45:37 110
原创 Python socket编程
socket编程网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 socket又叫“套接字”,网络通信通常通过“套接字”发出网络请求或应答网络请求。socket()函数Python中用socket()函数创建套接字。 语法:socket.socket([family[,type[,ptoto]]])family:套接字地址...
2018-03-28 10:46:16 136
原创 深入浅出装饰器
装饰器(Decorate)是Python中较为晦涩难懂的一节,并且在大量的场景中都有应用,如插入日志,性能测试等,各类框架中也有装饰器的应用。其主要作用是在为对象添加功能的基础上,将大量与对象无关的重复代码抽离出来并加以复用,简而言之,就是在不修改对象的前提下,为已定义对象添加额外功能。 举个栗子,我们为函数加一个输出日志def log(func): def warper(*ar
2018-02-01 18:07:16 230
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人