自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CGLIB动态代理

要理解CGLIB动态代理首先要知道如何使用CGLIB动态代理。为了更好说明动态代理。先来看一个简单的CGLIB动态代理示例。先定义一个被代理类。为了说明问题此处这个被代理的类只有一个简单的方法。在控制台上打印一个hello字符串。package com.proxy.cglib;public class Demo { public void sayHello(){ System.ou...

2018-09-26 00:24:53 213

原创 SpringCloud服务调用组件

SpringCloud给我们提供了几个服务调用组件。接下来分别对其使用进行介绍一、RestTemplate当我们用SpringCloud写好服务API后当我们需要消费调用服务时,RestTemplate组件就派上用场了。要使用该组件第一步需要注入该主键方法如下 @Bean @LoadBalanced RestTemplate restTemplate(){ ...

2018-08-19 19:28:52 1228

原创 Spring框架开发之ApplicationContextAware接口

当我们开发Spring应用时有时会使用到Spring的ApplicationContext对象。这时可以将类实现ApplicationContextAware接口。这样当这个类的对象实例化时会调用接口的setApplicationContext方法。可以在该方法中注入ApplicationContext对象。...

2018-10-08 09:56:35 189

原创 JDK动态代理原理

为什么使用动态代理在一些场景,我们需要对我们的业务做一些统一的逻辑处理。比如说统一的日志记录,统一的异常处理,统一的权限控制管理。在这些业务场景使用动态代理就是一个很好的编程模式。统一的逻辑处理满足面向对象编程中的单一职责原则。同时也满足业务逻辑解耦实现高内聚低耦合。动态代理的一个简单示例在上面的业务场景中使用动态代理就是一个很好的实践场景。现在我们通过JDK动态代理的一个简单示例一步...

2018-09-24 21:08:00 288

原创 SpringBoot单元测试

在日常开发过程中为了保证代码的正确通常我们要对自己写好的功能代码进行反复测试。比如说我们写好一个HTTP协议的接口。为了测试这个接口的正确性。我们很多时候会通过浏览器插件进行接口测试。这样操作既麻烦又费时。很多时候觉得这样麻烦只是简单的做下自测就将代码发布到测试环境交给测试人员进行测试。结果测试人员每次返回很多bug报告给开发人员。开发人员拿到bug报告通常也只会对具体bug进行针对性修改。修改完...

2018-09-06 00:01:14 517

原创 Java的volatile关键字

在Java并发编程中volatile关键字是一个非常重要的工具,使用得好能够极大提高程序的性能。理解volatile是使用它的前提。否则程序运行的结果就不能达到预期。先给出几个结论。本文围绕这几个结论进行介绍。1.volatile能够保证数据读写一致性。...

2018-06-05 23:46:36 151

原创 分布式系统之使用ZooKeeper的几种业务场景

分布式系统有几种常见的业务场景,比如说Master选举、分布式锁、分布式队列、分布式屏障等等。掌握这些算法来解决分布式系统功能中的问题显得尤为重要。接下来一一介绍这些场景。Master选举为了保证系统的高可用。我们常常会将一个工程代码集群部署。在这种情况下当我们需要定时处理一个非常耗时,耗CPU的运算业务算法时。我们不可能让集群中的每一个工程代码都运行一次该业务。这时我们就要在集群中的机器中选出一...

2018-05-31 23:16:46 643

原创 RabbitMQ概念介绍

AMQP 0-9-1 模型简介AMQP 0-9-1的工作过程如下图:消息(message)被发布者(publisher)发送给交换机(exchange),交换机常常被比喻成邮局或者邮箱。然后交换机将收到的消息根据路由规则分发给绑定的队列(queue)。最后AMQP代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取发布者(publisher)发布消息时可以给消息指定各种消息属性(me...

2018-05-29 21:59:35 415

原创 分布式系统之分布式锁

现在很多系统都采用分布式部署,并且同一个应用为了实现高可用,在部署时采用集群方式。这时当前端代理服务器受到请求后 被分发到不同的服务器上面。像下面这种。所以在这种情况下单个JVM的锁就排不上用场了。在这种场景下需要分布式锁。目前分布式锁有个各种实现方式,各有优劣在实际应用场景采用不同的实现方式。接下来先来介绍基于关系型数据库实现方式的分布式锁。基于关系型数据库实现方式的锁有几个特点...

2018-05-28 23:05:04 274

原创 Spring事务总结

事务的传播性1.PROPAGATION_REQUIRED:如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。2.PROPAGATION_SUPPORTS :如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。但是对于事务同步的事务管理器,PROPAGATION_SUPPORTS与不使用事务有少许不同。3.PROPAGATION_MANDATORY :如果已经存在一个事务,...

2018-05-27 00:05:24 380

原创 DataSource连接配置说明

spring.dao.exceptiontranslation.enabled是否开启PersistenceExceptionTranslationPostProcessor,默认为truespring.datasource.abandon-when-percentage-full设定超时被废弃的连接占到多少比例时要被关闭或上报spring.datasource.allow-pool-suspen...

2018-05-26 10:19:08 10863

原创 Spring框架开发之SmartLifecycle接口

在使用Spring开发时,我们都知道,所有bean都交给Spring容器来统一管理,其中包括每一个bean的加载和初始化。 有时候我们需要在Spring加载和初始化所有bean后,接着执行一些任务或者业务逻辑。这时SmartLifecycle接口就派上用场了。我们一起看下源码public interface SmartLifecycle extends Lifecycle, Phased { b...

2018-05-13 23:35:32 5476 1

原创 Orcale数据库中与NULL(空)相关问题总结

今天再使用orcale数据库时出现的问题

2018-05-11 11:17:27 394

原创 分布式数据库--MyCat--分库JOIN解决方案汇总

MyCat分布式数据库如何解决分库JOIN一、全局表。该模式适用于不分片表。MyCat全局表在进行更新、添加、删除操作时会在每一个节点执行 一次以保证数据一致性MyCat全局表在设计时需要额外添加一个字段_mycat_op_time数据类型为bigintMyCat在开启全局一致性检查时并不会同步全局表中的数据(可能是使用方式不对)二、E-R分片规则该模式适用于分片表MyCat基于E-R规则分片的目...

2018-05-11 00:05:51 2497

原创 分布式数据库--概述

当单实例数据库在容量或者性能方面满足不了现有业务的需求,这时就会考虑分布式数据库。分布式数据库一般会进行分库分表设计,这样的设计相对于单实例数据库,需要额外考虑下面几个问题。一是数据同步问题,二是不同实例下面表关联查询问题。目前这两个问题没有完美的解决办法。针对这两个问题分别进行分析。数据库延迟问题1. MySQL数据库主从同步延迟原理。答:谈到MySQL数据库主从同步延迟原理,得从mysql的数...

2018-05-10 00:54:55 1739

原创 SpringCloud简单Demo工程搭建

摘要SpringCloud为分布式系统开发提供了开箱即用的脚手架。使得开发分布式系统变得简单。接下来简单介绍下通过SpringCloud开发分布式架构应用的Demo工程。本博客只是介绍怎么使用,爱一个人始于颜值终于才华。基于这个思路先介绍颜值篇-用法,然后有时间再介绍才华篇-理论。SpringCloud按照项目部署可以分为以下几个部分注册中心(服务目录服务)、配置中心(集中式配置管理中心)、服务端...

2018-05-03 23:56:17 17973 2

原创 分布式日志系统-ELK-搭建Demo

日志是分析线上问题的重要手段,通常我们会把日志输出到控制台或者本地文件中,排查问题时通过根据关键字搜索本地日志,这在单机应用中使用起来还是非常方便有效的方式,但是现在随着用户规模的扩大,单机应用难以支撑大规模用户访问的业务,这时项目开发中采用分布式的架构,日志会记录到多个服务器或者文件中,同一个服务通常采用集群部署,一个异常日志都难以定位到具体的机器。分析问题可能要每个集群机器进行日志查询。这样做...

2018-05-03 23:24:59 6538

原创 SpringBoot的启动流程

作为一个高级程序员,一定要多看开源框架源码。从大师那里学的一些编程技巧。因此将自己看SpringBoot的心得总结一下。为了更加直观的描述SpringBoot的启动流程,这里给出SpringBoot的启动时序图,本文将根据这个时序图作详细描述。很容易知道SpringBoot的启动类为SpringApplication。从SpringBoot的源码看他的启动方法就两个大的方法分别是initializ...

2018-04-16 00:03:51 721 1

原创 数据库设计总结

对于一个系统,数据库的设计是非常重要的,数据库设计决定了以后数据好不好维护。后期需求好不好展。同时也决定了系统的性能。一个坏的数据库设计一个功能点的改动可能会设计多张表的改动。一不小心可能就会引起数据的不一致。为了解决这些问题。在数据库设计之初就要考虑这些问题。减少后期系统维护量。说了这么多数据库设计的重要性那么数据库设计应该考虑哪些问题呢?一、范式与反范式的设计范式设计的目的是为了减少数...

2018-04-08 23:43:12 23228 2

原创 数据库—MySQL—数据复制总结

mysql读写分离实现思路,用mysql自带的主从复制做数据同步。用mysql-proxy做读写操作映射。一、windows版本mysql-proxy配置1.从mysql官网下载mysql-proxy的windows版本。解压后保留bin和lib文件。在share\doc\mysql-proxy文件夹下找到rw-splitting.lua将其放到bin文件夹下。2.进入bin文件夹打开CMD。运行...

2017-03-05 20:26:42 298 1

原创 Jersey开发总结

jersey在开发的过程中能够使用一些注解来获取请求参数不仅够使提高开发速度,而且能够使看起来更加代码简介,易于阅读。现将在jersey开发过程中使用到的一些知识进行总结如下:        1.GET         jersey获取GET传递过来的参数。 @GET @Path("/{param}") @Produces("text/plain;ch

2017-03-03 16:22:54 395 1

HTML图片切换

HTML和CSS与JavaScript的结合

2015-03-05

空空如也

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

TA关注的人

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