自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 WebFlux知识

NIO出现的背景:传统thread per request模式,BIO,效率低下,经常出现IO操作阻塞线程执行情况。导致线程资源浪费。NIO通过引入事件订阅模式(观察者模式)。有效的防止了IO操作阻塞线程执行,节约了线程资源。响应式的发展:受NIO,异步消息队列的启发。针对服务间的调用,响应式将其转化成事件流,异步回调函数,规避了IO阻塞线程执行的问题。响应式可以看成在一个jvm里,通过引入消息队列,完成了服务调用的解耦。...

2021-10-21 15:26:07 128

原创 千万记录表不加索引确实慢

查一次两秒多建索引很快,30多秒就建好了

2021-10-12 17:23:22 138

转载 mybatis 源码分析(五)Interceptor 详解

阅读目录一、mybatis 拦截器主体结构二、PageHelper 拦截器分析本篇博客将主要讲解 mybatis 插件的主要流程,其中主要包括动态代理和责任链的使用;一、mybatis 拦截器主体结构在编写 mybatis 插件的时候,首先要实现 Interceptor 接口,然后在 mybatis-conf.xml 中添加插件,<configuration><plugins><plugin interceptor="***.interceptor1"/&g

2021-06-30 15:22:49 382

转载 MyBatis源码剖析 - MyBatis 插件之拦截器(Interceptor)实现原理

转载(https://blog.csdn.net/top_code/article/details/55657776在上一篇文章:MyBatis 教程 - MyBatis插件(Plugins)开发 中已经介绍了如何去开发一个MyBatis 插件,本文将结合MyBatis 源码来揭秘MyBatis Plugins内部实现原理。Mybatis3 插件采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的)。本文分析使用的MyBatis 源代

2021-06-30 15:04:12 283

原创 java动态代理

静态代理不灵活,需要给每个被代理的类生成代理类,需要定义很多代理类,代码量会很大。动态代理通过两步实现灵活代码:通过反射技术调用被代理对象的方法,这样我们可以灵活的做方法增强。通过实现InvokationHandler,我们通过Invoke方法里的反射技术去“操作”代理对象。Invoke里可以写入增强代码。通过反射技术生成代理类。继承相同的接口,代理类的“外观”和被代理类完全一样。但其实只是个皮囊,里面还是将调用方法的“请求”,转发到到上一步中的InvokationHandler实现类中。通过

2021-06-29 20:03:39 72

原创 lg-Mybatis笔记

lg训练阶段一Mybatis直接调用jdbc的缺点:数据库地址配置,sql存在硬编码问题结果集封装繁琐重复代码,获取数据源连接,获取SqlSession等套路代码自定义数据库持久层的三板斧:配置文件,反射技术与简单的协议,代理对象通过配置文件结合简单协议,利用反射技术实现结果集的自动封装通过Spring代理对象,反射技术,可复用的执行jdbc的“套路代码”,被封装起来。调用方不需关注。总之,调用方从复杂的jdbc调用“泥潭”中解放了出来,调用方只需简单的做好配置文件,只需关注接口和实

2021-06-29 19:36:22 156

原创 linux使用

使用apt下载出现failed to fetch 错误。设置妥当DNS服务器即可.$ sudo vim /etc/resolv.conf 修改DNS: nameserver 8.8.8.8nameserver 8.8.4.4然后重启网络服务:sudo /etc/init.d/networking restart再次执行sudo apt-get update命令,结果一切正常。解决方法:修改dns地址重启网络服务使用apt update重新修复...

2021-06-18 17:27:35 49

原创 Typro使用技巧

两个文件之间快速复制图片的方法A文件里的图片是放在与md文件同一个父目录的images文件夹下。引用图片使用的是相对路径。直接复制A文件的包含图片的内容,粘贴到B文件。会发现Typro自动把图片相对路径,转为绝对路径。我们只要右击B文件里的绝对路径,将图片复制到B文件自己的图片文件夹里。就完成了图片的复制。...

2021-05-28 11:25:17 1202

原创 代码大全笔记

烧脑的魔法数字为避免出现魔法数字,可以在很多地方看到。枚举的使用,用域名替代真实ip。都是为了用一个直观的有意义的名字,替代无意义的一个数字。比如阅读源码的场景下,你看到一个switch 语句匹配多个数字。在无注释的情况下,对源码阅读者来说,简直就是天书。coder的真实意图被掩盖在一个个数字后面了。...

2021-05-18 15:45:22 90

原创 2021-05-07

<h1>标题1</h1><p>带html</p>

2021-05-07 15:32:43 36

原创 IDEA使用手册

idea常见问题处理项目运行前的准备检查maven依赖等是否正常如果无法正常clean等操作,需要检查maven的setting.xml等信息是否出错。

2021-04-13 14:50:48 50

转载 JVM资料

【代码】https://github.com/willShuhuan/JvmStudy.git【笔记】【JVM_01 简介】(https://juejin.im/post/5e71c5c96fb9a07c98550df2)【JVM_02 类加载子系统】(https://juejin.im/post/5e71c9e1518825494f7e17d2)【JVM_03 运行时数据区(程序计数器+虚拟机栈+本地方法栈)】(https://juejin.im/post/5e71d675f265da57112

2021-03-31 15:13:33 55

原创 实战问题探真相-jvm

垃圾回收器垃圾回收器的堆管理使用分代思想的根据是什么?如果不分代,就要等整个堆满了后,对全部堆空间进行扫描回收,进行Full GC,而Full GC stw时间比较长,对jvm处理速度影响大。而且因为绝大部分新创建的对象都是朝生夕死,如果根据存活时间将内存对象做分区存储,非必要只对新生对象区域进行Minor GC。这样既提高了回收效率,也提高了回收有效性,减少了stw对jvm的性能影响。好比我们去摘枣吃,肯定找一棵枣最红的树去爬,这样爬一次树,才用最少的体力,更快的摘到更熟更甜的枣子。通过分析新生对

2021-03-15 17:01:02 105

原创 关于hanhunmall项目的一些思考

属性分组与nacos的命名空间spu有一个属性分组的概念。每个spu(比如手机)下面有属于该spu的属性分组和属性。属性分组的作用相当于给当前spu的属性做了分类,不同分类的属性互不干扰,互不可见。属性分组的作用和nacos里配置管理的命名空间很像。我们通常为每个微服务指定一个命名空间,每个命名空间下的配置文件与其他命名空间的配置文件互不干涉。...

2020-12-11 16:30:30 68

转载 谷粒商城-官方笔记-分布式基础(2/4)(https://blog.csdn.net/hancoder/article/details/107612619)

个人笔记(新手级细节教程): https://blog.csdn.net/hancoder/article/details/106922139 官方笔记-基础篇:https://blog.csdn.net/hancoder/article/details/107612619 官...

2020-12-08 18:03:37 1391

原创 mysql事务相关操作

设置可查询未提交的事务数据SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED清理未提交的事务数据SELECT t.trx_mysql_thread_id FROM information_schema.innodb_trx tKILL 上步中查到的进程id

2020-12-03 14:16:37 51

原创 hanhunmall项目问题记录

pubsub全局导入的问题※p84 关于pubsub、publish报错,无法发送查询品牌信息的请求:1、npm install --save pubsub-js2、在src下的main.js中引用:① import PubSub from ‘pubsub-js’② Vue.prototype.PubSub = PubSub

2020-11-30 16:40:51 282 1

原创 Iterator的remove

Iterator的remove删除的是调用next方法后,指针指向的元素。remove方法必须在next方法执行后调用。(猜测:remove后,指针不再指向元素)。 Collection coll = new ArrayList(); coll.add(123); coll.add("abc"); coll.add(456); Iterator iterator = coll.iterator(); while

2020-10-26 15:46:29 441

原创 java的双重检查锁

jdk1.5以前因为指令重排导致java不能安全使用双重检查机制。之后velotile关键字有了禁止指令重排语义后,java可以安全的使用双重检查机制了。以下来自一博客评论:提到的双重检测的问题是因为instruction reorder的关系导致在//3时: instance=new Singleton (); 这句假设分为三步 1.先申请内存 2.构造Singleton 3.将instance指向新的内存区域 如果不进行指令重排,这个是没问题的. 如果指令重排后执行顺序是. 1 3 2. 这就导致

2020-10-19 16:48:11 210

空空如也

空空如也

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

TA关注的人

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