自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(199)
  • 资源 (1)
  • 收藏
  • 关注

原创 vertx 异步编程避免回调地狱-思路1

vertx 异步编程避免回调地狱-思路1。

2023-03-25 16:37:07 1240

原创 html页面使用绝对路劲或相对路径加载js,css,img区别

html加载js,css,img等资源既可以使用相对路径加载,也可以使用绝对路径。

2023-02-11 14:08:27 2914

原创 spring security的使用(一)

spring security是spring全家桶中负责认证,授权,安全方便的框架,spring security 相对于 apache的授权认证框架——shiro来说会相对复杂些,spring security不仅可以提供单体应用的认证授权,还提供sso oauth2,微服务内的鉴权授权的等能力。

2023-02-05 01:01:19 565

原创 将nginx.conf文件的内容拆分成多个

nginx的如果有多个server模块都配置在同一个nginx.conf文件会显得比较臃肿,后续维护起来也会比较困难,所以可以将内容写入到多个配置文件中然后在nginx.conf文件中通过include命令引入。

2022-12-31 18:36:16 867

原创 给已安装的nginx添加新的module

nginx的特性是由多个module组合起来的,而默认安装的nginx,携带的module并不多,如果想使用更多nginx的能力需要编译时指定module,下面我就演示下如何给已安装的nginx的添加新的module,以sub_filter指令涉及的module为例,进入nginx的运行目录3.将源码目录下objs的nginx的执行文件,替换到运行目录下先将原本的nginx的运行文件备份再查看nginx 的安装module

2022-12-04 17:37:47 4000

原创 使用netty实现一个简单的聊天室

用netty实现一个简单的聊天室,单个客户端消息会群发给其他客户端。

2022-08-28 21:36:04 392

原创 寻找最长回文串算法题解(力扣第5题)

创建一个boolean类型的二维数组record,record[i][j]表示,从第i个字符到第j个字符是否是回文串,record[i+1][j-1]如果是回文串那必然第s[i+1] == s[j-1] && record[i][j] == true。此解法时间复杂度为o(n2),时间复杂度过高,且没有利用内层回文串去判断外层是否是回文串,效率较低。如果j-i...

2022-08-27 13:39:03 519

原创 寻找2个有序数组中的中位数算法题(力扣第4题)

【代码】寻找2个有序数组中的中位数算法题(力扣第4题)

2022-08-21 16:37:49 239

原创 spring webflux的简单使用

spring webflux是spirng 5 引入的能构建异步响应式服务的新特性。异步响应式web容器底层实现可选择netty,undertow,servlet 3.1+容器。和传统的阻塞式servlet容器不一样。响应式容器能进一步提高资源的利用率,避免线程长时间处于等待状态,能以较少的线程处理更多的请求,缺点是整个处理链路必须是异步的,是基于事件响应的,不能阻塞事件线程,不然服务器性能会急剧下降,当然spring webflux并不能完整的替代传统的阻塞式容器,可根据需求进行选型。...

2022-08-14 18:11:37 1742

原创 es6-promise对象详解

es6-promise对象详解

2022-08-08 22:21:24 477

原创 vertx编程需注意的点

vertx编程需注意的点

2022-07-11 01:07:14 740

原创 基于vertx-web-sstore-redis的改造实现vertx http应用的分布式session

只需要将原本的SessionStore换成RedisSessionStore即可。其本身的Redis客户端是基于vertx实现的,对redis的读写是异步的,不会阻塞io线程。但是其目前的RedisStore实现有个很致命的问题,不能直接支持对自定义对象或者jdk原有的常用对象如ArrayList,HashMap做序列化和反序列化,除8大基本类型和其包装类外,其他的复杂对象都要实现其序列化接口。ClusterSerializable ,复杂对象如果没有实现ClusterSerializable 接口,

2022-07-04 00:22:42 693

原创 resilience4j的circuitbeaker,bulkheader,ratelimiter,retry的使用

resilience4j的circuitbeaker,bulkheader,ratelimiter,retry的使用

2022-05-29 22:06:54 985

原创 设计模式之责任链模式(结合servlet源码和dubbo 源码讲解)

设计模式之责任链模式(结合servlet源码和dubbo 源码讲解)

2022-05-15 16:20:57 603

原创 maven的dependencyManagement中定义的依赖声明优先级高于传递依赖

maven的dependencyManagement中定义的依赖声明优先级高于传递依赖

2022-05-08 14:43:10 2075 1

原创 vertx的http服务实现分布式session

vertx 的http服务实现分布式session

2022-05-04 17:35:01 1572

原创 nginx upstream 的路由策略配置

nginx upstream 的路由策略配置

2022-05-03 23:46:23 3690

原创 正则表达式的redos攻击

正则表达式的redos攻击

2022-04-22 23:58:30 10048

原创 nginx的rewrite模块指令的使用

nginx的rewrite模块指令的使用

2022-04-05 22:38:39 2986

原创 利用注解将对象的字符串类型字段脱敏处理

利用注解将对象的字符串类型字段脱敏处理

2022-03-06 22:05:56 924

原创 java程序在发生异常后是如何能精准的定位到源码的行数

java程序在发生异常后是如何能精准的定位到源码的行数

2022-01-23 23:15:17 1873 1

原创 使用openssl制作https的证书

使用openssl制作https的证书

2022-01-10 00:19:16 4576

原创 springboot动态调整日志级别

1.springboot使用log4j2springboot使用的common-logging,底层兼容各种日志框架如,log4j2,slf4,logback等,默认底层使用的是logback,我们可以去除logback的依赖,引入log4j2的starter,如下:2.指定日志配置文件和日志等级(此配置不限于log4j2,也适用于其他日志框架)在resources目录下加入log4j2的xml配置文件,默认spring-boot会加载classpath下面的名为log4j2.xml,或log4j

2021-10-10 22:43:52 6218

原创 kafka消息序列化和反序列化方式

kafka 消息的key 和 value 都需要指定序列化实现类。kafka提供了很多常用的实体的实现类。默认实现了下面2个接口在创建生产者和消费者时我们需要指定序列化和反序列化类,例如我们的value 可以指定字节类,内部的byte[] 采用pb工具类序列化生成,相对其他序列化方式,pb具有小,快,且兼容性好等特点。...

2021-06-25 15:32:31 1157

原创 kafka 简介和安装,使用

当下互联网公司使用最多的消息中间件,无疑是 kafka和rocketmq,虽然rocketmq单机10W+TPS比不上kafka单机的100W+但rocketmq 由于不依赖外部kit,加上简洁的api和灵活的设计,相对丰富的特性 包括 顺序消息,事务消息,重新投递等。成为越来越多互联网公司的首选。不过kafka作为老牌的消息中间件,其单机高达百万的TPS在处理海量日志等大数据量场景下还是很值得青睐的,1. kafka简介kafka 是apache基金会下的一款高可用,高吞吐量,低延迟的消息中间

2021-06-25 00:04:36 187 1

原创 sudo命令用法

sudo命令linux sudo命令的就是将一些(普通用户无法执行的命令)赋给普通用户或者组执行的权限,在赋权后,使用sudo命令的普通用户可以视为和root用户同样的权限。1.配置哪些命令可以被用户使用使用visudo命令root用户默认拥有全部命令的权限,这里我们给ly用户赋予一个vim的权限,这样通过sudo命令,ly用户可以更改原本不能编辑的文件sudo + 原本的命令,回车后,需要输入当前用户的密码sudo命令能将命令的执行权限赋权给普通用户,可以分摊管理员的工作量。..

2021-06-15 12:29:40 1416

原创 linux的用户管理

1.linux的用户管理linux的用户管理和组管理,每个用户都必须要有一个且仅有一个初始组,可以有多个附加组,使用useradd命令创建用户时,如果没有指定初始组,系统默认会创建一个于其同名的组。用户和组信息保存在4个文件中/etc/passwd 用户基本信息/etc/shadow 用户的密码信息/etc/group 组的基本信息/etc/gshadow 组的密码信息linux的用户分3类用户类型简介root超级管理员,uid=0的人都视为超级管理员,拥有系统

2021-06-15 11:18:38 203

原创 arthas的安装和使用

arthas是阿里开源的一款jvm诊断工具,相对于原生的jvm工具来说,其功能更为丰富强大,操作起来更加简单便捷。下载启动arthas下载arthas-boot jar,以java -jar启动curl -O https://arthas.aliyun.com/arthas-boot.jarjava -jar arthas-boot.jar -h要成功启动arthas,本地上至少要有一个java程序,否则arthas会自动退出下载测试程序 math-gamecurl -O https://a

2021-06-13 10:56:59 2988 1

原创 常用的jvm工具

利用jmap工具查看堆内存活的且占内存空间最大的对象jmap -histo:live pid | head -20也可以将堆内存快照进行dump,再利用其他工具分析利用jstack查看最耗cup的线程先根据 pid查询 最耗cpu的线程pidtop -Hp pid再获取pid的16进制printf(“%x\n”) 25307 62db再利用查看线程当前的状态jstack pid | grep 62db最香的还是阿里开源的jvm诊断工具-arthas。http://arth

2021-06-06 23:16:29 1605

原创 jvm参数调优

jvm参数参数名称含义默认值解释-Xms初始堆大小物理内存的1/64(<1GB)默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制.-Xmx最大堆大小物理内存的1/4(<1GB)默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制-Xmn年轻代大小(1.4or lator)注意:此处的大小是(eden+ 2 surv

2021-05-31 21:47:01 266

原创 使用java客户端操作elasticsearch

我们可以通过直接构造http请求来操作elasticsearch,es也提供了很多语言的sdk,让开发人员可以简单高效的访问es。其中es官方也提供了java lowLevel client和highLevel client,elasticsearch transport client (在7.0后废弃,推荐使用高级客户端)。低级客户端的api,在http请求的形势下进行了简单的封装,需要自己拼接大量的内容,虽然比较灵活,但是对程序员来说相对耗时,使用不方便。目前比较推荐的是高级客户端,封装了大量的ap

2021-05-22 19:18:52 656

原创 使用es搜索数据

es提供了DSL(domain specific Language 领域专定语言),其实就是一个json体,用http请求的方式向es中获取数据。DSL分为2类leaf query clause:可以理解为简单的查询语句,这种类型的语句比较多,像match,term,range等,表示一些特定功能的查询语句compound query clause:组合查询语句,这类由多个leaf query clause 或者 compound query clause 语句组成。例如bool,dis_max等等

2021-05-16 21:46:37 4760

原创 es字段的数据类型

es的字段都有一个字段类型,不同的类型都各有所长,比如keyword类型的字段适合做聚合和排序,而text的类型可以用来全文搜索。下面按大类介绍下es常用的数据类型,es的数据字段的类型定义和搜索的方式紧密相关,例如 keyword类型,Number类型在搜索时,只适合精准匹配,范围搜索之类的,不能用于全文搜索。而text类型适合全文搜索。1.Common types1.1 binary二进制类型 ,值以base64字符串的形式存贮,_source默认不会存贮该类型的值,如果需要实际的存贮,请设置

2021-05-16 00:20:58 13314

原创 es索引的创建

es是一个分布式的文档数据库,索引的文档都是以json序列化形式存贮的,而不是像关系型数据库那样是列数据行的形式存贮的。在es 7.0之前,常把es和关系型数据库的名词做如下映射esmysqlindex (索引)datasource(数据库)type (类型)tablemappingcolumndocumentrowes的index相当于关系数据库的数据库,而type 相当于表,mapping表示某个type的字段的定义,document这相当于表的每

2021-05-09 20:20:38 21398

原创 在centos上安装elasticsearch

在centos上安装es之前,由于es是基于lucene实现的,而lucene是一个用java编写的全文搜索库,所以我们要想运行es,必须要先安装jdk,jdk采用1.8以上。可以直接下载es可执行的二进制文件的压缩包1.es我们可以直接从官网下载es的二进制包,wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gztar -xzf elasticsearch

2021-05-06 21:56:30 612 1

原创 elasticsearch的简介和原理

互联网的搜索和我们的生活息息相关,例如我们常用的百度,谷歌,淘宝商品的搜索功能等等。面对海量数据能快速,精确地返回用户想要的数据,这背后离不开一个好的搜索引擎。而elasticsearch无疑是当下最受欢迎的分布式搜索引擎了。1.elasticsearch 是什么?elasticsearch是一个基于apache lucene(是java语言编写的全文搜索引擎)的分布式的搜索和分析引擎。它是一个文档类型的数据库和mongdb类似,elasticsearch在apache luence基础上,进行了封装

2021-05-05 22:49:32 720

原创 java序列化工具 protoStuff的使用

1.前言在互联网快速发展的今天,互联网架构也在不断的升级。而数据的传输和存贮是互联网系统中不可或缺的一部分。举个简单的例子,目前微服务已经很普及了,就拿dubbo来说,不管用jdk自带的序列化,还是dubbo的序列化,效果都不尽然人意。市面上高性能的序列化工具也有例如kryo,pb。但是kryo虽然序列化出来的体积小,传输快,但是不支持前后兼容。(例如序列化前和序列化后,对象的字段必须是一样的,不能多也不能少,否则就会报错),pb整体都不错,体积小,传输快,前后兼容。但是要自己编写pb文件,使用门槛高。

2020-12-27 21:35:37 4649 4

原创 gson将json字符串转换成map对象,其中的整数变成了double类型

1.json的数据类型数字(整数,浮点数)字符串(用双引号包裹)布尔类型(true或者false)对象(用大括号包起来)数组(中括号包起来)NULL类型(null)在使用gson将json字符串转换成Map<String,Object> 对象时,我发现原先json字符串中的整形,取出来变成了double类型,当我取出对应的字段直接toString的时候,再转成Integer时,会抛异常,因为double类型的字符串是不能直接转成整数的。如下:Gson gson = ne

2020-10-25 17:34:31 3101

原创 linux中的压缩命令

linux最常见的压缩格式是.gz,而windows是.zip,linux和windows都默认支持zip的压缩格式,但在linux中zip格式不常见是因为压缩效果没有gz好。1.linux常见的压缩命令1.1 gzip,gunzip1.1.1 压缩gzip是生成.gz压缩文件的命令,gzip 压缩效率虽然高,但是有几个缺点,1.不能压缩目录,只能压缩文件,要压缩目录需要配合tar命令一起使用2.压缩完后,不会保留原文件用法:直接gzip 后 + 文件名gzip [OPTION]... [F

2020-10-11 19:56:07 369

原创 http请求中对特殊字符的处理

1.http传参的特殊字符在使用http协议进行传参时,如果请求的参数带有一些特殊字符,如 +,%,=等,如果没有进行URL编码可能在发送请求的时候,后端例如Java的web的httpServletRequest会对取出来的参数自动进行URLDecode 操作,得到的值和我们的原本想传的参数不是同一个了,例如http的get请求,http://localhost:8080/urlTestV2?p=+123p参数中,带有+号,+号在http传参中属于特殊字符,所以在后端会被自动识别成空格。所以使用ge

2020-08-16 15:23:37 14404

gson jar 包

gson-2.8.0 jar包,一个强大的工具类,能序列化反序列话对象,转换数据等

2018-01-16

空空如也

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

TA关注的人

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