自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

路漫漫其修远

我有明珠一颗,久被尘劳关锁。今日尘尽光生,照破青山万朵。

  • 博客(10)
  • 收藏
  • 关注

原创 jvm内存分区和GC机制详解:一

按照对象的生存与回收进行划分:    首先明确,这一部分都是在jvm的堆上进行操作的,jvm对所有的线程提供同一个堆供其进行操作,而为每一个线程单独分配一个栈供其使用。    所以堆内存中所有的数据是线程们都可以进行操作的,而且也因为jvm只提供了一个堆内存,才有了jvm独特的GC机制和堆内存的划分。(图来自 https://www.cnblogs.com/ygj0930/p/6522828.ht...

2018-04-27 18:14:45 1665

原创 数据库优化

索引:    1.如何建立索引        CREATE UNIQUE INDEX 索引名称 ON 表名称 (列名称)    2.为什么索引可以优化查询        索引的功能主要就是根据建立了索引的那列,对数据进行规则化排列,等下次按照索引条件查询时,可以按照索引类型快速定位数据,不需要像没建立索引时,全表扫描。        索引的规则与索引引擎有关,mysql支持多个索引引擎,如BTre...

2018-04-19 11:10:54 206

原创 Mybatis动态代理源码解读一

Mybatis的使用只需要创建一个DAO层接口,配合相应Mapper.xml的sql文件以及配置即可使用。那么到底是什么力量让没有手动实现的接口完成了对数据库的链接、查询、数据组装等工作了,这篇文章主要就是沿着Mybatis的源码分析一下这个问题。从Mybatis的入门开始,最简单Mybatis初始化代码需要一个mybatis-config.xml的配置文件来构建一个叫做SqlSessionFac...

2018-04-18 00:06:54 3229

原创 简单抢购系统设计

面试或者工作中经常能遇到类似于抢购或者是并发争夺默写限量资源的需求,有一些想法但是比较乱,这里刚好整理一下。一个抢购活动主要由这几部分组成        1.页面刷新-刷新时间/可购买数量        2.下单-争夺购买资格        3.支付-更新订单状态页面刷新处理办法:    1.页面静态化    2.反向代理缓存静态页面    3.所需动态参数通过接口获得,不要经过框架渲染    4...

2018-04-16 22:50:08 2188 1

原创 简单的多生产多消费模式代码

资源描述类:/** * 资源描述类 * @author gaojh * */public class Product { List<String> product = null; public Product() { super(); this.product = new ArrayList<>(); } /** * 生产方法 *...

2018-04-16 16:25:25 293

原创 HashMap源码解读

HashMap是基于以Hash算法计算Key的hash值并提供K-V类型存储的Map非同步实现类,由于是非同步实现,所以是线程不安全的,但是HashMap支持key值和value值的null的插入。先看一下HashMap提供的构造方法:/** * Constructs an empty <tt>HashMap</tt> with the specified ini...

2018-04-12 19:36:48 130

原创 sleep和wait的区别,以及源码解读

首先要明确,wait是Object类的方法,也就是说,所有的对象都有wait方法,而且都是Object中的wait方法因为wait方法被标为final无法被重写,源码如下:[java] view plain copypublic final native void wait(long timeout) throws InterruptedException;      native关键字修饰,表示...

2018-04-11 17:38:22 2383

原创 ThreadPoolExecutor的源码解读

public class ThreadPoolExecutor extends AbstractExecutorService    ThreadPoolExecutor 继承了ExecutorService接口的抽象实现类AbstractExecutorService,提供了四个构造方法供编码者使用:前面三个方法都是给定默认参数替代没有传递的参数然后this调用最后一个满参数的构造函数,源代码如...

2018-04-11 17:38:02 357

原创 多线程的一些问题和回答

已知线程有五大状态 (图来自:https://blog.csdn.net/u012403290/article/details/64910926?locationNum=11&fps=1)新建状态:新建线程对象,并没有调用start()方法之前就绪状态:调用start()方法之后线程就进入就绪状态,但是并不是说只要调用start()方法线程就马上变为当前线程,在变为当前线程之前都是为就绪状...

2018-04-09 19:49:59 776 1

原创 ConcurrentHashMap与HashMap的区别,以及怎么简单自己实现ConcurrentHashMap

1.HashMap是线程不安全的,所以效率相对于HashTable较高。HashTable是线程安全的,所以相对于HashMap效率较低。2.ConcurrentHashMap可以看作是HashMap的线程安全版本,但是内部实现机制与HashTable不同。在不同版本的JDK中有不同的实现。3. HashMap的键值对允许有null,但是ConCurrentHashMap都不允许。HashTabl...

2018-04-08 18:57:02 1055

空空如也

空空如也

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

TA关注的人

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