aepbui

Spring AOP

使用 代理模式就是为其他对象提供一种代理以控制对这个对象的访问,增强一个类中的方法对程序进行扩展,现在常用的动态代理分为cglib和jdk的动态代理 ProxyFactory 当然我们的重点是spring,可以使用spring的代理工厂,内部是基于责任链模式设计的 使用了Advice接口,我们就不需

Spring扫描

最近在学习Spring源码,但是我现在不太想把自己的整个学习笔记贴出来,还是要精炼,学习笔记几千上万字不太利于读者阅读 spring的版本是当时的最新版6.1.x 抽取其中觉得有必要分享的点写一篇博客记录一下,顺便总结提炼.这篇博客内容主要介绍的是spring中invokeBeanFactoryPo

AQS

概述 AbstractQueuedSynchronizer抽象的队列同步器,用来构建锁或者其他同步器组建的基础框架,通过内置的CLH队列来完成资源获取线程的排队功能(为暂时还没有抢到锁的线程管理进入队列中,这个队列就是AQS的抽象表现),通过int类型的state来表示持有锁的状态,使用CAS对该同

synchronized锁升级

锁的原理 随着java1.6对synchronized的优化,减少了获取锁和释放锁带来的性能消耗而引入了偏向锁和轻量级锁,有些情况下它就不会那么重,锁的状态分为4种:无锁、偏向锁、轻量级锁、重量级锁,这几种状态会逐渐升级 对象在内存中的存储布局可以分为对象头、实例数据、对齐填充,对象头中就包含Mar

git校验提交

通过git clone等操作会在当前目录下生成.git隐藏文件 在hooks目录下,该目录下的所有名称带sample的都是钩子函数的模板文件 当我们在测试代码的时候很有可能为了测试或者临时添加一些代码进行调试,为了避免推送到线上可以启用该脚本 在项目下的 .git/hooks目录下,将你需要进行执行

线上代码优化

前情 公司项目使用的是七牛云存储图片,然后通过后置?参数来添加水印来裁剪、缩放、添加水印等操作,也就是数据库db中存储的url只有原始图片,目前只有问卷系统才能展示有水印的图片,新需求需要将压缩包打包的资源也要添加水印 解决方案是在打包前将所有资源追加水印后,最后再统一导出带水印的资源 但是七牛云是

PlantUML

前言 之前一直使用processon来画思维导图,但是需要付费.如果使用免费版本有存储限制,这些手动拖拽的工具很难对齐并且最近发现导出svg格式都需要会员了,所以果断遗弃 现在比较常用的图表工具分别是PlantUML和Mermaid.PlantUML使用一种类似于编程语言的语法,被各种IDE集成.而

JVM

学习了JVM相关内容,自己总结的完整笔记分享一下 JVM的体系结构 简介 跨平台的语言 一次编写到处执行 跨语言的平台

Map源码学习

JDK1.7 以下内容针对JDK1.7版本,需要确保安装了JDK1.7 在IDEA中将项目设置Project SDK、Project language level等版本改为1.7 设置 Java Compiler中需要把Use compiler from module target JDK when

RabbitMQ

介绍 MQ意为消息队列或消息中间件,通过生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断从队列中获取消息,消息的生产和消费都是异步的,只关心消息的发送和接收,没有业务逻辑的侵入,实现了多个系统之间调用的解耦,通过高效的消息传递机制和平台无关的数据交流,基于数据通信来进行分布式系统集成