自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java 线程池的分析和使用

线程池为线程的生命周期开销问题和资源不足问题提供了解决方案,通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。合理的利用线程池能带来很大的好处:降低资源消耗。过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线...

2018-12-17 17:32:19 188

原创 设计模式--代理模式(Proxy Pattern)

1、定义代理模式就是为其他对象提供一种代理以控制对这个对象的访问。主要分为两种代理模式:静态代理和动态代理。静态代理:利用组合关系实现静态代理,组合关系注入源对象,然后可以在外层对象进行其它逻辑的注入。静态代理的问题是不同的逻辑注入需要不同的代理对象,一直增加代理对象显然不实际。动态代理:在java中,可以直接利用java.lang.refect.Proxy类直接创建代理类或者代理对象。...

2018-12-12 16:08:07 252

原创 Java8 ArrayList 详解

ArrayList 是 Java 集合框架中比较常用的数据结构,底层基于数组实现容量大小的动态变化,所以会占用一块连续的内存空间。ArrayList 是线程不安全的,允许元素为 null。它继承了 AbstractList,实现了 List,RandomAccess,Cloneable,java.io.Serializable 接口,所以ArrayList 是支持快速访问、复制、序列化的。一、数...

2018-12-11 15:13:20 532

转载 LinkedHashMap 详解

一、概述概括的说,LinkedHashMap 是一个关联数组、哈希表,它是线程不安全的,允许key为null,value为null。 它继承自HashMap,实现了Map<K,V>接口。其内部还维护了一个双向链表,在每次插入数据,或者访问、修改数据时,会增加节点、或调整链表的节点顺序。以决定迭代时输出的顺序。默认情况,遍历时的顺序是按照插入节点的顺序。这也是其与 HashMap 最...

2018-12-10 15:58:15 1583

原创 HashMap 和 HashTable 的区别

HashTable 和 HashMap 是 Java 面试中比较常见的问题,这里主要总结一下 HashMap 和 HashTable 的几个重要的区别。基类不同:HashTable 基于 Dictionary 类,而 HashMap 是基于 AbstractMap。Dictionary是什么?它是任何可将键映射到相应值的类的抽象父类,而AbstractMap是基于Map接口的骨干实现,它以最...

2018-12-07 17:37:55 141

原创 HashTable详解

我们都知道 HashTable 与 HashMap 一样,也是以 数组+链表 的形式存储数据的,而最主要的区别是 HashTable 是绝对线程安全的。以下主要是对 HashTable 的底层原理做解析。一、定义1、HashTable 在 Java8 中的定义如下:public class Hashtable<K,V> extends Dictionary<K,V&...

2018-12-07 16:54:27 1708

原创 HashMap 详解

总所周知,HashMap 底层是基于 数组 + 链表 的方式组成的,不过在 jdk1.7 和 jdk1.8 的两个版本中实现稍有不同。以下基于这两个版本做 HashMap 的底层原理解析。一、基于JDK1.71、数据结构HashMap 底层中有两个比较重要的参数,即:容量和负载因子。容量的默认大小是 16,负载因子的默认是0.75,当 HashMap 的 size > 16*0.75...

2018-12-05 10:25:02 403

转载 volatile关键字总结

一、volatile语义1、保证线程间变量的可见性线程对volatile变量进行修改之后,要立刻回写到主内存。线程对volatile变量读取的时候,要从主内存中读,而不是从工作内存。(关于主内存和工作内存的概念是在Java内存模型[JMM, Java Memory Model]中定义的)我们知道CPU的处理速度和主存的读写速度不是一个量级的,为了平衡这种巨大的差距,每个CPU都会有缓存...

2018-12-03 09:28:44 126

原创 基于 SpringBoot+Shiro+Redis 实现动态权限管理

一、背景最近学了 Apache Shiro,刚好有个新项目需要完成,所以整理一下如何通过整合 SpringBoot + Shiro + Redis 实现登录认证和动态的权限管理的知识点。实现过程中主要有两个问题待解决:如何实现登录认证?如何实现动态的权限管理?本文主要是对下面这两个问题进行解决。二、登录认证1、导包SpringBoot 相关的包不再赘述,Shiro 所需要的包为...

2018-11-07 10:44:01 10116 13

原创 Log4j2配置详解

一、背景最近由于项目的需要,需要将日志全部迁移成log4j2版本,之前对于项目日志的配置总是似懂非懂,最近详细整理了下知识点,本文就作为一个记录来详细记录一下log4j2配置的相关知识点。二、配置详解...

2018-10-30 10:15:12 31363

原创 Linux 下 Zookeeper 的安装启动

Linux 下 Zookeeper 的安装启动1、下载并解压相应的 Zookeeper2、启动 Zookeeper1、下载并解压相应的 Zookeeper下载命令:wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz解压:tar -zxvf zookeepe...

2018-10-23 11:46:51 303

原创 设计模式--工厂方法模式(Factory Method)

1、定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。核心结构有四个角色:抽象工厂、具体工厂、抽象产品、具体产品。工厂方法模式的通用类图如下: 在工厂方法模式中, 抽象产品类Product负责定义产品的共性, 实现对事物最抽象的定 义; Creator为抽象创建类, 也就是抽象工厂, 具体如何创建产品类是由具体的实现工厂 Concre...

2018-09-13 16:23:24 142

原创 设计模式--单例模式(Singleton Pattern)

1、定义:确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例。有两种实现方式:饱汉模式和饿汉模式。懒汉模式:加载类时不创建对象,在第一次获取对象时再创建(线程不安全、延迟加载)。 饿汉模式:程序加载时就创建对象(线程安全)。2、单例模式优点减少内存开支,特别是一个对象需要频繁的创建、销毁时。减少系统的性能开销。单例模式可以避免对资源的多重占用。单例模式可以在...

2018-09-13 14:42:39 158

原创 WebSocket的生命周期详解

1、WebSocket端点的4个生命周期事件打开事件: 此事件发生在端点建立新连接时并且在任何其他事件发生之前。消息事件: 此事件接收 WebSocket 对话中另一端发送的消息。它可以发生在 WebSocket 端点接收了打开事件之后并且在接收关闭事件关闭连接之前的任意时刻。错误事件: 此事件在 WebSocket 连接或者端点发生错误时产生。关闭事件: 此事件表示 WebSocke...

2018-09-04 11:01:11 4442

原创 使用Git将本地代码仓库和Coding关联

原因很早之前使用过用git将本地代码托管到coding.net远程仓库,但是过程都没有记录下来,每次需要使用coding时又需要重新踩一遍坑。下面是基本操作记录git 初始化 进到需要提交的项目目录下,执行git init 写上coding账号和emailgit config --global user.name "codingID" git config -...

2018-08-24 15:12:33 1914

原创 跨域请求和Cookie的跨域传递

问题描述前后端完全分离的项目,前端使用Vue + axios,后端使用SpringMVC,容器为Tomcat。使用CORS协议解决跨域访问数据限制的问题,但是发现客户端的Ajax请求不会自动带上服务器返回的Cookie:JSESSIONID。 导致每一个Ajax请求在服务端看来都是一个新的请求,都会在服务端创建新的Session(在响应消息头中设置Set-Cookie:JSESSIONID=x...

2018-08-24 14:53:31 303 1

原创 Spring Boot拦截器 WebMvcConfigurerAdapter 高版本替换方案

Spring Boot拦截器 WebMvcConfigurerAdapter 高版本替换方案高版本的替换方案目前有两种:方案1 直接继承WebMvcConfigurationSupport@Configurationpublic class MvcConfig extends WebMvcConfigurationSupport { @Override ...

2018-06-22 10:02:25 428

原创 Spring 的 AOP

AOP:面向切面编程,常常被用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题,在 JavaEE 应用中,常常通过 AOP 来处理一些具有横切性质的系统级服务,如:事务管理、安全检查、缓存、对象池管理等。AOP 从程序的角度考虑程序的流程,提取业务处理过程的切面,AOP 框架并不与特定的代码耦合,它能处理程序执行中的特定的切入点,而并不与某个具体类耦合。1、AOP 的基本概念AOP 框架的

2016-09-09 14:12:17 260 1

原创 Spring 的常用注释

为了减少开发中配置的工作,增强程序的内聚性,提高开发的效率,Spring 支持使用 Annotation 来代替 XML 配置文件。1、搜索 Bean 类Spring 通过使用一些特殊的 Annotation 来标注 Bean 类,然后通过简单的配置驱动 Spring 自动搜索某些路径下的 Java 类,并将这些 Java 类注册成 Bean 实例。Spring 提供的几个 Annotation

2016-09-08 17:32:46 419

原创 Spring 的高级依赖关系配置

Spring 中,建议将组件和组件之间的耦合采用依赖注入管理,但基本类型的成员变量值应直接在代码中设置。对于组件之间的耦合关系,通过使用控制反转,代码变得非常清晰。Spring IoC 将原来使用 Java 代码管理的耦合关系提取到 XML 中进行管理,从而降低了各组件之间的耦合,提高了软件系统的可维护性。1、获取其他 Bean 的属性值(属性值注入)实际应用中,某个实例的属性可能是另一个对象的一个

2016-09-07 17:43:06 270

原创 Spring 的两种后处理器

Spring 容器允许开发者使用两种后处理器扩展 IoC 容器,这两种后处理器可以后处理 IoC 容器本身,或者对容器中所有的 Bean 进行后处理。Spring 提供的两种常用的后处理器:① Bean 后处理器 ② 容器后处理器1、Bean 后处理器Bean 后处理器是一种特殊的 Bean ,并不对外提供服务且必须实现 BeanPostProcessor 接口。如果使用 Applica

2016-09-07 17:04:11 576

原创 Spring 容器中 Bean 的生命周期

Spring 可以管理 singleton 作用域的 Bean 的生命周期,Spring 可以精确的知道该 Bean 何时被创建、何时被初始化完成、容器何时准备销毁该 Bean 实例。Spring 无法管理 prototype 作用域的 Bean 。1、Spring 管理 Bean 的生命周期行为的时机:① 注入依赖关系之后 ② 即将销毁 Bean 之前2、依赖关系注入之后的行为Spring

2016-09-07 16:48:04 337

原创 JavaWeb 之 Filter 详解

Servlet API 提供一个 Filter 接口,实现该接口的 Java 类则称为过滤器。Filter 主要用于对用户请求 HttpServletRequest 进行预处理,能够对客户端和服务器端消息的过滤,也可以对 HttpServletResponse 进行后处理。在实际项目中, Filter 里 doFilter() 方法里的代码就是从多个 Servlet 的 service() 方法里抽

2016-09-02 17:48:37 268

原创 Session 的生命周期和工作原理

Session 的生命周期Session 的作用时间从用户第一次到达某个特定的 Web 页开始到用户离开 Web 站点,或在程序中利用代码终止某个 Session,默认过期时间为 30 分钟,可在 Tomcat 的 web.xml 配置文件中查看到如下信息: 可以在 web.xml 重新设置 session 的生命周期,如果在该段时间内没有再次请求,则会自动调用 sessionDestroy

2016-09-02 17:25:58 1213

原创 Servlet 的生命周期与工作原理

servlet 通常被称为服务器端小程序,是运行在服务器端的程序,用于处理及相应客户端的请求。Servlet 的生命周期当 Servlet 在 Web 容器中运行时,其实例的创建及销毁等都不是由我们程序员决定的,而是由 Web 容器进行控制的。创建 Servlet 实例有两个时机:① 客户端第一次请求某个 Servlet 时系统创建该 Servlet 实例(大部分都是该方式)。 ②

2016-09-01 17:12:28 344

原创 HTTP 协议入门知识

HTTP 协议入门知识1. 概述HTTP(超文本传输协议):是一个基于请求与响应模式的、无状态的协议,常基于 TCP 的连接方式,大多数的 Web 开发都是建立在 HTTP 协议之上的 Web 应用层的协议。HTTP 协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的。 HTTP 协议永远都是客户端发起请求,服务器回送响应,这样就限制了使用 HTTP 协议无法实现在

2016-08-31 17:45:21 301

原创 基于 jQuery 的图片自动上传插件

基于 jQuery 的图片自动上传插件,兼容 IE 浏览器

2016-08-16 22:01:05 1230 1

空空如也

空空如也

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

TA关注的人

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