系统性能优化
一、概述
性能优化的目标
:是提高系统或应用程序的响应时间、吞吐量、cpu、内存、磁盘IO、网络、流量、JVM、Tomcat、DB
等方面的性能指标。
性能优化需要有一些技巧
:对于整个产品或项目而言,比如可以从前端优化、后端优化、架构优化、高并发优化、Linux内核优化、常用中间件优化等方便去优化,当然每个方面侧重点不同,用的技术点也不同。
当然除了上述从技巧方面做优化,我们也必须通过使用性能测试工具进行性能基准测试,并根据测试结果进行有针对性的优化。注意的是,性能优化需要结合具体的应用场景和问题进行分析和调整,避免过度优化和过早优化。
二、技术优化之中间件优化
-
Easticsearch
性能优化包括:硬件优化(CPU、内存和磁盘空间,SSD硬盘可提高性能)、合理设置分片数量和副本数量、索引设计(选择合适的数据类型,避免过度索引字段。合理设置分词器和分析器,以便正确地处理文本数据)、查询优化(使用过滤器而不是查询来提高性能。缓存常用查询结果,避免重复计算)、合理的master节点数量、清晰的节点职能(master、data、coordinator)、冷热数据分离、JVM调优(调整JVM堆大小、垃圾回收器等参数、JDK升级)、集群拆分、ES参数优化(refresh_interval、thread_pool、cache、file descriptors、swap)、网络优化、日志管理等。具体的优化策略还需根据实际应用场景和需求进行调整和优化。 -
Kafka
性能优化包括:参数优化、合理的分区数量和副本数量、消息生产者优化(批量发送消息、异步发送、重试机制等)、消息消费者优化(调整消费者的并发度、使用多线程消费、增加缓存大小等方式)、消息压缩、监控和调优(消息延迟、消费者位移、磁盘使用率等)。 -
Mysql
性能优化包括:索引优化、读写分离、分库分表、查询优化、数据库深度分页,参数优化、硬件优化等。
-
Redis
性能优化包括:合理的数据结构(string、hash、list、set、zset)、合理的持久化存储(RDB、AOF)、合理的参数配置(最大客户端连接数、最大内存使用量等)、设置合理的过期时间、避免大key、合理的回收策略、热key处理、缓存穿透、缓存击穿、缓存雪崩等。
三、技术优化之高并发优化
-
缓存优化
:缓存是提高系统性能的重要手段之一,可以采用本地缓存、分布式缓存、堆外缓存等技术来提高系统的并发处理能力和响应速度。本地缓存即JVM缓存,注意堆内存的合理设置以及防止出现堆内存溢出和堆内存泄露,分布式缓存如redis缓存等。注意,在选择缓存技术时需要考虑多种因素,如数据量、访问频率、数据更新的频率、缓存一致性等,同时也需要根据实际情况进行性能测试和优化。 -
消息队列
:消息队列是一种异步通信机制,可以将任务的执行和结果的返回分离开来,从而提高系统的并发处理能力和可靠性。 -
限流
:限流是一种重要的高并发优化手段,可以有效控制系统的并发访问量,保护系统免受过载的影响。比如令牌桶算法、漏桶算法、计数器限流、基于时间窗口的限流、分布式限流(基于redis或zookeeper的分布式令牌桶算法实现的全局的限流控制)、服务网关限流(如阿里的Sentinel)、弹性限流(根据系统实际负载和资源状况动态调整限流策略,实现限流的弹性和自适应性)。以上是一些常见的限流策略和技术,限流可以有效避免系统因过载而崩溃,保障系统的稳定性和可靠性。在实际应用中,需要根据系统的特点和需求选择合适的限流策略,并进行合理的配置和调优。 -
熔断
:是一种用于高并发优化的重要机制,它可以提高系统的容错性和稳定性。当系统的某个服务出现故障或不可用时,熔断机制会暂时中断对该服务的请求,避免将故障传递给其他组件,从而保护整个系统的可用性。 -
降级
:是一种在高并发环境下优化系统性能和提高可用性的常用策略。通过降低系统的某些功能或服务的负载,可以减轻系统压力,避免系统崩溃或过载。如服务降级、数据降级、异步处理、限制资源使用、容错处理、负载均衡等。 -
静态化
:是一种常见的优化技术,可以有效降低系统的负载和提高性能,特别适用于高并发场景。静态化的核心思想是将动态生成的内容转化为静态文件,并直接返回给用户,从而减少服务器的计算和数据库的访问。在高并发方便可以从页面静态化、数据静态化、CDN缓存、静态资源优化等方面优化。需要注意的是,静态化对于某些动态内容或频繁变化的数据可能不适用,需要根据实际情况进行评估和选择。同时,静态化也需要考虑缓存更新、文件同步、页面动态交互等问题,以保证系统的稳定性和可用性。 -
拆分
:高并发优化中,拆分是一种常用的策略,可以将系统拆分为多个独立的模块或服务,从而提高系统的可扩展性、并行处理能力和容错性。可以从功能拆分、数据库拆分、服务拆分、缓存拆分、请求拆分等几个方面优化。同时在进行拆分优化时需要考虑监控与调优、异常处理与容灾、部署与运维及相应的测试和压测。
四、技术优化之后端优化
-
jvm优化
:
1、堆内存调优
2、垃圾回收器选择和调优
3、线程堆栈大小调优
4、调整年轻代和老年代的比例
5、设置Survivor区比例
6、启用GC日志和调试
7、设置最大停顿时间目标
8、启用类数据共享
9、调整大对象直接进入老年代的阈值
10、调整GC日志文件的回滚和大小限制
11、配置线程局部分配缓冲(TLAB)
12、使用并行垃圾回收器
-
池化技术
:池化技术是常用的一种优化方法,主要用于减少对象、内存等资源的重复创建和销毁,从而提高程序的性能和效率。常见的池化技术包括对象池、线程池、内存池、连接池及文件池等。不过需要注意池大小的配置、内存泄漏的问题和并发访问的竞争等问题。 -
批量操作
:批量操作是指一次性处理多个数据或任务的操作。它可以提高程序的效率和性能,减少代码的复杂性,并且可以避免频繁的单个操作。比如批量增删改、批量文件操作、批量网络请批量数据处理等。需要注意的是合理的批量操作大小、合理的数据结构、合理的异常处理来保证操作的稳定性和可靠性。 -
异步处理
:异步处理是一种编程模式,通过将任务提交给异步执行的机制,可以在任务执行的同时继续执行其他操作,提高程序的并发性和响应性。常见的异步处理方式有异步IO操作、异步回调/事件驱动、多线程/多进程异步处理、消息队列等。 -
并发处理
:并发处理是指在同一时间段内同时执行多个任务的能力。它可以提高程序的效率和性能,充分利用计算资源,并减少用户等待时间。可以使用多线程、多进程等。 -
网络IO优化
:网络IO是指在计算机网络中进行输入和输出操作的过程。它涉及到数据的发送和接收,以及与网络通信相关的操作。常见的操作有数据发送、数据接收。实现方式有同步阻塞IO(BIO)、同步非阻塞IO(NIO)及异步IO(AIO)。可以从减少网络IO次数(比如前面提到的批处理、批请求等方式)、减少网络IO等待时间(异步IO或者多线程并发处理)、优化网络传输效率(比如压缩数据、使用更高效的网络协议或优化带宽等)及优化网络连接管理(复用连接、限制同时连接数量等方式)等方面优化。 -
锁优化
:减少锁粒度、使用读写锁、使用无锁结构(CAS)、使用分段锁、避免锁嵌套等。 -
数据预加载:数据预加载策略,顾名思义就是提前把部分要用到的数据,初始化到缓存。
项目启动执行方法:
可以通过实现ApplicationRunner接口中的run方法,实现启动时执行。方法执行时,项目已经初始化完毕,是可以正常提供服务
public class DataInitUtil implements ApplicationRunner{@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println("在项目启动时,会执行这个方法中的代码");}
}
-
使用注解@PostConstruct,需要在项目执行之前执行一些方法,就在目标方法上添加该注解, 存在问题:若执行方法耗时过长,会导致项目在方法执行期间无法提供服务。
-
实现CommandLineRunner接口 然后在run方法里面调用需要调用的方法即可, 可以通过java -jar demo.jar arg1传参;
-
实现ApplicationListener接口
@Component
public class ApplicationListenerImpl implements ApplicationListener<ApplicationStartedEvent> {@Overridepublic void onApplicationEvent(ApplicationStartedEvent event) {System.out.println("listener");}
}
总结:
- 注解方式@PostConstruct 始终最先执行
- 如果监听的是ApplicationStartedEvent 事件,则一定会在CommandLineRunner和ApplicationRunner 之前执行;
- 如果监听的是ApplicationReadyEvent 事件,则一定会在CommandLineRunner和ApplicationRunner 之后执行;
- CommandLineRunner和ApplicationRunner 默认是ApplicationRunner先执行,如果双方指定了@Order 则按照@Order的大小顺序执行,小的先执行。
10. 时间回调:
- 如果你调用一个系统B的接口,但是它处理业务逻辑,耗时需要10s甚至更多。然后你是一直阻塞等待,直到系统B的下游接口返回,再继续你的下一步操作吗?这样显然不合理。
- 我们可以采用事件回调机制,即我们不用阻塞等待系统B的接口,而是先去做别的操作。等系统B的接口处理完,通过事件回调通知,我们接口收到通知再进行对应的业务操作即可。如IO多路复用模型实现。
11. 串行改并行
可以使用CompletableFuture 并行调用提高性能,类似也可以使用多线程处理。
12. 数据暂存文件
如果接口耗时瓶颈就在数据库插入操作这里,用批量操作等策略,效果还不理想,就可以考虑用文件或者消息队列、redis等暂存。有时候批量数据放到文件,会比插入数据库效率更高。该策略的主要思想:就是在大数据量时,将业务数据写入文件中,再通过异步的方式去消费文件中的数据,执行对应的业务逻辑,减少数据库DB的瞬时压力。
13.避免长事务
- 长事务在DB服务端的表现是session持续时间长;
- 期间可能伴随cpu、内存升高,严重者可导致DB服务端整体响应缓慢,导致在线应用无法使用;
- 所以在线高并发业务中应该尽量避免长事务的发生。产生长事务的原因,除了sql本身可能存在问题外,和应用层的事务控制逻辑也有很大的关系。
如何避免长事务问题:
- RPC远程调用不要放到事务里面;
- 一些查询相关的操作,尽量放到事务之外;
- 事务中避免处理太多数据;
- 并发场景下,尽量避免使用@Transactional注解声明式事务粒度太大,使用TransactionTemplate的编程式事务灵活控制事务的范围。
五、技术优化之架构优化
-
技术选型
:技术选型要从是否满足业务需求、系统稳定性、性能及技术社区的成熟度等方面综合考虑。 -
空间换时间
:比如可以采用一些缓存、预计算及冗余等空间换时间的操作。 -
分布式
:高并发、高扩展、容错、集群化等手段。 -
云原生
:容器化、自动运维、弹性伸缩、微服务等。 -
微服务
:可以做到服务单一化、高扩展性且灵活。
相关文章:
系统性能优化
一、概述 性能优化的目标:是提高系统或应用程序的响应时间、吞吐量、cpu、内存、磁盘IO、网络、流量、JVM、Tomcat、DB等方面的性能指标。 性能优化需要有一些技巧:对于整个产品或项目而言,比如可以从前端优化、后端优化、架构优化、高并发…...
golang操作sqlite3加速本地结构化数据查询
目录 摘要Sqlite3SQLite 命令SQLite 语法SQLite 数据类型列亲和类型——优先选择机制 SQLite 创建数据库SQLite 附加数据库SQLite 分离数据库 SQLite 创建表SQLite 删除表 SQLite Insert 语句SQLite Select 语句SQLite 运算符SQLite 算术运算符SQLite 比较运算符SQLite 逻辑运算…...
【NebulaGraph】mac通过Docker安装以及官方查询示例、以及索引详解还有数据构建案例(五)
【NebulaGraph】mac通过Docker安装以及官方查询示例 1. Docker安装NebulaGraph2. 官方查询示例3. Nebula Graph 的 Java 数据解析实践与指导4. 从零到一:如何构建一个企业股权图谱系统?5. Nebula Graph 索引详解6. nGQL 执行计划详解与调优7. 图数据库的…...
【一本通】家庭作业(贪心算法)
【一本通】家庭作业 C语言代码 💐The Begin💐点点关注,收藏不迷路💐 老师在开学第一天就把所有作业都布置了,每个作业如果在规定的时间内交上来的话才有学分。每个作业的截止日期和学分可能是不同的。例如如果一个作业…...
Kylin麒麟操作系统 | 网络链路聚合配置(team和bond)
目录 一、理论储备1. 链路聚合 二、任务实施1. team模式2. bond模式 一、理论储备 1. 链路聚合 链路聚合是指将多个物理端口捆绑在一起,形成一个逻辑端口,以实现出/入流量在各成员端口中的负载分担。链路聚合在增加链路带宽、实现链路传输弹性和冗余等…...
2024年软件测试面试题大全【含答案】
一、面试基础题 简述测试流程: 1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例(等价类划分法、边界值分析法等)。 5、用例评审(…...
Stable Diffusion 提示词语法
1.提示词基础 1.提示词之间用英文逗号,分隔 2.提示词之间是可以换行的 3.权重默认为1,越靠前权重越高 4.数量控制在75个单位以内 2.提示词各种符号的意义 2.1 ()、[]、{}符号 权重值()小括号[]中括号{}大括号默认1111层()1.1[]0.9{}1.052层(()) 1.121.21[[]]0.920.81{{}}1.…...
Y20030004基于asp.net+Sql的环保网站的设计与实现(附源码 调试 文档)
环保网站的设计与实现 1.摘要要2. 系统功能3.功能结构图4.界面展示5.源码获取 1.摘要要 近几年国家对于环境管理是高度重视,尤其是对于环境生态的破坏与环境污染,已经严重影响到人类的生存和发展。为了使生态环境能够得到保护和改善,持续发展…...
OpenCV的简单练习
1、读取一张彩色图像并将其转换为灰度图。 import matplotlib.pyplot as pltimg plt.imread("./flower.png") # 灰度化 img_gray img[:,:,0]*0.299 img[:,:,1]*0.587 img[:,:,2]*0.114plt.subplot(121) plt.imshow(img) plt.subplot(122) plt.imshow(img_gray,c…...
VS2019中无法跳转定义_其中之一情况
我习惯了使用VS2019看stm的代码; 遇到的问题,在导入代码后,发现有些函数调用不能跳转到定义; 问题描述步骤 1、导入代码 2、跳转,无法跳转 1、中文路径 2、删除.vs文件 和网上查的都没办法解决 最后发现是VS不支持 …...
虚幻5描边轮廓材质
很多游戏内都有这种描边效果,挺实用也挺好看的,简单复刻一下 效果演示: Linethickness可以控制轮廓线条的粗细 这样连完,然后放到网格体细节的覆层材质上即可 可以自己更改粗细大小和颜色...
【C语言】多线程服务器
多线程服务器 多线程服务器步骤代码 多线程服务器 步骤 主线程创建子线程,用子线程和客户端通信。 步骤: 1.使用socket函数,获取一个socket文件描述符 2.使用setsockopt端口复用 3.使用bind函数允许客户端的哪些ip可以访问服务器 4.使用lis…...
跨平台轻量级RTSP技术设计和使用场景探讨
设计背景 跨平台内网超低延迟直播的创新引擎 为满足安防视频监控、教育培训、工业生产、医疗健康、智能物联网等内网超低延迟需求,避免让用户配置单独的服务器,大牛直播SDK在推送端发布了跨平台(Windows|Linux(含x86_64|aarch64…...
分解质因数
题目描述 给定 n个正整数a,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。 输入格式 第一行包含整数 n。 接下来 n行,每行包含一个正整数 a。 输出格式 对于每个正整数 aiai,按照从小到大的顺…...
wordpress建站--如何用Let‘s Encrypt给网站添加免费ssl证书,支持https访问
本文首发网站:https://www.click234.com 默认情况下我们的网站是http访问,为了增加访问安全性,我们需要添加ssl证书,支持采用https方式访问,今天我们来看下怎么创建免费的ssl证书--Lets Encrypt 使用 Certbot 自动化工…...
web实操7——ServletContext
概念 和服务器通信 功能 解释说明: mime:互联网中一种文件的类型,可以用servletContext对象来获取。 域对象:用来共享数据,里面有一些get,set,removeAttribute,只要搞清楚ServletContext对象的域的范围是什么 如何…...
Android中bindService和startService启动服务有何区别
Android中bindService和startService启动服务有何区别 bindService 和 startService 是 Android 中两种用于与 Service 交互的方式,它们的区别主要在于 生命周期管理 和 使用场景。以下是详细对比: 1. bindService方式 bindService 是一种绑定方式&am…...
Jupyter Notebook 切换虚拟环境
方法 切换到需要添加到Jupyter Notebook中的虚拟环境,执行: python -m ipykernel install --name Jupyter Notebook中显示的虚拟环境名称如果遇到 [Errno 13] Permission denied: /usr/local/share/jupyter类似的权限问题,可能是没有对应的…...
短波红外相机
短波红外相机搭载采用 SenSWIR 技术的 Sony 高灵敏度传感器,能捕获到400nm~1700nm范围的可见光-短波红外宽波段图像信息,该相机可替代传统的“可见光相机短波红外相机”双相机检测方案,降低系统成本、提高处理速度、扩大检测范围,…...
余弦相似度Cosine Sim
what 余弦相似度是一种用于度量向量相似性的metric。 c o s θ A . B ∣ A ∣ . ∣ B ∣ cos\theta \frac{A.B}{|A|.|B|} cosθ∣A∣.∣B∣A.B A.B:向量的内积|A|:向量的模长 c o s θ cos\theta cosθ:的范围$ [ -1 , 1 ] $ why 余弦…...
【从零开始的LeetCode-算法】1338. 数组大小减半
给你一个整数数组 arr。你可以从中选出一个整数集合,并删除这些整数在数组中的每次出现。 返回 至少 能删除数组中的一半整数的整数集合的最小大小。 示例 1: 输入:arr [3,3,3,3,5,5,5,2,2,7] 输出:2 解释:选择 {3,7…...
测试工程师八股文05|功能测试、业务测试
一、基础概念 1、软件测试分类 1️⃣按照软件产生的阶段划分 单元测试:针对程序源代码进行测试【开发自测】集成测试:针对模块之间功能交互进行测试系统测试:对整个系统(功能、非功能)进行全面测试验收测试ÿ…...
【电源专题】开关转换器使能(EN)和欠压锁定(UVLO)为什么需要回滞?
在文章:【电源专题】案例:芯片规格书使能定义高电平最小阈值1.4V,那真的是到1.4V时才开始输出?_芯片的电流阀值-CSDN博客中我们提到一般来说开关转换器的使能脚是有一个回滞的,比如下图所示的芯片规格书...
TS的类型守卫、类型约束实践
类型守卫 // 基础类型判断 const arr [30, 50] console.log(typeof arr) // object const set new Set(arr) console.log(typeof set) // object const map new Map() console.log(typeof map) // objectclass Customer {constructor() {}buy(method:string) {console.log(…...
Thread线程基础使用
多线程目的:其实就是希望“并行”执行多任务,提升效率。 单核多线程基于时间片轮询 并发而非并行 线程最大数等于cpu核心数为佳 namespace thinger.ThreadDemo {class Program{//主线程static void Main(string[] args){Console.WriteLine("这个…...
番外篇 | BGF-YOLO:引入双层路由注意力、广义特征金字塔网络和第四检测头,提高YOLOv8检测性能
前言:Hello大家好,我是小哥谈。本文提出了一种名为BGF-YOLO的新模型,通过引入双层路由注意力、广义特征金字塔网络和第四检测头,提高YOLOv8在脑肿瘤检测中的性能,采用多层特征融合与动态稀疏注意机制以减少特征冗余。 🌈 目录 🚀1.基础概念 🚀2.网络结构 �…...
15-从 TypeScript 到 ArkTS 的适配规则(5)
15-从 TypeScript 到 ArkTS 的适配规则(5) 不支持确定赋值断言 **规则:**arkts-no-definite-assignment 级别:警告 ArkTS不支持确定赋值断言,例如:let v!: T。改为在声明变量的同时为变量赋值。 TypeS…...
UniApp配置使用原子化tailwindcss
参考视频 创建项目 新建项目选择uniapp - vue版本这里我选择3 - 点击创建即可 创建完成后,如果是要编译到小程序的项目则可以先将项目运行到小程序打开了 初始化package.json 执行 npm init -y安装和配置 安装 npm i -D tailwindcss postcss autoprefixer # 安…...
魅族手机刷官方系统
从魅族官网下载固件 https://flyme.cn/firmware.html 找到自己的型号,里面有历史版本、最新版,按照需求下载。 下载的是update.zip,改名就不能升级了 方法1 直接点击下载的update.zip包就可以升级。 方法2 将文件移动到文件管理的根目录&a…...
【欧几里得算法以及扩展欧几里得算法】
欧几里得算法 假设有两个非负整数 a , b a,b a,b,并且 a , b a,b a,b都不等于0,那么 a , b a,b a,b的最大公约数等于其中较小的数和 a , b a,b a,b相除的余数的最大公约数。 用公式表达为 g c d ( a , b ) g c d ( b , a ( m o d b ) ) gcd(a,b)gcd(b,a\pmod{b})…...
CentOS7 Apache安装踩坑
Gnome桌面右键弹出终端。 [rootlocalhost ~]# yum repolist 已加载插件:fastestmirror, langpacks /var/run/yum.pid 已被锁定,PID 为 2611 的另一个程序正在运行。 Another app is currently holding the yum lock; waiting for it to exit... [root…...
c#基于tcp的打印机共享程序可以打印图片
c sharp 基于tcp共享图片打印程序: 基于c#的tcp打印服务程序https://gitee.com/paoxi/tcpprint代码已经开源 执行文件在下方 tcp打印发送端 庖犠/c sharp 基于tcp共享图片打印程序 - Gitee.comhttps://gitee.com/paoxi/tcpprint/releases/tag/0.9...
二分查找算法
目录 1.二分查找 2.在排序数组中查找元素的第一个和最后一个位置 2.1题目解析 2.2算法原理 2.3编写代码 3.x的平方根 3.1题目解析 3.2算法原理 3.3编写代码 4.搜索插入位置 4.1题目解析 4.2算法原理 4.3编写代码 5.山脉数组的峰顶索引 5.1题目解析 5.2算法原理 …...
【Python技术】同花顺wencai涨停分析基础上增加连板分析
周末,有读者加我, 说 之前的涨停分析 是否可以增加连板分析。 这个可以加上。 先看效果 这里附上完整代码: import streamlit as st import pywencai import pandas as pd from datetime import datetime, timedelta import plotly.graph_o…...
多线程的知识总结(8):用 thread 类 或全局 async (...) 函数,创建新线程时,谁才是在新线程里第一个被执行的函数
(40)用 thread 类 或全局 async (…) 函数,创建新线程时,谁才是在新线程里第一个被执行的函数? 弄清楚这个问题,有利于推测和理解线程中代码的执行流程。根据 thread 类 和 async (…࿰…...
mp4影像和m4a音频无损合成视频方法
第一步:复制高清视频地址 url 第二步:打开网址粘贴复制的视频url视频下载 第三步:下载-影像.mp4和-音频.m4a 第四步:合并视频; 使用ffmpeg进行无损合成(如果没有安装ffmpeg请自行下载安装下载 FFmpeg (p2hp.com)&…...
CEF 数据加密与网络安全
随着网络攻击的日益猖獗,确保应用的安全性已经成为开发者的首要任务。特别是在现代Web应用中,如何确保数据的加密存储、网络通信的安全性以及有效的认证机制成为至关重要的问题。对于基于 Chromium Embedded Framework (CEF) 的应用,开发者必…...
【Linux学习】十五、Linux/CentOS 7 用户和组管理
Linux下组和用户的管理都必须是root用户下进行: 一、组的管理 1.组的创建 格式: groupadd 组名参数: -g:指定用户组的组ID(GID),如果不提供则由系统自动分配。 【案例】创建一个名为 oldg…...
C语言实现图片文件的复制
在C语言中,直接处理图片文件(如JPEG、PNG等)的复制,通常涉及到文件I/O操作。这些图片文件是二进制文件,因此需要使用二进制模式读取和写入文件。 图片文件复制代码: #include <stdio.h> #include&l…...
噪杂环境(房车改装市场)离线语音通断器模块
一直在坚持,却很难有机会上热门,在现在这个以流量为导向的时代,貌似很难靠所谓的坚守和热爱把产品成功的推向市场了。目前的客户仍然是以老客户为主,应用场景主要是房车改装,根据九客户的需求定制化一些模块。因为没有…...
网络安全知识点
第一章 网络安全概述 1.2.1 网络安全概念P4 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。 1.2.3 网络安全的种类P5 (1…...
QT<32>软件子页面最小化后再次点击置顶显示
一、前言 在 Qt 中,当一个窗口被最小化后,再次点击恢复它时,默认情况下,窗口恢复的方式可能并不总是显示在最顶层。这通常是因为窗口恢复后会被置于操作系统的默认层次结构中,而不是直接处于最上层。为了确保恢复后的窗…...
TCP 数据传输的拆包和粘包了解吗?
前言: 上一篇我们了解了什么是 TCP 协议,以及 TCP 协议 3 次握手 4次挥手的原因,本篇来分享一下 TCP 数据的传输过程的拆包和粘包,以及 TCP 数据传输过程中的一些细节。 计算机网络往期文章 TCP 为什么是 3 次握手 4 次挥手&am…...
Ubuntu常用自救方案
一、开机进入终端界面 莫名其妙进入终端界面了且死活出不来,原因可能是下载了些不该下的,或者卸载了些不能卸的。 万一真是这样可以尝试以下方法: 1.安装图形界面 第一行必安,2、3没试过 sudo apt-get install ubuntu-desktop …...
决策曲线分析(DCA)中平均净阈值用于评价模型算法(R自定义函数)
决策曲线分析(DCA)中平均净阈值用于评价模型算法 DCA分析虽然不强调用来评价模型算法或者变量组合的优劣,但是实际应用过程中感觉DCA曲线的走势和模型的效能具有良好的一致性,其实这种一致性也可以找到内在的联系,比如…...
【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut、QT)第三期
🍺三维数字地球系列相关文章如下🍺:1【小沐学GIS】基于C绘制三维数字地球Earth(456:OpenGL、glfw、glut)第一期2【小沐学GIS】基于C绘制三维数字地球Earth(456:OpenGL、glfw、glut)第二期3【小沐…...
回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测
回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效…...
深度解析相对路径、绝对路径与URL映射策略、MVC架构
一、相对路径与绝对路径的概念与应用 路径管理是Web开发中的核心概念之一。理解不同类型的路径如何影响文件和资源的访问对于确保代码的灵活性、可维护性和可移植性至关重要。 1. 相对路径 相对路径是指相对于当前文件或目录的位置来指定目标资源的路径。它不依赖于绝对的服…...
clipboard----封装复制组件
Clipboard.js 是一个轻量级的 JavaScript 库,旨在帮助开发者轻松地实现将文本复制到剪贴板的功能。它不依赖 Flash 或其他外部库,并且提供了一种简单的方式来响应用户的复制行为。Clipboard.js 支持绑定到任何元素(如按钮、图片等)…...
vue 中数据改变后,组件不更新
vue 中数据改变后,组件不更新 1.1. 确认响应式 1.2. 使用计算属性或侦听器 1.3. 检查异步更新队列 1.4. 手动触发更新 1.5. 检查数据绑定 1.6. 避免直接修改数组 1.7. 使用 Vue.set 或 this.$set 1.8. 检查作用域问题 1.9. 使用 Vue DevTools vue 中数据改变后&…...