- 博客(199)
- 资源 (1)
- 收藏
- 关注
原创 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
原创 寻找最长回文串算法题解(力扣第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
原创 spring webflux的简单使用
spring webflux是spirng 5 引入的能构建异步响应式服务的新特性。异步响应式web容器底层实现可选择netty,undertow,servlet 3.1+容器。和传统的阻塞式servlet容器不一样。响应式容器能进一步提高资源的利用率,避免线程长时间处于等待状态,能以较少的线程处理更多的请求,缺点是整个处理链路必须是异步的,是基于事件响应的,不能阻塞事件线程,不然服务器性能会急剧下降,当然spring webflux并不能完整的替代传统的阻塞式容器,可根据需求进行选型。...
2022-08-14 18:11:37
1742
原创 基于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
原创 maven的dependencyManagement中定义的依赖声明优先级高于传递依赖
maven的dependencyManagement中定义的依赖声明优先级高于传递依赖
2022-05-08 14:43:10
2075
1
原创 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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅