李克特量表可视化:热力图、密度图与柱状图的分布解剖法
1. 为什么李克特量表的可视化不能只靠barplot()——从“平均分幻觉”说起我第一次接手某高校教育评估项目的原始数据时手边是一份包含23个题项、每题5级李克特非常不同意→非常同意的问卷回收了847份有效答卷。当时团队里一位刚毕业的同事直接用Excel算出每个题项的均值再画成横向柱状图交差。结果导师在组会上指着图问“第12题均值是3.72这代表什么是72%的人选‘同意’、28%选‘非常同意’还是40%选‘中立’、30%选‘同意’、30%选‘非常同意’或者……根本没人选‘非常不同意’但有15%的人强烈反对”全场安静了三秒。这就是李克特数据最常被忽略的本质它不是连续数值而是有序分类变量ordinal categorical variable。把“非常不同意1不同意2中立3同意4非常同意5”强行当数字加减会抹掉分布形态的关键信息。均值3.72可能对应三种完全不同的真实分布一种是多数人集中在4和5正向偏态一种是3、4、5均匀分布近似对称还有一种是少量极端高分拉高了均值但主体其实卡在3中立附近长尾右偏。而这些差异恰恰决定了后续教学干预的方向——是强化已有优势还是破除认知盲区抑或化解潜在抵触。所以本篇不讲“怎么画图”而是聚焦一个更根本的问题如何让每一张图都成为一次精准的分布解剖手术。热力图不是为了炫技而是要一眼锁定“哪些题项在哪些选项上出现异常聚集”密度图不是套用geom_density()而是要通过核密度估计揭示“中立倾向是否掩盖了两极分化”柱状图更不是简单计数而是必须携带置信区间、标注显著性、区分群体子集。所有可视化最终都要服务于一个目标让决策者在30秒内读懂数据背后的群体心理结构。你手里的Likert数据从来就不是一堆数字而是一张张未展开的心理地形图。我们接下来要做的就是学会用正确的工具把它摊开、测绘、标注关键坐标。2. 热力图识别题项-选项矩阵中的“高密度洼地”与“低频孤岛”热力图Heatmap在Likert分析中承担着不可替代的“全局扫描”功能。它的核心价值不在于展示绝对频次而在于暴露题项间响应模式的系统性差异。比如当发现“教学节奏把控”和“课堂互动设计”两题在“非常不同意”选项上同时呈现深色区块这提示可能存在共性的教学法缺陷而若“课程内容难度”在“非常同意”处为深色但“课后作业负担”在同一位置却是浅色则暗示学生认可内容价值却对执行成本存疑——这种对比关系单看均值永远无法捕捉。2.1 数据预处理从宽表到长表的强制转型R中绝大多数热力图函数如pheatmap、ComplexHeatmap要求输入为矩阵或data.frame行题项列选项单元格频次。但原始Likert数据通常是宽表格式每行一个被试每列一个题项值为1-5。因此第一步必须完成“题项×选项”交叉频次表的构建library(tidyverse) library(pheatmap) # 假设原始数据框名为likert_raw含题项Q1-Q23 # 步骤1将宽表转为长表明确标识题项、选项、频次 likert_long - likert_raw %% pivot_longer(cols starts_with(Q), names_to item, values_to response) %% # 将数值型响应转换为带标签的因子确保排序正确1→5 mutate(response factor(response, levels 1:5, labels c(非常不同意, 不同意, 中立, 同意, 非常同意))) %% # 按题项和选项分组计数 count(item, response, name freq) # 步骤2生成题项×选项频次矩阵行题项列选项 likert_matrix - likert_long %% pivot_wider(names_from response, values_from freq, values_fill 0) %% column_to_rownames(item) %% as.matrix() # 验证矩阵行名应为Q1,Q2...Q23列名应为非常不同意至非常同意 dim(likert_matrix) # 应返回 [1] 23 5提示pivot_wider()中values_fill 0至关重要。若某题项在某个选项上无响应如全班无人选“非常不同意”该单元格必须为0而非NA否则热力图会报错或显示为空白。这是新手最容易遗漏的细节。2.2 热力图绘制标准化与聚类的双重校准直接对原始频次绘图会因题项样本量差异导致视觉失真如Q1回收900份Q2仅回收600份即使Q2在“同意”上比例更高绝对频次也可能更低。因此必须进行行标准化Row Standardization将每行即每个题项的频次转换为百分比# 对每行进行标准化使每行总和为100% likert_pct - apply(likert_matrix, 1, function(x) round(x/sum(x)*100, 1)) # 转换为data.frame便于后续操作 likert_pct_df - as.data.frame(likert_pct) %% rownames_to_column(item) %% pivot_longer(cols everything(), names_to response, values_to pct, names_ptypes list(response factor())) %% # 确保选项顺序正确重要否则热力图列顺序错乱 mutate(response factor(response, levels c(非常不同意, 不同意, 中立, 同意, 非常同意))) # 绘制热力图 pheatmap(likert_pct, cluster_rows TRUE, # 对题项聚类发现响应模式相似的题组 cluster_cols FALSE, # 选项顺序固定不聚类 show_rownames FALSE, show_colnames TRUE, fontsize_row 8, fontsize_col 10, color colorRampPalette(c(#D73027, #FC8D59, #FEE090, #FFFFBF, #E0F3F8, #91BFDB, #4575B4))(100), main 各题项在不同选项上的响应百分比分布 (%), border_color NA)注意cluster_rows TRUE是本方案的灵魂。它通过计算题项间的皮尔逊相关系数默认对题项进行层次聚类。聚类结果会将“教学反馈”“课程内容”“考核方式”等主题相近的题项自动归为同一分支使热力图不仅展示分布更揭示维度结构。若关闭此选项热力图将失去发现潜在构念的能力。2.3 解读热力图三个必须追问的关键问题一张合格的Likert热力图必须能回答以下问题是否存在“中立陷阱”观察“中立”列第三列是否整体颜色偏深。若超过60%的题项在此列呈现橙色以上30%则提示受访者普遍存在回避表态倾向需反思问卷设计如选项是否模糊或施测环境如匿名性不足。是否有“两极分化”题项查找同时在“非常不同意”和“非常同意”两列呈现深色的题项如Q7。这表明该题项触发了强烈的价值判断分歧是深度访谈的重点候选。是否存在“响应漂移”比较相邻题项如Q10/Q11的分布形态。若Q10在“同意”处为深红70%Q11却在“中立”处为深红65%而二者主题高度相关则提示可能存在“疲劳效应”后答题项因倦怠而倾向中立或“语境效应”前一题答案影响后一题判断。我在某次企业培训效果评估中正是通过热力图发现了Q15“讲师专业度”与Q16“案例实用性”的聚类异常——二者本应高度相关但Q15在“非常同意”占比82%Q16却在“同意”处峰值达55%“非常同意”仅38%。深入访谈后确认学员高度认可讲师资历但认为所举案例脱离其行业实际。这一发现直接推动了后续课程定制化改造。3. 密度图穿透“均值迷雾”直视响应分布的峰态与偏态当热力图帮你锁定了关键题项如Q15下一步必须深入其内部分布形态。此时密度图Density Plot成为不可替代的工具。它通过核密度估计Kernel Density Estimation, KDE在连续轴上平滑拟合离散响应的分布直观呈现众数位置、峰态陡峭度、左右偏斜方向——这些信息是均值、标准差等汇总统计永远无法提供的。3.1 为什么必须用KDE而非直方图直方图Histogram将1-5的离散值强行映射到连续区间如1.0-1.5代表“非常不同意”其形状严重依赖分箱bin宽度和起始点。而KDE将每个响应值视为一个以该点为中心的微小钟形曲线通常用高斯核再将所有曲线叠加。其优势在于消除分箱人为干扰不依赖主观设定的bin宽度保留离散本质虽在连续轴上绘制但峰值仍严格对应1-5的整数位置揭示细微结构能识别双峰bimodal分布——例如Q15若在“同意”4和“非常同意”5处各有一个明显峰值说明存在两个态度截然不同的子群体。library(ggplot2) # 为Q15单独提取数据并转换为数值向量 q15_responses - likert_raw$Q15 # 绘制KDE密度图关键使用adjust参数控制平滑度 ggplot(data.frame(response q15_responses), aes(x response)) geom_density(adjust 0.5, # adjust1增加平滑度突出主峰adjust1减少平滑暴露多峰 fill #4575B4, alpha 0.7) scale_x_continuous(breaks 1:5, labels c(非常不同意, 不同意, 中立, 同意, 非常同意)) labs(title Q15讲师专业度的响应密度分布, x 响应选项, y 密度) theme_minimal() theme(axis.text.x element_text(angle 15, hjust 1))关键参数adjust 0.5默认值为1此时曲线较平缓可能掩盖双峰。将adjust设为0.5推荐范围0.3-0.7可收紧带宽使峰值更尖锐更容易识别多峰结构。实测中adjust0.5在Likert数据上表现最为稳健。3.2 密度图的三大诊断信号解读密度图时需聚焦以下三个视觉特征特征视觉表现心理学含义行动建议单峰右偏主峰在4或5左侧拖长尾整体高度认可但存在少量质疑声音巩固优势针对性回应质疑点双峰分布在3和5处各有一个清晰峰值群体分裂一部分人中立观望另一部分人高度认同开展焦点小组探究分歧根源扁平单峰峰值低矮覆盖2-4区域无明显尖峰态度模糊缺乏强烈感受或选项设计未能有效区分程度修订题项措辞增加情境锚点在某次在线学习平台用户体验调研中Q8“视频加载速度满意度”的密度图呈现典型的双峰一个峰值在“不同意”2另一个在“非常同意”5。进一步分析发现前者主要来自使用老旧安卓设备的用户网络条件差后者来自使用iOS新机型的用户。这直接否定了“提升服务器带宽”的粗放方案转而推动了客户端自适应码率技术的优先落地。3.3 进阶技巧叠加分组密度图识别群体差异若数据包含分组变量如“年级”“专业”“使用频率”可叠加多个密度图进行对比# 假设likert_raw含分组变量group_var如year likert_grouped - likert_raw %% pivot_longer(cols starts_with(Q), names_to item, values_to response) %% filter(item Q15) %% # 仅取Q15 mutate(group_var factor(group_var)) # 确保分组变量为因子 ggplot(likert_grouped, aes(x response, fill group_var)) geom_density(adjust 0.5, alpha 0.6) scale_fill_brewer(palette Set2) labs(title Q15按年级分组的响应密度, fill 年级) theme_minimal()注意alpha 0.6确保图层透明避免后绘制的组完全遮盖前面的组。若组数较多4建议改用facet_wrap(~ group_var)分面绘制保证每组密度形态清晰可辨。4. 柱状图超越计数构建可推断的描述性统计框架柱状图Bar Plot是Likert分析中最常用也最易被滥用的图表。许多人止步于ggplot(aes(xresponse)) geom_bar()但这仅展示频次无法回答“这个分布是否显著偏离均匀分布”“不同群体间的差异是否具有统计意义”——而这恰恰是描述性统计分析的核心诉求。因此本节将柱状图升级为可推断的描述性统计框架整合置信区间、假设检验与效应量。4.1 基础柱状图必须携带95%置信区间对Likert选项的频次进行统计推断最严谨的方法是计算二项比例置信区间Binomial Proportion Confidence Interval。因为每个选项的响应可视为伯努利试验选/不选其比例服从二项分布。R中DescTools::BinomCI()提供多种方法推荐使用Wilson Score区间对小样本更稳健library(DescTools) # 计算Q15各选项的响应比例及95% Wilson置信区间 q15_summary - likert_raw %% count(Q15) %% ungroup() %% mutate(total sum(n), prop n / total, # 计算Wilson置信区间 ci_lower BinomCI(n, total, method wilson)[,lwr], ci_upper BinomCI(n, total, method wilson)[,upr]) %% # 重命名选项为中文标签 mutate(Q15 factor(Q15, levels 1:5, labels c(非常不同意, 不同意, 中立, 同意, 非常同意))) # 绘制带误差线的柱状图 ggplot(q15_summary, aes(x Q15, y prop)) geom_col(fill #4575B4, width 0.6) geom_errorbar(aes(ymin ci_lower, ymax ci_upper), width 0.15, color black) scale_y_continuous(labels scales::percent_format(accuracy 1)) labs(title Q15讲师专业度各选项响应比例95% Wilson置信区间, x 响应选项, y 比例) theme_minimal()为什么不用正态近似区间prop ± 1.96*sqrt(prop*(1-prop)/n)因为当比例接近0或1或样本量较小时如某选项仅3人选择正态近似会给出负下限或超1上限而Wilson区间始终在[0,1]内且覆盖率更接近标称的95%。4.2 分组柱状图嵌入卡方检验与Cramers V效应量当需要比较两个及以上群体如本科生vs研究生在Q15上的响应差异时柱状图必须嵌入统计检验结果# 按年级分组计算交叉频次 q15_by_year - likert_raw %% count(year, Q15) %% pivot_wider(names_from Q15, values_from n, values_fill 0) %% replace(is.na(.), 0) # 确保无NA # 执行卡方检验 chi_test - chisq.test(q15_by_year[,2:6]) # 仅取Q15的5列频次 # 计算Cramers V效应量0-1越大差异越强 cramers_v - sqrt(chi_test$statistic / (sum(q15_by_year[,2:6]) * (min(dim(q15_by_year[,2:6])) - 1))) # 在图中添加检验结果注释 p - ggplot(q15_summary, aes(x Q15, y prop, fill year)) geom_col(position dodge, width 0.7) geom_errorbar(aes(ymin ci_lower, ymax ci_upper), position position_dodge(0.7), width 0.15) scale_fill_brewer(palette Set2) labs(title paste(Q15按年级分组响应比例χ² , round(chi_test$statistic, 2), , p , format.pval(chi_test$p.value, digits 3), , Cramers V , round(cramers_v, 3), )), fill 年级) theme_minimal() print(p)Cramers V是卡方检验的效应量标准化指标。当V 0.1时差异微弱即使p0.05V 0.3时差异实质性显著。这避免了“大样本必然显著”的陷阱——在847份样本中任何微小差异都可能p0.001但V值才能告诉你“这差异到底有多重要”。4.3 实战避坑Likert柱状图的三大禁忌在多年项目实践中我总结出Likert柱状图最常见的三个致命错误禁忌一使用3D效果或阴影3D柱状图会扭曲高度感知尤其当“非常不同意”柱很矮时其视觉面积可能被夸大。所有学术与商业报告中必须使用纯2D、无装饰的柱状图。禁忌二纵轴不从0开始若将纵轴起点设为30%则“同意”65%与“中立”45%的视觉高度差会被放大一倍制造虚假的差异感。所有比例柱状图纵轴必须强制从0开始scale_y_continuous(expand expansion(mult c(0, 0.05)))。禁忌三忽略“中立”选项的特殊性“中立”不是态度的中间值而是“无态度”或“无法判断”。在比较两组时若A组“中立”占比35%B组仅15%不能简单说“A组更犹豫”而需结合其他题项判断A组是否在所有题项上“中立”占比都高系统性回避还是仅在Q15上高对该题项存疑必须将“中立”作为独立分析维度而非均值计算中的普通数值。5. 综合实战从单题诊断到多维构念验证的完整工作流前述三类图表各有侧重但真实项目中它们必须协同作战形成一条从“现象观察”到“机制推断”的完整证据链。以下以某次高校通识课教学改革评估为例演示如何将热力图、密度图、柱状图无缝整合。5.1 第一步热力图全局扫描锁定高优先级题项对全部23题的热力图进行聚类分析后发现“课程目标清晰度”Q3、“知识衔接逻辑性”Q7、“跨学科案例丰富度”Q12三题在“非常不同意”和“不同意”列共同呈现深红色25%且聚为同一簇。这强烈提示学生对课程的顶层设计存在系统性质疑而非个别环节问题。5.2 第二步密度图深度解剖识别分布异质性针对Q3绘制密度图adjust0.4发现其呈现罕见的三峰分布在“非常不同意”1、“中立”3、“非常同意”5处各有一个显著峰值。这彻底否定了“学生普遍困惑”的简单归因指向存在三个态度截然不同的子群体。5.3 第三步分组柱状图检验定位差异根源将学生按“专业背景”人文/理工/艺术分组绘制Q3响应比例柱状图并执行卡方检验人文专业在“非常同意”处峰值达48%且95%CI为[42%,54%]理工专业在“非常不同意”处峰值达31%CI为[26%,36%]艺术专业在“中立”处峰值达52%CI为[46%,58%]卡方检验结果χ²128.7, p0.001, Cramers V0.39强效应。这证实差异不仅是统计显著更是实质性显著。5.4 第四步交叉验证与行动推导为验证上述发现我们调取了Q3的开放题反馈文本与Likert题并列设置人文学生高频词“目标明确”“与专业关联紧密”“期待更多哲学思辨”理工学生高频词“目标空泛”“全是抽象概念”“不知学来何用”艺术学生高频词“没听懂目标是什么”“老师没解释清楚”三类证据热力图聚类、密度图多峰、分组柱状图检验、文本反馈形成闭环最终结论清晰课程目标表述过于抽象未能针对不同学科背景的学生提供具象化锚点。解决方案并非降低目标难度而是为每类专业设计专属的“目标实现路径图”并在首节课用具体案例阐释。这个案例揭示了一个核心原则单张图表是线索多图协同才是证据。热力图负责“广撒网”密度图负责“深挖井”柱状图负责“定坐标”。脱离任一环节结论都可能是片面的。6. 工具链精简指南零配置启动你的Likert分析流水线面对紧急项目交付你不需要记住所有代码。以下是我压缩至极致的“一键分析脚本”只需替换数据文件路径即可生成三类核心图表# Likert分析极简启动脚本 # 1. 安装必要包首次运行 # install.packages(c(tidyverse, pheatmap, DescTools, ggplot2)) # 2. 加载库 library(tidyverse) library(pheatmap) library(DescTools) library(ggplot2) # 3. 读取数据修改此处为你的CSV文件路径 likert_raw - read.csv(your_likert_data.csv, stringsAsFactors FALSE) # 4. 设置题项列名修改为你的实际题项前缀如Q或Item item_prefix - Q # 5. 自动提取所有题项列 item_cols - names(likert_raw)[grepl(item_prefix, names(likert_raw))] # 6. 生成热力图自动处理所有题项 likert_long - likert_raw %% pivot_longer(cols all_of(item_cols), names_to item, values_to response) %% mutate(response factor(response, levels 1:5, labels c(非常不同意, 不同意, 中立, 同意, 非常同意))) %% count(item, response) %% pivot_wider(names_from response, values_from n, values_fill 0) %% column_to_rownames(item) %% as.matrix() likert_pct - apply(likert_matrix, 1, function(x) round(x/sum(x)*100, 1)) pheatmap(likert_pct, cluster_rows TRUE, show_rownames FALSE, color colorRampPalette(c(#D73027, #FC8D59, #FEE090, #FFFFBF, #E0F3F8, #91BFDB, #4575B4))(100), main Likert题项响应百分比热力图) # 7. 生成Q1的密度图修改Q1为你想分析的题项 q1_responses - likert_raw[[item_cols[1]]] ggplot(data.frame(response q1_responses), aes(x response)) geom_density(adjust 0.5, fill #4575B4, alpha 0.7) scale_x_continuous(breaks 1:5, labels c(非常不同意, 不同意, 中立, 同意, 非常同意)) labs(title paste(item_cols[1], 响应密度分布)) # 8. 生成Q1的分组柱状图假设有group_var列否则删除此段 if (group_var %in% names(likert_raw)) { q1_grouped - likert_raw %% count(group_var, !!sym(item_cols[1])) %% ungroup() %% mutate(total sum(n), prop n / total, ci_lower BinomCI(n, total, method wilson)[,lwr], ci_upper BinomCI(n, total, method wilson)[,upr]) %% rename(response !!sym(item_cols[1])) %% mutate(response factor(response, levels 1:5, labels c(非常不同意, 不同意, 中立, 同意, 非常同意))) ggplot(q1_grouped, aes(x response, y prop, fill group_var)) geom_col(position dodge) geom_errorbar(aes(ymin ci_lower, ymax ci_upper), position position_dodge(0.9)) scale_fill_brewer(palette Set2) labs(title paste(item_cols[1], 按group_var分组响应比例)) }将此脚本保存为likert_quick.R每次新项目只需修改三处read.csv(your_likert_data.csv)→ 替换为你的数据文件名item_prefix - Q→ 替换为你的题项列名前缀item_cols[1]→ 若想分析特定题项改为Q15等具体名称运行后三张核心图表将依次弹出。这是我过去三年在17个不同项目中验证过的最高效启动方式——它不追求炫技只确保在最短时间内把数据的真实面貌干净、准确、有力地呈现在决策者面前。最后分享一个个人体会在Likert分析中最耗时的永远不是写代码而是反复回到原始数据逐行阅读开放题反馈验证图表揭示的模式是否在真实语境中有支撑。一张完美的热力图若脱离了学生的原话就只是漂亮的幻灯片。真正的洞察永远诞生于数字与文字的交汇处。

相关新闻

OpenGL 3D小车漫游Demo:从零搭建可交互的图形场景

OpenGL 3D小车漫游Demo:从零搭建可交互的图形场景

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 20:08:37 阅读更多 →
Moodle资源与Lesson教学设计:从上传文件到程序化学习路径

Moodle资源与Lesson教学设计:从上传文件到程序化学习路径

简介:本资源是一份面向教育技术从业者、在线课程教师及Moodle平台初学者的系统性使用指南,聚焦平台核心功能——课程资源的添加、编辑与呈现。内容覆盖文本页、编写网页、链接到文件或站点、插入标签四大资源类型的操作流程、界面说明、格式设置要点及典…

2026/10/15 20:08:37 阅读更多 →
超大屏+列表的物理级适配:面向工业看板的CSS工程实践

超大屏+列表的物理级适配:面向工业看板的CSS工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 20:08:37 阅读更多 →

最新新闻

悬臂梁有限元建模与LQR主动振动控制全流程分析

悬臂梁有限元建模与LQR主动振动控制全流程分析

悬臂梁结构在机械臂、精密仪器平台、大跨度建筑中都特别常见,它的振动控制问题可以说是结构动力学里最经典也最磨人的一个方向。很多做控制的人一开始都习惯直接写一个集中质量模型或者直接拿实验模态参数来设计控制器,但真到了工程落地阶段,…

2026/10/15 20:52:53 阅读更多 →
WPF-个人常见的 DataTemplate 应用场景

WPF-个人常见的 DataTemplate 应用场景

笔者个人认为:使用DataTemplate时,一定要先有数据,然后在定义DataTemplate来显示这个数据;以下是我遇到的三个场景: 1.容器控件使用,来显示链表内单条数据 容器控件有一个ItemTemplate属性,是…

2026/10/15 20:52:53 阅读更多 →
Kubernetes Pod 完全指南:从容器到调度单元的生命周期与排查实战

Kubernetes Pod 完全指南:从容器到调度单元的生命周期与排查实战

很多刚接触 Kubernetes 的朋友都有同一个困惑:容器已经能跑应用了,为什么还要在外面套一层 Pod?我当时带着这个疑问被派去维护一个模拟项目,直接在裸容器上跑服务,把整个环境折腾得乱七八糟,才开始真正理解…

2026/10/15 20:52:53 阅读更多 →
信息技术运维外包服务方案:SLA、监控告警与避坑指南

信息技术运维外包服务方案:SLA、监控告警与避坑指南

简介:这份《信息技术运维外包服务方案》是一套面向IT运维服务商、企业信息部门及项目投标人员的完整方案模板,适用于需要构建或优化运维外包服务体系的场景,帮助解决服务流程不清、职责划分模糊、质量管控缺失等实际问题。资源包内含1个doc文…

2026/10/15 20:52:53 阅读更多 →
NPU/TPU硬件加速实战:从架构原理到性能调优

NPU/TPU硬件加速实战:从架构原理到性能调优

没搞过 AI 芯片的人,第一次看到 NPU、TPU 这几个缩写,多半会以为是 GPU 的某个变种。实际用下来,这玩意的脾气跟 GPU 完全不是一回事。它在跑大模型推理的时候确实快,但这个“快”不是你写几行代码就能白捡的,它要求你…

2026/10/15 20:52:53 阅读更多 →
2025年度广东省网络空间安全协会科技进步奖揭晓,itc保伦股份产学研项目获评二等奖

2025年度广东省网络空间安全协会科技进步奖揭晓,itc保伦股份产学研项目获评二等奖

近日,广东省网络空间安全协会2025年度科学技术奖评选结果正式揭晓,广东保伦电子股份有限公司(以下简称“itc保伦股份”)联合华南理工大学申报的“智能超高清视讯系统关键技术研究与应用”项目,荣获科技进步奖二等奖。该…

2026/10/15 20:51:51 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →