- 博客(316)
- 资源 (25)
- 问答 (4)
- 收藏
- 关注
原创 Feign 第一次调用为什么会很慢?
先说下我自己的理解因为Feign的调用是基于Ribbon做负载,在第一次调用的时候,需要对注册中心进行注册**创建对应的Client**,所以**在第一次调用的时候,等同于创建client的时间加上请求的时间**,所以才会慢。目前比较直接的解决方式就是开启Ribbon的**饥饿模式**。
2024-02-22 11:03:08
1910
原创 Mysql中 distinct 和 group by 哪个效率高?
在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。因为group by和distinct近乎等价,distinct可以被看做是特殊的group by。在语义相同,无索引的情况下:distinct效率高于group by。原因是distinct 和 group by都会进行分组操作,但group by在Mysql8.0之前会进行隐式排序,导致触发filesort,sql执行效率低下。
2023-12-27 10:45:58
1645
原创 关于nacos的配置获取失败及服务发现问题的排坑记录
特别关注:server-addr、namespace、group的这三个配置。本地的一些properties配置文件需要移除,否则影响启动时的配置加载。排查配置文件中的配置,注意配置与代码中注入的格式保持一致。
2023-10-24 10:42:57
7555
原创 Java 泛型 T,E,K,V,?
在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本身就是一个安全隐患。那么泛型的好处就是在编译的时候能够检查类型安全,并且所有的强制转换都是自动和隐式的。上面这段代码中的 specifyType 方法中 省去了强制转换,可以在编译时候检查类型安全,可以用在类,方法,接口上。
2023-09-14 15:40:53
621
原创 解决org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded
spring.http.server.maxFileSize和spring.http.server.maxRequestSize的值,效果是一样的。然后在application.properties文件中配置。原因:上传文件的请求有个默认配置最大值是2M 超出了最大值。方法二,重写config配置类。
2023-08-31 09:13:57
2028
原创 忽略https证书解决SSLHandshakexception No subject alternative names present
【代码】忽略https证书解决SSLHandshakexception No subject alternative names present。
2023-08-18 17:37:02
1226
原创 关于Nginx的 location 配置各种情况转换后的样子记录
不知道内网穿透的可参考我的博客: https://blog.youkuaiyun.com/qq_33333654/article/details/130106800?因为我们工程里压根没有“//abc/test”的接口,所以才会报错。3、使用natapp指向本地nginx代理的端口。10到12先注释掉,跟09冲突了,后面测试再放开。后面的就不逐个测试了,感兴趣的可以自行测试一下。我没有开会员,注意这个地址是会变动的。2、nginx代理到本地接口。我用的是apifox。
2023-07-21 15:28:39
490
原创 MyBatis之慎用association
1、能不用就别用2、如果用,请务必指定对应的字段或id3、多层嵌套时请注意前缀的使用4、内嵌sql避免递归。
2023-07-17 15:56:09
693
原创 EasyExcel设置动态head数据(不是格式)及postman自测的坑
导出某某业务模块的数据,但是,数据列的标题内容是根据当前日期计算出来的。比如今天是5月20,那么列就是 5/21 、 5/22…EasyExcel 通过Bean的注解实现匹配的,这是最便捷的方式,前提是已知固定的列标题。但是现在动态的不知道怎么做了。contents集合里的每一条数据对应的是一行,需要与head列匹配上。重点是: application/vnd.ms-excel。这时候的坑就出现了,不是xlsx的,需要你手动修改后缀名。head集合里的每一个集合对应一个列标题。
2023-06-07 15:51:03
1857
原创 解决SpringBoot工程启动报错mapperInterface. Bean already defined with the same name!的问题总结
2、如果启动类中有@SpringBootApplication、@MapperScan({ “com.xxx.mapper” })这两个注解,同时你的xxMapper接口中有@Mapper注解,那么就把xxMapper接口中的@Mapper注解去掉。有人说注释@MapperScan({ “com.xxx.mapper” })这个,我试了一下,不行。重复注入了,@MapperScan注入了一次,@SpringBootApplication+@Mapper又注入了一次。报错内容,只展示一行吧。
2023-05-25 11:16:53
3742
原创 解决Nginx静态资源跨域问题
解决nginx静态资源跨域add_header 'Access-Control-Allow-Origin' '*';
2023-04-28 09:55:51
727
原创 natapp + nginx 实现内网穿透
重启:当前目录下打开cmd输入: nginx nginx-s reload。注意:如果断线了natapp会重新生成一个地址,这是免费隧道的一个小弊端。官网地址直接注册就好: https://natapp.cn/第一步:下载nginx压缩包并解压(这个自行百度吧)第六步:下载natapp并配置启动bat文件。新创建的文本文件修改后缀名为bat。第三步:启动或者重启nginx。启动:直接双击.exe文件。环境是我本地的win10。第四步:注册natapp。复制该地址即可访问了。第五步:配置免费通道。
2023-04-12 14:57:53
1254
2
原创 本地虚拟搭建单master的k8s集群
K8S详细自学教程: https://gitee.com/yooome/golang/blob/main/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B-%E8%B0%83%E6%95%B4%E7%89%88/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B.md。虚拟机搭建k8s: https://blog.youkuaiyun.com/zafBoot/article/details/126378513。
2023-03-29 18:07:02
141
转载 分布式事务(Seata)原理 详解篇【转载】
在之前的系列中,我们讲解了关于Seata基本介绍和实际应用,今天带来的这篇,就给大家分析一下Seata的源码是如何一步一步实现的。读源码的时候我们需要俯瞰起全貌,不要去扣一个一个的细节,这样我们学习起来会快捷而且有效率,我们学习源码需要掌握的是整体思路和核心点。首先 Seata客户端启动一般分为以下几个流程:1.自动加载Bean属性和配置信息2.初始化TM3.初始化RM4.初始化分布式事务客户端完成,完成代理数据库配置5.连接TC(Seata服务端),注册RM和TM。
2023-03-21 16:39:38
337
原创 MySQL的回表
什么是回表?答:回表是一个过程,是获取到主键后再通过主键去查询数据的一个过程就叫回表。那这个主键从哪来?从叶子结点存储的内容来,如果存储的是非聚簇索引则通过叶子节点存储的值获取,该值就是主键。反之如果是聚簇索引则该索引就是主键,叶子几点存储的值就是具体数据内容。一定会回表吗?不一定,要根据查询过程中是否用到主键来判断,如果没有用到主键,只用到了其他索引,则会触发回表。
2023-01-31 10:53:14
1106
原创 MySQL存储结构
B+树:多路平衡树非叶子结点不存储data,只存储冗余索引,所以可以存放更多索引叶子节点包含所有索引字段叶子节点索引有序,用双向指针连接,提高区间访问性能
2023-01-31 10:09:08
513
转载 浅析HashMap的put()方法执行流程【转载】
5、如果不是treenode,开始遍历链表,判断链表长度是否大于8,如果大于8就转成红黑树,在树中执行插入操作,如果不是大于8,就在链表中执行插入;HashMap的数据结构在jdk1.8之前是数组+链表,为了解决数据量过大、链表过长是查询效率会降低的问题变成了数组+链表+红黑树的结构,利用的是红黑树自平衡的特点。3、判断table[i]==null,如果是true,直接新建节点进行添加,如果是false,判断table[i]的首个元素是否和key一样,一样就直接覆盖。
2023-01-30 17:57:44
590
原创 【JAVA开发】提高开发效率的工具分享
仓库:GitHub or GitLab or 本地仓库版本控制:git or svn推荐gitLab+git 多分支敏捷开发。
2022-10-31 12:00:00
386
原创 优快云 云IDE产品初步体验优劣势(JAVA语言方向)
总体来讲是相对比较便捷的,对比IDEA工具的话还有很大提升空间。目前最好的一点是纯净的环境和自由的插件,可以作为远程仓库备份,亦或者学习环境使用。
2022-10-28 16:05:35
873
原创 循环依赖解决方法、三级缓存、面试问题
为什么要使用三级缓存呢?二级缓存能解决循环依赖吗?如果没有 AOP 代理,二级缓存可以解决问题,但是有 AOP 代理的情况下,只用二级缓存就意味着所有 Bean 在实例化后就要完成 AOP 代理,这样违背了 Spring 设计的原则,Spring 在设计之初就是通过 AnnotationAwareAspectJAutoProxyCreator 这个后置处理器来在 Bean 生命周期的最后一步来完成 AOP 代理,而不是在实例化后就立马进行 AOP 代理。
2022-10-27 11:31:32
256
原创 ribbon负载均衡策略及适用场景
力,比如Fegin和OpenFegin都是基于Ribbon实现的,就连Nacos中的负载均衡也使用了Ribbon框架。Ribbon框架的强大之处在于,它不仅内置了7种负载均衡策略,同时还支持用户自定义负载均衡策略,所以其开放性和便利性也是它得以流行的主要原因。
2022-10-25 15:50:29
730
原创 分布式系统中的“无状态”和“有状态”
有状态服务需要维护大量的信息和状态,在性能方面要稍逊于无状态服务器;无状态服务在处理简单服务方面有优势,服务之间没有联系,易于扩展,但处理复杂任务需要额外的组件来协助(以有状态服务的形式实现)。微服务要尽量做到无状态,这样可以横向扩展。状态服务原则并不是说在微服务架构里就不允许存在状态,表达的真实意思是要把有状态的业务服务改变为无状态的计算类服务,那么状态数据也就相应的迁移到对应的 “有状态数据服务” 中。
2022-10-24 16:25:13
1418
原创 【RocketMQ 二十八】RocketMQ 消息查询
3种消息查询⽅式:Message Key & Unique Key & Message Id3种消息查询⼯具:命令⾏、管理平台、客户端API,且⽀持将查询到让特定/所有消费者组重新消费屏蔽Unique Key & Message Id区别,很多地⽅⼆者可以通⽤Message Key & Unique Key 需要使⽤到哈希索引机制,有额外的索引维护成本Message Id由Broker和commit log offset组成,属于精确匹配,查询效率更好。
2022-10-20 12:07:57
7464
1
原创 【RocketMQ 二十八】RocketMQ 消息堆积
⽣产者的⽣产速度 >> 消费者的处理速度⽣产者的⽣产速度骤增,⽐如⽣产者的流量突然骤增消费速度变慢,⽐如消费者实例 IO 阻塞严重或者宕机。
2022-10-20 11:29:59
2089
原创 【RocketMQ 二十七】RocketMQ 消费幂等
如果有⼀个操作,多次执⾏与⼀次执⾏所产⽣的影响是相同的,我们就称这个操作是幂等的。当出现消费者对某条消息重复消费的情况时,重复消费的结果与消费⼀次的结果是相同的,并且多次消费并未对业务系统产⽣任何负⾯影响,那么这整个过程就可实现消息幂等。
2022-10-20 11:15:14
952
转载 Java日志框架SLF4J和log4j以及logback的联系和区别
1、slf4j是java的一个日志门面,实现了日志框架一些通用的api,log4j和logback是具体的日志框架。2、Log4j和Logback可以单独的使用,也可以绑定slf4j一起使用。单独使用时,分别调用框架自己的方法来输出日志信息。绑定slf4j一起使用时,直接调用slf4j的api来输入日志信息,使用方式与底层日志框架无关(需要底层框架的配置文件)。推荐与Slf4j一起使用,假设项目中已经使用了log4j,而我们此时加载了一个类库,而这个类库依赖另一个日志框架。
2022-10-19 16:20:21
638
转载 IO与NIO
阻塞与非阻塞是描述进程在访问某个资源时,数据是否准备就绪的的一种处理方式。当数据没有准备就绪时:阻塞:线程持续等待资源中数据准备完成,直到返回响应结果。非阻塞:线程直接返回结果,不会持续等待资源准备数据结束后才响应结果。
2022-10-19 11:55:33
179
原创 什么是反向代理
正向代理中,proxy和client同属一个LAN,对server透明;反向代理中,proxy和server同属一个LAN,对client透明。实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把后出现的那种代理方式叫成了反向代理.
2022-10-13 15:54:53
318
原创 session和cookie的区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
2022-10-13 15:26:39
135
原创 mybatis二级缓存
二级缓存是 mapper 映射级别的缓存,多个 SqlSession 去操作同一个 Mapper 映射的 sql 语句,多个SqlSession可以共用二级缓存,二级缓存是跨 SqlSession 的。
2022-10-10 11:37:16
271
翻译 Mybatis的Mapper中的方法为什么不能重载?
于是此处打上断点,一点点看。解析XML文件和Mapper接口,将Mapper中的方法与XML文件中、等标签一一对应,那么Mapper中的方法如何与XML中这些标签对应了,当然是唯一的id对应了,具体如何这个id的值是什么,如何对应?在初入门Mybatis的时候可能都犯过一个错误,那就是在写Mapper接口的时候都重载过其中的方法,但是运行起来总是报错,那时候真的挺郁闷的,但是自己也查不出来原因,只能默默的改了方法名,哈哈,多么卑微的操作。到了这里应该理解了吧,这下抛出的异常和上面的异常信息对应起来了吧。
2022-10-10 10:35:33
563
原创 Spring事务是怎么实现的
3.Spring事务的传播机制是基于数据库连接来做的,一个数据库连接就是一个事务,如果传播机制配置为需要新开一个事务,那么实际上就是先新建一个数据库连接,在此新数据库连接上执行sql。5.并且修改数据库连接的autocommit属性为false,禁止此连接的自动提交,这是实现Spring事务非常重要的一步。2.Spring事务的传播机制是Spring事务自己实现的,也是Spring事务中最复杂的。8.如果出现了异常,并且这个异常是需要回滚的就会回滚事务,否则仍然提交事务。
2022-10-09 15:56:19
572
转载 同一个类中,无事务的方法调用有事务的方法问题原因及其解决方法
②在xxxServiceImpl中,用(xxxService)(AopContext.currentProxy()),获取到xxxService的代理类,再调用事务方法,强行经过代理类,激活事务切面。但当同一个class中的方法A调用方法B时,会发现方法B中的异常不再导致回滚,也即事务失效了。而在同一个class中,方法A调用方法B,调用的是原对象的方法,而不通过代理对象。如果是在同一个类中的方法调用,则不会被方法拦截器拦截到,因此事务不会起作用,必须将方法放入另一个类,并且该类通过spring注入。
2022-10-09 15:38:07
2350
转载 spring中BeanFactory和FactoryBean的区别
一般情况下,Spring通过反射机制利用的class属性指定实现类实例化Bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在中提供大量的配置信息。当配置文件中的class属性配置的实现类是FactoryBean时,通过getBean()方法返回的不是FactoryBean本身,而是FactoryBean#getObject()方法所返回的对象,相当于FactoryBean#getObject()代理了getBean()方法。
2022-10-09 13:46:54
445
原创 redis集群的优缺点,5种使用方式优缺点介绍
Redis Cluster优点:数据依照slot存储分布在多个节点,节点间数据共享,能够动态调整数据分布;可扩展性;无中心架构;高可用性;能够降低运维成本,有效提高系统的可用性以及扩展性。Redis Cluster缺点:数据通过异步复制,不保证数据的强一致性;Client 实现复杂;节点会因为某些原因发生阻塞被判断下线;多个业务使用同一套集群的时候,不能够依据统计区分冷热数据,资源隔离性较差,非常容易出现互相影响;Slave 在集群中充当“冷备”,不能缓解读压力;Key批量操作限制;
2022-10-08 18:20:24
3316
转载 Redis底层数据结构之hash
hash在Redis中的底层实现有两种,一种是zipList,这种是当hash结构的V值较小的时候使用的编码方式。这个已经在Redis底层数据结构之list这篇文章中介绍过了。这篇文章主要讲解一下另外一种实现方式,字典dict,这是当hash结构的V值较大时采用的编码方式。这里又要开始鞭尸C语言了,字典dict作为一种常用的数据结构,C语言内部并不具备,因而Redis的开发人员自己设计和开发了Redis中的dict结构,其定义如下:各属性含义如下:由上面可以看出,dict本质上是对哈希表dictht的一个
2022-10-08 17:15:43
1372
转载 Redis底层数据结构之 zset
zset是Redis提供的一个非常特别的数据结构,常用作排行榜等功能。zset在Redis中两种不同的实现,分别是zipList和skipList。zipList前面我们已经介绍过了,这里就不再介绍了。具体使用哪种结构进行存储,规则如下:zipList:需要满足以下两个条件[score,value]键值对数量少于128个;每个元素的长度小于64字节;skipList:不满足以上两个条件时使用跳表、组合了hash和skipListhash用来存储value到score的映射,这样就可以在O(1)时间内
2022-10-08 16:57:54
9365
jquery 拖动.rar
2020-08-21
OSSMinio管理后台.rar
2020-04-02
springCloud全部基础的demo项目.rar
2019-12-05
rabbitmq-service3.7.14.rar
2019-11-21
百度ocr文字识别java核心代码.zip
2019-10-24
ActivitiModeler.rar
2019-09-27
activiti6_war+汉化.rar
2019-09-23
RedisView.rar
2019-06-24
ssm+redis框架,亲测执行成功
2018-12-08
最新eclipse反编译离线包1.0.3org.sf.feeling.decompiler
2017-08-18
解决VS2015没有reportViewer及rdlc的dll及核心代码
2016-11-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人