这一年我优化了一个46万行的超级系统
在2024年7月22日,作者河畔一角分享了他在这一年中优化一个46万行代码的超级系统的经历。他提到,这个系统经过了一年的优化,从基层做起,包括代码优化、组件封装、基础夯实、服务拆分和性能提升。这个过程让他感到非常充实,但也让他感到疲惫。
以下是一些相关的细节和背景信息:
代码优化:作者提到了对代码的优化,这通常包括重构代码、消除冗余、提高代
this.dataPTR = this.dataPTR.map(item1 => {
// 预先筛选和查找,避免在每个 map 调用中重复
const filteredList = resp.data.enrollChoosingDetailsAgencyList
.filter(obj => obj.seniorBatch !== 0 && obj.seniorBatch !== 99);
// 使用 forEach 并提前退出
item1.enrollChoosingSeniorRuleVoList.forEach((item, index) => {
filteredList.forEach((item2,index)=>{
if(item1.seniorBatch === item2.seniorBatch && item1.seniorSub ===item2.seniorSub){
item.enrollCode = item2.enrollCode;
item.enrollName = item2.enrollName;
}
})
});
// 返回新对象或原对象
return item1
});优化代码
优化 JavaScript 代码
避免重复筛选**:预先筛选 resp.data.enrollChoosingDetailsAgencyList 并存储结果,避免在 forEach 循环中重复筛选。
简化条件判断**:在 forEach 循环中,使用 find 或 some 方法代替嵌套的 forEach 来简
写一个算法将ScheduleJobLog字符串变成jobLog,js实现,也就是把之前的驼峰去掉
字符串转换算法
将字符串 ScheduleJobLog 转换为 jobLog.js 的算法可以通过以下步骤实现:
识别并去除驼峰:首先识别字符串中的大写字母,并将它们转换为小写。
添加文件扩展名:在转换后的字符串后添加 .js 扩展名。
具体实现步骤
要点一**:使用正则表达式匹配所有大写
<script lang="ts" setup> import { computed, ref } from 'vue' const search = ref('') const filterTableData = computed(() => tableData.filter( (data) => !search.value || data.name.toLowerCase().includes(search.value.toLowerCase()) ) ) const tableData: User[] = [ { date: '2016-05-03', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', } ] </script>改写成Vue3 setup形式
Vue 3 的 ` 语法糖提供了一种更简洁的方式来编写组件。以下是将给定的 Vue 2 代码改写为 Vue 3 ` 形式的示例:
import { ref, computed } from 'vue';
// 定义响应
this.dataPTR = this.dataPTR.map(item1 => {
const matchingItem = resp.data.enrollChoosingDetailsAgencyList
.filter(obj => obj.seniorBatch !==0 && obj.seniorBatch !==99 )
.find(item2 => item1.seniorBatch === item2.seniorBatch)
item1.enrollChoosingSeniorRuleVoList.forEach((item,index)=>{
if(item?.seniorSub === matchingItem?.seniorSub){
item.enrollCode = matchingItem.enrollCode
item.enrollName = matchingItem.enrollName
}
}) return matchingItem
? { ...item1, enrollCode: matchingItem.enrollCode, enrollName: matchingItem.enrollName }
: item1
})优化代码
优化 JavaScript 代码
避免重复查找**:在 map 函数中,对 resp.data.enrollChoosingDetailsAgencyList 的 filter 和 find 操作被执行多次,这可以优化以减少性能消耗。
提前退出循环**:在 forEach 循环中,一旦找到匹配项,可以中断循环,避免
0引用代码删减 java
在Java开发中,代码优化是一个持续的过程,旨在提高程序的性能和效率。以下是一些引用代码删减的技巧和建议,这些技巧可以帮助提升Java代码的运行效率:
指定final修饰符:尽量为类和方法指定final修饰符,这可以提高代码的运行效率。带有final修饰符的类是不可派生的,这有助于JVM内部优化。
使用Lambda表达式:Ja
下面代码是否有问题,如何优化
for (let i = 0; i < sortedNodes.length; i++) {
const nodeData = sortedNodes[i].getData();
let newData=JSON.parse(JSON.stringify(nodeData))
newData.status='running'
sortedNodes[i].setData(newData)
setTimeout(()=>{
if (nodeData.label === '傅里叶变换' && nodeData.cypl === '') {
newData.status='failed'
sortedNodes[i].setData(newData)
setNodeAttributes(sortedNodes[i], '#fad5d5', '#faa1a1');
ElMessageBox.confirm(
'傅里叶变换参数配置错误,请检查!',
'错误',
{
confirmButtonText: '确定',
type: 'error',
showCancelButton: false,
}
);
}else {
newData.status='success'
sortedNodes[i].setData(newData)
setNodeAttributes(sortedNodes[i], '#d0ffe4', '#c0fdb2');
}
},1000)
}
代码存在回调地狱问题,可优化为使用Promise或async/await。
异步问题优化
避免回调地狱**:当前代码中使用了嵌套的setTimeout,形成了回调地狱,难以维护和扩展。
使用Promise**:可以将异步操作封装成Promise,通过链式调用.then()和.catch()来处理不同情况
input("a=")
input("b=")
input("c=")在python中如何优化
input("a="), input("b="), input("c=") 在 Python 中的优化可以通过以下几个方面实现:
类型转换:由于 input() 函数默认返回字符串类型,直接进行算术运算会导致 TypeError。因此,可以在读取输入后立即进行类型转换。例如,可以使用 int(input("a="))、`int(input