自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (6)
  • 收藏
  • 关注

原创 缓存更新的策略

缓存更新的策略 1、先淘汰缓存,再更新数据库 public void updateData1(DataObject dataObject) { //第一步,淘汰缓存 deleteFromCache(dataObject.getId()); //第二步,操作数据库 updateFromDB(dataObject);...

2020-04-12 10:01:59 2189

原创 通过联合索引优化MYSQL慢查询

通过联合索引优化MYSQL慢查询一、慢SQL分析慢SQL如下SELECT SUM(t.amount) as amount FROM (SELECT game_id,room_id,is_robot,amount,record_time FROM t_statements_logs WHERE game_id = 30 AND is_robot = 0 ORDER BY record_time...

2020-04-09 14:49:24 1830

原创 Redis中删除过期Key的三种策略

Redis中删除过期Key的三种策略Redis对于过期键有三种清除策略:被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key主动删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key当前已用内存超过maxmemory限定时,触发主动清理策略被动删除只有key被操作时(如GET),REDIS才会被动检查该key...

2020-04-03 15:42:40 1997

原创 Redisson分布式锁的源码分析

Redisson分布式锁的源码分析Redisson 分布式锁实现思路锁标识:Hash 数据结构,key 为锁的名字,filed 当前竞争锁成功线程的唯一标识,value 重入次数队列:所有竞争锁失败的线程,会订阅当前锁的解锁事件,利用 Semaphore 实现线程的挂起和唤醒源码分析基于redisson3.11.5版本加锁流程图解锁核心源码:tryLockInnerAsync ...

2020-04-02 14:41:45 1704

原创 SpringBoot项目配置JSON日志格式输出

SpringBoot项目配置JSON日志格式输出采用logstash-logback-encoder来实现JSON日志输出引入依赖implementation 'net.logstash.logback:logstash-logback-encoder:5.0'compileOnly 'org.projectlombok:lombok'compile group: 'org.codeha...

2020-04-02 10:17:16 4416

原创 redis事务是否支持原子性

redis事务是否支持原子性ACID 中关于原子性的定义:原子性:一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。redis事务测试127.0.0.1:6379> multiOK127.0....

2020-04-01 10:22:43 3116

原创 Redis实现分布式锁进化

Redis实现分布式锁进化1、SetNXtryLock(){ SETNX $key $value}release(){ DELETE $key}如果业务执行因为某些原因意外退出了,导致创建了锁但是没有删除锁,那么这个锁将一直存在2、SetNX + SetExtryLock(){ SETNX $key $value EXPIRE $key Seconds}rele...

2020-03-31 17:26:16 1588

原创 redisson分布式锁并发测试

redisson分布式锁并发测试模拟秒杀抢购场景,100库存,用jmeter并发测试,起300个线程并发请求2次,总计600个请求数,最后查看库存是否为负数,证明分布式锁是否锁住了库存。注意:分布式锁并不是实现秒杀最佳方式,本文只是侧重说明分布式锁一、编写相关代码1、添加依赖项dependencies { compile 'org.springframework.boot:spr...

2020-03-30 17:57:25 2815 2

原创 使用bind转发consul DNS服务

使用bind转发consul DNS服务1、安装bindyum install bind bind-utils -y2、配置name服务做解析vim /etc/named.confoptions { listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; direc...

2020-03-27 11:33:40 1902

原创 consul DNS+ dnsmasq实现域名解析配置

consul DNS+ dnsmasq实现域名解析配置dnsmasq简介Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适...

2020-03-27 10:58:35 4031

原创 consul各端口作用分析

consul各端口作用分析consul服务端启动时会监听5个端口,如下图:这5个端口的作用:8300:集群内数据的读写和复制8301:单个数据中心gossip协议通讯8302:跨数据中心gossip协议通讯8500:提供获取服务列表、注册服务、注销服务等HTTP接口;提供UI服务8600:采用DNS协议提供服务发现功能...

2020-03-26 16:13:00 9841

原创 SpringBoot中自定义consul的instance-id

SpringBoot中自定义consul的instance-idapplication.ymlspring: cloud: consul: discovery: instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}...

2020-03-26 16:09:52 2059

原创 consul通过DNS协议查找服务

consul通过DNS协议查找服务1、centos默认没有dig命令,dig命令属于bind-utils工具包,安装这个包之后就可以使用dig命令了。yum -y install bind-utils2、使用DNS API来获取A记录ip地址对于DNS API,服务的DNS名称是 NAME.service.consul 。默认所有的DNS名称都是在 consul 名称空间下,当然这个是可...

2020-03-26 11:15:05 3089

原创 Dapper--Google生产环境下的分布式跟踪系统

Dapper--Google生产环境下的分布式跟踪系统概述当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。Dapper--Google生产环境下的分...

2020-03-12 15:52:24 3411

原创 Consul 删除无效的服务

REST接口删除http://127.0.0.1:8500/v1/agent/service/deregister/service2-8080命令删除consul services deregister -id=service2-8080service2-8080为服务名称

2020-03-12 15:50:27 1768

原创 elasticsearch服务器CPU100%分析

elasticsearch服务器CPU100%分析1、通过top命令查询占用CPU高的进程ID2、查询是哪些线程占用比较高top -Hp 28354H代表显示线程信息p用来指定进程id发现线程31342、28478等占用比较多的CPU资源3、将十进制pid转换为十六进制的pidprintf “0x%x” 284784、查询具体的线程信息jstack -l 2835...

2020-03-12 15:44:55 7044

原创 JAVA常见内存溢出模拟

JAVA常见内存溢出模拟1、堆溢出import java.util.ArrayList;import java.util.List;/** * 堆溢出 * -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError * java.lang.OutOfMemoryError: Java heap space * Created by double...

2020-03-11 14:31:21 1562

原创 elasticsearch6.3.1中x-pack插件启用

elasticsearch6.3.1中x-pack插件启用elasticsearch版本6.3.1一、启用pack1、重写license验证源码重写x-pack下的2个类:LicenseVerifier.java和XPackBuild.java,反编译jar丁创建目录testmkdir testcd testvim LicenseVerifier.java跳过校验部分,直接返回...

2020-03-11 14:16:00 1368

原创 死锁模拟(JAVA)

死锁模拟(JAVA)/** * Created by double on 2019/7/29. */public class DeadLockDemo { private final Object lock1 = new Object(); private final Object lock2 = new Object(); void method1() { ...

2020-03-11 14:12:16 1086

原创 单例模式的几种实现方式(JAVA)

单例模式的几种实现方式(JAVA)概括起来,要实现一个单例,我们需要关注的点无外乎下面几个:构造函数需要是 private 访问权限的,这样才能避免外部通过 new 创建实例;考虑对象创建时的线程安全问题;考虑是否支持延迟加载;考虑 getInstance() 性能是否高(是否加锁)。1、饿汉式饿汉式的实现方式比较简单。在类加载的时候,instance 静态实例就已经创建并初始化好...

2020-03-11 11:28:40 1427

原创 java实现整形数字反转

java实现整形数字反转/** * 整形数字反转 * Created by double on 2019/9/3. */public class NumberReverse { public static void main(String[] args) { int num = 123123412; long reversedNum = 0; ...

2020-03-11 10:30:04 1255

原创 kafka-manager安装

kafka-manager安装1、下载安装链接: https://pan.baidu.com/s/1hmoD0uSNH4XvwZuNc3TMtA提取码: 17rvcd /opt/serverunzip kafka-manager-2.0.0.0.zip mv kafka-manager-2.0.0.0 kafka-managercd kafka-manager2、配置cd /o...

2020-03-10 17:15:22 1022

原创 elasticsearch-head安装

elasticsearch-head安装Node.js环境安装head插件要求Node.js环境,并且Node.js的版本 大于等于 6.0。下载 Node.js 12.13.0 版本。下载地址:https://nodejs.org/en/download/配置nodejs环境变量vim /etc/profileexport NODE_HOME=/home/tom/data/node-...

2020-03-10 17:11:41 1048

原创 zipkin server部署

zipkin server部署1 、创建相关目录mkdir -p /opt/server/zipkinmkdir -p /data/logs2、安装jdk1.8https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlrpm -ivh jdk-8u231-linux...

2020-03-10 17:07:07 1430

原创 ELK采集nginx错误日志

ELK采集nginx错误日志一、filebeat采集配置1、在nginx服务器上安装filebeatwget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.1-x86_64.rpmyum localinstall filebeat-6.3.1-x86_64.rpm2、配置filebeat采集文件v...

2020-03-10 17:01:25 1494

原创 ELK + Grafana分析nginx日志

ELK + Grafana分析nginx日志一、采集nginx json格式日志1、配置nginx日志输出格式 log_format json '{"@timestamp":"$time_iso8601",' '"@source":"$server_addr",' '"hostname":"$hostname"...

2020-01-06 16:41:18 3229

原创 redis数据迁移工具redis-migrate-tool安装使用

Redis-Migrate-Tool 使用详解Redis 集群迁移工具,基于redis复制,快速,稳定。github链接:https://github.com/vipshop/redis-migrate-tool特点:快速。多线程。基于redis复制。实时迁移。迁移过程中,源集群不影响对外提供服务。异构迁移。支持Twemproxy集群,redis cluster集群,rdb文...

2020-01-06 16:36:06 1786

原创 定时清理elasticsearch中的历史数据

定时清理elasticsearch中的历史数据创建清理脚本创建脚本目录mkdir -p /opt/server/cron创建脚本vim delete_elasticsearch_data.sh#!/bin/bashmydate=$(date -d "-30 day" +"%Y-%m-%d")curl -XDELETE "http://localhost:9200/...

2020-01-06 16:35:15 4618

原创 redis 告警参数优化

redis 告警参数优化针对redis服务器TCP backlog、overcommit_memory、THP三个参数优化的说明操作系统:CentOS Linux release 7.6.1810 (Core)一、TCP backlog1、告警信息WARNING: The TCP backlog setting of 511 cannot be enforced because /pro...

2019-12-31 15:25:46 1136

原创 分布式环境下的日志处理架构(ELK)

分布式环境下的日志处理架构(ELK)一、整体架构设计filebeat: 负责日志采集,采集的日志包括服务日志、中间件日志等kafka:负责数据缓存logstash: 消费kafka的日志,经过过滤后存储到elasticsearchelasticsearch: 负责日志存储kibana: 负责日志展示二. 此架构使用的软件及版本如下:(1) filebeat-6.3.1-l...

2019-12-19 14:57:30 1207 1

原创 logstash配置

logstash配置logstash消费kafka日志,过滤后发送到elasticsearch存储日志包括:Java服务日志、redis日志、consul日志、配置中心apollo日志添加定制正则进入logstash安装目录,创建正则目录patternscd /opt/server/logstashmkdir patternsgrok配置grok的编写配置虽然不难,但是很容易出...

2019-12-19 14:08:44 868

原创 redis4.0.14集群搭建

redis集群搭建介绍完Redis集群分区规则之后,下面我们开始搭建Redis集群。搭建集 群工作需要以下三个步骤:1)准备节点。2)节点握手。3)分配槽。redis版本:4.0.14准备节点Redis集群一般由多个节点组成,节点数量至少为6个才能保证组成完整 高可用的集群。每个节点需要开启配置cluster-enabled yes,让Redis运行在集 群模式下。建议为集群内所有节...

2019-12-13 10:50:28 1711

原创 kafka集群安装

一、安装环境1、服务器准备:kafka1:172.20.67.52kafka2:172.20.67.56kafka3:172.20.67.57修改hostname依次为:kafka1、kafka2、kafka3配置hostname172.20.67.52 kafka1172.20.67.56 kafka2172.20.67.57 kafka32、zoo...

2019-12-12 18:48:57 908

原创 elasticsearch安装

1、安装JDK rpm -ivh jdk-8u231-linux-x64.rpm2、创建相关安装目录mkdir -p /opt/server/elasticsearchmkdir -p /data/elasticsearch/datamkdir -p /data/elasticsearch/logs3、下载安装包cd /opt/server/unzip elasticsearc...

2019-12-12 18:04:16 838

原创 kibana安装

1、kibana简介Kibana是一个为Elasticsearch平台分析和可视化的开源平台,使用Kibana能够搜索、展示存储在Elasticsearch中的索引数据。使用它可以很方便用图表、表格、地图展示和分析数据。Kibana能够轻松处理大量数据,通过浏览器接口能够轻松的创建和分享仪表盘,通过改变Elasticsearch查询时间,可以完成动态仪表盘。本文只介绍Kibana在linux...

2019-12-12 17:52:15 820

原创 Gradle自定义插件编写

Gradle 简介Gradle是一个基于JVM的构建工具,它提供了:像Ant一样,通用灵活的构建工具可以切换的,基于约定的构建框架强大的多工程构建支持基于Apache Ivy的强大的依赖管理支持maven, Ivy仓库支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件。对Ant的任务做了很好的集成基于Groovy,build脚本使用Groovy编写...

2019-12-11 17:53:13 2252

原创 apollo集群部署

apollo集群部署1. 准备工作1.1. 服务器准备(配置根据情况调整)准备好安装apollo的三台服务器配置4CPU,4G内存,20GB硬盘假设三台服务器IP为172.16.10.208172.16.10.209172.16.10.210修改相应hostnameapollo-1apollo-2apollo-31.2. 安装jdk1.8rpm -ivh jdk-8u...

2019-12-11 17:26:11 1637

原创 logstash安装

logstash安装从kafka接收数据,并发送到ElasticSearch采集数据有java应用程序日志、consul日志1. 安装jdk1.8rpm -ivh jdk-8u231-linux-x64.rpm[root@logstash patterns]# java -versionjava version "1.8.0_231"Java(TM) SE Runtime En...

2019-12-11 17:08:27 971

原创 安装filebeat

安装filebeatlinux安装filebeat采集consul日志,并发送到kafka1. 创建安装目录mkdir -p /opt/servermkdir -p /data/logs2. 下载安装包并解压tar -zxvf filebeat-6.3.1-linux-x86_64.tar.gz3. 重命名文件夹为filebeatmv filebeat-6.3.1-li...

2019-12-11 17:00:30 1545

原创 Consul client端安装

##Consul client端安装1. 创建相应的目录mkdir -p /data/logsmkdir -p /data/consul_data2. 下载安装包unzip consul_1.6.1_linux_amd64.zipcp consul /usr/local/bin/3. client模式启动consul,并加入集群nohup consul agent -data...

2019-12-11 16:44:35 2083

tang_poetry-mysql.sql

全唐诗数据库,mysql数据库脚本, 有两张表,一张作者,一张古诗 create database tang_poetry;

2020-05-07

汽车车型数据库SQL(excel)

目前市场上最新汽车车型大全

2016-04-19

汽车之家车型数据库mysql

汽车之家车型数据库mysql

2016-03-29

Google三大论文_中文版

Google三大论文_中文版

2014-11-06

Spring XML配置十二个最佳实践

Spring XML配置十二个最佳实践

2007-10-17

使用struts+spring+hibernate 组装web应用

使用struts+spring+hibernate 组装web应用

2007-10-17

空空如也

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

TA关注的人

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