日拱一兵

其他

搞定ReentrantReadWriteLock 几道小小数学题就够了

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html
2020年6月22日
其他

精美图文讲解Java AQS 共享式获取同步状态以及Semaphore的应用

尝试获取同步状态没成功,但是之后可能又有共享状态被释放了,所以上面的逻辑是以防这种万一,你懂的,严谨的并发就是要防止一切万一,现在结合这个情景再来理解上面的判断你是否豁然开朗了呢?
2020年6月15日
其他

性能调优必备利器之 JMH

预热所需要配置的一些基本测试参数,可用于类或者方法上。一般前几次进行程序测试的时候都会比较慢,所以要让程序进行几轮预热,保证测试的准确性。参数如下所示:
2020年6月9日
其他

万字超强图文讲解AQS以及ReentrantLock应用(建议收藏)

哨兵,顾名思义,是用来解决国家之间边界问题的,不直接参与生产活动。同样,计算机科学中提到的哨兵,也用来解决边界问题,如果没有边界,指定环节,按照同样算法可能会在边界处发生异常,比如要继续向下分析的
2020年6月1日
其他

聊聊贯穿Java并发编程的中断机制

InterruptedException,当我们捕获到该异常时,绝不可以默默的吞掉它,什么也不做,因为这会导致上层调用栈什么信息也获取不到。其实在编写程序时,捕获的任何受检异常我们都不应该吞掉
2020年5月18日
其他

你 IDEA 中应该有的插件和配置

在主题下载量排行榜中高居第一。安装主题后(在页面底部就会有进入主题的快捷入口),选择自己喜欢的主题进行微调就可以啦,如果懒得做配置,按照下图勾选相应设置就和我的一样了:
2020年5月4日
其他

长文总结Spring/SpringBoot常用注解总结!值得收藏

为什么我们记得过去,而非未来?时间“流逝”意味着什么?是我们存在于时间之内,还是时间存在于我们之中?卡洛·罗韦利用诗意的文字,邀请我们思考这一亘古难题——时间的本质。
2020年4月30日
其他

我会手动创建线程,为什么让我使用线程池?

ThreadPoolExecutor。套用上面池化的想象来说,Java线程池就是为了最大化高并发带来的性能提升,并最小化手动创建线程的风险,将多个线程统一在一起管理的思想
2020年4月20日
其他

答读者问:如何清爽的安排日常?

大家都是成年人,生活中肯定不止一两件事需要你照顾。即便同样多的事,每个人照顾的方式和顺序不一样,得到的结果和感受自然也就不一样,为了说明这个问题,我把很久以前看过的一个视频放到这里
2020年4月14日
其他

IDEA新版支持中文了,我有几句话想说

相信你的IDEA中有很多帮助你高效编程的插件,官方版本出来了,插件的版本却不一定能跟得上官方版本的更新,想尝鲜,又不想影响工作,不要删除掉原有的安装版本就好(当然现在也支持回退版本)
2020年4月12日
其他

分布式限流?你也能轻松玩转(没啥新技术)

由于互联网公司的流量巨大,系统上线会做一个流量峰值的评估,尤其是像各种秒杀促销活动,为了保证系统不被巨大的流量压垮,会在系统流量到达一定阈值时,拒绝掉一部分流量。
2020年4月12日
其他

面试问我,创建多少个线程合适?我该怎么说

另外,结合小学数学题,我们已经了解了如何从定性到定量的分析的过程,在开始没有任何数据之前,我们可以使用上文提到的经验值作为一个伪标准,其次就是结合实际来逐步的调优(综合
2020年4月7日
其他

读JDK源码,可以边读边加注释的姿势怎么样?

JDK源码是面试必问的内容。多数童鞋读过之后总是忘记,下次读还要回忆当初的思考过程,如果可以一边读源码一边在源码上加自己的注释那是最好的,本文内容就能满足你的需求,一年下来,JDK源码变得沉甸甸的呢
2020年4月1日
其他

Java SPI 机制,你的数据库驱动就是靠它加载的

driver);}分析到了这里,我们就明白了Java的SPI机制是如何加载Mysql的驱动类的并如何将Mysql的驱动类注册进DriverManager的registeredDrivers集合中的。
2020年4月1日
其他

HTTP灵魂拷问,你了解你的每次请求吗?

传输是基于请求-应答的模式进行的,报文必须是一发一收,但值得注意的是,里面的任务被放在一个任务队列中串行执行,一旦队首的请求处理太慢,就会阻塞后面请求的处理。这就是著名的HTTP队头阻塞问题。
2020年3月30日
其他

@Transactional 注解失效?你应该在这6个坑之内吧

这种情况出现的概率并不高,事务能否生效数据库引擎是否支持事务是关键。常用的MySQL数据库默认使用支持事务的innodb引擎。一旦数据库引擎切换成不支持事务的myisam,那事务就从根本上失效了。
2020年3月25日
其他

这么说线程生命周期是不是简单了点?

状态。JVM并不关心操作系统调度的状态。在JVM看来,等待CPU使用权(操作系统里是处在可执行状态)与等待I/O(操作系统是处在休眠状态),都是等待某个资源,所以都归入了RUNNABLE
2020年3月25日
其他

阿里云发布新脚手架真香

https://github.com/alibaba/spring-cloud-alibaba?spm=a2ck6.14145464.0.0.503c70a52vNhVo
2020年3月21日
其他

超强图文|并发编程【等待/通知机制】就是这个feel~

getAllRequiredAccountBook方法耗时短),并且多个柜员转账的业务冲突量不大,这个方案简单粗暴且有效,柜员只需要尝试几次就可以成功(即通过少量的循环可以实现)
2020年3月16日
其他

8种优化if-else代码的方案请拿走

代码中如果if-else比较多,阅读起来比较困难,维护起来也比较困难,很容易出bug,接下来,本文将介绍优化if-else代码的八种方案。
2020年3月11日
其他

Intellij IDEA 实用高效插件送给你

的优良设计保证了我的生产力,也是我情愿为之付费的软件之一。今天把我自己经常用的一些插件拿出来分享一波。同时欢迎加入[微信圈子]程序员交流圈
2020年3月9日
其他

后端的我要学Node.js了,你敢信

像现在的大前端Angular、VUE、REACT这些大前端框架我只是略有了解,完全没有用过,用Node作为中间服务器也是相对陌生状态,项目中需要,我是一定不会放过这个可以掉头发的良机(想法很简答,
2020年3月5日
其他

volatile和synchronized到底啥区别?多图文讲解告诉你

受【木桶原理】的限制,在CPU眼里,程序的整体性能都被内存的办事效率拉低了,为了解决这个短板,硬件同学也使用了我们做软件常用的提速策略——使用缓存Cache(实则是硬件同学给软件同学挖的坑)
2020年3月5日
其他

9种分布式ID生成之美团(Leaf)实战

Leaf-snowflake不同于原始snowflake算法地方,主要是在workId的生成上,Leaf-snowflake依靠Zookeeper生成workId,也就是上边的机器ID(占5比特)+
2020年3月2日
其他

漂亮又好用的Redis可视化客户端汇总,总有一款你需要的

redis-cli,以至于我们在使用的时候会比较麻烦,通常要输入一堆命令,而且命令行版的客户端看起来也不够直观,基于以上两个原因我们需要找一个可视化的
2020年3月2日
其他

一口气说出 9种 分布式ID生成方式,面试官有点懵了

('values');当我们需要一个ID的时候,向表中插入一条记录返回主键ID,但这种方式有一个比较致命的缺点,访问量激增时MySQL本身就是系统的瓶颈,用它来实现分布式服务风险比较大,不推荐!
2020年2月20日
其他

拱哥的学习交流群

群里汇聚武林高手,即便单纯的看他们聊天都会涨姿势,但是,面对技术交流,我希望你可以独立思考,勇于发表见解,与其他小伙伴进行思想碰撞,你的思想会变得更开拓
2020年2月20日
其他

世界上最好的学习法:费曼学习法

有时候我们会觉得自己后知后觉,那是因为学习的太少,了解的太少,很多问题前人已经总结好了现成的方法和方案,我们却不知道,还在自己探索,当然行动缓慢,后知后觉了。只有站在巨人的肩膀上才能看得更远。
2020年2月20日
其他

Java12可用新特性一览

.transform(StringUtils::toCamelCase); transformedNames.add(transformedName);}有朋友可能会说,这个和单纯的对字符串
2020年2月12日
其他

IntelliJ IDEA的这个接口调试工具真是太好用了!

我还是不放心,把我的登录返回结构(项目中怎样设计这种结构,可以参考之前写的Springboot返回统一JSON数据格式是怎么实现的?)粘贴在此处吧,这回理解了吧?
2020年2月10日
其他

读《Clean Code 代码整洁之道》之感悟

我们经常要面对短期内开发出大量需求的请求,很可能为了快速完成这些需求,胡乱的堆叠代码,上线之后一声长叹庆幸这个功能开发的结束。过了好久,有关这个功能的需求有所变化,重新查看代码时,直接就
2020年2月6日
其他

MySQL如何分组拼接字符串?

GROUP_CONCAT(id);总结在许多情况下,我们都可以应用GROUP_CONCAT()函数产生出有用的结果,同时也可以结合其他函数发挥出更大的威力.
2020年2月4日
其他

跨表更新,看到自己写的SQL像个憨憨

感谢公众号伙伴一年的陪伴和支持,除夕夜会送上小小的惊喜娱乐一下🎆🧧,回馈大家,(我会陆续将各位拉到群内,截止到1月23日晚
2020年1月22日
其他

2019归零,2020走你

生孩子容易,养育孩子难,不关注粉丝的增长一定是假的。我也需要小小的成就感来驱动,一天下来,每增长一个粉丝都使我足够兴奋,第二天起床又焦虑的期盼第二个粉丝的到来,就这样朝朝暮暮......
2020年1月20日
其他

小小TODO标识,你用对了吗?

这些模式可在任何受支持文件类型的行注释和块注释内部使用。我们可以根据需要修改默认模式或添加自己的模式
2020年1月13日
其他

在SpringBoot内如何使用ApplicationEvent&Listener完成业务解耦?

业务结偶,通常会用到监听器,本文将监听器的基本用法做了说明,里面的SmartApplicationListener不知是否让你想起MessageConverter的应用,有异曲同工之妙
2019年12月30日
其他

一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式

我们会觉得它可以非常方便将启动逻辑按照指定顺序执行,但如果你这么写,说明多个代码片段是有相互依赖关系的,为了让我们的代码更好维护,我们应该减少这种依赖使用
2019年12月30日
其他

换个姿势学设计模式-策略模式

之后,利用Lambda可以提供策略模式更加精简的实现,如果策略接口是一个函数接口,那么不需要声明新的类来实现不同策略,直接通过传递Lambda就可实现,并且更加简洁,具体使用方式参见下方代码:
2019年12月27日
其他

自定义注解加AOP怎么玩?

举个例子你的老板让你整理一下重要的文档,但是文档太多了你肯定需要把一下重要的文档给标记出来,然后你交给你老板的时候,老板会怎么做?老板当然是看到有标记的文档就去检查一下。
2019年12月27日
其他

Java equals 和 hashCode 的这几个问题可以说明白吗?

HashSet();students.add(student1);students.add(student2);System.out.println("Student
2019年12月23日
其他

SpringBoot如何优雅的校验参数

{ "userName":"luomengsun", "mobileNo":"111111a", "sex":1, "age":21, "email":"1212121"}返回结果:
2019年12月20日
其他

如何妙用Spring 数据绑定机制

methodParameter.hasParameterAnnotation(LoginUser.class); } @Override public
2019年12月16日
其他

Lombok 使用详解,简化Java编程

函数式编程或者说流式的操作越来越流行,应用在大多数语言中,让程序更具更简介,可读性更高,编写更连贯,@Builder就带来了这个功能,生成一系列的builder
2019年11月25日
其他

Java升级那么快,多个版本如何灵活切换和管理?

"/home/dudette/.sdkman/bin/sdkman-init.sh"我用的
2019年11月18日
其他

手把手教你定制标准 Spring Boot starter

应用程序时,我们都不希望从头开始实现具有「横切关注点」的内容;相反,我们希望一次性实现这些功能,并根据需要将它们包含到任何我们要构建的应用程序中
2019年11月11日
其他

JDK12 Collectors.teeing 功能真香

有了这个形象的说明我们就进入正题吧「文中代码举例比较多,更好的阅读体验点击文末——阅读原文」
2019年11月7日
其他

Maven optional 关键字透彻图解

技术栈相关知识,本着将复杂问题简单化,抽象问题具体化和图形化原则逐步分解技术问题,技术持续更新,请持续关注......
2019年11月4日
其他

如何避免死锁,我们有套路可循

计算机的计算能力远远超过人类,但是他的智慧还需要有带提高,当看待并发问题时,我们往往认为人类的最基本沟通计算机也可以做到,其实不然,还是那句话,编写并发程序,要站在计算机的角度来看待问题
2019年10月28日
其他

读取Excel还用POI?试试这款开源工具

完整代码请在公众号回复「demo」,点开链接,查看「easy-excel-demo」文件夹的内容即可,另外个人博客由于特殊原因暂时关闭首页,其他目录访问一切正常,更多文章可以从
2019年10月21日