- 博客(21)
- 资源 (4)
- 问答 (3)
- 收藏
- 关注
原创 ThreadLocal 有什么用?
通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。JDK 中自带的类正是为了解决这样的问题。如果你创建了一个变量,那么访问这个变量的每个线程都会有这个变量的本地副本,这也是变量名的由来。他们可以使用get()和set()方法来获取默认值或将其值更改为当前线程所存的副本的值,从而避免了线程安全问题。再举个简单的例子:两个人去宝屋收集宝物,这两个共用一个袋子的话肯定会产生争执,但是给他们两个人每个人分配一个袋子的话就不会出现这样的问题。
2022-12-14 23:58:53
357
1
转载 浅谈BigDecimal
BigDecimal可以实现对浮点数的运算,不会造成精度丢失。通常情况下,大部分需要浮点数精确运算结果的业务场景(比如涉及到钱的场景)都是通过BigDecimal来做的。浮点数之间的等值判断,基本数据类型不能用 == 来比较,包装数据类型不能用 equals 来判断。具体原因我们在上面已经详细介绍了,这里就不多提了。想要解决浮点数运算精度丢失这个问题,可以直接使用BigDecimal来定义浮点数的值,然后再进行浮点数的运算操作即可。// 0。
2022-12-01 22:40:28
277
原创 拾荒日记(三)深拷贝和浅拷贝区别了解吗?
浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。上面的结论没有完全理解的话也没关系,我们来看一个具体的案例!浅拷贝浅拷贝的示例代码如下,我们这里实现了Cloneable接口,并重写了clone()方法。clone()方法的实现很简单,直接调用的是父类Object的clone()方法。/***/
2022-11-28 23:14:10
126
原创 拾荒日记(二)SpringBoot整合QuartZ 和SpringTask定时器
拾荒日记(二)SpringBoot整合QuartZ 和SpringTask定时器
2022-11-24 23:49:15
313
1
原创 Java 基础 - 知识点本文主要对Java基础知识点进行总结。
我们希望将这两个对象当成一样的,只在集合中添加一个对象,但是因为EqualExample没有实现hasCode()方法,因此这两个对象的散列值是不同的,最终导致集合添加了两个等价的对象。因此在方法中改变指针引用的对象,那么这两个指针此时指向的是完全不同的对象,一方改变其所指向对象的内容对另一方没有影响。例如在作为网络连接参数的情况下如果String是可变的,那么在网络连接过程中,String被改变,改变String对象的那一方以为现在连接的是其它主机,而实际情况却不一定是。...
2022-07-14 20:57:50
93
原创 Java 基础 - 面向对象
下面的代码中,乐器类(Instrument)有两个子类Wind和Percussion,它们都覆盖了父类的play()方法,并且在main()方法中使用父类Instrument来引用Wind和Percussion对象。以下Person类封装name、gender、age等属性,外界只能通过get()方法获取一个Person对象的name属性和gender属性,而无法获取age属性,但是age属性可以供work()方法使用。...
2022-07-14 20:30:52
151
原创 JUC之LockSupport,Condition
Condition具有 精准的通知和唤醒线程的功能,Condition是个接口,基本的方法就是await()和signal()方法;Condition依赖于Lock接口Conditon中的await()对应Object的wait();Condition中的signal()对应Object的notify();Condition中的signalAll()对应Object的notifyAll()。----------------------------------------------------------
2022-07-09 14:45:51
188
原创 JUC之Fork分治
假如我们要计算从一到1000的和,一般用单线程就可以完成,那么假如我们要计算从1到9999999999999999的和,CPU可能就会扛不住,那么这就需要用多线程去做,JUC下的ForkJoinPool可以很高效地解决此类问题,我们可以先弄一个线程执行1~125的结果,另一个线程执行126~500的结果,以此类推,效率就会增加很多。下面是代码:运行结果:这样一个线程只负责125的计算量,大大提高了效率。...
2022-07-09 14:31:37
181
原创 JUC之Semaphore信号量
Semaphore(信号量) 是一个计数信号量,它的本质是一个“共享锁“。信号量维护了一个信号量许可集。线程可以通过调用 acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通过release()来释放它所持有的信号量许可。 下面我们还看一段小程序:运行结果:在程序中我只放了两个“通行证”,也就是说只有两个线程能够同时进入代码块,另外一个线程没有获取到信号量,就会处于阻塞状态。在以往的多线程案例中,我们一般只允许一
2022-07-09 14:19:43
415
原创 面试热点之快速排序
1.快速排序简介快速排序在十大排序中的时间空间复杂度都较低,其思想是在一趟排序中把将要排序的数据分成两个独立的部分,对这两部分进行排序使得其中一部分所有数据比另一部分都要小,也就是选出一个数mid,让mid的左边元素都比它小,右边的元素都比它大,然后继续递归排序这两部分,最终实现所有数据有序。比如我们先选择第一个数作为参考值,从右边最后一个数开始逐个对比:如果右边的数比它大,这直接将索引左移即可(如图第二步),反之,将右边的数覆盖左边的值(参考值会事先备份),然后左边的索引右移(如图第三
2022-05-25 01:00:12
176
原创 关于 Redis可视化工具Redis Desktop Manager连接时Connection refused
今天在Linux上部署redis的时候发现在Windows上无法访问Redis服务,如利用Redis Desktop Manager工具无法访问。关于网上的解答都尝试了一遍还是不行,人已裂开。网上的解决方案是先进入redis.conf的编辑界面,开启protectedmode为yes并配置password(端口默认6379)编辑conf文件:设置protected-made 为no,protected-made为redis的自我保护机制,为yes的话只允许本机登录。...
2022-05-13 02:51:26
938
原创 springCloud集成Nacos+Feign引发的异常IllegalArgumentException
异常:java.lang.IllegalArgumentException: Unknown class to load com.alibaba.c loud.nacos.ribbon.NacosRule for class interface com.netflix.loadbalancer.IRule named userservice (服务名称)我也是找半天一头雾水,Nacos和Feign的配置都没有问题,突然想到二者都有负载均衡的功能,而我之前的nacos负载均衡策略写在appli
2022-05-09 15:43:06
1163
2
原创 详解程序设计七大原则
本篇文章基于尚硅谷课堂《Java设计模式》个人总结。本篇文章先介绍单一职责和接口隔离职责。设计模式介绍:在企业开发流程中,设计模式是保证系统稳定性、可扩展性、可维护性的重要因素,设计模式可以理解为在软件设计中对于普遍存在的或反复出现的问题的解决方案,它能够使系统更加牢固可靠。如果你想成为一个合格的软件开发工程师,设计模式是一堂必修课。设计模式七大原则有:单一职责原则、接口隔离原则、里氏替换原则、开闭原则、依赖倒置原则、迪米特法则、合成复用原则。单一职责原则比如说对于一个类,一个类或一
2022-04-23 18:20:42
3535
原创 实习生踩坑之IDEA打Jar包
今天领导让我把项目的热更资源跑起来,我心想不就是打个Jar包嘛,就这??于是我开始我“看似熟练”的操作。。。结果因为需要把Jar包放在用户服务器下面,折腾我老半天。废话少说,上操作!(因为公司商业代码不能发到互联网上,所以我这里随便建一个工程。)第一步: 打开菜单栏File-Project Structure第二步:2. 点击Artifacts,点击 "+" - JAR - From module with depenencies,选择要打成Jar包的Module。第三步:这是最重要且最
2022-03-22 23:16:07
365
原创 Java实习生之git踩坑日记
事情的经过是这样的,昨天下班忘记关电脑了,结果今天早上来拉最新的master节点,拉到一半就卡在一个地方,然后就一直处于done状态,我以为拉的比较慢,结果卡了半个多小时(这半个小时趁机摸鱼🐟),喝完咖啡回来依然没动,突然感觉有种不祥的预感。。。。然后开始请教同事,各种百度,把项目重新clone一遍都没有效果,把公钥更新一遍也不行,最后无奈使出最后一招——重装git,完美解决!最后赠上我的总结,重装可以解决80%的问题,如果你的工具突然遇到邪门的问题,别犹豫,重装!!!...
2022-03-16 21:55:40
887
1
原创 哲学家用餐问题——多线程死锁问题
哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己左右手边的那两只餐叉。哲学家就餐问题有时也用米饭和筷子而不是意大利面和餐叉来描述,因为很明显,吃米饭必须用两根筷子,这样可描述为多线程争夺资源的问题。...
2021-11-21 21:35:11
471
VisualStudio实用插件(主题+实用工具)
2022-08-02
Xshell+Xftp.rar
2022-06-16
C++,CMake,QT
2024-03-24
<=50人的小公司一般面试应届生大概多久?
2022-07-05
layui动态表格怎么在页面加载时初始化table。
2021-07-30
spring同时使用构造器和注解注入引发的属性冲突
2021-03-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人