自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bob于的专栏

不积跬步,无以至千里;不积小流,无以成江海

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

转载 How Spring Web MVC Really Works

How Spring Web MVC Really WorksEUGEN PARASCHIVNOVEMBER 6, 2017DEVELOPER TIPS, TRICKS & RESOURCES LEAVE A COMMENTIntroductionThis is an in-depth look at the powerful features and internal workings ...

2018-03-26 08:00:52 517

转载 maven之怎么做?

依赖关系管理通常情况下,我们已经一套项目在一个共同的项目下。在这种情况下,我们可以创造让所有的公共依赖一个共同的POM,然后进行分项目POMS为这个POM父。下面的例子将帮助你理解这个概念以下是上述的依赖图的细节APP-UI-WAR依赖于App-Core-lib和 App-Data-lib。Root 是 App-Core-lib 和 App-Data-lib 的父类。Root 定义LIB1,LIB...

2018-03-26 07:25:35 278

原创 maven之是什么?

了解事物的产生必先了解产生事物的根源   题记一直用maven进行项目管理,但对其还是一知半解。所以这次想对maven进行一个大体上的梳理。我们都知道maven是一种依赖管理工具,但什么是依赖管理工具呢?什么是依赖管理工具?       比如说你写了某个应用模块,这个应用模块需要和数据库交互,交互的前提是数据库驱动。换句话说,这个应用模块的运行需要依赖数据库驱动这一前提。管理这种依赖关系就是我们所...

2018-03-25 08:55:20 651

原创 java事务

了解一下java 中的事务1 什么是事务?       通常我们所说的事务是指数据库中的事务(总是认为其与数据库相关),也就是数据库操作过程中的的一系列原子操作(从数据库角度说,就是一组SQL指令,要么全部执行成功,若因为某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令。更简答的说就是:要么全部执行成功,要么撤销不执行)。事务必须有四个原则:原子性、一致性、隔离性、持久性。       ...

2018-03-21 17:02:06 801

原创 Docker学习笔记之一

docker之学习笔记1、 docker的最初是为了解决什么问题的?       Docker的出现是来起源于paas项目dotCloud。pass项目的主要定位就是为软件开发提供相关的配套设施:语言环境,运行环境和存储环境。当dotCloud把基于LXC及GO语言开发的Pass平台做的极致的时候,理论上dotCloud已经不受环境限制了。后台迫于某些方面的压力,dotCloud团队将其核心引擎开...

2018-03-21 11:22:32 368

原创 Spring 容器加载相关类图

我们知道使用XmlBeanFactory来实现Spring IOC容器。而XmlBeanFactory有两个最核心的类:1: DefaultListableBeanFactory(是Spring注册及加载Bean的默认实现)2: XmlBeanDefinationReader(是XML文件的读取和注册也就是:资源文件的读取、解析和注册)对于DefaultListableBeanFact

2017-02-22 21:04:28 2425 2

转载 spring DefaultListableBeanFactory 概述

有人说,DefaultListableBeanFactory是spring的发动机,其实重要性不为过。TA的整体类图如下:  这里先概述接口部分: BeanFactory是Spring的最根的接口,类的工厂接口。HierarchicalBeanFactory接口是在继承BeanFactory的基础上,实现BeanFactory的父子关系。

2017-02-22 20:01:56 1236

原创 java虚拟机运行时数据区

了解java内存区域首先看一下java虚拟机运行时数据区,如下图所示:我们首先了解一下java虚拟机运行时数据区各部分的存储信息和运行信息.        1,程序计数器                程序计数器也被叫做字节码行号指示器,它是在JVM中仅占一片较小的内存区,如名,它的主要作用就是指向当前运行线程的下一条运行字节码指令.我们知道java虚拟机是可以多线程运行的,但

2016-11-17 18:03:32 450

转载 TreeMap

TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好。通过这篇博文你可以获得如下知识点:       1、红黑树的基本概念。       2、红黑树增加节点、删除节点的实现过程。       3、红黑树左旋转、右

2016-09-28 16:21:58 481 2

转载 由浅入深探究mysql索引结构原理、性能分析与优化

摘要:第一部分:基础知识第二部分:MYISAM和INNODB索引结构1、 简单介绍B-tree B+ tree树2、 MyisAM索引结构3、 Annode索引结构4、 MyisAM索引与InnoDB索引相比较第三部分:MYSQL优化1、表数据类型选择2、sql语句优化(1)     最左前缀原则

2016-09-15 12:29:13 613

原创 深入理解内部类

(一)内部类基础        在java中,广泛意义上的内部类一般来说包括四种:成员内部类,局部内部类,匿名内部类,静态内部类        1> 成员内部类                成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形式如下:                public class Circle{ d

2016-09-12 20:24:27 689

原创 Java异常

异常结构如下所示:我们直入重点:        1)异常和错误的区别是什么?                异常能够被本身处理,错误是无法处理的        2)异常包括可查异常和不可查异常:                可查异常:                        正确的程序在运行中,很容易出现清理可容的异常情况;除去RuntimeExcept

2016-09-12 17:43:10 288

原创 classloader

一 什么是classloader        我们知道我们写好java程序后,都是由若干个.class文件组成的完整的java应用程序,当程序运行的时候,并不是一次性加载所有的.class文件,而是动态加载.也就是后,从一个class文件中调用另一个class文件中的方法,如果另一个文件不存在,那么就要根据需要,通过java的类加载机制来动态加载所需要的class文件,从而>只有加载到jvm

2016-09-12 16:39:57 396

转载 HashMap实现原理分析

转自:Alpha's 学习笔记HashMap实现原理分析标签: HashMap 2013-11-05 15:23 121192人阅读 评论(60)收藏举报分类: 【Java SE】(32) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]1. HashMap的数据

2016-09-12 08:05:48 278

转载 Java魔法堂:类加载器入了个门

转自:Java魔法堂Java魔法堂:类加载器入了个门一、前言                              《Java魔法堂:类加载机制入了个门》中提及整个类加载流程中只有加载阶段作为码农的我们可以入手干预,其余均由JVM处理。本文将记录加载阶段的核心组件——类加载器的相关信息,以便日后查阅。若有纰漏请大家指正,谢谢。  注意:以下内容基于JDK7和HotS

2016-09-12 07:53:40 715

转载 struts2的核心和工作原理

在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处?设计目标    Struts设计的第一目标就是使MVC模式应用于web程序设计。在这儿MVC模式的好处就不在提了。技术优势    Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The Java Serv

2016-09-02 10:39:46 560

转载 Struts框架面试题

1. 简述Struts框架的初始化流程。答案:对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化控制器ActionServletActionServlet从struts-config.xml文件中读取配置信息,把它们存放到ActionMappings对象中。在Struts framework中, Controller主要是ActionServl

2016-08-18 10:19:02 4722

转载 Hibernate的10个常见面试问题及答案

Hibernate中的命名SQL查询指的是什么? Hibernate的这个面试问题同Hibernate提供的查询功能相关。命名查询指的是用标签在影射文档中定义的SQL查询,可以通过使用Session.getNamedQuery()方法对它进行调用。命名查询使你可以使用你所指定的一个名字拿到某个特定的查询。 Hibernate中的命名查询可以使用注解来定义,也可以使用我前面提到的xml影射问句来定义

2016-08-18 10:15:27 5102 1

原创 基于@Aspect的AOP

@AspectJ使用注解来描述切点和增强        Spring在处理@AspectJ注释表达式的时候,需要将asm模块添加到类路径中。asm是轻量级的字节码处理框架,因为java的反射机制无法获取入参名,Spring就使用asm来处理入参名。        此外spring采用AspectJ提供的@AspectJ注释类库以及相应的解析类库,将ivy-cache/repositor

2016-08-05 10:12:31 342

转载 TCP协议与UDP协议的区别

TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。TCP/IP协议集包括应用层,

2016-08-05 08:18:01 938

原创 java基础知识(2)

java中的HashMap的工作原理是什么?        java中的HashMap是以键值对的形式存在的。HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合添加和检索元素,当调用put()方法时,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key已经存在了,value会被更新成新值。HashMap还有一些重

2016-08-05 08:03:53 341

原创 java基本类型的默认值和取值范围

默认值 存储需求(字节)   取值范围  示例 byte 0 1  -2^7—2^7-1 byte b=10;char  ‘ \u0000′ 2  0—2^16-1 char c=’c’ ;

2016-08-04 08:22:09 557

原创 设计模式之代理模式

其实每个模式的名字就表明了该模式的作用,代理模式就是多一个代理类,替换原对象进行一些操作。关系图如下:代码: public interface Sourceable{ public void method(); } public class Source implements Sourceable{

2016-08-03 15:16:06 397

原创 设计模式之装饰模式

顾名思义,装饰模式就是给对象添加一些新功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。如上图,Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态添加一些功能,代码如下: public interface Sourceable{ public void method();

2016-08-03 15:01:07 247

原创 设计模式之建造者模式

建造者模式:        工厂类模式提供的是创建单个类的模式,而创建者模式则是将各种产品集中起来,用来创建复合对象,所谓复合对象就是指某个类具有不同属性,其实建造>者模式就是前面抽象工厂模式和最后的Test接合起来得到的。 public interface Sender{ public void Send(); }

2016-08-03 13:52:35 291

原创 单例模式

单例模式:                 单例对象是一种常见的设计模式。在java中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:        1,某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销        2,省去了new操作,降低了系统内存的使用频率,减轻了GC压力        3,有些类如交易所的核心交易引擎,控制着交易

2016-08-03 13:39:49 233

原创 设计模式之工厂模式

工厂方法模式分为三种:   工厂方法模式:        1,普通工厂模式,就是建立了一个工厂类,对实现了同一接口的一些类进行实例的创建。        举例: 接口: public interface Sender{ public void Send();

2016-08-03 12:53:24 271

原创 左旋转字符串

把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。public class Solution{ public String ReverseChildString(String str,int start,int end){ if(str.length<2){

2016-08-02 17:09:45 269

原创 翻转字符串顺序

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。public class Solution{ public String ReverseString(String str){ if(str==null) return ""; char[] c

2016-08-02 16:52:28 331

原创 java基础知识

内部类其是和类的属性没有什么区别,只是在声明的时候必须是Outer.Inner a,就像是int a一样,至于静态内部类和非静态内部类new 的时候有点区别。outer.inner a= new Outer().new Inner()(非静态,先有Outer对象才能有属性) Outer.Inner a=new Outer.Inner()要把Outer.Inner看成一部分,就像类变量一样。Se

2016-08-02 13:30:12 395

转载 java死锁详解

进程死锁及解决办法:        一:死锁的概念:                死锁是进程死锁的简称                什么是死锁:                        死锁是指多个进程循环等待他方占有的资源而无限的僵持下去的局面。很显然,没有外力作用,那么死锁涉及到的各个进程都将永远处于>封锁状态。计算机系统产生死锁的根本原因就是资源有限且操作不当。即为

2016-08-02 13:09:06 2711

原创 剑指offer之数组

时间限制:1秒空间限制:32768K题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Solution { public boolean Find(int [][] array,int target) { in

2016-07-17 10:41:16 244

转载 希尔排序与快速排序

上节讲的归并排序运行速度比简单排序块,但是它需要的空间是原始数组空间的两倍;通常这是一个严重的缺点        希尔排序,希尔排序的时间复杂度是O(N*(logN)^2)。希尔排序是基于插入排序的。希尔排序又叫缩小增量排序,它是基于插入排序的增强版。        基本思想:把记录按步长进行分组,对每组记录采用直接插入的方法进行排序。随着步长的缩小,所分成的组包含的记录就越来越多,当步长

2016-07-15 16:50:03 3749

原创 归并排序

归并排序比简单排序有效率的多,归并排序的时间复杂度只要O(N*logN),至少在速度上是这样的。        归并排序的一个缺点就是它需要在存储器上有另一个大小等于被排序的数据项的数目的数组。如果初始数组几乎站满整个存储器,那么归并排序将不能工作。但是有足够的空间,归并排序会是一个很好的选择。        归并两个有序数组A,B,生成第三个数组C,数组C包含A,B中的所有数据项。

2016-07-15 11:29:05 340

原创 java的一些基本问题

verload和override的区别。Overloaded的房哪个发是否使可以改变返回值的类型?        从字面意思上看,overload是重载,override是重写。        重载是表示一个类中允许多个重名方法,但是这些方法的参数列表不同(即为参数的个数或者类型不同)        重写override表示子类中的方法和父类中的方法名字及参数完全相同,通过子类创建的实

2016-07-13 11:26:04 367

原创 java内存可见性

理解java内存可见性,首先我们要理解java内存模型。什么是java内存模型(JMM)?        Java Memory Model (JAVA 内存模型)描述线程之间如何通过内存(memory)来进行交互。 具体说来, JVM中存在一个主存区(Main Memory或Java Heap Memory),对于所有线程进行共享,而每个线程又有自己的工作内存(Working Memory)

2016-07-13 09:54:43 465

转载 java锁机制

一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在java里面就是某个同步对象的锁(一个对象只有一把锁);如果这个时>候同步对象的锁被其他线程拿走了,它(这个线程)就只能等待(线程阻塞在锁池等待队列中)。取到锁后,他就执行同步代码(被synchronzied修饰的代码);线>程执行完同步代码后马上就把锁还给同步对象,其他在锁池中等待的某个线程就可以拿到锁执行同步

2016-07-12 12:04:04 365

转载 简单排序

冒泡排序:        冒泡排序的效率很低,但是概念上是排序算法种最简单的。使用冒泡排序算法对棒球队员排序如下图: public void bubbleSort(){ int out,in; if(nElems<2){ return a;

2016-07-09 07:58:53 297

原创 类加载过程

类加载过程:        类加载的全过程:加载、验证、准备、解析、初始化这5个过程。        加载:在加载阶段虚拟机需要完成以下3件事:                1)通过一个类的全限定名来获取定义此类的二进制字节流                2)将这个字节流所代表的静态存储结构转化为方法区的运行时结构                3)在java堆

2016-07-08 16:03:46 2253

原创 垃圾收集器与内存分配策略

垃圾收集器:        如果说垃圾收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现。对各种收集器进行比较并不是为了挑选出一个最好的收集器来而是为了对>具体应用选择最合适的收集器。收集器可以搭配使用。        Serial收集器:                serial收集器是最基本的、最古老的收集器,曾经是新生代收集的唯一选择。是一个单线程收集器。不仅

2016-07-08 15:27:00 317

空空如也

空空如也

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

TA关注的人

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