自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (3)
  • 收藏
  • 关注

原创 彻底理解Prometheus查询语法

写在前面主要参考:https://github.com/yunlzheng/prometheus-book本文档主要分为两部分,分别讲解PromQL和Grafana的基础使用,在阅读PromQL部分时,建议不要联想Grafana中要怎么使用这些查询表达式,又是怎么根据查询结果绘图的,因为PromQL对于Grafana来说和SQL并没有区别,都是查询出结果,然后根据各种指定配置进行绘图,所以阅读......

2020-04-28 20:53:22 76791 11

原创 Python 在 Asyncio 中运行阻塞任务,避免影响主任务调度

使用FastAPI等异步框架开发接口时,如果接口实现逻辑中有大量阻塞任务,会阻塞loop调度,大大影响服务性能,甚至还不如传统多线程框架(tomcat)!可以使用asyncio.to_thread包装下阻塞方法,防止阻塞当前调度。可以看到异步任务并没有等待阻塞任务。

2024-09-02 15:09:00 373

原创 Python协程和线程的区别

多线程是通过cpu分片实现并行,所有线程雨露均沾(可能操作系统有优化,但本质还是这个),比如一个线程执行到request请求时等待响应,假如响应需要60秒,很快就因为分片到时而释放cpu,但很快该线程又会被分配新的分片又会一直执行到分片到时,循环往复,也就是说这60秒内分配给该线程的cpu分片都是无效的!协程是通过程序控制调度,当执行io时,可以通过await关键字来避免给任务分配cpu分片,提高cpu的效率。

2024-08-29 11:32:55 475

原创 comparing静态方法分析

【代码】comparing静态方法分析。

2024-04-03 18:23:40 212

原创 PagePlug多条件查询方案

使用Case When来编写查询条件。

2024-03-22 16:32:04 288

原创 Rule-Engine-Starter V1.0.0

Rule-Engine-Starter 是一个轻量级规则引擎,V1.0.0主要解决条件匹配问题。比如飞书文档,每个文档都可以设置访问权限,可以限制哪些人、哪些部门可以访问、是否对互联网用户公开等等,这些条件可以看成每个文档设置的访问规则,一个文档可以设置多个规则。校验一个用户是否能访问目标文档,只需要校验规则中的条件,可以使用SPEL等表达式来实现;但是如果想获取一个用户有访问权限的所有文档,如果再用SPEL实现岂不是需要遍历所有文档的所有规则,这种方案无疑是低效的。因此自研。

2023-10-10 16:16:42 480

原创 Optional简化NPE检查

【代码】Optional简化NPE检查。

2023-09-20 10:23:09 173

原创 UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only

事务提交时发现事务已被标记为回滚(rollback-only)。请求接口/test会复现UnexpectedRollbackException异常。原因是在调用TestService的事务方法test时,spring会创建一个事务,在调用DealService的事务方法deal时,spring默认传播Propagation_Required,即被调用时如存在事务则使用该事务,因为deal方法的事务和test方法的事务是同一个事务。

2023-08-09 17:47:10 958

原创 SpringSecurity5-教程5-前后端分离系统OAuth2授权登录后渲染指定页面

spring security

2023-03-24 19:49:43 814 1

原创 SpringSecurity5-教程4-Cookie单点登录

Cookie单点登录

2023-03-23 15:03:45 542

原创 SpringSecurity5-教程2-登出源码分析

可以看到有两个handler,分别是SecurityContextLogoutHandler和LogoutSuccessEventPublishingLogoutHandler,首先浏览器访问http://localhost:8035/,输入用户名root和密码root完成登录;学习,其实在之前教程中,在FilterChainProxy中看到过LogoutFilter,这个就是默认的登出Filter;可以看到只要是/logout请求,均判断为登出请求;可知默认重定向到/login?

2023-03-21 16:52:19 463

原创 SpringSecurity5-教程3-oauth2登录源码分析

spring-security

2023-03-20 09:43:49 1991 2

原创 SpringSecurity5-教程1-用户名密码登录源码分析

spring security

2023-03-16 11:04:13 1061 1

原创 ThingsBoard-OAuth2登录-UI配置授权登录

thingsboard

2022-11-25 15:30:28 1037

原创 ThingsBoard源码解析-规则引擎

thingsboard

2022-11-25 09:29:21 2305 8

原创 ThingsBoard源码解析-消息队列

tingsboard

2022-11-25 09:16:47 1445 1

原创 ThingsBoard-OAuth2登录-github

thingsboard

2022-11-24 22:11:46 374

原创 ThingsBoard源码解析-缓存

thingsboard

2022-11-24 17:24:16 734

原创 ThingsBoard源码解析-设备连接

ThingsBoard设备连接源码解析

2022-11-24 16:58:53 1904 1

原创 ThingsBoard源码解析-登录认证

TingsBoard登录源码解析

2022-11-24 15:46:37 2353 1

原创 ThingsBoard源码解析-WebSocket

源码解读

2022-11-23 11:03:27 1568

原创 IOT实战-基于MQTTX搭建物联网平台

物联

2022-11-08 16:49:59 3404

原创 补码的原理

计算机基础

2022-11-07 17:29:52 299 4

原创 maven依赖为什么没有传递呢?

d

2022-06-22 10:28:50 2831

原创 SQL Mybatis 多层foreach + uinon

表user:DROP TABLE IF EXISTS user;CREATE TABLE user( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (id

2022-05-09 19:33:57 474

原创 CPU飙升

1、故障现象客服同事反馈平台系统运行缓慢,网页卡顿严重,多次重启系统后问题依然存在,使用top命令查看服务器情况,发现CPU占用率过高。2、CPU占用过高问题定位2.1、定位问题进程使用top命令查看资源占用情况,发现pid为14063的进程占用了大量的CPU资源,CPU占用率高达776.1%,内存占用率也达到了29.8%[ylp@ylp-web-01 ~]$ toptop - 14:51:10 up 233 days, 11:40, 7 users, load average: 6.85,

2022-05-06 13:19:48 523

原创 源码分析Spring解决循环依赖问题

测试代码@Slf4j@Datapublic class A { B b; public void fun() { log.info("A fun"); b.fun(); }}@Slf4j@Datapublic class B { A a; public void fun() { log.info("B fun"); }}public class Test { public static void main(String[] arg

2022-04-13 15:55:06 133

原创 MYSQL order by 索引 为什么还全表扫描+文件排序?

有一张表:CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `ic` (`c`(19)) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSE

2022-04-12 20:35:56 2274

转载 MYSQL or 导致索引失效

Mysql版本 5.6.50新建表:CREATE TABLE ttt (id mediumint(8) unsigned NOT NULL AUTO_INCREMENT,a mediumint(8) unsigned NOT NULL DEFAULT ‘0’,b mediumint(8) unsigned NOT NULL DEFAULT ‘0’,PRIMARY KEY (id),KEY idx_a (a) USING BTREE,KEY idx_b (b) USING BTREE) EN

2022-04-11 15:07:26 2820

原创 慢SQL-mysql in + order by id + limit 导致的慢SQL

背景有通知表,建表SQL如下:CREATE TABLE `perf2_notice_info` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `notice_type` varchar(32) DEFAULT NULL COMMENT '通知类型: ALIWORK_TODO_TASK、EMAIL', `deal_status` varchar(32) DEFAULT 'NOT_START' COMMENT '

2022-04-10 00:57:08 3177

原创 慢SQL-处理思路

通过explain 分析原因type至少为range、ref、const,如果为all和index说明执行了全表扫描extra中如果出现using filesort 和 using temporary 则可能因为排序和或者使用临时表导致SQL性能差,使用using index(覆盖索引) 或者 using index conditon(索引下推)来提高性能。优化索引索引失效最左匹配索引:KEY `idx_shopid_orderno` (`shop_id`,`order_no`)SQL 语

2022-04-09 22:29:26 960

原创 fastJson深拷贝

在调用toJsonString时一定要指定打印类型信息(SerializerFeature.WriteClassName),否者反序列化时因没有具体类型导致信息丢失!比如:import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.serializer.SerializerFeature;import lombok.Data;import org.junit.jupiter.api.Test;/** * @author zhou

2022-03-29 21:49:03 1712 1

原创 抽象工厂模式

抽象产品类public interface AbstractProduct { /** * 返回产品名字 */ String getName();}抽象工厂类/** * 抽象工厂类 */public interface AbstractProductFactory { /** * 生产实例 */ AbstractProduct create(); /** * 动态返回工厂 */ static AbstractProductF

2022-03-28 22:10:21 215

原创 线上故障排查思路

思维导图MySQL 排查常用命令# 查询慢SQL查询是否开启show variables like 'slow_query_log';# 查询慢SQL的时间show variables like 'long_query_time';# 查看慢SQL存放路径,一般:/home/mysql/data3016/mysql/slow_query.logshow variables like 'slow_query_log_file';# 查看数据库的事务隔离级别,RDS:READ-COMMIT

2022-03-11 15:19:25 2232

原创 mybatis-plus select的坑

mybatis

2022-02-24 11:39:04 2970

原创 Stream 常用语法

flatMap 多个list/stream汇成一个steamList managerJobs = managerMap.values().stream().flatMap(Collection::stream).map(DocEmpInfoDO::getJob).collect(toList());

2021-09-24 17:26:00 239

原创 springboot 优雅停机

目前SpringBoot内置的四个嵌入式Web服务器(Jetty,Reactor Netty,Tomcat和Undertow)以及响应式和基于Servlet的Web应用程序都支持优雅关机。配置宽限期后,在关闭时,Web服务器将不再允许新请求(但是并不会立刻返回失败),并且将等待宽限期以使活动请求完成。Demo尝试1. SpringBoot版本大于2.3.0.RELEASE2. 在application.properties添加配置## 开启优雅停机, 如果不配置是默认IMMEDIATE,

2021-07-10 15:51:33 707 1

转载 Java 线程池的异常处理机制 错误使用submit导致异常被吞掉,导致UncaughtExceptionHandler不生效

一、前言线程池技术是服务器端开发中常用的技术。不论是直接还是间接,各种服务器端功能的执行总是离不开线程池的调度。关于线程池的各种文章,多数是关注任务的创建和执行方面,对于异常处理和任务取消(包括线程池关闭)关注的偏少。接下来,本文将从 Java 原生线程、两种主要线程池 ThreadPoolExecutor 和 ScheduledThreadPoolExecutor 这三方面介绍 Java 中线程的异常处理机制。二、Thread在谈线程池的异常处理之前,我们先来看 Java 中线程中的异常是如何被处

2021-05-25 15:04:24 4345

原创 spring ResponseBodyAdvice 消息转换器 消息转换失败

当Rest方法返回String类型响应时,如果ResponseAdvice对响应进行封装成对象则会报错!@Slf4j@RestControllerAdvicepublic class RestResponseBodyAdvice implements ResponseBodyAdvice<Object> { @Override public boolean supports(MethodParameter returnType, Class<? extends Htt

2021-05-19 17:27:27 1733 2

原创 BeanUtils getProperty的一个坑

背景介绍短信平台需要支持多种短信的发送,短信文案皆不相同,假设有以下类@Datapublic abstract class MsgBase { public static final String ALIBABA_GROUP = "阿里巴巴集团"; public static final String ANT_GROUP = "蚂蚁集团"; /** * 接收人手机号 */ private String receivePhone; /**

2020-12-24 13:27:51 2236

hbaes-core-adapter-2.2.4.jar

hbaes-core-adapter-2.2.4.jar

2024-07-30

HbaseGUI.zip

HbaseGUI.zip

2024-07-30

kettle-pack镜像

kettle-pack镜像,修改数据库名为kettle_pack,数据库配置在kettle-pack/tomcat/webapps/ROOT/WEB-INF/classes/config.properties,编辑后保存镜像

2023-05-06

starter demo

starter demo

2023-04-25

websocket聊天室源码

运行后直接访问localhost:8080,一个页面模拟一个客户端

2022-11-18

springboot优雅停机实战demo

springboot优雅停机实战demo

2022-03-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除