![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
柠檬加点茶儿
来啊,读书啊。
展开
-
正向代理 反向代理 本质区别?
In computer networks, a reverse proxy【我感觉应该翻译为“向后代理”,不知道为啥要叫反向代理,怪难理解的】 is the application【是一个程序】 that sits【位于后端的程序】 in front of back-end applications and forwards【转发请求到后台程序】 client (e.g. browser) requests to those applications. Reverse proxies help increa原创 2022-06-01 22:23:52 · 129 阅读 · 0 评论 -
哪位给我讲一下这个timeout++加这一毫米的意义是啥?
This method is similar to the wait method of one argument, but it allows finer control over the amount of time to wait for a notification before giving up.原创 2022-02-18 10:35:40 · 91 阅读 · 0 评论 -
线程调用wait之后什么情况下会再次被唤醒呢?
The thread T is then removed from the wait set for this object and re-enabled for thread scheduling.原创 2022-02-17 13:30:44 · 368 阅读 · 0 评论 -
乐观锁、悲观锁和公平、非公平
今天心情:我是一个程序员,现在已经走向了逼不得已通过写文章赚取流量来谋生的道路。可是现在流量惨淡,可是我并不惊慌。奥里给。如果内容有错误或者您有不同的见解,请关注我。想要思维导图的小伙伴们记得留言哦。乐观锁:获取不到锁,我就自旋,自旋就是while true,直到获取到锁为止。悲观锁:获取不到锁,我就不要了。等着。公平:判断当前线程是是否第一个线程(就是我等的时间久了,因为第一个是最先放进队列的),如果不是,就等着。如果是,就执行。非公平:谁抢占了,算谁的。与公平的区别就在于,我不判原创 2021-01-21 15:55:38 · 156 阅读 · 0 评论 -
java源码学习之ReentrantLock主要方法
今日心情:晚上去看刚上映的《送你一朵小红花》,就我和媳妇,回家的路上四家影院,对于选择综合征的人来说,还挺困难。如果内容有错误或者您有不同的见解,请关注我。想要思维导图的小伙伴们记得留言哦。详细内容以及脑图链接地址:https://zhuanlan.zhihu.com/p/343694459总结:1、一个线程可以获得多次这个锁,每一次获取都会使state加1。2、使用的时候,lock后面要紧跟着try finally 语句块,释放锁unlock(),防止死锁。3、可以用作消费者和原创 2021-01-12 13:53:13 · 111 阅读 · 0 评论 -
java源码学习之 ReentrantLock内部实现类AQS
今日心情:气温降到零下十八度了,开车来的公司。十公里路程足足开了一个半小时,心都碎了。如果内容有错误或者您有不同的见解,请关注我。想要思维导图的小伙伴们记得留言哦。详细内容以及脑图链接地址:https://zhuanlan.zhihu.com/p/342234284先上总结:在实现锁的时候通常会使用内部类实现AQS中的方法,而且这些方法必都是须要实现的。 为啥叫重入锁呢?因为同一个线程可以进去多次,每次状态都在之前的基础上加一。abstract static class Sync ext原创 2021-01-07 11:24:35 · 100 阅读 · 0 评论 -
java源码学习之LockSupport
今天的心情:如果你每天都想着美好的事情,晚上做梦都会笑!先上总结:1、park和unpark可以在任何地方使用,但是对wait和notify无效,两者之间没有任何关系。2、没有调用park就直接调用unpark没有什么效果产生。3、park和unpark不会出现死锁4、为啥要使用Blocker呢?就是想让你知道是谁在使用park和unpark,在线程dump的时候可以看见是谁调用了这两个方法。5、permit只能是0或1,park就改为0,线程阻塞。unpark就改为1,线程执行。原创 2021-01-06 11:45:36 · 87 阅读 · 0 评论 -
java源码学习之AQS几个方法介绍
这一个类中的内部抽象类就是共享锁和排他锁的类:前继节点、后继节点、等待线程(当前线程)、状态(自己先写入,然后由其他的线程原子地更新位操作),ExclusiveNode 和SharedNode 都继承了该类。其实接下来的操作都是基于Node的操作。其实就是定义了一个数据结构,后面所有的操作都是基于这个数据结构。如果内容有错误或者您有不同的见解,请关注我。想要思维导图的小伙伴们记得留言哦。详细内容以及脑图链接地址:https://zhuanlan.zhihu.com/p/341987383.原创 2021-01-05 13:50:41 · 100 阅读 · 0 评论 -
java源码学习(java-src)之AQS以及模板设计模式-2
如果内容有错误或者您有不同的见解,请关注我。想要思维导图的小伙伴们记得留言哦。详细内容以及脑图链接地址:https://mp.weixin.qq.com/s/j1ORbWwmJC-2KEEFKB5mFA/** * Provides a framework for implementing blocking locks and related * synchronizers (semaphores, events, etc) that rely on * first-in-first-原创 2020-12-30 21:26:22 · 136 阅读 · 1 评论 -
java源码学习(java-src)之原子性、可见性、有序性到底说的是啥?
如果内容有错误或者您有不同的见解,请关注我。想要思维导图的小伙伴们记得留言哦。项目源码以及脑图链接地址:https://mp.weixin.qq.com/s/6YBVyOeqs_6dx4uGdHvPHw【问题】为啥出现这三个名词?因为:现在计算机处理数据可以并发,也就会出现多个线程操作一个数据(代码块)的情况。多核CPU在处理数据的时候会将内存的数据复制到高速缓存中,然后再处理数据,处理之后在写回到主内存中。各个线程都复制了一份数据,又写回内存,内存的数据自然就会有可能变得不..原创 2020-12-26 22:10:21 · 201 阅读 · 0 评论 -
java源码学习(java-src)之AtomicInteger
如果以下内容有错误或者您有不同的见解,请关注我。想要思维导图的小伙伴们记得留言哦。项目源码以及脑图链接地址:《https://mp.weixin.qq.com/s/V5gfnOBYQJw_6lvmi1oQSQ》/** * An {@code int} value that may be updated atomically. See the * {@link VarHandle} specification for descriptions of the properties *原创 2020-12-25 10:50:02 · 121 阅读 · 0 评论 -
java源码学习(java-src)之Unsafe
如果以上内容有错误或者你有不同的见解,请关注我。就是下方图片,扫我留言。jdk.internal.miscpublic final class Unsafe/**A collection of methods for performing low-level, unsafe operations.Although the class and all methods are public, use of this class islimited because only trusted cod原创 2020-12-24 10:51:23 · 136 阅读 · 0 评论 -
java源码学习(java-src)立Flag为证!
立个Flag,当你遇到瓶颈或者迷茫的时候,就读书吧。读读java-src源码。源码地址:https://github.com/todayido/Java-src.git原创 2020-12-14 09:37:09 · 126 阅读 · 0 评论 -
POI导出百万数据 EXCEL addMergedReigon 合并单元格慢的问题解决
本文最重要的就是以下重写的方法,如果你仅仅是感觉导出慢,原因又是因为合并单元格,那么你直接用一下方法合并就好。private static void addMergedReigon(CTWorksheet sheetX, CellRangeAddress cellRangeAddress) { CTMergeCells ctMergeCells; if (shee...原创 2020-01-20 10:39:36 · 4035 阅读 · 6 评论 -
远程备份mysql就是这么难
@echo off set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" C:\"Program Files\MySQL\MySQL Server 5.7"\bin\mysqldump --opt -u root --password=root -h127.0.0.1 mysql > D:\mysql_%Ymd%.sql @echo on @pause...原创 2019-12-12 11:37:53 · 197 阅读 · 0 评论 -
CountDownLatch
CountDownLatch 是倒数计数然后释放闩(锁)的意思(Latch 这个单词还是在年少时新概念英语中,有一篇文章中说道:他把小羊拴在了树桩上),如下例中我们在处理一个业务时,需要等待其他三个子业务的执行结果才能处理该业务,那么我们就可以使用CountDownLatch,其中 new CountDownLatch (3)意思为:我数到0之后,await才会被唤醒,继续往下执行。packag...原创 2019-05-22 11:03:35 · 108 阅读 · 0 评论 -
将项目打包并将JAR上传到代码库
今天突然有小伙伴问我怎么将自己项目的jar包,打包之后上传到代码库,以前都是手动cmd的方式,但是最近发现很多组件都是经常修改,而且变化很大的,就需要按照功能打版本。其实将项目打包并将JAR上传到代码库就像以下这么难。项目的 pom.xml 配置文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http:/...原创 2019-05-13 14:48:59 · 486 阅读 · 0 评论 -
mysql 迁移到 oracle后mybatis 不支持多条语句同时执行错误信息 ORA-00911: 无效字符
之前项目mysql mybatis delete为:(mysql连接中添加allowMultiQueries=true)<delete id="xxx" parameterType="map"> delete from Awhere USER_ID = #{userId}; delete from Bwhere USER_ID = #{userId} ...原创 2019-06-03 08:59:01 · 872 阅读 · 0 评论 -
关于HashMap如何存放元素、如何获取元素、如何扩容的操作理解
HashMap默认大小为16个桶(为什么是16,减少hash碰撞,增加查询效率),也就是坑位。 在存放数据的时候,会对key做hash运算,然后将这个元素放在坑里,如果这个坑上有人了,那么就以链表的形式放在第一个,以此排开,jdk8中如果链表的大小大于8,会转成红黑树。在从HashMap取数也就是调用的时候,先计算key的hash值,查找到具体的坑位,然后用equals方法比较key的值是否相同...原创 2019-06-19 14:36:42 · 1281 阅读 · 0 评论 -
static修饰的类方法,被synchronized修饰后锁定的是类对象还是实例对象
package Thread;import java.util.concurrent.CountDownLatch;public class TestSynStatic { /** * 当每个线程都new出来一个对象时,线程在执行时会创建自己的字段 i 和 add1 的副本,是线程安全的。 * 当每个线程都共用new出来的一个对象时,不是线程安全的。 ...原创 2019-06-24 17:47:54 · 811 阅读 · 0 评论 -
一张图看懂JVM虚拟机以及类的加载顺序
如果下图有不对的或者不完善的地方,请留言指正。原创 2019-07-01 09:22:13 · 296 阅读 · 0 评论 -
JAVA 并行处理业务并返回结果
package future;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException;public class FutureTest {public static void main(String[] args) {long start = System.cu...原创 2019-03-28 22:49:31 · 1806 阅读 · 0 评论