自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LinkedHashMap实现访问有序原理及实现LRUCache

相信大家在平常的开发中都接触过HashMap和LinkedHashMap,但对他们之间的区别可能有些人还不是很清楚-------LinkedHashMap可控制按插入顺序读取和按访问顺序读取,今天我就来说下LinkedHashMap的访问有序的特性和基于LinkedHashMap实现的LCUCache缓存对象。所谓的访问有序就是指LinkedHashMap将近期访问的元素置后,访问越频繁的元素越往...

2018-04-16 21:37:11 2003

转载 java同步器实现的基础:aqs

一、概述  谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)!  类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。  以下是本文的目录大纲:概述框架...

2018-03-28 21:52:12 320

转载 控制反转IOC之实现--依赖注入--依赖查找+依赖拖拽

1.控制反转(Inversion of Control)与依赖注入(Dependency Injection)控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。IoC是一个很大的概念,可以用不同的方式来实现。其主要实...

2018-03-20 21:42:30 2669 2

转载 数据库事务的四大特性以及事务的隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。  如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consi...

2018-03-12 15:52:07 133

转载 ODBC与JDBC比较

在学习J2EE的JDBC过程中,刚见到JDBC就马上联想到了ODBC,而且我们可以肯定他们之间有必然的关系。开始学它的时候还是觉得有点晕,于是就查了很多资料,与比较熟悉的ODBC进行了比较。    先各自简单介绍一下ODBC和JDBC。    ODBC(Open Database Connectivity)是一组对数据库访问的标准API,这些API通过SQL来完成大部分任务,而且它本身也支持SQL...

2018-03-08 11:58:48 8203

转载 Java多线程之CAS操作

之前我们了解的synchronized关键字,是一种悲观锁,也就是说该锁认为每次去读取或使用数据的同时,其它的线程都会去操作数据。而volatile关键字虽然是synchronized关键字的轻量级实现,但是其无法保证原子性,所以一般要搭配锁一同使用。而今天要讨论一个Java的乐观锁,即CAS(Compare And Swap),其设计思想是乐观地认为没有并发产生,所以不上锁,在取数据的时候,判断...

2018-03-07 09:38:30 312

转载 spring配置websocket并实现群发/单独发送消息

spring框架中自带了websocket的jar包,利用它可以实现与H5中WebSocket的对接,甚至websocket还可以通过依赖注入与http请求一同工作,详细配置实现过程如下文件目录结构如下,主要是controller和websocket文件夹1.配置自动扫描加载:<!--如果使用注解,那么只需要下面的配置--><!--组件扫描--><context:...

2018-03-06 20:05:49 870

原创 动态代理的俩种实现方式

提到设计模式,我们不得不提下代理模式,这里给出其定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。说白了就是我们不能直接操作被代理的对象,而只能通过操作代理对象而间接操作被代理的对象。这就好比水厂、送水代理点、用户三者的关系,水厂就是被代理的对象,送水代理点就是代理对象,用户就是要访问被代理对象的客户,用户不能直接跟水厂买水,得去代理点买水,代理点卖水给用户,然后再去水厂进水。spr...

2018-03-05 21:05:15 3390

转载 java并发编程-线程间协作的两种方式:wait、notify、nitifyAll和Condition

1.问题引入         线程之间也是需要协作的,比如生产者-消费者模型:当队列满时, 生产者需要等待队列中有空间才能够向里面放入物品,而在等待的时间内,生产者必须释放对资源(队列)的占有权。因为如果生产者不释放对资源的占有权,那么消费者就无法从队列中取出物品,就不会让队列有空间,进而生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出占有权,并进入挂起状态。然后等待消费者...

2018-03-05 09:43:18 483

转载 单点登录详解

一、单系统登录机制1、http无状态协议  web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求,响...

2018-02-28 10:00:29 397

转载 利用Dom,Sax,Pull三种方式解析xml文件

最近找工作,看到许多公司的要求里都写了要会xml解析,所以就把之前的xml解析知识又重新回顾了一下,写个小例子.解析xml文件常用的几种方式也就dom,sax,pull了,并且面试官经常问到的也是这三种解析方式之间的优缺点以及使用情况,先说一下这三种方式的优缺点和使用情况吧:其实dom,sax,pull之间的优缺点网上有很多,讲的搞不好比我的还要深入和贴切,不过还是要说一下,毕竟自己以后还是要回顾...

2018-02-27 10:45:57 677

转载 websocket作用及意义

Browser已经支持http协议,为什么还要开发一种新的WebSocket协议呢?我们知道http协议是一种单向的网络协议,在建立连接后,它只允许Browser/UA(UserAgent)向WebServer发出请求资源后,WebServer才能返回相应的数据。而WebServer不能主动的推送数据给Browser/UA,当初这么设计http协议也是有原因的,假设WebServer能主动的推送数...

2018-02-11 10:47:45 10292 1

转载 Java的内省机制

在之前做过的项目中,都涉及到了前后台的交互,当我们将前台页面上获得的参数传递到后台的时候,我们可以利用很多方法,譬如用Ajax的表单提交,或者直接用JQuery封装的Ajax传递。当我们传递到后台的时候,我们还得一个个的接收参数,如果参数少,我们可以很快的解决,如果参数多,我们的代码量就大多了。在Java中,我们也可以用request对象的getParameter方法来接收参数,同理,也解决不了上...

2018-02-11 09:21:12 140

原创 运用观察者模式的java回调监听Listenner

java中的监听回调机制说到底是一种观察者设计模式,通过向被监听者对象内部注册一个监听器接口对象,在被监听者的事件函数中调用监听器的回调方法,这样在客户端代码触发被监听者的事件函数时,执行回调方法。//监听器接口interface ClickListenner{ //回调方法        void onclick();}class MyButton{ private ClickLi...

2018-02-09 16:56:58 934

转载 设计模式学习网站

学习的时候切记要沉下心来结合现实中的场景领悟其中文字的思想http://www.runoob.com/design-pattern/design-pattern-tutorial.html模板方法模式,和现实中的模板很像,一个文档的模板通常是一个完成了部分内容的表格(表格模板就像一个模板方法),每个人都会拿到表格的副本(具体的实现类)进行某些项的填写,每个人都可以对指定项(抽象方法或钩子方法)进行...

2018-02-09 15:56:53 214

转载 java事件监听机制

java事件处理机制(自定义事件)java中的事件机制的参与者有3种角色:1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中2.event source:具体的事件源,比如说,你点击一个button,那么button就是event source,要想使button对某些事件进行响应,你就需要注册特定的listener。...

2018-02-09 09:55:08 439

原创 读ConcurrentHashMap源码笔记,体验和HashTable的区别

      经研究过jkd1.5新特性,其中ConcurrentHashMap就是其中之一,其特点:效率比Hashtable高,并发性比hashmap好。结合了两者的特点。      集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1....

2018-02-08 15:54:06 252

转载 Hession,一个轻量级的rpc工具

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI(remote method invocation)的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。在进行基于Hessian的项目开发时,应当注意以下几点:▲JAVA服务器端必须具备以下几点:·包含

2018-02-07 11:41:01 380

原创 读LinkedBlockingQueue源码并实现生产者、消费者模式

在日常开发中,我们经常会遇到在高并发的情况下,对于瞬间产生的大量数据来不及处理,这时候该怎么办?总不能数据还没处理就把数据丢弃,那我们该把这些数据存储在哪呢?简单的数组或者util包下的集合类型是不能满足在这种并发情况下存储数据要求的。这时候就得我们自己定义这么一种队列,它能在多线程环境下,当本身没有存储数据或者存满数据的情况下,能够让相应线程阻塞,一旦上面的条件不成立时,可以立马唤醒相应线程去存

2018-02-06 11:05:26 414

原创 读Timer源码理解jdk定时任务

在java中实现定时任务的方式很多,比如quartz框架的任务调度,jdk的ScheduledExecutorService任务调度,spring中集成的调度以及netty中集成的调度,今天我要介绍的是jdk原生的比较原始的timer定时任务的实现方式,废话少说直接上代码。首先介绍下Timer这个类所包含的关键属性。 //TaskQueue是一个任务队列,其内部定义一个TimerTa

2018-01-31 15:14:13 182

转载 删除表数据drop、truncate和delete的用法

一、SQL中的语法1、drop table 表名称 eg: drop table dbo.Sys_Test 2、truncate table 表名称 eg: truncate table dbo.Sys_Test 3、delete from 表名称 where 列名称 = 值 eg: delete from dbo.Sys_Test where test=’test’二、drop,

2018-01-29 15:31:29 247

转载 Protostuff序列化和反序列化使用说明

google原生的protobuffer使用起来相当麻烦,首先要写.proto文件,然后编译.proto文件,生成对应的.java文件,鄙人试了一次,发现真的很麻烦。而protostuff的官方网站(http://www.protostuff.io/documentation/runtime-schema/),对于智商比较低的小编来说也略显生涩,于是鄙人就根据项目中用到的protostuff,撰写

2018-01-29 14:39:15 795

转载 关于memcached和redis的区别

随着现代互联网与数据库交互的日益频繁和数据的不断爆发式增长,为了更快的响应前端的数据请求,在不断优化像mysql、sqlserver、oracle等基于硬盘的持久化数据库的存储能力的同时,也出现了类似于redis、memcached等基于内存的数据库,那么同样是基于内存的数据库,这俩种数据库有什么区别呢?1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过mem

2018-01-29 09:27:58 146

原创 websocket基于b/s的全双工通信

websocket是一种h5的b/s长连接全双工通信,与ajax不同,ajax是基于http协议的一种与服务端通信的技术,他只能先由客户端发起http请求,进行一次tcp链接,服务端收到请求进行响应,然后关闭tcp链接,下次浏览器再次请求重复同样动作。但是websocket与服务端通信时虽然底层也是基于tcp协议的,但是他不是浏览器发起请求然后服务端响应的这种模式,websocket是全双工通信的

2018-01-28 13:59:38 1838

转载 java事物

java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而就有了事务的回滚,取消先前的操作.....     注:在Java中使用事务处理,首先要求数据库支持事务。如使用MySQL的事务功能,就要求MySQL的表类型为Innodb才支持事务。否则,在Java程序中做了comm

2018-01-28 13:27:07 284

转载 攻破 JAVA NIO 技术壁垒( 下 ) 2017-09-02 ImportNew (点击上方公众号,可快速关注) 来源:朱小厮, blog.csdn.net/u013256816/articl

攻破 JAVA NIO 技术壁垒( 下 )2017-09-02 ImportNew(点击上方公众号,可快速关注)来源:朱小厮,blog.csdn.net/u013256816/article/details/51457215#comments如有好文章投稿,请点击 → 这里了解详情内存映射文件

2017-10-11 22:55:29 294

转载 攻破 JAVA NIO 技术壁垒( 上 )

攻破 JAVA NIO 技术壁垒( 上 )2017-09-02 ImportNew(点击上方公众号,可快速关注)来源:朱小厮,blog.csdn.net/u013256816/article/details/51457215#comments如有好文章投稿,请点击 → 这里了解详情现在使用NIO的场景越来越多,

2017-10-11 22:54:18 299

转载 Java 里如何实现线程间通信

Java 里如何实现线程间通信2017-10-11 ImportNew(点击上方公众号,可快速关注)来源:wingjay,http://wingjay.com/2017/04/09/Java里如何实现线程间通信?/如有好文章投稿,请点击 → 这里了解详情正常情况下,每个子线程完成各自的任务就可以结束了。不过有的

2017-10-11 22:49:39 133

空空如也

空空如也

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

TA关注的人

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