智能BI项目技术点总结

上传文件的安全性设计

文件大小:小于20MB
文件后缀:是否满足.xlsx
文件内容:(成本要高一些)
文件的合规性:比如敏感内容,建议用第三方的审核功能。
扩展点:接入腾讯云的图片万象数据审核(COS对象存储的审核功能)

文件大小通过springboot自带的文件大小限制配置即可完成。
文件后缀,不仅要满足使用截取后缀的方法来检查,还要通过检查文件的MIME类型,最后仍然要通过检验文件的内容来检查是否为符合的文件。、

分表设计

对于每个请求,都有数据表的字段,也就是用户请求分析数据所产生的图表数据是按照特定的echart类型返回的,所以这个字段的内容会很大。
随着请求数变大,就会令数据表非常的臃肿,会影响数据查询的效率。
根据这个问题,我将返回的表数据单独一个表进行存储。·

限流设计

使用Redisson的RateLimiter限制每个用户每秒只能访问两次,通过请求令牌的方式实现,用户令牌为:前缀+id,如果能够获得令牌则继续执行,不能抛异常。

限流的方法

固定窗口限流
在固定时间内,只允许固定的数量。
可能会出现流量突刺的问题。

滑动窗口限流
在滑动时间内,只允许固定的数量。
实现相对复杂,是限流效果与滑动单位有关,滑动单位越小,效果越好;但是很难选取适合的滑动单位。

漏桶限流
以固定的速率处理请求,当请求同满了之后,拒绝请求。
没有办法处理一批请求,只能一个一个按顺序来处理。

令牌桶限流
以固定的数据放令牌桶中添加令牌,每个令牌代表一定数量的请求,请求需要获取令牌后才能被处理,没有令牌的请求会被限流并拒绝。
还是存在时间单位选取的问题。

线程池

核心线程数
对于CPU密集型任务:CPU核数 + 1
对于I/O密集型任务:2*CPU核数
线程数 = CPU核心数 * (1 + 线程等待时间/线程运行的总时间)
具体情况也需要根据实际情况设置,对于非业务模块,也可以设置为0

最大线程数
通过压测进行测试,测试出一个边界值

线程存活时间
如果希望核心线程也在空闲的时候被回收,那么可以设置线程存活时间。

工作队列

SynchronousQueue
直接传递任务,不存储任何任务。
当核心线程满时,如果没有空闲线程将任务直接交给时,可能会立即触发拒绝策略。
适合需要尽快处理、严格控制最大并发数的时候。

LinkedBlockingQueue
基于链表的无界队列,可以无限制地添加任务,除非有容量限制。
适用于需要缓冲大量任务的情况。

ArrayBlockingQueue
基于数组的有界队列,需要在创建指定容量。
适用于需要限制队列大小以避免消耗过多内存的情况。

PriorityBlockingQueue
支持带优先级的任务队列,任务会按照优先级顺序执行。
适用于按优先级处理任务的情况。

DelayQueue
基于时间的延迟队列,只有当延迟时间过期后,任务才会被处理。
适用于需要延迟执行的任务。

拒绝策略
丢弃任务单不抛出异常
丢弃任务并抛出拒绝异常
由调用线程处理该任务
丢弃最早的未处理的任务,然后重新尝试提交任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/33032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SVM算法-人脸识别背后技术详解

引言 支持向量机(SVM)是一种强大的监督学习算法,广泛应用于分类和回归任务中。本文将详细介绍SVM算法在人脸识别任务中的应用,并通过代码示例来展示其背后的技术精髓。我们将分三大部分来展开,本部分将重点介绍SVM算法…

3个阶段和9个问题,择业和创业的核心!

从2023年下半年,接触了不少的创业者,他们对创业都是充满了热情。在很多创业者身上,看到的都是执行力,效率,对事业的专注。只要是说今天立即能搞定的事情,一定不会拖到明天。 去年佛山的张兄弟来找我的交流…

Graalvm尝鲜使用

面试时遇到大佬提点了下在性能不足的机器上传统优化JVM调优已经作用不大的背景下,采用graalvm进行打包成二进制文件,脱离java虚拟机,性能提升20%到100%,因此实操记录下来,方便后续使用 1、前置预装 graalvm-ce-java17…

mongoDB基本命令操作

文章目录 1. 安装(1). 启动mongodb(2). 数据库连接 2. 基本命令(1) 数据库操作(2) 集合操作(3) 文档操作1) 简单查询2) 条件查询3) 投影查询4) 文档更新5) 列值增长修改6) 删除文档7) 分页查询8) 排序查询9) 正则查询(模糊查询)10) 比较查询11) 包含查询 3. 索引(1) 执行计划 1…

Java基础的重点知识-06-String、Arrays、Math、static关键字

文章目录 String类(java.lang)static关键字Arrays类(java.uitl)Math类(java.lang) String类(java.lang) java.lang.String 类代表字符串。 特征: 字符串不变:字符串的值在创建后不能被更改。因为String对象是不可变的&#xff…

PIL实现图片是否可读

对图像数据进行清洗过程中,为了判断图像文件是否可读,可以调用PIL(Pillow)包的 Image 类。可以使用 Image 类的 open 方法,该方法会尝试打开图像文件并返回一个 Image 对象。如果文件不可读,该方法将抛出一…

RHEL 8下Oracle Database 23ai 安装与配置

前言 随着AI的加入,Oracle正式将Oracle23c改名为Oracle23ai,并且将次版本数据库作为一个长期支持的版本,也意味着Oracle数据库正式从Cloud进入AI时代,本文主要介绍Oracle Database 23ai Free的安装与配置。 安装方式 Oracle Da…

linux下进行epoll的简单使用

先做一个简单实例&#xff1a; #include <arpa/inet.h> #include <assert.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <sys/epoll.h> #include <sys/socket.h> #include <unistd.h>#includ…

C语言 | Leetcode C语言题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; #define MAXSIZE 769/* 选取一个质数即可 */ typedef struct Node {char string[101];int index;struct Node *next; //保存链表表头 } List;typedef struct {List *hashHead[MAXSIZE];//定义哈希数组的大小 } MyHashMap;List * …

代码随想录算法训练营day30|跳跃游戏、

55.跳跃游戏 这道题目的重点在于&#xff1a; 1.不管每次能跳多远&#xff0c;只管跳跃范围的覆盖范围&#xff0c;如果最后能覆盖到最后一个元素&#xff0c;则可以到达最后一个下标 2.覆盖的范围是随着i的遍历而不停增加的&#xff0c;相当于“骑驴找马”&#xff0c;每个数…

StackOverFlowError常见原因及解决方法总结

StackOverFlowError常见原因及解决方法总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨一下 Java 中一个常见的错误&#xff1a;StackOverFl…

使用自定义的shiro密码匹配器CredentialsMatcher完成密码验证

今天突然想研究一下shiro怎么匹配用户的密码。 我们使用shiro的API登录时&#xff0c;会先创建一个令牌对象&#xff0c;而经常用的令牌对象是UsernamePasswordToken&#xff0c;把用户输入的用户名和密码作为参数构建一个UsernamePasswordToken&#xff0c;然后通过Subject.l…

MM-LLM:CogVLM解读

在图文多模态模型中&#xff0c;范式是图像的编码器、文本编码器、模态融合器。也就是不同模态特征抽取加模态对齐。 这部分可以看李沐的精讲 在大模型里的范式在也是如此&#xff0c;目前的工作大部分都专注于怎么拉齐不同模态。 该论文的动机&#xff08;背景&#xff09;&…

nlp基础-文本预处理及循环神经网络

1 认识文本预处理 1 文本预处理及其作用 定义&#xff1a;文本送给模型之前&#xff0c;提前要做的工作 作用&#xff1a;指导模型超参数的选择 、提升模型的评估指标 举个例子&#xff1a; 思路常识&#xff0c;打造成 X Y关于Y&#xff1a;10分类标签是否均衡关于X&#xf…

代码随想录训练营Day44

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、零钱兑换二、完全平方数三、单词拆分 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 今天是跟着代码随想录刷题的第44天&#xff…

LeetCode:经典题之1491、896 题解与延伸

系列目录 88.合并两个有序数组 52.螺旋数组 567.字符串的排列 643.子数组最大平均数 150.逆波兰表达式 61.旋转链表 160.相交链表 83.删除排序链表中的重复元素 389.找不同 1491.去掉最低工资和最高工资后的工资平均值 896.单调序列 206.反转链表 92.反转链表II 141.环形链表 …

Oracle自动创建分区

一、需要分区的表 create table PARTITION_TABLE_INFO ( table_name VARCHAR2(500), comments VARCHAR2(500), enable VARCHAR2(500) default Y ) / comment on table PARTITION_TABLE_INFOis 分区维护表 / comment on column PARTITION_TABLE_INFO.table_name is …

Mybatis plus:Wrapper接口

一、介绍 MyBatis-Plus 提供了一套强大的条件构造器&#xff08;Wrapper&#xff09;&#xff0c;用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件&#xff0c;无需编写繁琐的 SQL 语句&#xff0c;从而提高开发效率并减少 SQL 注入的风险。 …

springCloud组件专题(四) --- sentinel

前言 限流&#xff0c;熔断降级概念 限流&#xff1a;顾名思义&#xff0c;就是对一个资源&#xff08;服务或者接口都可以算资源&#xff09;的访问进行限制。简单来说就是限制单位时间内允许资源被访问的次数。常见的算法就是令牌桶算法。 降级&#xff1a;降级其实是一种资源…

IBM IMM1服务器硬件监控指标解读

在复杂多变的IT环境中&#xff0c;服务器的稳定运行对于保障业务的连续性至关重要。IBM IMM1&#xff08;Integrated Management Module 1&#xff09;作为IBM服务器的一个重要组件&#xff0c;提供了强大的远程管理和监控功能。 监控易作为一款专业的IT基础设施监控软件&#…