- 博客(118)
- 资源 (6)
- 问答 (3)
- 收藏
- 关注
原创 一分钟掌握 Java15 新特性
Java 15 引入的新特性包括文本块的正式化、密封类、隐藏类、新垃圾收集器的增强和 `instanceof` 的进一步完善。这些新特性提升了语言的灵活性和性能,同时也增强了代码的可维护性和安全性。Java 15 继续推动 Java 语言向现代化发展,满足开发者在高效编程方面的需求。
2024-09-24 21:50:48 111
原创 一分钟掌握 Java14 新特性
Java 14 引入的新特性使得编程更加灵活和高效,特别是在数据类、空指针异常处理和字符串处理方面的改进,极大地提升了开发者的编程体验。这些新特性不仅提高了代码的可读性和可维护性,也为高性能应用程序提供了更好的支持。
2024-09-24 21:42:39 564
原创 一分钟掌握 Java13 新特性
Java 13 的新特性使得编程更加灵活和高效,特别是在字符串处理、switch 表达式和内存管理方面的改进,极大地提升了开发者的编程体验。这些新特性不仅提高了代码的可读性和可维护性,也为高性能应用程序提供了更好的支持。
2024-09-24 21:32:10 171
原创 一分钟掌握 java12 新特性
Java 12 的新特性使得编程更加灵活和高效,特别是在字符串处理、内存管理和异常处理方面的改进,极大地提升了开发者的编程体验。这些新特性不仅提高了代码的可读性和可维护性,也为高性能应用程序提供了更好的支持。
2024-09-24 21:13:13 581
原创 一分钟掌握 Java11 新特性
Java 11 的新特性使得语言更加现代化,增强了代码的可读性和可维护性,同时改善了性能和开发体验。无论是在日常编程中,还是在处理复杂的应用程序时,这些新特性都能够为开发者提供更大的便利。
2024-09-24 21:00:19 423
原创 一分钟掌握 Java10 新特性
Java 10 引入了多项令人兴奋的新特性,包括局部变量类型推断 (var),简化变量声明;改进的 G1 垃圾回收,减少暂停时间;多重释放 JAR 支持,提升兼容性;实验性的 HTTP 客户端 API,简化网络请求处理;以及增强的文件系统支持,提升文件操作效率。这些特性显著提升了开发效率和应用性能。
2024-09-23 21:08:01 198
原创 NacosException: Request nacos server failed
NacosException: Request nacos server failed:
2022-12-14 10:25:54 5583 2
原创 Redis缓存Key过期原理和内存淘汰策略
Redis通过(Redis字典通过哈希表来实现)来存储键的过期时间,字典的键是指向RedisDb的指针(使用指针可以避免浪费),字典的值是一个毫秒的时间戳,所以当前时间大于字典值的时候这个键就过期了,就可以对这个键进行删除(删除一个键不仅要删除redisDb数据库中的键,也要删除过期字典中的键)。通过pexpireat命令来设置过期时间的命令,其他命令最终也会转换成pexpireat。给一个键设置过期时间,就是将这个键的指针及给定的到期时间戳加到过期字典中。
2022-09-15 22:14:14 660
原创 Redis解决数据一致性方案
先更新数据库,再删除缓存;先删除缓存,再更新数据库;目标就是通过重试机制来解决后删除缓存失败的情况,直到删除成功。无论是重试还是异步删除,都是最终一致性的思想。我们在使用Redis缓存时,优先选择先更新数据库,再删除缓存并且同步设置key的过期时间。在一些对数据一致性要求比较强的业务中,适当的借助MQ或者Canel来做重试。
2022-09-15 13:55:14 2776
原创 Redis存储结构之zskiplist
zskiplist是一个有序的集合,为了解决其他链表的插入、删除效率低、查询元素需要循环遍历等缺点,redis就采用了一个特殊的数据结构zskiplist(跳跃表)。它在性能上跟红黑树差不多, 同时又比红黑树的实现简单。在插入、删除、查询等操作上的时间复杂度为o(logn)。
2022-09-13 14:40:41 332
原创 Redis数据类型-zSet基本使用
- 有序且不可重复的集合- 每个元素都会关联一个 double 类型的分数。正是通过分数来为集合中的成员进行从小到大的排序 - 类似Java中的数据结构Map,其中Double类型就是给每个value元素赋予一个score(权重)- 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)- 一个集合可以存储 2 ^ 32 - 1 个元素(4,294,967,295);
2022-09-09 10:24:56 1399
原创 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 440
原创 Redis存储结构之QuickList
快速列表(quicklist)是以压缩列表(ziplist)为节点的链表(linkedlist),将链表按段切分,每一段使用压缩列表进行内存的连续存储,多个压缩列表通过prev和next指针组成的双向链表。它结合了压缩列表和链表的优势,进一步压缩了内存的使用量,进一步提高了效率。
2022-09-08 17:52:38 325
原创 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 224
原创 Redis存储结构之dictht字典
属性是个数组, 数组的每个元素都是个指向dictEntry结构的指针。每个dictEntry都保存着一个键值对, 以及一个指向另一个dictEntry属性指向另一个dictEntry结构, 多个dictEntry可以通过next指针串连成链表, 从这里可以看出,dictht使用链式寻址法来解决hash冲突: 当多个不同的键拥有相同的哈希值时,哈希表用一个链表将这些键连接起来。
2022-09-06 13:45:19 514
原创 Redis存储结构之ziplist
ziplist是为了尽可能的节省存储空间,将数据进行紧凑的存储修改操作耗费性能:ziplist在内存中是高度紧凑的连续存储,这意味着它对修改并不友好,如果要对ziplist做修改类的操作,那就需重新分配新的内存来存储新的ziplist,代价很大添加和删除 ziplist 节点有可能会引起连锁更新,因此,添加和删除操作的最坏复杂度为 O(N^2),不过,因为连锁更新的出现概率并不高,所以一般可以将添加和删除操作的复杂度视为 O(N)。
2022-09-06 13:42:49 754
原创 Redis数据类型-Hash-基本使用
为哈希表 中的域 的值加上增量 。增量也可以为负数,相当于对给定域进行减法操作。如果 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域 不存在,那么在执行命令前,域的值被初始化为 。对一个储存字符串值的域 执行 HINCRBY 命令将造成一个错误。本操作的值被限制在 64 位(bit)有符号数字表示之内。如果哈希表中没有域 ,那么 HINCRBYFLOAT 会先将域 的值设为 ,然后再执行加法操作。如果键 不存在,那么HINCRBYFLOAT 会先创建一个哈希表,再创建
2022-09-06 13:37:37 1863
原创 Redis数据类型-Hash-基本使用
为哈希表 中的域 的值加上增量 。增量也可以为负数,相当于对给定域进行减法操作。如果 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域 不存在,那么在执行命令前,域的值被初始化为 。对一个储存字符串值的域 执行 HINCRBY 命令将造成一个错误。本操作的值被限制在 64 位(bit)有符号数字表示之内。如果哈希表中没有域 ,那么 HINCRBYFLOAT 会先将域 的值设为 ,然后再执行加法操作。如果键 不存在,那么HINCRBYFLOAT 会先创建一个哈希表,再创建
2022-09-05 15:24:33 762
原创 Redis数据类型-Set-基本使用
没有获取到交集元素时,注意:若指定集合destKey存在,它的值将会被覆盖。key与otherKeys没有获取到差值,destKey如果存在,会被删除。key与otherKey没有获取到差值,destKey如果存在,会被删除。destKey存在,它原本集合中的所有值会被清空并且替换为获取的差值。destKey存在,它原本集合中的所有值会被清空并且替换为获取的差值。例如:总计10个数,指定11个,最多返回10个。1、个数不受集合中已有数量限制。destKey不存在,直接新增。destKey不存在,直接新增。
2022-09-05 13:33:24 750
原创 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 837
原创 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 12129
原创 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 234
原创 Alibaba-Sentinel
限流的作用 保护系统避免被瞬时流量冲垮; 预防恶意请求; 根据阈值控制流量 限流指标(可以容纳的流量、已容纳的流量、可以接受的流量); 限流过程(通过算法来实现); 限流结果(处理策略); 限流算法 计数器算法; 指定周期内累加访问次数,当访问次数达到设定的阈值时,触发限流策略,当进入下一个周期时进行访问次数的清零; 滑动窗口算法; 为了解决计数器算法带来的临界值问题,所以引入了滑动窗口算法;
2020-12-23 17:52:45 341 1
原创 Alibaba-Nacos
简介解决微服务中的统一配置、服务注册于发现等问题。帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。关键特性 服务发现和健康检测 支持基于DNS和基于RPC的服务发现。 提供者:使用原生SDK、OpenAPI或一个独立的 Agent TODO 注册Service; 消费者:使用DNS或HTTP&API查找和发现服务; Nacos提供对服务实时的健康检查,阻止向不健康的主机或服务实例发送请求。
2020-12-23 17:37:44 259
原创 Alibaba-Dubbo
简介 Apache Dubbo 是一个分布式服务框架,主要实现了多个系统之间的高性能、透明化调用,简单讲就是RPC框架; 支持多种协议的服务发布:dubbo://、rest://、webservice://、thrift://; 支持多种不同的注册中心:Nacos、Zookeeper、Redis、Consul、Eureka、Etcd等; 另外还提供了服务治理功能,比如服务注册、监控、路由、容错; 集群容错 Failover Cluster:默认模式,失败自动切换
2020-12-23 16:54:17 971
原创 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 23833 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 542
原创 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 204
原创 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 379
原创 Linux 安装Git
备注:用yum安装的版本在1.8左右,版本过低,如果有Jenkins使用,过低的版本无法正常拉取代码,所以这里使用wget 方式下载高版本安装。 卸载:yum remove git 再次检查git是否还存在,有时候系统会出现多个版本的git,直接卸载可能卸载不干净 git --version 查看版本号 whereis git 查看git安装目录,如果有安装过低版本的git...
2020-02-09 10:49:12 291
原创 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 1138
原创 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 1004
原创 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 176
原创 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 399
原创 MySql-分表分库
为什么要分库分表 超大容量问题; 性能问题; 如何去做到 垂直切分、 水平切分 垂直分库:解决的是表过多的问题 垂直分表:解决单表列过多的问题 水平切分; 大数据表拆成小表 拆分策略水平拆分 一致性hash 范围切分 可以按照ID 日期拆分 拆分后的问题跨库join的问题 设计的时候...
2019-07-23 15:53:19 220
metronic.bootstrap 模板
2015-12-22
linux 环境下 ant+buld.xml 能够自动构建git项目
2018-06-07
gradle 编译spring源码报错
2016-05-27
Maven继承问题A->B->C
2016-02-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人