自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

286

  • 博客(169)
  • 问答 (1)
  • 收藏
  • 关注

获取某接口的所有实现类并初始化

        日前项目中遇到一个问题:        有一个接口,这个接口定义了一种规范和标志,接口中只有一个初始化方法,接口的实现类可能会有非常多,所以现在容器启动过程中我们去手动初始化这个接口的所有实现类,虽然在spring中我们可以直接配置,但是维护与使用时却不够优雅。       1. 以一个Config接口为例:public interface Config { ...

2018-08-23 16:16:11 1733

原创 EXPLAIN结果列说明

        EXPLAIN 命令主要用于分析MySQL 的SQL 语句效率,EXPLAIN 命令在MySql 5.6版本之后不仅仅只支持SELECT 条件分析,还增加了DELETE、INSERT、REPLACE、UPDATE的支持,以下就是EXPLAIN 命令的语法:{EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild]...

2018-06-27 14:18:45 400

原创 maven自定义archetype

        在开发过程中我们经常会创建一系列结构类似的新项目,这些项目结构和基础配置基本或完全一致,maven就提供了archetype类型来规定新建项目的结构及基础配置,利用archetype就可以快速简单的搭建新项目。         一、创建Maven项目的一般步骤        一般情况下创建一个maven项目会遵循以下步骤:        1.选择项目类型,类型为...

2018-06-25 15:30:09 428

原创 Redis 性能测试

        Redis 性能测试是通过同时执行多个命令实现的。        Redis 性能测试的基本命令如下:redis-benchmark [option] [option value]        以下实例同时执行 1000 个请求来检测性能:redis-benchmark -h 172.19.24.222 -p 6381 -c 100 -n 1000====...

2018-05-16 18:39:30 203

原创 Linux下安装Haproxy、Nginx、Tomcat、Keepalived

        首先介绍一下环境:        1)两台服务器(条件有限),IP分别为:192.168.40.128(server1真实IP),192.168.40.129(server2真实IP),192.168.40.200(虚拟IP)。        2)两台服务器上分别安装Tomcat,HAProxy、Keepalived        3)两台服务器上的HAProxy ...

2018-04-27 19:44:50 241

Java中的枚举

        Enum(“枚举”)全称为 enumeration, 是 JDK 1.5  中引入的新特性,在Java开发者眼中枚举已经是再普通不过的一种类型了,可以说任何Java程序员都编写过自己的枚举类,一般这些枚举类用来表示同一类属性,如: /** * @Description 操作系统类型 * @author ming.li * @Date 2018年4月16日 下午2...

2018-04-24 09:43:28 310

常用的表单参数排序验签

        在微信或支付宝等应用接入过程中,经常会用到传递参数的验证操作,以下就是最常用的一种:import java.net.URLEncoder;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.ArrayList;imp...

2018-03-28 11:07:16 447

spring boot 配置默认欢迎页

@Configuration@Controllerpublic class IndexConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addV...

2018-03-14 18:38:08 1284

原创 spring boot中thymeleaf常用配置

  spring.thymeleaf.cache = true启用模板缓存(开发时建议关闭)spring.thymeleaf.check-template = true检查模板是否存在,然后再呈现spring.thymeleaf.check-template-location = true检查模板位置是否存在spring.thymele...

2018-02-26 14:19:33 339

原创 Spring Cloud Eureka 常用配置

配置参数默认值说明服务注册中心配置  Bean类:org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBeaneureka.server.enable-self-preservationfalse...

2018-01-19 14:22:32 108

CentOS6.8下安装MySQL

        1.下载        登录mysql官网下载页面:https://dev.mysql.com/downloads/,选择Linux系统源码版下载。         2.旧版本        进入系统,使用下面命令可以查看系统中是否已安装了mysql:rpm -qa | grep mysql        如果返回结果含有mysql或相关组件,可以使用r...

2017-04-21 17:26:24 87

原创 建索引的几大原则

        建索引的几个原则        1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意...

2017-04-05 14:07:23 330

原创 将博客搬至CSDN

将博客搬至CSDN

2017-03-31 14:23:29 104

原创 HikariConfig添加中文说明

        源码中已经添加了中文相关注释,以便阅读和使用。        以下是源代码:/* * Copyright (C) 2013, 2014 Brett Wooldridge * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this fil...

2016-08-11 10:32:26 1545

Maven多项目聚合配置

        在项目中使用Maven可以大大简化开发及构建的过程,但一旦产品线庞大,包含的项目及模块繁多时,各模块间版本管理就会产生不一致现象,从而给维护及开发带来了不少难题。        一般情况下我们采用 project -- modules形式聚合多个关联项目或模块,这样子模块就可以使用父工程中的相关配置。         一 父子工程配置        1.创建父工...

2016-08-04 10:04:00 1198

各国货币编码

        在某些涉及交易的系统中常常会用到不同币种,所以我总结了全球各国的货币编码为几种使用方式。         1.数据库形式        数据库形式可以在系统初始化时加载,也可以加载到缓存中使用,这种方式比较灵活,可以与其他表结合使用,如:order,pay等,结构如图:        建表语句为:CREATE TABLE `currency` ( `C...

2016-07-26 18:53:42 3293

原创 常用英文命名规则缩写

        再也不用为英文命名烦恼了。英文缩写AbbreviateAbbreviationABRVAcademicACADAcceptAcceptanceAcceptedACPTAccessACCSAccidentACDNTAccomplishAccomplishmentAccomplishmentsACMP...

2016-07-11 18:37:15 2906

Java并发之Executor

        在很多系统中都会出现以下这种情况:某些对象或资源不得不频繁的去创建和使用,而这些对象和资源一般都是一次性的,也就是使用完就只能等待垃圾收集器的清理。等到下一次使用时又会往复这样的过程,一旦这种创建销毁的过程累积到一定程度,就会给系统带来性能乃至稳定性方面的问题。在设计模式中有一种叫做“享元模式”的设计模式,        享元模式(Flyweight Pattern)使用共...

2016-05-21 17:12:14 141

Java并发之Callable,Future,FutureTask

        在传统的多线程实现方式中(继承Thread和实现Runnable)无法直接获取线程执行的返回结果,如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。        从Java 1.5开始,java.util.concurrent包中提供了 Callable和 Future两个接口,通过它们就可以在任务执行完毕之后得到任务执行结...

2016-05-21 12:42:34 233

tomcat优化

        Tomcat是我们经常使用的 servlet容器之一,甚至很多线上产品都使用 Tomcat充当服务器。而且优化后的Tomcat性能提升显著,本文从以下几方面进行分析优化。         一、内存优化        默认情况下Tomcat的相关内存配置较低,这对于一些大型项目显然是不够用的,这些项目运行就已经耗费了大部分内存空间,何况大规模访问的情况。即使是本文中的...

2016-05-16 14:46:55 1180 1

原创 Java并发之LinkedBlockingQueue

        上一篇我们已经学习过了 ArrayBlockingQueue的知识及相关方法的使用,这一篇我们就来再学习一下ArrayBlockingQueue的亲戚 LinkedBlockingQueue。在集合类中 ArrayList与 LinkedList会常常拿来比较,ArrayList内部实现是基于数组的,而 LinkedList内部实现是基于链表,所以他们之间会有很多不同,但是本文...

2016-05-12 17:50:04 446

Java并发之ArrayBlockingQueue

        ArrayBlockingQueue是一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部是在队列中存在时间最长的元素。队列的尾部是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列获取操作则是从队列头部开始获得元素。         ArrayBlockingQueue继承自 AbstractQueue并实现 BlockingQ...

2016-05-10 11:44:00 257

Java并发之BlockingQueue

        一、Queue        Queue是队列接口是 Collection的子接口。除了基本的 Collection操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不...

2016-05-09 21:32:13 100

Java并发之Condition与Lock

        java.util.concurrent.locks包为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。该框架允许更灵活地使用锁和条件,但以更难用的语法为代价。         Lock 接口支持那些语义不同(重入、公平等)的锁规则,可以在非阻塞式结构的上下文(包括 hand-over-hand 和锁重排算法)中使用这些规则。主要的实现是 ReentrantL...

2016-05-06 09:31:51 251

Java并发之ReentrantLock

        java.util.concurrent.locks包为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。该框架允许更灵活地使用锁和条件,但以更难用的语法为代价。         Lock 接口支持那些语义不同(重入、公平等)的锁规则,可以在非阻塞式结构的上下文(包括 hand-over-hand 和锁重排算法)中使用这些规则。主要的实现是 ReentrantL...

2016-05-05 19:48:16 193

原创 Worker

        Worker是线程池中实际工作的线程,Worker是 ThreadPoolExecutor的私有内部类,它实现了 Runnable接口,所以可以作为一个线程来使用。private final class Worker implements Runnable { //锁 private final ReentrantLock runLock = new ...

2016-05-02 18:54:20 121

原创 原子操作(CAS)

        众所周知锁有两种:乐观锁与悲观锁。独占锁是一种悲观锁,而 synchronized 就是一种独占锁,synchronized 会导致其它所有未持有锁的线程阻塞,而等待持有锁的线程释放锁。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。而乐观锁用到的机制就是CAS。        1.CAS(Compare And Set)...

2016-05-02 16:41:03 1480

数据库事务

        数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列数据操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性...

2016-04-10 21:03:18 157

Java序列化进阶篇

        1.transient        类一旦实现了Serializable 接口即被声明为可序列化,然而某些情况下并不是所有的属性都需要序列化,想要人为的去阻止这些属性被序列化,就需要用到transient 关键字。        transient 关键字用于声明属性,被声明的属性在序列化时其状态不被序列化执行:public class Cat implement...

2015-07-16 17:40:57 184

Java序列化基础篇

       Java类通过实现java.io.Serializable 接口便可启用其序列化功能。实现了序列化的类的实例可以在不同的系统或JVM间传递,并且不会丢失原实例的相关状态及值。       为一个类开启序列化功能只需实现Serializable 接口即可,仅仅作为使用者可以不必了解其内部的更深层次的实现及流程,但是如果想要更好的使用序列化功能就需要与我一起详细的学习和了解它。...

2015-07-16 17:17:55 124

Java NIO 缓冲区简介

        NIO 是New IO 的简称,从JDK1.4开始添加支持,用来解决传统IO的问题,比如并发,高效传输等。NIO作为传统IO的一个补充及优化,在解决一些传统IO无法应对的场景非常有效,而且对于NIO的掌握也对于开发人员是一种技能水平的提升,所以就同我一起来学习一下NIO的相关知识吧。        通过前文我们对于Java I/O的结构已经有了一个比较清晰的认知,Java引...

2015-05-18 15:37:33 159

Tomcat入门

        Tomcat作为一名开发人员来说已经是再熟悉不过了,我们几乎每天都会与其打交道,无论是测试还是开发,甚至是生产环境。然而我相信大部分开发和测试人员仅仅是使用Tomcat,对其更深层次的研究寥寥无几,其实我也一样。        没关系!我们从基础开始系统的学习一下Tomcat的使用及高级应用。         1.Tomcat是什么?        Tomcat...

2015-05-13 17:45:48 124

Java I/O入门

        I/O 或称为输入/输出,指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,因而所有I/O 的主体实际上是内置在操作系统中的。单独的程序一般是让系统为它们完成大部分的工作。        在 Java 中,使用"流"的方式完成 I/O操作。所有 I/O 都被视为单个的字节的移动,通过一个称为 Stream 的对象一次移动一个字节,...

2015-05-13 17:34:42 77

Map实现之HashMap(性能及算法)

        上一篇重点介绍的是HashMap的实现原理、设计思想与相关具体操作,本篇就深入HashMap实现中进一步了解其内部的一些算法及相关性能指标。        HashMap实例中table的length是在初始化时就被指定的,无论采用默认值还是其他指定值,table数组的大小就已经确定,随着添加元素的增多在一定时机下下会对table数组进行扩容呢。        HashMa...

2015-03-06 09:54:54 215

Map实现之HashMap(结构及原理)

        java.util包中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。List 适用于按数值索引访问元素的情形。        Map 则提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”...

2015-03-02 10:10:09 265

List实现之LinkedList

        LinkedList是List 接口的链接列表实现。实现List接口所有可选的列表操作,并且允许添加任何元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法(如:getFirst、removeLast等)。这些操作允许将链接列表用作堆栈、队列或双端队列。     ...

2015-01-29 15:43:29 171

List实现之ArrayList

        List的主要实现类为:AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector.        大多数情况我们实现List这个接口时使用的是Arra...

2015-01-22 14:47:45 169

原创 延迟加载下拉列表内容

        在开发过程中经常会遇到延迟加载或联动加载的情况,比如前一个下拉列表决定了后一个下拉列表的内容,这种情况在选择邮寄地址中最为常见。        下图就是京东添加收货地址的例子, 后两个select会根据上一个所选的值进行加载和联动:                我们仿照上面的例子来实现一个延迟联动加载地区的demo:        1.新建一个html页面,其...

2015-01-13 10:00:01 614

Java中的List

        List是一个有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。        与 set 不同,列表通常允许重复的元素。更确切地讲,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通...

2014-11-06 11:20:22 129

Java中的数组

         所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。   ...

2014-10-28 07:32:09 123

空空如也

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

TA关注的人

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