自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 AQS抽象队列同步器

1、Java 并发包下很多 API 都是基于 AQS 来实现的加锁和释放锁等功能的。⽐如说 ReentrantLock、ReentrantReadWriteLock 底层都是基于 AQS 来实现的。AQS 对象就是实现加锁和释放锁的关键性的核⼼组件。2、ReentrantLock加锁和释放锁的原理ReentrantLock lock = new ReentrantLock();//加锁lock.lock();//释放锁lock.unlock();①.AQS 对象内部有.

2021-09-29 18:37:45 118

原创 docker搭建gitlab流程

1.下载镜像:docker pull gitlab/gitlab-ce2.创建挂载目录:mkdir -p /usr/local/gitlab/configmkdir -p /usr/local/gitlab/logsmkdir -p /usr/local/gitlab/data3.启动运行:docker run -detach \ --publish 8443:443 --publish 8880:80 --publish 8222:22 \ --name gitla...

2021-09-15 19:47:29 145

转载 任务并行执行神器:Fork&Join

Fork/Join是什么? Fork/Join框架是Java7提供的并行执行任务框架,思想是将大任务分解成小任务,然后小任务又可以继续分解,然后每个小任务分别计算出结果再合并起来,最后将汇总的结果作为大任务结果。其思想和MapReduce的思想非常类似。对于任务的分割,要求各个子任务之间相互独立,能够并行独立地执行任务,互相之间不影响。我们可以通过Fork/Join单词字面上的意思去...

2019-05-21 11:02:11 341

原创 Mybatis Mapper接口实现类的源码分析

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。我们在使用 Mybaits 进行 ,通常只需要定义几个 Mapper 接口,然后在编写一个 xml 文件,我们在配置文件中写好 sql , Mybatis 帮我们完成 Mapper 接口道具体实现的调用。以及将结果映射到 mode...

2019-05-17 14:22:36 496

原创 走进jvm

java源代码是怎么被机器识别并执行的呢?答案是java虚拟机,即java virtual machine.1、字节码(也称中间码,bytecode)一、java所有的指令有200个左右,一个字节(8位)可以存储256种不同的指令信息,一个这样的字节称为字节码(bytecode).在代码的执行过程种,jvm将字节码解释执行,屏蔽了对底层操作系统的依赖;jvm也可以将字节码编译执行,如果是热...

2019-02-21 02:58:16 344

原创 Java面试含答案(最全版)

1.面向对象和面向过程的区别面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展面向对象优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护缺点:性能比面向过...

2019-02-19 22:39:34 445

原创 大秒杀系统设计(详解)

2013年的小米秒杀, 三款小米手机各11万台开卖,走的都是大秒系统,3分钟后成为双十一第一家也是最快破亿的旗舰店。经过日志统计,前端系统双11峰值有效请求约60w以上的QPS ,而后端cache的集群峰值近2000w/s、单机也近30w/s,但到真正的写时流量要小很多了,当时最高下单减库存tps是红米创造,达到1500/s。热点隔离秒杀系统设计的第一个原则就是将这种热点数据隔离出...

2019-01-31 15:52:15 213

原创 Java并发锁

在很多并发文章中,会提及各种各样的锁,这篇文章介绍各种锁的分类。介绍的内容如下:1.公平锁 / 非公平锁2.可重入锁 / 不可重入锁3.独享锁 / 共享锁4.互斥锁 / 读写锁5.乐观锁 / 悲观锁6.分段锁7.偏向锁 / 轻量级锁 / 重量级锁8.自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的...

2019-01-31 09:50:38 170

原创 Java线程池ThreadPoolExecutor原理解析

在Java中,使用线程池来异步执行一些耗时任务是非常常见的操作。最初我们一般都是直接使用new Thread().start的方式,但我们知道,线程的创建和销毁都会耗费大量的资源, 因此我们需要重用线程资源。继承结构:继承结构看起来很清晰,最顶层的Executor只提供了一个最简单的void execute(Runnable command)方法,然后是ExecutorServ...

2019-01-30 17:44:52 308

原创 Java面试(进大厂不是梦)

JAVA基础有没有有顺序的Map实现类,如果有,他们是怎么保证有序的。 抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口 么。 继承和聚合的区别在哪。 IO模型有哪些,讲讲你理解的nio ,他和bio,aio的区别是啥,谈谈reactor模型。 反射的原理,反射创建类实例的三种方式是什么。 反射中,Class.forName和Class...

2019-01-30 16:49:06 979

原创 HashMap, ConcurrentHashMap源码分析

本文分析的是源码,所以至少读者要熟悉它们的接口使用,同时,对于并发,读者至少要知道 CAS、ReentrantLock、UNSAFE 操作这几个基本的知识,文中不会对这些知识进行介绍。Java8 用到了红黑树,不过本文不会进行展开,感兴趣的读者请自行查找相关资料。Java7 HashMapHashMap 是最简单的,一来我们非常熟悉,二来就是它不支持并发操作,所以源码也非常简单。首先,...

2019-01-30 15:17:33 215 1

原创 MYSQL性能优化(索引优化)

SQL的执行过程:1. 客户端发送一条查询给服务器;2. 服务器通过权限检查之后,先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段;3. 服务器端进行SQL解析、预处理,再由优化器根据该SQL所涉及到的数据表的统计信息进行计算,生成对应的执行计划;4. MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询...

2019-01-30 14:15:16 348

原创 经典排序算法

冒泡排序冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!冒泡排序的时间复杂度是O(...

2019-01-30 10:42:40 201

原创 AOP、动态代理、CGlib(原理实践)

Java 代理模式实现方式,主要有如下五种方法:1. 静态代理,工程师编辑代理类代码,实现代理模式;在编译期就生成了代理类。2. 基于 JDK 实现动态代理,通过jdk提供的工具方法Proxy.newProxyInstance动态构建全新的代理类(继承Proxy类,并持有InvocationHandler接口引用 )字节码文件并实例化对象返回。(jdk动态代理是由java内部的反射机制来实...

2019-01-29 15:42:49 292 1

原创 Mybatis(底层初始化原理)

对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。1.MyBatis的初始化做了什么2.MyBatis基于XML配置文件创建Configuration对象的过程3.手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象4.涉及到的设计模...

2019-01-29 10:44:11 955 1

原创 SpringMVC(设计模式原理)

什么是 MVC 模式 MVC 是一种设计模式.MVC 的原理图如下:SpringMVC 简单介绍 SpringMVC 框架是以请求为驱动,围绕 Servlet 设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是 DispatcherServlet,它是一个 Servlet,顶层是实现的Servlet接口。SpringMVC 使用...

2019-01-28 17:43:03 10076

原创 Spring IOC (自动装配,依赖注入)

广义的IOC1.IoC(Inversion of Control) 控制反转;两种实现: 依赖查找(DL)和依赖注入(DI);IOC 和 DI 、DL 的关系(这个 DL,Avalon 和 EJB 就是使用的这种方式实现的 IoC):2.DL 已经被抛弃,因为他需要用户自己去是使用 API 进行查找资源和组装对象。即有侵入性。3.DI 是 Spring 使用的方式,容...

2019-01-28 17:10:37 190

原创 Spring AOP(代理模式及实践)

为什么会有面向切面编程(AOP)?我们知道Java是一个面向对象(OOP)的语言,但它有一些弊端,比如当我们需要为多个不具有继承关系的对象引入一个公共行为,例如日志、权限验证、事务等功能时,只能在在每个对象里引用公共行为。这样做不便于维护,而且有大量重复代码。AOP的出现弥补了OOP的这点不足。为了阐述清楚Spring AOP,我们从将以下方面进 (1).代理模式 ...

2019-01-28 16:23:54 145

空空如也

空空如也

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

TA关注的人

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