51dev.com IT技术开发者社区

51dev.com 技术开发者社区

JAVA栅栏和闭锁的区别

JAVA栅栏和闭锁的区别

  闭锁:一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。即,一组线程等待某一事件发生,事件没有发生前,所有线程将阻塞等待;而事件发生后,所有线程将开始执行;闭锁最初处于封闭状态,当事件发生后闭锁将被打开,一旦打开,闭锁将永远处于打开状态。  闭锁CountDo...

SpringMvc之参数绑定注解详解

SpringMvc之参数绑定注解详解

  在SpringMVC中,提交请求的数据是通过方法形参来接收的。从客户端请求的key/value数据,经过参数绑定,将key/value数据绑定到Controller的形参上,然后在Controller就可以直接使用该形参。  1、默认支持类型  SpringMVC有支持的默认参数类型,我们直接在...

Spring web.xml详解

Spring web.xml详解

  web.xml文件是JavaWeb项目中的一个配置文件,主要用于配置欢迎页、Filter、Listener、Servlet等,但并不是必须的,一个JavaWeb项目没有web.xml文件也是照样能跑起来的。  首先来看一下Tomcat官网的Servlet和JSP规范规范与的ApacheTomca...

Java虚拟机内存基础、垃圾收集算法及JVM优化

Java虚拟机内存基础、垃圾收集算法及JVM优化

 1.1类加载子系统与方法区  类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中可能还会存放运行时常量池信息,包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)。1.2Java堆  ...

Java并发编程之线程池及示例

Java并发编程之线程池及示例

  线程池顶级接口。定义方法,voidexecute(Runnable)。方法是用于处理任务的一个服务方法。调用者提供Runnable接口的实现,线程池通过线程执行这个Runnable。服务方法无返回值的。是Runnable接口中的run方法无返回值。  常用方法-voidexecute(Runna...

Java并发编程之并发容器

Java并发编程之并发容器

  解决并发情况下的容器线程安全问题的。给多线程环境准备一个线程安全的容器对象。  线程安全的容器对象:Vector,Hashtable。线程安全容器对象,都是使用synchronized方法实现的。  concurrent包中的同步容器,大多数是使用系统底层技术实现的线程安全。类似native。J...

Spring可二次开发常用接口、类及其源码详解

Spring可二次开发常用接口、类及其源码详解

  Spring为了用户的开发方便和特性支持,开放了一些特殊接口和类,用户可进行实现或者继承,常见的如这些: ApplicationContextAware接口、ApplicationEvent抽象类、ApplicationListener接口、BeanNameAware接口、BeanFa...

Spring之AOP原理、代码、使用详解(XML配置方式)

Spring之AOP原理、代码、使用详解(XML配置方式)

  Spring的两大核心,一是IOC,另一个是AOP,本博客从原理、AOP代码以及AOP使用三个方向来讲AOP。先给出一张AOP相关的结构图,可以放大查看。  1、PointCut(连接点,定义匹配哪些方法)  首先打开Spring的源码,查看PointCut接口设计:publicinterfac...

Spring之IOC原理及代码详解

Spring之IOC原理及代码详解

  引用Spring官方原文:ThischaptercoverstheSpringFrameworkimplementationoftheInversionofControl(IoC)[1]principle.IoCisalsoknownasdependencyinjection(DI).Itisa...

最全排序算法原理解析、java代码实现以及总结归纳

最全排序算法原理解析、java代码实现以及总结归纳

  十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。&...

B+树Java代码实现以及测试

B+树Java代码实现以及测试

M阶B+树的定义:任意非叶子结点最多有M个子节点;且M>2;除根结点以外的非叶子结点至少有M/2个子节点;根结点至少有2个子节点;除根节点外每个结点存放至少M/2和至多M个关键字;(至少2个关键字)非叶子结点的子树指针与关键字个数相同;所有结点的关键字:K[1],K[2],…,K[M];且K[...

B树Java代码实现以及测试

B树Java代码实现以及测试

B树定义  B树又叫平衡多路查找树。一棵m阶的B树(m叉树)的特性如下:根节点至少有两个孩子每个非根节点至少有M/2(上取整)个孩子,至多有M个孩子。每个非根节点至少有M/2-1(上取整)个关键字,至多有M-1个关键字。并以升序排列。key[i]和key[i+1]之间的孩子节点的值介于key[i]和...

SpringCloud之Config配置中心+BUS消息总线原理及其配置

SpringCloud之Config配置中心+BUS消息总线原理及其配置

  在常规的开发中,每个微服务都包含代码和配置。其配置包含服务配置、各类开关和业务配置。如果系统结构中的微服务节点较少,那么常规的代码+配置的开发方式足以解决问题。当系统逐步迭代,其微服务会越来越复杂,慢慢演化成网状依赖结构,这个时候常规的代码+配置的开发方式就并不合适了,因为还要考虑整体系统的扩展...

SpringCloud之Zuul网关原理及其配置

SpringCloud之Zuul网关原理及其配置

  Zuul是springcloud中的微服务网关。网关:是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。  Zuul是一个微服务网关,首先是一个微服务。也是会在Eureka注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。 ...

SpringCloud之RabbitMQ消息队列原理及配置

SpringCloud之RabbitMQ消息队列原理及配置

  本篇章讲解RabbitMQ的用途、原理以及配置,RabbitMQ的安装请查看SpringCloud之RabbitMQ安装  1、同步变异步消息  场景:用户下单完成后,发送邮件和短信通知。  运用消息队列之后,用户下单完之后,下单信息写入数据库,再写入消息队列,发送邮件和发送短信各自去消息队列进...