自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于spring-beans的深复制工具类

ABParser/** * @program: ABParser * @description: 要拷贝字段的目标对象不可以是抽象类、接口,或者只有参构造方法, * 否则在targetClass.newInstance()时会报java.lang.InstantiationException * 【依赖】org.springframework.spring-beans * @auth...

2019-12-03 13:52:26 740

原创 springboot优雅的使用线程池

简单两部即可定义Executorimport lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.a...

2019-11-21 11:26:34 778

原创 springboot简单的分表插件

业务上做了水平分表,公司基础架构没有提供分表中间件,开源的中间件用起来门槛高,有较大的学习成本。自己基于springboot+mybatis+jsqlparser实现了一个简单的分表插件。笼统来说就是拦截SQL,分析SQL,替换tableName,返回重写后的SQL给Mybatis项目里引入maven依赖: <dependency> <g...

2019-11-11 17:15:23 627

原创 Redis事务

客户端状态redis客户端执行命令时分为非事务状态和事务状态。Redis通过MULTI,EXEC,WATCH等命令实现事务功能。事务的实现一个事务从开始到结束会经历三个阶段:事务开始命令入队事务执行事务开始MULTI命令的执行标志着事务的开始。MULTI命令可以会将客户端从非事务状态切换至事务状态。命令入队默认客户端处于非事务状态,该状态下客户端发送的命令会立即被服务器执行...

2019-10-31 09:48:31 135

原创 SpringBoot+Mybatis+Druid多数据源配置

1.MAVEN配置<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId&...

2019-10-24 17:44:28 169

翻译 Java 1.8 Stream流

Stream 流是 Java 8 新提供给开发者的一组操作集合的 API,将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选、排序、聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由终端操作 (terminal operation) 得到前面处理的结果。stream分类顺序流:顺序流是按照顺序对集合中...

2019-09-07 17:29:03 212

原创 ES 2.x查询

You Know, for Search精确查询 term:全匹配分词。切记term是包含而不是相等的意思精确查询多个 terms:后跟数组参数。可以看作是多个term组合查询。组合过滤查询 bool:bool可嵌套,构造复杂的filter过滤器{ "bool" : { "must" : [], ==and "should" : [], ...

2019-08-29 17:52:55 613

原创 Java操作PDF

制作pdf使用iReport-5.6.0(需要jdk1.7环境)软件制作pdf模板,一般会生成jrxml格式文件生成pdf项目中引入依赖包,如下: <!-- jasperreports Start --> <!-- 该包的作用完成ireport中Preview按扭功能。通过该包可以通过java来ireport生成模板(.jrxml或.jasper)填充数据源...

2019-07-26 13:49:07 562

原创 Redis主从复制

前言Redis服务器之间可以通过slaveof命令或slaveof选项进行数据复制.Redis的复制功能分为同步和命令传播两个操作.同步:用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态.命令传播:主从服务器状态不一致时,让主从服务器的数据库重新回到一致状态.同步client发送sync命令给从服务器,要求从服务器复制主服务器数据时的执行过程如下图:从服务器向主服...

2019-06-20 19:27:06 135

原创 Redis过期键

前言Redis是一个键值对(key-value pair)数据库服务器,服务器中的每个数据库都由一个redis.h/redisDb结构表示,redisDb结构中dict字典保存了数据库中的所有键值对,当我们给某个键值添加过期时间时(expire或pexpire),redisDb结构会开辟一个expires的字典用来保存dict字典中所有过期键的过期时间.expires过期字典中的键值是一个指针...

2019-06-12 18:39:03 195

原创 阻塞队列

JAVA种常见的7种阻塞队列.1.ArrayBlockingQueueArrayBlockingQueue是一个用数组实现的有界阻塞队列.该队列按照FIFO的原则对元素进行排序.2.LinkedBlockingQueueLinkedBlockingQueue是一个用链表实现的有界阻塞队列.该队列的默认和最大长度长度为Integer.MAX_VALUE,按照FIFO的原则对元素进行排序.3...

2019-06-11 20:50:12 120

原创 等待/通知机制

等待/通知机制,是指一个线程A调用对象O的wait()方法进入等待状态,另一个线程B调用对象O的notify()或notifyAll()方法,线程A收到通知后从对象O的wait()方法返回.等待/通知机制用来完成等待方和通知方中间的交互工作./** * @Auther: xieyuhui * @Date: 2019-06-05 08:55 * @Description: 等待通知demo...

2019-06-05 09:36:17 291

原创 Java多线程的上下文切换

Java多线程会频繁的创建和切换上下文,这样的操作会影响多线程的执行速度.##上下文切换JAVA虚拟机的多线程是通过线程轮流切换并分配CPU时间片的方式实现的.CPU通过给每个线程分配CPU时间片来让线程执行代码,时间片是CPU分配给线程执行的时间,CPU通过不停的切换线程,并给线程时间片让它执行指令,这个时间片非常非常的短,一般是几十毫秒,让我们感觉多个线程在同时执行.CPU通过这种...

2019-05-27 21:46:37 528

原创 Mac系统Java各种环境的安装和配置

整理了一份Java开发人员必备的各类环境的安装说明和教程.帮助自己快速且正确的准备好开发环境,工欲其善必先利其器.iTerm2安装 iTerm2 终端工具 : https://www.iterm2.com/安装配置 zsh:zsh 一般 Mac 已经自带了,无需额外安装。可以用 cat /etc/shells 查看 zsh 是否安装,如果列出了 /bin/zsh 则表明 zsh 已经安装了...

2019-04-03 12:34:29 247

原创 数学知识复习

简单复习下计算机科学中数学的一些概念知识.方便学习数据结构和算法.(以下一些图片和文字来自百度百科)指数幂运算aⁿ中的a的次数.指数是幂运算aⁿ(a≠0)中的一个参数,a为底数,n为指数,指数位于底数的右上角,幂运算表示指数个底数相乘。当n是一个正整数,aⁿ表示n个a连乘。当n=0时,aⁿ=1。指数的定义对数如果 b=aⁿ ,即 a 的 n 次方等于 b ( a>0 且 a...

2019-03-27 19:29:58 342

原创 Redis的数据结构

1.前言Redis(REmote DIctionary Server)数据库每个键值对(key-value)都是对象构成的,其中key总是一个字符串对象;value可以是字符串对象 string列表对象 list哈希对象 hash集合对象 set有序集合对象 zset五种中的某一种.本文会对以上五种类型的对象进行介绍,并剖析这些对象底层使用的数据结构.2.数据结构2.1简单...

2019-02-19 17:12:25 191

原创 Java多态

Java是一门OOP(Object Oriented Programming)语言,OOP具备3个特征:继承,封装和多态.下面从JVM角度简单介绍一下多态的一些体现,重载和重写的实现原理.重载/** * @Auther: xieyuhui * @Date: 2019-02-02 10:25 * @Description: 重载 * sayHello()是一个重载方法,参数类型不同,...

2019-02-02 15:28:41 143

转载 GC常见算法整理

整理下gc常见的回收策略

2019-01-16 21:11:43 270

原创 UML Diagram汇总

总结了下UML(Unified Modeling Language)常见的Diagram

2019-01-03 11:04:56 1184

翻译 Netty的核心组件

最近在学习netty,初步认识了一下netty的核心组件。Netty主要的构件:Channel回调Future事件和ChannelHandlerChannelChannel是Java NIO的一个基本构造。代表一个到实体的开放连接,如读操作和写操作。 可以把Channel看作是传入(入站)或者传出(出站)数据的载体。因此,它可以被打开或者被关闭,连接或者断开连接...

2018-08-23 17:04:40 448

原创 Java并发容器

同步容器将所有容器状态的访问都串行化,以实现线程安全性。这种方式的代价会严重降低并发性,多个线程竞争容器的锁时,吞吐量将严重降低。并发容器是针对多个线程并发访问设计的。通过并发容器来代替同步容器,可以极大地提高伸缩性并降低风险。1.ConcurrentHashMap与HashMap一样,ConcurrenHashMap也是一个基于散列的Map,但它使用了一种完全不同的加锁策略来提供...

2018-08-06 11:55:07 181

原创 Executor线程池

线程池,是指管理一组同构工作线程的资源池。工作线程的任务是从工作队列中获取一个任务,执行任务,然后返回线程池并等待下一个任务。1.优点通过重用现有的线程而不是创建新线程,可以避免频繁创建和销毁线程的开销。线程池中的工作线程是创建好的,因此可以避免由于等待创建线程而引起的延迟,提高了响应性。可以适当调整线程池的大小,使处理器保持忙碌状态,也可以防止过多线程相互竞争资源导致资...

2018-07-31 15:04:07 146

原创 Thinking In Java中对异常的描述

Java的基本理念是”结构不佳的代码不能运行” ——《Java编程思想》1.异常基本原理if(t==null){ //所有标准异常类都有两个构造器:一个默认构造器;一个接受字符串作为参数 throw new NullPointerException(&quot;t==null&quot;);}上面这段代码抛出异常后,有几件事会随之发生:使用new在堆上创建异常对象。当...

2018-07-18 15:40:32 188

原创 SpringMVC注解使用详解

@Controller:在POJO类定义初标注@Controller,再通过Spring扫描相应的类,即可使POJO成为一个能处理HTTP请求的控制器。@RequestMapper:使用@RequestMapper映射请求。@RequestMapper使用value值指定请求的URL。在类定义处指定的URL相对于Web应用的部署路径,在方法定义处指定的URL相对于类定义处指定的URL。@Req...

2018-07-04 11:55:31 408

原创 SpringMVC的DispatcherServlet

前言Spring为展现层提供了一个优秀的Web框架—SpringMVC。和众多其他Web框架一样,它基于MVC的设计理念。SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器,无须实现任何接口。同时,SpringMVC还支持REST风格的URL请求。此外,SpringMVC在数据绑定、试图解析、本地化处理及静态资源处理上都有许多不俗的表现。它在框架设计、扩展性、灵活性等方面全面...

2018-06-26 16:52:08 264

原创 Spring常用注解

Spring提供了一个context命名空间,它提供了通过扫描类包以应用注解定义Bean的方式: &amp;amp;amp;amp;amp;amp;lt;?xml version=&amp;amp;amp;amp;amp;quot;1.0&amp;amp;amp;amp;amp;quot; encoding=&amp;amp;amp;amp;amp;quot;UTF-8&amp;amp;amp;amp;amp;quot;?&amp;amp;amp;a

2018-06-20 15:18:25 157

原创 Spring子项目

Spring用有众多的子项目,它们构建起一个丰富的企业级应用解决方案的生态系统。在这个生态中,从配置到安全,从普通Web应用到大数据,用户总能从中找到一个适合自己的子项目。对应spring的应用开发者老说,了解这些子项目,可以更好的使用Spring。下面总结了Spring的子项目。Spring IO Platform : Spring IO是可集成的、构建现代化应用的版本平台。Spr...

2018-06-11 17:04:47 752

翻译 设计模式概述

Java的设计模式从何而来?跟很多软件工程技术一样,设计模式起源于建筑领域。用于几千年沉淀的建筑工作有太多值得软件工作学习和借鉴的地方。

2018-05-24 16:18:22 209

原创 7种常用的面向对象设计原则

面向对象设计原则在面向对象设计中,可维护性的复用是以设计原则为基础的。如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题。下面会介绍最常见的7种面向对象的设计原则,每一个原则都蕴含一些面向对象设计的思想,这些原则体现在很多的设计模式中,它们是从许多设计方案中总结出的指导性原则。单一职责原则(Single Responsibility Principle,SRP...

2018-03-23 17:12:46 259

原创 线程的状态

Java线程在运行的生命周期中可能处于6种不同的状态,在给定的一个时刻,线程只能处于其中的一个状态。 状态名称 说明 NEW 初始状态,线程被构建,但还没有调用start()方法 RUNNABLE 运行状态, Java线程将os中的就绪和运行两种状态笼统地称作“运行中” BLOCKED 阻塞状态,表示线程阻塞于锁 WAITING 等...

2018-03-02 16:21:17 177

原创 Cookie

前言cookie是HTTP识别用户,实现持久会话的最好方式。可以笼统的将cookie分为两类:会话cookie和持久cookie。会话cookie会话cookie是一种临时cookie,用户退出浏览器时,会话cookie就被删除。持久cookie持久cookie的生存时间更长一些,它们存储在硬盘上,浏览器推出或者重启计算机它们仍然存在。会话cookie和持久cook

2018-02-06 15:06:29 176

原创 提高HTTP的连接性能

前言如果只对连接进行简单的管理,TCP的性能时延可能会叠加起来。这就是串行事务处理。下面讨论了四种提高HTTP连接性能的方法。四种方法并行连接:通过多条TCP连接发起并发的HTTP请求。持久连接:重用TCP连接,消除连接及关闭时延。管道化连接:通过共享的TCP连接发起并发的HTTP请求。复用的连接:交替传送请求和响应报文(试验阶段)。并行连接优点:HTTP允许

2018-01-03 17:08:16 656

原创 HTTP事务的时延

HTTP事务的时延主要有以下几种原因客户端首选需要根据URI确定Web服务器的IP地址和端口号。如果最近没有对 URI中的主机名进行访问,通过DNS解析系统将URI中的主机名转换成IP地址可能需要花费数十秒的时间。客户端会向服务器发送一条TCP连接请求,并等待服务器回送一个请求接受应答。每条新的TCP连接都会有连接建立时延。这个值通常最多只有一两秒,但如果有数百个HTTP事务的话,这个值会快速的

2018-01-03 16:39:37 583

原创 HTTP状态码

前言http状态码用来告诉客户端发生了什么事情,状态码位于响应的起始行中。通过三位数字代码对不同状态码进行分类。 整体范围 已定义范围 分类 100~199 100~101 信息提示 200~299 200~206 成功 300~399 300~305 重定向 400~499 400~415 客户端错误 500~599 500~506

2017-12-18 14:51:43 300

原创 HTTP方法

常用的HTTP方法 方法 描述 是否包含主体 GET 从服务器获取一份文档 否 HEAD 只从服务器获取文档的首部 否 POST 向服务器发送需要处理的数据 是 PUT 将请求的主体部分存储到服务器上 是 TRACE 对可能经过代理服务器传送到服务器上去的报文进行跟踪 否 OPTIONS 决定可以在服务器上执行哪些方法

2017-12-14 16:41:56 232

原创 HTTP报文的语法

前言所有的HTTP报文都可以分为两类:请求报文(request message)和响应报文(response message)。请求报文会向Web服务器请求一个动作,响应报文会讲请求的结果返回给客户端。请求和响应报文的基本报文结构相同。报文格式请求报文的格式:<method><request-URL><version><headers><entity-body>响应报文格式:<version><s

2017-12-13 17:31:02 627

原创 URL(Uniform Resource Locators)的语法

前言URL(统一资源定位符号)为应用程序提供了一种访问网上任意资源的手段,但这些资源是可以通过各种不同的方案(HTTP,FTP,SMTP)来访问,因此URL语法会随方案的不同而有所不同,大部分URL都遵循通用的URL语法,而且不同的URL方案的风格和语法都有很多相同之处。大多数URL方案的语法格式由9部分构成:<scheme>://<user>:<password>@<host>:<port>/<p

2017-12-13 11:46:55 365

原创 MySQL查询缓存

前言很多关系型数据库能够缓存查询的执行计划,对于相同类型的SQL可以跳过SQL解析和执行计划生成阶段。MySQL在某些场景下也可以实现,但是MySQL还有另一种不同的缓存类型:缓存完整的SELECT查询结果,也就是“查询缓存”。MySQL查询缓存保存查询返回的完整结果。当查询命中该缓存,MySQL会立刻返回结果,跳过了解析,优化和执行阶段。查询缓存系统会跟踪查询中涉及的每个表,如果这些表发生变化,那

2017-12-06 16:09:39 250

原创 MySQL的绑定变量

绑定变量的原理从MySQL4.1版本开始,就支持服务器端的绑定变量(prepared statement),当创建一个绑定变量SQL时,客户端向服务器发送一个SQL语句的原型。服务器端接收到这个SQL语句后,解析并存储这个SQL语句的部分执行计划,返回给客户端一个SQL语句处理句柄。以后每次执行这类查询,客户端都指定使用这个句柄。绑定变量的优势在服务器只需要解析一次SQL语句。在服务器端某些优化

2017-12-04 16:35:01 2184

原创 MySQL的视图

前言MySQL5.0版本之后引入了视图。视图本身是一个虚拟表,不存储任何数据。在使用视图的时候,它返回的数据是 MySQL从其他表中生成的。

2017-11-30 17:10:01 205

空空如也

空空如也

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

TA关注的人

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