- 博客(44)
- 收藏
- 关注
原创 springboot、spring、springmvc有哪些注解
GetMapping、@PostMapping、@PutMapping、@DeleteMapping:这些是@RequestMapping的特化版本,分别处理GET、POST、PUT、DELETE请求,使代码更加简洁和具备语义性。@Bean:定义一个Bean的方法,该方法的返回值将被注册为Spring容器中的Bean。@RequestMapping:通用的映射注解,可以处理任何类型的HTTP请求。@Component:一个通用的注解,任何Spring组件都可以使用,表示一个Spring管理的Bean。
2024-12-27 10:36:08
746
原创 接口线上调用时间长排查
在服务上查看jvm状态发现在调用时不停的进行young gc导致时间花费太长。打日志排查后发现问题出在t3,是循环里的代码花费的时间太长。排查这段代码的大对象是在循环里面大对象不停的被创建。优化之后时间明显缩短,将大对象单独只操作一次即可。线上发现这个接口调用时间非常长 花费2min。
2024-08-01 14:42:38
233
原创 springcloud-远程调用超时问题
2、日志打印出来接口超时,已经配置了feign的超时时间和ribbon的超时时间。还需要添加 hystrix 配置。
2024-07-19 09:12:49
454
原创 jvm-接口调用排查
并且线上其他接口正常,只有这个接口异常。这是不正常的,并且老年代长期占比90 即使gc之后也占比90左右,没有清理太多空间,调用完成之后开始下降。1、打日志代码不应该在循环里面打印大对象,非常占用内存,导致老年代的对象无法及时回收,出现内存泄露。线上碰到个问题,某个接口调用时间特别长,线上调用接口直接报gateway time out。然后比较本地和线上的环境和配置的差异,发现线上和本地日志级别不一样,并且线上不断打日志。S1 — Heap上的 Survivor space 1 区已使用空间的百分比。
2024-04-17 13:46:57
1248
1
原创 kaggle-Prediction of Obesity Risk
使用 LGBMClassifier。使用 XGBClassifier。使用stacking。
2024-03-26 15:53:46
360
原创 线程池的核心参数与拒绝策略
比如线程池的 corePoolSize 为 5,maximumPoolSize 为 10,任务队列容量为 100,随着任务被提交,我们的线程数量会从 0 慢慢增长到 5,然后就不再增长了,新的任务会被放入队列中,直到队列被塞满,然后在 corePoolSize 的基础上继续创建新线程来执行队列中的任务,线程会逐渐增加到 maximumPoolSize, 然后线程数不再增加,如果此时仍有任务被不断提交,线程池就会拒绝任务。链接:https://www.jianshu.com/p/979005fc1acc。
2024-03-06 17:35:43
939
原创 Synchronized的锁升级机制详解(JDK8)
在Java的并发编程当中,synchronzied无疑是最常用的关键字,用于保护代码块和方法在多现场场景下的,并发安全问题。在Java中,synchronized锁是基于对象实现的,通常的使用方式包括修饰同步方法和修饰同步代码块。
2024-03-04 10:00:06
464
原创 使用redis实现分布式锁
NX :表示key不存在的时候,才能set成功,也即保证只有第一个客户端请求才能获得锁,而其他客户端请求只能等其释放锁,才能获取。PX milliseconds: 设定key的过期时间,单位为毫秒。EX seconds :设定key的过期时间,时间单位是秒。XX: 仅当key存在时设置值。1、利用过期时间防止死锁。
2024-01-17 15:16:14
393
原创 springboot集成knife4j配置问题
knife4j.setting.enableFilterMultipartApis false 针对RequestMapping的接口请求类型,在不指定参数类型的情况下,如果不过滤,默认会显示7个类型的接口地址参数,如果开启此配置,默认展示一个Post类型的接口地址。满足条件的Bean就会被注册到IOC容器中,不满足条件的Bean就不会被注册到IOC容器中。knife4j.setting.enableVersion false 是否开启界面中对某接口的版本控制,如果开启,后端变化后Ui界面会存在小蓝点。
2023-12-18 13:53:10
1734
原创 文件流转换问题
上面这种写法在某些浏览器发送的请求并不适配报404错误,通过日志看到已经获取到文件流在最后一步转换时出错。将inputStream 转换成outputStream 返回给前端。使用 BufferedOutputStream 包裹 返回即可解决。
2023-12-14 13:57:12
399
原创 websocket实现和配置
后端调用代码 应用场景是用户在任意前端点击就会触发,且在多个前端都可以获取响应,此时多个前端监听同一个websocket服务。1、websocket 统一实现代码。
2023-11-30 09:33:51
692
原创 解决excel导出报错问题
原因: nginx升级之后解析header出现code字符转移和gateway不适配。gateway添加 - transfer-encoding 解决。nginx旧版本1.18 nginx新版本 1.21。由于nginx升级出现的版本不适配gateway问题。查nginx日志发现报错 code 重复。excel导出报错502 bad。gateway版本2.1.5。以上是gateway配置。
2023-11-04 15:39:40
440
原创 解决内存报错问题--docker问题
经过排查,部署的服务本身没有问题(可以在另外一台机器上发布),服务器内存足够大。猜测是docker容器问题,添加docker内存配置即可。总之一堆错误,看出来是内存问题。
2023-10-31 15:33:04
2761
1
原创 maven问题 Malformed \uxxxx encoding.
直接在 自己的maven仓库文件夹(我的是 D:\maven\local_repository )搜索 resolver-status.properties。使用maven打包时出现 Malformed \uxxxx encoding.然后全部删除 还不行就在 .m2/repository 搜索也全部删除。
2023-08-17 11:27:45
170
1
原创 linux在线安装docker和docker-compose 脚本
【代码】linux在线安装docker和docker-compose 脚本。
2023-08-15 14:21:19
100
1
原创 多租户实现(3)feign调用拦截器和outh2
说明一下token的问题,如果没有开启新的线程那么请求头中的token是会进行传递的,如果是开启新的线程调用其他微服务,请求头会丢失,下面代码将一并解决这两个问题。另外想说token可以设置时效,如果的一般的多线程使用微服务接口调用,可以在第一次获取token之后缓存起来,在调用的时候先进行拦截之后再设置。替代使用资源拥有者的凭据,而是使用一个权限令牌token,它具有具体的范围限制,生命周期,以及其他的权限属性。3、第三方应用获得资源的广泛的权限,是的资源拥有者不能限制访问时间和权限。
2023-08-07 09:01:45
314
1
原创 sklearn.tree.DecisionTreeClassifier 调参
如果为float,则min_samples_leaf是分数,而ceil(min_samples_leaf * n_samples)是每个节点的最小样本数。4、min_samples_split:拆分内部节点所需的最少样本数:如果为int,则将min_samples_split视为最小值。如果为float,则min_samples_split是一个分数,而ceil(min_samples_split * n_samples)是每个拆分的最小样本数。如果未提供sample_weight,则样本的权重相等。
2023-08-04 14:26:53
204
1
原创 多租户实现(2)mybatis拦截器及其执行顺序,sql全局添加tenantId
通过调试源码可以看到 xml的sql解析过程在Executor 之后,ParameterHandler之前。所以如果xml有如下形式的写法的时,并且没有使用Executor而只使用ParameterHandler,那么在解析xml时就会解析不到设置的参数。详细讨论mybatis的执行流程和sql的生命周期。ParameterHandler在解析xml的sql之后执行。在查询的时候也一样需要把参数加进去,下面的查询的写法。Executor 在解析xml的sql之前执行。下面是insert的拦截写法。
2023-07-26 14:10:36
944
3
原创 多租户实现(1)controller层拦截器和ThreadLocal
解决了公司要求的多租户的一个功能,有些涉及的点,作为一个系列记录哈。前端统一在header里添加tenantId字段后,后端统一获取。
2023-07-26 13:06:57
368
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人