自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

任何技能都是从模仿开始,逐步升华。

好的架构是进化而来的,好的产品是推广而来的。

转载 如何利用redis key过期事件实现过期提醒

redis自2.8.0之后版本提供Keyspace Notifications功能,允许客户订阅Pub / Sub频道,以便以某种方式接收影响Redis数据集的事件。 可能收到的事件的例子如下: 所有影响给定键的命令。 所有接收LPUSH操作的密钥。 所有密钥在数据库中过期0。因为 Redis 目前的订阅与发布功能采取的是发送即忘(fire and forget)策...

2018-05-02 18:42:07 27967 8

原创 Spring事务不生效问题汇总

在实际项目开发中,经常会由于配置错误或使用不当,导致spring事务管理不生效。

2017-06-03 15:03:27 2834

原创 Spring event应用

当我们在实现某些特定业务逻辑时,通常会通过发送事件的方式实现代码解耦,这也是观察者模式的一种体现。从spring 3.0.5为我们实现了用annotation实现event和eventListner。

2017-05-25 00:32:51 3411

原创 简易DNS服务器搭建,适用小型公司

dnsmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,相比bind和dhcpd,配置起来更简单。dnsmasq能够提供本地解析和外部dns服务器代理,通常将将其作为一个DNS中继代理。openstack就是采用的dnsmasq。

2017-05-22 22:55:24 10994

原创 使用shell通过微信公众号发送模板消息

如下通过shell脚本实现,通过微信公众号发送模板消息到个人微信号。1.配置微信公众号由于没有认证的公众号,只能通过自己申请的个人订阅号(可以自行申请),并到开发者工具中开通公众平台测试帐号实现该功能。

2017-05-05 23:10:51 6126 11

原创 MySQL使用规范备注

如下规范来源于58到家数据库30条军规解读和阿里巴巴JAVA开发手册,以及自己在实际项目应用汇总。1.基础规范1.必须使用InnoDB存储引擎支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高。2.新库必须使用utf8mb4字符集utf8mb4是utf8的超集,emoji表情以及部分不常见汉字,MySQL 8.0.1以上默认使用utf8mb43.数

2017-05-05 22:33:17 1327

原创 RabbitMQ学习之Flow Control

当RabbitMQ发布消息速度快于消费速度或者系统资源不足时,RabbitMQ将降低或阻断发布消息速度,以免服务器资源饱满而宕机,可以通过rabbitmqctl和web管理页面查看连接的状态为flow,当服务器资源不足时,连接会被blocked。连接被流控后和正常使用没有什么区别,体现可网络带宽不足情况一样。这个流控不需要配置RabbitMQ默认处理流控。

2017-04-17 17:05:27 6214 2

原创 Spring Boot探路者之应用配置

spring boot支持properties和yaml两种配置格式,properties在spring项目中很常见,key value形式配置参数,而yaml 是一种通用的数据串行化格式,专门用来写配置文件的语言,比 JSON 格式方便,支持对象、数组、纯量三种数据结构。建议在spring boot项目中采用yaml方式,让配置结构更加清晰。

2017-04-09 22:20:19 1115

原创 Spring Boot探路者之helloworld

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

2017-04-09 20:35:18 912

原创 Jenkins插件开发hellworld

jenkins本身提供了一套插件的管理机制,这些插件允许可插拨形式存在。jenkins插件虽然能提供很多种插件,但还是不能满足我们持续集成的需要,所以需要定制一些插件来支撑整个持续集成平台的运行。

2017-04-04 21:39:55 4420

原创 SonarQube静态代码分析实战

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量,可以通过使用插件机制与 eclipse 和 JIRA 等其他外部工具集成,从而实现了对代码的质量的全面自动化分析和管理。支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检测。

2017-04-04 14:54:59 8429

原创 Jenkins集成findbugs插件静态代码分析

FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用 Visitor 模式来鉴别代码是否符合一些固定的规范。 官网:http://findbugs.sourceforge.net/ maven插件:http://g

2017-03-31 10:19:30 5959

原创 Jenkins分布式集群配置

Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满足各式的集成需求。通过配置jenkins分布式环境,将不同的任务下发到多台机器执行,提高jenkins处理能力。1.安装jenkins实验使用版本2.52.war,将部署到tomcat运行,具体安装步骤略。安装默认插件,启动好配置完管理员账号。2.配置集群系统管理,进入管理节点页面 节点列表:jen

2017-03-30 00:23:24 13395

原创 RabbitMQ学习之队列监控

对于RabbitMQ的监控,除了服务器基本信息(硬盘、CPU、内存、IO等)以及MQ的进程和端口,我们也可以通过请求url访问管理API监控其集群和队列的情况。在java api 3.6.0以后,channel接口为我们

2017-01-02 21:53:49 7784 1

原创 RabbitMQ学习之集群消息可靠性测试

之前介绍过关于消息发送和接收的可靠性:RabbitMQ学习之消息可靠性及特性 下面主要介绍一下集群环境下,rabbitmq实例宕机的情况下,消息的可靠性。验证rabbitmq版本【3.4.1】。 集群环境要求: 1.集群中至少有一台硬盘节点 2.加入集群中有一台内存节点,一台硬盘节点,需要先启动硬盘节点。单节点不能设置为内存节点 集群环境: 节点名称 节点类型 vm-129

2017-01-02 02:21:07 3132 3

原创 RabbitMQ学习之消息可靠性及特性

下面主要从队列、消息发送、消息接收方面了解消息传递过的一些可靠性处理。

2017-01-02 01:53:47 4829 7

原创 RabbitMQ学习之exchange总结

前面介绍了几类exchange的作用,这个总结一下: direct:消息会被推送至绑定键(binding key)和消息发布附带的选择键(routing key)完全匹配的队列。默认有”AMQP default”,它用一个空字符串表示,它是direct类型的exchange,任何发往这个exchange的消息都会被路由到routing key的名字对应的队列上,如果没有对应的队列,则消息会被丢弃。

2017-01-02 00:11:17 2506 8

原创 ActiveMQ消息的延时和定时投递

ActiveMQ对消息延时和定时投递做了很好的支持,其内部启动Scheduled来对该功能支持,也提供了一个封装的消息类型:org.apache.activemq.ScheduledMessage,只需要把几个描述消息定时调度方式的参数作为属性添加到消息,broker端的调度器就会按照我们想要的行为去处理消息。

2016-12-11 23:47:33 10667

原创 RabbitMQ学习之延时队列

在实际的业务中我们会遇见生产者产生的消息,不立即消费,而是延时一段时间在消费。RabbitMQ本身没有直接支持延迟队列功能,但是我们可以根据其特性Per-Queue Message TTL和 Dead Letter Exchanges实现延时队列。也可以通过改特性设置消息的优先级。

2016-12-11 20:13:04 10012 8

原创 Centos7安装RabbitMQ-3.6.6

之前通过源码编译的方式安装rabbitmq(http://blog.csdn.net/zhu_tianwei/article/details/40832185),安装麻烦,需要安装很多依赖,而且在版本升级后,按照之前安装会有写问题,下面我们通过centos的yum方式安装。1、安装erlang下载rpm仓库:wget http://packages.erlang-solutions.com

2016-12-11 16:07:55 5080

原创 java延时队列使用

在实际的业务中会遇到如下场景:1)过1分钟失败任务重试2)过1小时发送邮件等等,需要延时一段时间处理,在java的juc包中给我提供了DelayQueue延时队列处理,过一会该处理的事儿。DelayQueue,一个无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的Delayed元素。如果延迟都还没有期满,则队列没有头部,并且 poll 将返回 n

2016-12-10 00:51:51 11530 3

原创 MySQL数据库高可用性架构汇总

一、MHAMHA通过管理节点自动化主服务器故障转移,快速将从服务器晋级为主服务器(通常在10-30s),而不影响复制的一致性,适用于任何存储引擎。管理节点需要ssh链接myql服务器,高可用方面是一个相对成熟的解决方案。主要特性:1. 主服务器的自动监控和故障转移2. 交互式主服务器故障转移3. 非交互式的主故障转移4. 在线切换主从服务

2016-12-04 22:09:19 1550

原创 mysql高可用双主配置

1.环境配置master A  192.168.0.109master B  192.168.0.112都已安装完毕mysql 版本为5.7.122.复制配置ABserver-id=1server-id=2log-bin=mysql-master-bin

2016-12-04 22:04:45 2714

原创 mysql自带备份还原工具

mysql自带的mysqldump备份工具,将制定的数据库或表导出都一样的sql文件,以便备份或数据还原,但如果数据量很大,会耗费会很长时间,且锁表。对于大规模备份,考虑使用物理方法,如:mysqlbackup(适于InnoDB、MyISAM及其他表)、mysqlhotcopy(适于MyISAM表)、Xtrabackup(适于InnoDB及MyISAM表)、LVM(适于各类表)等。一、数据备份

2016-12-04 22:03:07 1747

原创 mysql在线将基于日志的复制和基于事务的复制互换

在mysql5.7之前,变更复制类型,需要重启master。基于事务的复制能够更好的保证数据的完整性。1.在线将基于日志的复制变更为基于事务的复制条件:1)集群中所有的服务器版本要高于5.7.62)集群中所有服务器的gtid_mode都设置为off处理步骤:(1) 主从上执行  set @@global.enforce_gtid_consistency=warn

2016-12-04 22:02:27 737

原创 mysql主从复制配置(基于GTID)

MySQL 5.6 的新特性之一,是加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力。GTID(Global Transaction Identifiers)是全局事务标识。当使用GTIDS时,在主上提交的每一个事务都会被识别和跟踪,并且运用到所有从MySQL,而且配置主从或者主从切换时不再需要指定 master_log_files和master_log_p

2016-12-04 22:01:38 1075

原创 mysql主从复制配置(基于日志点)

MySQL主从是基于binlog日志,所以在安装好数据库后就要开启binlog。这样好处是,一方面可以用binlog恢复数据库,另一方面可以为主从做准备。查看日志开启状态:show variables like 'log_bin';一、主从配置1.master[mysqld]server-id=1 #主从复制ID必须不一样log-bin=mysql-master-bin

2016-12-04 22:00:07 1329

原创 mysql多源复制

多源复制就是多个master复制,允许一个slave对应多个master;change master语法(参考:http://dev.mysql.com/doc/refman/5.7/en/change-master-to.html):CHANGE MASTER TO option [, option] ... [ channel_option ] option:

2016-12-04 21:56:08 2623

原创 mysql5.7新特性

一、MySQL服务功能增强1.数据库初始化方式变更mysql 5.7之前通过初始化脚本初始化:scripts/mysql_install_db --user=mysql\--datadir=/var/lib/mysql \--socket=/var/lib/mysql/mysql.sock \ --pid-file=/var/run/mysqld/mysqld.pid

2016-12-04 21:53:50 1343

原创 mysql复制基础

mysql支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。mysql复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新、删除等等)。因此,要进行复制,必须在主服务器上启用二进制日志。每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器

2016-12-04 21:49:37 397

原创 mysql实现读写分离中间件Amoeba

Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到

2016-12-04 21:42:58 2089

原创 mysql实现读写分离中间件MySQL Proxy

MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制

2016-12-04 21:41:23 2554

原创 mysql实现读写分离中间件Atlas

Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过80

2016-12-04 21:38:35 1034

转载 使用spring的动态路由实现数据库负载均衡

在spring2.0.1发布之前,各个项目中可能存在多种针对这种情况下的多数据源管理方式, 不过,spring2.0.1发布之后,引入了AbstractRoutingDataSource,可以通过集成org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource类,自定义动态数据源。配置如下: datasource-

2016-12-04 14:55:15 1928

原创 mysql实现读写分离自带java驱动

MySQL 数据库的读写分离和负载均衡一般是通过第三方软件来实现的。 也可以通过mysql驱动程序来实现,如com.mysql.jdbc.ReplicationDriver。官网网址:多主机连接配置1.主备配置2.负载连接配置3.主从复制链接配置4.高级负载和主备配置如下为java实现读写分离demo            mysql  

2016-12-04 14:48:51 2843

原创 mysql开启慢查询日志和profile

mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,以便后期跟踪优化。mysqld在语句执行完并且所有锁释放后记入慢查询日志。

2016-12-01 08:54:19 2773

原创 Centos7 yum安装mysql

1.安装最新版mysql从MySQL开发者网站下载Yum仓库文件,导入Yum库:http://dev.mysql.com/downloads/repo/yum/wget http://repo.mysql.com//mysql57-community-release-el6-8.noarch.rpm这里获取的是mysql 5.7.12安装yum 仓库列表:

2016-12-01 08:49:43 7783

转载 Mybatis Generator最完整配置详解

<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><!-- 可以用于加载配置项或者配置文件,在整个配置文件中就可以使用${pr

2016-12-01 08:41:00 424

原创 myql设置utf8mb4字符,使支持emoji 表情符号

Mysql5.5.3以上的版本才支持utf8mb4字符集。1.修改配置文件vi /etc/my.cnf增加如下配置-----------------------------------[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4

2016-11-29 22:20:22 1875

转载 MySQL数据库性能优化之存储引擎选择

MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系。由于各存储引擎功能特性差异较大,这篇文章主要是介绍如何来选择合适的存储引擎来应对不同的业务场景。

2016-11-04 23:10:24 394

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