- 博客(21)
- 收藏
- 关注
原创 Spring Cloud Bus 动态刷新配置
Spring Cloud Bus 核心原理其实就是利用消息队列做广播,所以要先有个消息队列,目前官方支持 RabbitMQ 和 kafka。postman 用 post 请求访问其中一个应用 http://localhost/actuator/busrefresh 刷新配置,这样就可以同时刷新这两个应用的配置。一个关键的想法是,Bus 就像一个扩展的 Spring Boot 应用程序的分布式执行器,但也可以用作应用程序之间的通信渠道。而且如果客户端比较多的话,一个一个的手动刷新也比较耗时。
2023-08-15 17:09:30 132 1
原创 Spring Cloud Config(二)
如果每次配置文件修改后,都需要我们主动发送post请求触发更新,这明显有点不太方便。而且如何客户端比较多的话,一个一个的手动刷新也比较耗时。Spring Cloud Config 是在项目启动的时候加载的配置内容,导致了它存在一个缺陷,配置文件修改后,需要重启服务才能生效。这也是我们之前说的第二个痛点。为了解决这个痛点,它提供了一个刷新机制,但是需要我们主动出发。刷新页面 http://localhost/name,结果没有变更。刷新页面 http://localhost/name,结果变更了。
2023-08-15 16:27:23 129 1
原创 Spring Cloud Config(一)
在开发中多个微服务可能使用相同的配置,假设有50个微服务,如果配置需要修改配置文件,就意味着我们需要修改50个微服务的yml文件。Spring Cloud Config 是最早的配置中心,虽然后面的之秀Nacos可以取代它, 但是Spring Cloud Config还是很多公司在用。如果多个微服务可能使用相同的配置信息,假设有50个微服务,如果配置需要修改配置文件,就意味着我们需要修改50个微服务的yml文件,极其浪费时间。使用配置中心,配合actuator可以实现配置的动态修改,无需重启服务。
2023-08-15 15:11:25 110 1
原创 防重复提交(基于AOP+Redis)
客户端可以加Confirm确认框,或者Submit后按钮置灰。本文介绍服务器防重复(基于AOP+Redis)5秒内只能访问一次。
2023-08-11 15:53:28 430 1
原创 Caffeine本地缓存框架
缓存的淘汰策略是为了预测哪些数据在短期内最可能被再次用到,从而提升缓存的命中率。LRU由于实现简单、高效的运行时表现以及在常规的使用场景下有不错的命中率,或许是目前最佳的实现途径。但 LRU 通过历史数据来预测未来是局限的,它会认为最后到来的数据是最可能被再次访问的,从而给与它最高的优先级。这样就意味着淘汰真正热点数据,为了解决这个问题业界运用一些数据结构上的改进巧妙的解决这个问题。Caffeine 使用 Window TinyLfu 回收策略,提供了一个近乎最佳的命中率。
2023-08-03 18:08:54 232
原创 invalid target release 1.8
maven打包报错:invalid target release 1.8。解决方法:将JAVA_HOME从jdk1.7改成jdk1.8。
2022-04-01 11:51:41 1001
原创 JAVA_HOME配置不生效
JAVA_HOME配置不生效。安装了多个版本JDK,如1.7,1.8,JAVA_HOME配置的是1.7,但是 java -version显示的是1.8,PATH变量中,将%JAVA_HOME%相关配置move到最上面。
2022-04-01 11:39:18 1766
原创 spring自定义校验注解
自定义校验注解引入validation模块<!-- 自定义验证注解 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>新建注解@Target({ ElementType.ANNOT
2022-03-30 16:03:27 827
原创 pom依赖不用指定版本号
引入parent, parent会默认指定其他依赖的版本号,当然也可以自己指定,这样会覆盖掉parent指定的版本号。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> <rel
2022-03-30 11:17:33 4519
原创 如何让oracle的select强制走索引
大多数情况下,oracle数据库内置的查询优化策略还是很成功的,但偶尔也有犯2的时候,即使有索引,也会做全表扫描,可以参考以下语句的写法,强制让select语句使用索引
2021-10-31 15:07:13 173
原创 ORACLE优化器RBO与CBO介绍总结
RBO和CBO的基本概念Oracle数据库中的优化器又叫查询优化器(Query Optimizer)。它是SQL分析和执行的优化工具,它负责生成、制定SQL的执行计划。Oracle的优化器有两种,基于规则的优化器(RBO)与基于代价的优化器(CBO) RBO: Rule-Based Optimization 基于规则的优化器 CBO: Cost-Based Optimization 基于代价的优化器RBO自ORACLE 6以来被采用,一直沿用至ORACLE 9i. ORAC
2021-10-31 15:00:58 773 1
原创 33岁程序员的迷茫
33岁是个尴尬的年龄,有人说程序员35岁就到头了,这无疑是我们程序员所需要深思的问题,未来该怎么办。 之前觉得现在的大学毕业生,一毕业,在一线城市工资1万+是高薪。这两年在三线城市生活,发现大学生刚毕业在一线城市月薪过万并没有什么值得开心的事。因为很多工种在三线城市工资更高。 堂弟是90后,没有上过大学,堂妹也是这样。这几年他们住在农村,接一些打柜子的活,也就是属于木匠工种,这几年平均一年收入30多万。 反观自己,大学毕业,到现在工作10余载。前两年在一线城市工作,年薪税前不足...
2021-04-10 11:25:10 842 3
原创 Java异常分类
1 基本概念java.lang.Throwable是所有异常的根java.lang.Error是错误信息java.lang.Exception是异常信息2 Exception一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException。2.1 Checked异常只有java语言提供了Checked异常,Java认为Checked异常都是可以被处理的异常,所以Java程序
2021-04-09 11:04:53 144
原创 @Transactional注解怎么使用?
@Transactional注解的使用:1、在方法或者类上都可以添加。(如果在类上添加,则此类中的所有方法都会执行事务,不推荐,因为可能后续接手开发的小伙伴添加方法的时候根本不需要执行事务);2、触发事务回滚有两种方式:a. 方法抛出异常自动进行回滚;如果使用了try catch,要在catch中抛出异常;b. 手动执行回滚:在方法中添加:TransactionAsceptSupport.currentTransactionStatus().setRollBackOnly(); //第1..
2021-04-09 10:01:28 955
原创 java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
mysql8.x版本的数据库在连接的时候报错 java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed只要在url的后边加上 allowPublicKeyRetrieval=true 即可spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=utf8&
2021-04-01 18:16:02 169 1
原创 pom.xml第一行出现红叉
两种解决方法1.springboot的版本过高 springboot版本改成2.1.4以下2.用高版本的maven编译 <properties> <java.version>1.8</java.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> </properties> <de...
2021-04-01 17:53:19 663
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人