Skip to content

[ImgBot] Optimize images #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

[ImgBot] Optimize images #1

wants to merge 1 commit into from

Conversation

imgbot[bot]
Copy link

@imgbot imgbot bot commented Jun 9, 2025

Beep boop. Your images are optimized!

Your image file size has been reduced by 22% 🎉

Details
File Before After Percent reduction
/08.初识Lock与AbstractQueuedSynchronizer(AQS)/mutex的执行情况.png 21.90kb 8.96kb 59.09%
/08.初识Lock与AbstractQueuedSynchronizer(AQS)/concurrent目录结构.png 28.19kb 12.95kb 54.08%
/06.你以为你真的了解final吗?/final修饰成员变量.png 70.27kb 34.85kb 50.40%
/06.你以为你真的了解final吗?/final修饰局部变量.png 20.75kb 10.86kb 47.67%
/19.并发容器之BlockingQueue/BlockingQueue和BlockingDeque的区别.png 18.87kb 10.67kb 43.43%
/09.深入理解AbstractQueuedSynchronizer(AQS)/LockDemo debug下.png 61.71kb 39.47kb 36.04%
/04.彻底理解synchronized/偏向锁撤销流程.png 70.63kb 45.95kb 34.94%
/19.并发容器之BlockingQueue/BlockingQueue基本操作.png 9.74kb 6.53kb 32.97%
/23.FutureTask基本操作总结/FutureTask状态迁移图.jpg 1,290.98kb 874.44kb 32.27%
/19.并发容器之BlockingQueue/LinkedBlockingDeque的基本操作.png 25.97kb 17.61kb 32.18%
/21.线程池ThreadPoolExecutor实现原理/execute执行过程示意图.jpg 1,972.79kb 1,350.95kb 31.52%
/05.彻底理解volatile/线程A执行volatile写后的内存状态图.png 30.23kb 20.78kb 31.26%
/23.FutureTask基本操作总结/FutureTask的get和cancel的执行示意图.jpg 2,286.55kb 1,578.11kb 30.98%
/03.java内存模型以及happens-before规则/JMM层级图.png 27.84kb 19.48kb 30.01%
/06.你以为你真的了解final吗?/final域读可能存在的执行时序.png 66.81kb 46.88kb 29.84%
/15.并发容器之ConcurrentLinkedQueue/线程A和线程B有可能的执行时序.png 35.33kb 24.82kb 29.74%
/15.并发容器之ConcurrentLinkedQueue/线程B进行poll后队列的状态图.png 17.17kb 12.28kb 28.46%
/04.彻底理解synchronized/synchronized的happens-before关系.png 60.13kb 43.35kb 27.90%
/15.并发容器之ConcurrentLinkedQueue/队列进行入队操作后casTail失败后的状态图.png 17.06kb 12.30kb 27.86%
/12.详解Condition的await和signal等待通知机制/等待队列的示意图.png 23.51kb 16.98kb 27.78%
/15.并发容器之ConcurrentLinkedQueue/经过一次循环后的状态.png 19.05kb 13.76kb 27.75%
/21.线程池ThreadPoolExecutor实现原理/线程池执行流程图.jpg 1,800.62kb 1,306.40kb 27.45%
/15.并发容器之ConcurrentLinkedQueue/Node2从队列中出队后的状态.png 15.73kb 11.46kb 27.13%
/08.初识Lock与AbstractQueuedSynchronizer(AQS)/concurrent包实现整体示意图.png 26.73kb 19.65kb 26.49%
/25.大白话说java并发工具类-CountDownLatch,CyclicBarrier/CyclicBarrier执行示意图.jpg 409.25kb 302.81kb 26.01%
/06.你以为你真的了解final吗?/写final修饰引用类型数据可能的执行时序.png 63.29kb 46.89kb 25.90%
/16.并发容器之CopyOnWriteArrayList/最终一致性的分析.png 24.51kb 18.23kb 25.61%
/05.彻底理解volatile/VolatileExample的happens-before关系推导.png 55.73kb 41.86kb 24.88%
/15.并发容器之ConcurrentLinkedQueue/线程A和线程B可能存在的执行时序.png 53.60kb 40.29kb 24.84%
/09.深入理解AbstractQueuedSynchronizer(AQS)/队列示意图.png 14.47kb 11.18kb 22.70%
/04.彻底理解synchronized/synchronizedDemo.class.png 67.30kb 53.81kb 20.04%
/08.初识Lock与AbstractQueuedSynchronizer(AQS)/AQS提供的模板方法.png 240.78kb 194.02kb 19.42%
/08.初识Lock与AbstractQueuedSynchronizer(AQS)/AQS可重写的方法.png 126.61kb 102.25kb 19.24%
/22.线程池之ScheduledThreadPoolExecutor/ScheduledThreadPoolExecutor类的UML图.png 35.68kb 28.94kb 18.89%
/02.线程的状态转换以及基本操作/futureTask接口实现关系.png 9.62kb 7.84kb 18.55%
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/cleanSomeSlots示意图.png 9.23kb 7.53kb 18.44%
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/cleanSomeSlots示意图 (2).png 9.23kb 7.53kb 18.44%
/12.详解Condition的await和signal等待通知机制/AQS持有多个Condition.png 81.76kb 66.81kb 18.29%
/09.深入理解AbstractQueuedSynchronizer(AQS)/当前节点引用线程获取锁,当前节点设置为队列头结点.png 72.94kb 60.74kb 16.72%
/02.线程的状态转换以及基本操作/线程状态.png 98.08kb 83.83kb 14.53%
/Java并发知识图谱.png 3,594.47kb 3,074.22kb 14.47%
/12.详解Condition的await和signal等待通知机制/await方法示意图.png 99.79kb 85.92kb 13.90%
/17.并发容器之ThreadLocal/ThreadLocal各引用间的关系.png 117.75kb 102.53kb 12.93%
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/threadLocal引用示意图.png 117.76kb 102.54kb 12.93%
/02.线程的状态转换以及基本操作/线程状态转换关系.png 147.37kb 128.88kb 12.55%
/12.详解Condition的await和signal等待通知机制/signal执行示意图.png 98.33kb 86.22kb 12.32%
/05.彻底理解volatile/内存屏障分类表.png 122.83kb 107.93kb 12.13%
/05.彻底理解volatile/volatile重排序规则表.png 29.86kb 26.39kb 11.60%
/12.详解Condition的await和signal等待通知机制/debug模式下情景图.png 190.25kb 168.20kb 11.59%
/14.并发容器之ConcurrentHashMap(JDK 1.8版本)/ConcurrentHashMap散列桶数组结构示意图.png 32.17kb 28.45kb 11.57%
/04.彻底理解synchronized/Mark Word状态变化.png 46.84kb 41.53kb 11.34%
/14.并发容器之ConcurrentHashMap(JDK 1.8版本)/ConcurrentHashMap扩容示意图.png 73.49kb 65.29kb 11.16%
/04.彻底理解synchronized/各种锁的对比.png 91.51kb 81.30kb 11.15%
/04.彻底理解synchronized/对象,对象监视器,同步队列和线程状态的关系.png 53.67kb 47.70kb 11.13%
/04.彻底理解synchronized/Mark Word存储结构.png 23.16kb 20.65kb 10.82%
/04.彻底理解synchronized/偏向锁获取和撤销流程.png 185.33kb 165.84kb 10.52%
/03.java内存模型以及happens-before规则/happens-before与JMM的关系.png 149.85kb 134.11kb 10.50%
/05.彻底理解volatile/volatile写插入内存屏障示意图.png 86.73kb 77.64kb 10.48%
/04.彻底理解synchronized/轻量级锁加锁解锁以及锁膨胀.png 250.08kb 223.94kb 10.45%
/03.java内存模型以及happens-before规则/JMM内存结构抽象结构示意图.png 104.28kb 93.38kb 10.45%
/03.java内存模型以及happens-before规则/从源码到最终执行的指令序列的示意图.png 32.99kb 29.55kb 10.45%
/05.彻底理解volatile/volatile读插入内存屏障示意图.png 80.05kb 71.71kb 10.42%
/03.java内存模型以及happens-before规则/JMM设计示意图.png 196.53kb 176.45kb 10.22%
/04.彻底理解synchronized/线程A写共享变量.png 10.56kb 9.60kb 9.14%
/06.你以为你真的了解final吗?/final域写可能的存在的执行时序.png 25.50kb 23.28kb 8.68%
/06.你以为你真的了解final吗?/final域引用可能的执行时序.png 17.90kb 16.50kb 7.83%
/09.深入理解AbstractQueuedSynchronizer(AQS)/独占式锁获取(acquire()方法)流程图.png 160.54kb 148.57kb 7.46%
/07.三大性质总结:原子性、可见性以及有序性/不加volatile可能的执行时序.png 14.37kb 13.34kb 7.15%
/05.彻底理解volatile/线程B读volatile后的内存状态图.png 11.92kb 11.25kb 5.70%
/12.详解Condition的await和signal等待通知机制/condition下的等待通知机制.png 70.87kb 67.37kb 4.94%
/04.彻底理解synchronized/线程B读共享变量.png 14.13kb 13.46kb 4.77%
/17.并发容器之ThreadLocal/理想散列表的一个示意图.png 4.02kb 3.85kb 4.20%
/17.并发容器之ThreadLocal/开放定址法示意图.jpg 18.26kb 17.53kb 3.99%
/09.深入理解AbstractQueuedSynchronizer(AQS)/超时等待式获取锁(doAcquireNanos()方法).png 50.48kb 48.65kb 3.63%
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/前向未搜索到脏entry,后向环形搜索到可覆盖的entry.png 48.09kb 46.48kb 3.35%
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/向前环形搜索到脏entry,向后环形查找到可覆盖的entry的情况.png 38.12kb 36.93kb 3.13%
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/前向环形搜索到脏entry,向后环形未搜索可覆盖entry.png 41.42kb 40.25kb 2.82%
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/cleanSomeSlots执行情景图.png 35.54kb 34.77kb 2.18%
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/1.2情况示意图.png 43.22kb 42.41kb 1.88%
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/前向环形未搜索到脏entry,后向环形查找未查找到可覆盖的entry.png 45.84kb 45.24kb 1.31%
/09.深入理解AbstractQueuedSynchronizer(AQS)/banner.jpg 25.35kb 25.18kb 0.66%
/17.并发容器之ThreadLocal/分离链表法示意图.gif 8.28kb 8.25kb 0.46%
Total : 16,000.14kb 12,407.32kb 22.45%

📝 docs | :octocat: repo | 🙋🏾 issues | 🏪 marketplace

~Imgbot - Part of Optimole family

*Total -- 16,000.14kb -> 12,407.32kb (22.45%)

/08.初识Lock与AbstractQueuedSynchronizer(AQS)/mutex的执行情况.png -- 21.90kb -> 8.96kb (59.09%)
/08.初识Lock与AbstractQueuedSynchronizer(AQS)/concurrent目录结构.png -- 28.19kb -> 12.95kb (54.08%)
/06.你以为你真的了解final吗?/final修饰成员变量.png -- 70.27kb -> 34.85kb (50.4%)
/06.你以为你真的了解final吗?/final修饰局部变量.png -- 20.75kb -> 10.86kb (47.67%)
/19.并发容器之BlockingQueue/BlockingQueue和BlockingDeque的区别.png -- 18.87kb -> 10.67kb (43.43%)
/09.深入理解AbstractQueuedSynchronizer(AQS)/LockDemo debug下.png -- 61.71kb -> 39.47kb (36.04%)
/04.彻底理解synchronized/偏向锁撤销流程.png -- 70.63kb -> 45.95kb (34.94%)
/19.并发容器之BlockingQueue/BlockingQueue基本操作.png -- 9.74kb -> 6.53kb (32.97%)
/23.FutureTask基本操作总结/FutureTask状态迁移图.jpg -- 1,290.98kb -> 874.44kb (32.27%)
/19.并发容器之BlockingQueue/LinkedBlockingDeque的基本操作.png -- 25.97kb -> 17.61kb (32.18%)
/21.线程池ThreadPoolExecutor实现原理/execute执行过程示意图.jpg -- 1,972.79kb -> 1,350.95kb (31.52%)
/05.彻底理解volatile/线程A执行volatile写后的内存状态图.png -- 30.23kb -> 20.78kb (31.26%)
/23.FutureTask基本操作总结/FutureTask的get和cancel的执行示意图.jpg -- 2,286.55kb -> 1,578.11kb (30.98%)
/03.java内存模型以及happens-before规则/JMM层级图.png -- 27.84kb -> 19.48kb (30.01%)
/06.你以为你真的了解final吗?/final域读可能存在的执行时序.png -- 66.81kb -> 46.88kb (29.84%)
/15.并发容器之ConcurrentLinkedQueue/线程A和线程B有可能的执行时序.png -- 35.33kb -> 24.82kb (29.74%)
/15.并发容器之ConcurrentLinkedQueue/线程B进行poll后队列的状态图.png -- 17.17kb -> 12.28kb (28.46%)
/04.彻底理解synchronized/synchronized的happens-before关系.png -- 60.13kb -> 43.35kb (27.9%)
/15.并发容器之ConcurrentLinkedQueue/队列进行入队操作后casTail失败后的状态图.png -- 17.06kb -> 12.30kb (27.86%)
/12.详解Condition的await和signal等待通知机制/等待队列的示意图.png -- 23.51kb -> 16.98kb (27.78%)
/15.并发容器之ConcurrentLinkedQueue/经过一次循环后的状态.png -- 19.05kb -> 13.76kb (27.75%)
/21.线程池ThreadPoolExecutor实现原理/线程池执行流程图.jpg -- 1,800.62kb -> 1,306.40kb (27.45%)
/15.并发容器之ConcurrentLinkedQueue/Node2从队列中出队后的状态.png -- 15.73kb -> 11.46kb (27.13%)
/08.初识Lock与AbstractQueuedSynchronizer(AQS)/concurrent包实现整体示意图.png -- 26.73kb -> 19.65kb (26.49%)
/25.大白话说java并发工具类-CountDownLatch,CyclicBarrier/CyclicBarrier执行示意图.jpg -- 409.25kb -> 302.81kb (26.01%)
/06.你以为你真的了解final吗?/写final修饰引用类型数据可能的执行时序.png -- 63.29kb -> 46.89kb (25.9%)
/16.并发容器之CopyOnWriteArrayList/最终一致性的分析.png -- 24.51kb -> 18.23kb (25.61%)
/05.彻底理解volatile/VolatileExample的happens-before关系推导.png -- 55.73kb -> 41.86kb (24.88%)
/15.并发容器之ConcurrentLinkedQueue/线程A和线程B可能存在的执行时序.png -- 53.60kb -> 40.29kb (24.84%)
/09.深入理解AbstractQueuedSynchronizer(AQS)/队列示意图.png -- 14.47kb -> 11.18kb (22.7%)
/04.彻底理解synchronized/synchronizedDemo.class.png -- 67.30kb -> 53.81kb (20.04%)
/08.初识Lock与AbstractQueuedSynchronizer(AQS)/AQS提供的模板方法.png -- 240.78kb -> 194.02kb (19.42%)
/08.初识Lock与AbstractQueuedSynchronizer(AQS)/AQS可重写的方法.png -- 126.61kb -> 102.25kb (19.24%)
/22.线程池之ScheduledThreadPoolExecutor/ScheduledThreadPoolExecutor类的UML图.png -- 35.68kb -> 28.94kb (18.89%)
/02.线程的状态转换以及基本操作/futureTask接口实现关系.png -- 9.62kb -> 7.84kb (18.55%)
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/cleanSomeSlots示意图.png -- 9.23kb -> 7.53kb (18.44%)
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/cleanSomeSlots示意图 (2).png -- 9.23kb -> 7.53kb (18.44%)
/12.详解Condition的await和signal等待通知机制/AQS持有多个Condition.png -- 81.76kb -> 66.81kb (18.29%)
/09.深入理解AbstractQueuedSynchronizer(AQS)/当前节点引用线程获取锁,当前节点设置为队列头结点.png -- 72.94kb -> 60.74kb (16.72%)
/02.线程的状态转换以及基本操作/线程状态.png -- 98.08kb -> 83.83kb (14.53%)
/Java并发知识图谱.png -- 3,594.47kb -> 3,074.22kb (14.47%)
/12.详解Condition的await和signal等待通知机制/await方法示意图.png -- 99.79kb -> 85.92kb (13.9%)
/17.并发容器之ThreadLocal/ThreadLocal各引用间的关系.png -- 117.75kb -> 102.53kb (12.93%)
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/threadLocal引用示意图.png -- 117.76kb -> 102.54kb (12.93%)
/02.线程的状态转换以及基本操作/线程状态转换关系.png -- 147.37kb -> 128.88kb (12.55%)
/12.详解Condition的await和signal等待通知机制/signal执行示意图.png -- 98.33kb -> 86.22kb (12.32%)
/05.彻底理解volatile/内存屏障分类表.png -- 122.83kb -> 107.93kb (12.13%)
/05.彻底理解volatile/volatile重排序规则表.png -- 29.86kb -> 26.39kb (11.6%)
/12.详解Condition的await和signal等待通知机制/debug模式下情景图.png -- 190.25kb -> 168.20kb (11.59%)
/14.并发容器之ConcurrentHashMap(JDK 1.8版本)/ConcurrentHashMap散列桶数组结构示意图.png -- 32.17kb -> 28.45kb (11.57%)
/04.彻底理解synchronized/Mark Word状态变化.png -- 46.84kb -> 41.53kb (11.34%)
/14.并发容器之ConcurrentHashMap(JDK 1.8版本)/ConcurrentHashMap扩容示意图.png -- 73.49kb -> 65.29kb (11.16%)
/04.彻底理解synchronized/各种锁的对比.png -- 91.51kb -> 81.30kb (11.15%)
/04.彻底理解synchronized/对象,对象监视器,同步队列和线程状态的关系.png -- 53.67kb -> 47.70kb (11.13%)
/04.彻底理解synchronized/Mark Word存储结构.png -- 23.16kb -> 20.65kb (10.82%)
/04.彻底理解synchronized/偏向锁获取和撤销流程.png -- 185.33kb -> 165.84kb (10.52%)
/03.java内存模型以及happens-before规则/happens-before与JMM的关系.png -- 149.85kb -> 134.11kb (10.5%)
/05.彻底理解volatile/volatile写插入内存屏障示意图.png -- 86.73kb -> 77.64kb (10.48%)
/04.彻底理解synchronized/轻量级锁加锁解锁以及锁膨胀.png -- 250.08kb -> 223.94kb (10.45%)
/03.java内存模型以及happens-before规则/JMM内存结构抽象结构示意图.png -- 104.28kb -> 93.38kb (10.45%)
/03.java内存模型以及happens-before规则/从源码到最终执行的指令序列的示意图.png -- 32.99kb -> 29.55kb (10.45%)
/05.彻底理解volatile/volatile读插入内存屏障示意图.png -- 80.05kb -> 71.71kb (10.42%)
/03.java内存模型以及happens-before规则/JMM设计示意图.png -- 196.53kb -> 176.45kb (10.22%)
/04.彻底理解synchronized/线程A写共享变量.png -- 10.56kb -> 9.60kb (9.14%)
/06.你以为你真的了解final吗?/final域写可能的存在的执行时序.png -- 25.50kb -> 23.28kb (8.68%)
/06.你以为你真的了解final吗?/final域引用可能的执行时序.png -- 17.90kb -> 16.50kb (7.83%)
/09.深入理解AbstractQueuedSynchronizer(AQS)/独占式锁获取(acquire()方法)流程图.png -- 160.54kb -> 148.57kb (7.46%)
/07.三大性质总结:原子性、可见性以及有序性/不加volatile可能的执行时序.png -- 14.37kb -> 13.34kb (7.15%)
/05.彻底理解volatile/线程B读volatile后的内存状态图.png -- 11.92kb -> 11.25kb (5.7%)
/12.详解Condition的await和signal等待通知机制/condition下的等待通知机制.png -- 70.87kb -> 67.37kb (4.94%)
/04.彻底理解synchronized/线程B读共享变量.png -- 14.13kb -> 13.46kb (4.77%)
/17.并发容器之ThreadLocal/理想散列表的一个示意图.png -- 4.02kb -> 3.85kb (4.2%)
/17.并发容器之ThreadLocal/开放定址法示意图.jpg -- 18.26kb -> 17.53kb (3.99%)
/09.深入理解AbstractQueuedSynchronizer(AQS)/超时等待式获取锁(doAcquireNanos()方法).png -- 50.48kb -> 48.65kb (3.63%)
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/前向未搜索到脏entry,后向环形搜索到可覆盖的entry.png -- 48.09kb -> 46.48kb (3.35%)
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/向前环形搜索到脏entry,向后环形查找到可覆盖的entry的情况.png -- 38.12kb -> 36.93kb (3.13%)
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/前向环形搜索到脏entry,向后环形未搜索可覆盖entry.png -- 41.42kb -> 40.25kb (2.82%)
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/cleanSomeSlots执行情景图.png -- 35.54kb -> 34.77kb (2.18%)
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/1.2情况示意图.png -- 43.22kb -> 42.41kb (1.88%)
/18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题/前向环形未搜索到脏entry,后向环形查找未查找到可覆盖的entry.png -- 45.84kb -> 45.24kb (1.31%)
/09.深入理解AbstractQueuedSynchronizer(AQS)/banner.jpg -- 25.35kb -> 25.18kb (0.66%)
/17.并发容器之ThreadLocal/分离链表法示意图.gif -- 8.28kb -> 8.25kb (0.46%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant