自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java基础提高篇--集合源码分析--jdk1.8 HashMap源码

一、HashMap概述  HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射操作。存储的是对的映射,允许多个null值和一个null键。但此类不保证映射的顺序,特别是它不保证该顺序恒久不变。   除了HashMap是非同步以及允许使用null外,HashMap 类与 Hashtable大致相同。   此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(g

2017-07-14 13:24:37 292

原创 Volatile关键字详解

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来

2017-07-14 10:44:38 213

原创 java基础提高篇--集合源码分析--jdk1.8 LinkedList源码

一、LinkedList概述  LinkedList是List和Deque接口的双向链表的实现。实现了所有可选列表操作,并允许包括null值。    LinkedList既然是通过双向链表去实现的,那么它可以被当作堆栈、队列或双端队列进行操作。并且其顺序访问非常高效,而随机访问效率比较低。  注意,此实现不是同步的。 如果多个线程同时访问一个LinkedList实例,而其中至少

2017-07-10 15:19:01 303

原创 java基础提高篇--集合源码分析--jdk1.8 ArrayList源码

package java.util;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;/** 实现了List接口的可变数组。实现了List中所有的操作,以及允许所有元素,包括null。 除

2017-07-10 10:02:02 594

原创 简单工厂模式

在设计原则中有这样一句话“我们应该针对接口编程,而不是正对实现编程”。但是我们还是在一直使用new关键字来创建一个对象,这不就是在针对实现编程么?        针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。入股代码是针对接口而写,那么可以通过多态,它可以与任何新类实现该接口。但是,当代码使用一大堆的具体类时,等于是自找麻烦,因为一旦加入新的具体类,就必须要改变代码。在这里我们希望

2017-07-09 21:41:29 188

原创 Redis集群搭建与简单使用

介绍安装环境与版本用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境。redis 采用 redis-3.2.4 版本。两台虚拟机都是 CentOS ,一台 CentOS6.5 (IP:192.168.31.245),一台 CentOS7(IP:192.168.31.210) 。安装过程1. 下载并解压cd /

2017-07-05 17:10:54 283

原创 CountDownLatch类介绍

正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLatch相关的以下几点:目录CountDownLatc

2017-07-03 10:25:33 185

转载 ZooKeeper系列(一)

一、ZooKeeper的背景1.1 认识ZooKeeperZooKeeper---译名为“动物园管理员”。动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始丛林里,心惊胆颤的被动 物所观赏。为了让各种不同的动物呆在它们应该呆的地方,而不是相互串门,或是相互厮杀,就需要动物园管理员按照动物的各种习性加以分类和管理,这样我们才能更加

2017-07-01 21:49:01 185

原创 装饰者模式

我们都知道,可以使用两种方式给一个类或者对象添加行为。        一是使用继承。继承是给一个类添加行为的比较有效的途径。通过使用继承,可以使得子类在拥有自身方法的同时,还可以拥有父类的方法。但是使用继承是静态的,在编译的时候就已经决定了子类的行为,我们不便于控制增加行为的方式和时机。        二是使用关联。组合即将一个对象嵌入到另一个对象中,由另一个对象来

2017-06-27 21:32:47 200

原创 观察者模式

一、定义观察者模式定义了对象之间一对多依赖,这样一来当一个对象改变状态的时候,它的所有依赖者都会收到通知并自动更新。二、类图:三、代码实现:package observer;/** * Created by Administrator on 2017/6/23. * 主题接口,该方法中有注销、撤销观察者,状态更新通知方法 */public interface

2017-06-23 21:11:00 187

原创 spring的eheache缓存机制

一、spring缓存机制的引入    最近项目用到了缓存,由于不会涉及到高可用性以及对数据持久化处理,只需要对应用进行缓存的需求,所以采用了spring缓存机制,可以应用在应用的每个层次上。    Spring缓存底层也是需要借助其他缓存工具来实现,例如EhCache(Hibernate缓存工具),上层则以统一API编程。    主要的步骤:    (1)、maven的pom文件的

2017-06-19 11:05:13 569

原创 java基础提高篇--集合源码剖析--java集合框架

java集合涉及到的接口和类都放在java.util包下,包含了很多常用的数据结构,包括数组,列表,链表等。学习集合大致需要学习以下五个部分的内容:List列表、Set集合、Map映射、迭代器(Interator、Enumeration(古老的迭代器目前不常使用))、工具类(Arrays、Collections)。    集合的整体框架见下图:Collection接口包括了List

2017-06-13 14:53:30 333

转载 一名3年工作经验的程序员应该具备的技能(写得很好,果断转)

因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的。简单先说一下,LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有面试了有6家公司(因为LZ不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少),其中成功

2017-06-13 11:11:39 332

原创 并发条件下springmvc的@RequestBody获取数据异常问题处理

问题描述:系统的框架使用的是ssm框架,在模拟压力测试的时候,使用APCHE的压力测试,100个并发循环向系统的controller层发送请求,结果发现有如下异常情况:Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '20172-11-02 08:02:57' f

2017-06-08 13:34:19 1981 2

原创 java基础提高篇--嵌套类

一、引入嵌套类 在一个类的内部可以定义一个类,这个类就是嵌套类,嵌套类分为静态嵌套类和非静态嵌套类,静态嵌套类由于使用的局限限(下面会讲述),所以很少使用,使用较多的是非静态嵌套类,也就我们说的内部类,内部类的类型可以分为三种:(1)、在一个类中,直接定义一个内部类;(2)、在一个类的方法中,定义一个内部类;(3)、匿名内部类;二、静态嵌套类看下面代码:在一个类

2017-05-23 16:42:30 317

原创 java基础提高篇--类型转换

java中类型转换分为隐式转换和显式转换,今天我们探讨一下显示转换,也就是我们说的强制类型转换。强制类型转换,转换的类型可以是基本数据类型和引用数据类型,我们今天探讨的是引用数据类型。java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。什么叫父类引用指向子类对象,且听我慢慢道来.从2个名词开始说起:向上转型(upcasting) 、向下转型(downc

2017-05-23 15:45:04 245

转载 java基础提高篇--异常

1. 引子       try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。

2017-05-16 14:41:26 305

原创 java基础提高篇--final关键字

在程序设计中,我们希望我们设计的部分不能够改变,这时候就会用到final关键字,被final修饰的部分是不允许修改的部分,不想被修改的原因一般是效率和设计。数据、方法、类会使用到final关键字。    一、数据有时数据不能够改变是非常有用的,这样就可以减轻系统运行的负担,提高我们程序的运行效率。使用final修饰的数据我们称之为“常量”。常量主要应用在两个地方:(1)、编译期的常量,

2017-05-16 10:03:51 273

原创 java基础提高篇--static关键字

一、含义:在java中没有全局的概念,可以用static关键字来构造出“伪全局”的概念,它可以修饰成员变量、成员方法,同时可以修饰代码块。java中将内存分为栈内存和堆内存,栈内存中存放一些基本类型的变量、数组和对象的引用,堆内存中存放一些对象。在jvm加载一个类的时候,如果这个类的成员变量和成员方法被static修饰,那么jvm会为这些成员变量和成员方法开辟固定大小的内存区域,有了这些固

2017-05-14 20:09:54 192

原创 java基础提高篇--抽象类和接口

抽象类和接口是java语言中对抽象概念进行定义的两种机制,这两种机制体现的java面向对象的强大之处。抽象类和接口对于抽象概念的支持是相似的,可以相互转换,但是也是有区别的。一、抽象类我么知道在面向对象中,万事万物皆对象,同时所有的对象都是通过类来描述的,而不是所有的类是用来描述对象的。如果一个类不能描述具体的对象,而是通过其他来支撑的,那个这个类就是抽象类。比如有一个Animal类,它具

2017-05-08 21:48:51 236

原创 java基础提高篇--java的三大特性--多态

前两篇博文,分别介绍了java的面向对象的两大特性封装和继承,这一篇为介绍一下多态。首先回顾一下什么是封装、继承。封装就是隐藏信息,使用抽象的数据类型将数据以及基于数据的操作封装起来,使得外界不能够知道类中的内部细节,只提供给外部访问的方法。继承就是将共有的属性封装成一个类,使之成为父类,如果编写的其他类使用父类的属性和方法,就让这些类继承于父类,成为子类。子类和父类具有IS-A的关系

2017-05-08 21:10:13 265

原创 java基础提高篇--java的三大特性--继承

首先看下上一篇的例子:有两个类,分别是男性和女性,他们都有共同的属性,name和sex,他们都有人的属性,我们可以编写一个person类,拥有人的共有属性,男性和女性使用person类就可以了,这种特性就是我们要讲的“继承”。继承所描述的是“is-a”的关系,如果有两个对象A和B,若可以描述为“A是B”,则可以表示A继承B,其中B是被继承者称之为父类或者超类,A是继

2017-05-08 09:59:44 254

原创 @Autowired注解getBean为null

直接上代码:debug发现@Autowired的定义的变量都是为null,再看看这个service是否加了注解:结果发现这个service加了@Service这个注解,那么问题出现在哪呢?查找进入这个service的入口发现:使用这个service的时候是new出来的对象,而不是使用@Autowired来获取的,所以导致这个service不能获取spring

2017-05-04 16:12:18 2678

原创 java基础提高篇--java的三大特性--封装

学习java快要一年了,在实际的工作中,发现自己的java基础还是很薄弱,自此,发愤图强,好好的加强一下,第一课面向对象的三大特性--封装搞起。封装,顾名思义就是将一些东西包装起来,不让外人看到里面的细节,专业点的话就是信息隐藏,是指利用的抽象的数据类型将数据以及基于数据的操作封装在一起,使它们成为不可分割的实体,数据被保护在数据类型的内部,尽可能的异常内部的细节,只提供外部的接口,使之与外部

2017-05-04 14:56:19 827

原创 设计模式--策略模式

1、策略模式的定义:策略模式定义了一系列的算法,并将每y一个算法封装起来,而且使它们之间可以相互替换。策略模式算法使它独立于客户而独立变化。策略模式的目的是将定义和使用分开,也就是将算法的行为和环境分开。策略模式是用来封装算法的,在实践中,我们发现它可以封装任何类型的规则。使用的环境是:不同的条件,需要不同的算法,那么这种情况下,就可以使用策略模式。2、根据以上定义,定义出策略

2017-04-23 16:53:02 208

原创 设计模式--单例模式

写了一天的代码,换下脑子。一、单例模式的特点:(1)、单例模式的类只有一个实例;(2)、单例模式的类只有自己创建自己的实例;(3)、单例模式的类必须提供给其他所有对象一个实例;二、单例模式的几种类型:1、懒汉式:代码:public class LazySignleton{private static LazySignleton instance=null;/

2017-03-29 16:08:09 190

原创 ByteBuffer的心得

1、概述:在NIO中,数据的读写始终是与缓冲区联系的(读取时信道(ScoketChannel)将数据读入到缓冲区中,写入的时候首先将需要发送的数据按照顺序填入到缓冲区)。缓冲区是定长的。基本上它只是一个列表。它的所有元素都是基本数据类型(String并未包含其中,但是String.getBytes就可以了)。NIO缓冲区的其中形式:ByteBuffer\ShortBuffer\CharBu

2017-03-22 21:15:05 382

原创 二、redis的学习前奏--NoSQL数据库的介绍(下)

接着上一篇的介绍,本篇继续介绍NoSQL数据库的。5、NoSQL数据库的数据模型简介--聚合模型(1)、聚合模型的基本内容包括以下内容:KV键值、Bson、列族、图形;(2)、四种数据类型的详细介绍以及对比见下图(图一):图一6、分布式数据库的CAP原理(CAP+BASE)(1)、传统数据库的ACID原理:A(Atomcity)原子性、C(Consistency)一致性

2016-12-20 20:24:55 270

原创 一、redis的学习前奏--NoSQL数据库的介绍(上)

1、是什么:NoSQL(NoSQL=Not Only SQL),意即“不仅仅是SQL”,泛指非关系型数据库。随着互联网web2.0网站的兴起,传统的关系型数据库再应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型数据则由于其本身的特点得到快速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据类型带

2016-12-17 19:53:30 368

原创 字符串、Json对象和Java对象之间的转换

在实际工作中,时常会遇到字符串、Json对象和Java对象之间的转换,项目结束,闲暇时间总结一下基本知识:一、字符串转为Json对象字符串转为Json对象,需要用到的JSONObject这个类的fromObject(),直接调用即可;二、字符串转为Java对象字符串转为Java对象,首先用JSONObject这个类的formObject()方法,将字符串转为Json

2016-12-14 10:32:16 368

原创 java程序中前台后中文编码的问题

在开发过程中发现,IE对于ajax传入的url中的中文参数是可以自动进行解码的,但是在前台的html的text中编写的汉字,前后台如果对于写入的content不进行编码和解码,导致在后台中会出现乱码的情况。一、ajax中传入的参数是中文的可以不进行编码(最好也进行编码解码一下):js中部分代码:function getZxftUrl(){$.ajax({url : "/serv

2016-12-13 09:52:43 276

转载 浅谈navigator

>  html>  head>      meta charset="UTF-8">      title>Navigator详解,IE11,chrome和firefox浏览器下title>      script>         //属性         var appCodeName= window.navigator.appCodeName;//返回与浏览器相关

2016-12-13 09:38:00 779 1

空空如也

空空如也

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

TA关注的人

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