最近有项目要做一个高功能网络服务器,决定下功夫搞定完成端口(IOCP),最终花了一个星期终于把它弄清楚了,并用C++写了一个版本,效率很不错。
但,从项目的总体需求来考虑,最终决定上.net平台,因此又花了一天一夜弄出了一个C#版,在这与大家分享。
一些心得体会:1、在C#中,不用去面对完成端口的操作系统内核对象,Microsoft已经为我们提供了SocketAsyncEventArgs类,它封装了IOCP的使用。
请参考:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceventargs.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1。
2、我的SocketAsyncEventArgsPool类使用List对象来存储对客户端来通信的SocketAsyncEventArgs对象,它相当于直接使用内核对象时的IoContext。
我这样设计比用堆栈来实现的好处理是,我可以在SocketAsyncEventArgsPool池中找到任何一个与服务器连接的客户,主动向它发信息。
而用堆栈来实现的话,要主动给客户发信息,则还要设计一个结构来存储已连接上服务器的客户。
3、对每一个客户端不管还发送还是接收,我使用同一个SocketAsyncEventArgs对象,对每一个客户端来说,通信是同步进行的,也就是说服务器高度保证同一个客户连接上要么在投递发送请求,并等待;
或者是在投递接收请求,等待中。
本例只做echo服务器,还未考虑由服务器主动向客户发送信息。
4、SocketAsyncEventArgs的UserToken被直接设定为被接受的客户端Socket。
5、没有使用BufferManager类,因为我在初始化时给每一个SocketAsyncEventArgsPool中的对象分配一个缓冲区,发送时使用Arrary.Copy来进行字符拷贝,不去改变缓冲区的位置,只改变使用的长度,因此在下次投递接收请求时恢复缓冲区长度就可以了!如果要主动给客户发信息的话,可以new一个SocketAsyncEventArgs对象,或者在初始化中建立几个来专门用于主动发送信息,因为这种需求一般是进行信息群发,建立一个对象可以用于很多次信息发送,总体来看,这种花销不大,还减去了字符拷贝和消耗。
6、测试结果:(在我的笔记本上时行的,我的本本是T420I78G内存)100客户100,000(十万次)不间断的发送接收数据(发送和接收之间没有Sleep,就一个一循环,不断的发送与接收)耗时3004.6325秒完成总共10,000,000一千万次访问平均每分完成199,691.6次发送与接收平均每秒完成3,328.2次发送与接收整个运行过程中,内存消耗在开始两三分种后就保持稳定不再增涨。
看了一下对每个客户端的延迟最多不超过2秒。
2020/5/13 2:27:34 15KB IOCP 完成端口 源码
1
汇编写的.LED显示;*****************************;*万年历程序*;*****************************;67H(高两位年)66H(低两位年)65H(月)64H(星期);63H(日)62H(小时)61H(分)60H(秒)57H(农历月)56H(农历日);显示缓冲单元7CH~7BH(4CH~4BH)年低位,7AH~79H(4AH~49H)月,;78H(48H)星期,77H~76H(47H~46H)日,75H~74H(45H~44H)时,;73H72H(43H~42H)分,71H~70H(41H~40H)秒,5EH~5DH(55H~54H)农历年;5CH~5BH(53H~52H)农历月,5AH~59H(51H~50H)农历日;闰年标志为F0,定时器T1为调整时候闪烁用;;
1
上传一个完全由自己用C语言编的超市管理系统,并带有实验报告,虽然该系统很简单,还有很多需要改进的,但是这是自己完全由自己编的,程序量达到一千五百多行,费了我一个多星期,对于自己本人很有纪念意义的。
今天拿出来让大家分享一下,希望能对初学这有所协助。
2015/6/1 3:22:34 80KB C语言 超市管理系统
1
草根站长工具箱是一款为了方便国内站长查询网站信息的软件,基本集合了站长平时用到的所有工具,综合查询:包括收录查询,关键字排名,友情链接检测,网站年龄,网站价格评估,网站备案查询等等,常用工具:包括历史收录,页面模拟抓取,密度查询,各种加密,ICO在线制作,LOGO在线制作,多功能计数器,各国语言翻译等,增加外链:免费在线快速提高网站暴光率,明显增加网站外部连接(不作弊)。
快速提高百度,YAHOO,GOOGLE等排名,网页刷新工具:又名网页刷新器,这个小工具主要功能是刷网站PV浏览量,适合刷淘宝/拍拍等浏览量。
草根站长工具箱功能一:友情连接批量查询(可同时查询上百个站点友情连接情况.支持结果过滤/导出功能)二:关键词排名批量查询(可采集指定网站的关键词查询.支持结果过滤/导出功能)三:百度权重查询(可查出站点在百度靠前的页面,百度指数等.支持结果过滤/导出功能)四:采集伪原创工具(只需要输入关键词,就能给您自动生成出上千篇原创文章.支持导出)五:网络外链查询(可查询在网络中那些站点带有您的页面地址,并以地址/标题列出)六:长尾词挖掘工具(可同时多线程挖掘百度,谷歌,搜搜,雅虎,淘宝站点热门长尾词.支持结果过滤/导出功能)七:N种批量查询工具(百度收录/反链批量查询,PR值批量查询,出站链接批量查询,雅虎反链批量查询,ALEXA批量查询,未注册域名批量查询.支持结果过滤/导出功能)八:网页综合检测工具(查网页关键字密度,搜索引擎模拟抓取等)九:过期域名查询工具(每日更新5万条左右一星期内删除的域名,内含百度收录/反链,PR值,雅虎反链,ALEXA排名,能否注册等批量查询功能.支持结果过滤/导出功能)十:CNZZ流量统计,百度流量统计,51LA流量统计(随时同步流量数据.每秒的流量变化都在电脑桌面显示)草根站长工具箱截图
2019/10/23 4:13:16 1.51MB 网络软件-网络推广
1
本次实验使用msp430及一块扩展板实现数字钟零碎,扩展板上有一块OLED屏幕与4x4矩阵键盘,此外还有一些led指示灯。
此外该零碎还实现了设置时间日期,自动计算星期等等功能。
此外还有5个闹钟,闹钟是用右上角的led指示灯显示的。
2015/3/18 22:40:24 14.74MB msp430 数字钟 OLED 定时器
1
51单片机教室智能照明控制系统功能概述:1.用51单片机STC89C52、时钟芯片DS1302、液晶屏LCD1602、光敏电阻、红外对管、设计一个教室智能照明控制系统;
2.单片机默认使用STC89C52,可选择AT89S52,下单请备注。
默认供电方式为USB电源线,需要电池盒或适配器供电也可以自己做些略微改动。
3.使用4个LED灯模拟教室的照明灯,在符合条件开启时,人数小于10人亮一个灯,10-20人亮二个灯,20-30人亮三个灯,大于30人则全亮四个灯;
4.教室使用两个红外对管来检测能否有人进入并进行人数统计,人数可以统计到二位数99人,并实时将人数显示到液晶屏LCD上,液晶屏同时显示实时日期/时间/星期;
5.利用光敏电阻检测教室的光线强弱;
6.系统分自动/手动模式,可以通过按键切换模式,并有LED指示当前所在模式,在自动模式下,可以设定定时时间段,在定时时间段内,当教室有人(人数大于0)的情况下,如果光线暗弱则自动打开照明灯,照明灯点亮个数根据人数而定,不在定时时间段或者教室无人的情况下,关闭所有照明灯,另外在手动模式下,可以通过手动开关控制照明灯的亮灭,人数统计部分仍然生效;
实物截图:视频演示:https://player.ku6.com/refer/BODxr_xHNNNyuno0louZSg...附件内容截图:附件内容说明:仿真使用Protues、编程用C语言、编译器使用Keil4、原理图使用Protel(也可以用AD/DXP直接打开编辑),C语言源程序大部分都有解析,方便理解。
智能教室照明系统实物订做或者购买链接:https://item.taobao.com/item.htm?spm=a1z10.1-c.w50...
2022/9/19 10:34:51 14.74MB 51单片机 智能照明 电路方案
1
4G模块连接ntrip过程,摸索了两个星期,希望大家节约工夫,socket连tcp的sdk不行
2016/5/3 3:49:34 100KB Ntrip
1
├─第2篇-基本功能│├─第10章-打印││line.bmp││Thumbs.db││底端标题行.JPG││底端标题行1.PNG││技巧113在同一页上打印不连续的区域.xls││技巧116在报表的每一页上打印公司Logo.xls││技巧117在页眉或页脚增加分隔线.xls││技巧119在Excel中定时打印.xls│││├─第2章-工具栏和菜单││技巧12自定义菜单和工具栏.xls│││├─第3章-操作工作簿│││技巧22简繁转换不求人.xls│││技巧24为工作簿减肥.xls│││││└─技巧22简繁转换不求人││├─Office2002简繁转换加载宏│││tcscconv.exe│││││└─Office2003简繁转换加载宏││tcscconv.msi│││├─第4章-操作工作表││技巧29快速填充所有空白单元格.xls││技巧39隔行插入的绝招.xls││技巧40在非空行之间自动插入空行.xls││技巧41快速删除所有空行.xls│││├─第5章-数据处理││技巧52自动填充的威力.xls││技巧58提取超链接信息.xls││技巧67Excel的摄影功能.xls│││├─第6章-单元格格式││技巧68奇妙的自定义数字格式.xls││技巧70自定义数字格式的经典应用.xls││技巧72合并单元格的同时保留所有数值.xls││技巧73为同一个单元格里的文本设置不同格式.xls││技巧74制作斜线表头.xls││技巧76工作表背景图片的妙用.xls│││├─第7章-名称的奥妙││技巧79在名称中使用常量与函数1.xls││技巧79在名称中使用常量与函数2.xls││技巧82创建动态名称.xls││技巧83图片自动更新.xls││技巧85创建名称表格.xls││技巧86以图形方式查看名称.xls│││├─第8章-活用条件格式││技巧100用8种颜色区分不同数值.xls││技巧101无限条件的条件格式.xls││技巧88美丽的数据区域.xls││技巧89永恒的间隔底纹.xls││技巧90快速比较不同区域的数值1.xls││技巧91快速比较不同区域的数值2.xls││技巧92自动醒目的小计.xls││技巧93在工作日历中突显周休日.xls││技巧94突显活动单元格的坐标.xls││技巧95生日提醒.xls││技巧96特殊数值提醒.xls││技巧97标记重复值.xls││技巧98标记含有公式的单元格.xls││技巧99标记匹配目标数值的单元格.xls│││└─第9章-数据有效性绝技│技巧102在单元格中创建下拉列表.xls│技巧103另类的批注.xls│技巧104快速切换有效性的来源.xls│技巧106只能录入某种特征的数据.xls│技巧107限制重复值的录入.xls│技巧108杜绝负数库存.xls│技巧109强制序时录入.xls│技巧110多级选择录入.xls│├─第3篇-数据分析│├─第11章-排序与筛选││技巧121对超过3列的数据排序.xls││技巧122按照特定的顺序排序.xls││技巧123按笔划排序.xls││技巧124按行来排序.xls││技巧125按字符数量排序.xls││技巧126按颜色排序或筛选.xls││技巧127随机排序.xls││技巧128排序字母与数字的混合内容.xls││技巧129返回排序前的表格.xls││技巧131在受保护的工作表中使用自动筛选.xls│││└─第12章-分类汇总与数据透视│技巧132分类汇总结果的复制.xls│技巧133多字段分类汇总.xls│技巧134多层次的数据浏览.xls│技巧135在受保护的工作表中调整分级显示视图.xls│技巧136用二维表创建数据透视表.xls│技巧137组合数据透视表内的日期项.xls│技巧138快速统计重复项目.xls│技巧139在数据透视表中添加计算项.xls│├─第4篇-函数导读│├─第14章函数基础││技巧147单元格的引用方法.xls││技巧153函数公式的限制与突破.xls│││└─第15章数组公式入门│技巧155内存数组.xls│技巧157多单元格数组公式.xls│技巧158数组的转置和变换.xls│├─第5篇-函数技巧│├─第16章-信息处理││技巧161取得单元格信息.xls││技巧162取得当前工作表表名.xls│││├─第17章-文本处理││技巧164字符转换技巧三则.xls││技巧165重复文本技巧二则.xls││技巧166字符串比较及清理垃圾字符.xls││技巧169计算字符出现的次数.xls││技巧170提取字符串.xls││技巧171文本合并符号的妙用.xls││技巧172重复记录自动加编号.xls││技巧174解读身份证编码信息.xls││技巧175身份证位数的变换.xls││技巧176金额数字分列.xls││技巧177数字转英文序数.xls││技巧178人民币金额大写公式.xls│││├─第18章-日期与时间计算││技巧179根据农历生日计算生肖与年份.xls││技巧181日期与数字格式的互换.xls││技巧182英文日期的转换.xls││技巧183将中文日期文本转为日期值.xls││技巧184计算指定间隔的日期.xls││技巧185月度季度相关日期计算.xls││技巧186隐秘函数DATEDIF.xls││技巧187星期的相关计算.xls││技巧188工作日的相关计算.xls││技巧189解读时间格式代码.xls││技巧190将角度显示为度分秒以及相关转换计算.xls│││├─第19章-数学与三角计算││技巧191常用数值舍入计算.xls││技巧192按人民币面额估算备钞数.xls││技巧193余数的妙用.xls││技巧194数值的修约.xls││技巧195产生规定范围内的随机数.xls││技巧196求解多元一次方程.xls││技巧197求出成绩最高分.xls│││├─第20章-统计求和││技巧198设置目标数据的上下限.xls││技巧199统计选定区域数据个数.xls││技巧200认识COUNTIF函数.xls││技巧201单字段多条件计数.xls││技巧202动态统计及格人数.xls││技巧203认识SUMIF函数.xls││技巧204单字段多条件求和.xls││技巧205使用通配符模糊求和.xls││技巧206日计帐中的余额累计.xls││技巧207数据表实现动态小计.xls││技巧208SUM数组公式计数与求和.xls││技巧209SUM函数与SUMPRODUCT函数的区别.xls││技巧210部门评价等级转换.xls││技巧211分级累进求和.xls││技巧212自动筛选_隐藏_组合下的统计.xls││技巧213取得各科成绩的最高分.xls││技巧214统计不及格人数.xls││技巧215指定条件下求平均值.xls││技巧216对称剔除极值求平均值.xls││技巧217认识FREQUENCY函数.xls││技巧218统计不重复值的数量.xls││技巧219单个区域排名.xls││技巧220多个区域排名.xls││技巧221中国式排名.xls││技巧222求第n大的不重复值.xls│││├─第21章-查找与引用││技巧223根据首行(列)查找记录.xls││技巧224多条件区间判断取值.xls││技巧225确定查找值能否存在.xls││技巧226根据行列条件返回结果.xls││技巧227返回引用的单元格地址.xls││技巧228逆向查询数据.xls││技巧229模糊查找数据.xls││技巧230返回字符串中连续数值.xls││技巧231定位最后非空单元格.xls││技巧232生成垂直_水平序列.xls││技巧233理解OFFSET函数.xls││技巧234批量生成工资条.xls││技巧235建立超链接.xls││技巧236自动跳转到未输入的单元格.xls││技巧237统计指定月份的销量汇总.xls││技巧238取得目标汉字的拼音首字母.xls││技巧239根据双列条件进行查找.xls││技巧240返回最后一条数据记录.xls││技巧241按单条件筛选记录.xls││技巧242按多条件筛选记录.xls││技巧243对数据进行排序.xls││技巧244多关键字排名应用.xls││技巧245返回单列中的唯一值列表.xls││技巧246返回双列中的唯一值列表.xls││技巧247返回数据区域中的唯一值列表.xls│││├─第22章-宏表函数││技巧249取得工作表名.xls││技巧250取指定路径下所有文件名.xls││技巧251取单元格属性值.xls││技巧252取得表达式.xls││技巧253算式和计算结果.xls│││├─第23章-逻辑判断││技巧254养成良好的逻辑分析习惯.xls││技巧255学会逆向思维.xls│││└─第24章-函数公式的优化│技巧256去除冗余判断.xls│技巧257使用动态引用.xls│技巧258使用辅助列和普通公式.xls│├─第6篇-函数高级应用│├─第25章-多维引用││技巧261三维引用取不重复数据.xls││技巧262跨多表查询.xls││技巧263跨多表汇总.xls││技巧264条件筛选下求不重复值.xls││技巧265求出各项目极值的合计数.xls│││├─第26章-内存数组││技巧266数组变换技巧三则.xls││技巧267N_T函数生成内存数组.xls││技巧268空行自动填满数据的内存数组.xls││技巧269生成除当前工作表外的工作表名称.xls││技巧270对文本进行排序.xls││技巧271MMULT函数应用.xls│││└─第27章-循环引用│技巧273记录单元格操作时间.xls│技巧274产生不变随机数.xls│技巧275求固定总和的组合.xls│技巧276有记忆功能的单元格.xls│├─第7篇-图表与图形│├─第28章-图表通用技巧││技巧277去除分类轴上的空白日期.xls││技巧278折线图中处理空单元格的三种样式.xls││技巧279让图表自动适应窗口大小.xls││技巧280快速设置图表字体.xls││技巧281隐藏接近于零的数据标签.xls││技巧282在图表中处理负值.xls││技巧283快速添加图表数据系列.xls││技巧284在图表中使用透明填充色.xls││技巧285背景透明的图表.xls││技巧286在图表中使用QQ图片.xls││技巧287制作完全静态的图表.xls││技巧288控制数据标志的显示位置.xls││技巧289快速统一多个图表大小.xls││技巧290使条形图分类轴的标签与源数据列显示顺序一致.xls││技巧291自定义图表.xls││技巧292图表公式SERIES的使用技巧.xls││技巧293在图表中使用对数刻度.xls││技巧294制作瀑布图.xls││技巧295美化三维图表.xls││技巧296快速制作组合图表.xls││技巧297随单元格自动变化的图表标题.xls││技巧298图表背景——横向分割.xls││技巧299图表背景——纵向分割.xls││技巧300图表背景——四象限图表.xls││技巧301复合饼图.xls││技巧302利用误差线制作数据点交叉线.xls││技巧303N合一图表.xls││技巧304在图表中画直线.xls││技巧305始终突出显示最大值和最小值.xls││技巧306画趋势线并显示趋势线公式.xls││技巧307动态图表——辅助列.xls││技巧308动态图表——定义名称.xls││技巧309动态图表——最后7天的数据.xls││技巧310动态图表——活动单元格.xls││技巧311求任意点的坐标.xls││技巧312美丽的万花规.xls││技巧313批量绘图.xls││技巧314数据系列快速着色.xls││技巧315批量添加数据标签.xls││技巧316快速将图表输出为图片.xls│││├─第29章-经典图表实例││技巧317Xbar-R控制图.XLS││技巧318双层饼图.xls││技巧319柏拉图(Paretochart).xls││技巧320直方图和正态分布图.xls││技巧321立体雷达图.xls││技巧322自定义多轴图表.xls││技巧323不等宽柱形图.xls││技巧324任意函数曲线图.xls││技巧325步进图.xls││技巧326甘特图.xls││技巧327比较柱形图.xls││技巧328盈亏平衡分析图.xls││技巧329波士顿矩阵图.xls│││└─第30章-图示和图形│技巧330组织结构图.xls│技巧331图示中的文本设置.xls│技巧332流程图.xls│技巧333两个阴影的图形.xls│技巧334图表转为自选图形.xls│技巧335图形对齐技巧.xls│技巧336自选图形群的编辑.xls│技巧337用Excel画画.xls│技巧338自选图形的变形.xls│技巧339在批注中插入图表.xls│技巧340条码图形.xls│└─第8篇-VBA实例与技巧8-1.xlsmscomct2.ocxsave.gifThumbs.db技巧343利用日期控件输入时间.xls技巧344确定当前单元格所在的页数.xls技巧345利用VBA取不重复值.xls技巧346提取字符中指定类型的字符.xls技巧347替换工具栏按钮的图标.xls技巧348制作路径选择对话框.xls技巧349从其他工作簿取值.xls技巧350自动添加控件及事件代码.xls技巧351定义Application级别的事件代码.xls技巧352批量修改工作表中的批注.xls技巧353快速隐藏周围区域.xls技巧354设置缺省目录和文件名.xls技巧355在长时间运算中使用友好提示.xls技巧356制作个性化启动画面-1.xls技巧356制作个性化启动画面-2.xls技巧357记录工作簿最后更新时间-1.xls技巧357记录工作簿最后更新时间-2.xls技巧357记录工作簿最后更新时间.xls技巧358判断文件能否已经打开和能否存在.xls技巧359人民币大写转换函数.xls技巧360按颜色求和与计数函数.xls
2018/10/22 14:12:22 2.28MB windows 文档
1
大型超市“购物蓝”问题作为超市的经理,经常关怀的问题是顾客的购物习惯。
他们想知道:“什么商品组合或集合,顾客多半会在一次购物时同时购买?”。
现在假设你是超市的市场分析员,已经掌握了该超市近一个星期的所有顾客购买物品的清单和相应商品的价格,需要你给超市经理一个合理的“购物蓝”分析报告,并提供一个促销计划的初步方案。
具体的说,需要完成如下任务:1、附件1中的表格数据显示了该超市在一个星期内的1024个顾客对999种商品的购买记录,表格中每一行代表一个顾客的购买记录,数字代表了其购买商品的超市内部编号。
试建立一种数学模型,该模型能定量表达超市中多种商品间的关联关系的密切程度。
2、根据你在问题1中建立的模型,寻找一种快速有效的方法能从附件1中的购买记录中分析出那些商品是最频繁被同时购买的。
超市经理希望得到尽可能多的商品被频繁同时购买的信息,所以你找到的最频繁被同时购买的商品数量越多越好。
例如:如果商品1、商品2、商品3在1024个购物记录中同时出现了200次,则可以认为这三个商品同时频繁出现了200次,商品数量是3。
3、附件2给出了这999种商品对应的利润,试根据前面建立的模型,给出一种初步的促销方案,使超市的效益进一步增大。
4、给超市经理写一个报告,分析超市的现状并对将来超市购物蓝信息的收集策略提出建议。
2022/9/5 19:16:31 2.03MB 购物篮
1
这是花了一个星期才做的课程设计关于中国文明馆的一个网站用了CSS技术和javascript
1
共 140 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡