自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL的MVCC是否解决幻读

MVCC虽然解决了幻读问题,但严格来说只是解决了部分幻读问题

2023-07-18 20:51:54 789

原创 Mac M1 jdk11 DNS错误

Mac M1芯片电脑, 项目升级到jdk11启动报错

2022-12-01 11:13:43 3370 1

原创 工具类 Apache Commons 与 hutool

工具类 Apache Commons 与 hutool

2022-11-30 14:35:05 1098

原创 springcloud本地服务不注册到注册中心

开发人员本地的服务如果注册到服务器的注册中心,服务器上的服务如果调用到开发本地的服务会调用不通,影响大家的开发效率。以往为了不把本地服务注册到注册中心,会采用以下几种处理方式:1、修改服务名,例如:将user-service修改为user-service-double,这样别的服务就不会调用到开发人员本地注册上去的服务了2、修改是否注册到注册中心的配置参数为false:-Dspring.cloud.service-registry.auto-registration.enabled=false第

2022-01-26 18:21:38 3524

原创 SOLID设计原则

SOLID设计原则SRPThe Single Responsibility Principle单一责任原则OCPThe Open Closed Principle开放封闭原则LSPThe Liskov Substitution Principle里氏替换原则DIPThe Dependency Inversion Principle依赖倒置原则ISPThe Interface Segregation Principle接口分离原则一、单一职责原则

2021-07-02 19:50:44 951

原创 ThreadLocal详解

ThreadLocal详解下面引用ThreadLocal的API注释:This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, independently initialized copy of th.

2021-06-21 11:18:12 1042

原创 InheritableThreadLocal详解

InheritableThreadLocal详解打开InheritableThreadLocal类的源码,InheritableThreadLocal继承自ThreadLocal,重写了三个方法:childValue,getMap,createMappublic class InheritableThreadLocal<T> extends ThreadLocal<T> { /** * Computes the child's initial val...

2021-06-21 11:16:03 958

原创 consul-template + nginx实现动态负载均衡、故障转移

consul-template + nginx实现动态负载均衡、故障转移前置条件确保nginx服务器已安装consul客户端参考《Consul client端安装》一、Consul-Template安装wget https://releases.hashicorp.com/consul-template/0.24.1/consul-template_0.24.1_linux_amd64.tgztar -xvf consul-template_0.24.1_linux_amd64.tgzmv

2021-06-17 09:55:31 923

转载 TransmittableThreadLocal(TTL)

???? 功能???? 在使用线程池等会池化复用线程的执行组件情况下,提供ThreadLocal值的传递功能,解决异步执行时上下文传递的问题。一个Java标准库本应为框架/中间件设施开发提供的标配能力,本库功能聚焦 & 0依赖,支持Java 17/16/15/14/13/12/11/10/9/8/7/6。JDK的InheritableThreadLocal类可以完成父线程到子线程的值传递。但对于使用线程池等会池化复用线程的执行组件的情况,线程由线程池创建好,并且线程是池化起来反复使用的;这时父

2021-06-16 20:46:52 1079

原创 内存分析工具MAT的使用

内存分析工具MAT的使用MAT下载地址http://www.eclipse.org/mat/downloads.php我使用的是mac,这里选择Mac OSX版本下载启动MAT导入dump文件导入一个1.58G的dump文件报错"Java heap space"解决方式:编辑文件MemoryAnalyzer.ini修改最大堆内存为4G,-Xmx4g重新启动MAT,导入dump文件打开Leak Suspects视图,分析内存使用情况可以看到(a) Problem Susp

2021-06-09 20:22:49 883 1

原创 定时计算zipkin-dependencies数据

定时计算zipkin-dependencies数据创建聚合脚本创建相关目录mkdir -p /opt/server/zipkinmkdir -p /data/logs/zipkin/logsvim calc-zipkin-dependencies.sh#!/bin/bashSTORAGE_TYPE=elasticsearch ES_HOSTS=http://127.0.0.1:9200 nohup java -jar /opt/server/zipkin/zipkin-dependenc

2021-06-08 17:33:03 640

原创 Rancher下部署zipkin服务

Rancher下部署zipkin服务在rancher中新建一个服务部署指定服务名称为:zipkin配置Docker镜像为:openzipkin/zipkin:2.21.5将容器内的9411端口映射到主机的9411端口配置环境变量1、配置ES地址ES_HOSTS: http://192.168.1.228:92002、指定存储类型STORAGE_TYPE: elasticsearch3、配置kafka地址KAFKA_BOOTSTRAP_SERVERS: 192.168.

2021-06-08 14:58:06 742

原创 zipkin架构介绍

zipkin架构介绍Zipkin简介Zipkin是 Twitter 的一个开源项目,基于 Google Dapper实现。可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向开发的API接口之外,它也提供了方便的 UI 组件帮助我们直观的搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等。上图展示了Zipkin的基础

2021-06-08 14:44:50 843

原创 优雅关闭consul

优雅关闭consulconsul关闭原理分析consul agent 在正常关闭的时候会向集群发送 leave 信令,宣告自己离开集群,那么什么才叫正常关闭呢?首先 agent 监听了三个系统信令,os.Interrupt, syscall.SIGTERM, syscall.SIGHUPos.Interrupt, syscall.SIGTERM两个信令分开处理,os.Interrupt这个信令对应的其实就是 ctrl+c, 这一般是我们在开发时才会用到,那么和这个信令配合的配置是*config

2021-05-13 13:01:08 2510

原创 docker容器优雅停机

docker容器优雅停机我们部署在docker中的springboot程序在docker停止的时候并没有执行shutdownHook的操作,正常在本地idea停止springboot服务会看到一系列的shutdownHook操作日志日志如下:2021-05-13 11:12:29.253 INFO 218 [,] [SpringContextShutdownHook] o.s.s.c.ThreadPoolTaskScheduler Shutting down ExecutorService 'cat

2021-05-13 12:54:16 2211 1

原创 Rancher下部署Consul集群

Rancher下部署Consul集群配置服务名称,docker镜像,端口映射配置数据卷映射配置启动参数启动命令设置如下:agent -server -bootstrap-expect=3 -client=0.0.0.0 -datacenter=shenzhen-dev -ui可以看到node1节点已经正常运行,集群地址为10.42.0.89,记住这个IP,后面的 consul-server-2、consul-server-3节点和client节点都需要这个IP才能加入集群。同时我们看到

2021-04-28 10:45:10 1331

原创 elasticsearch深度分页问题

elasticsearch深度分页问题一、深度分页方式from + sizees 默认采用的分页方式是 from+ size 的形式,在深度分页的情况下,这种使用方式效率是非常低的,比如我们执行如下查询curl -XGET '127.0.0.1:9200/shop/shop/_search?pretty' -H 'Content-Type: application/json' -d'{ "query":{ "match_all": {} }, "from":5000, "si

2021-04-19 15:42:28 1005

原创 elasticsearch中文分词插件IK安装

elasticsearch中文分词插件IK安装elasticsearch几种常用分词器如下:分词器分词方式StandardAnalyzer单字分词CJKAnalyzer二分法IKAnalyzer词库分词其中常用的是IKAnalyzer,但IK是第三方插件,需要安装。安装分词器下载IK软件包下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.3.1在tags栏选

2020-11-22 10:55:12 1139 1

原创 Google 重叠实验框架:更多,更好,更快地实验(Google A/B实验论文)

Google 重叠实验框架:更多,更好,更快地实验IntroductionGoogle是一个数据驱动型公司,这意味着所有对用户的改动的发布,都要决策者以相应的经验数据作为依据。这些数据大部分是由在线流量上的实验产生的。在web的语境下,一个实验是由一股流量(比如,用户的请求)和在这股流量上进行的相对对比实验的修改组成的。修改包括用户可见的修改(比如,修改顶部广告的背景色),以及不可见的修改,比如测试一个新的广告点击率(CTR)预测算法,都可以通过实验的方式进行的。要支持数据驱动方法论的挑战在于要跟上创

2020-11-22 10:51:12 2700 1

原创 在MAC上使用Charles抓包HTTPS接口

在MAC上使用Charles抓包HTTPS接口安装证书点击 Help – SSL Proxying – Install Charles Root Certificate可以看到“此根证书不被信任”的提示,系统默认对Charles证书是不信任的双击Charles Proxy CA证书,选择始终信任,点关闭,弹出账户密码验证,填一下就改好了回到证书列表可以看到Charles证书已经受信任了配置抓取HTTPS端口Proxy -> SSL Proxying Settings安装SSL

2020-09-05 11:02:59 2432

原创 redis定时手动执行bgsave、备份rdb

redis定时手动执行bgsave、备份rdb 每小时备份rdbvim /opt/server/redis/redis_rdb_bak_hourly.sh#!/bin/sh history_hour=`date +%Y%m%d%H`rm -rf /data/redis-data-backup/$history_hourmkdir -p /data/redis-data-backup/$history_hourcp /opt/server/redis/data/dump-6380.r

2020-08-13 20:27:45 1930

原创 MySQL like查询后置%索引失效分析

MySQL like查询后置%索引失效分析表结构CREATE TABLE `t_food_shop` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `shop_name` varchar(50) NOT NULL DEFAULT '' COMMENT '店铺名称', `shop_img` varchar(250) NOT NULL DEFAULT '' COMMENT '店铺图片', `category_

2020-07-28 15:18:33 1703

原创 redis添加布隆过滤器插件

redis添加布隆过滤器插件概念布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。redis在4.0版本以后可通过插件的形式添加布隆过滤器 编译安装到redis安装目录创建module目录cd /opt/server/redismkdir module && cd mo

2020-07-06 20:11:41 2410 1

原创 通过gitlab Api自动下载gitLab上的所有项目

通过gitlab Api自动下载gitLab上的所有项目背景现在越来越多的公司采用gitlab来管理代码。但是公司越来越大,项目越来越多,一个个clone比较麻烦,于是写个java程序批量clone思路gitlab有提供api来获取git数据,利用这些信息clone项目参考文档:https://docs.gitlab.com/ee/api/projects.html#list-all-p...

2020-04-29 17:13:22 9632 1

原创 缓存穿透、缓存雪崩、缓存击穿场景模拟、解决方案

cache-best-practice 完整项目代码参考: cache-best-practice一、缓存穿透、缓存雪崩、缓存击穿场景模拟 1、缓存穿透缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常处于容错的考虑,如果从缓存层查询不到数据则不写入缓存层缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储层的意义缓存穿...

2020-04-16 10:31:42 2717 1

原创 接口幂等性校验

接口幂等性校验 一、概念幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和set...

2020-04-15 17:48:21 17843

原创 如何在github上创建一个项目

如何在github上创建一个项目 在repositories页面,点击new进入仓库创建页面,填写相关信息Repository name:仓库名Description:仓库描述类型:public 公共仓库 所有人都可访问 ,private 私人仓库,不是所有人都能访问是否初始化:如果选了是,则会自动初始化一个项目,里面有个readme.md文件,用于描述的描述说明。...

2020-04-14 14:52:59 7493

原创 缓存更新的策略

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

2020-04-12 10:01:59 2138

原创 通过联合索引优化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 1796

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

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

2020-04-03 15:42:40 1940

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

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

2020-04-02 14:41:45 1645

原创 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 4300

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

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

2020-04-01 10:22:43 3020

原创 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 1535

原创 redisson分布式锁并发测试

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

2020-03-30 17:57:25 2728 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 1828

原创 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 3816

原创 consul各端口作用分析

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

2020-03-26 16:13:00 9000

原创 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 1993

原创 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 2968

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关注的人

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