![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
gghh2015
这个作者很懒,什么都没留下…
展开
-
list按汉字首字母排序
// 首字母排序 if (CollectionUtils.isNotEmpty(areaInfoList)){ Comparator comparator = Collator.getInstance(Locale.CHINA); Collections.sort(areaInfoList, (m1, m2) -> { return comparator.compare(PinyinUtil...原创 2022-04-11 10:10:57 · 441 阅读 · 0 评论 -
使用CloseableHttpClient 模拟发送HttpGet和HttpPost请求
项目中经常会用到模拟Http请求,而jdk 下的 rt.jar核心库中也有 java.net提供了这方面的功能,但是总体而言,功能还是缺少灵活性和全面性,HttpClient的出现就是弥补了其缺失的功能。HttpClient不是浏览器客户端,而是一个客户端和服务端实现通信的Http组件库。本篇文章主要讲解Cl...转载 2019-11-08 15:34:57 · 2876 阅读 · 0 评论 -
值判断的性能比较
经常写业务代码,会有对字段值的判断,首先要校验非空,然后做值判断。如果值为null,不校验直接判断会引起异常,如果异常处理不当会引发事故。所以,这样写会很简便:new Integer(8).equals(d)把比对的值放在Integer里,即便变量d为null也不会异常。但是,这种写法的性能就比较低,下面比较一下: public static void main(String[]...原创 2019-11-06 12:56:31 · 171 阅读 · 0 评论 -
volatile和synchronized
如何把非原子性操作变成原子性操作?1、volatile关键字只能保证可见性,并不保证原子性2、synchronized关键字,使操作具有原子性区分一下synchronize内置锁和互斥锁1、内置锁,在对象头,自动获取释放,获得的唯一方式,进入锁保护的同步代码块2、互斥锁,内置锁就是一个互斥锁,当有多个线程获取锁时,只有一个能获取成功,其他线程阻塞等待。synchronized修饰范围...原创 2019-08-07 09:34:28 · 124 阅读 · 0 评论 -
并发中锁的分类
1、自旋锁线程状态及上下文切换消耗系统资源,当访问共享资源的时间短,频繁切换上下文不值得。jvm使线程在没有获得锁的时候,执行空循环,循环几次之后,如果还没获得锁,再被挂起。2、阻塞锁改变了线程的运行状态,让线程进入阻塞状态进行等待,当获得相应的信号(唤醒或者时间)时,才可以进去线程的准备就绪状态,转为就绪状态的所有线程,通过竞争,进去运行状态。3、重入锁支持线程再次进入的锁。4、读写...原创 2019-08-09 09:08:57 · 363 阅读 · 0 评论 -
ReentrantLock源码分析
首先,想先梳理一下自己看源码的目的,最近有篇文章特别火《程序员12小时惊魂记:凌晨迁移数据出大事故!》,里面强调了解决问题的能力很重要,这给我一种只看源码和设计模式关键时刻不给力的感觉,周末去看了鲁能和恒大的比赛,那种在瞬间做出决策的压力只会比事故现场更紧张,而且不能有一点犹豫。我想竞技体育的魅力,就在于此吧,要把所有的技能都训练到潜意识层面,才会在瞬间爆发出来。所以,要不断的研究不断的实践,弄懂...原创 2019-08-06 00:17:46 · 181 阅读 · 0 评论 -
Iterator死循环
iterator不能放在循环里,每次都会获得一个新的迭代器,导致死循环。要先获取迭代器,然后对迭代器循环。 public static void main(String[] args) { //正确 Iterator<String> it = getList().iterator(); while(it.hasNext()){...原创 2019-07-17 21:44:31 · 1433 阅读 · 0 评论 -
Spring depends-on介绍
Spring depends-on介绍 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;!-- redis配置 --&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;bean id=&amp;amp;amp;amp;amp;amp;转载 2019-01-28 20:22:10 · 295 阅读 · 0 评论 -
finally语句到底是在return之前还是之后执行?
转自:href="http://blog.csdn.net/xx326664162/article/details/50266995代码示例:http://www.cnblogs.com/lanxuezaipiao/p/3440471.html结论:1、不管有木有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、final...转载 2018-11-01 14:12:23 · 1225 阅读 · 0 评论 -
java基础-head first 设计模式
1、第一个设计原则:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。解释:如果每次新的需求一来,都会是某方面的代码发生变化,那么你就可以确定,这部分的代码需要被抽出来,和其他稳定的代码有所区分。或是:把变化的部分取出来封装起来,以变以后可以轻易的改动或扩充此部分,而不影响不需要变化的其他部分。总之:这几乎是每个设计模式背后的精神所在。原创 2017-10-31 18:50:27 · 508 阅读 · 0 评论 -
java基础-head first java
1、问:其他程序语言都可以用整数类型做判断条件,java可以这样吗?int x = 1;while(x){}答:不行,java中的integer与boolean两种类型并不相容。只能用如下的boolean变量测试。boolean isHot = true;while(isHot){}2、问:在java中if与while循环都是boolean测试,有什么区别?答:if 如原创 2017-09-28 09:39:07 · 697 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别|线程安全与线程不安全
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容转载 2017-10-10 19:23:37 · 471 阅读 · 0 评论 -
java编程思想读后感
最近找工作,面试了好多家企业,见了很多优秀的面试官,都给了很多有帮助的建议。大部分面试官在知道我在看Java编程思想,都会认为我现阶段不适合看编程思想,head first会更适合我。开始我觉得是不是自己有些好高骛远,应该踏实的把基础打扎实。后来我问了自己几个问题,看Java编程思想给自己带来进步了吗?有没有看着很痛苦的感觉?答案是很清楚的,当然给我带来很大帮助,也潜移默化的解决了一些问题。我原创 2016-09-06 19:03:17 · 4512 阅读 · 0 评论