自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 分布式事务-理论篇

案例我自己负责的系统中有业务聚合层,暴露了第三方对接的创建接口,功能有两个:创建对应账户(还有一系列配置信息创建),账号和第三方账户绑定。这两个功能其实可以复用底层核心服务域的接口来完成。按照面向过程编程(很多时候就是面向过程),两者前后调用,在没有分布式事务的情况下,如果第二步“绑定第三方账号”失败,无法自动回滚第一步“创建账户”,而要通过手动回滚,逻辑复杂,因为创建附带初始化了很多数据;如果不回滚“创建账户”,第三方再次调用创建会报错“账号已存在”,或者调用免登接口因为无第三方账号映射无法免登。目前

2020-08-18 15:16:44 298

原创 排序算法-计数排序

计数排序,桶排序,基数排序都是不基于比较的算法,所以可以突破O(n*log(n))的时间复杂度下限。计数排序适合 数据集中在一个较小范围的数据集合的排序;否则需要的辅助空间就很大了。桶排序适合 数据分布比较均匀的数据集合的排序;将数据分散到多个桶内,每个桶内采用插入排序(因为分布均匀,每个桶内的数据量小,插入排序还是很高效的)基数排序:个人感觉类似于进行多次桶划分;基数n,就是数据按照规则(...

2020-04-04 14:32:16 300

原创 排序算法-归并,快速,堆排序

归并排序算法原理(从小到大为例):将数组分成两部分,每部分分别排序,形成有序的两部分,然后遍历比较每部分的头部元素,形成新的数组其中,每部分分别排序,递归使用步骤1,递归终止情况为:需要排序的部分只有一个元素图片来源:极客时间,《数据结构与算法之美》,12章时间复杂度:O(n*log(n)),空间复杂度:O(n) ,稳定的排序算法java代码/** * 从小到大排序...

2020-04-04 13:10:06 253

原创 排序算法-冒泡,插入,选择排序

算法原理(从小到大排序为例):将数组分成两部分,左边部分为已排序部分,右边部分为未排序部分从未排序部分的右侧开始遍历,相邻两个元素比较,保证小元素在前,即如果num[j]>num[j+1],就做元素交换,否则不交换交换到左右两部分的边界处,右边第一个元素即为右边部分最小元素,左边最后一个元素即为左边部分最大元素,由于左边部分是右边部分每次从小到大冒泡排序出来的,所以此时左边部分加上右...

2020-04-03 15:24:21 173

原创 pring boot Starter和自动配置

经常会看见一些例如spring-cloud-starter-feign这种maven依赖,或者@EnableMongo注解,直接开始使用相关bean对象实现功能。那么这些东西是怎么做的,有哪几种方式去做。今天有空就梳理一下。因为这里还是一个方法的总结归纳,原理解释还是得看参考资料:【SpringBoot2.x】-自定义Spring boot Starter(原理、demo代码实现以及解决面试问...

2019-11-14 14:49:28 229

原创 Resilience4j+Feign实现熔断,fallback

FeignClient Hystrix超时重试降级讲了Hystrix和feign各自的超时,重试,降级策略。然后Hystrix其实已经不再维护了,社区推荐Resilience4j,阿里有一个开源的sentinel也可以做到熔断限流等功能。网上有一个表格图片,对比了三者的不同。我自己在实际使用中的情况是,服务间调用使用Feign,没有用其他RPC框架,然后想做熔断策略,又不想用Hystrix,毕...

2019-11-11 17:51:02 6720

原创 FeignClient Hystrix超时重试降级

之前在 spring cloud学习笔记-断路器 学过简单的断路器,后来了解到FeignClient 和Hystrix有各自的超时,重试,降级实现方式,所以分开记录一下,应该会时不时的更新目录:1、FeignClient 的超时重试降级1.1 Feignclient 配置全局超时及重试策略1.2 Feignclient 配置独立的超时及重试策略1.3 Feignclient 的fallb...

2019-09-26 18:20:23 4058

原创 mysql数据库笔记(二)(持续更新)

笔记1: 主键id自增,无法插入id=0的记录首先是测试的sql,mysql是阿里云rds,版本5.6.16create table t1(id int UNSIGNED AUTO_INCREMENT primary key, a int ) AUTO_INCREMENT=40;INSERT into t1(`id`,`a`) VALUES (0,0);INSERT into t1(`a`...

2019-08-07 20:26:08 172

原创 mongodb数据库笔记(慢慢更新)

笔记1:mongodb中date类型数据时区问题MongoDB中的Date类型数据只保存绝对时间值,不保存时区信息,所以java服务器的时间是东八区2018-11-22 8:00:00,那么存在mongodb中的时间是2018-11-22 0:00:00。从使用上来说是不会影响正常的时候,在作为查找条件时,java传入参数2018-11-22 8:00:00,可有查找到相应数据。使用可视化工具...

2019-03-21 11:20:39 208

原创 发送邮件带附件,邀请邮件加入日历

1、发送邮件带附件/***@param fileName 附件文件名*@param outputStream 附件的输出流*@param contentType “application/vnd.ms-excel;charset=UTF-8”这是excel附件,其他附件还要稍微改动下**/public Result sendMailWithAttachment(String toEma...

2019-03-15 16:30:21 5387 1

转载 算法-寻找唯一(唯二)未重复的数据

原文发表在公众号“苦逼码农”上,作者“帅地”题目:有一组存放 ID 的数据。并且 ID 取值为 0 - (N-1) 之间,其中只有一个 ID 出现的次数为 1,其他的 ID 出现的次数都等于 2,问如何找到这个次数为 1 的 ID ?解法一:巧用数组下标不知道有多少人还记得我之前分享的巧用数组下标的技巧:一些常用的算法技巧总结。我的第一想法便是采用下标法来解决,把 ID 作为数组 arr...

2019-03-13 19:23:58 933

原创 jdk动态代理

Spring AOP 的实现机制首先是上面这篇文章,介绍了spring aop的实现原理。jdk动态代理的原理是利用InvocationHandler和Proxy两个类。public static void main(String[] args) { UserDefineInvocationHandler invocationHandler = new UserDefineIn...

2019-03-12 10:47:59 1772

转载 转载文章积累-算法

时间轮算法在一些设置超时,或者延迟任务的系统中,如kafka,netty等,会使用时间轮算法netty的时间轮算法的解读Kafka解惑之时间轮

2019-03-08 18:16:24 157

原创 springboot实现远程服务暴露与调用

pom引用<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>5.0.7&l...

2019-02-26 10:58:02 10423 1

转载 关于接口幂等性

概念:幂等性是系统的接口对外一种承诺(而不是实现),承诺只要调用接口成功, 外部多次调用对系统的影响是一致的。这里的多次调用强调是指接口一致,参数一致的情况。为什么需要幂等幂等是为了保证重试机制不会带来数据重复,数据不一致等异常情况。不管在单机还是分布式系统中,都存在因为网络抖动无法收到成功应答;重试补偿机制;用户无意识点击发起多次请求(业务意义上其实是同一条数据记录)等情况带来的相同参数...

2019-02-21 15:43:05 1389

转载 转载文章积累-微服务

Service Mesh 及其主流开源实现解析

2019-02-19 14:42:24 149

转载 转载文章积累-网络

HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事

2019-02-19 11:21:38 448

转载 转载文章积累-linux

nohup,&,ctrl+c,ctrl+znohup 表示离线断开终端,远程系统中可以继续运行& 表示命令即使进入background,也不会被暂停,可以继续运行ctrl+c中断foreground运行命令ctrl+z,将foreground运行的命令暂停于backgroundnohup 和 & 可以混合使用另:可搭配 fg/bg使用,详见参考链接linu...

2019-02-19 11:20:58 166

原创 转载文章积累-中间件

redis实战redis学习系列

2019-02-19 11:20:12 169

原创 转载文章积累-java

Java NIO系列教程理解java NIOjava NIO浅析JAVA环境变量JAVA_HOME、CLASSPATH、PATH配置说明Forkjoin参考链接:https://www.liaoxuefeng.com/article/001493522711597674607c7f4f346628a76145477e2ff82000http://www.infoq.com/cn/ar...

2019-02-19 11:19:16 147

原创 转载文章积累-spring

Spring AOP 的实现机制统一异常、数据校验处理spring优雅停机相关(未整理):https://my.oschina.net/sdlvzg/blog/1590946https://stackoverflow.com/questions/44644141/how-to-stop-a-scheduled-task-that-was-started-using-scheduled-an...

2019-02-19 11:17:19 130

转载 转载文章积累-数据库

浅入浅出』MySQL 和 InnoDB聚集索引和非聚集索引数据库秒级平滑扩容架构方案分库分表带来的问题分库分表需要考虑的问题及思路跨库分页解决方案MySQL InnoDB锁介绍及不同SQL语句分别加什么样的锁...

2019-02-19 11:15:50 148

原创 数据库使用规范

根据以下参考文章,自己整理了一份数据库使用规范:https://blog.csdn.net/u012758088/article/details/77113122https://segmentfault.com/a/1190000012658563https://my.oschina.net/u/182501/blog/1595475《阿里巴巴Java开发手册》数据库基础设置必须使用...

2019-01-14 18:42:04 1341

原创 cglib动态代理过程

参考链接:http://www.importnew.com/28342.html静态代理:编译期将代理方法植入目标方法Jdk动态代理:对于实现接口的类,采用jdk动态代理实现的接口,所以不是接口中定义的方法没办法被代理。JDK动态代理的核心是InvocationHandler接口和Proxy类。Cglib动态代理:对于没有实现接口的类,采用cglib代理,通过动态生成目标类的子类进行代理,所...

2019-01-10 17:29:47 948

原创 排序算法-堆排序

堆排序有最大堆,最小堆。最大堆:非叶子节点比左右子节点要大最小堆:非叶子节点比左右子节点要小以构建最大堆为例,堆排序的过程:1、原始数组形成一个顺序堆。数组中下标索引为i的节点,左节点是i2 +1,右节点是i2+22、初始化堆,从最后一个叶子节点的父节点开始一层层向上遍历,使得每一对父子节点中的最大节点上浮,维持最大堆的性质。如果有交换位置的操作,那么要以被交换的子节点为父节点递归遍历...

2018-12-22 14:51:41 729

原创 线上异常排查汇总【2】(持续更新)

1、redirect导致https变成http最近线上碰见一个问题,应用使用了https,但是页面还是被拦截了,通过抓包发现中间有一段重定向变成了http。根据参考链接:https://blog.csdn.net/zhuye1992/article/details/80496151经过测试,经过如下,浏览器https请求到WAF(防火墙+负载均衡),WAF转发到应用服务器就变成http了。然...

2018-12-11 15:15:19 513

原创 面试准备-java【2】

编译执行,解释执行解释执行:代码仅仅编译成class文件,没有转化为机器码,虚拟机读取一行代码,转化成一行机器码,然后执行。编译执行:代码完全编译成机器码,直接交由机器执行。jvm虚拟机是混合模式,大部分是解释执行,但是对部分热点代码会JIT(just-in-time)编译器,也是我们常说的动态编译器,编译成机器码,此处是编译执行。运行模式可以通过jvm参数来指定。不同平台有不同的解释器,...

2018-12-06 15:06:09 263

原创 无处归类的小知识点(持续更新)

1、移位操作,位或操作,加减操作的优先级Long start = 2L;Long s4 = start -1 << 4 | 2 << 2 | 8 -1;System.out.println(s4);结果:31加减操作的优先级最高,先做然后是移位操作最后是位或,位与操作...

2018-11-08 16:19:58 152

原创 面试准备-java【1】

1、HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)HashMap线程不安全,hashmap允许key,value为nullhashtable线程安全,方法加synchronized,不允许value为nullConcurrentHashMap引入了分段锁HashMap多线程get不安全,多线程扩容阶段中,rehash步骤不安全http://www....

2018-10-22 11:53:19 797

原创 面试准备-jvm(持续更新)

1、详细jvm内存模型共享部分(每个JVM实例一份):1)方法区:共享区域,存储类信息,方法信息,常量,静态变量,JIT编译后的代码等数据。运行时常量池:在方法区内部,保存常量数据,存储字面量和符号引用。常量不仅仅在编译时产生,运行时也可以,比较常用的是String类的intern()方法。关于符号引用说明,参考 https://blog.csdn.net/u014656992/artic...

2018-10-22 11:38:09 290

原创 面试准备-spring(持续更新)

1、BeanFactory 和 FactoryBeanBeanFactory是IOC最基本的容器,负责生产和管理bean,它为其他具体的IOC容器提供了最基本的规范,XmlBeanFactory,ApplicationContext 等具体的容器都是实现了BeanFactory,再在其基础之上附加了其他的功能。FactoryBean是一个接口,当在IOC容器中的Bean实现了FactoryBe...

2018-10-22 11:27:08 475

原创 面试准备-redis(持续更新)

1、Redis用过哪些数据类型,以及Redis底层怎么实现Redis支持五种数据类型:string(字符串,get,set),hash(哈希,hmget,hmset),list(列表,lpush),set(集合,sadd)及zset(sorted set:有序集合,zadd)。http://www.cnblogs.com/binyue/p/5342281.htmlhttps://redisb...

2018-10-22 11:19:42 431

原创 面试准备-数据库(持续更新)

1、mysql分页有什么优化https://blog.csdn.net/zzp448561636/article/details/689528612、悲观锁、乐观锁悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。行锁,表锁,排他锁,共享锁等是数据库的锁机制悲观锁:获取锁之后再执行操作,提交事务后释放锁,实现上使用数据库提供的锁机制适合资源竞争比较激烈,或者锁代价小于回滚代价的...

2018-10-22 11:09:47 306

原创 面试准备-数据结构(持续更新)

1、二叉查找树若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的节点(no duplicate nodes)。2、二叉平衡树,AVL树:首先是二叉查找树,并且左右两个子树都是一棵平衡二叉树,左右子树高度差不超过13、红黑树:首先是二叉查找树,...

2018-10-22 11:07:03 255

原创 redis分布式锁

之前有用zk+curator选出leader,作为分布式锁。后来尝试用redis来实现。版本1加锁public boolean tryLock(String lockKey, Integer expireSeconds) { if (StringUtils.isBlank(lockKey)) { return false; } ...

2018-10-16 11:42:56 148

原创 死磕spring,大致还原spring的bean加载过程

总的来说:对传入的name做转化,去除&开头获得真实beanname,通过aliasMap获取是否有别名检查是否有bean的完整的引用缓存;如果没有,看singletonsCurrentlyInCreation,是不是这个bean正在创建中,看earlySingletonObjects中有没有半成品的bean(初始化但没有set属性);如果还没有,就用beanFactory获取创建中...

2018-10-11 01:13:37 565

原创 linux编译openjdk8

最近在看《深入理解java虚拟机》,第一章主要讲java历史,有点意思的是编译openjdk,想自己试着搞搞,但是书上编译的是7,而且要配置一堆的配置文件,就上网查查,openjdk8貌似不用配置这么多,就试着编译8。纪录一下操作过程。**编译**系统:centOs 7.5 64位(刚开始用的腾讯云1核1g,编译的时候说内存不够,好在腾讯云5天免费退,改成1核2g)1、下载openjdk...

2018-09-19 22:51:08 5039

原创 Scheduled注解使用

1、Scheduled注解用于执行定时任务,参数有以下几种: cron(自定义格式) fixedDelay(上次任务执行结束时间点延迟多久) fixedRate(如果任务执行时间小于rate,那么间隔rate时间执行,如果大于rate,那么上次任务执行完立即执行) 这三种设置间隔的方式只能使用其中一种,不能同时存在。 使用注解时,同时要使用@EnableScheduling注解,开启sc...

2018-08-28 19:03:38 11096

原创 mybatis判空

对于字符串 ibatis中有标签判空 mybatis中只有写<if test="companyName != null and companyName !=''" >判空 还可以引用外部方法<if test="@org.apache.commons.lang3.StringUtils@isNotBlank(companyName)">

2018-07-11 17:33:15 3585

原创 springboot使用velocity以及访问j静态资源

访问静态资源 参考文章:https://www.jianshu.com/p/d127c4f78bb8 参考文章已经写得很详细了,这里就不再赘述使用velocity 参考文章:https://zhuanlan.zhihu.com/p/28251412我遇到的问题和参考文章一样,springboot版本是高于1.5的,但是1.5以后由不支持vm,改成freemarker或者其他要重新学语...

2018-07-11 15:58:26 8707 1

空空如也

空空如也

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

TA关注的人

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