自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ( 十)并发包阻塞队列之ArrayBlockingQueue

jdk1.7.0_79  上一节中对并发包中的非阻塞队列ConcurrentLinkedQueue的入队、出队做了一个简要的分析,本文将对并发包中的阻塞队列做一个简要分析。  Java并发包中的阻塞队列一共7个,当然他们都是线程安全的。  ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列。  LinkedBlockingQueue:一个由链表结构组成的...

2019-05-31 16:38:39 136

原创 Java对代码表的处理技巧

在Java中应用系统中,常常会有很多的代码表要处理,这些处理需求主要表现在通过代码获取名称,获取该代码的其他信息,如果每次都通过查询数据库来处理,是必消耗大量的资源,速度也慢,因为每次连接连接数据库要付出的代价是高昂的。那如何解决上面这些问题呢?我们可以考虑使用Java对象的缓存技术来实现,即,将代码表以对象的方式存储起来,最容易考虑到的就是Map对象,Map的key用来存放代码,value用来...

2019-05-30 16:54:31 132

原创 行为型模式:访问者模式

简介姓名:访问者模式英文名:Visitor Pattern价值观:来访者便是客,招待就是个人介绍: Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing th...

2019-05-30 14:17:40 124

原创 ( 九)并发包非阻塞队列ConcurrentLinkedQueue

jdk1.7.0_79  队列是一种非常常用的数据结构,一进一出,先进先出。  在Java并发包中提供了两种类型的队列,非阻塞队列与阻塞队列,当然它们都是线程安全的,无需担心在多线程并发环境所带来的不可预知的问题。为什么会有非阻塞和阻塞之分呢?这里的非阻塞与阻塞在于有界与否,也就是在初始化时有没有给它一个默认的容量大小,对于阻塞有界队列来讲,如果队列满了的话,则任何线程都会阻塞不能进行...

2019-05-30 11:05:40 166

原创 Java程序员面试失败的5大原因

下面是 Java 程序员面试失败最有可能的 5 大原因,当然也许这 5 点原因适用于所有的程序员,所以,如果你是程序员,请认真阅读以下内容。#1 说得太少尤其是那些开放式的问题,如“请介绍下你自己”或“请讲一下你曾经解决过的复杂问题”。面试官会通过你对这些技术和非技术问题的回答来评估你的激情。他们也会通过模拟团队氛围和与你的交流互动来判断你的经验和能力。所以,仅仅只用...

2019-05-29 17:07:51 108

原创 Java线程间通信-回调的实现方式

Java线程间通信是非常复杂的问题的。线程间通信问题本质上是如何将与线程相关的变量或者对象传递给别的线程,从而实现交互。比如举一个简单例子,有一个多线程的类,用来计算文件的MD5码,当多个这样的线程执行的时候,将每个文件的计算的结果反馈给主线程,并从控制台输出。线程之间的通讯主要靠回调来实现,回调的概念说得抽象了很难理解,等于没说。我就做个比喻:比如,地铁的列车上有很多乘客,乘...

2019-05-29 14:53:45 206

原创 行为型模式:解释器模式

简介姓名:解释器模式英文名:Interpreter Pattern价值观:不懂解释到你懂个人介绍:Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences i...

2019-05-29 10:59:41 120

原创 Java陷阱之assert关键字

一、概述在C和C++语言中都有assert关键,表示断言。在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。二、语法在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言检查,则需...

2019-05-28 17:32:03 116

原创 ( 八)并发容器ConcurrentHashMap#put方法解析

jdk1.7.0_79  HashMap可以说是每个Java程序员用的最多的数据结构之一了,无处不见它的身影。关于HashMap,通常也能说出它不是线程安全的。这篇文章要提到的是在多线程并发环境下的HashMap——ConcurrentHashMap,显然它必然是线程安全的,同样我们不可避免的要讨论散列表,以及它是如何实现线程安全的,它的效率又是怎样的,因为对于映射容器还有一个Hashtabl...

2019-05-28 14:46:51 821

原创 JDK版本不兼容问题之:一台机器安装多个版本的JDK

我的机器上最开始安装的是jdk1.6,后来因为工作需要又安装了jdk1.4。但是,环境变量我并未更改,还是指向jdk1.6的路径的。可是,在cmd窗口输入 java -version 却得到是1.4.2。查询环境变量:1.我的电脑->属性->高级->环境变量2. 系统环境变量(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Con...

2019-05-27 19:37:14 272

原创 菜鸡程序员是如何写代码的?

每个程序员都要历经从菜鸡到大牛过程蜕变胡过程。当初大家起点都差不多,工作多年后,有些人依然停留在菜鸡,有些人却已成为大牛,所有的事情,都是一点一滴习惯养成。让我们看看菜鸡程序员是如何写代码的?有可能找到你当初的影子,甚至是现在的影子。一、命名不规范命名很随意,当时写代码特别High,什么奇奇怪怪的命名都有的:xiaonaigou,xxxx,j1,jl,llst.完全意识不到全名规范的价值和...

2019-05-27 17:27:59 197

原创 行为型模式:备忘录模式

简介姓名:备忘录模式英文名:Memento Pattern价值观:凡事要有备份个人介绍: Without violating encapsulation,capture and externalize an object's internal state so that the object can be restored to this state later. 在不破坏...

2019-05-27 15:12:55 95

原创 (七)ReadWriteLock接口及其实现ReentrantReadWriteLock

Java并发包的locks包里的锁基本上已经介绍得差不多了,ReentrantLock重入锁是个关键,在清楚的了解了同步器AQS的运行机制后,实际上再分析这些锁就会显得容易得多,这章节主讲另外一个重要的锁——ReentrantReadWriteLock读写锁。  ReentrantLock是一个独占锁,也就是说只能由一个线程获取锁,但如果场景是线程只做读的操作呢?这样ReentrantLock...

2019-05-27 11:51:47 106

原创 程序员如果不学好底层,将毫无作为

王安石在《游褒禅山记》中有一经典句“而世之奇伟,瑰怪,非常之观,常在于险远,而人之所罕至焉”,在我刚参加工作时,我是做的应用层,对于新人来说,需要快速学习和掌握技能,有时不求甚解,只要实现就行,因为时间有限,来不及让你去了解更细的东西。问别人,别人总是说,你先按我的来吧,后续有时间再给你讲讲。后续很难有时间,于是只有自己琢磨。在武学里面,有内功一族,和招式一族,招式一族,适合入门,这样有趣,可以学...

2019-05-26 17:51:19 145

原创 行为型模式:状态模式

简介姓名:状态模式英文名:State Pattern价值观:有啥事让状态我来维护个人介绍: Allow an object to alter its behavior when its internal state changes.The object will appear to change its class. 当一个对象内在状态改变时允许其改变行为,这个对象看起来像...

2019-05-26 15:07:32 119

原创 ( 六)类似Object监视器方法的Condition接口

 在《有关线程、并发的基本概念》中,我们利用synchronized关键字、Queue队列、以及Object监视器方法实现了生产者消费者,介绍了有关线程的一些基本概念。Object类提供的wait的方法和notifyAll方法,与之对应的是Condition接口提供是await和signalAll。await(或wait)是让当前线程进入等待状态并释放锁,signalAll(或notifyAll)...

2019-05-26 11:45:29 122

原创 行为型模式:观察者模式

简介姓名:观察者模式英文名:Observer Pattern价值观:盯着你怎么着个人介绍: Define a one-to-many dependency between objects so that when one object changes state,all its dependents are notified and updated automatically. ...

2019-05-24 15:02:25 131

原创 ( 五)Lock接口及其实现ReentrantLock

jdk1.7.0_79  在java.util.concurrent.locks这个包中定义了和synchronized不一样的锁,重入锁——ReentrantLock,读写锁——ReadWriteLock等。在已经有了内置锁synchronized的情况下,为什么又出现了Lock显示锁呢?本文将以Lock作为Java并发包源码解读的开始.  Lock定义最基本的加锁和解锁操作。  ...

2019-05-24 10:53:41 312

原创 Java 环境下使用 AES 加密的特殊问题处理

在 Java 环境下使用 AES 加密,在密钥长度和字节填充方面有一些比较特殊的处理。1. 密钥长度问题 默认 Java 中仅支持 128 位密钥,当使用 256 位密钥的时候,会报告密钥长度错误Invalid AES key length 你需要下载一个支持更长密钥的包。这个包叫做 Java Cryptography Extension (JCE) Unlimite...

2019-05-23 17:00:19 606

原创 能冒泡的事件

每个 event 都有一个event.bubbles属性,可以知道它可否冒泡。(ref:W3定义的Event Interface)当然 W3 DOM Level 3 Events 的细则里已经附上这个表格了:Event Type Bubbling phase abort ✗ beforeinput ✔ blur ✗ click ✔ comp...

2019-05-23 14:52:41 171

原创 【试验局】ReentrantLock中非公平锁与公平锁的性能测试

硬件环境:  CPU:AMD Phenom(tm) II X4 955 Processor  Memory:8G  SSD(128G):/  HDD(1T):/home/软件环境:  OS:Ubuntu14.04.3 LTS  Java:JDK1.7  关于ReentrantLock中非公平锁和公平锁详细区别以及实现方式在这里不再叙述,有关ReentrantLock...

2019-05-23 11:27:23 196

原创 Java运行时绑定探讨

本文探讨Java运行时(动态)绑定机制。运行时绑定也叫动态绑定,它是一种调用对象方法的机制。Java调用对象方法时,一般采用运行时绑定机制。1.Java的方法调用过程 编译器查看对象的声明类型和方法名(对象变量的声明类型)。通过声明类型找到方法列表。 编译器查看调用方法时提供的参数类型。 如果方法是private、static、final或者构造器,编译器就可以确...

2019-05-22 19:13:49 756

原创 Tomcat 8.5.29启动报TldScanner.scanJars错误问题解决办法

Tomcat 8.5.29启动过程中的错误信息:16-Mar-2018 09:28:45.505 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enabl...

2019-05-22 17:33:24 1224

原创 ( 四)从AbstractQueuedSynchronizer(AQS)说起——AQS结语

前两节的内容《从AbstractQueuedSynchronizer(AQS)说起——独占模式的锁获取与释放》 、《从AbstractQueuedSynchronizer(AQS)说起——共享模式的锁获取与释放》对AQS同步器已经有了一个大致的了解,从独占模式和共享模式来解析了AQS的两个基本方面,一个是同步状态的获取,另外一个是同步状态的释放,这是AQS最基本的特性,前面两节都是以阻塞的形式获取...

2019-05-22 10:52:38 159

原创 ( 三)从AbstractQueuedSynchronizer(AQS)说起——共享模式的锁获取与释放

在上节中解析了AbstractQueuedSynchronizer(AQS)中独占模式对同步状态获取和释放的实现过程。本节将会对共享模式的同步状态获取和释放过程做一个解析。上一节提到了独占模式和共享模式的区别,最主要的区别就是在同一时刻能否有多个线程同时获取到同步状态。  1).共享模式同步状态的获取  这个方法同独占模式获取同步状态的acquire方法一样,同样也是一个模板方法,我们...

2019-05-21 19:24:08 130

原创 行为型模式:迭代器模式

简介姓名:迭代器模式英文名:Iterator Pattern价值观:人生没有回头路个人介绍:Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation. 它提供一种方法访问一个容器对象中各个元...

2019-05-21 11:13:13 111

原创 行为型模式:策略模式

简介姓名:策略模式英文名:Strategy Pattern价值观:集计谋于一身个人介绍: Define a family of algorithms,encapsulate each one,and make them interchangeable. 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。 (来自《设计模式之禅》)你要的故事先看一张拍得不好看...

2019-05-20 19:52:41 154

原创 ( 二)从AbstractQueuedSynchronizer(AQS)说起——独占模式的锁获取与释放

  首先我们从java.util.concurrent.locks包中的AbstraceQueuedSynchronizer说起,在下文中称为AQS。  AQS是一个用于构建锁和同步器的框架。例如在并发包中的ReentrantLock、Semaphore、CountDownLatch、ReentrantReadWriteLock等都是基于AOS构建,这些锁都有一个特点,都不是直接扩展自AQS,...

2019-05-20 11:12:15 109

原创 行为型模式:责任链模式

简介姓名:责任链模式英文名:Chain of Responsibility Pattern价值观:责任归我个人介绍: Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.Chain the re...

2019-05-18 19:20:36 97

原创 模板方法模式

我们思考这么一种场景,课堂上老师在黑板即兴出几道题,学生在下面在手抄黑板上的题目,这个时候前面的同学可能能抄对题目,但后面的同学可能因为太远看不清老师写的字,或者说老师写错了一个数据要修改的时候,所有学生都要跟着改一遍。连题目都抄错的同学,怎么可能做对题呢?不是同样的标准,怎么评判学生的成绩呢?但在正式的考试中,老师并不会在黑板上出题学生抄题目答题,而是老师会发给每个同学一份事先出好的试卷,这...

2019-05-18 11:15:59 123

原创 (一)有关线程、并发的基本概念

什么是线程?  提到“线程”总免不了要和“进程”做比较,而我认为在Java并发编程中混淆的不是“线程”和“进程”的区别,而是“任务(Task)”。进程是表示资源分配的基本单位。而线程则是进程中执行运算的最小单位,即执行处理机调度的基本单位。关于“线程”和“进程”的区别耳熟能详,说来说去就一句话:通常来讲一个程序有一个进程,而一个进程可以有多个线程。  但是“任务”是很容易忽略的一个概念。我...

2019-05-17 11:59:12 198

原创 Java并发包系列开篇

在我们想要谈论Java并发包(java.util.concurrent)的时候,这是一个头疼的问题,却又是每个Java工程师不得不掌握的一项技能。一直以来都想写一个Java并发包系列,无奈迟迟没有动手动脑。最近重新思考规划了自己的学习路线,决定从Java并发包开始把每个技术、原理、源码做成一个一个系列,由浅入深,由表及里。  这是Java并发包的开篇,我将大致介绍从一个较为宏观的角度来窥探Jav...

2019-05-17 11:50:59 146

原创 行为型模式:命令模式

简介姓名:命令模式英文名:Command Pattern价值观:军令如山个人介绍:Encapsulate a request as an object,thereby letting you parameterize clients with different requests,queue or log requests,and support undoable op...

2019-05-16 20:08:33 100

原创 Spring Boot自动配置原理与实践

一、Spring Boot自动配置的原理介绍  主要从springboot是如何启动后自动检测自动配置与springboot如何灵活处理自动配置两个方面讲解,前者主要分析源码,从简单的注解入手到最后的读取spring.facoties文件。后者主要举例RedisAutoConfiguration自动配置来说明springboot对于相关的配置类bean的通过注解的灵活处理。1、...

2019-05-16 14:31:27 191

原创 行为型模式:中介者模式

简介姓名:中介者模式英文名:Mediator Pattern价值观:让你体验中介是无所不能的存在个人介绍:Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring t...

2019-05-15 14:13:55 122

原创 动手实践Mybatis插件

前言  Mybatis的插件开发过程的前提是必须要对Mybatis整个SQL执行过程十分熟悉,这样才能正确覆盖源码保证插件运行,总的来说Mybatis的插件式一种侵入式插件,使用时应该十分注意。  在之前我的文章中已经介绍Mybatis的SqlSession运行原理,本篇文章是在此知识基础上学习记录的,读者可以先回顾再来看本文。一、插件开发前准备插件开发前,我们需要...

2019-05-14 19:16:00 135

原创 行为型模式:模板方法

简介姓名:模板方法英文名:Template Method Pattern价值观:在我的掌控下,任由你发挥个人介绍:Define the skeleton of an algorithm in an operation,deferring some steps to subclasses. Template Method lets subclasses redefine ...

2019-05-14 11:45:38 84

原创 Mybatis的SqlSession运行原理

1、SqlSession简单介绍  (1)SqlSession简单原理介绍  SqlSession提供select/insert/update/delete方法,在旧版本中使用使用SqlSession接口的这些方法,但是新版的Mybatis中就会建议使用Mapper接口的方法。  映射器其实就是一个动态代理对象,进入到MapperMethod的execute方法就能简单找到SqlSes...

2019-05-13 17:21:39 479

原创 创建型模式:原型模式

简介姓名:原型模式英文名:Prototype Pattern价值观:效率第一个人介绍:Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype. 用原型实例指定创建对象的种类,并且通过拷贝这些原...

2019-05-13 11:23:28 77

原创 Mybatis缓存--------系统缓存及简单配置介绍

前言Mybatis的缓存主要有两种:系统缓存,也就是我们一级缓存与二级缓存; 自定义的缓存,比如Redis、Enhance等,需要额外的单独配置与实现,具体日后主要学习介绍。在这里主要记录系统缓存的一些简单概念, 并没有涉及原理。其中会涉及Mybatis的相关配置以及生命周期等。1、Mybatis简单配置介绍  本文介绍的是基于XML的配置,并不是关于注解的Mybat...

2019-05-11 20:24:03 146

空空如也

空空如也

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

TA关注的人

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