Java+微信小程序+SSM小区管理系统毕设实战指南
简介本资源是一套完整的毕业设计实战项目面向计算机专业本科生及Java全栈初学者聚焦微信小程序与SSM后端协同开发的小区管理场景。系统采用前后端分离架构后端基于SSMSpringSpringMVCMyBatis框架JDK 1.8开发MySQL存储前端含Vue编写的管理后台页面与原生微信小程序客户端覆盖管理员含房屋、维修、公告、入住等10类管理模块与用户注册登录、报修投诉、信息查询等双角色业务流。资源包共786个文件33.82MB包含98个Java核心业务类、129个Vue组件、123个PNG/SVG图标资源、75个JS交互脚本、30个WXML/WXSS小程序页面文件、1个SQL建库脚本及1个完整docx论文另有答辩PPT、开题报告、环境工具包与同框架安装教程文档。目前已有85人学习下载提供从开发环境搭建、源码运行、数据库初始化到功能验证的全流程支撑结构清晰、注释规范适合作为课程设计参考或求职项目复用。1. 为什么毕业设计选「Java 微信小程序 SSM」做小区管理系统不是跟风而是真能落地你手头正卡在毕业设计开题阶段导师说“得有前后端、得有真实业务、得能演示”但又不许用现成SAAS系统套壳同学在卷Spring BootVue你却想稳一点——SSMSpring SpringMVC MyBatis结构清晰、教学资源多、面试官也认更关键的是用户真要用业主扫码进小程序查公告、报修、缴物业费保安在后台Java系统里派单、审核、统计。这不是炫技是让一个“小区”在你本地跑起来微信小程序负责触达轻量、免安装、消息直达Java后端负责稳住事务、权限、并发、日志SSM框架就是那根承重梁——不新不旧文档全、报错明、改起来不玄学。适合本科毕设的从来不是最酷的而是改三行代码就能看到效果、查五条日志就能定位问题、部署到学生机房Linux服务器上不崩的组合。这篇笔记就带你从零搭起这个闭环不是照抄GitHub某仓库而是按毕设真实节奏——先理清模块边界再逐个打通微信登录→物业缴费→报修工单→后台管理每一步都标出哪些是必须写的、哪些可砍、哪些是答辩时老师最爱问的坑。2. 搭建SSM后端从依赖配置到数据库建模避开MyBatis动态SQL翻车点2.1 Maven依赖版本锁定为什么用Spring 4.3.28.RELEASE而不是5.xSSM组合对版本兼容性极敏感。Spring 5.x要求JDK 8且默认启用CGLIB代理而MyBatis 3.4.x与Spring 4.3.x配合最稳定尤其SqlSessionFactoryBean初始化逻辑成熟。毕设环境常见JDK 1.8 Tomcat 8.5强行升Spring 5会导致Transactional失效或MapperScannerConfigurer找不到Bean。pom.xml核心片段删减非必要依赖properties spring.version4.3.28.RELEASE/spring.version mybatis.version3.4.6/mybatis.version mybatis-spring.version1.3.2/mybatis-spring.version mysql-connector-java.version5.1.47/mysql-connector-java.version /properties dependencies !-- Spring核心 -- dependency groupIdorg.springframework/groupId artifactIdspring-context/artifactId version${spring.version}/version /dependency !-- SpringMVC -- dependency groupIdorg.springframework/groupId artifactIdspring-webmvc/artifactId version${spring.version}/version /dependency !-- MyBatis整合 -- dependency groupIdorg.mybatis/groupId artifactIdmybatis-spring/artifactId version${mybatis-spring.version}/version /dependency !-- MySQL驱动注意5.1.x系列兼容性最好8.0需额外配置serverTimezone -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version${mysql-connector-java.version}/version /dependency /dependencies提示mysql-connector-java必须用5.1.47而非8.0.x。否则启动时报java.sql.SQLException: The server time zone value UTC is unrecognized——这是毕设高频翻车点根源是MySQL 8.0默认时区配置变更而SSM项目未在URL中显式声明serverTimezoneGMT%2B8。用5.1.47可绕过此问题省去调试时间。2.2 数据库建模从业务场景反推表结构拒绝“为建表而建表”小区管理系统核心实体就四个user业主/管理员/保安、repair_order报修单、notice公告、payment_record缴费记录。不要一上来就建10张表毕设答辩看的是逻辑闭环不是ER图复杂度。我们按最小可行集设计表名字段关键说明t_userid,open_id,nickname,phone,role,building_no,unit_no,room_noopen_id存微信授权登录后的唯一标识role用tinyint(1)0业主1保安2物业管理员building_no/unit_no/room_no用于快速筛选本楼栋报修单t_repair_orderid,user_id,title,content,status,create_time,handle_time,handler_idstatus0待受理1处理中2已完成3已关闭handler_id关联t_user.id实现指派逻辑t_noticeid,title,content,publish_time,publisher_id公告发布人即t_user.id无需单独管理员表t_payment_recordid,user_id,fee_type,amount,pay_time,statusfee_type0物业费1水电费2停车费status0未缴1已缴建表SQL示例MySQL 5.7CREATE TABLE t_user ( id bigint(20) NOT NULL AUTO_INCREMENT, open_id varchar(64) DEFAULT NULL COMMENT 微信open_id, nickname varchar(50) DEFAULT NULL COMMENT 微信昵称, phone varchar(11) DEFAULT NULL COMMENT 手机号, role tinyint(1) NOT NULL DEFAULT 0 COMMENT 角色0业主,1保安,2管理员, building_no varchar(10) DEFAULT NULL COMMENT 楼栋号, unit_no varchar(10) DEFAULT NULL COMMENT 单元号, room_no varchar(10) DEFAULT NULL COMMENT 房间号, PRIMARY KEY (id), UNIQUE KEY uk_open_id (open_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户表; -- 其他表略重点所有datetime字段用datetime类型避免timestamp时区陷阱参数说明CHARSETutf8mb4支持微信昵称中的emojiUNIQUE KEY uk_open_id确保同一微信用户只注册一次datetime类型比timestamp更可控——后者会自动转换时区导致查询时间错乱。2.3 MyBatis映射文件避坑if嵌套与where的正确打开方式SSM中MyBatis XML写法极易出错。例如查询报修单列表需按状态楼栋号筛选新手常写!-- 错误写法WHERE 11 导致全表扫描风险 -- select idselectRepairList resultTypeRepairOrder SELECT * FROM t_repair_order WHERE 11 if teststatus ! null and status ! -1 AND status #{status} /if if testbuildingNo ! null and buildingNo ! AND user_id IN (SELECT id FROM t_user WHERE building_no #{buildingNo}) /if /select问题WHERE 11在无条件时仍执行且子查询效率低。正确写法用where自动处理ANDselect idselectRepairList resultTypeRepairOrder SELECT r.*, u.nickname, u.room_no FROM t_repair_order r LEFT JOIN t_user u ON r.user_id u.id where if teststatus ! null and status ! -1 r.status #{status} /if if testbuildingNo ! null and buildingNo ! AND u.building_no #{buildingNo} /if /where ORDER BY r.create_time DESC /select逻辑说明where标签会智能去掉第一个ANDLEFT JOIN比子查询性能高且能直接获取业主昵称和房号避免小程序端二次请求ORDER BY必须显式声明否则MySQL 5.7默认不保证顺序。3. 微信小程序前端从登录态维护到API联调解决“拿不到手机号”和“顶部导航栏高度错位”3.1 登录流程闭环wx.login()→code2Session→ 后端生成token拒绝前端存open_id小程序登录不是简单调wx.login()而是三步链路小程序端调wx.login()获取临时code将code传给Java后端后端用appidappsecretcode向微信接口https://api.weixin.qq.com/sns/jscode2session换取open_id和session_key后端生成JWT token返回小程序存入wx.setStorageSync(token)后续所有请求带Authorization: Bearer xxx。Java后端LoginController关键代码RestController RequestMapping(/api/login) public class LoginController { Value(${wechat.appid}) private String appId; Value(${wechat.secret}) private String secret; PostMapping(/code2session) public Result login(RequestParam String code) { // 1. 调用微信接口换open_id String url https://api.weixin.qq.com/sns/jscode2session?appid appId secret secret js_code code grant_typeauthorization_code; String response HttpUtil.get(url); // 使用工具类发HTTP GET JSONObject json JSON.parseObject(response); if (json.containsKey(errcode)) { return Result.fail(微信登录失败 json.getString(errmsg)); } String openId json.getString(openid); String sessionKey json.getString(session_key); // 2. 查询或创建用户 User user userService.findByOpenId(openId); if (user null) { user new User(); user.setOpenId(openId); user.setRole((byte) 0); // 默认业主 userService.save(user); } // 3. 生成JWT使用jjwt库 String token Jwts.builder() .setSubject(user_ user.getId()) .claim(openId, openId) .setExpiration(new Date(System.currentTimeMillis() 7 * 24 * 3600 * 1000)) // 7天过期 .signWith(SignatureAlgorithm.HS256, your-secret-key) .compact(); return Result.success(Map.of(token, token, userId, user.getId())); } }参数说明HttpUtil.get()是封装的HTTP工具类避免用RestTemplate引入过多依赖JWT密钥your-secret-key需替换为实际字符串setExpiration设7天符合毕设演示周期避免频繁重登。3.2 获取手机号button open-typegetPhoneNumber的后端解密逻辑微信要求手机号解密必须在服务端完成。小程序点击按钮获取encryptedData和iv传给Java后端PostMapping(/decryptPhone) public Result decryptPhone(RequestBody MapString, String params) { String encryptedData params.get(encryptedData); String iv params.get(iv); String token request.getHeader(Authorization).replace(Bearer , ); // 1. 解析JWT获取open_id Claims claims Jwts.parser().setSigningKey(your-secret-key) .parseClaimsJws(token).getBody(); String openId (String) claims.get(openId); // 2. 调用微信接口解密需先通过code2Session拿到session_key // 注意此处session_key需从缓存中根据open_id获取不能每次调用都重新请求 String sessionKey redisService.get(session_key: openId); if (StringUtils.isBlank(sessionKey)) { return Result.fail(session_key已过期请重新登录); } // 3. AES解密使用commons-codec try { byte[] keyBytes Base64.decodeBase64(sessionKey); byte[] encryptedBytes Base64.decodeBase64(encryptedData); byte[] ivBytes Base64.decodeBase64(iv); SecretKeySpec keySpec new SecretKeySpec(keyBytes, AES); Cipher cipher Cipher.getInstance(AES/CBC/PKCS5Padding); cipher.init(Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(ivBytes)); byte[] result cipher.doFinal(encryptedBytes); String phoneJson new String(result, StandardCharsets.UTF_8); JSONObject phoneObj JSON.parseObject(phoneJson); String phoneNumber phoneObj.getString(phoneNumber); // 4. 更新用户手机号 User user userService.findByOpenId(openId); user.setPhone(phoneNumber); userService.updateById(user); return Result.success(Map.of(phone, phoneNumber)); } catch (Exception e) { log.error(手机号解密失败, e); return Result.fail(解密失败请重试); } }逻辑说明session_key必须缓存Redis因为微信接口不提供长期有效的key解密失败常见原因是iv或encryptedData未Base64解码或session_key已过期phoneNumber字段在phoneJson中不是根对象。3.3 顶部导航栏适配wx.getSystemInfoSync().statusBarHeight的正确用法微信小程序顶部导航栏高度在iPhone X及以上机型为88px状态栏20px 导航栏68px安卓机多为68px。硬写height: 88px会导致安卓机留白。正确做法是动态计算// app.js 或页面onLoad中 const systemInfo wx.getSystemInfoSync(); const statusBarHeight systemInfo.statusBarHeight; const navHeight statusBarHeight 46; // 46是导航栏内容区高度微信默认 // WXML中 view classnav-bar styleheight: {{navHeight}}px; padding-top: {{statusBarHeight}}px; text classnav-title我的小区/text /view // WXSS .nav-bar { width: 100%; background: #4CAF50; color: white; display: flex; align-items: center; justify-content: center; position: fixed; top: 0; z-index: 999; } .nav-title { font-size: 17px; font-weight: bold; }参数说明statusBarHeight是状态栏高度iPhone X为44px但getSystemInfoSync()返回20px因单位是px而非rpx46px是微信原生导航栏内容区高度实测稳定position: fixed确保滚动时不消失。4. 前后端联调与权限控制用拦截器实现角色路由拒绝“保安能删公告”的越权操作4.1 JWT Token校验拦截器HandlerInterceptor拦截未登录和过期请求SSM中权限控制不能只靠前端隐藏按钮必须后端拦截。创建JwtInterceptorComponent public class JwtInterceptor implements HandlerInterceptor { Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String authHeader request.getHeader(Authorization); if (authHeader null || !authHeader.startsWith(Bearer )) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.getWriter().write({\code\:401,\msg\:\未登录\}); return false; } String token authHeader.substring(7); try { Jwts.parser().setSigningKey(your-secret-key).parseClaimsJws(token); } catch (ExpiredJwtException e) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.getWriter().write({\code\:401,\msg\:\登录已过期\}); return false; } catch (Exception e) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.getWriter().write({\code\:401,\msg\:\Token无效\}); return false; } return true; } }注册拦截器SpringMVC配置Configuration public class WebConfig implements WebMvcConfigurer { Autowired private JwtInterceptor jwtInterceptor; Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(jwtInterceptor) .excludePathPatterns(/api/login/**, /api/public/**) // 登录和公开接口放行 .addPathPatterns(/api/**); // 其他所有/api路径拦截 } }逻辑说明excludePathPatterns必须包含/api/login/**否则登录接口自己都进不来addPathPatterns(/api/**)覆盖所有业务接口response.getWriter().write()直接输出JSON避免视图解析开销。4.2 角色权限拦截PreAuthorize太重用自定义注解反射更轻量Spring Security对毕设过重。我们用自定义注解RequireRoleTarget({ElementType.METHOD, ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) public interface RequireRole { byte[] value() default {0}; // 0业主,1保安,2管理员 }切面类RoleCheckAspectAspect Component public class RoleCheckAspect { Around(annotation(requireRole)) public Object checkRole(ProceedingJoinPoint joinPoint, RequireRole requireRole) throws Throwable { HttpServletRequest request HttpContextUtils.getHttpServletRequest(); String token request.getHeader(Authorization).substring(7); Claims claims Jwts.parser().setSigningKey(your-secret-key) .parseClaimsJws(token).getBody(); Long userId Long.parseLong(claims.getSubject().replace(user_, )); User user userService.getById(userId); byte userRole user.getRole(); // 检查是否在允许角色列表中 boolean hasPermission Arrays.stream(requireRole.value()) .anyMatch(r - r userRole); if (!hasPermission) { throw new RuntimeException(权限不足); } return joinPoint.proceed(); } }Controller中使用RestController RequestMapping(/api/notice) public class NoticeController { PostMapping RequireRole({2}) // 只有管理员role2能发公告 public Result publish(RequestBody Notice notice) { notice.setPublisherId(getCurrentUserId()); noticeService.save(notice); return Result.success(); } GetMapping(/list) RequireRole({0, 1, 2}) // 所有角色都能看公告 public Result list() { return Result.success(noticeService.list()); } }参数说明RequireRole({2})表示仅role2可访问RequireRole({0,1,2})表示全员可读getCurrentUserId()从JWT中提取避免重复解析。4.3 避坑SSM项目中常见的5个权限与联调陷阱现象1小程序调接口返回401但token明明没过期原因Authorizationheader未正确传递或前端request未设置header字段。解决在小程序wx.request中显式设置wx.request({ url: https://your-domain.com/api/notice/list, method: GET, header: { Authorization: Bearer wx.getStorageSync(token) }, success: (res) { console.log(res.data) } })现象2保安账号能访问/api/user/delete删除业主原因拦截器未覆盖该路径或RequireRole注解漏加。解决检查WebConfig中addPathPatterns是否包含/api/user/**所有修改用户数据的接口必须加RequireRole({2})。现象3MySQL插入中文变??原因数据库、表、字段字符集未统一为utf8mb4或JDBC URL缺少useUnicodetruecharacterEncodingutf8。解决建库时执行CREATE DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;JDBC URL追加?useUnicodetruecharacterEncodingutf8serverTimezoneGMT%2B8。现象4MyBatis更新语句不生效日志显示SQL但数据库无变化原因事务未提交或Transactional注解未加在Service层方法上。解决确保Service方法上有Transactional检查spring-tx依赖是否引入开启MyBatis日志log4j.logger.org.apache.ibatisDEBUG确认SQL执行。现象5微信登录后open_id存入数据库但再次登录时findByOpenId查不到原因open_id字段长度不足微信open_id最长32位但部分旧版SDK返回更长或数据库字段类型为varchar(20)。解决t_user.open_id字段改为varchar(64)插入前用StringUtils.trimToEmpty(openId)去空格。5. 毕设交付物打包与答辩话术源码、文档、教程三件套怎么组织才让老师眼前一亮5.1 源码包结构按“可运行最小集”组织删掉所有IDE配置文件毕设源码不是Git仓库快照而是老师双击就能跑的压缩包。结构必须精简小区管理系统-毕设/ ├── backend/ # Java后端Eclipse/IDEA均可导入 │ ├── src/ │ ├── pom.xml │ └── webapp/ # web.xml static jsp如有 ├── frontend/ # 微信小程序源码.miniprogram目录 │ ├── project.config.json │ ├── app.js │ ├── pages/ │ └── utils/ ├── docs/ │ ├── 数据库设计说明书.md # 含ER图用draw.io导出PNG、建表SQL、字段说明 │ ├── 接口文档.md # Swagger截图或Markdown表格接口路径、请求方式、参数、返回示例 │ └── 部署手册.md # Tomcat配置、MySQL建库、小程序AppID填哪里、如何启动 └── README.md # 一行说明本系统基于SSM微信小程序实现小区公告、报修、缴费功能含完整源码与文档关键动作删除.idea/、.project、.settings/等IDE专属目录frontend/中只保留.miniprogram目录微信开发者工具识别的工程结构删掉node_modulesdocs/中所有图片用PNG格式避免PDF嵌入字体问题README.md第一行必须是功能摘要老师扫一眼就知道你做了什么。5.2 文档写作心法用“问题-方案-效果”代替“功能列表”老师不想看“本系统有5大模块”而想听“为什么需要这个功能你怎么解决的结果怎样”。例如传统写法扣分项改进写法加分项“系统包含报修模块”“业主报修后常因信息不全导致维修延误问题。本系统强制填写故障类型、照片、联系人后端校验必填字段并推送消息给对应楼栋保安方案。测试显示平均响应时间从2小时缩短至15分钟效果。”“使用JWT进行认证”“为防止Token被窃取采用JWTRedis黑名单机制用户登出时将token存入Redis并设15分钟过期方案。压力测试下100并发登录无token泄露效果。”参数说明每个功能点按“问题-方案-效果”三句话写不超过50字效果尽量量化时间、百分比、次数问题要真实如“业主找不到物业电话”“保安手工登记易遗漏”。5.3 教程视频录制技巧聚焦“3个必演操作”避开环境配置雷区答辩现场演示最怕环境崩。只录3个必演操作其他用截图小程序端扫码进入 → 点击“我要报修” → 上传照片 → 提交 → 弹出“提交成功”后台管理页用Chrome访问http://localhost:8080/admin→ 输入管理员账号 → 进入“报修单列表” → 点击“处理” → 状态变为“处理中”数据库验证Navicat连接 → 查t_repair_order表 → 确认新记录status0→ 再查t_payment_record确认缴费记录生成。血泪经验录制前关闭所有无关软件禁用杀毒软件实时扫描演示用Chrome隐身模式避免缓存干扰视频开头说“当前演示环境Windows 10 JDK 1.8 Tomcat 8.5 MySQL 5.7 微信开发者工具 Stable 1.06.2303150”不演示mvn install或npm install这些步骤写在部署手册.md里。5.4 答辩终极话术当老师问“这个系统有什么创新点”别硬编“区块链”“AI预测”。真诚回答“创新点不在技术栈而在业务闭环的完整性。市面上多数小区系统只做缴费或只做公告而本系统打通了‘业主发起报修→保安接单→管理员派工→业主评价’全流程并全部跑通微信小程序与Java后端的数据链路。比如保安在后台点击‘处理’小程序端业主立刻收到模板消息提醒——这个实时性是通过微信模板消息APIJava异步任务实现的不是轮询。”然后立刻补一句“当然作为本科毕设我清楚它离商用还有距离。比如没有做消息推送的失败重试也没有对接微信支付——这些我在‘后续优化’章节写了如果老师有兴趣我可以展开讲。”为什么有效承认局限反而显专业把“没做支付”转化为“有明确优化路径”用具体技术点模板消息API异步任务证明你真懂结尾把主动权交给老师引导深入交流。我带过三届毕设最打动老师的永远不是“我用了最新框架”而是“我解决了哪个真实小问题并且知道它还能怎么更好”。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Text-to-CAD实战解析:从自然语言到三维模型的生成原理与避坑指南

Text-to-CAD实战解析:从自然语言到三维模型的生成原理与避坑指南

1. 非标设计的一天,从一段描述开始做机械设计或者产品结构设计的人,应该都有过这种经历:脑子里想得清清楚楚的一个零件——比如一块带折弯的钣金支架、四个安装孔、一个加强筋——打开CAD软件之后,却要先选基准面、画草图、标约束、拉伸、切除、倒角,一顿操作下来十分钟过去了,…

2026/10/9 14:31:57 阅读更多 →
PIC18F87J10与PCA9422协同实现电池供电系统的动态电源管理

PIC18F87J10与PCA9422协同实现电池供电系统的动态电源管理

做电池供电的便携设备时,电源管理往往比业务逻辑更让人头疼。之前我把 PCA9422 和 PIC18F87J10 搭在一起做了一套完整的电源管理方案,从硬件设计、I2C 配置、动态调压到低功耗切换都实际跑了一遍。这篇文章就是这次实践的整体记录,核心思路是…

2026/10/9 14:30:56 阅读更多 →
机械设计必看:CATIA、SolidWorks、UG、Pro/E四款软件选型解析

机械设计必看:CATIA、SolidWorks、UG、Pro/E四款软件选型解析

这标题一看就是刚入行的朋友最喜欢问的问题。我当年也是这么过来的,在宿舍里把四款软件装了个遍,挨个折腾,最后才明白一个道理: 没有“最顺手”的软件,只有“最适合你当前做的事情”的软件。 拿着CATIA去画一个简单的…

2026/10/9 14:30:56 阅读更多 →

最新新闻

CFF_Explorer 入门:PE 结构、导入导出表与样本初筛实战指南

CFF_Explorer 入门:PE 结构、导入导出表与样本初筛实战指南

简介:这是一份面向逆向工程师、安全研究人员及程序员的 Windows 文件格式分析工具资源包,聚焦 PE/COFF/NE 文件的结构解析与编辑。包内提供 CFF Explorer 主程序,并配有处理器架构签名 XML、扩展模块与示例脚本,可查看节区、资源、…

2026/10/9 14:59:31 阅读更多 →
CrystalReports 10.5 安装包完整指南:兼容性、静默部署与运行时验证

CrystalReports 10.5 安装包完整指南:兼容性、静默部署与运行时验证

简介:本资源为SAP Crystal Reports 10.5官方运行时安装包,面向企业开发人员、报表维护工程师及.NET/Windows平台应用集成者,解决在无完整设计环境情况下部署与运行水晶报表的核心依赖问题。压缩包共5个文件,含2个MSI运行时安装程序…

2026/10/9 14:59:31 阅读更多 →
收藏必看:让Agent效率提升98.7%!MCP代码执行范式解决token爆炸问题

收藏必看:让Agent效率提升98.7%!MCP代码执行范式解决token爆炸问题

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

2026/10/9 14:59:31 阅读更多 →
数控机床数据采集系统方案:数据源、协议与实施避坑指南

数控机床数据采集系统方案:数据源、协议与实施避坑指南

简介:这份PDF方案面向制造企业信息化人员、MES系统集成工程师及数控机床数据采集二次开发者,系统阐述数据采集系统的整体架构与开发要求。资源共1个PDF文件,压缩包大小1.62MB,内容完整精炼。目前已有653人学习下载。方案详细说明B…

2026/10/9 14:59:31 阅读更多 →
Linux嵌入式I2C触摸屏调试全链路指南

Linux嵌入式I2C触摸屏调试全链路指南

1. 项目概述:一块触摸屏如何在Linux里“开口说话”I2C总线上的触摸屏,不是插上就能用的USB设备,它更像一个需要你亲手“唤醒”的沉默伙伴。当你把一块电容式或电阻式触摸屏焊接到开发板上,接好SCL/SDA两根线,通电后屏幕…

2026/10/9 14:59:31 阅读更多 →
智慧工地解决方案PPT落地指南:感知层、网络供电与数据模型

智慧工地解决方案PPT落地指南:感知层、网络供电与数据模型

简介:这份智慧工地解决方案PPT面向建筑施工企业管理者、项目安全负责人及信息化建设人员,围绕传统工地监管体制不健全、安全事故频发等痛点,系统梳理了物联网、BIM、VR、大数据与云计算等关键技术的落地路径。资源共1个pptx文件,压…

2026/10/9 14:58:30 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/9 6:17:20 阅读更多 →