开发性能优化+开发安全最大化

2024-06-11 11:52

本文主要是介绍开发性能优化+开发安全最大化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

性能优化

1.优化数据库访问

1.1索引

        在数据库表中为需要频繁查询的列创建索引,可以提高查询效率。实质(空间换时间):顺指针找到对应指定值的行,index_name:索引名;column_list:指定字段

        1.11INDEX普通索引

        语句:ALTER TABLE table_name ADD INDEX index_name (column_list)

        1.12UNIQUE 唯一索引

        语句:ALTER TABLE table_name ADD UNIQUE (column_list)        

        1.13PRIMARY KEY 索引

        语句:ALTER TABLE table_name ADD PRIMARY KEY (column_list)

注意点:

        1.只要列中包含有 NULL 值都将不会被包含在索引中,复合索引中只要有一列含有 NULL 值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL

        2.MySQL 查询只使用一个索引,因此如果 where 子句中已经使用了索引的话,那么 order by 中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用    

        3.在创建索引时,可以规定索引能否包含重复值。如果不包含,则索引应该创建为 PRIMARY KEY 或 UNIQUE 索引。

        4.对于单列唯一性索引,这保证单列不包含重复的值。对于多列唯一性索引,保证多个值的组合不重复。

        5.PRIMARY KEY 索引和 UNIQUE 索引非常类似。事实上,PRIMARY KEY 索引仅是一个具有名称 PRIMARY 的 UNIQUE 索引。这表示一个表只能包含一个 PRIMARY KEY,因为一个表中不可能具有两个同名的索引。

        6.在 where 从句,group by 从句,order by 从句,on 从句中虚线的列添加索引。索引字段越小越好(因为数据库数据存储单位是以“页”为单位的,数据存储的越多,IO 也会越大)。

        7.查询中与其它表关联的字段需要添加索引。

        8.对一些经常处理的业务表应在查询允许的情况下尽量减少索引。

        9.在 InnoDB 中,表都是根据主键顺序以索引的形式存放的,这种存储方式的表称为索引组织表。InnoDB 使用了 B+ 树索引模型,所以数据都是存储在 B+ 树中的。每一个索引在 InnoDB 里面对应一棵 B+ 树。在 InnoDB 里,主键索引(PRIMARY KEY)也被称为聚簇索引。非主键索引的叶子节点内容是主键的值。在 InnoDB 里,非主键索引也被称为二级索引。

        10.最左前缀原则是数据库查询优化中的一个重要概念,特别是在使用复合索引时。它要求在查询中使用的过滤条件必须从复合索引的最左边开始,并且不能跳过中间的列。
这意味着,如果有一个包含多个列的复合索引,如(A, B, C),那么查询条件中必须包含列A,并且可以包含列B和C,但不能只使用列C进行过滤,除非它是范围查询且需要单独建立索引。遵循这一原则的好处包括提高查询性能和减少索引占用的空间

1.2减少查询次数

        尽量合并多个查询语句,减少数据库的访问次数:读写分离

1.3使用缓存:将经常查询的数据缓存在内存中,减少对数据库的访问:

        (redis,mongdb,Memcached,sessionstorage,cookie,localstorage)

1.4消息中间件

2.优化代码逻辑

        2.1避免循环嵌套

        循环嵌套会消耗大量的CPU资源,尽量减少循环嵌套的使用。比如使用数据库函数

        2.2优化算法和数据结构

        选择适合问题的算法和数据结构,可以大大提高代码的执行效率。例如,使用哈希表代替数组进行查找操作,可以显著减少查找时间。

        2.3减少内存占用

        通过合理使用变量、释放不再需要的资源以及优化循环结构等方式,我们可以减少程序的内存占用,提高程序的稳定性

        2.4提取公共代码

        将重复的代码提取到公共函数或类中,减少代码的冗余度

        2.5简化复杂逻辑

        将复杂的逻辑拆分成多个简单的逻辑单元,使代码更加易于理解和维护

        2.6采用设计模式

        使用设计模式可以提高代码的可扩展性和可重用性,使代码更加健壮

3优化算法

        选择高效的算法可以减少计算量,提高代码的运行速度

4优化文件操作

        4.1缓存文件

        将经常使用的文件缓存在内存中,减少对文件的访问

        4.2减少文件系统操作

        尽量合并多个文件操作,减少文件系统的IO操作

        4.3使用异步操作

        对于需要长时间处理的任务,可以使用异步操作来避免阻塞主线程


5优化Web服务器

        5.1配置适当的缓存

         根据项目需求,配置适当的缓存策略可以提高Web服务器的响应速度

        5.2压缩和合并静态资源:

        对静态资源进行压缩和合并可以减少传输的数据量,提高网页的加载速度。    

        5.3使用缓存技术

        5.4使用缓存插件

        根据项目需求,选择适合的缓存插件可以显著提高PHP项目的性能。常见的缓存插件包括Redis、Memcached等

        5.5缓存查询结果

        将经常使用的查询结果缓存在内存中,减少对数据库的访问

        5.6缓存页面内容

        将经常访问的页面内容缓存在内存中,减少对文件的访问

        5.7负载均衡和水平扩展

        随着业务量的增长,单个服务器可能无法承受所有的请求。为了提高系统的可用性和可扩展性,可以使用负载均衡和水平扩展技术。以下是一些负载均衡和水平扩展的技巧

        5.8使用负载均衡器

        将请求分发到多个服务器上,提高系统的吞吐量和可扩展性。常见的负载均衡器包括Nginx、HAProxy等

        5.9水平扩展数据库

        将数据库水平扩展到多个节点上,提高数据库的处理能力。常见的水平扩展数据库解决方案包括MySQL Cluster、Redis Cluster等

        5.10水平扩展应用服务器

        将应用服务器水平扩展到多个节点上,提高系统的吞吐量和可扩展性。常见的水平扩展应用服务器解决方案包括PHP-FPM、FastCGI等

        5.11监控和日志记录

        监控和日志记录是PHP项目性能优化的重要环节之一。以下是一些监控和日志记录的技巧

        5.12使用监控工具

        选择适合的监控工具可以实时监控PHP项目的性能指标和系统资源的使用情况。常见的监控工具包括Zabbix、Nagios等

这篇关于开发性能优化+开发安全最大化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051098

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来