自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

翻译 外部配置@ConfigurationProerties

Spring 允许外部化配置文件,以便不同的环境使用同一套应用程序,你可以使用properties文件、YAML文件、环境变量、命令行参数外部化配置。可以使用@Value将属性参数直接注入到Bean中或者通过@ConfigurationProerties绑定对象。@ConfigurationProperties(prefix = "datasource")@Datapublic clas...

2018-07-23 17:02:43 1109

翻译 注解支持定时任务和异步处理

Spring支持使用注解开启定时任务和异步方法执行为了支持@Scheduled 和 @Async 注解,需要在你的@Configuration类上加 @EnableScheduling  和@EnableAsync  注解@EnableScheduling@EnableAsync@SpringBootApplicationpublic class SpringBootApiAppl...

2018-07-23 14:45:47 688

翻译 net.dongliu.requests

requests 是http 请求库,有丰富的API。git 地址:https://github.com/hsiafan/requests maven 配置:<dependency> <groupId>net.dongliu</groupId> <artifactId>requests</artifactId&...

2018-07-23 12:25:18 4457

翻译 热部署-spring-boot-devtools

maven :<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</

2018-07-20 18:44:51 313

原创 sql_mode=only_full_group_by问题解决

数据库分组查询报错:1 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'fortress.PartnerSetting.Id' which is not functionally dependent on columns in GROUP BY clause; thi...

2018-07-06 15:48:46 2202

原创 processOn在线制图工具

推荐一款在线制作流程图的工具-processon官网地址: https://www.processon.com/

2018-07-03 17:29:46 975

原创 windows系统通过ssh命令连接mysql数据库

1.使用ssh进行远程登陆假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。      $ ssh user@host  如:ssh [email protected].连接数据库服务器mysql -u 用户名 -p 密码3.选择数据库use 数据库后续就可以在选择的数据库里执行SQL。...

2018-07-03 09:55:02 4310

原创 Guava-Retrying实现重试机制

在接口调用中由于各种原因,可能会重置失败的任务,使用Guava-Retrying可以方便的实现重试功能。首先,需要引用Guava-Retrying的包 <dependency> <groupId>com.github.rholder</groupId> <artifactId>guava-retrying</artifactId&...

2018-06-28 23:34:10 5754 1

原创 switchhosts 一款host管理工具

SwitchHosts!是一款现代且流畅运行的基于Electron的应用程序,可帮助您编辑,管理和创建自定义host文件,并以最少的工作量连接至在线host源。官网下载压缩包后,解压并以管理员身份执行SwitchHosts!.exe程序。可以切换语言为中文:File - Preferences - Set and Relaunch新建可以添加Hosts规则本地直接录入Hosts方案名,如test可...

2018-06-27 23:28:56 7372

原创 流量拦截控制

本文分享一下如何实现流量拦截首先,流量拦截是要在某一段时间内控制访问次数,如果访问次数超过阈值,则拒绝访问。所以,要有两个配置化信息,一个是流量监控缓存失效时间内可以调用的次数,一个是流量监控缓存失效时间实现方式是使用Redis缓存记录调用次数和拦截器用来拦截http请求调用。@Servicepublic class RateLimitInterceptor extends HandlerInt...

2018-06-21 10:23:49 2495

原创 mybatis入门介绍以及源码分析

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。从 XML 中构建 SqlSessionFa...

2018-06-19 13:09:35 166

翻译 Spring MVC 视图的呈现

前面讲解到DispatcherServlet的doDispatch过程,对视图的呈现处理是在processDispatchResult方法中完成的 private void processDispatchResult(HttpServletRequest request, HttpServletResponse response, @Nullable HandlerExecutionChai...

2018-06-18 15:28:39 303

翻译 MVC处理HTTP分发请求

本节一起学习MVC处理HTTP分发请求

2018-06-18 14:52:12 1255

翻译 DispatcherServlet的启动和初始化

本节一起学习DispatcherServlet的启动和初始化前面已经分析了Spring MVC的工作,下面就DispatcherServlet的启动和初始化进行详细的分析作为Servlet,DispatcherServlet的启动和Servlet的启动过程是相关联的,在Servlet的初始化过程中,Servlet的init会被调用,进行初始化。下面看一下DispatcherServlet的基类Ht...

2018-06-17 12:56:04 842

翻译 Spring MVC设计概览

Spring的上下文体系通过ContextLoader和DispatcherServlet建立并初始化的过程。在完成对ContextLoaderListener的初始化之后,Web容器开始初始化DispatcherServlet,这个初始化的启动与在web.xml中载入次序的定义有关。DispatcherServlet会建立自己的上下文来持有Spring MVC的Bean对象,在建立自己持有的IO...

2018-06-17 12:16:03 158

翻译 IOC容器启动的基本过程

本节一起学习IOC容器的启动过程IOC容器的启动过程就是建立上下文的过程。该上下文是与ServletContext相伴而生的,同时也是IOC容器在web环境中的具体表现之一。由ContextLoaderListener启动的上下文为跟上下文。在根上下文的基础上,还有一个与Web MVC 相关的上下文用来保存控制器DispatcherServlet需要的MVC对象。在web容器中启动Spring 应...

2018-06-16 22:39:02 2367

翻译 Spring AOP拦截器调用的实现

本节一起学习Spring AOP拦截器调用的实现在Spring AOP通过JDK的代理方式或者CGLIB方式生成代理对象的时候,相关的拦截器已经配置到代理对象中了,拦截器在代理对象中起作用是通过对这些方法的回调完成的。如果是JDK的Proxy生成代理对象,那么需要通过InvocationHandler来设置拦截器回调,如果是使用CGLIB,则通过DynamicAdvisedInterceptor完...

2018-06-15 18:31:07 1077

翻译 建立AopProxy代理对象

本节学习建立AopProxy代理对象在Spring的AOP模块中,一个主要的部分就是代理对象的生成,而对于Spring的应用,可以看到,是通过配置和调用Spring的ProxyFactoryBean来完成这个任务的。在ProxyFactoryBean中,封装了主要代理对象的生成过程。在这个生成过程中,可以使用JDk的Proxy和CGLIB两种生成方式。ProxyConfig提供了配置属性;Advi...

2018-06-15 15:29:58 284

翻译 Spring AOP的设计与实现

本节一起学习Spring AOP的设计与实现具体来说,在Spring AOP实现中,使用的核心技术是动态代理,而这种动态代理实际上是JDK的一个特性。通过JDK的动态代理特性,可以为任意JAVA对象创建代理对象,具体使用时通过java Reflection API来完成的。Spring AOP的核心结束是JDK动态代理技术。以动态代理技术设计出了一系列AOP的横切实现,比如前置通知、返回通知、异常...

2018-06-15 11:59:37 171

翻译 Spring AOP概述

本节回顾一下AOP的概念AOP是面向切面的编程思想,百科的概述为:Aspect是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点。从关注点中分离出横切关注点是面向切面的程序设计的核心概念。分离关注点是解决特定领域问题的代码从业务逻辑中独立出来,业务逻辑的代码不再含有针对特定领域问题代码的调用,业务逻辑同特定领域问题的关系通过切面来封装、维护,这样原本分散在整个应用程序的变动就可以很好...

2018-06-15 11:45:04 134

翻译 Bean对IOC容器的感知

本节主要学习Bean对IOC容器的感知容器管理的Bean一般不需要了解容器的状态和直接使用容器,但在某些情况下,需要在Bean中直接对IOC容器进行操作,这时候就需要在Bean中设定对容器的感知。Spring IOC容器也提供了该功能,它是通过特定的aware接口完成的。aware接口有以下这些:BeanNameAware ,可以在Bean中得到它在IOC容器中的Bean实例名称BeanFacto...

2018-06-13 18:47:04 143

翻译 ApplicationContext和Bean的初始化和销毁

本节来学习ApplicationContext和Bean的初始化和销毁首先看一下ApplicationContext容器的初始化和销毁关闭过程。ApplicationContext启动的过程是在AbstractApplicationContext实现的。在使用应用上下文时需要做一些准备工作,这些准备工作在prepareBeanFactory方法中实现。这个方法为容器配置了ClassLoader、P...

2018-06-13 13:10:32 4222

翻译 IOC容器的依赖注入

本节来学习IOC容器的依赖注入假设IOC容器已经载入了用户定义的Bean信息,开始分析依赖注入的原理。首先,依赖注入的过程是用户第一次向IOC容器索要Bean时触发的,当然也可以在BeanDefinition信息中通过控制lazy-init属性来让容器完成对Bean的预实例化。下面从DefaultListableBeanFactory的基类AbstractBeanFactory入手看一下getBe...

2018-06-13 11:47:13 176

翻译 IOC容器的初始化过程

本节来学习IOC容器的初始化过程IOC容器的初始化由refresh()方法启动的,具体包含BeanDefinition的Resource定位、载入和注册三个过程。第一个过程是Resource定位过程。Resource定位指的是BeanDefinition的资源定位,由ResourceLoader通过统一的Resource接口来完成。第二个过程是BeanDefinition的载入。这个载入过程是把用...

2018-06-11 21:38:33 389

翻译 IOC容器的设计

IOC容器的设计UML:从接口BeanFactory到HierarchicalBeanFactory,再到ConfigurableBeanFactory,是一条主要的beanFactory的设计路径。其中,BeanFactory接口定义了基本的IOC容器的规范。在这个接口定义中,包含了getBean()这样的IOC容器的基本方法。而HierarchicalBeanFactory接口继承了BeanF...

2018-06-11 12:28:52 426

原创 Executors线程池源码分析

本节学习Executors类源码首先看一下常用的线程池的几种创建方式 /** * 创建一个线程池,该线程池重用固定数量的线程,在共享的无界队列中运行 */ public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nT...

2018-06-10 17:42:19 172

原创 CountDownLatch源码分析

本节一起学习CountDownLatch类的源码1.类变量信息 private final Sync sync;2.构造函数 public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); this.sync ...

2018-06-07 23:04:32 144

原创 CopyOnWriteArrayList源码分析

本节一起学习CopyOnWriteArrayList类的源码1.首先看一下类的定义public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable2.类的变量 /** 重入锁用来保护所有的存取器 */ final ...

2018-06-07 11:15:46 123

原创 ArrayBlockingQueue类源码分析

本节学习ArrayBlockingQueue的源码:1.首先看类的定义public class ArrayBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, java.io.Serializable可以看到类继承了AbstractQueue且实现了接口Blo...

2018-06-06 23:21:05 111

原创 ReentrantLock源码分析

本节看一下ReentrantLock类的源码1.首先看一下类的定义public class ReentrantLock implements Lock, java.io.SerializableReentrantLock实现了Lock接口2.类的变量信息private final Sync sync;提供了同步机制3.构造函数 /** * Creates an instance o...

2018-06-06 22:21:09 96

原创 AbstractQueuedSynchronizer抽象类源码分析

上面几章节介绍了读写锁和Sync抽象类,这节介绍AQS如何控制同步的1.首先看一下类的定义public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java.io.Serializable官方对类的描述为:提供了一个框架实现阻塞锁,依赖于同步器(信号...

2018-06-06 21:00:33 115

原创 读写锁-ReentrantReadWriteLock内部类Sync源码分析

首先看类的定义:abstract static class Sync extends AbstractQueuedSynchronizer    Sync是抽象类,且继承了AbstractQueuedSynchronizer    而AbstractQueuedSynchronizer继承了AbstractOwnableSynchronizer    其中AbstractOwnableSynchr...

2018-06-06 11:55:53 332

原创 读写锁-ReentrantReadWriteLock源码解读

本节一起学习ReentrantReadWriteLock类的源码:1、首先,可以看到ReentrantReadWriteLock类实现了ReadWriteLock接口,public class ReentrantReadWriteLock implements ReadWriteLock, java.io.Serializable读写锁ReadWriteLock接口定义了两个方法:...

2018-06-05 23:39:32 185

原创 原子类-AtomicInteger类源码分析

本节介绍AtomicInteger类源码首先,AtomicInteger类继承了Number抽象类,Integer也继承了Number抽象类。内部维护了一个int数据,且被volatile修饰:private volatile int value;常用的方法:1.getAndSet /** * Atomically sets to the given value and retur...

2018-06-05 22:49:14 231

原创 原子类-AtomicBoolean类源码分析

常见的原子类:基本类: AtomicInteger、AtomicLong、AtomicBoolean;引用类型: AtomicReference、AtomicReference的ABA实例、AtomicStampedRerence、AtomicMarkableReference;数组类型: AtomicIntegerArray、AtomicLongArray、AtomicReferenceArra...

2018-06-05 22:39:55 441

原创 延时任务实现

延时任务举例:订单生成30分钟内没有支付,则作废延时任务实现的几种思路:1.数据库实现方式    思路:任务表增加触发时间字段,当任务插入时,触发时间等于当前时间+30分钟,使用Quartz批处理定时轮询任务,只有到了触发时间的且未支付的订单,才作废。2.使用JDK的DelayQueue无界阻塞队列实现    思路:订单任务要实现Delayed接口,重写compareTo和getDelay方法,生...

2018-06-04 12:04:26 284

原创 mySql学生成绩排名

MySql 实现查询每个班级学习成绩前N的学生首先建一张学生成绩信息表:CREATE TABLE t_student (  stu_id int(11) NOT NULL AUTO_INCREMENT COMMENT '学生ID',  stu_name varchar(50) NOT NULL COMMENT '学生名称',  score decimal(5, 2) NOT NULL COMMEN...

2018-06-03 17:30:11 2835

原创 数据库-联合索引

实际例子分析面试过程中经常问到的联合索引,给定一个查询SQL和联合索引,问是否会走索引。表结构:CREATE TABLE person (  id int(2) NOT NULL,  address varchar(255) DEFAULT NULL,  age int(11) NOT NULL,  name varchar(255) DEFAULT NULL,  PRIMARY KEY (id)...

2018-05-28 17:54:28 1683

原创 2018面试题总结

最近这段时间在忙于面试,终于可以抽时间总结一下面试题,供各位同命运的小伙伴参考,问题都很类似,但是深度需要各位小伙伴自己探索了,加油!1.java基础  1)常用的集合,之间的区别,底层实现源码是否线程安全,为什么非线程安全,怎么保证线程安全?   2)哈希一致性    3)Hashmap的插入数据过程       讲讲红黑树       为什么使用红黑树   4)抽象类和接...

2018-05-25 13:27:24 2042 3

转载 创建型模式-建造者模式

1.建造者模式    使用简单的对象构造复杂的对象。2.举例:我们假设一个快餐店的商业案例,其中,一个典型的套餐可以是一个汉堡(Burger)和一杯冷饮(Cold drink)。汉堡(Burger)可以是素食汉堡(Veg Burger)或鸡肉汉堡(Chicken Burger),它们是包在纸盒中。冷饮(Cold drink)可以是可口可乐(coke)或百事可乐(pepsi),它们是装在瓶子中。我们...

2018-04-27 13:21:26 139

birt报表api文档

birt报表的api文档

2013-08-30

空空如也

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

TA关注的人

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