自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (14)
  • 收藏
  • 关注

原创 为什么写一套打印系统会很难?

处理分组数据,需要进行栈式分组切换, 特别是多级分组,另外同一页面的不同条带也存在分组切换的问题, 比如:打印分组数据一半时排版不足, 需要换页, 按需打印分组脚时可能存在分组的切换, 打印页脚时可能又会存在分组的切换, 每个分组的数据均需要记录处理的位置,以便下次再入时恢复。, 实际上是非常复杂的问题, 若简单二维表, 页码还算简单,但加入分组,加入多级分组, 页码立即就复杂起来, 比如:分组内的页码顺序,总页码顺序,模板页的页码, 整个模板的总页码…

2026-08-20 11:12:19 204

原创 BC/S系统架构开发进行中

BC/S 系统架构的实现

2026-05-05 11:46:23 37

原创 做一个BC/S框架的应用

用WebSocket实现的bc/s 的实现,模拟多线程、大数据、面向连接的数据库事务处理,高度接近C/S的效果,适用于ERP类大数据、复杂事务的系统应用

2025-12-02 17:00:23 204

原创 浏览器+WebSocket实现百万数量量的虚拟表格

百万数据量级的js虚拟表格

2025-11-16 19:23:15 204

原创 JSON扩展--稀疏数据的表达

空值留空的扩展JSON表达,可显著减小稀疏数据的处理效率

2025-11-09 06:16:57 184

原创 编程基本知识--表达式解析

表达式解析实现自定义函数及自定义数据访问

2025-11-05 17:16:24 233

原创 Swing组件定制显示混乱的问题

定制组件及其子组件绘制时,应尽量使用系统的函数调用结构 系统的paint() 在repaint()被调用,paint() 用又会调用 paintBorder() paintComponent() paintChildren() , 如果直接跳过paint(),直接使用paintComponent进行组件自绘,有可能破坏系统的双缓冲机制,出现背景擦除不净,绘制绘乱、其他区域残影等情况,特别是处理组件拖动时的频繁绘制时更易出现。

2025-01-27 10:39:56 165

原创 Java Swing 组件双缓存问题

【代码】Java Swing 组件双缓存问题。

2025-01-08 09:09:49 167

原创 Linux Netbeans C++ 无法调试问题

linux netbeans c++ 调试

2023-09-04 13:41:02 224 1

原创 新图片验证码

图片验证码的设计

2022-11-24 19:17:13 178

原创 sql server连接oracle7302错误总结

做了多少次,总是报7302错误,此问题网上时间跨度很大,总有人问,记下备忘。 Sql Server连接oracle最好使用oracle的odac ,微软自带的oracle组件仅在部分低版本32位中有效。 1、设置系统环境变量 ORACLE_HOME 、TNS_ADMIN其中TNS_ADMIN 指明连接串文件位置. 2、下载并安装odac(不需要安装oracle客户端),系统是64位的就安装odac64位版本,解压后用目录中的install.bat安装如: install.ba...

2021-04-09 16:50:34 4314

原创 DataGridView增加汇总行

.net DataGridView不支持汇总行,使用起来多有不便,本想重写此控件,以前做Web项目时曾用Javascript写过与WinForm中的DataGridView类似的控件,但分析微软的代码后感觉重写非常的烦,所以采用改造原控件的方式,重写OnLayout函数,当布局完毕,通过反射修改网络区的大小,在底部留出汇总条的位置,将汇总条嵌在其中,这样网格内容与汇总条内容不会相互影响,同时在涉及

2009-10-08 22:01:00 1520

原创 Javascript多线程问题

Javascript本不具备多线程特性,看了网上许多模拟多线程序的做法,多数是将任务拆分为小任务,这样可以将处理时间较为均等地分配到每个小任务,但实际处理中任务拆分实在太难,有的甚至无法处理。下面是IE中javascript遇到的现象,一起看看。假如要用javascript动态生成一巨型树 (不考虑节点延迟加载),用一函数来做function CreateTree(){  for(var i=

2007-12-04 08:45:00 585

原创 树型结构在关系数据库中的存储

网上方法很大,也许此方案只是其中一种,使用ID ParentID FullPath 三字段来描述树结构,对实际树型结构数据有如下假设:1、数据总量不大,如果数据量很大,会考虑用多张表来描述其数据关系,不会考虑在一张表来实现树型结构2、结点深度可以接受,这样FullPath产生的冗余数据也可以接受,查询效率也会较高3、经常需要根据结构关系查询 Create table Dept (DeptID in

2007-11-18 10:47:00 648

【企业级应用】基于BC/S架构的ERP系统高性能重构:面向数据密集型场景的浏览器端零拷贝与端侧闭环硬件集成方案设计

内容概要:本文提出了面向ERP开发的高效BC/S(Browser-Client/Server)架构,旨在解决传统B/S架构在处理重度企业级应用(如ERP、WMS、MES等)时面临的性能瓶颈、交互体验差、大数据卡顿及本地硬件集成困难等问题。BC/S通过引入多线程零拷贝调度、堆外内存管理、自适应二进制多路复用协议、端侧闭环本地代理和数据感知型低代码引擎等核心技术,突破浏览器的内存与渲染限制,实现接近C/S架构的高性能与实时交互体验,同时保持B/S架构的便捷部署优势。架构还支持虚拟多窗口、沙箱隔离、硬件直连控制、安全分级验证与渐进式系统替换,为企业老旧C/S系统Web化提供平滑演进路径。; 适合人群:企业技术决策者、系统架构师、ERP/WMS/MES等重型业务系统开发者及数字化转型负责人。; 使用场景及目标:①替代传统C/S架构实现高性能Web化升级;②提升大数据量场景下的系统响应与渲染效率;③实现本地硬件(如扫码枪、高拍仪、打印机)无缝集成;④降低ERP二次开发与实施成本,推动低代码敏捷交付;⑤构建安全可控、可逐步替换的现代化企业级前端体系。; 阅读建议:此资源技术深度较高,建议结合企业实际迁移需求,重点关注架构设计思想与落地可行性,尤其适用于正在推进核心系统Web化但受困于性能与兼容性问题的技术团队。

2026-07-28

改良的Java平台的JSON解析包

一个改良的Json解析包,请要有以下特点: 1、键名不区分大小写,适用于前后台与数据库的交互 2、可以设置键名不使用引号 Fson.KeyQuotationMarks=fale; 默认 3、可以设置数字值不使用引号 Fson.NumberQuotationMarks=false; 默认 4、可以设置空位表示空值 Fson.NummToEmpty=true;默认 体积较Json缩减15%-30% 使用示例: FObject fo=Fson.parseFObject("{code:1,message:,data:[[\"abc\",,0],[\"cde\",\"品名\",1]]}"; String message=fo.getString("Message"); //null int code=fo.getInt("Code"); //1 FArray fa=fo.getFArray("data"); for(int i=0;i<fa.size();i++){ FArray faa=(FArray)fa.getObject(i); //同 fa.getFArray(i) for(int j=0;j<faa.size();j++) System.out.println(faa.getObject(j)+""); }

2025-08-30

RouterOS免脚本多线ADSL负载均衡

请下载http://download.youkuaiyun.com/source/2706681

2010-09-19

简单实用的跨库数据同步工具FDataX

简单实用的跨库数据同步工具FDataX, 支持多并发自动分片,事务, 实时自定义,状态可视

2022-09-16

Ftp备份拷贝,主要用于数据库备份文件异地转移

数据库异地备份虽然有办法解决,但还是比较麻烦,通过ftp方式对备份文件异地备份还是比较方便的,只是网上大多数客户端软件均需在用户登陆后运行,而服务器一直有个用户登录着感觉不好。 本程序运行于.net 2.0下的绿色软件,以windows服务方式运行,直接更改配置文件,可以运行多个复制作业,每个作业可以指定运行时间、拷贝方式、是否压缩、运行周期等参数,特别是数据库备份,压缩后体积将缩小很多。

2009-06-17

selenium打印对话框操作函数

通过此函数识别打印对话框“打印”按钮的位置,再通过 pyautogui.click(x,y)模拟点击即可操作打印对话框

2021-07-04

上网代理系统服务程序C#

C#写的上网代理服务程序,根据规则,可以对不安全下载进行过滤

2009-03-29

C# 绘制Code128 auto条码

不到200行代码,实用的绘制Code128 auto条码程序,Code128 auto采用 A、B、C混合编码,将条码长度压缩到最短

2017-05-26

c#斑马打印机类

斑马打印机资料很少且不全,通过分析ZebraDesigner的输出及Zebra多平台SDK的部分代码,完成Zebra C#打印的封装类,通过打印印驱动输出ZPL进行打印,汉字采用点阵数据打印的方式完成。

2016-05-30

图片大小批量调整工具

用于批量调整图片大小,特别是像机拍的照片想批量变成上传的小图的情况,需在.net 2.0以上环境运行

2010-04-05

Java仿.NET 的DateTime封装

Java或jdbc操作日期时间存在诸多不便,代码通过对Date、Calendar、SimpleDateFormat的封装,实现类似.NET DateTime的功能

2014-09-08

JS网页计算器,条状数字,分节符等模拟实际计算器外观

普通计算器的网页实现,条状数字,分节符等模拟实际计算器外观

2010-08-03

RouterOS免脚本多线ADSL负载均衡

RouterOS免脚本多线ADSL负载均衡

2010-09-19

模拟键盘鼠标发飞信短信

模拟键盘鼠标操作飞信界面发送短信 private void SendSMS() { #if DEBUG string[] addr = new string[] { "闻佃来"}; #else string[] addr = new string[] { "张三", "李四"}; #endif string message = " "; if (message == "") return; Rectangle rect = new Rectangle(); Windows wins = new Windows(); IntPtr hwin = IntPtr.Zero; foreach (Window w in wins) { if (w.Title.IndexOf("发短信") >= 0) { hwin = w.hWnd; break; } } //未找到发送窗口,点击主窗口下的短信发送按钮 if (hwin == IntPtr.Zero) { wins = new Windows(); foreach (Window w in wins) { if (w.Title.IndexOf("飞信2013") >= 0) { //唤醒屏保 Win32.SetCursorPos(10,10); Win32.mouse_event(Win32.MOUSEEVENTF_MOVE, 50, 50, 0, 0); Thread.Sleep(1500); Win32.ShowWindow(w.hWnd, Win32.SW_SHOWNORMAL); Win32.SetForegroundWindow(hwin); Win32.GetWindowRect(w.hWnd, ref rect); IntPtr hDesk = Win32.GetDesktopWindow(); Rectangle rdesk = new Rectangle(); Win32.GetWindowRect(hDesk,ref rdesk); if (rect.Y < 0) { //上 Win32.SetCursorPos(rect.X +(rect.Width-rect.X)/2,0); Win32.mouse_event(Win32.MOUSEEVENTF_MOVE, 0, 1, 0, 0); Thread.Sleep(1500); Win32.GetWindowRect(w.hWnd, ref rect); } else if (rect.Y >= rdesk.Height - 3) { //下 Win32.SetCursorPos(rect.X + (rect.Width - rect.X) / 2,rdesk.Height); Win32.mouse_event(Win32.MOUSEEVENTF_MOVE, 0, -1, 0, 0); Thread.Sleep(1500); Win32.GetWindowRect(w.hWnd, ref rect); } else if (rect.X <= 0) { //左边 Win32.SetCursorPos(0, rect.Y + (rect.Height - rect.Y) / 2); Thread.Sleep(2000); Win32.mouse_event(Win32.MOUSEEVENTF_MOVE, 1, 0, 0, 0); Thread.Sleep(1500); Win32.GetWindowRect(w.hWnd, ref rect); } else if (rect.X >= rdesk.Width - 3) { //右边 Win32.SetCursorPos(rdesk.Width, rect.Y + (rect.Height - rect.Y) / 2); Thread.Sleep(2000); Win32.mouse_event(Win32.MOUSEEVENTF_MOVE, -1, 0, 0, 0); Thread.Sleep(1500); Win32.GetWindowRect(w.hWnd, ref rect); }else { Win32.MoveWindow(w.hWnd, rect.Left, 0, rect.Width - rect.Left, rect.Height - rect.Top, true); Win32.GetWindowRect(w.hWnd, ref rect); Thread.Sleep(300); } Win32.SetCursorPos(rect.X+70,rect.Height-50); Win32.mouse_event(Win32.MOUSEEVENTF_LEFTDOWN | Win32.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); Thread.Sleep(2000); break; } } //再次查找发送窗口 wins = new Windows(); foreach (Window w in wins) { if (w.Title.IndexOf("发短信") >= 0) { hwin = w.hWnd; break; } } } //查询发送窗口成功 if (hwin != IntPtr.Zero) { Win32.ShowWindow(hwin, Win32.SW_SHOWNORMAL); Win32.SetForegroundWindow(hwin); Win32.GetWindowRect(hwin, ref rect); IntPtr hwndtel = Win32.WindowFromPoint(rect.Left + 120, rect.Top + 45); IntPtr hwndsend = Win32.WindowFromPoint(rect.Left + 50, rect.Height - 60); //单击地址栏 Win32.SetCursorPos(rect.Left + 120, rect.Top + 45); Win32.mouse_event(Win32.MOUSEEVENTF_LEFTDOWN | Win32.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); Thread.Sleep(1000); //加入地址 for (int i = 0; i < addr.Length; i++) { Clipboard.SetText(addr[i]); Thread.Sleep(200); Win32.SendMessage(hwndtel, Win32.WM_PASTE, 0, 0); Thread.Sleep(300); Win32.SendMessage(hwndtel, Win32.WM_KEYDOWN, 0X0D, 0);//发 Win32.SendMessage(hwndtel, Win32.WM_KEYUP, 0X0D, 0); //送 Win32.SendMessage(hwndtel, Win32.WM_CHAR, 0X0D, 0); //回车 Thread.Sleep(300); } //加入消息文本 Clipboard.SetText(message); Thread.Sleep(200); Win32.SendMessage(hwndsend, Win32.WM_PASTE, 0, 0); Thread.Sleep(200); #if DEBUG #else if (!_TestMode) { Win32.SendMessage(hwndsend, Win32.WM_KEYDOWN, 0X0D, 0); Win32.SendMessage(hwndsend, Win32.WM_KEYUP, 0X0D, 0); Win32.SendMessage(hwndsend, Win32.WM_CHAR, 0X0D, 0); } #endif textBox1.AppendText("---------------------------------------- \n"); textBox1.AppendText(DateTime.Now + ":"+ message + "\n"); } else { textBox1.AppendText("无法打开飞信短信发送窗口\n"); } _LastSend = DateTime.Now; LastSendTime = _LastSend; }

2014-03-17

winform皮肤包

winform 皮肤版权为原作者所有

2012-03-01

RouterOS免脚本多线ADSL负载均衡

RouterOS免脚本多线ADSL负载均衡

2010-09-19

简单的代码生成器-MyClassGenarator

简单的代码生成器,生成数据表记录对象封装,简单的问题简单化,不必非得将数据库操作封装成三层

2008-11-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除