【办公类110-03】20260805园园通小班分班(python)
一、背景需求园园通8月7日前搭建托小班班级栏目绑定教师幼儿分班以前至少都要8月20日以后操作打开园园通发现小班的孩子数据已经进园园通由于没有搭建新小班栏目所以这些幼儿无法直接进入班级需要人工分班。我先手动搭建了班级在手动搭建班级的时候这个改版后的园园通操作起来步骤比较多有点繁琐。好不容易做完文件夹。又做了大6班孩子的人工分班转入其他大班也是累死。二、Python分班一园园通分班的界面样式这125人的分班我再也不想一条条做手工做了。准备写程序读取表单自动分班二制作收集表单1.制作收集表这个项目里有一个“制作表单”的代码拿来用。【办公类-109-01】20250728托小班新生圆形挂牌学号姓名9.4CMhttps://mp.csdn.net/mp_blog/creation/editor/149722959原始代码修改班级名称 制作班级幼儿信息收集表包含学号、园区、班级、姓名、性别 豆包阿夏 20250728 import pandas as pd import openpyxl def create_class_excel(file_path): # 班级配置(班级名称,园区,人数) class_config [ # 一分园 (托1班, 一分园, 20), (托2班, 一分园, 20), # 二分园 (托3班, 二分园, 20), (小1班, 二分园, 25), (小2班, 二分园, 25), (小3班, 二分园, 25), # 一分园 (小4班, 一分园, 25), (小5班, 一分园, 25), # 总园 中班1‑6班 (中1班, 总园, 30), (中2班, 总园, 30), (中3班, 总园, 30), (中4班, 总园, 30), (中5班, 总园, 30), (中6班, 总园, 30), # 总园 大班1‑5班 (大1班, 总园, 35), (大2班, 总园, 35), (大3班, 总园, 35), (大4班, 总园, 35), (大5班, 总园, 35), ] with pd.ExcelWriter(file_path, engineopenpyxl) as writer: # 通用模板页最大人数35 max_num 35 template_data { 学号: list(range(1, max_num 1)), 园区: [] * max_num, 班级: [] * max_num, 姓名: [] * max_num, 性别: [] * max_num } template_df pd.DataFrame(template_data) template_df.to_excel(writer, sheet_name模板, indexFalse) for cls_name, garden_name, stu_count in class_config: df_data { 学号: list(range(1, stu_count 1)), 园区: [garden_name] * stu_count, 班级: [cls_name] * stu_count, 姓名: [] * stu_count, 性别: [] * stu_count } df pd.DataFrame(df_data) df.to_excel(writer, sheet_namecls_name, indexFalse) print(f已创建工作表: {cls_name} | 园区:{garden_name} | 人数:{stu_count}) print(f\nExcel文件已生成: {file_path}) if __name__ __main__: path rC:\Users\mhjg2\Desktop\20250728托小幼儿挂牌 excel_file path r\20260805班级信息表.xlsx create_class_excel(excel_file)2.把表单做成多人编辑共享急用我单独做了一个小班的3.第二天班主任把班级孩子名字性别都写好了但是姓名里面有空格影响识别张三和张 三是两个名字在网络共享编辑里面批量替换空格、4.下载先制作一个分班代码复制到谷歌浏览器自动下载到一定要确保没有空格必须把空格删除否则一堆匹配不上的名字三撰写代码1.研究园园通分班的所有按钮按钮不多很方便2.一个班级的假姓名测试代码豆包AI编程import openpyxl # 替换为你的文件路径 file_path rC:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805班级信息表.xlsx def get_class_name_info(excel_path): result [] # 打开Excel文件 wb openpyxl.load_workbook(excel_path) # 遍历所有工作表每个sheet对应一个班级 for sheet_name in wb.sheetnames: ws wb[sheet_name] # 遍历行第1行是表头从第2行开始读取数据 for row in ws.iter_rows(min_row2, values_onlyTrue): # 行结构学号,园区,班级,姓名,性别 student_id, park, class_name, name, gender row # 姓名为空/None/空白字符串则跳过 if not name or str(name).strip() : continue # 存入结果班级、姓名 result.append({班级: class_name, 姓名: name}) wb.close() return result if __name__ __main__: data get_class_name_info(file_path) # 打印提取结果 for item in data: print(f班级{item[班级]}姓名{item[姓名]}) # 如需导出到新文件可继续扩展正确可以获取班级和姓名2.Python模拟点击园园通的各种按钮实现分班。我记得原来不是这个库def集合我还是用不来。Python点击需要先自己找每个按钮的坐标把它写下来制作一个查找坐标的代码import pyautogui import time print(移动鼠标查看坐标按 CtrlC 停止程序) time.sleep(3) # 需要把园园通火狐100%界面放大 # 运行这个代码然后手动把VS最小化 # 把鼠标点在需要的按钮的位置上所以要等三秒 x, y pyautogui.position() # 实时打印覆盖上一行输出 print(f\r当前鼠标坐标 X:{x} Y:{y}, end) time.sleep(0.1)我不想每次都手动最小化VScode,看看能不能自动最小化# import pyautogui # import time # print(移动鼠标查看坐标按 CtrlC 停止程序) # time.sleep(3) # # 需要把园园通火狐100%界面放大 # # 运行这个代码然后手动把VS最小化 # # 把鼠标点在需要的按钮的位置上所以要等三秒 # x, y pyautogui.position() # # 实时打印覆盖上一行输出 # print(f\r当前鼠标坐标 X:{x} Y:{y}, end) # time.sleep(0.1) import pyautogui import time import pygetwindow as gw # 1. 找到VSCode窗口匹配标题含 Visual Studio Code vscode_wins gw.getWindowsWithTitle(Visual Studio Code) if not vscode_wins: print(未找到VSCode窗口请先打开VSCode再运行) else: win vscode_wins[0] # 自动最小化VSCode win.minimize() print(VSCode已自动最小化你有5秒时间移动鼠标到目标位置) time.sleep(5) # 等待5秒给你放鼠标 # 获取当前鼠标坐标并打印 x, y pyautogui.position() # print(f\n已捕获鼠标坐标X {x} , Y {y}) print(f\n已捕获鼠标坐标{x},{y}) # 934,354 # 自动最大化VSCode win.maximize() print(VSCode已自动最大化程序结束)完美运行后就自动最小化VSCODE界面然后手动把鼠标放到指定的按钮上等5秒VSCODE界面自动打开显示打印出来的坐标import openpyxl file_path rC:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805小班园园通分班名单.xlsx def get_class_name_info(excel_path): result [] wb openpyxl.load_workbook(excel_path) for sheet_name in wb.sheetnames: ws wb[sheet_name] for row in ws.iter_rows(min_row2, values_onlyTrue): # 改用索引不强制拆5个兼容列数不够 # 索引0学号1园区2班级3姓名4性别 if len(row) 4: continue # 列太少直接跳过这一行 class_name row[1] name row[2] # 判断姓名为空就跳过 if not name or str(name).strip() : continue result.append({班级: class_name, 姓名: name}) wb.close() return result if __name__ __main__: data get_class_name_info(file_path) for item in data: print(f班级{item[班级]}姓名{item[姓名]}) 园园通小班孩子进入后需要分班 1.收集名单 2.读取名单提取班级姓名 3.Python模拟鼠标点击园园通按钮进行分班 import openpyxl import pyautogui import time import pyperclip import pygetwindow as gw # 1. 找到VSCode窗口匹配标题含 Visual Studio Code vscode_wins gw.getWindowsWithTitle(Visual Studio Code) if not vscode_wins: print(未找到VSCode窗口请先打开VSCode再运行) else: win vscode_wins[0] # 自动最小化VSCode win.minimize() print(VSCode已自动最小化你有5秒时间移动鼠标到目标位置) time.sleep(5) # 等待5秒给你放鼠标 import random # 随机休眠1~3秒带小数模拟真人操作 def rand_sleep(): t random.uniform(2, 4) time.sleep(t) # file_path rC:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805班级信息表.xlsx file_path rC:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805小班园园通分班名单.xlsx wb openpyxl.load_workbook(file_path) # 读取表格 for sheet_name in wb.sheetnames: ws wb[sheet_name] for row in ws.iter_rows(min_row2, values_onlyTrue): if len(row) 4: continue name row[2] if not name or str(name).strip() : continue class_name row[1] # garden_name row[1] # data_list.append([class_name, name]) # print(name) # print(class_name) # 进入园园通界面 # 点击姓名栏 pyautogui.click(839,368) # 1. 复制指定文字到剪贴板 # print(写入姓名:,name) pyperclip.copy(name) # 2. 模拟CtrlV粘贴 pyautogui.hotkey(ctrl, v) rand_sleep() # 延迟2秒切换窗口 # 搜索 pyautogui.click(1163,433) rand_sleep() # 点击分班 pyautogui.click(1765,619) rand_sleep() # 选择园区如果等于总园就点击第X个 # pyautogui.click(923,599) # rand_sleep() # if garden_name总园: # for i in range(1): # pyautogui.press(down)# 按下↓ # elif garden_name二分园: # for i in range(2): # pyautogui.press(down)# 按下↓ # elif garden_name一分园: # for i in range(3): # pyautogui.press(down)# 按下↓ # pyautogui.press(Enter)# 按回车 # 选择年级如果等于小班托班或中班大班就点击第X个未测试点几下 # pyautogui.click(923,599) # time.sleep(1) # grade_nameclass_name[0]class_name[2] # if grade_name托班: # for i in range(1): # pyautogui.press(down)# 按下↓ # elif grade_name小班: # for i in range(2): # pyautogui.press(down)# 按下↓ # elif grade_name中班: # for i in range(3): # pyautogui.press(down)# 按下↓ # elif grade_name大班: # for i in range(3): # pyautogui.press(down)# 按下↓ # pyautogui.press(Enter)# 按回车 # 选择班级如果等于小1班 小2班 小3班就点击第X个 pyautogui.click(880,681) time.sleep(1) if class_name小1班: for i in range(1): pyautogui.press(down)# 按下↓ elif class_name小2班: for i in range(2): pyautogui.press(down)# 按下↓ elif class_name小3班: for i in range(3): pyautogui.press(down)# 按下↓ elif class_name 小4班: for i in range(2): pyautogui.press(down)# 按下↓ elif class_name小5班: for i in range(1): pyautogui.press(down)# 按下↓ pyautogui.press(Enter)# 按回车 rand_sleep() # 确认回到最初的界面 pyautogui.click(1184,795) rand_sleep() # 清空名字点击× pyautogui.click(1049,376) rand_sleep() wb.close() # 自动最大化VSCode win.maximize() print(VSCode已自动最大化程序结束)前期分班也遇到过“教师输入的名字”与“园园通的名字”不同识别不了。这个程序如果出现识别不到的人还是会默认各种点击但是不影响不遮挡界面10秒后就会再次写入下一个名字三、测试中遇到的问题1.从删除名字改成重置名字张X这个孩子存在的就是没有来得及删除× 园园通小班孩子进入后需要分班 1.收集名单 2.读取名单提取班级姓名 3.Python模拟鼠标点击园园通按钮进行分班 import openpyxl import pyautogui import time import pyperclip import pygetwindow as gw # 1. 找到VSCode窗口匹配标题含 Visual Studio Code vscode_wins gw.getWindowsWithTitle(Visual Studio Code) if not vscode_wins: print(未找到VSCode窗口请先打开VSCode再运行) else: win vscode_wins[0] # 自动最小化VSCode win.minimize() print(VSCode已自动最小化你有5秒时间移动鼠标到目标位置) time.sleep(5) # 等待5秒给你放鼠标 import random # 随机休眠1~3秒带小数模拟真人操作 def rand_sleep(): t random.uniform(2, 4) time.sleep(t) # file_path rC:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805班级信息表.xlsx file_path rC:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805小班园园通分班名单.xlsx wb openpyxl.load_workbook(file_path) # 读取表格 for sheet_name in wb.sheetnames: ws wb[sheet_name] for row in ws.iter_rows(min_row2, values_onlyTrue): if len(row) 4: continue name row[2] if not name or str(name).strip() : continue class_name row[1] # garden_name row[1] # data_list.append([class_name, name]) # print(name) # print(class_name) # 进入园园通界面 # 点击姓名栏 pyautogui.click(839,368) # 1. 复制指定文字到剪贴板 # print(写入姓名:,name) pyperclip.copy(name) # 2. 模拟CtrlV粘贴 pyautogui.hotkey(ctrl, v) rand_sleep() # 延迟2秒切换窗口 # 搜索 pyautogui.click(1163,433) rand_sleep() # 点击分班 pyautogui.click(1765,619) rand_sleep() # 选择园区如果等于总园就点击第X个 # pyautogui.click(923,599) # rand_sleep() # if garden_name总园: # for i in range(1): # pyautogui.press(down)# 按下↓ # elif garden_name二分园: # for i in range(2): # pyautogui.press(down)# 按下↓ # elif garden_name一分园: # for i in range(3): # pyautogui.press(down)# 按下↓ # pyautogui.press(Enter)# 按回车 # 选择年级如果等于小班托班或中班大班就点击第X个未测试点几下 # pyautogui.click(923,599) # time.sleep(1) # grade_nameclass_name[0]class_name[2] # if grade_name托班: # for i in range(1): # pyautogui.press(down)# 按下↓ # elif grade_name小班: # for i in range(2): # pyautogui.press(down)# 按下↓ # elif grade_name中班: # for i in range(3): # pyautogui.press(down)# 按下↓ # elif grade_name大班: # for i in range(3): # pyautogui.press(down)# 按下↓ # pyautogui.press(Enter)# 按回车 # 选择班级如果等于小1班 小2班 小3班就点击第X个 pyautogui.click(880,681) time.sleep(1) if class_name小1班: for i in range(1): pyautogui.press(down)# 按下↓ elif class_name小2班: for i in range(2): pyautogui.press(down)# 按下↓ elif class_name小3班: for i in range(3): pyautogui.press(down)# 按下↓ elif class_name 小4班: for i in range(2): pyautogui.press(down)# 按下↓ elif class_name小5班: for i in range(1): pyautogui.press(down)# 按下↓ pyautogui.press(Enter)# 按回车 rand_sleep() # 确认回到最初的界面 pyautogui.click(1184,795) rand_sleep() # # 清空名字点击× # pyautogui.click(1049,376) # rand_sleep() # 清空名字点重制 pyautogui.click(1259,443) rand_sleep() wb.close() # 自动最大化VSCode win.maximize() print(VSCode已自动最大化程序结束)2.程序中断的处理邓和张的情况导致程序打断了如果重新运行就会从第一个开始已经做过了只显示“查看功能”运行后15行还是张X由于张X已经运行做过了右侧不是“查看、分班、转出”。而只有一个“查看”。程序就点击的“查看”但是弹出的查看表里面没有确认按钮弹出的表一直悬浮无法继续“重置”写入第二人姓名弹出的表没有关闭按钮右上角X关闭改成从16行开始 园园通小班孩子进入后需要分班 1.收集名单 2.读取名单提取班级姓名 3.Python模拟鼠标点击园园通按钮进行分班 import openpyxl import pyautogui import time import pyperclip import pygetwindow as gw # 1. 找到VSCode窗口匹配标题含 Visual Studio Code vscode_wins gw.getWindowsWithTitle(Visual Studio Code) win None if not vscode_wins: print(未找到VSCode窗口请先打开VSCode再运行) else: win vscode_wins[0] # 自动最小化VSCode win.minimize() print(VSCode已自动最小化你有5秒时间移动鼠标到目标位置) time.sleep(5) # 等待5秒给你放鼠标 import random # 随机休眠2~4秒带小数模拟真人操作 def rand_sleep(): t random.uniform(2, 4) time.sleep(t) file_path rC:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805小班园园通分班名单.xlsx wb openpyxl.load_workbook(file_path) # 读取表格 for idx_sheet, sheet_name in enumerate(wb.sheetnames): ws wb[sheet_name] # 第一张工作表从15行开始其他工作表跳过表头从第2行开始 if idx_sheet 0: start_row 16 print(f【第一张表 {sheet_name}】从Excel第15行开始处理) else: start_row 2 print(f【工作表 {sheet_name}】跳过表头从第2行开始) for row in ws.iter_rows(min_rowstart_row, values_onlyTrue): if len(row) 4: continue name row[2] if not name or str(name).strip() : continue class_name row[1] print(f正在处理姓名{name}班级{class_name}) # 点击姓名栏 pyautogui.click(839,368) pyperclip.copy(name) pyautogui.hotkey(ctrl, v) rand_sleep() # 搜索 pyautogui.click(1163,433) rand_sleep() # 点击分班 pyautogui.click(1765,619) rand_sleep() # 选择班级下拉 pyautogui.click(880,681) rand_sleep() if class_name 小1班: for i in range(1): pyautogui.press(down) elif class_name 小2班: for i in range(2): pyautogui.press(down) elif class_name 小3班: for i in range(3): pyautogui.press(down) elif class_name 小4班: for i in range(2): pyautogui.press(down) elif class_name 小5班: for i in range(1): pyautogui.press(down) pyautogui.press(Enter) rand_sleep() # 确认保存 pyautogui.click(1184,795) rand_sleep() # 重置表单 pyautogui.click(1259,443) rand_sleep() wb.close() if win is not None: win.maximize() print(VSCode已自动最大化程序结束)2.“保存”后有延时需要拉长保存时间感觉修改后确认 退出弹框的时间2-4秒不行要固定5秒有延时测试小1班最后一个孩子结果没有此人没有这个孩子程序会自动点击各种按钮最后还是可以进入下一个界面。但是我可能会不清楚这个孩子没有遍历过。Python不如uibot能识别图像进行判断并写出这个孩子。只能默默等它全部点完。执行下一个名字。四合计用时——40分钟125调数据我设置的延时2-4秒随机所以一个孩子也要20-30分钟加上中间有2次修改大约20分钟所以实际用40分钟左右完成分班。五问题名字。所有孩子都分班后还剩两个孩子。查询名单看到相似的名字1、输入字同音字外形不同——以“园园通名字”为准3.“煕”断开和“熙”粘合还有一个孩子教师写的名字和园园通的名字看上去一样我不能理解为什么excle不能识别最后我把两个字放大仔细看“臣”里面的左竖有点断开下面的“熙”不断开这两个字实在太像了并且字库都存在通常不会有家长给孩子取“断开的煕”所以我们默认就是班主任手打名字的时候选错了“熙”。只有Python程序识别出来字体细微差异肉眼根本看不出差异。五分班完成幼儿右侧显示查看而不是分班每个班级25人四、制作18个班级总表最后把小班的信息复制到18个班级的总表里便于游戏做点名册——哭今年减了2个班孩子人数越来越少了。检查其他年级老师填写的内容有的老师为了好看两个名字中间有空格但是我还是把他们都取消。因为幼儿收据账单上不会有空格。差不多现在两个名字的孩子真少两张多人编辑一张小班园园通插班表一张19个班级信息合并表。小班表我不想用了。向取消掉。豆包给的方案把小班收集表变成查看这样就不能再编辑了。默认作废。

相关新闻

【C语言3】流程控制(分支结构、循环结构)

【C语言3】流程控制(分支结构、循环结构)

文章目录3.流程控制(分支结构、循环结构)3.1 流程的结构种类3.2 顺序结构3.3 分支结构3.3.1 if 分支3.3.2 switch 分支3.3 循环结构3.3.1 for循环3.3.2 while 循环3.3.3 do...while 循环3.3.4 goto循环3.3.5 循环嵌套3.3.6 循环辅助语句此处为C语言汇总版…

2026/9/21 14:38:17 阅读更多 →
TVA-VLA架构:具身智能规模化落地关键支撑(9)

TVA-VLA架构:具身智能规模化落地关键支撑(9)

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“TVA视觉智能体”或“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的通用视觉技术框架。它深度融合深度强化学习(DRL)、卷积…

2026/9/22 19:24:51 阅读更多 →
C++游戏开发实战:从状态机到组件化架构的SFML项目构建

C++游戏开发实战:从状态机到组件化架构的SFML项目构建

1. 项目概述:从零到一,用C和SFML构建你的第一个游戏世界 如果你对C充满好奇,同时又对游戏开发抱有热情,那么“C游戏编程入门”这个系列就是为你量身打造的。这不是一本枯燥的语法教科书,而是一张通往亲手创造游戏世界的…

2026/9/21 14:38:29 阅读更多 →

最新新闻

Formily Vue 自定义组件开发:useField Hook 读取与操作字段状态完全指南

Formily Vue 自定义组件开发:useField Hook 读取与操作字段状态完全指南

前端UI组件 【免费下载链接】formily 📱🚀 🧩 Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3 项目地址: https://gitcode.com/gh_mirrors…

2026/9/24 7:29:04 阅读更多 →
CANTP六大时间参数配置原理与实战调优

CANTP六大时间参数配置原理与实战调优

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

2026/9/24 7:29:04 阅读更多 →
一段语音是如何进入人工神经网络的?

一段语音是如何进入人工神经网络的?

一段语音是如何进入人工神经网络的?语音人工神经网络的前端处理是语音识别、语音合成、语音增强等任务中的关键环节。前端处理包括:语音预处理 特征提取图1、语音输入到Transformer中语音预处理大致总流程如图:图2、语音预处理框架一&#xf…

2026/9/24 7:29:04 阅读更多 →
自动修音软件推荐:录完歌后,如何把人声修得更稳、更自然?

自动修音软件推荐:录完歌后,如何把人声修得更稳、更自然?

很多人第一次在家录歌都会遇到类似问题:旋律大体是对的,情绪也有,但回放时发现几个尾音偏高或偏低,换气处节奏不够稳,人声还显得干、薄、贴不进伴奏。没有专业录音棚,也不熟悉混音流程,这时就会…

2026/9/24 7:29:04 阅读更多 →
端侧AI芯片的范式革命:场景驱动定制化设计

端侧AI芯片的范式革命:场景驱动定制化设计

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

2026/9/24 7:29:04 阅读更多 →
国产X86服务器处理器:架构授权、指令集兼容与性能调优全解析

国产X86服务器处理器:架构授权、指令集兼容与性能调优全解析

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

2026/9/24 7:28:03 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →