一文读懂WPF系列之常用控件以及样式
WPF控件
- 控件分类概览
- 常用控件
- 常用控件代码示例和效果
- 样式与模板应用
- 样式定义方式
- 行内样式
- 页面/窗口级资源样式(Local Resource)
- 应用程序全局资源
- 独立资源字典(ResourceDictionary)
- 控件模板(ControlTemplate)
- 主题样式(Themes)
- 样式继承
- 样式的优先级规则
控件分类概览
布局控件上一篇文章单独讲了,这篇就主要讲其他类型的控件
常用控件
- 内容控件
Button:触发操作,可通过Content属性嵌入任意内容(如文本、图标)。
Label/TextBlock:显示文本,前者支持快捷键绑定,后者轻量级。 - 条目控件
ListBox/ComboBox:显示列表数据,支持数据绑定和模板定制。
DataGrid:表格控件,支持排序、分页和复杂数据展示。 - 输入控件
TextBox:单行文本输入。
RichTextBox:支持富文本格式(字体、颜色、段落)。
PasswordBox:密码输入,隐藏明文。
CheckBox/RadioButton:多选和单选控件。 - 特殊容器
TabControl:分页显示,通过TabItem管理多视图。
Expander:可折叠面板,节省空间
常用控件代码示例和效果
其实主要需要理解的是TabControl 与 Expander 其他控件比较简单易懂,这个例子看懂了基本上对于布局以及控件的常用基础就差不多了,如果需求用到不常用的也可以单独在去查看使用。
<Grid Margin="10"><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions><!-- 顶部工具栏 --><StackPanel Grid.Row="0" Orientation="Horizontal" Margin="0,0,0,10"><Button Content="点击我" Click="Button_Click" Width="80" Margin="0,0,5,0"/><Label Content="用户名:" VerticalAlignment="Center"/><TextBox Width="120" Margin="5,0" Text="测试管理员"/><PasswordBox Width="120" Margin="5,0" PasswordChar="*"/></StackPanel><!-- 主内容区 --><TabControl Grid.Row="1"><TabItem Header="数据展示"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="2*"/></Grid.ColumnDefinitions><!-- 左侧选项 --><StackPanel Grid.Column="0" Margin="0,0,10,0"><GroupBox Header="选项设置"><StackPanel Margin="5"><CheckBox Content="启用功能" Margin="0,5"/><RadioButton Content="模式A" GroupName="Mode" Margin="0,5"/><RadioButton Content="模式B" GroupName="Mode" Margin="0,5"/><Expander Header="高级选项"><StackPanel Margin="10,5"><TextBox Text="参数1"/><TextBox Text="参数2" Margin="0,5"/></StackPanel></Expander></StackPanel></GroupBox></StackPanel><!-- 中间分隔线 --><GridSplitter Grid.Column="1" Width="3" HorizontalAlignment="Center"/><!-- 右侧表格 --><DataGrid Grid.Column="2" AutoGenerateColumns="False"ItemsSource="{Binding DataItems}"><DataGrid.Columns><DataGridTextColumn Header="ID" Binding="{Binding Id}"/><DataGridTextColumn Header="名称" Binding="{Binding Name}"/><DataGridCheckBoxColumn Header="状态" Binding="{Binding IsActive}"/></DataGrid.Columns></DataGrid></Grid></TabItem><TabItem Header="列表控件"><StackPanel Margin="10"><ListBox Height="150" ItemsSource="{Binding Items}"/><ComboBox Margin="0,10" ItemsSource="{Binding Items}" SelectedIndex="0"/></StackPanel></TabItem></TabControl><!-- 底部状态栏 --><StatusBar Grid.Row="2"><StatusBarItem Content="就绪"/><Separator/><StatusBarItem Content="当前用户: Admin"/></StatusBar></Grid>
public partial class MainWindow : Window{public MainWindow(){InitializeComponent();DataContext = this;}public ObservableCollection<string> Items { get; } = new ObservableCollection<string>{"选项一", "选项二", "选项三"};public ObservableCollection<DataItem> DataItems { get; } = new ObservableCollection<DataItem>{new DataItem { Id = 1, Name = "项目A", IsActive = true },new DataItem { Id = 2, Name = "项目B", IsActive = false }};private void Button_Click(object sender, RoutedEventArgs e){MessageBox.Show("按钮被点击!");}}public class DataItem{public int Id { get; set; }public string Name { get; set; }public bool IsActive { get; set; }}
样式与模板应用
WPF通过样式(Style)和模板(Template)实现界面统一与定制
样式定义方式
行内样式
直接设置控件属性(如Background=“Blue”),适用于局部简单调整。
<Button Content="临时按钮" Background="Red" Foreground="White"/>
页面/窗口级资源样式(Local Resource)
在 Window 或 Page 的 Resources 中定义样式 适用于当前页
<Button.Style> 这种标签里面写style(资源式样式)
<Window.Resources><Style x:Key="CustomButton" TargetType="Button"><Setter Property="Background" Value="#0078D4"/><Setter Property="Foreground" Value="White"/><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Background" Value="#005A9E"/></Trigger></Style.Triggers></Style>
</Window.Resources>
<Button Style="{StaticResource CustomButton}" Content="按钮"/>
应用程序全局资源
在 App.xaml 的 Application.Resources 中定义样式 适用全局
<!-- App.xaml -->
<Application.Resources><Style x:Key="GlobalButton" TargetType="Button"><Setter Property="Margin" Value="10"/><Setter Property="Padding" Value="8"/></Style>
</Application.Resources><!-- 任意页面使用 -->
<Button Style="{StaticResource GlobalButton}" Content="全局按钮"/>
独立资源字典(ResourceDictionary)
将样式拆分到独立 XAML 文件,通过合并字典引用,大型项目模块化样式管理
创建 Styles/Buttons.xaml
<ResourceDictionary><Style x:Key="SuccessButton" TargetType="Button"><Setter Property="Background" Value="#4CAF50"/></Style>
</ResourceDictionary>在 App.xaml 中合并
<Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="Styles/Buttons.xaml"/></ResourceDictionary.MergedDictionaries></ResourceDictionary>
</Application.Resources>
控件模板(ControlTemplate)
通过 ControlTemplate 完全重构控件视觉树。
适用场景:需要彻底改变控件外观(如圆形按钮)
资源字典中(推荐)
<!-- 在Window.Resources或App.xaml中定义 -->
<Window.Resources><Style TargetType="Button"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button"><!-- 自定义外观 --><Ellipse Fill="{TemplateBinding Background}"/></ControlTemplate></Setter.Value></Setter></Style>
</Window.Resources>单个控件内
<Button Content="临时按钮"><Button.Template><ControlTemplate TargetType="Button"><Border Background="Red"/></ControlTemplate></Button.Template>
</Button>
TargetType:指定模板适用的控件类型(如 Button、CheckBox)。
TemplateBinding:将模板元素的属性绑定到控件的依赖属性(如 Background、Foreground)。
ContentPresenter:占位符,用于显示控件的Content 属性(如按钮文本)
主题样式(Themes)
通过 ThemeInfo 和主题资源字典实现动态换肤。
适用场景:需要支持多套主题切换(如白天/夜间模式)
在 App.xaml.cs 中设置主题
public partial class App : Application
{public void ChangeTheme(string themeName){Resources.MergedDictionaries.Clear();Resources.MergedDictionaries.Add(new ResourceDictionary { Source = new Uri($"/Themes/{themeName}.xaml", UriKind.Relative) });}
}
创建主题文件 Themes/Dark.xaml
<ResourceDictionary><Style TargetType="Button"><Setter Property="Background" Value="#333333"/></Style>
</ResourceDictionary>
样式继承
通过 BasedOn 复用基础样式
<Style TargetType="Button" x:Key="PrimaryButton"><Setter Property="Background" Value="#2196F3"/>
</Style><Style TargetType="Button" x:Key="DangerButton" BasedOn="{StaticResource PrimaryButton}"><Setter Property="Background" Value="#F44336"/>
</Style>
样式的优先级规则
当直接设置属性和样式冲突时,优先级顺序如下:
控件直接设置属性 > 显式样式(Style) > 隐式样式(无x:Key的样式) > 控件默认样式
隐式样式的作用域
无 x:Key 的
相关文章:
一文读懂WPF系列之常用控件以及样式
WPF控件 控件分类概览常用控件常用控件代码示例和效果 样式与模板应用样式定义方式行内样式页面/窗口级资源样式(Local Resource)应用程序全局资源独立资源字典(ResourceDictionary)控件模板(ControlTemplate&…...
代码随想录算法训练营第十四天
LeetCode题目: 513. 找树左下角的值112. 路径总和106. 从中序与后序遍历序列构造二叉树 其他: 今日总结 往期打卡 513. 找树左下角的值 跳转: 513. 找树左下角的值 学习: 代码随想录公开讲解 问题: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边…...
国产信创数据库:PolarDB 分布式版 V2.0,支持集中分布式一体化
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。点此查看详情https://www.aliyun.com/activity/database/polardbx-v2?spma2c6h.13046898.publish-article.8.44146ffaE0lEWT 立即咨询专家…...
【教学类-102-07】剪纸图案全套代码07——Python点状虚线优化版本+制作1图2图6图
背景需求: 我觉得这个代码里面的输入信息分离太远(42行和241行),想重新优化一下 【教学类-102-05】蛋糕剪纸图案(留白边、沿线剪)04——Python白色(255)图片转为透明png再制作“点状边框和虚线边框”-CSDN博客文章浏览阅读864次,点赞14次,收藏27次。【教学类-102-0…...
基于VSCode的Qt开发‘#include ui_test.h’报错没有该文件
笔者在基于VSCode进行Qt开发时,test.ui文件是在Qt软件中绘制的,导致本项目无法使用这个ui文件,报错如标题。事实上,本工程中也确实没有生成这个头文件。出现这个错误的原因是ui文件没有被编译为c头文件。 要生成 ui_test.h 文件&…...
微信小程序跳2
// 图片压缩 compressImage (image {}, options {}) { return new Promise((resolve, reject) > { const { width 0 } image const { compressAfterSizeFlag false, scaleFlag false, scaleTargetWidth 768 } options // 超过100k压缩 const maxFileSizeLimit 100 …...
如何将excel数据快速导入数据库
最近老是收到一些手工数据,并且需要关联分析,就想到如何快速将数据导入数据库后关联查询输出结果,下面是一段将excel数据写入mysql的脚本,欢迎大家提出优化意见相互学习。 import os import pandas as pd import pymysql import …...
C++之多态
文章目录 一、多态的概念 多态的定义与类型 二、多态的实现 三、虚函数 虚函数的概念 虚函数的重写/覆盖 协变 析构函数的重写/覆盖 override,final关键字 override final 纯虚函数与抽象类 三个概念辨析 四、多态实现的原理 虚函数表指针 动态绑定与静态绑定 …...
从PDF中提取表格:以GB/T2260—2007为例
文章目录 先说结论前因后果思路1、PDF2CSV2、PDF2MD → MD2CSV3、针对不同表格的两种思路1) 竖形三线表2)五元素为一组 还没结束批量处理1、分割markdown文档2、跳过另一种格式的文档 总结一下 先说结论 结论就是,博主用了一天的时间去研究如…...
日常记录-群晖nas的docker注册表被墙,用Mac电脑的docker拉取镜像并安装到nas中
文章目录 前言一、拉取镜像二、安装到nas中总结 前言 群晖nas的docker注册表被墙,用Mac电脑的docker拉取镜像并安装到nas中 一、拉取镜像 群晖nas的架构师x86,Mac电脑的架构师arm。 在mac电脑中执行命令: # 镜像拉取 docker pull --platf…...
DeepSeek:重构办公效率的AI新范式
目录 一、效率跃迁的三重引擎 二、效率提升的量级突破 三、智能办公的范式转移 四、未来办公的效率奇点 当企业主面对堆积如山的文件审批、跨时区协作的沟通损耗、重复机械的数据整理时,是否想过这些场景正在吞噬团队的生产力?据麦肯锡研究显示&…...
AI小程序+SpringAI+管理后台+源码+支持动态添加大模型+支持动态添加AI应用
前言 今天给大家介绍一款 前端由uniapp开发的小程序,完美在小程序上运行,对话采用流式对话。后端由springbootspringai开发的应用软件源码。 功能简介 支持在管理后台动态新增“DeepSeek”,“openai”,“千帆”,“智…...
RAG的实现快速示例
RAG(Retrieval-Augmented Generation)其实就是结合了检索与生成,核心流程分为 检索(Retrieval) 和 生成(Generation) 两大阶段,通过外部知识库增强生成式模型的准确性和可靠性。 流程其实也很简单,如下图: 关于RAG的基本概念的介绍,可以参考: RAG(检索增强生成)快…...
利用 PHP 爬虫获取京东商品详情 API 返回值说明及代码示例
在电商领域,京东作为国内知名的电商平台,提供了丰富的商品信息。通过调用京东商品详情 API,我们可以获取商品的详细信息,如商品标题、价格、图片、描述等。这些信息对于数据分析、价格监控、商品推荐等场景具有重要价值。本文将详…...
PyTorch CUDA内存管理优化:深度理解GPU资源分配与缓存机制
在深度学习工程实践中,当训练大型模型或处理大规模数据集时,上述错误信息对许多开发者而言已不陌生。这是众所周知的 CUDA out of memory错误——当GPU尝试为张量分配空间而内存不足时发生。这种情况尤为令人沮丧,特别是在已投入大量时间优化…...
大模型基础知识扫盲
1 模型量化: 是什么:大模型量化是一种“压缩”技术,把模型里高精度的数字(比如32位浮点数)简化成低精度的数字(比如8位定点数)。 有什么用:它让模型占的空间更小,跑起来…...
《穿透表象,洞察分布式软总线“无形”之奥秘》
分布式系统已成为众多领域的关键支撑技术,而分布式软总线作为实现设备高效互联的核心技术,正逐渐走入大众视野。它常被描述为一条“无形”的总线,这一独特属性不仅是理解其技术内涵的关键,更是把握其在未来智能世界中重要作用的切…...
Python Cookbook-5.13 寻找子序列
任务 需要在某大序列中查找子序列。 解决方案 如果序列是字符串(普通的或者Unicode),Python 的字符串的 find 方法以及标准库的re模块是最好的工具。否则,应该使用Knuth-Morris-Pratt算法(KMP): def KnuthMorrisPratt(text,pattern): 在序列text中找…...
(自用)蓝桥杯准备(需要写的基础)
要写的文件 led_app lcd_app key_app adc_app usart_app scheduler LHF_SYS一、外设引脚配置 1. 按键引脚 按键引脚配置如下: B1:PB0B2:PB1B3:PB2B4:PA0 2. LCD引脚 LCD引脚配置如下: GPIO_Pin_9 /* …...
STM32Cubemx-H7-14-Bootloader(上)-ST和串口烧录
前言 本文主要研究,如果把ST单片机的SWDIO和SWDCLK引脚改成推挽输出后,我们又应该怎么重新烧录,以及如何使用串口下载。 当没有设置STlink烧录为引脚或者设置成其他功能的时候 如果想恢复,那么就在烧录之前,一直按住…...
“深入浅出:Java中的Lambda表达式及其应用“
前言 Lambda表达式是Java 8引入的一项强大特性,它允许以更加简洁的方式表示匿名函数。Lambda表达式不仅让代码更加简洁、清晰,而且为函数式编程提供了有力支持,从而提升了Java语言的表达能力。 在本文中,我们将深入浅出地探讨La…...
6.1es新特性解构赋值
解构赋值是 ES6(ECMAScript 2015)引入的语法,通过模式匹配从数组或对象中提取值并赋值给变量。: 功能实现 数组解构:按位置匹配值,如 let [a, b] [1, 2]。对象解构:按属性名匹配值,…...
【从0到1学RabbitMQ】RabbitMQ高级篇
学完基础篇之后我们对用户下单这个业务进行了改造,我们可以吧用户支付这个业务抽出来,放入队列当中去执行。如下图: 但是这里我们思考一下,如果MQ通知失败了,支付服务中支付流水显示支付成功,而交易服务中…...
200 smart pid
PID整定控制面板-S7-200 SMART 跟我学/跟我做之PID功能-系列课程-西门子1847工业学习平台官网 使用西门子200SMART进行PID调节 PID自整定 PID调节技巧_哔哩哔哩_bilibili S7-200 SMART PID PID常见问题...
AI制作PPT,如何轻松打造高效演示文稿
AI制作PPT,如何轻松打造高效演示文稿!随着信息化时代的到来,PPT已经成为了几乎所有职场人士、学生、讲师的必备工具。每个人都希望自己的PPT既有创意,又能高效展示信息。而在如今的科技背景下,AI的出现彻底改变了PPT的…...
如何用postman做接口自动化测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 本文适合已经掌握 Postman 基本用法的读者,即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求等基本操作。 工作环境与版本࿱…...
day29-贪心__134. 加油站__135. 分发糖果__860.柠檬水找零__406.根据身高重建队列
134. 加油站 这道题的贪心方法相当的巧妙。 首先,我们可以通过gas[i] - cost[i]得到第i个站点的净加油量(耗油量),那么如果我们现在考虑一个从某点a到某点b,那么如果a-》b范围之间的gas[i] - cost[i]存在负数,那么说明无法从a作…...
聊透多线程编程-线程基础-4.C# Thread 子线程执行完成后通知主线程执行特定动作
在多线程编程中,线程之间的同步和通信是一个常见的需求。例如,我们可能需要一个子线程完成某些任务后通知主线程,并由主线程执行特定的动作。本文将基于一个示例程序,详细讲解如何使用 AutoResetEvent 来实现这种场景。 示例代码…...
C# 组件的使用方法
类 Stopwatch 计算时间 Stopwatch sw new Stopwatch(); sw.Start(); // 要执行的代码块 Thread.Sleep(2000);sw.ElapsedMilliseconds // 消耗时间 Console.WriteLine(sw.ElapsedMilliseconds);组件 ListView 属性设置 外观 - View - Details 行为 - Columns -(…...
Python常用排序算法
1. 冒泡排序 冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的元素,如果他们的顺序错误就交换他们。 def bubble_sort(arr):# 遍历所有数组元素for i in range(len(arr)):# 最后i个元素是已经排序好的for j in range(0, …...
HTML5 服务器发送事件(Server-Sent Events)
1. 引言 HTML5 服务器发送事件(Server-Sent Events,SSE)是一种基于 HTTP 的服务器推送技术,允许服务器主动向客户端(如浏览器)发送实时更新。SSE 适用于单向通信场景,如新闻推送、实时价格更新…...
【C++游戏引擎开发】第12篇:GLSL语法与基础渲染——从管线结构到动态着色器
一、OpenGL渲染管线解密 1.1 OpenGL渲染管线流程图 #mermaid-svg-GrAgLUat95CVZKm0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GrAgLUat95CVZKm0 .error-icon{fill:#552222;}#mermaid-svg-GrAgLUat95CVZKm0 .e…...
阿里云负载均衡可以抗ddos吗
本文深度解析阿里云负载均衡的DDoS防护机制,通过实测数据验证其基础防御能力边界,揭示需结合云盾高防IP实现TB级流量清洗的工程实践。结合2023年Memcached反射攻击事件,提供混合云架构下的多层级防御方案设计指南。 云原生负载均衡的基础防护…...
动手学习:路径规划原理及常用算法
一、路径规划的基本原理 路径规划(Path Planning)是机器人导航的核心任务,目标是为机器人找到一条从起点到终点的无碰撞路径,同时满足约束条件(如最短路径、最优能耗、安全性等)。在人形机器人场景中&…...
Web前端性能指标Web3D性能优化
性能指标&评估方式 在Web3D性能优化之前,先了解性能指标&评估方式 前端性能指标评估与监测工具可分为以下几类,结合不同场景和需求,开发者可选择适合的工具进行性能优化: 一、浏览器内置工具 Chrome DevTools Performance 面板:记录运行时性能,分析CPU、内存使…...
Mujoco xml <option>
xml option option总起例子timestep(一般会用到)gravity(一般会用到)windmagneticdensityviscosityo_margino_solref, o_solimpo_frictionintegrator(一般会用到)cone(一般会用到)jacobian(一般会用到)solver(一般会用到)iterations(一般会用到)tolerance(一般会用到)noslip_it…...
如何用 nvm alias default 18.20.8 实现全局 Node.js 版本管理?一篇保姆级指南!!!
📝 如何用 nvm alias default 18.20.8 实现全局 Node.js 版本管理?一篇保姆级指南 🚀 1. 核心命令解析 🔍 nvm alias default 18.20.8 是 nvm 管理工具中用于设置全局默认 Node.js 版本的核心命令。它的作用是将指定版本锁定为所…...
推荐一款Nginx图形化管理工具: NginxWebUI
Nginx Web UI是一款专为Nginx设计的图形化管理工具,旨在简化Nginx的配置与管理过程,提高开发者和系统管理的工作效率。项目地址:https://github.com/cym1102/nginxWebUI 。 一、Nginx WebUI的主要特点 简化配置:通过图形化的界…...
Pytest多环境切换实战:测试框架配置的最佳实践!
你是否也遇到过这种情况:本地测试通过,一到测试环境就翻车?环境变量错乱、接口地址混乱、数据源配置丢失……这些「环境切换」问题简直像定时炸弹,随时引爆你的测试流程! 测试人员每天都跟不同的环境打交道࿰…...
大模型在网络安全领域的七大应用
1. 高级威胁检测与防御自动化 技术路径: 数据整合:聚合网络流量、终端日志、威胁情报等多源数据,构建多维特征库。行为建模:通过大模型的上下文理解能力,建立正常行为基线,识别偏离模式。动态策略生成&am…...
SpringBoot项目部署之启动脚本
一、启动脚本方案 1. 基础启动方式 1.1 直接运行JAR java -jar your-app.jar --spring.profiles.activeprod优点:简单直接,适合快速测试缺点:终端关闭即终止进程 1.2 后台运行 nohup java -jar your-app.jar > app.log 2>&1 &…...
【spark-submit】--提交任务
Spark-submit spark-submit 是 Apache Spark 提供的用于提交 Spark 应用程序到集群的命令行工具。 基本语法 spark-submit [options] <app-jar> [app-arguments]常用参数说明 应用程序配置 --class <class-name>: 指定应用程序的主类(对于 Java/Sc…...
机器学习中的回归与分类模型:线性回归、逻辑回归与多分类
在机器学习领域,回归和分类是两类重要的任务,它们各自有着不同的应用场景和模型构建方式。本文将详细介绍线性回归、逻辑回归以及多分类任务的相关内容,包括数据预处理、模型定义、损失函数的选择以及评估指标的计算。 一、线性回归…...
spark-rdd
Spark-core RDD转换算子 RDD 根据数据处理方式的不同将算子整体上分为 Value 类型、双 Value 类型和 Key-Value 类型。 Value类型: 1.map 将处理的数据逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换 mapPartitions map …...
Python 实现如何电商网站滚动翻页爬取
一、电商网站滚动翻页机制分析 电商网站如亚马逊和淘宝为了提升用户体验,通常采用滚动翻页加载数据的方式。当用户滚动页面到底部时,会触发新的数据加载,而不是一次性将所有数据展示在页面上。这种机制虽然对用户友好,但对爬虫来…...
pytorch TensorDataset与DataLoader类
读取数据 Dataset类 Dataset 是一个读取数据抽象类,所有自定义的数据集类需要继承该类。 该类主要实现以下三个功能 ①如何获取每一个数据及其label --> 抽象方法__getitem()__设置通过对象[索引]的方式获取每一个样本及其label ②告知一共有多少数据 -->…...
AI大模型与知识生态:重构认知的新时代引擎
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:我们如何获得知识,正在被AI彻底改写 从古代图书馆、百科全书,到搜索引擎、问答社区,人类获取知识的方式一直在进化。而随着 ChatGPT、DeepSeek、Grok 等 AI 大模型的到来,这一过程迎来了颠覆…...
Server-Sent Events一种允许服务器向客户端发送实时更新的 Web API
Server-Sent Events(SSE)是一种允许服务器向客户端发送实时更新的 Web API。它基于 HTTP 协议,提供了一种单向的、服务器到客户端的通信机制,客户端可以通过监听服务器发送的事件来接收实时数据。下面从原理、使用场景、代码示例等…...
电子电器架构 --- AI如何重构汽车产业
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁&am…...
操作系统CPU调度
简介 当CPU有大量任务要处理,但由于资源有限,无法同时处理。所有就需要某种规则来决定任务处理的顺序,这就是调度。 调度层次 根据调度频率与层次,共分为三种 高级调度 也称为作业调度(Long-Trem Scheduling),频次很低,它决定哪些进程从外存(硬盘)加载到内存中级调度 也…...