自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

java那些事儿

记录java中遇到的事儿...

  • 博客(110)
  • 资源 (6)
  • 问答 (3)
  • 收藏
  • 关注

原创 NacosException: Request nacos server failed

NacosException: Request nacos server failed:

2022-12-14 10:25:54 5420 2

原创 Vagrant搭建Centos

本地机器通过Vagrant+virtual box来搭建Centos虚拟机及相关集群

2022-12-07 17:46:36 978

原创 Redis解决缓存雪崩和缓存穿透

缓存穿透,一般是访问的数据在缓存和数据库中都不存在。

2022-09-20 16:09:53 1858

原创 Redis缓存Key过期原理和内存淘汰策略

Redis通过(Redis字典通过哈希表来实现)来存储键的过期时间,字典的键是指向RedisDb的指针(使用指针可以避免浪费),字典的值是一个毫秒的时间戳,所以当前时间大于字典值的时候这个键就过期了,就可以对这个键进行删除(删除一个键不仅要删除redisDb数据库中的键,也要删除过期字典中的键)。通过pexpireat命令来设置过期时间的命令,其他命令最终也会转换成pexpireat。给一个键设置过期时间,就是将这个键的指针及给定的到期时间戳加到过期字典中。

2022-09-15 22:14:14 561

原创 Redis解决数据一致性方案

先更新数据库,再删除缓存;先删除缓存,再更新数据库;目标就是通过重试机制来解决后删除缓存失败的情况,直到删除成功。无论是重试还是异步删除,都是最终一致性的思想。我们在使用Redis缓存时,优先选择先更新数据库,再删除缓存并且同步设置key的过期时间。在一些对数据一致性要求比较强的业务中,适当的借助MQ或者Canel来做重试。

2022-09-15 13:55:14 2615

原创 Redis存储结构之zskiplist

zskiplist是一个有序的集合,为了解决其他链表的插入、删除效率低、查询元素需要循环遍历等缺点,redis就采用了一个特殊的数据结构zskiplist(跳跃表)。它在性能上跟红黑树差不多, 同时又比红黑树的实现简单。在插入、删除、查询等操作上的时间复杂度为o(logn)。

2022-09-13 14:40:41 319

原创 Redis数据类型-zSet基本使用

- 有序且不可重复的集合- 每个元素都会关联一个 double 类型的分数。正是通过分数来为集合中的成员进行从小到大的排序 - 类似Java中的数据结构Map,其中Double类型就是给每个value元素赋予一个score(权重)- 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)- 一个集合可以存储 2 ^ 32 - 1 个元素(4,294,967,295);

2022-09-09 10:24:56 1364

原创 Redis数据类型-List-基本使用

list存储有序且可重复的集合;一个集合可以存储 2 ^ 32 - 1 个元素(4,294,967,295);由于List是一个连表结构,从头部或者尾部新增、删除贼快所以时间复杂度为,中间相对慢一点因为要先找到中间某个元素。查询需要从头开始查所以相对较慢(快速列表,详细介绍:https://blog.csdn.net/u011077966/article/details/126769333)

2022-09-08 17:56:25 423

原创 Redis存储结构之QuickList

快速列表(quicklist)是以压缩列表(ziplist)为节点的链表(linkedlist),将链表按段切分,每一段使用压缩列表进行内存的连续存储,多个压缩列表通过prev和next指针组成的双向链表。它结合了压缩列表和链表的优势,进一步压缩了内存的使用量,进一步提高了效率。

2022-09-08 17:52:38 296

原创 Redis数据类型-String-基本使用和原理

Redis是由C语言编写,在C语言中没有String的类型,所以用自定义的数据类型SDS(simple dynamic string),并将SDS作为Redis的字符串表示。SDS在旧版本中使用方式跟新版本不同,如果你看到如下描述都是旧版本:根据不同的长度的字符串定义了不同的结构,分别为:sdshdr5、sdshdr8、sdshdr16、sdshdr32、sdshdr64说明:redis在做初始化时,如果长度小于3的使用sdshdr5,小于2^8的长度使用sdshdr8,以此类推原理:数据在进行扩容的时候

2022-09-07 13:45:25 197

原创 Redis存储结构之dictht字典

属性是个数组, 数组的每个元素都是个指向dictEntry结构的指针。每个dictEntry都保存着一个键值对, 以及一个指向另一个dictEntry属性指向另一个dictEntry结构, 多个dictEntry可以通过next指针串连成链表, 从这里可以看出,dictht使用链式寻址法来解决hash冲突: 当多个不同的键拥有相同的哈希值时,哈希表用一个链表将这些键连接起来。

2022-09-06 13:45:19 469

原创 Redis存储结构之ziplist

ziplist是为了尽可能的节省存储空间,将数据进行紧凑的存储修改操作耗费性能:ziplist在内存中是高度紧凑的连续存储,这意味着它对修改并不友好,如果要对ziplist做修改类的操作,那就需重新分配新的内存来存储新的ziplist,代价很大添加和删除 ziplist 节点有可能会引起连锁更新,因此,添加和删除操作的最坏复杂度为 O(N^2),不过,因为连锁更新的出现概率并不高,所以一般可以将添加和删除操作的复杂度视为 O(N)。

2022-09-06 13:42:49 712

原创 Redis数据类型-Hash-基本使用

为哈希表 中的域 的值加上增量 。增量也可以为负数,相当于对给定域进行减法操作。如果 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域 不存在,那么在执行命令前,域的值被初始化为 。对一个储存字符串值的域 执行 HINCRBY 命令将造成一个错误。本操作的值被限制在 64 位(bit)有符号数字表示之内。如果哈希表中没有域 ,那么 HINCRBYFLOAT 会先将域 的值设为 ,然后再执行加法操作。如果键 不存在,那么HINCRBYFLOAT 会先创建一个哈希表,再创建

2022-09-06 13:37:37 1669

原创 Redis数据类型-Hash-基本使用

为哈希表 中的域 的值加上增量 。增量也可以为负数,相当于对给定域进行减法操作。如果 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域 不存在,那么在执行命令前,域的值被初始化为 。对一个储存字符串值的域 执行 HINCRBY 命令将造成一个错误。本操作的值被限制在 64 位(bit)有符号数字表示之内。如果哈希表中没有域 ,那么 HINCRBYFLOAT 会先将域 的值设为 ,然后再执行加法操作。如果键 不存在,那么HINCRBYFLOAT 会先创建一个哈希表,再创建

2022-09-05 15:24:33 633

原创 Redis数据类型-Set-基本使用

没有获取到交集元素时,注意:若指定集合destKey存在,它的值将会被覆盖。key与otherKeys没有获取到差值,destKey如果存在,会被删除。key与otherKey没有获取到差值,destKey如果存在,会被删除。destKey存在,它原本集合中的所有值会被清空并且替换为获取的差值。destKey存在,它原本集合中的所有值会被清空并且替换为获取的差值。例如:总计10个数,指定11个,最多返回10个。1、个数不受集合中已有数量限制。destKey不存在,直接新增。destKey不存在,直接新增。

2022-09-05 13:33:24 692

原创 Redis数据类型-Set-原理

intset的核心是一个字节数组,按照从小到大存放着set元素encoding:每个元素的编码方式,编码方式指定了一个整数元素占用多少个contents数组位int16_t 2个字节,16位的整数,范围相当于java 的 short 类型int32_t 4个字节,32位的整数,范围相当于java 的 int 类型int64_t 8个字节,64位的整数,范围相当于java 的 Long 类型length:元素数量contents:存储具体的元素,元素按照从小到大排序

2022-09-05 11:47:02 769

原创 消息中心设计

我们在日常开发中怎么做消息中心设计,消息中心需要承载哪些职责,它的边界怎么定义?如何结合公司现状选择最优方案来做消息中心设计

2022-06-13 21:27:47 2656

原创 idea Server URL 配置修改

在创建spring boot或者spring cloud项目时,idea默认使用https://start.spring.io作为脚手架,创建完成后手动去添加相关的jar包组合。通过https://start.aliyun.com 可以直接勾选ali相关的jar包,快速的引入集成。修改如下位置:如下图:使用https://start.spring.io时如下图:使用 时如下图:...

2021-09-14 09:47:58 10411

原创 sleuth+zipkin实现链路追踪监控

sleuth:日志打印标记traceId:一条链路中可以包含多个spanId:一次请求true/false:是否需要把输入的数据展示到其他按平台上zipkin日志上报、收集展示实现步骤:1、在网关和所有的服务中添加如下jar包<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth<

2021-03-24 11:20:46 213

原创 Alibaba-Sentinel

限流的作用 保护系统避免被瞬时流量冲垮; 预防恶意请求; 根据阈值控制流量 限流指标(可以容纳的流量、已容纳的流量、可以接受的流量); 限流过程(通过算法来实现); 限流结果(处理策略); 限流算法 计数器算法; 指定周期内累加访问次数,当访问次数达到设定的阈值时,触发限流策略,当进入下一个周期时进行访问次数的清零; 滑动窗口算法; 为了解决计数器算法带来的临界值问题,所以引入了滑动窗口算法;

2020-12-23 17:52:45 287 1

原创 Alibaba-Nacos

简介解决微服务中的统一配置、服务注册于发现等问题。帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。关键特性 服务发现和健康检测 支持基于DNS和基于RPC的服务发现。 提供者:使用原生SDK、OpenAPI或一个独立的 Agent TODO 注册Service; 消费者:使用DNS或HTTP&API查找和发现服务; Nacos提供对服务实时的健康检查,阻止向不健康的主机或服务实例发送请求。

2020-12-23 17:37:44 224

原创 Alibaba-Dubbo

简介 Apache Dubbo 是一个分布式服务框架,主要实现了多个系统之间的高性能、透明化调用,简单讲就是RPC框架; 支持多种协议的服务发布:dubbo://、rest://、webservice://、thrift://; 支持多种不同的注册中心:Nacos、Zookeeper、Redis、Consul、Eureka、Etcd等; 另外还提供了服务治理功能,比如服务注册、监控、路由、容错; 集群容错 Failover Cluster:默认模式,失败自动切换

2020-12-23 16:54:17 943

原创 nacos 开启密码验证

最近在使用nacos作为项目的配置注册中心截止当前最新版本为1.2.0,按照官方文档配置启动默认是不需要登录的这样会导致你的配置中心对外直接暴露。所以我们会配置用户名密码并且更改密码的方式来使用nacos如果开启了密码认证,服务端没有添加密码的话,项目启动报错如下:ERROR 1092 --- [127.0.0.1_8848-xdj] c.a.n.client.config.impl.C...

2020-03-26 10:11:47 23463 7

原创 linux 安装JDK

1、筛选需要安装的jdk: yum search java | grep -i --color JDK2、安装jdk:yum install java-1.8.0-openjdk-devel.x86_643、配置环境变量 vi /etc/profile cd /usr/lib/jvm/ 查看安装后的名称 添加如下配置 JAVA_HOME=/usr/lib...

2020-02-09 11:02:28 521

原创 Linux 安装 Jenkins

Linux 安装 Jenkins准备工作: 安装Maven:https://blog.csdn.net/u011077966/article/details/104232222 安装Git:https://blog.csdn.net/u011077966/article/details/104232194 安装jdk:https://blog.csdn.net/u01...

2020-02-09 10:56:18 186

原创 Linux 安装Maven

Linux 安装Maven 进入到下载目录:cd /usr/local 下载:wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz 解压 ,maven不需要安装直接解压就行:tar -zxvf apache-maven-3.6.3-bi...

2020-02-09 10:52:40 360

原创 Linux 安装Git

备注:用yum安装的版本在1.8左右,版本过低,如果有Jenkins使用,过低的版本无法正常拉取代码,所以这里使用wget 方式下载高版本安装。 卸载:yum remove git 再次检查git是否还存在,有时候系统会出现多个版本的git,直接卸载可能卸载不干净 git --version 查看版本号 whereis git 查看git安装目录,如果有安装过低版本的git...

2020-02-09 10:49:12 270

原创 spring-boot 2.x 集成mybatis 解决 org.apache.ibatis.binding.BindingException

spring-boot 2.x 集成mybatis 解决 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 问题1.配置文件properties,配置映射 model和xml#model路径mybatis.type-aliases-package=com.jx.ekoocha...

2019-09-26 09:21:57 1120

原创 spring-boot 引用子项目的service或则dao时,运行报错:NoSuchBeanDefinitionException

spring-boot 引用子项目的service或则dao时,运行报错:NoSuchBeanDefinitionException,如下:Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.jx.ekoochak.common....

2019-09-26 09:18:25 978

原创 MySql-性能优化

建索引的几大原则 最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。 =和in可以乱序...

2019-07-24 15:56:31 161

原创 MySql-主从配置

master创建一个用户’repl’,并且允许其他服务器可以通过该用户远程访问master,通过该用户去读取二进制数据,实现数据同步。 更改配置 set global validate_password_length=1; set global validate_password_policy=0; 创建用户 create user repl identified ...

2019-07-23 15:56:09 385

原创 MySql-分表分库

为什么要分库分表 超大容量问题; 性能问题; 如何去做到 垂直切分、 水平切分 垂直分库:解决的是表过多的问题 垂直分表:解决单表列过多的问题 水平切分; 大数据表拆成小表 拆分策略水平拆分 一致性hash 范围切分 可以按照ID 日期拆分 拆分后的问题跨库join的问题 设计的时候...

2019-07-23 15:53:19 203

原创 MySql-安装部署

centos安装mysql5.7操作步骤 下载mysql的repo源 wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm 安装源 rpm -ivh mysql57-community-release-el7-8.noarch.rpm 安装数据库 yum install my...

2019-07-23 15:51:35 182

原创 linux-jdk安装

1、筛选需要安装的jdk: yum search java | grep -i --color JDK2、安装jdk:yum install java-1.8.0-openjdk-devel.x86_643、配置环境变量 vi /etc/profile export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.212.b04...

2019-07-23 12:07:42 134

原创 Nginx-location配置说明

Nginx核心配置nginx核心配置文件分类 main:全局设置; upstream:负载均衡服务器设置; server:主机设置; location:URL匹配特定位置的设置; 表达式类型 ~ 表示执行一个正则匹配,区分大小写; ~* 表示执行一个正则匹配,不区分大小写; ^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功...

2019-07-23 10:24:30 213

原创 Nginx-安装部署

Nginx正向代理与反向代理 正向代理:正向代理的对象是客户端; 反向代理:反向代理的对象是服务端; 常用的Web服务器介绍apache、Nginx、tomcat、weblogic、iis、jboss、websphere、jetty、netty、lighttpd、glassfish、resin 等。安装 解压 tar zxvf ngnginx-1.17.0.t...

2019-07-23 10:23:09 144

原创 Redis-集群

复制(master、slave)配置过程修改11.140和11.141的redis.conf文件,增加slaveof masterip masterportslaveof 192.168.11.138 6379实现原理 slave第一次或者重连到master上以后,会向master发送一个SYNC的命令 master收到SYNC的时候,会做两件事 a) 执行bgs...

2019-07-23 10:20:43 140

原创 Redis-持久化机制

RDBRDB的持久化策略: 按照规则定时间内从的数据同步到磁盘 snapshotredis在指定的情况下会触发快照 自己配置的快照规则 save <seconds> <changes> save 900 1 当在900秒内被更改的key的数量大于1的时候,就执行快照 save 300 10 save 60 10000 save或者bg...

2019-07-23 10:19:26 155

原创 Redis-安装部署

redis安装安装 下载安装包 redis-xxx.tar.gz tar -zxvf redis-xxx.tar.gz cd redis-xxx/ 进入解压后的redis目录下执行make 可以通过make test 测试编译状态 mkdir redis make install [prefix=/path]完成安装 make insta...

2019-07-23 10:18:17 139

原创 Redis-简介

存储结构 字符类型 散列类型 列表类型 集合类型 有序类型 功能 可以为每个key设置超时时间; 可以通过列表类型来实现分布式队列的操作; 支持发布订阅的消息模式; redis的应用场景 数据缓存(商品数据、新闻、热点数据); 单点登录; 秒杀、抢购; 网站访问排名... ...

2019-07-23 10:17:21 121

metronic.bootstrap 模板

Metronic – 模板,基于 Bootstrap 的响应式后台+前台 管理模板 Metronic 是一套精美的响应式后台管理模板,基于强大的 Twitter Bootstrap 框架实现。Metronic 拥有简洁优雅的 Metro UI 风格界面,6 种颜色可选,76 个模板页面,包括图表、表格、地图、消息中心、监控面板等后台管理项目所需的各种

2015-12-22

shiro文档案例

想学shrio的相关技术都在这里,从入门到精通,里面有详细的文档介绍和相应的demo源码!

2015-11-18

五种切换效果的jQuery幻灯片

五种切换效果的jQuery幻灯片,非常炫酷的图片切换轮播效果,总有一款适合你要找的。

2015-05-13

瀑布流技术

支持所有主流的浏览器,一款以及研究并且开发的瀑布流技术,里面有详细的注释文档,可拓展性非常强!

2015-05-13

win7取出桌面图标箭头

用于去除win7操作系统桌面图标的箭头!

2015-05-13

js日期控件

不错的时间控件,支持各种浏览器,是用js文件处理的,特别小,适合java,.net,php等各种界面

2013-12-18

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

TA关注的人

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