自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 重学设计模式之跟Mybatis学动态代理应用

重学设计模式之跟Mybatis学动态代理应用一、本文主旨二、抛出问题1、Mybatis 开发为何通过接口就可以执行sql?1、MapperProxy2、MapperProxyFactory2、SqlSessionTemplate 是如何实现线程安全的?三、总结一、本文主旨在上一篇,重新学习了代理模式的基本使用。本篇,我通过Mybatis源码中的动态代理使用,加强对代理模式应用的理解和掌握。代理...

2019-11-09 18:43:33 429

原创 Mybatis中 foreach、batch、MyBatisBatchItemWriter批处理性能测试

Mybatis中 foreach、batch、MyBatisBatchItemWriter批处理性能测试Mybatis批处理的几种方式相关说明必读Mybatis foreachMybatis batchMyBatisBatchItemWriter两种实验结果结论思考Mybatis批处理的几种方式最近研究到Mybatis-Spring整合包,发现其中对Spring batch(Spring开源的...

2019-09-05 19:02:55 5955 1

原创 Mybatis与Spring集成时都做了什么

Mybatis与Spring集成时都做了什么?本篇主旨介绍模块介绍一、初始化相关1) SqlSessionFactoryBean2) 两个重要属性二、事务管理1) 事务管理器配置2) 编程式事务三、SqlSessionSqlSessionTemplate四、映射器1) 映射器的注册2) MapperFactoryBean源码解析五、总结本篇主旨介绍Mybatis是java开发者非常熟悉的ORM...

2019-08-03 20:20:31 595

原创 数据源动态切换、跨库事物失效问题解决方案

数据源动态切换、跨库事物失效问题解决方案一、问题出现的场景二、跨库事物失效的原因三、解决方案1、自定义跨库事物注解2、对有标记的请求、保存数据库链接、关闭自动提交3、对开启了跨库事物方法进行拦截、标记、提交/回滚四、注意事项五、压测报告结论:解决方案性能ok一、问题出现的场景系统架构设计、每个企业一个企业库、通过数据源切在平台库、和企业库之间动态切换完成业务操作。二、跨库事物失效的原因1、Spring@Transactional不支持跨数据源事物,Spring 事物控制是基于数据库链接进行的,当数据

2021-04-09 21:50:23 4760 14

原创 【HikariCP源码分析】从FastList看HikariCP为什么更快

从FastList看HikariCP为什么更快?HikariCP之所以快得益于:1 、优化并精简字节码2 、使用FastList替代ArrayList3 、ConcurrentBag:更好的并发集合类实现本篇只分析FastList。我们从被引用处着手,PoolEntry构造函数中初始化FastList,使用了new FastList<>(Statement.class,...

2019-12-18 00:39:16 630

原创 【HikariCP源码分析】HikariCP获取链接可靠性

Hikari链接有效性? boolean isConnectionAlive(final Connection connection) { try { try { //如果支持Connection networkTimeout,则优先使用并设置 setNetworkTimeout(connection, vali...

2019-12-17 23:06:18 743

原创 字符串拼接-容易被忽视的代码性能陷阱

字符串拼接-被忽视的代码性能陷阱本文主旨从0开始探索字符串拼接方式一、String方式二、StringBuilder方式三、StringBuffer思考1、 String 的字符串连接操作为什么慢呢?2、 StringBuilder 和 StringBuffer 为什么快呢?3、 StringBuilder 为什么比 StringBuffer 还要快呢?本文主旨通过JMH(一个牛逼的基准测试工...

2019-12-10 20:23:17 876

原创 Sharding数据源熔断方案

Sharding数据源熔断方案一、缘起二、需求分析三、方案设计1、熔断方案2、熔断策略3、方案总结四、实现方式一、缘起订单系统使用sharding进行分库分表,共8个分库,其中一个分库因为某种特殊情况响应极慢,每个请求都要等待请求超时,加之订单系统qps较高、针对这个分库的请求夯住、很快导致Dubbo线程池被占满,整个应用不可用。二、需求分析一次sharding操作会被路由到不同分库上执行...

2019-12-04 18:51:49 927

原创 Spring、Springboot 应用启动为何这么慢,能否加速?

Spring、Springboot 项目启动能否加速?一、Mac二、较大型应用三、授之以渔本文是对Spring应用启动耗时问题的分析总结。一、Mac部分mac上存在dns查询缓慢会导致应用启动慢。这个问题之前已经总结过,请走 传送门。二、较大型应用经分析是Spring 同步初始化本身的问题,应用中bean数据多,便会造成初始化耗时长。spring issues 查看详情改进措施1、应...

2019-11-27 20:19:50 2526

原创 从Java8排序看起,掌握排序算法应用

Java8排序实现原理,了解一下?一、实战1、数据准备2、测试用例1、java8之前写法2、Comparator3、运行结果二、源码解析1、Collection.sort()2、list.sort()2、Timesort三、常用排序算法1、如何选择合适的排序算法?2、重要概述一、实战1、数据准备1)Order bean 承载排序数据//使用lombok插件生成 set、get等方法@D...

2019-11-20 07:59:18 512

原创 你的mac跑java应用是否较慢?

你的mac跑java应用是否很慢?一、缘起二、追踪1.Jprofiler 监控2.调试&google大法三、解决一、缘起最近做Springboot工程应用优化,通过Jprofiler java性能分析工具监控,发现在我mac上应用启动进行了三次jdk的dns查询,且耗时严重。如果觉得一次应用启动20秒左右挺快,出门右转、不送。本文针对mac 加 java用户,欢迎对比自己mac情况...

2019-11-19 17:36:23 998 1

原创 JProfiler安装&快速上手

JProfiler安装&快速入门一、安装1、官网下载2、注册码激活3、idea集成二、快速入门1、运行2、查看执行结果一、安装1、官网下载1、下载JProfiler。 点这里去官网下载我选择了最新版本。即JProfiler-11.0推荐使用,后续有注册码,亲测可用!(下载后无脑安装即可)2、注册码激活邮箱、公司名随便填。序列号:L-J11-Everyone#speed...

2019-11-16 18:00:50 1373 1

原创 线上bug! Sharing-JDBC第一次查询为什么这么慢?

Sharing-JDBC第一次查询为什么这么慢?一、缘起二、追踪过程1、问题复现2、问题追踪1)github Issues 寻找线索2)分析对比三、结论一、缘起内部框架发布了新版本,有开发反馈sharding查询慢。通过一系列对比分析之后解决了问题。本文对过程中的一些思考,思路做个总结。二、追踪过程1、问题复现示例大致重现如下: @Test public void testInse...

2019-11-16 16:18:06 3073 1

原创 数据结构之链表:彻底搞懂单链表反转

数据结构之链表:彻底搞懂链表反转一、链表概述二、图解链表反转1、代码实现2、测试验证3、图文解析一、链表概述二、图解链表反转1、代码实现ListNode是一个链表类,维护了头节点、节点数,内部类实现Node节点类。public class ListNode<Integer> { //头部节点 Node<Integer> head; //节点...

2019-11-12 07:51:49 388

原创 重学设计模式之代理模式

设计模式实战之代理模式一、代理模式1、定义2、举例3、作用二、代理模式分类1、静态代理2、动态代理1)jdk 动态代理1)cglib 动态代理三、代理总结1、静态代理2、动态代理3、实现原理一、代理模式1、定义代理的含义:给某个具体对象提供一个代理对象,并由代理对象控制对原对象的引用。类似我们生活中常见的中介。2、举例举个栗子:我想买辆二手车我需要做对事情:1、寻找二手车卖家。2、...

2019-11-07 22:23:18 521

原创 Sharding-JDBC多表路由性能大bug?

Sharding-JDBC多表路由性能大bug?一、发现问题1、现象二、源码寻找答案1、StandardRoutingEngine#route2、StandardShardingStrategy#doSharding3、SQLExecuteTemplate#executeGroup三、如何改进1、思考1)sharding官方为什么这样实现?我的猜想2)我的改进方案2、我的改进1)对Standard...

2019-11-05 22:32:30 2734 3

原创 重学设计模式之跟sharding学适配器应用

设计模式之跟sharding学适配器应用一、适配器模式概念1、什么是适配器模式?2、适配器有什么作用?3、角色分类1、Target 目标抽象类2、Adaptee 适配者类3、Adapter 适配器类二、适配器演示1、类适配器2、对象适配器3、缺省适配器三、适配器模式在Sharding中的应用四、总结一、适配器模式概念1、什么是适配器模式?适配器模式(Adapter Pattern):将一...

2019-11-04 22:02:44 498

原创 我是如何探索Sharding-JDBC源码的?sharding源码学习从0到1

一文理清sharding-JDBC主脉络本文主旨一条sql 引起的反思寻找Sharding-JDBC 主脉络1.从sharding源码包结构寻找线索2)shrding-jdbc-core 提供的对于jdbc规范的重写3)sql路由3)sql路由3)sql路由3)sql路由2.debug关键节点验证执行流程本文主旨本文尝试,以自上而下的方式,从整体脉络、从大方向上阐释sharding-jdbc在...

2019-11-03 20:20:39 1304

原创 final、static、和单例模式

final、static、和单例模式finalstaticstatic引用和普通引用有什么区别?单例模式懒汉式饿汉式final、static、和单例模式的关系?独学而无用,则孤陋而寡闻设计模式主题写了一篇单例模式以后,有朋友建议,写下final 和单例的关系,于是准备顺便写下final、static。finalfinal、意为最终的。final修饰的变量在定义之后必须立即赋值,不能被修改。...

2019-10-31 21:49:39 803

原创 技术人对于减肥的反思

技术人对于减肥的反思一、为什么想减肥?二、大部分人减肥都会做些什么?三、为什么容易放弃?变瘦的本质常见误区有哪些四、能否较轻松达到可持续的减脂目的?五、补充说明改变的悖论:接纳带来改变,对抗只会越陷越深。只有心瘦了,身体才会真正的瘦下来。运动中断的影响力最后强调:独学而无友,则孤陋而寡闻。一、为什么想减肥?受模糊的情绪支配 恐惧(胖子没人爱) 欲望(脱单,成为更好的自己)二、大部分人减肥都会...

2019-09-30 16:19:57 618 1

原创 重学设计模式之单例模式

本文将从经典单例模式的实现原理,改进方案出发,总结单例模式常见使用方式。单例模式的作用保证在Java应用程序中,一个类Class只有一个实例存在。 使用单例模式还可以节省内存,有利于Java垃圾回收。单例模式的意义有些对象我们只需要一个,如线程池,缓存,硬件设备等如果存在多个实例会有造成冲突,结果不一致性的问题。很多无状态对象我们希望通过使用单例,来节省资源,如Spring框架管理be...

2019-08-25 19:56:29 203

空空如也

空空如也

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

TA关注的人

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