自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员XW

我叫武文旭,记录改变的每一天。

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

原创 elastic-job 和 xxl-job 的对比

综合对比许雪里软件作者05/23 18:47#xxl-job#即将发布的新版本,将会自研触发组件,移除quartz依赖,并精简掉11张表,大大降低线程和内存开销。在第三方依赖上不断做减法,在功能上不断做加法。 感谢quartz在历史版本中对xxl-job提供的支持,但是它逐渐跟不上xxl-job的发展,xxl-job即将踏上新的道路 ……XXL-JOB v2.1....

2019-07-30 15:10:46 38947 4

原创 反射和多态的原理对比

Table of Contents反射和多态多态什么是多态java里多态的具体用法多态的实现原理反射什么是反射反射的实现原理反射的应用反射的弊端反射相关类反射应用实例一些问题private修饰的方法可以通过反射访问,那么private意义何在?反射和多态的区别反射和多态事实上,反射和多态这两种技术并无直接联系,之所以把它们放在一起说...

2019-07-26 21:36:14 502

原创 反射和代理的原理

什么是反射,反射原理Java反射的原理:java类的执行需要经历以下过程,编译:.java文件编译后生成.class字节码文件加载:类加载器负责根据一个类的全限定名来读取此类的二进制字节流到JVM内部,并存储在运行时内存区的方法区,然后将其转换为一个与目标类型对应的java.lang.Class对象实例链接验证:格式(class文件规范) 语义(final类是否有子类) 操作准备:...

2019-07-26 21:30:45 336

原创 反射(三) Proxy 代理

java.lang.reflect.Proxy类提供了用于获取和操作代理的静态方法。1.通过Proxy可以做什么通过Proxy可以做以下事情:如何通过new方法为一个接口创建动态代理实例?如何获取一个代理实例的调用处理器(InvocationHandler)?如何通过调用处理器(InvocationHandler)调用方法?如何判断一个类是否是代理类?如何获取一个代理类?如何通过代理...

2019-07-26 21:02:01 959

原创 反射(二)Class对象获取的三种方式和通过反射实例化对象的两种方式

1.Class对象获取的三种方式上一章节已经说过,一般情况下,Java反射操作都需要首先获取Class对象。获取Class对象的方式有三种。公有属性class方法getClass()Class.forName()下面是示例代码:/*** <p>Title: Java获取Class对象的三种方式</p>* @author 韩超 2018/2/24 1...

2019-07-26 20:58:38 639

原创 反射(一) 初步了解

1.Java反射定义官方定义如下:Reflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fields, methods, and constructors to operate...

2019-07-26 20:54:15 166

原创 JUC(十三) controllers 相关集合的使用

quereConcurrentLinkedQueue(队列)定义:一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。队列的头部 是队列中时间最长的元素。队列的尾部 是队列中时间最短的元素。新的元素插入到队列的尾部,队列获取操作从队列头部获得元素。当多个线程共享访问一个公共 collection 时,ConcurrentLinkedQueue ...

2019-07-25 22:19:38 131

原创 JUC(十二) 同步器

ReentrantLock 讲解1.可重入 – 单线程可以重复进入但是要重复退出2.可中断 – lockInterruptibly()3.可限时 – 超时不能获得锁,就返回false,不会永久等待构成死锁重入性原理:加入锁代码逻辑:释放锁代码逻辑:/reentrantlock/ReenTrantLock12.可中断 /reentrantlock/ReenTrantLock2...

2019-07-25 08:54:27 445

原创 JUC(十一) ConcurrentHashMap讲解

ConcurrentHashMap讲解https://crossoverjie.top/2018/07/23/java-senior/ConcurrentHashMap/ 未更新https://juejin.im/post/5a27c6946fb9a04509096248 红黑树 二叉树一般线程池的使用,往往都是使用这个接口ExecutorService executor = Execut...

2019-07-25 08:45:23 126

原创 JUC(十) 线程池

线程池精讲线程池各类的关系:Executors -- new ThreadPoolExecutorThreadPoolExecutor extends AbstractExecutorServiceAbstractExecutorService(抽象类) implements ExecutorServiceinterface ExecutorService extends ...

2019-07-25 08:32:51 84

原创 JUC(九)ReentrantReadWriteLock(读写锁)原理解析

我们讲到了ReentrantLock(重入锁),接下来我们讲ReentrantReadWriteLock(读写锁),该锁具备重入锁的可重入性、可中断获取锁等特征,但是与ReentrantLock不一样的是,在ReentrantReadWriteLock中,维护了一对锁,一个读锁一个写锁,而读写锁在同一时刻允许多个读线程访问。但是在写线程访问时,所有的读线程和其他的写线程均被阻塞。在具体了解Re...

2019-07-25 08:22:20 336

原创 Hash 结构

在写这篇文章之前,看了很多关于HashMap解析的文章。对于大多数人来说,可了跟着别人的文章走一遍。大家都能了解HashMap的内部结构,使用方法以及注意事项。我还是觉得知道用是一回事。知道原理是另一回事。只有了解了其数据结构设计初衷。才能更好的使用它。 此系列文章主要分为两个部分,具体目录如下:哈希表初识(一) 哈希表之 HashMap(二)其中第一篇是带领着大家理解为什么会设计此种数据...

2019-07-24 21:41:46 857

原创 JUC(八)ReentrantLock 源码解析

Lock简介Lock 接口实现类提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition (Condition实现类ConditonObject来实现线程的通知/与唤醒机制,关于Condition后期会进行介绍)对象。锁是用于控制多线程访问共享资源的工具。通常,锁提供对共享资源的独占访...

2019-07-24 21:12:17 141

原创 JUC(七) 并发编程锁机制,原子类的实现

concurrent包的设计要了解Java为我们提供的基于Lock接口(以及相关实现类)实现的锁功能,我们首先要看一下整个concurrent包下的设计。具体设计如下所示:在上图中,我们大致可以看出courrent包下的整体结构。整个包大致分为了三层。高层:Lock、同步器、阻塞队列等。 中层:AQS(AbstractQueuedSynchronizer)、非阻塞数据...

2019-07-24 21:08:05 183

原创 JUC(六) 线程安全synchronized 源码解读

线程安全的问题线程安全的定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的。在具体讲解synchronized之前,我们需要了解一下什么是线程安全,为什么会出现线程线程不安全的问题。请看下列代码:class ThreadNotSafeDemo {...

2019-07-24 21:05:41 176

原创 JUC(五)锁机制之LockSupport工具和Condition接口

AQS的内部结构,与其独占式与共享式获取同步状态的实现。但是并没有详细描述线程是如何进行阻塞与唤醒的。我也提到了线程的这些操作都与LockSupport工具类有关。现在我们就一起来探讨一下该类的具体实现。LockSupport类了解线程的阻塞和唤醒,我们需要查看LockSupport类。具体代码如下:public class LockSupport { private Loc...

2019-07-24 20:42:34 337

原创 JUC(四)CAS和AQS概念

什么是CAS ?CAS 是 compareAndSwap的缩写 比较交换 类似于java中的乐观锁乐观锁与悲观所的区别在于 – 乐观锁趋向于不加锁来处理资源比如给记录加入version这种方法 记录版本号 他将内存地址的内容和定值相比较只有在相同的情况下,才会更新期望值如果已经被另一个线程操作更新则更新失败 ! 会返回boolean来判断CAS的底层原理 ??底层大部分都是有unsa...

2019-07-24 19:54:07 1724

原创 JUC(三) java内存模型,volatile关键字

java 内存模型JMM规定了所有的变量都存储在主内存(Main Memory)中。每个线程还有自己的工作内存(Working Memory),线程的工作内存中保存了该线程使用到的变量的主内存的副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量(volatile变量仍然有工作内存的拷贝,但是由于它特殊的操作顺序性规定,所以看起来如同直接在主内...

2019-07-24 18:16:43 168

原创 JUC(二) 什么是进程和线程

第一阶段 基础阶段1.什么是线程 什么是进程??进程是资源分配的最小单位,线程是cpu调度的最小单位进程就好比工厂的车间,他代表着CPU所能执行的任务单元,任意时刻CPU总是运行着一个进程,其他进程处于非运行状态!线程就好比车间内的工人,一个车间内可以有许多的工人,他们共同完成一个工作,一个进程可以包括多个线程车间内的空间是工人们共享的,比如许多房间是每个工人都可以进出的,这象征着一个进...

2019-07-24 18:05:21 225

原创 JUC(一) 基本概念

1.并行的世界并行在图像处理和服务端程序中有着广泛的应用2.你必须知道的几个概念同步: 买空调,买完之后在商店等待,知道商家把你和空调一起送回家,愉快的结束了异步: 买空调,在网上下单,支付完成后,对你来说整个的过程便已经结束了,虽然没收到货但是你的任务完成了,剩下的时候你就等待收获即可以了 这期间你想干什么就干什么并发:偏重与多个任务交替执行,而多个任务有可能还是串行的,...

2019-07-24 17:55:10 1467

原创 JVM(三) JVM内存管理

内存的划分本文所谈的内存是指的运行时数据区域,分为:共享的数据区: 堆(Heap) 方法区(Method Area) 线程隔离的数据区: 虚拟机栈(VM Stack) 本地方法栈(Native Method Stack) 程序计数器(Program Counter Register) Java线程栈的内存管理(隔离内存)线程隔离的性质意味着线程和栈是关联的,...

2019-07-22 13:31:18 102

原创 JVM(二) 实现自己的ClassLoader

为何要花时间实现自己的ClassLoader虽然人生的乐趣很大一部分来自于将时间花在有意思但是无意义的事情上,但是这件事绝对是有意思并且有意义的,有以下几个情景是值得我们花费时间实现自己的classLoader的:我们需要的类不一定存放在已经设置好的classPath下(有系统类加载器AppClassLoader加载的路径),对于自定义路径中的class类文件的加载,我们需要自己的Class...

2019-07-22 13:28:42 167

原创 JVM(一)ClassLoader 工作机制

对ClassLoader的理解顾名思义,Class loader 最基本的功能就是将Class加载到JVM中 在加载过程中,Class loader 能够审查每个类应该由哪个class loader加载,采用双亲委派模型来实现 除了加载外,class loader也负责将加载后的字节码重新解析成JVM同一要求的对象格式类加载器对于所加载类的影响每一个类加载器都有一个独立的命名空间 ...

2019-07-22 13:18:07 108

原创 离职历险记-正确的对自己的认知

找工作一个多星期,面试面了6家,只有2家给了offer,一家因为学历没有过,剩下的就是一家阿里的外包岗位,因为想去阿里大楼看看,所以可能后面的1-2个月会在这家外包公司呆着。为自己蓄力吧。如果说自己找工作只找了一个多星期就不在找了是不是有些可惜,我觉的是。但这次找工作确实让我知道了我对于资深岗位有多大的差距。我面试的几家都是互联网公司,因为随着工作经验的增加,传统公司的薪资瓶颈已经出现,基...

2019-07-20 02:49:22 115

原创 离职历险记-不会算法请拜拜(二)

昨天面了一家互联网网校的公司,进去后5分钟就出来了,大写的尴尬,上来就是算法题,这里出了几道经典的算法。1、1-100的素数2、爬楼梯,一次走1/2/3步,有多少种步伐组合3、统计证书二级制表示中1的个数。4、给定一个整数数组,用快速排序进行升序排序5、定义一个哈希表的成员和方法。1-4的答案,我放到我github的项目中5 有人知道的话,还请告知一下,加油吧,算法是我...

2019-07-12 11:07:18 124

原创 离职历险记-开始面试遇尴尬(一)

从这周星期一开始预面试,面了2家,一家联动优势、一家太极。因为之前一直在小公司里晃荡,不说去一线的互联网公司起码也要是个大点的公司。第一家联动优势,面了2轮,第二轮突然说我不是招本科,公司学历有要求,可以直接安排外包进来,本部是进不来了。我拒绝了。第二家太极,开始去总部面试,居然部门面试官不在,其他部门的帮忙面,就是简单聊了聊项目,然后说回去等电话面试,第二天来了电话面试,简单聊聊项目...

2019-07-11 10:30:23 228

原创 离职历险记-离职前的准备(楔子)

年初换的工作,在新公司刚刚转正,又要面临失业。国际问题影响老百姓的生活今天我算是真的体会到了。总部给出了通知是今天进行通知,8月2日正式离职。离职补偿N的工资,因为我刚入职半年,所有只有半个月补偿金。考虑到现在市场不好,如果不能及时找到工作会面临社保断保的问题,我就去和领导沟通,最终得出这个月如果有面试就不用再来公司工作,变相的相当于N+1的补偿,可以接受。其实我是不愿意这个时候找工作...

2019-07-03 14:57:44 223

空空如也

空空如也

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

TA关注的人

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