- 博客(64)
- 收藏
- 关注
原创 spring cloud gateway启动后卡住了,一直不能完全启动,日志也没报错信息
配置文件加上该配置spring.cloud.gateway.predicate.weight.enabled=false。产生原因:spring cloud gateway引入了feign client。引入的feign client加上延迟注入 @Lazy。
2024-10-17 14:35:36 118
原创 mysql Using where; Using join buffer (Block Nested Loop)
sql执行很慢,explain 发现Using join buffer (Block Nested Loop)产生的原因有可能是:JOIN 的字段类型不一样 或者 JOIN的字段没有索引。
2023-06-16 14:32:02 2220 1
原创 Caused by: java.time.DateTimeException: Invalid value for ClockHourOfAmPm (valid values 1 - 12)
被同事引入的工具类坑惨了。里面的hh全是小写的。时间格式里面的小时要使用大写的HH。
2023-03-29 15:56:03 856 1
原创 通过字符串表达式获取对象属性值
在一些场景下,比如做一些日志,需要通过字符串表达式占位符替换成真正的对象属性具体使用可参考:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#expressions-ref-literal测试例子如下:import lombok.Data;import org.springframework.expression.spel.standard.SpelExpressionParser;/.
2022-05-27 17:13:13 1282
原创 解决服务器重启后Redisson的delayQueue take数据会阻塞
主要原因是有些人的代码是按照下面这种写法,最主要造成的原因这个写法并不能给你初始化延迟队列,没有初始化延迟队列,就不会接收到延迟队列的数据。public void addDelay(Object o) { RBlockingQueue<CallDTO> blockingFairQueue = redissonClient.getBlockingQueue("delay_queue_call"); RDelayedQueue<CallDTO> dela
2022-03-07 18:22:25 2299 3
原创 redis操作报错-Unexpected character (‘-‘ (code 45)): Expected space separating root-level values
com.fasterxml.jackson.core.JsonParseException: Unexpected character (’-’ (code 45)): Expected space separating root-level valuesat [Source: (byte[])“2021-11-17 18:48:51”; line: 1, column: 6]我遇到原因是 一位同事用的下面的属性写的 @Autowired private RedisTemplate<
2021-11-17 18:56:20 8034
原创 VMware centos可以访问外网,用主机上的shell工具连不上虚拟机
我遇到的原因:主要是网络适配器的VMware Network Adapter VMnet8里面的IPV4 协议的IP地址是动态获取的。解决办法: 设置对应的静态网络属性
2021-07-05 12:41:26 183
原创 权限校验url匹配工具类---AntPathMatcher
在我们做url权限校验时候,会有不同的api路径配置,api路径会跟实际请求的url进行匹配,我看了一下spring mvc的匹配源码, 发现了一个已经实现好的的类import org.springframework.util.AntPathMatcher;public class PathTest { public static void main(String[] args) { AntPathMatcher matcher = new AntPathMatcher.
2021-04-10 10:17:20 898 2
原创 微信网页分享:错误码:63002,invalid signature(只改了APPID和SECRET就不行了)
网上有说明配置白名单,JS域名 什么的就不再说明了。我遇到的情况是改了APPID和SECRET,就报错误码:63002,invalid signature。原因是改之前调用了之前的APPID和SECRET,这个会保存一个access_token和ticket在redis, 导致一直用的都是旧的access_token和ticket。。解决办法:删除redis里面的access_token和ticket的缓存key。...
2021-04-06 18:21:07 2617
原创 SpringBoot不读取bootstrap.yml/properties文件(高版本解决方案)
1.spring cloud 2.4.0 之前对应的版本即可 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> </dependency>2.更高版本的还需要引入 <dependency>
2021-03-10 21:22:48 4673 2
原创 Netty01-核心类(组件)抽象理解(易懂)
Netty敲完代码还是一脸蒙蔽,几个核心的类到底是干啥的?Netty将核心的功能逻辑抽象有好几个组件,为了更容易理解,下面先讲下面5个组件。下面这些描述,对于初学者看完可能还是一脸蒙蔽,不急,再下面会慢慢解释其相关意思。channel : 一个连接到网络的套接字或能够进行一系列读、写、连接和绑定等IO操作的组件。EventLoop: EventLoop是 处理注册到自己本身上面的channel所有IO操作。EventLoopGroup: EventLoopGroup是一组EventLoop.
2021-02-25 12:39:56 174 2
原创 源码分析-FastThreadLocal为什么能比ThreadLocal快
ThreadLocal与FastThreadLocal区别ThreadLocal:FastThreadLocal:ThreadLocal和FastThreadLocal 在上图中结果几乎是差不多的,区别主要如下:1.ThreadLocal的通过key计算Hash值找到对应的Entry,找到value.对此不清楚可查看源码分析-ThreadLocal2.而FastThreadLocal则是维护了一个Index,直接就通过这个Index找到对应的value.这就是FastThreadLocal
2021-02-22 17:02:46 171
原创 源码分析--ThreadLocal(图解)
想清楚ThreadLocal源码的原理,那么先搞明白 ThreadLocalMap ,很关键1.首先我们知道Thread 里面有一个成员变量 threadLocals ;public class Thread implements Runnable { ThreadLocal.ThreadLocalMap threadLocals = null; }2.ThreadLocalMap里面有包含了一个成员变量Entry[] table。static class ThreadLocalMa.
2021-02-22 15:41:40 685 3
原创 前端页面跳转带token-骚操作
声明:非必要不要使用该方法,会有存在一些问题,在此只是提供思路。发现存在的问题:1.使用window.location.reload; 会有问题,$(window).attr(‘location’,url) 会有问题。上面两个操作仅仅是将当前页面重新加载,并没有请求后台。原因就是每次调用上面的方法 的html页面都是从localStorage取出来的原因。我是通过改成调用方法解决的 route.js 的 pageJump()。2.性能问题3.暂未发现其他问题强烈建议不要使用该方法,只是提供一.
2021-01-29 18:37:13 12279
原创 HashMap扩容机制
final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i; if ((tab = table) == null || (n = tab.length) == 0) n = (tab = resize()).len.
2021-01-11 10:00:29 561
原创 Kafka: Replication factor: 1 larger than available brokers: 0.
在确保kafka、zookeeper 版本正确,并且启动正常的情况下, 可以自己看看配置的zookeeper路径下有没有kafka的元数据。我遇到的原因是kafka的server.properties 配置文件写的 127.0.0.1:2181/kafka然后使用命令的时候写了–zookeeper 127.0.0.1:2181改成下面就可以了–zookeeper 127.0.0.1:2181/kafka...
2020-12-22 10:35:26 2052 1
原创 源码:还不懂HashMap的tableSizeFor()方法原理?看这篇就够了。
还不懂HashMap的tableSizeFor()方法?看这篇就够了。先上源码 /** *返回给定目标容量的两个大小的幂。 *这里要计算一个值,这个值要为2的n次方的值,并且要大于或等于cap,最接近的。就比如30, 最接近的就是32. **/ static final int tableSizeFor(int cap) { int n = cap - 1;//这一步在后面说明,为啥-1. n |= n >>> 1; n |=.
2020-12-03 16:05:19 615
原创 spring cloud fegin调用外部接口,接口地址没错但是返回404
场景:fegin调用外部接口,接口地址没错但是返回404@FeignClient(value= "baidu-service", url = "https://www.baidu.com/")public interface BaiduServiceRPC { @GetMapping("") String get();}我遇到的原因是:在网关那边透传了请求的所有请求头,然后通过自己通过RequestInterceptor也将这些请求头透传给了外部接口请求,而这里面有一个请求头 H
2020-11-23 16:57:00 1047
原创 Tomcat源码01-生命周期接口和容器接口的分析
tomcat的架构和源码实现到底是怎样的?下面先介绍2个最重要的接口:1.生命周期管理的接口-org.apache.catalina.Lifecycleorg.apache.catalina.Lifecycle 这是一个生命周期管理的接口,tomcat里面的重要组件大部分都实现了这个类。通过这个接口可以管理tomcat的组件生命周期,主要包括 启动、停止、销毁、监听生命周期、查看当前的状态的一些方法。当tomcat启动的时候就像一辆汽车启动,首先发动机启动,然后慢慢带动着车辆的其他组件(齿轮.
2020-11-14 21:31:45 129
原创 3.spring源码-@Configuration
当我们给一个类加上@Configuration,spring底层到底做了那些事情?文章标题3,主要是先有1.spring容器的基本框架 2.spring bean的生命周期 的知识再看下面文章会更好懂。1.入口spring核心框架里面一个bean信息注册相关的重要的类:org.springframework.context.annotation.AnnotatedBeanDefinitionReader它的作用就是通过他,可以使得BeanDefinitionRegistry的类拥有bean.
2020-11-07 13:37:40 178
原创 mysql 获取每组某个字段值最大的整行记录-绝对可用
看到竟然有人发错误的博客来误导人,记录一下!SELECT t2.* FROM ( SELECT 分组字段, max(最大值字段) 最大值字段 FROM 表名 GROUP BY 分组字段 ) t1 INNER JOIN 表名 t2 ON t1.分组字段=t2.分组字段 AND t1.最大值字段 = t2.最大值字段 GROUP BY t1.分组字段最后这段 【GROUP BY t1.分组字段】 sql 可选 确保不会拿到重复分组最大值的记录)例子如下:SELECT t2.* FROM ( SELE.
2020-10-11 18:37:56 2398 3
原创 微信小程序 安卓请求成功 IOS(苹果)请求超时
直接说答案的:我遇到的情况是我接口返回 的自定义http状态码 4401IOS不认自定义http状态码 直接丢弃掉返回的结果,导致请求超时。为什么自定义http状态码?天知道。。。
2020-08-12 15:41:35 1454 3
原创 随便看看之spring-security的过滤链源码
1.spring-security的过滤链组成与顺序在org.springframework.security.config.annotation.web.builders.FilterComparator构造函数 定义了security 过滤器的顺序。从这里面我们也可以看到security 里面使用到的过滤器, 从名字上我们大概可以看出每个fileter的作用。(部分源码如下:)里面非常有趣的是put(.class) 和put(“XXX.class”)FilterComparator() {
2020-07-22 19:02:35 280
原创 外部api接口调用封装
简述:一般我们调用外部系统 比如使用httpclilent.post(url,param);然后我们会在各种地方使用httpclilent.post(url1,param1)、httpclilent.post(url2,param2);比较好的办法如下,直接上代码。下面是一个简单的基本封装模型。/** * 请求参数基类 */public abstract class BaseReq<resp> { protected String reqUrl; publ
2020-06-09 18:49:40 1875
原创 canal 全量数据
1.在github上看到说通过ClientAdapter可以通过api将全量数据同步到es,hb,mysql(这个方案不适合我的场景,没试过。)https://github.com/alibaba/canal/wiki/ClientAdapter2.可以尝试弄一个空库重新执行数据库脚本,需要注意一个重要问题(最终怎么将数据同步切换过来,可行但是没试过。)3.最后一个办法,首先要有数据库的全量binlog,然后启用一次canal,再关闭,编辑conf/example/meta.dat ( 找到对应的me
2020-05-26 21:04:46 2848
原创 Maven错误(大坑):was cached in the local repository, resolution will not be reattempted until the update
主要问题:解决办法:第一种情况: 我主要是在远程库拉下来一直有问题,拉下来了但是存在.lastupdate文件。我是将jar单独保存起来,清空本地仓库jar对应的文件夹,然后通过maven命令,将jar包放入本地仓库的, 命令如下。mvn install:install-file -Dfile=E:\softwares\zookeeper-3.4.10\zookeeper-3.4.10.j...
2020-04-20 22:59:07 14427
原创 两层for循序的,大的循环尽量在里面,小的循环尽量在外面。
像以下的代码块,尽量不要将大循环放到外层循环。原因是CPU使用到分支预测技术,以上一个的判断来预测下一个判断。像一下代码大概会判断错误100次,如果换过来则判断错误100000次。而CPU涉及引入了分支预测技术,主要是减少指令跳转的时候重新获取新指令。两层循环数差距越大,性能相差越明显。 for(int i = 0; i < 100; i++){ for...
2019-10-30 16:10:26 7497
原创 spring-security-oauth2 登录或者认证成功后 做一些操作, 比如登录日志。
通过跟踪代码,发现放当我们访问/oauth/token (这个请求的方法在TokenEndpoint)获取access_token 的时候,身份认证成功后会在 ProviderManager的authenticate 方法 通过eventPublisher.publishAuthenticationSuccess(result);推出了一个认证成功的事件。这样我们可以通过注册一个监听Auth...
2019-09-04 11:35:44 8583 6
原创 sprng boot 工程 读取不到依赖jar的配置文件, 本地idea跑没问题,但是在服务器却读取失败(appassembler打包方式)
spring boot 工程有一个依赖工程xxx-common.jar, 这个xxx-common.jar有一个工具类XUtils,这个工具类会读取xxx-common.jar classpath下的一个配置文件。本来XUtils.class.getResource("/xxxx.json").getPath();获取路径,读取这个配置文件信息。后来发现服务器上跑有问题。(我这边的打包方式是ap...
2019-08-07 14:28:27 447 2
原创 springboot实战原理分析笔记(十七)-spring boot测试步骤
spring boot测试步骤1.直接在测试类上面加2个注解@RunWith(SpringRunner.class)@SpringBootTest(classes = UserDao.class)只在测试环境下有效的 @TestConfigurationspringboot会有限加载测试环境的配置文件,测试环境没有才会加载正式环境设置配置还可以通过一下方法:1.@SpringBo...
2019-07-16 12:10:22 717 5
原创 springboot实战原理分析笔记(十六)- springboot 监控与度量
springboot 监控与度量 (引入spring-boot-starter-actuator依赖)1.可以通过访问下面的url获取springboot 运行的信息/heapdump/beans/dump/trace/info/autoconfig/metrics/{name:.}/metrics/mappings/health/env/{name:.}/env/co...
2019-07-16 12:10:08 361
原创 springboot实战原理分析笔记(十五)- Spring boot 日志
Spring boot 日志 private Logger logger = LoggerFactory.getLogger(UserDao.class); logger.debug("UserDao logger debug"); logger.info("UserDao logger info"); logger.warn("UserDao logger warn");...
2019-07-16 12:09:10 211
原创 springboot实战原理分析笔记(十四)-spring boot starter
1.新建一个项目2.需要一个配置类,配置类里面需要装配好需要提供出去的类3.使用@Import导入需要装配的类@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documented@Import(RedisAutoConfiguration.class)public @...
2019-07-16 12:08:56 172
原创 springboot实战原理分析笔记(十三)- springboot aop
1.spring-boot-starter-aop加入依赖,默认就开启Aop的支持2.写一个Aspect,封装横切关注点(日志、监控等等) ,需要配置通知(前置通知, 后置通知等等)和切入点(那些包的类得那些方法)3.这个Aspect要纳入spring容器中管理配置文件可以配置 是否启用Aop : spring.aop.auto=truespring.aop.auto设置是否启动,默认...
2019-07-16 12:08:46 245
原创 springboot实战原理分析笔记(十二)- springboot jdbc
一、springboot jdbc装配DataSource1.加入依赖spring-boot-starter-jdbc、mysql-connector-java2.加入配置spring.datasource.driverClassName=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/spr...
2019-07-16 12:08:28 194
原创 springboot实战原理分析笔记(十一)- spring boot 定制和优化内嵌的Tomcat
两种定制tomcat 的方法1.实现EmbeddedServletContainerCustomizer接口,并将实现类纳入spring容器中管理2.new 一个TomcatEmbeddedServletContainerFactory,并将类纳入spring容器中管理一般tomcat优化会优化这2个参数 http11NioProtocol.setPollerThreadCount(200...
2019-07-16 12:08:14 343
原创 springboot实战原理分析笔记(十)- 异常处理
异常处理1.取消springboot默认逻辑异常处理 @SpringBootApplication(exclude = ErrorMvcAutoConfiguration.class)使用ErrorPageRegistrar方法1.写一个类实现ErrorPageRegistrar接口,然后将这个类交给Spring容器(类似web.xml里面配置错误处理方式)@Componentpub...
2019-07-16 12:08:07 164
原创 springboot实战原理分析笔记(九)- spring boot web
1.@GetMapping/@PostMapping 是spring 4.3的新特性2.在Springboot里面使用jsp, 需要另外加入org.apache.tomcat.embed.tomcat-embed-jasper 包还在配置文件加入两个配置项spring.mvc.view.prefix=/WEB-INF/jsp/spring.mvc.view.suffix=.jsp方法的...
2019-07-16 12:07:46 240
原创 springboot实战原理分析笔记(八)-springboot 运行流程
springboot 运行方法:1.实例化SpringApplication对象,然后调用run方法。运行流程: 1.判断是否是web环境 2.加载所有classpath下面的META-INF/spring.factories 的 ApplicationContextInitializer类 3.加载所有classpath下面的META-INF/spr...
2019-07-16 12:07:33 274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人