mengnan's blog

锁的理论

可重入锁 可重入锁也可以被称为递归锁,指的是同一线程外层代码块获得锁之后,如果锁对象是同一个对象时 进入内层代码块自动获取该锁.可重入锁可以避免死锁 synchronized synchronized就是一种可重入锁,线程可以进入任何一个它已经拥有的锁所同步着的代码块 同一个线程调用不同的synch

aepbui aepbui 发布于 2024-08-27

AQS

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

aepbui aepbui 发布于 2024-08-25

synchronized锁升级

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

aepbui aepbui 发布于 2024-08-03

git校验提交

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

aepbui aepbui 发布于 2024-07-10

线上代码优化

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

aepbui aepbui 发布于 2024-07-08

PlantUML

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

aepbui aepbui 发布于 2024-06-29

JVM

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

aepbui aepbui 发布于 2023-04-06

Map

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

aepbui aepbui 发布于 2022-01-30

RabbitMQ

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

aepbui aepbui 发布于 2021-04-04

Nacos

Nacos Nacos是阿里巴巴的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案 官方文档 优点 服务发现与服务健康检查

aepbui aepbui 发布于 2021-02-19