自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(512)
  • 收藏
  • 关注

原创 系统变量和环境变量的区别

【代码】系统变量和环境变量的区别。

2023-04-18 20:03:31 438 2

原创 Java中Cookie的属性介绍

Cookie

2023-04-14 16:56:19 676 1

原创 三大编程范式

编程范式有以下三种:1、面向对象编程2、面向过程编程3、面向函数编程区别:面向对象编程最大的特点是:以类、对象作为组织代码的单元以及它的四大特性。面向过程编程最大的特点是:以函数作为组织代码的单元,数据与方法相分离。函数式编程跟面向过程编程一样,也是以函数作为组织代码的单元。不过,它跟面向过程编程的区别在于,它的函数是无状态的。何为无状态?简单点讲就是,函数内部涉及的变量都是局部变量,不会像面向对象编程那样,共享类成员变量,也不会像面向过程编程那样,共享全局变量。函数的执行结

2022-05-07 11:53:44 3028

原创 JS的最大安全整数

IEEE754 规定,双精度浮点数的有效数字是 52 位,如上图sign(S): 符号位,0 是正数,1 是负数exponent(E): 指数位fraction(F): 有效数字IEEE754 规定,在计算机内部保存有效数字时,默认第一位总是 1,所以可以舍去,只保留后面的部分。比如保存 1.01,只存 01,等读取的时候再把第一位 1 加上去,所以 52 位有效数字实际可以存储 53 位。那 JS 中的最大安全整数是多少呢?这里的安全 指的是能够 one-by-one 表示的整数,.

2022-04-02 20:07:14 3541

原创 桥接模式和策略模式

参考:从桥接模式与策略模式谈起桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。在桥接模式中,Abstraction通过聚合的方式引用Implementor。在策略模式中,Context也使用聚合的方式引用Startegy抽象接口。相对策略模式,桥接模式要表达的内容要更多,结构也更加复杂。桥接模式表达的主要意义其实是接口隔离的原则,即把本质上并不内聚的两种体系区别开来,使得它们可以松散的组合,而策略在解耦上还仅仅是某一个算法的层次,没有到体系这一层次。

2022-03-20 11:35:32 572

原创 火焰图简介

参考:如何读懂火焰图?总结:火焰图用来分析cpu耗时情况。命令:perf 命令,它是 Linux 系统原生提供的性能分析工具,会返回 CPU 正在执行的函数名以及调用栈(stack)。通常,它的执行频率是 99Hz(每秒99次),如果99次都返回同一个函数名,那就说明 CPU 这一秒钟都在执行同一个函数,可能存在性能问题。命令例子:sudo perf record -F 99 -p 13204 -g -- sleep 30perf record 表示记录-F 99 表示每秒99次

2022-03-15 21:34:10 1399

原创 HTTP 请求头中的 X-Forwarded-For

HTTP 请求头中的 X-Forwarded-For总结:X-Forwarded-For请求头格式非常简单,就这样:X-Forwarded-For:client, proxy1, proxy2可以看到,XFF 的内容由「英文逗号 + 空格」隔开的多个部分组成,最开始的是离服务端最远的设备 IP,然后是每一级代理设备的 IP。 如果一个 HTTP 请求到达服务器之前,经过了三个代理 Proxy1、Proxy2、Proxy3,IP 分别为 IP1、IP2、IP3,用户真实 IP 为 IP0,那

2022-02-21 18:47:17 892

原创 JNI字段描述符

JNI字段描述符是一种对函数返回值和参数的编码。符号简写标识:Z -> BooleanB -> ByteC -> CharS -> ShortI -> IntJ -> LongF -> FloatD -> DoubleV -> VoidL -> Object对象如果以一个L开头的描述符,就是类描述符,它后紧跟着类的字符串,中间是用"/"隔开的包及类名,然后分号";"结束。比如:Ljava/lang/String;如

2021-12-29 12:21:02 831

原创 @NacosPropertySource、@NacosPropertySources、@NacosValue、@NacosConfigurationProperties

@NacosPropertySource用来配置单个DataId如:@NacosPropertySource(dataId = "user.info", groupId = "springbootvue", autoRefreshed = true)@NacosPropertySources用来配置多个DataId如:@NacosPropertySources({ @NacosPropertySource(dataId = "user.info", groupId = "s

2021-11-30 11:36:06 8636 4

原创 testOnBorrow、testOnReturn属性

Jedis客户端testOnBorrow、testOnReturn属性分析总结:1、testOnBorrow若testOnBorrow属性设置为true,从连接池中获取对象时,会进行检查,检查不通过,会从连接池中移走并销毁。检查是通过PooledObjectFactory接口的validateObject方法完成。Jedis客户端,提供JedisFactory对象,用于校验。若ping不通,则校验失败。JedisFactory对象,是在连接池创建时,构造。2、testOnReturn若

2021-11-09 11:02:29 2148

原创 线程池参数动态调整

线程池的参数动态调整

2021-11-08 22:43:46 1286

原创 MDC链路日志

SpringBoot+MDC实现全链路调用日志跟踪总结:MDC就类似THreadLocalMap,线程上下文存储。1、使用MDC存储一个全局唯一ID,比如UUID2、使用拦截器或者其他方式,每次请求前把全局唯一ID存入MDC,结束后移除3、如果是上游调用下游,则可以把全局唯一ID传递给下游,比如请求头或者入参或者其他方式4、下游拿到全局唯一ID之后再存入MDC5、如果是异步方式,则可以通过异步父线程传递给子线程,如可以扩展ThreadPoolTaskExecutor,复制MDC作为入参传递给

2021-11-03 19:28:05 568

原创 Sentinel和Hystrix

超详细的Sentinel入门Hystrix 和 Sentinel 对比

2021-11-03 17:43:55 237

原创 JVM 常用参数说明

/** * 基础参数设置 */-Xms初始堆大小如:-Xms1024m,初始堆1024M-Xmx最大堆大小如:-Xmx1024m,最大堆1024M-Xss设置每个线程的堆栈大小如:-Xss128k-XX:NewSize=n设置年轻代大小如:n=256m-XX:MaxnewSize=n表示新生代可被分配内存的最大上限如:n=512m-XX:NewRatio=n设置年轻代和年老代的比值如:n=3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4

2021-11-01 18:18:50 193

原创 Maven 的 Scope 属性

Maven 项目可以分为三个阶段:编译阶段,测试阶段,运行阶段了。通过 scope 属性,我们可以决定依赖应用是否参与以上阶段,也将会影响依赖传递。Maven 提供 6 种 scope:1、compile2、provided3、runtime4、test5、system6、importcompile:compile 是 Maven 默认属性,将会使依赖包参与项目的编译,测试,运行阶段。当然,项目打包之后将会包含该依赖。provided:provided 意味着依赖仅参与项目编译

2021-10-28 15:53:05 2042 1

原创 swap 介绍

Swap简介:Linux系统的Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统

2021-10-21 15:48:49 2332

原创 JVM中-Xms和-Xmx设置相同的好处

概念解释:-Xms:初始堆大小 默认物理内存的 1/64(小于1GB)空余堆大小小于 40% 时,JVM就会增大堆直到 -Xmx 的最大限制-Xmx:-Xmx 最大堆大小 默认物理内存的 1/4(小于1GB)空余堆大小大于 70% 时,JVM就会减少堆直到 -Xms 的最小限制JVM垃圾回收的不足:当堆内存使用情况变化时,并不是单纯的扩大和缩小堆内存就完事了。在此之前还会执行GC(垃圾回收)操作。如果 -Xms 起初值设置的比较小,那么就会频繁触发GC操作。当GC操作无法释放更多内存

2021-10-20 17:31:44 1514

原创 MySQL 批量插入申请自增 ID

以下仅自己猜想,有懂的大佬可以教学一下。简单的说,就是 MySQL 中,如果引擎为 innodb,并且有自增 ID,那么在批量插入的时候,MySQL 其获取自增 ID 的数量为大于批量插入记录数的最小 2^n 次方。举个栗子:批量插入记录数 获取的自增 ID 数量1 22 43 44 85 86 87 88 169 1610 16以此类推比如我批量插入 10 条记录,那么其自增 ID 为 1、2、3、4、5、

2021-10-19 23:40:14 2495

原创 HBase 介绍

我终于看懂了HBase,太不容易了…

2021-10-18 12:30:57 157

原创 es 命令

一个 Elasticsearch 请求和任何 HTTP 请求一样由若干相同的部件组成:curl 介绍curl 详细命令可参考上面那篇文章curl -X<VERB> <PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING> -d '<BODY>'被 < > 标记的部件:VERB 适当的 HTTP 方法 或 谓词 : GET、 POST、 PUT、 HEAD 或

2021-10-10 15:14:55 117

原创 curl 介绍

Linux之curl简介:curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。例子:不带有任何参数时,curl 就是发出 GET 请求。curl https://www.example.com上面命令向 www.example.com 发出 GET 请求,服务器返回的内容会在命令行输出。命令参数:-A-A 参数指定

2021-10-10 15:08:43 648

原创 PropertyPlaceholderConfigurer

参考:PropertyPlaceholderConfigurer读取属性文件使用详解总结:1、是什么PropertyPlaceholderConfigurer 是个 bean工厂后置处理器的实现,也就是 BeanFactoryPostProcessor 接口的一个实现。2、作用在 Spring 中,使用 PropertyPlaceholderConfigurer 可以在 XML 配置文件中加入外部属性文件,当然也可以指定外部文件的编码。PropertyPlaceholderConfigur

2021-10-09 21:14:11 282

原创 @RequestBody 的使用

添加链接描述总结:@RequestBody 主要是用来解析前端传过来的参数是放在请求体中,并且 Content-Type 是 application/json 类型的数据。1、@JsonAlias 注解实现:json 转模型时,使 json 中的特定 key 能转化为特定的模型属性;但是模型转 json 时,对应的转换后的 key 仍然与属性名一致。举个栗子:/** * 姓名 */@JsonAlias(value = {"Name", "name123"})private Strin

2021-08-26 20:55:43 627

原创 Redis 数据类型——hyperloglog

一、hyperloglog 介绍1、hyperloglog 简介Redis 中 hyperloglog 数据类型是 2.8.9 版本引入的,是一种概率数据结构,用来估算数据的基数。基数就是指一个集合中不同值的数目,比如 a, b, c, d 的基数就是 4,a, b, c, d, a 的基数还是 4。虽然 a 出现了两次,但是只会被计算一次。​hyperloglog 通常用来统计一个集合中不重复的元素个数。一个很常见的例子就是统计某个文章的 UV(Unique Visitor,独立访客,一般可以理解

2021-08-14 17:59:48 1492

原创 Redis 数据类型——geospatial

一、geospatial 简介Redis 在 3.2 版本中加入了地理空间(geospatial)以及索引半径查询的功能,主要用在需要地理位置的应用上。将指定的地理空间位置(经度、纬度、名称)添加到指定的 key 中,这些数据将会存储到 sorted set。这样的目的是为了方便使用 GEORADIUS 或者 GEORADIUSBYMEMBER 命令对数据进行半径查询等操作。也就是说,推算地理位置的信息,两地之间的距离,周围方圆的人等等场景都可以用它实现。​小结:geo 底层原理是使用 zset来实现

2021-08-14 11:27:00 2609 1

原创 Redis 数据结构——robj

一、robj 介绍Redis 的其他基本数据结构,比如 sds、intset、ziplist、linkedlist、dict、zskiplist,其实 Redis 并没有直接使用这些数据结构来实现键值对的数据库,而是在这些数据结构之上又包装了一层 RedisObject(对象)。​使用 robj的好处:1、通过不同类型的对象,Redis 可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。2、可以针对不同的使用场景,为对象设置不同的实现,从而优化内存或查询速度。​二、rob

2021-08-07 21:12:41 646

原创 Redis 数据结构——dict

一、dict 介绍dict,也就是字典,字典又称散列表,是用来存储键值对的一种数据结构;但是,C 语言中是没有这种数据结构的,Redis 是 k-v 型数据库,整个数据库都是用 dict 来存储的,对 Redis 数据库进行增删改查操作,实际上就是对字典中的数据进行增删改查操作。Redis 的键值对存储就是用 dict 实现的,散列(Hash)的底层实现之一也是字典。dict 通常的存储结构是 Key-Value 形式的,通过 Hash 函数对 key 求 Hash 值来确定 Value 的位置,因此

2021-08-07 18:37:17 1640

原创 Redis 数据结构——intset

一、intset 介绍intset,也就是整数集合,是 set 的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis 就会使用 intset 作为 set 的底层实现。它的查找是 O(log n) 的,插入和删除都是 O(n) 的。但是由于存储元素相对较少的时候,O(log n) 和 O(n) 差距不是很大,但是用 Redis 的这种 intset,相比红黑树和哈希表来说,可以大大减少内存。所以,Redis 的 整数集合 intset 的存在主要还是为了节省内存。​

2021-08-07 16:39:41 1254

原创 Redis 数据结构——zskiplist

一、zskiplist 介绍​zset 数据类型在生活中较常见,如根据成绩对学生进行排名、根据得分对游戏玩家进行排名等。对于 zset 的底层实现,我们可以使用数组、链表、平衡树等结构。然而,数组不便于元素的插入和删除;链表的查询效率低,需要遍历所有元素;平衡树或者红黑树结构虽然效率高但实现复杂。于是,Redis 采用了一种新型的数据结构—— 跳跃表,也即 zskiplist。跳跃表的效率堪比红黑树,然而实现却远比红黑树简单。在 Reids 中,跳跃表主要应用于有序集合 zset 的底层实现,zs

2021-08-07 14:24:55 604

原创 Redis 数据结构——quicklist

一、quicklist 介绍1、quicklist 简介Redis 中的 list 数据类型在版本 3.2 之前,其底层的编码是 ziplist 和 linkedlist 实现的,但是在版本 3.2 之后,重新引入了一个 quicklist 的数据结构,list 底层都由 quicklist 实现。​在早期的设计中, 当 list 对象中元素的长度比较小或者数量比较少的时候,采用 ziplist 来存储,当 list 对象中元素的长度比较大或者数量比较多的时候,则会转而使用双向列表 linkedli

2021-08-07 12:08:21 673

原创 Redis 数据结构——linkedlist

一、linkedlist 简介由于 C 语言没有内置链表这种数据结构,于是 Redis 构建了自己的链表实现。linkedlist 是一个双端链表,也是 list 数据类型的底层实现之一。当一个list 包含了数量比较多的元素,又或者 list 中包含的元素都是比较长的字符串时,Redis就会使用 linkedlist 作为 list 的底层实现。当一个 lsit 只包含少量的元素,并且每个 list 要么就是小整数值,要么就是长度比较短的字符串,那么 Redis 就会使用 ziplist 作为 list

2021-08-03 00:16:32 553

原创 Redis 数据结构——ziplist

一、ziplist 简介ziplist,也就是压缩列表,是为了提高存储效率而设计的一种特殊编码的双向链表。它可以存储字符串或者整数,存储整数时是采用整数的二进制而不是字符串形式存储。他能在 O(1) 的时间复杂度下完成 list 两端的 push和 pop 操作。但是因为每次操作都需要重新分配 ziplist 的内存,所以实际复杂度和 ziplist 的内存使用量相关。​二、ziplist结构整个ziplist在内存中的存储格式如下:ziplist 主要有这么几个部分:zlbytes:32 位

2021-08-01 14:59:06 849

原创 Redis 数据结构——SDS

前言:本文将介绍 Redis 中字符串的实现方法。​一、说明​Redis 是使用 C 语言实现的,但是 Redis 中使用的字符串却不是直接用的 C 语言中字符串的定义,而是自己实现了一个数据结构,叫做 SDS(simple dynamic String),即简单动态字符串。​二、C 语言字符串定义​C 语言的字符串定义,是使用和字符串相等长度的字符数组来存储字符串,并且在后面额外加一个字符来存储空字符 ‘\0’,也就是下图:这种实现方式的优点就是,简单且直观。但是众所周知,Redis 是一

2021-07-31 18:09:49 814

原创 Tomcat之NIO模型

Tomcat之NIO模型总结:在BIO中,会发生两次阻塞:第一次阻塞 connect调用:等待客户端的连接请求,如果没有客户端连接,服务端将一直阻塞等待第二次阻塞 accept调用:客户端连接后,服务器会等待客户端发送数据,如果客户端没有发送数据,那么服务端将会一直阻塞等待客户端发送数据在Tomcat中,维护了一个worker线程池来处理socket请求,如果worker线程池没有空闲线程,则Acceptor将会阻塞,所以在有大量请求连接到服务器却不发送消息(占用线程,阻塞与accept的调用)

2021-07-23 10:06:57 238

原创 MySQL 索引长度限制

MySQL】索引长度的一些限制MySQL索引长度限制MySQL索引长度限制总结:1、TextField 是不支持建立索引的2、MySQL 的每个单表中所创建的索引长度是有限制的,且对不同存储引擎下的表有不同的限制。 1)myisam 表,单列索引,最大长度不能超过 1000 bytes,否则会报警,但是创建成功,最终创建的是前缀索引(取前333个字符)。 2)myisam 表,组合索引,索引长度和不能超过 1000 bytes,否则会报错,创建失败; 3)innodb 表,单列索引,超过

2021-07-21 12:25:01 5602

原创 spring-cache结合redis,并配置过期时间

优雅的缓存解决方案–SpringCache和Redis集成(SpringBoot)Spring cache整合Redis,并给它一个过期时间!

2021-07-16 17:23:21 93

原创 MapStruct

遇到MapStruct后,再也不手写PO,DTO,VO对象之间的转换了!

2021-07-16 15:57:59 117

原创 Servlet 和 Servlet 容器的区别

JAVA WEB中Servlet和Servlet容器的区别Servletweb开发的本质就一句话:客户端和服务器交换数据。于是使用 Java 的 Socket 套接字进行编程,去处理客户端来的 tcp 请求,经过编解码处理读取请求体,获取请求行,然后找到请求行对应的处理逻辑步入服务器的处理中,处理完毕把对应的结果返回给当前的 Socket 链接,响应完毕,关闭 Socket。以上过程主要是:建立连接,传输数据,关闭连接,这些步骤不是所开发的web服务去处理的,而是tomcat容器做了这些事情。

2021-07-14 21:52:12 174

原创 maven 编译常用参数

Maven常用参数说明 maven命令编译常用参数Maven 打包和编译时相关参数说明总结:clean 清除上一次的构建package 仅打包、测试install 把打好的包发布至本地仓库,以备本地的其它项目作为依赖使用deploy 把打好的包发布至本地仓库和远程仓库-h,--help 显示帮助信息-am,--also-make 构建指定模块,同时构建指定模块依赖的其他模块-amd,--also-make-dependents 构建指定模块,同时构建依赖于指定模块的其他

2021-07-14 17:39:01 1498

原创 tomcat线程池参数

tomcat线程池executor配置参数

2021-07-10 16:46:31 196

空空如也

空空如也

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

TA关注的人

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