
Java
建筑转Java-张无忌
大家好,我是Java-张无忌,一名立志干到70岁的软件工程师,本科安全工程(施工方向)专业,英语4、6级都是一次性通过,大四开始自学Java,JavaScript,目前拥有4.5年开发经验,做过的业务领域包含金融、IM、音视频、物联网。另外我还爱好唱歌,嘻嘻。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
在Java中,什么是checked exception(即compile-time exception、编译时异常)?
有些exception必须被开发者在写代码时就处理(使用try catch或者throws),这种exception就叫checked exception,因为在编译代码时,编译器会检查(check)代码,假如开发者没有处理的话,编译是无法通过的。之所以check加“ed”用过去式,是因为在程序正常运行期间,这些异常已经被前期的编译器检查过了,开发者也处理过了,是过去式,所以用“checked”,常见的checked exception有IOException、SQLException等。原创 2025-05-05 16:49:03 · 338 阅读 · 0 评论 -
比HashTable更先进的ConcurrentHashMap及其多线程协助扩容机制
HashTable并发访问时效率太低了,所以才被淘汰了。如果发现节点类型是ForwardingNode,就明白了当前Map正在进行扩容操作,并且当前这个存储桶中的节点已经被完全迁移到新数组了,于是它就会暂时放弃读取数据的任务,先帮着一起迁移数据到新数组,等所有key-value都迁移到新数组后,就会继续执行读取数据的任务,只不过会从新数组中读取了。如果发现节点类型是Node类,那它就知道这个存储桶中的key-value还都没被迁移走呢,那它就可以无视正在进行的扩容操作,继续自顾自地执行访问数据的任务即可。原创 2025-05-04 11:13:06 · 333 阅读 · 0 评论 -
学了多年的synchronized,发现自己居然理解错了,哈哈哈
而轻量级锁(lightweight locking)阶段的时候,是借助CAS(compare and swap)操作来保证并发安全的,假设A线程想要调用increment()方法,B线程此时也想调用的话,A、B会先在各自的栈内存中新增一个锁记录(lock record),存储Counter对象的对象头(object header)信息,然后各自使用CAS操作将对象头指向其lock record,CAS可以保证只有一个线程可以操作成功,这个线程就相当于获取到了锁。原创 2025-05-03 02:11:24 · 422 阅读 · 0 评论 -
为什么使用ThreadLocal后要调用remove()方法呢?
虽然ThreadLocal的set()、get()方法也可能会扫描并释放掉这块内存,或者需要很长时间才能释放掉,可但是但可是,说不定在这段时间内,内存已经不够用了,出现OOM错误了,所以这种方式是不可靠的。为了避免内存泄露,使用玩ThreadLocal后,一定要调用它的remove()方法,这样才能保证用完这块entry所占用的内存后,尽早的释放掉内存,最大限度的提高内存的利用率。清理时,ThreadLocalMap中包含一个名字类似叫cleanup方法,只需要调用这个方法就可以啦。方法里面的操作就是将。原创 2025-04-28 22:24:32 · 291 阅读 · 0 评论 -
ThreadLocalMap中的弱引用WeakReference
因为假如你创建了一个ThreadLocal对象,并且使用了它,之后就不再使用它的话,理想情况是,这个对象应该被jvm的garbage collector当作垃圾清理掉,这样它所占用的内存就被释放了,可以被分配给其它对象了。但因为ThreadLocalMap中的key使用的是普通引用的话,jvm会认为这个对象还有用,因此不会清理这个对象,导致这个对象会一直占用着那块内存。弱引用就不一样了,如果只有弱引用存在的话,gc时就会无视这种类型的引用,果断清理这个对象。原创 2025-04-28 00:28:10 · 136 阅读 · 0 评论 -
Java ThreadLocal与内存泄漏
当我们在当前线程的 ThreadLocalMap 中存储一个值时,一旦这个值不再需要,释放它就变得至关重要。如果不这样做,那么该值所占用的内存将一直被分配,逐渐耗尽可用的内存池。这就好比一条漏水的铁管,随着时间的推移,越来越多的水(内存资源)被浪费掉,实在是令人惋惜。然而,在我的工作经历中出现了一个有趣的异常情况。尽管我从未明确编写过用于释放与 ThreadLocal 相关内存的代码,但我的程序却一直稳定运行,没有出现内存泄漏的问题。为什么这些程序能够避免这样一个常见的陷阱呢?原创 2025-04-26 19:35:26 · 253 阅读 · 0 评论 -
Mysql8.0以上跳过初始密码登录
这篇方法独到多亏了这篇文章,解救了我这个困扰几个小时的难题原创 2022-04-28 10:30:50 · 1352 阅读 · 0 评论 -
Could not transfer artifact org.springframework.boot:spring-boot-maven-plugin:pom:2.1 ... code 501
在pom文件中引入。而pluginRepositories中的内容详见以下链接:https://blog.youkuaiyun.com/weixin_45865428/article/details/109270484原创 2021-12-30 13:57:46 · 2071 阅读 · 0 评论 -
all elements are null问题
所涉及项目类型:springboot mybatisplus在service层一个方法返回值设置为:JSONObject。其中这个jsonobject中的一个键值对,是<String,List>类型。对,就是这个list类型的value,debug时提示“all elements are null”其他答案尝试了,无效。诸如“驼峰命名”云云。解决办法:自己写了个实体类(或者说VO)把返回值类型从JSONObject改为那个实体类,而list变为这个对象的一个属性我也不知道为啥?哪原创 2021-11-17 17:37:38 · 928 阅读 · 0 评论 -
微信支付Caused by: java.security.InvalidKeyException: Illegal key size(不用去oracle官网)
这个问题,别的帖子都在说,要先去oracle官网下载jar包可是oracle注册账号需要填写大量的信息,甚是麻烦因此有个好心人把jar把放到了百度网盘里,供大家下载,甚为方便。下面是其博客链接:https://blog.52nyg.com/2020/09/567...原创 2021-10-26 13:53:44 · 239 阅读 · 0 评论 -
GC之引用计数
就好比写代码时删除一个方法,那还在调用这个方法的部分一定会报错,垃圾回收也是一样的道理,必须得等到没有被引用时,对象才能被回收掉。(极个别的循环引用除外)原创 2021-06-25 10:05:52 · 126 阅读 · 0 评论 -
【IDEA】window 修改“.vmoptions“导致 IDEA 无法启动 解决方案
我,在idea–菜单栏Help下选择Edit Customer VM Options修改内存后,关闭idea,打开idea时报错儿。那个错儿starts with “idea improrperly specified vm option…”其实我们修改的就是下面这个文件C:\Users\weihui.IntelliJIdea2019.2\config\idea64.exe.vmoptions所以把这个文件里修改的东西还原回去就行了。简单不,嘻嘻嘻!...原创 2021-04-01 19:35:22 · 929 阅读 · 1 评论 -
important jetbrains decompiler对话框弹出时怎么办
选择accept意味着,使用idea提供的反编译工具,可以查看一些反编译后行成的底层代码.通常我们都接受这样!such as原创 2021-03-31 11:55:15 · 18545 阅读 · 0 评论 -
eclipse导入项目报错“One or more constraints have not been satisfied...“
仅供参考,反正我照这么做就处理好了。在stack overflow看到的原出处:https://stackoverflow.com/questions/10421913/cannot-install-project-facet-error-while-creating-a-project问题是I got the project from repository and as per the set-up instructions I tried to create a project in eclips原创 2021-03-15 16:53:14 · 677 阅读 · 0 评论 -
观察者模式(剧中角色涉及校花、男生甲、乙三种对象,嘿嘿)
执行完下面的程序,控制台输出:故事背景:男生甲和乙正在路边聊天…校花出门了,ps:小姐姐们可要看好你们的男朋友哦男生甲:赶紧抓发型男生乙:其他赶紧摆出特别装的姿势校花:啊哦,都不是我喜欢的类型男生甲:哎,我还是赶紧去做个锡纸烫吧男生甲:看来我该去健身房办个卡,练练胸大肌了package org.wx.dev.wx.api;import java.util.ArrayList;import java.util.List;/** * @author WeiHui * @date 2原创 2021-02-10 17:38:59 · 224 阅读 · 0 评论 -
策略设计模式demo(纯手动打造无copy,自认为可以一下子让我们对策略模式感觉醍醐灌顶)
package org.wx.dev.wx.api;/** * @author michael wei * @date 2021/02/10 11:30 * @Description 策略设计模式demo * @Version 1.0 */public class StrategyPattern { public static void main(String[] args){ TripMode tripMode; tripMode = new Tr原创 2021-02-10 14:48:05 · 140 阅读 · 0 评论