自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sam_Deep_Thinking

努力深入思考和总结

  • 博客(17)
  • 资源 (1)
  • 问答 (12)
  • 收藏
  • 关注

原创 学习volatile关键字

volatile关键字要用好很难,使用它的场景也不多,但是在某些场景下,volatile变量是线程安全的,并且开销比synchronized关键字要低。基础知识锁的两大特性”互斥” 与 “可见性”。 互斥是说,每次都得等先拿到锁的线程把锁释放了,其他线程才有资格访问共享资源,期间线程对共享资源时独占的。而可见性是指,一个线程修改了某个共享变量的值,其他线程能读取到最新的值,而不至于读取到脏数据。C

2017-01-31 22:25:29 1125 2

原创 学习一下CAS

学习一下CAS

2017-01-31 08:16:35 1420

原创 HashMap多线程下发生死循环的原因

概述大神陈皓已经在疫苗:JAVA HASHMAP的死循环一文中详细描述了HashMap多线程下产生死循环的原因,我仔细研读了这篇大作,做了一些笔记,加上自己的一些理解 整理出一些信息,发出来与大家交流交流。 HashMap存储的数据结构陈皓在Hash表数据结构这一节提到了HashMap的数据结构以及扩容问题,关于这一点我之前写过的 HashMap的put和get方法原理和HashMap扩

2017-01-25 11:39:54 8947 10

原创 HashMap扩容

`HashMap`的size大于等于(**容量*加载因子**)的时候,会触发扩容的操作,这个是个代价不小的操作。为什么要扩容呢?`HashMap`默认的容量是16,随着元素不断添加到`HashMap`里,出现`hash`冲突的机率就更高,那每个桶对应的链表就会更长,这样会影响查询的性能,因为每次都需要遍历链表,比较对象是否相等,一直到找到元素为止。为了提升查询性能,只能扩容,减少`hash`冲突,让元素的`k

2017-01-24 11:54:31 3700 1

转载 转载张龙老师一篇关于IntelliJ IDEA的介绍

IntelliJ IDEA

2017-01-24 00:46:04 905

原创 Dojo到底还有没有人用呢

哎。`DOJO`研究了一段时间了,但是问了周围的同事以及其他互联网公司的同事,都说没用`DOJO`。个人觉得如果是做后台应用的界面端的话,`DOJO`是个不错的选择,严格的面向对象,组件又多也很规范。但是目前大家宁愿选择jquery ui、easyui等等。搞不懂??搞得我都不想继续看`DOJO`了。

2017-01-24 00:35:59 4661 12

原创 HashMap的put和get方法原理

概述JAVA中的数组,在添加或者删除元素的时候,都会复制一个新数组,比较耗内存。但是数组的遍历则是非常高效的。链表则是相反, 遍历慢(需要遍历数组,一直找到值相等的元素才算找到),而添加和删除元素代价低。有没有办法结合两者的特点,做到寻找元素快,插入元素或者删除元素代价低呢?答案是利用哈利表。HashMap put操作当使用HashMap的put方法的时候,有两个问题要解决:1、长度为16的数组中

2017-01-23 15:02:16 45083 16

原创 你去面试,需要准备什么知识点?

概述又是新的一年了,去年的绩效也出来了,总是几家欢乐几家愁。绩效好的机会多的老板信任的,在新的一年会更加有干劲。绩效不好的,老板不看好的,可能新的一年就会有离职的冲动。 如果你有离职的想法,那么还是需要花一些时间准备一下,毕竟现在外面好的互联网公司对程序员的要求还是蛮高的,需要你有各种能耐。下面这篇文章主要是介绍一下去好公司面试的时候,面试官可能会问到的一些知识点。后续会陆续的补充的。也欢迎网友补

2017-01-18 16:34:38 2437 25

原创 线程安全的CopyOnWriteArrayList介绍

证明CopyOnWriteArrayList是线程安全的先写一段代码证明CopyOnWriteArrayList确实是线程安全的。ReadThread.javaimport java.util.List;public class ReadThread implements Runnable { private List<Integer> list; public ReadThread(

2017-01-17 16:07:19 44592 29

原创 Short类型的List contains(Byte.valueOf("1"))的问题

概述最近测试人员发现了一个bug,我找了半天,一直找不到bug的原因。后来debug代码的时候,才发现一个隐藏的bug。如下代码:private static List<Short> tempList = Arrays.asList(new Short [] {13,17,18,20});这个时候用如下代码判断某个数字是否在tempList中:if (tempList.contains(Byte.v

2017-01-16 19:58:38 1382

原创 利用子查询找出某个属性存在A表而不存在B表的数据

概述假设有两张表,A表和B表A表: id name age 1 xxx 15 2 yyy 18 3 zzz 20B表: id b_id age 1 1 15 2 2 18其中B表的b_id字段引用了A表的id字段。现在有个查询需求: 给出已知的A表中的id,比如:id in (1,2,3),找出这些id在B表中没有

2017-01-16 14:32:21 3877 5

原创 线程不安全的ArrayList

概述java.util.ArrayList不是线程安全的,当有多个线程并发读写ArrayList的时候,ArrayList会抛出如下异常java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:819) at java.util.

2017-01-15 23:02:49 1608

原创 SQL计算timestamp的差值小技巧

概述有时候我们需要按照时间找出某些记录,比如说:算出离销售时间前1个小时的记录。 通常我们可以使用MYSQL的timestampdiff函数来做,但是这样没法使用到索引,如果数据量大的话,会造成慢查询。用代码计算出时间后再传给SQL我们可以利用JAVA代码,先把时间计算好,然后传给SQL语句,避免使用MYSQL的函数。public long xxxx(long sellTimeFrom){

2017-01-13 13:45:19 3838

原创 照顾好应用的缓存-应付大流量

概述为了提升系统的响应速度,通常会系统中使用缓存,例如:中央缓存,本地缓存等。但是使用缓存有好有坏,坏处是,如果缓存数据是旧的,那么应用输出的数据便是错误的数据,可能造成严重的影响。本文介绍一些让缓存保持新鲜以及使用缓存的一些技巧。利用MQ实时刷新缓存一旦db数据发生变化,则可以发送一条mq消息,通知消费者,信息有变动,消费者感知到后,立刻调用刷新缓存的接口,把数据涮新到中央缓存里。这里有三个点要注

2017-01-12 11:06:01 1924

原创 对ArrayList元素分组去重

通常使用`SQL`查询一批数据的时候,可以利用`SQL`中的`GROUP BY `语句对数据进行分组,但是有时候出于对性能的考虑,不会使用`GROUP BY`,而是先把数据捞出来后,使用代码,在内存中按照某个属性进行分组。当然有时候还会对分组里面的数据进行去重,这个时候也可以利用覆盖对象的`hashCode`和`equals`方法,利用`HashSet`的去重特性来达到目的

2017-01-11 10:56:25 1842

原创 对ArrayList按照某个属性进行分组

概述通常使用SQL查询一批数据的时候,可以利用SQL中的GROUP BY语句对数据进行分组,但是有时候出于对性能的考虑,不会使用GROUP BY,而是先把数据捞出来后,使用代码,在内存中按照某个属性进行分组。代码public class SkuVo { private Long skuId; private String productName; private Long br

2017-01-11 10:18:29 17501 2

原创 对ArrayList进行分页

概述系统与系统之间的交互,通常是使用接口的形式。假设B系统提供了一个批量的查询接口,限制每次只能查询50条数据,而我们实际需要查询500条数据,这个时候可以对这500条数据做分批操作,分10次调用B系统的批量接口。如果B系统的查询接口是使用List作为入参,那么要实现分批调用的话,可以利用ArrayList的subList方法来处理。代码sublist方法的定义: List<E> subLis

2017-01-10 20:34:13 11196 4

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除