- 博客(120)
- 资源 (102)
- 收藏
- 关注
原创 Seata 分布式事务
2PC分布式事务参考https://blog.youkuaiyun.com/hfmbook/article/details/120173076Seata 分布式事务和2PC的区别,2PC在最后提交阶段可能失败,失败了 其他服务事务执行成功,可能存在数据不一致情况。Seata在这里做了一个反向补偿。当某个服务提交失败,其他都提交成功情况,seata会提交一个执行新的sql将数据 回滚到原来的样子。AT 模式一阶段 prepare 行为:在本地事务中,一并提交业务数据更新和相应回滚日志记录。二阶段 commi
2021-09-08 20:11:53
1110
原创 spring boot dynamic datasource
定义数据源的KEYpackage io.app.dynamic;public enum DataSourceKey { DEFAULT,ORDER // 这里可以多个,如果数据源是完全动态的,可以不使用枚举,存在数据库里面。或者另外一种规则,可以完全自定义}定义Holder当前使用数据源的KEYpackage io.app.dynamic;import java.util.ArrayList;import java.util.List; /*如果需要调用某个数据库,需要设置 Dy
2021-09-08 19:43:47
932
原创 分布式事务2PC、3PC过程
2PC1PC阶段这里向协调者注册有事务服务,通常是使用MQ,注册成功后 执行本地事务。提交和回滚是2PC阶段2PC阶段。2PC阶段是提交。首先进行预处理(验证SQL语法,值的范围),然后想协调者commit,协调者返回成功,在执行本地事务。这时候大家能够发现一个问题。这里2PC是弱分布式事务,不不能保证两个事务能够同事执行成功,比如 订单服务的 5commit成功, 支付服务的 5commit失败。那么 订单服务的 事务将不会回滚。发生的概率很低。3PC1PC阶段这里与2PC对比,多了一
2021-09-08 10:05:11
390
原创 Java使用HotSpotVirtualMachine和JMXServiceURL获取JVM进程的内存信息
package com.jvm;import com.sun.tools.attach.VirtualMachine;import org.apache.commons.io.IOUtils;import org.apache.commons.lang3.StringUtils;import sun.tools.attach.*;import javax.management.MBeanServerConnection;import javax.management.remote.JMXCo
2021-07-21 08:25:04
560
原创 高级面试题--SpringBoot启动流程解析
写在前面:由于该系统是底层系统,以微服务形式对外暴露dubbo服务,所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务,而是以执行程序方式启动来发布(参考下图keepRunning方法)。本文以调试一个实际的SpringBoot启动程序为例,参考流程中主要类类图,来分析其启动逻辑和自动化配置原理。总览:上图为SpringBoot启动结构图,我们发现启动流程...
2019-09-03 09:13:32
35429
18
原创 阿里云主机没有swap, 来我们手动给他加一个吧
查看系统当前的分区情况:free -m可以清晰看到,swap total显示未0B,那接下来开始 创建swap分区吧block_size 是swap分区的大小,count 是分区的个数dd if=/dev/zero of=/whatever/swap bs=block_size count=number_of_block设置交换分区文件mkswap /data/swap加入...
2019-08-28 11:46:58
483
原创 Spring Boot面试通关
一.AOP 四个步骤AOP是spring面试经常问的面试题,很多人都卡在这里,我使用简单的三个步骤讲解AOP,更方便记忆1.1创建代理对象相关类:1、AbstractAutowireCapableBeanFactory2、AbstractAutoProxyCreator3、AbstractAdvisorAutoProxyCreator4、AnnotationAwareOrderCom...
2019-08-14 18:15:56
248
原创 redis+lua分布式高并发--限流算法
lua脚本 limit.lualocal key = KEYS[1]local limit = tonumber(ARGV[1])local current = tonumber(redis.call('get', key) or '0')if current + 1 > limit then return 0else redis.call("INCRBY", key,"1...
2019-08-05 13:57:09
807
原创 redis高性能分布式锁
<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>2.11.5</version></dependency>import org.redisson.Redis...
2019-08-02 17:18:05
358
原创 zookeepr 实现分布式锁
引入jar包<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.0.0</version&...
2019-07-15 19:29:08
169
原创 Redis-ShardedJedis
redis 通过key进行shard ,将key放到不同的 redis缓存数据库上public class RedisApplication { public static final Pattern KEY_TAG_PATTERN = Pattern.compile("(.{1})"); public static ShardedJedisPool jedisPool(){...
2019-07-04 15:53:01
248
原创 架构师技术选型 -- 我们如何选择MQ
参与选型的MQactivemq,RocketMQ,rabbitmqactivemq单机吞吐量:万级topic数量都吞吐量的影响: 时效性:ms级 可用性:高,基于主从架构实现高可用性 消息可靠性:有较低的概率丢失数据 功能支持:MQ领域的功能极其完备 总结: 非常成熟,功能强大,在早些年业内大量的公司以及项目中都有应用 偶尔会有较低概率丢失消息 ...
2019-06-04 17:49:43
1268
原创 spring-boot应用之Kubernetes微服务实践
一、Kubernetes 安装简介:kubernetes 是什么? 首先,它是一个全新的基于容器技术的分部署架构领先方案。这个方法虽然还很新,但它是谷歌十几年依赖大规模应用容器技术的经验积累和升华的一个重要成果。确切的说Kubernetes是谷歌严格保密十几年的秘密武器--Brog的一个开源版本。1.1 机器配置节点名称 hostname 组件 ip...
2019-03-26 19:41:15
1708
原创 微服务-调用连选型报告
什么是调用链一个业务功能可能需要多个服务协作才能实现,一个请求到达服务A,服务A需要依赖服务B,服务B又依赖服务C,甚至C仍需依赖其他服务,形成一个调用链条,即调用链。微服务为什么要使用调用链微服务是一个特别复杂的系统,微服务存在一下几个缺点:出现问题后,定位困难,需要对整个调用链路有个完善的监控链路复杂,需要清晰的链路图谱反映服务之间的依赖、调用关系整体系统性能及运行情况,需要明...
2019-01-02 10:55:35
380
原创 Docker-swarm 集群
集群列表 主机名 IP地址 备注 k8s1 192.168.18.111 主节点 k8s2 192.168.18.112 node1配置docker启动参数vim /usr/lib/systemd/system/docker.service 只需要修改复制出来的这一行,其他的不要做任何改变,节点每台机器都要做该修改E...
2018-04-14 20:14:17
472
原创 ajax跨域解决方案
1、spring 解决跨域方案1 JSONP参考该文档: http://hpgary.iteye.com/blog/2389640 2、spring 解决跨域方案2服务器端resetful接口类或者方法上加注解 @CrossOrigin,一键轻松实现跨域,类写法如下:@RestController@CrossOriginpublic class TestController ...
2018-04-08 20:27:54
433
原创 docker-compose 快速入门
简介Compose是定义和运行多容器Docker应用程序的工具安装 dockerhttps://blog.youkuaiyun.com/hfmbook/article/details/70209155安装 docker-compose根据不同的操作系统下载不同的软件 https://github.com/docker/compose/releases/ ,下载下来 后更改文件名为...
2018-03-26 16:13:17
905
原创 Mysql-GTID复制跳过错误的方法
gtid复制出现错误是个比较麻烦的问题,需要人工处理,如果直接跳过可能导致数据丢失或者数据不一致的情况,所以建议人工处理。下面我来介绍Mysql gtid复制出现错误的情况,按照下来方式处理前必需找出错误的sql和错误的数据,处理完成前将数据修改成为一致数据。1、数据库版本mysql >select version()+-----------------------------...
2018-03-01 21:41:26
1950
原创 Mysql 基于GTID的复制
一、什么是GTIDGTID(GlobalTransaction ID)是Mysql5.6开始的一种新的主从复制方式,其实现方式和基于日志点的复制存在很大差异。原来基于日志点的复制方式中,从db链接主db从哪个日志文件的偏移量开始增量同步,如果偏移量设置不对就可能造成遗漏或者重复同步数据。GTID复制中,从库会讲主库上所有没有在从库上执行的事务执行一次,并且保证只执行一次。 说了这么多到底什么...
2018-02-28 09:51:35
659
原创 数据库中间件---Mycat配置
一、配置文件1.1、schema.xmlschema.xml 作为 MyCat 中重要的配置文件之一,管理着 MyCat 的逻辑库、表、分片规则、 DataNode 以及 DataSource。弄懂这些配置,是正确使用 MyCat 的前提。这里就一层层对该文件进行解析。1.1.1 熟悉schema.xmlschema 节点用于配置Mycat逻辑库,这里可以拥有多个逻辑库,...
2018-02-01 11:18:16
795
原创 数据库中间件---Mycat入门
入门宣言:不怕从零开始,只怕从未开始。1、Mycat简介(摘自Mycat权威指南 http://www.mycat.io )2013 年阿里的 Cobar 在社区使用过程中发现存在一些比较严重的问题,及其使用限制,经过 Mycat 发 人第一次改良,第一代改良版——Mycat 诞生。 Mycat 开源以后,一些 Cobar 的用户参与了 Mycat 的 开发,最终 Mycat 发展
2018-01-31 17:55:01
3267
1
原创 Java缓存技术-google guava cache
一、简介guava和ehcache一样也是本地缓存,虽然都是本地缓存,但是有着不同的使用场景。guava是谷歌提供的一个Java工具包,而Guava的Cache部分提供了一套分词完善的本地存储缓存机制,在Guave之前ConcurrentMap,因为能友好的支持并发而经常被用作本地缓存,但它毕竟不具备缓存的一些特性,比如缓存过期,缓存数据加载和刷新等。 二、使用场景1、原意消耗一些
2018-01-09 07:46:57
4704
原创 Java 动态加载jar包
最近在研发一款maven插件一键生成增删改查的插件,需要动态加载 数据库驱动包到内存中import java.io.File;import java.io.IOException;import java.lang.reflect.Field;import java.net.URL;import java.net.URLClassLoader;import org.apache.commons
2017-05-27 16:17:58
3262
原创 Linux dns-server 搭建
安装软件yum install -y bind bind-utils新增配置假如配置 www.bidcloud.local 到 12.12.12.12 上 新增配置文件 /var/named/bigcloud.local.zone$TTL 1D@ IN SOA ns.bigcloud.local. admin.bigcloud.local. ( 201
2017-05-20 21:30:48
1026
原创 Activemq 消息服务
1、简介ActiveMQ 自己看百科2、下载安装 去 apache 官网下载,http://archive.apache.org/dist/activemq/ 3、安装a、解压tar -xvf apache-activemq-5.14.4-bin.tar.gz b、拷贝到/usr/local下mv apache-activemq-5.14.4 /usr/local/
2017-04-17 11:29:53
571
原创 Java大端字节和小端字节
1、什么是大端和小端1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。举例说明:例如数字0x12345678在内存中表现形式为:1)大端模式:低地址 -----------------> 高地址0x12 | 0x34 | 0x56 |
2017-04-17 11:29:47
8501
原创 Mysql 事务
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。一、Read Uncommitted(读取未提交内容)在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)
2017-04-17 11:29:40
2046
2
原创 Spring Boot 动态创建Bean
1、通过注解@Import导入方式创建a、新建MyImportBeanDefinitionRegistrar注册中心import org.springframework.beans.factory.support.BeanDefinitionRegistry;import org.springframework.beans.factory.support.GenericBeanDefi
2017-04-17 11:29:33
7261
原创 Java EhCache
1、配置文件ehcache-setting.xml <!--缓存配置name:缓存名称。 maxElementsInMemory:缓存最大个数。 eternal:对象是否永久有效,一但设置了,timeout将不起作用。 timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属
2017-04-17 11:29:24
466
原创 Linux安装svn
1、查找svn安装的软件 yum list | grep subversion 安装红色区域的那一个即可 安装命令如下: yum install -y subversion 2、查找版本号svnserve --version 3、创建仓库目录 可自定义mkdir -p /home/svn/svnfile 4、初始化仓库svnadmin create
2017-04-17 11:29:18
249
原创 ansible 安装 httpd-2.4.25 启动httpd
一、下载httpd, apr, apr-util 源码包httpd 源码包http://httpd.apache.org/download.cgi#apache24 apr和apr-util源码包http://apr.apache.org/download.cgi 二、编译httpd 1、解压三个软件包,将apr和apt-util解压放入httpd-2.4.25/srcli
2017-04-17 11:29:10
1449
原创 Spring security 安全设置
1、CSRF攻击CSRF 又称跨域请求伪造,攻击方通过伪造用户请求访问受信任站点。 举个例子用户通过表单发送请求到银行网站,银行网站获取请求参 数后对用户账户做出更改。在用户没有退出银行网站情况 下,访问了攻击网站,攻击网站中有一段跨域访问的代码, 可能自动触发也可能点击提交按钮,访问的url正是银行网 站接受表单的url。因为都来自于用户的浏览器端,银行将 请求看作是用户发起
2017-04-17 11:29:02
4425
原创 Spring Boot Mvc 单元测试
1、开发 都是需要保存测试代码的,mvc也不例外,都需要写测试代码,下面写了一个简单的mvc 但愿测试的代码. import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.sprin
2017-04-17 11:28:55
1473
原创 spring boot 采用https启动
1、生成密钥文件,keytool 是java的一个命令 keytool -genkey -alias hpgary -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 2、放到spring boot项目的 resource源码包下 3、修改配置文件 ap
2017-04-17 11:28:47
1388
原创 初探Spring Security
一、简介Spring Security是Spring社区的一个顶级项目,也是 Spring Boot官方推荐使用的Security框架。除了常规的 Authentication和Authorization之外,Spring Security还 提供了诸如ACLs,LDAP,JAAS,CAS等高级特性以满足复杂场景下的安全需求二、理解1、从AAA说起【中文名称】:鉴权、授权和计费
2017-04-17 11:28:41
1064
原创 docker && dockerfile
# docker 一、简介Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 二、安装 # Centos 7yum install -y docker #启动/etc/init.d/docker start 三、日常操作#a、下载镜...
2017-04-17 11:28:33
564
原创 Linux-NFS
NFS 1、简介NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。 Ubuntu系统搭建nfs服务器安装 nfs-kernel-server apt-get
2017-04-17 11:28:22
280
原创 Java Benchmark 基准测试
import java.util.Arrays;import java.util.concurrent.TimeUnit;import org.openjdk.jmh.annotations.Benchmark;import org.openjdk.jmh.annotations.BenchmarkMode;import org.openjdk.jmh.annotations.
2017-04-17 11:28:13
8980
原创 keepalived 高可用,监控web服务器状态
一、keepalived 高可用,监控web服务器状态4.1 安装 两台机器,一组一丛 yum install -y keepalived 主机器配置,虚拟ip为:192.168.1.100vrrp_instance VI_1 { state MASTER # 备用服务器上为BACKUP interface eth0 virtual_rout
2017-04-17 11:28:05
1696
1
hadoop snappy加密包
2015-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人