- 博客(224)
- 资源 (2)
- 收藏
- 关注
原创 MES 多工序追溯实战:基于产品 ID 与批次 ID 的正向与逆向追溯设计
标识统一:产品 ID 管单件,批次 ID 管批量,两者通过关系表打通。关系显式:投料关系、批次流转关系单独建表,正向逆向都基于同一张关系图。采集前置:扫码绑定、工序校验、不可变记录,保证链路从源头就是完整的。数据库设计上不必追求大而全,先把productlot五张表做扎实,再通过快照和缓存解决性能问题,就能支撑起一条清晰、可双向行走的追溯链路。
2026-10-26 16:54:40
110
原创 WebSocket 使用场景与实现方法:Java + Vue3 全栈实战
WebSocket 解决的是 HTTP 无法主动推送的问题,在聊天、通知、实时数据、协同编辑等场景中几乎是标配。服务端做好会话管理,支持定向推送与广播,并考虑多实例下的消息路由。前端封装连接逻辑,统一处理心跳、重连和消息解析,避免组件内重复造轮子。重视生产环境细节,包括 wss 协议、鉴权方式、心跳保活和消息幂等。把上面的 Java 端点和 Vue3 组合式函数跑通后,就可以在此基础上扩展群组、离线消息、消息已读等更完整的业务能力。
2026-10-26 16:26:48
255
原创 Java 高效导出 200 万条数据到 Excel:异步、分片与下载全流程实践
用流式写入控制内存,用游标分页控制数据库压力,用异步任务和独立线程池隔离主业务,用任务表 + 轮询/SSE 解决通知,用多文件 + ZIP 解决单文件容量上限,用对象存储解决大文件传输。把这几个环节都做对,系统在导出 200 万行时依然能保持平稳,用户也能清楚地知道“任务进行到哪了、文件在哪里下载”。
2026-10-26 16:06:55
267
原创 HBuilderX 运行到微信小程序报错「工具的服务端口已关闭」的完整解决方案
工具的服务端口已关闭」几乎都是因为微信开发者工具的 CLI 服务端口未开启导致的。该端口出于安全考虑默认是关闭的,只有在「设置 → 安全设置」中手动开启后,外部程序才能调用。处理方式:完全退出微信开发者工具(包括托盘图标中的进程),手动启动并重新扫码登录,确认能正常进入项目列表后,再回到 HBuilderX 运行。如果服务端口已经开启,但仍然打不开,需要检查 HBuilderX 中配置的微信开发者工具路径是否正确。开启后,HBuilderX 就能通过 CLI 正常调用微信开发者工具,项目会自动被打开。
2026-10-22 14:22:46
140
原创 若依系统对接第三方单点登录(SSO)实战:业务逻辑、部门用户管理与 Token 生成
在若依中对接第三方单点登录,核心不是「重写登录」,而是「替换身份来源、复用本地鉴权」。把认证交给第三方,把授权和会话留在若依,通过sso_uid做稳定映射,通过部门编码做组织同步,通过复用本地 Token 签发,就能在不大改框架的前提下完成平滑接入。落地时建议按「先跑通认证链路 → 再做用户映射 → 最后补组织同步与单点登出」的顺序推进,每一步都可独立验证,避免一次性改动过大导致排查困难。
2026-10-22 13:14:14
333
原创 Kafka 开发踩坑实录:从“为什么又重平衡“到“同一条消息收到多次“
要点说明Consumer Group 是集群级概念同一个集群里,group-id 相同 = 同一个组Rebalance 影响整个组一个实例上下线,全组暂停多环境必须隔离 group-id或者用不同集群(但成本更高)也可以按应用实例区分但这样每个实例独立组,分区不会分配步骤操作发现1Controller 打断点消息只发送了一次,排除重复投递2检查 ack 代码正常调用,排除 offset 未提交3Consumer 打断点消息 Headers 中有,确认是重试消息4。
2026-10-22 11:24:10
298
原创 若依单体项目对接 Kafka 集群:异步解耦 MES 设备消息完整实战方案
环节措施配置/代码Produceracks=all + 幂等Producer发送确认检查异常Broker多副本 + 最小同步副本Broker禁止脏选举Consumer手动提交 offsetConsumer处理成功才 ack在 try 末尾Consumer重试 + 死信业务层幂等校验msg_id唯一索引极端情况本地日志兜底Producer 发送失败时写本地文件设备接口响应从秒级降到毫秒级 — Controller 只做发消息,立即返回消息零丢失。
2026-10-22 10:51:16
501
原创 ERP系统全景解析:核心模块与业务逻辑框架
销售是起点——告诉企业"要卖什么、卖给谁"采购和生产是支撑——告诉企业"要买什么、造什么"库存是枢纽——所有物料流动都经过它财务是终点——所有业务最终沉淀为钱销售/采购/生产 → 驱动 → 库存变动 → 触发 → 财务凭证 → 输出 → 报表决策选型建议贸易型公司:销售 + 采购 + 库存 + 财务 四模块就够制造型企业:必须上生产(BOM/MRP)+ 成本核算成长型企业:先跑通核心链路,再逐步加CRM、HR、BI等扩展模块好的ERP不是功能最多的,而是数据流最顺的。
2026-10-21 16:52:26
109
原创 ERP库存管理系统设计全解:从库存记录到一致性保障
问题解决方案怎么记录当前库存库存余额表(inventory),维护可用/锁定/在途等多维度数量怎么记录每次修改库存流水表(inventory_transaction),每笔变更写一条记录怎么保证一致性数据库事务 + 乐观锁(防超卖)+ Redis预扣(高并发)+ 定时对账(最终一致)表怎么设计余额表 + 流水表,通过 sku_id + warehouse_id 关联核心设计原则余额表负责"快查",流水表负责"可溯"所有库存变更必须走统一入口,禁止绕过流水直接改余额。
2026-10-21 16:14:55
190
原创 酒店PMS系统设计:房型房价管理与动态价格优先级实现(Java/MySQL)
酒店PMS系统设计:房型房价管理与动态价格优先级实现一、核心设计理念:房价跟着房型走在酒店PMS(Property Management System)中,房价管理的核心原则是:房价绑定房型,而非绑定具体房间。这样做的好处:房价维护成本低:改一个房型价格,所有该房型房间同步生效库存灵活:只要该房型有空房就能卖,不用逐间定价符合酒店运营习惯:前台/OTA上架的都是房型维度
2026-10-20 16:49:46
74
原创 若依系统集成Kafka
ex -> log.error("消息发送失败: topic={}, message={}, error={}", topic, message, ex.getMessage())log.error("处理用户操作日志失败: {}, error: {}", message, e.getMessage());log.error("处理系统通知失败: {}, error: {}", message, e.getMessage());log.info("接收到用户操作日志: {}", message);
2025-11-26 14:46:26
497
原创 SAAS化实现的三种方式
特性独立数据库共享数据库,独立 Schema共享数据库,共享 Schema隔离性⭐⭐⭐⭐⭐(极强)⭐⭐⭐⭐(强)⭐⭐(依赖代码,风险高)可扩展性⭐⭐(差)⭐⭐⭐(中)⭐⭐⭐⭐⭐(极佳)开发/维护成本⭐(极高)⭐⭐⭐(中)⭐⭐⭐⭐⭐(极低)运维复杂度⭐(极高)⭐⭐⭐(中)⭐⭐⭐⭐⭐(极低)租户定制化⭐⭐⭐⭐⭐(极易)⭐⭐⭐(可定制)⭐(极难)适用阶段大客户/特定行业中大型企业初创及成长期企业。
2025-11-25 16:02:26
584
转载 jquery+html实现查询数据的下拉框
1 $(document).ready(function () { 2 $.ajax({ 3 timeout: 3000, 4 async: false, 5 type: "POST", 6 url: "WareHouse.ashx", 7 dataType: "json", 8
2018-01-19 15:08:04
2951
转载 Java的文件读写操作
file(内存)----输入流---->【程序】----输出流---->file(内存)当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编
2018-01-15 16:33:38
652
转载 SQLSERVER存储过程基本语法
一、定义变量--简单赋值 declare @a intset @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @user1='张三'print @user1 declare @user2 nvarchar(50) select @user2 = Name from ST_User where
2017-11-08 17:23:55
2438
转载 MyBatis中调用存储过程和函数
MyBatis中调用存储过程和函数一.调用存储过程 1.首先在数据库中定义存储过程,定义的存储过程的代码如下: //定义存储过程create or replace procedure pag_add(p1 varchar2,p2 varchar2,p3 out varchar2) as begin p3:=p1+p2;
2017-11-08 16:10:56
2343
原创 Mybatis调用存储过程
service中:List, Object>> DataCompare(Map, Object> map);mapper中:id="DataCompare" parameterType="java.util.Map" resultType="java.util.Map" statementType="CALLABLE"> {call DataCompare(#{Area
2017-11-08 16:10:27
405
原创 简单存储过程的编写
-- ================================================-- Template generated from Template Explorer using:-- Create Procedure (New Menu).SQL---- Use the Specify Values for Template Parameters --
2017-11-08 15:58:40
507
转载 ExtJs控件属性配置详细
ExtJs控件属性配置详细序言: 1.本文摘自网络,看控件命名像是4.0以前的版本,但控件属性配置仍然可以借鉴(不足之处,以后项目用到时再续完善)。Ext.form.TimeField: 配置项: maxValue:列表中允许的最大时间 maxText:当时间大于最大值时的错误提示信息
2017-11-01 15:32:08
667
原创 用下拉组件写下拉框,修改参数的方法
把下拉框的代码写在js中//数据字典下拉控件Ext.ns('uc');uc.cboTDicArea = function (config) { var storeTDicArea = Ext.create('Ext.data.Store', { autoLoad: true, fields: [{name: 'areacode'}, {nam
2017-11-01 15:31:05
1015
转载 SqlServer中in和exists的区别效率问题
in 和existsin是把外表和内表作hash 连接,而exists 是对外表作loop 循环,每次loop 循环再对内表进行查询。一直以来认为exists 比in 效率高的说法是不准确的。如果查询的两个表大小相当,那么用in 和exists 差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A(小表),表B
2017-09-29 16:53:17
1234
原创 redis初识
redis是非关系型数据库的一种不存在关系型数据中表的概念,redis中存储的数据格式支持:Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。启动redis:进去cmd ,D: cd SoftWare\redisredis-server.exe redis.windows.
2017-09-28 08:49:58
388
转载 sql server常用函数
一、字符转换函数1、ASCII()返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。2、CHAR()将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。3、LOWER()和UPPER()LOWER()将字符
2017-09-27 09:41:12
975
原创 ie 浏览器 You're trying to decode an invalid JSON String的问题
明明是{"success":true,"msg":"\u64CD\u4F5C\u6210\u529F!","count":0,"total":0} 正确的json格式在ie上死活都报json解析错误。这边的请求不是一般请求是上传文件的请求,这个请求呢在google浏览器调试也是在doc类型中不在xhr请求中,由此判断这是一个页面请求,返回前台界面是不应该是print.WriteJson
2017-09-26 17:22:32
7697
转载 SqlServer Case When用法
SQL中Case的使用方法(上篇)Case具有两种格式。简单Case函数和Case搜索函数。--简单Case函数CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女'ELSE '其他' END--Case搜索函数CASE WHEN sex = '1' THEN '男'
2017-09-26 16:29:59
1392
转载 StringUtils用法+StringUtils详细介绍
StringUtils用法+StringUtils详细介绍博文来源:http://yijianfengvip.blog.163.com/blog/static/175273432201212221935832/public static void StringUtil(){ //null 和 ""操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2017-09-18 11:11:01
589
转载 mybatis中的mapper接口文件以及example类的实例函数以及详解 转载 2016年03月18日 10:28:46 19170213 [java] view plain copy ##Exa
mybatis中的mapper接口文件以及example类的实例函数以及详解[java] view plain copy##Example example = new ##Example(); example.setOrderByClause("字段名 ASC"); //升序排列,desc为降序排列。 example.setDistinc
2017-09-14 15:34:36
428
转载 SQL 查询当天,本月,本周的记录 ,日期计算
SQL 查询当天,本月,本周的记录SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDER BY dateandtime DESC本月记录 SELECT * FROM 表 WHERE
2017-09-07 17:14:28
3124
转载 SQL SERVER中查询当天、当月、当年数据的SQL语句
在SQL SERVER中如果需要查询出当天、当月和当年的数据,可以通过DATEDIFF函数计算相差时间以获取正确的过滤条件。主要思路是通过DATEDIFF函数计算当前日期与数据日期的天数差、月份差和年数差,如果相差值为0,则表示为当前时间的数据,大于0或小于0则表示数据的时间比当前时间更加早或晚。函数语法:DATEDIFF ( datepart , startdate , endd
2017-09-07 17:00:46
29753
转载 sql server 截取日期
SQL Server DATEPART() 函数SQL Server Date 函数定义和用法DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。语法DATEPART(datepart,date)date 参数是合法的日期表达式。datepart 参数可以是下列的值:datepart
2017-09-07 16:57:46
11954
原创 代码忠告
1.当有业务逻辑相似的业务时考虑重构,封装成一个方法来调用,不然以后有修改时,可能有遗漏,维护起来很麻烦!持续更新。。。。。。。。。。。。。
2017-09-07 11:40:45
347
转载 Ext.form.CheckboxGroup和Ext.form.RadioGroup RadioGroup的获取值和赋值
Ext.form.CheckboxGroup和Ext.form.RadioGroupExt.form.RadioGroup默认值: { boxLabel: 'Item 2', name: 'rb', inputValue: '2', checked: true}, Extjs中RadioGroup的获取值和赋值标签: extjsfunction2010-12-09
2017-09-05 15:53:07
1368
转载 Spring @Transactional (一) 加强版 标签: springexception数据库jdbcjavahibernate 2010-10-21 17:54 38545人阅读 评论(
Spring @Transactional (一) 加强版标签: springexception数据库jdbcjavahibernate2010-10-21 17:54 38545人阅读 评论(5) 收藏 举报 分类:spring(4) Spring事务的传播行为 在service类前加上@Transactional,声明这个servic
2017-09-05 15:35:00
332
原创 maven项目文件存在却找不到class
文件明明在其他项目里存在,却报错说class找不到,模块间的依赖也加上了,折腾了半天,reimport了一下maven搞定了。看来是添加完依赖后,maven的依赖没有刷新
2017-08-28 10:42:50
12726
转载 JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用
JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用1.前沿上一篇文章提到在web.xml中各个元素的执行顺序是这样的,context-param-->listener-->filter-->servlet; 而拦截器是在Spring MVC中配置的,如果从整个项目中看,一个servlet请求的执行过程就变成了这样context-param-->listener-->filter--
2017-08-11 09:07:28
377
转载 MyBatis Generator generatorConfig.xml配置详解
所有Generator的xml详细说明见:http://mybatis.org/generator/configreference/xmlconfig.html (英文版)现在针对generatorConfig.xml配置进行解说,至于其内部元素的详解见英文文档,贴上xml,里面都有注释,大家一看就明白了:[html] view plain copy
2017-08-11 09:05:31
481
转载 javaweb增删改查
赠书 | AI专栏(AI圣经!《深度学习》中文版) 每周荐书:Kotlin、分布式、Keras(评论送书) 【获奖公布】征文 | 你会为 AI 转型么?javaweb增删改查2013-06-08 13:29 3322人阅读 评论(0)收藏举报分类: java Web(19) 作者同类文章X
2017-08-08 11:01:17
2325
原创 ext id重复
如果是弹出窗口那么在关闭窗口时增加监听,把有id的对象销毁closeAction: 'close',listeners: { 'close': function () { formDevCat.destroy(); win.destroy(); }}, var CategoryComboBox = new Ext.for
2017-08-03 17:21:38
986
转载 Mybatis Generator最完整配置详解
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> resource:配置资源加载地址,使用resource,MBG从classpath开始找,比如com/myprojec
2017-07-27 16:54:22
419
原创 Spring解析Html视图
要在web.xml中增加 default *.html才能访问html文件然后再spring-mvc.xml中增加class="org.springframework.web.servlet.view.InternalResourceViewResolver"> name="prefix" value="/WEB-INF/html/"
2017-07-26 15:47:58
624
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅