当前位置: 首页 > news >正文

【博客之星评选】2024年度前端学习总结

故事的开端...始于2024年第一篇前端技术博客 

 那故事的终末...也该结束于陪伴了我一整年的前端知识了

踏入 2025 年,满心激动与自豪,我成功闯进了《2024 年度 CSDN 博客之星总评选》的 TOP300。作为一名刚接触技术写作不久的萌新,这次能走到这一步,属实出乎意料,也备受激励。借着这次机会,与大家一起分享一下我这一年对于前端领域这一年的深度学习总结,技术工具与平台的年度使用心得。

目录

一、引言  

二、框架与库的演进

2.1 React

2.2 Vue

2.3 Angular

三、新特性与规范的发展

3.1 JavaScript新特性

3.2 CSS新特性

四、性能优化的新策略

4.1 代码优化

4.2 资源优化

4.3 网络优化

五、跨端与移动端技术的发展

5.1 跨端开发框架

5.2 移动端性能优化

六、技术工具与平台年度使用心得 

开发工具

代码托管与协作平台

前端测试工具

七、个人心得体会

技术成长

团队协作

未来展望


一、引言  

在过去一年,前端技术领域持续保持着高速发展的态势,新技术、新规范、新工具不断涌现。从构建用户界面的框架,到优化性能的策略,再到与后端交互的方式,都发生了深刻的变革。这不仅为前端开发者带来了更多的机遇,也带来了更大的挑战。

二、框架与库的演进

2.1 React

React在过去一年依然是前端开发的热门框架之一,其核心思想和理念得到了进一步的巩固和发展。

React 18引入了并发模式,这一特性显著提升了应用的响应性和用户体验。在处理复杂任务时,并发模式能够将任务切片,使得浏览器在执行任务的同时,还能及时响应用户的交互操作,避免了页面卡顿。例如,在一个大型数据展示项目中,通过使用React 18的并发模式,在数据加载和处理的过程中,用户依然可以流畅地进行页面滚动和元素点击操作。

同时,React Server Components(RSC)也在不断发展。RSC允许在服务器端渲染React组件,并且可以直接在服务器上获取数据,减少了客户端的数据请求量,从而提升了页面的加载速度。在一个电商项目中,使用RSC实现了商品详情页面的快速加载,用户无需等待数据从客户端请求,直接在服务器端获取并渲染,大大提高了用户的购物体验。

import React, { useState, useEffect } from'react';function LongRunningTask() {const [data, setData] = useState(null);useEffect(() => {const fetchData = async () => {// 模拟一个长时间运行的任务,比如网络请求await new Promise(resolve => setTimeout(resolve, 3000));setData('任务完成,这是数据');};// 使用React的并发模式特性,标记为可中断任务React.unstable_startTransition(() => {fetchData();});}, []);return (<div>{data? (<p>{data}</p>) : (<p>正在加载数据,请稍候...</p>)}</div>);
}export default LongRunningTask;

2.2 Vue

Vue 3在性能和功能上都有了显著的提升,成为了许多开发者的首选框架之一。

Vue 3的Composition API为开发者提供了更灵活的代码组织方式。与传统的Options API相比,Composition API能够将相关的逻辑代码聚合在一起,使得代码的可维护性和复用性大大提高。在一个企业级项目中,使用Composition API将用户权限管理、数据请求等相关逻辑封装成独立的函数,在不同的组件中可以方便地复用这些逻辑,减少了代码的重复。

此外,Vue 3的响应式系统也进行了全面升级,采用了Proxy代替Object.defineProperty,使得响应式数据的处理更加高效和灵活。在一个实时数据监控项目中,利用Vue 3的新响应式系统,能够快速地响应数据的变化,及时更新页面展示,为用户提供了更准确的实时数据。

<template><div><button @click="increment">点击增加计数</button><p>计数: {{ count }}</p></div>
</template><script setup>
import { ref } from 'vue';// 使用Composition API定义响应式数据和方法
const count = ref(0);
const increment = () => {count.value++;
};
</script>

2.3 Angular

Angular在企业级应用开发中一直占据着重要地位,这一年也在不断发展和完善。

Angular 14引入了一些新的特性,如独立组件和信号(Signals)。独立组件允许开发者在不依赖NgModule的情况下创建和使用组件,简化了组件的开发和使用流程。在一个大型项目中,使用独立组件减少了模块之间的依赖关系,提高了组件的可维护性。

// 独立组件定义
import { Component } from '@angular/core';@Component({selector: 'app-my - component',templateUrl: './my - component.html',styleUrls: ['./my - component.css']
})
export class MyComponent {message = '这是一个独立组件';
}

信号(Signals)则是Angular 14的一个重要新特性,它提供了一种更高效的状态管理方式。信号可以自动追踪数据的变化,并在数据变化时自动更新相关的视图,减少了手动触发更新的繁琐操作。在一个实时协作应用中,使用信号实现了多人实时编辑文档的功能,用户在编辑文档时,其他用户的页面能够实时同步更新。

三、新特性与规范的发展

3.1 JavaScript新特性

ES2022带来了一些实用的新特性,进一步提升了JavaScript的开发效率和功能。

类字段的公共实例字段和私有实例字段的正式标准化,使得类的封装性更好。在一个面向对象的项目中,使用私有实例字段可以有效地隐藏类的内部实现细节,保护数据的安全性。

Object.hasOwn方法的引入,提供了一种更可靠的方式来判断对象是否拥有某个自身属性,避免了在原型链上查找属性时可能出现的问题。在一个数据处理项目中,使用Object.hasOwn方法可以准确地判断对象是否包含某个自定义属性,提高了数据处理的准确性。

class User {// 公共实例字段name = '默认名字';// 私有实例字段#password = '123456';getPassword() {return this.#password;}
}const user = new User();
console.log(user.name);
// console.log(user.#password); // 报错,无法直接访问私有字段
console.log(user.getPassword());const obj = { key: 'value' };
console.log(Object.hasOwn(obj, 'key')); // true
console.log(Object.hasOwn(obj, 'nonexistentKey')); // false

3.2 CSS新特性

CSS也在不断发展,新的特性和规范为前端开发者提供了更多的设计和布局选择。

container queries(容器查询)是CSS的一个重要新特性,它允许开发者根据容器的大小来调整元素的样式,而不是像传统的媒体查询那样根据视口的大小来调整。在一个自适应布局的项目中,使用容器查询可以让元素在不同大小的容器中呈现出不同的布局和样式,提高了页面的灵活性和适应性。

scroll snapping(滚动捕捉)特性则为用户提供了更流畅的滚动体验。通过设置滚动捕捉点,用户在滚动页面时,元素会自动对齐到指定的位置,增强了页面的交互性和可用性。在一个图片展示项目中,使用滚动捕捉特性可以让用户在滚动图片列表时,图片能够自动对齐,方便用户查看和比较。

.container {width: 50%;/* 设置容器查询的条件 */container - type: inline - size;container - name: my - container;
}@container my - container (min - width: 600px) {p {font - size: 20px;}
}@container my - container (max - width: 600px) {p {font - size: 16px;}
}

四、性能优化的新策略

4.1 代码优化

代码优化是提升前端性能的基础。在过去一年,出现了一些新的代码优化策略和工具。

Tree Shaking技术得到了更广泛的应用和优化。Tree Shaking可以去除未使用的代码,减少打包后的文件体积。在一个大型JavaScript项目中,通过配置Webpack启用Tree Shaking,成功将打包后的文件体积减少了30%,大大提高了页面的加载速度。

同时,ESBuild等新一代的构建工具也逐渐崭露头角。ESBuild使用Go语言编写,具有极快的构建速度,比传统的Webpack构建速度快数倍。在一个快速迭代的项目中,使用ESBuild作为构建工具,显著缩短了构建时间,提高了开发效率。

4.2 资源优化

资源优化是提升前端性能的关键环节。在这一年,资源优化方面也有了一些新的进展。

图像优化方面,除了继续推广WebP格式图片外,还出现了一些新的图像压缩和优化工具。例如,ImageOptim可以在不损失图像质量的前提下,大幅压缩图像文件的大小。在一个图片密集型的项目中,使用ImageOptim对图片进行预处理,有效地减少了图片资源的加载时间,提升了页面的加载速度。

字体优化方面,通过使用@font-face规则和字体加载策略,可以更好地控制字体的加载和显示。例如,使用font-display: swap可以在字体加载过程中,先显示系统默认字体,字体加载完成后再切换,避免了字体闪烁的问题,提高了用户体验。

4.3 网络优化

网络优化对于提升前端性能也至关重要。在过去一年,网络优化方面有了一些新的技术和策略。

HTTP/3协议的逐渐普及,为前端应用带来了更快的网络传输速度。HTTP/3基于UDP协议,采用了QUIC协议来实现可靠传输,减少了连接建立的延迟和丢包重传的时间。在一个全球化的项目中,使用HTTP/3协议,使得不同地区的用户都能够快速地访问应用,提高了应用的可用性和用户满意度。

同时,服务端渲染(SSR)和静态站点生成(SSG)技术也得到了更广泛的应用。SSR可以在服务器端生成HTML页面,然后发送给客户端,减少了客户端的渲染时间。SSG则是在构建阶段生成静态HTML页面,适合内容更新不频繁的网站。在一个新闻资讯类项目中,使用SSG技术生成静态页面,大大提高了页面的加载速度和搜索引擎的友好性。

五、跨端与移动端技术的发展

5.1 跨端开发框架

跨端开发框架在过去一年得到了进一步的发展和完善,成为了许多开发者实现多平台应用开发的首选方案。

Flutter是一款由Google开发的跨端开发框架,使用Dart语言进行开发。Flutter采用了自绘引擎,能够在不同平台上实现高性能的渲染,提供了接近原生应用的用户体验。在一个跨平台的移动应用项目中,使用Flutter开发,实现了在iOS和Android平台上的快速部署和运行,并且保持了一致的界面风格和性能表现。

React Native也在不断发展,通过优化底层架构和性能,提升了应用的运行效率和稳定性。在一个电商移动应用中,使用React Native结合Native模块,实现了部分功能的原生调用,提高了应用的性能和用户体验。

5.2 移动端性能优化

移动端性能优化一直是前端开发的重点和难点。在过去一年,移动端性能优化方面有了一些新的策略和技术。

在移动设备上,由于硬件资源有限,优化内存使用和减少CPU占用尤为重要。通过使用内存分析工具,如Chrome DevTools的Memory面板,可以检测和优化应用的内存泄漏和内存占用过高的问题。在一个移动游戏项目中,通过使用Memory面板对游戏内存进行分析和优化,成功解决了游戏在长时间运行后出现的卡顿和闪退问题。

同时,优化移动网络请求也是提升移动端性能的关键。通过使用缓存策略、压缩数据传输、优化请求并发等技术,可以减少移动网络请求的次数和数据量,提高应用的响应速度。在一个移动社交应用中,通过设置合理的缓存策略,将常用的数据缓存到本地,减少了网络请求的次数,提高了应用的加载速度和用户体验。

六、技术工具与平台年度使用心得 

开发工具

VS Code 凭借其丰富的插件生态和强大的代码编辑功能,成为了前端开发的首选工具。例如,ESLint 插件可以实时检查代码规范,Prettier 插件则能自动格式化代码,保持代码风格的一致性。在团队开发中,这两个插件的配合使用,大大减少了代码风格相关的冲突。

Webpack 作为前端构建工具,在项目的打包和优化过程中起着核心作用。通过配置不同的 loader 和 plugin,可以实现对各种文件类型的处理,如将 Sass 转换为 CSS,压缩 JavaScript 和 CSS 文件等。在一个大型项目中,通过合理配置 Webpack 的代码拆分和缓存策略,使得项目的构建速度和运行性能都得到了显著提升。

代码托管与协作平台

GitHub 是全球最大的代码托管平台,它不仅提供了安全可靠的代码存储服务,还通过 Pull Request 和 Issue 等功能,极大地促进了团队成员之间的协作和代码审查。在一个开源项目中,通过 GitHub 的 Pull Request 机制,接收了来自世界各地开发者的贡献,共同完善了项目的功能。

前端测试工具

Jest 是一款由 Facebook 开发的 JavaScript 测试框架,它具有简洁的 API 和强大的断言库,能够轻松编写单元测试和集成测试。在一个 React 组件库的开发中,使用 Jest 和 React Testing Library 对组件进行了全面的测试,确保了组件在不同场景下的正确性和稳定性。

Cypress 则是一款新兴的前端自动化测试工具,它具有直观的界面和强大的调试功能,能够方便地进行端到端测试。在一个电商项目中,使用 Cypress 编写了一系列的用户行为测试用例,模拟用户在购物流程中的操作,确保了系统的稳定性和用户体验。

七、个人心得体会

技术成长

过去一年,在前端技术领域的不断学习和实践中,我深刻体会到技术的快速发展和更新换代。从新的框架特性到性能优化技巧,每一次的学习和应用都让我对前端开发有了更深入的理解。同时,通过参与开源项目和技术社区的交流,我不仅拓宽了技术视野,还结识了许多优秀的开发者,从他们身上学到了宝贵的经验和思维方式。

团队协作

在项目开发过程中,团队协作的重要性不言而喻。一个高效的团队需要良好的沟通、明确的分工和相互信任。在与团队成员合作的过程中,我学会了倾听他人的意见和建议,积极参与讨论和解决问题,共同推动项目的进展。同时,通过代码审查和技术分享,我也从团队成员身上学到了不同的编程风格和技巧,提升了自己的技术水平。

未来展望

展望未来,我将继续关注前端技术的发展趋势,深入学习新兴技术,如 WebAssembly、渐进式 Web 应用(PWA)等。同时,我也希望能够参与更多具有挑战性的项目,将所学知识应用到实际开发中,不断提升自己的技术能力和解决问题的能力。此外,我还计划在技术社区中更加活跃,分享自己的技术经验和心得,与更多的开发者共同成长。

总之,过去一年在前端领域的经历让我收获颇丰,也为未来的发展奠定了坚实的基础。我相信,在不断学习和实践的道路上,我将在前端开发领域取得更大的进步。

相关文章:

【博客之星评选】2024年度前端学习总结

故事的开端...始于2024年第一篇前端技术博客 那故事的终末...也该结束于陪伴了我一整年的前端知识了 踏入 2025 年&#xff0c;满心激动与自豪&#xff0c;我成功闯进了《2024 年度 CSDN 博客之星总评选》的 TOP300。作为一名刚接触技术写作不久的萌新&#xff0c;这次能走到这…...

将IDLE里面python环境pyqt5配置的vscode

首先安装pyqt5全套&#xff1a;pip install pyqt5-tools 打开Vscode&#xff1a; 安装第三方扩展&#xff1a;PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】&#xff0c;便可直接打开UI文件&#xff0c;进行编辑。 配置pyuic,如果下图填写方法使用…...

【专题三:穷举vs暴搜vs深搜vs回溯vs剪枝】46. 全排列

1.题目解析 2.讲解算法原理 1.首先画出决策树&#xff0c;越详细越好 2.设计代码 全局变量 List<List<Integer>> retList<Integer> pathboolean[] check dfs函数 仅关心某一节点在干什么 细节问题回溯 干掉path最后一个元素修改check权限 剪枝 check中为…...

使用傅里叶变换进行图像边缘检测

使用傅里叶变换进行图像边缘检测 今天我们介绍通过傅里叶变换求得图像的边缘 什么是傅立叶变换&#xff1f; 简单来说&#xff0c;傅里叶变换是将输入的信号分解成指定样式的构造块。例如&#xff0c;首先通过叠加具有不同频率的两个或更多个正弦函数而生成信号f&#xff08;x…...

DDD FAQs梳理

术语 领域&#xff1a;一种专门活动的范围、部类。 子域&#xff1a;一个领域细分出的多个子领域。 核心域&#xff1a;具备核心竞争力的子域。 通用域&#xff1a;同时被多个子域使用的通用功能子域&#xff0c;比如认证、权限。 支撑域&#xff1a;一些辅助性或后台功能组成…...

新星杯-ESP32智能硬件开发--SoC基础

本博文内容导读 1、当前嵌入式系统的发展情况&#xff0c;分析SoC作为物联网开发的重要技术&#xff0c;是未来物联网发展重要方向。 2、介绍SoC系统的组成和系统特点&#xff0c;了解SoC打下SoC基础。 3、介绍基于ESP32的SoC系列开发板&#xff0c;ESP32开发的系统功能进行总…...

WDM_OTN_基础知识_波分系统的网络位置

波分系统简介和OTU 在这节课的内容中&#xff0c;我们主要介绍&#xff0c;波分系统在整个通信网络中的位置&#xff0c;波分系统的构成和它的架构&#xff0c;波分设备的构成和信号图&#xff0c;以及OUT的功能和分类及波分系统的应用场景。 波分系统在整个通信网络中&#x…...

计算机网络 (46)简单网络管理协议SNMP

前言 简单网络管理协议&#xff08;SNMP&#xff0c;Simple Network Management Protocol&#xff09;是一种用于在计算机网络中管理网络节点的标准协议。 一、概述 SNMP是基于TCP/IP五层协议中的应用层协议&#xff0c;它使网络管理员能够管理网络效能&#xff0c;发现并解决网…...

Excel重新踩坑6:工作实战总结之根据筛选条件求平均成绩

一、前言&#xff1a; 这个博客的实战场景&#xff1a;给了一组学生数据&#xff0c;这些数据中&#xff0c;有全市20个社区&#xff0c;1-9年级的学生各科成绩。要求按照各社区统计1-9年级的所有学生各科平均值。下面首先介绍会用到的一些函数&#xff0c;然后再简单说明实战…...

使用 Java 和 FreeMarker 实现自动生成供货清单,动态生成 Word 文档,简化文档处理流程。

在上一篇博客中主要是使用SpringBootApache POI实现了BOM物料清单Excel表格导出&#xff0c;详见以下博客&#xff1a; Spring Boot Apache POI 实现 Exc&#xff08;&#xff09;el 导出&#xff1a;BOM物料清单生成器&#xff08;支持中文文件名、样式美化、数据合并&#…...

20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识

20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识 2025/1/18 15:12 缘起&#xff1a;做飞凌OK3588-C开发板/核心板【Linux R4】的时候&#xff0c;测试/生产要求没有开机LOGO【飞凌/Rockchip】 要求&#xff1a;黑屏或者中性界面。…...

《Hands_On_LLM》8.3: 检索增强生成-RAG技术概论

3.检索增强生成 (Retrieval-Augmented Generation (RAG)) LLM 的大规模应用很快导致人们向它们提问&#xff0c;并期望得到符合实际的答案。虽然这些模型可以正确回答一些问题&#xff0c;但它们也自信地回答了许多错误的问题。为了纠正这种行为&#xff0c;业界转而采用的主要…...

CSS中样式继承+优先级

继承属性和非继承属性 一、定义及分类 1、继承属性是指在父元素上设置了这些属性后&#xff0c;子元素会自动继承这些属性的值&#xff0c;除非子元素显式地设置了不同的值。 常见的继承属性: 字体 font 系列文本text-align text-ident line-height letter-spacing颜色 col…...

Vue进阶之旅:核心技术与页面应用实战(路由进阶)

文章目录 一、路由模块封装二、声明式导航&#xff08;一&#xff09;导航链接与高亮&#xff08;二&#xff09;声明式导航传参1. 查询参数传参2. 动态路由传参 三、路由重定向、404 与模式设置&#xff08;一&#xff09;路由重定向&#xff08;二&#xff09;路由 404&#…...

单片机存储器和C程序编译过程

1、 单片机存储器 只读存储器不是并列关系&#xff0c;是从ROM发展到FLASH的过程 RAM ROM 随机存储器 只读存储器 CPU直接存储和访问 只读可访问不可写 临时存数据&#xff0c;存的是CPU正在使用的数据 永久存数据&#xff0c;存的是操作系统启动程序或指令 断电易失 …...

Vue.js 动态设置表格最大高度的实现

概述 在现代 Web 开发中&#xff0c;响应式设计至关重要&#xff0c;尤其是在处理复杂的布局和数据表格时。表格通常会受到多种因素的影响&#xff0c;如分页、合计行或动态内容&#xff0c;这可能导致表格高度的变化。本文将介绍一个基于 Vue.js 的方法 setMaxHeight&#xf…...

Java测试开发平台搭建(九)前端

1. 搭建前端vue环境 Vue3 安装 | 菜鸟教程 2. 创建项目 1.进入ui vue ui 2. create项目 3. 成功之后添加插件&#xff1a; cli-plugin-router vue-cli-plugin-vuetify 4. 添加依赖 axios 5. 点击任务开始运行 如果报错&#xff1a; 修改vue.config.jsconst { defineConfig }…...

MySQL多表查询练习

1.找出销售部门中年纪最大的员工的姓名 mysql> select name,age from dept a ,emp_new b where a.dept1b.dept2 and dept_name销售order by age desc limit 1; ------------ | name | age | ------------ | 荣七 | 64 | ------------ 1 row in set (0.00 sec) 2.求财务…...

低代码运维与管理服务

文章目录 前言一、服务内容二、服务范围三、服务流程四、服务交付件五、责任矩阵六、验收标准 前言 随着云计算技术的发展&#xff0c;数字化转型是企业的必然选择&#xff0c;企业需要实现广泛的连接并走向开放&#xff0c;传统集成工具无法满足当前企业面临的数字化转型诉求…...

【机器学习:三十二、强化学习:理论与应用】

1. 强化学习概述 **强化学习&#xff08;Reinforcement Learning, RL&#xff09;**是一种机器学习方法&#xff0c;旨在通过试验与反馈的交互&#xff0c;使智能体&#xff08;Agent&#xff09;在动态环境中学习决策策略&#xff0c;以最大化累积奖励&#xff08;Cumulative…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...