最近有项目要做一个高性能网络服务器,去网络上搜到到的都是C++版本而且是英文或者简单的DEMO,所以自己动手写了C#的DEMO。
网络上只写接收到的数据,没有说怎么处理缓冲区数据,本DEMO简单的介绍如何处理接收到的数据。
简单易用,希望对大家有用.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秒。
2023/8/10 0:44:45 64KB C# IOCP TCP 完成端口
1
简介笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载!这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景!Java源码包Applet钢琴模拟程序java源码2个目标文件,提供基本的音乐编辑功能。
编辑音乐软件的朋友,这款实例会对你有所帮助。
Calendar万年历1个目标文件EJB模拟银行ATM流程及操作源代码6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例……ejbCreate函数用于初始化一个EJB实例5个目标文件,演示AddressEJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。
EJB中JNDI的使用源码例子1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context……ftp文件传输2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。
本规范尝试满足大型主机、微型主机、个人工作站、和TACs的不同需求。
例如,容易实现协议的设计。
JavaEJB中有、无状态SessionBean的两个例子两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除……JavaSocket聊天通信演示代码2个目标文件,一个服务器,一个客户端。
JavaTelnet客户端实例源码一个目标文件,演示Socket的使用。
Java组播组中发送和接受数据实例3个目标文件。
Java读写文本文件的示例代码1个目标文件。
java俄罗斯方块一个目标文件。
Java非对称加密源码实例1个目标文件摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用DES,DESede,Blowfish等。
  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息……Java利用DES私钥对称加密代码实例同上java聊天室2个目标文件,简单。
java模拟掷骰子2个1个目标文件,输出演示。
java凭图游戏一个目标文件,简单。
java求一个整数的因子如题。
Java生成密钥的实例1个目标文件摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥。
Java数据压缩与传输实例1个目标文件摘要:Java源码,文件操作,数据压缩,文件传输  Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲
2023/8/9 0:33:17 173B java
1
主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows常用控件的使用、Windows不错控件的使用、DataGridView数据控件、自定义用户控件、文件基本操作、文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与Word互操作、高效应用Excel、基本图形绘制、图像处理技术、常用图表应用、动画处理技术、音频与视频控制。
配书光盘附带了实例的源程序和部分视等第1篇C#编程基础篇第1章C#开发环境的使用21.1VisualStudio开发环境的安装与配置3  实例001配置合适的VisualStudio2008开发环境3  实例002设置程序代码行号4  实例003使开发环境全屏显示5  实例004根据需要创建所需解决方案61.2VisualStudio开发环境的使用7  实例005为程序设置版本和帮助信息7  实例006设置Windows应用程序启动窗体8  实例007统一窗体中控件的字体设置9  实例008通过“格式”菜单布局窗体101.3快速开发项目必备10  实例009为项目添加DLL文件引用10  实例010为项目添加已有类11  实例011为项目添加第三方控件12实例012为项目添加已有窗体13第2章C#语言基础应用152.1代码的注释16  实例013对单行代码进行注释16  实例014快速对多行代码进行注释17  实例015使用“///”标记给代码段添加说明182.2运算符的使用20  实例016使用引号运算符进行赋值20  实例017使用算术运算符开发简单计算器21  实例018使用“^”运算符对数字进行加密22  实例019巧用位移运算符获取汉字编码值24  实例020使用条件运算符判断指定年份是不是闰年25  实例021使用流程控制语句报销业务花销262.3关键字的使用27  实例022使用checked关键字处理“溢出”错误27  实例023使用typeof关键字获取类的内部结构28  实例024使用using关键字有效回收资源29  实例025使用is关键字检查对象是否与给定类型兼容30  实例026使用as关键字将对象转换为指定类型322.4流程控制语句的使用34  实例027小明去学校和医院分别要走哪条路34  实例028利用条件语句判断用户登录身份35  实例029判断指定月份属于哪个季节36  实例030使用switch语句更改窗体颜色37  实例031循环向控制台中输入内容38  实例032递归算法的经典面试题39  实例033制作一个数字猜猜看小游戏40实例034使用goto语句在数组中搜索指定图书42第3章字符串处理技术443.1字符及字符串转换45  实例035将字母全部转换为大写或小写45  实例036字母与ASCII码的转换46  实例037汉字与区位码的转换48  实例038将汉字转换为拼音493.2常用字符及字符串操作50  实例039根据标点符号对字符串进行分行50  实例040判断用户输入的用户名是否正确51  实例041将字符串的每个字符进行颠倒输出52  实例042去掉字符串中的所有空格54  实例043从字符串中分离文件路径、文件名及扩展名55  实例044获取字符串中汉字的个数57  实例045批量替换某一类字符串58  实例046对字符串进行加密与解密593.3常用数字处理技术61  实例047判断输入的货币值是否为数字61  实例048对计算结果进行四舍五入62  实例049商品金额的大小写转换63  实例050设置货币值中使用的小数位数64  实例051格式化输入数据为货币格式65  实例052开发一个进制转换器663.4日期时间格式的数据处理67  实例053动态获得系统当前日期和时间67  实例054手动设置系统日期时间69  实例055根据生日自动计算员工年龄70  实例056根据年份判断十二生肖71  实例0
2023/8/8 8:05:57 66B .net c#
1
EasySave可以实现在游戏中保存进度的功能。
它高效且易于使用,只需一行代码就可以保存、读取或加密存档文件。
2023/8/7 20:22:14 727KB unity easy save
1
内容简介······网页表单无处不在——从注册表单到联系信息表,从商业领域到政府部门。
成功的表单设计不仅能提高用户满意度,还能收集更加精确的数据并降低维护费用;
而失败的表单设计不仅会收集到与需求相悖的冗余信息,还极有可能导致潜在消费者的流失。
设计具有高可用性的表单绝非易事。
两位作者通过丰富的实例,明确阐述了如何从表单的关系、对话和外观三层模型出发,设计出具有高可用性的优质网页表单,并通过可用性测试及早发现表单的潜在问题。
通过阅读本书,读者能够了解到如何定义需求,如何提出与用户期望相符且容易理解的问题,以及如何撰写说明文字、设置进度指示器和处理出错信息。
经实践检验的实用建议将帮助你远离设计失误,创建出美观、高效的表单。
可贵的设计方法和技巧是赢得数据准确性和顾客满意度的制胜法宝。
包含大量实例——从细节展现(如标签对齐方式、必填字段)到视觉设计(如创建整齐的网格、颜色应用等)。
作者简介······CarolineJarrett经营着一家可用性咨询公司EffortmarkLtd。
自1992年开始开发税务表单,从此迷恋上了易用表单设计。
她每月在www.usabilitynews.com撰写专栏“Caroline’sCorner”,阐述关于可用性的理念。
GerryGaffney经营着一家可用性咨询公司Information&DesignProprietaryLtd。
主编过几期《用户体验》杂志,还创建了广受欢迎的“用户体验播客”(uxpod.com)。
他认为表单设计是个难题,但还是试图从客观的角度来分析表单。
2023/8/3 15:12:06 42.54MB Web表单
1
如何高效的运营亚马逊,从最基础的工作做起。
举例说明每种工作的方法
2023/7/31 15:28:32 17KB amazon
1
RPA往往是多种技术的组合,实现人和计算机的高效协同
2023/7/31 4:18:23 10.39MB 2021 RPA 甲子光年
1
始终保持FIFO片选和读(WEN)有效(这个和guanfu_wang的例程应该是不一样),在进入循环前,首先FIFO_WRST_L();为FIFO第一次复位做准备,然后等待帧中断(VSYNC),在中断中,首先判断前一帧是否写完,如果没写完,就不要这一帧的数据,退出中断继续写上一帧,如果写完,就复位写FIFO,开始写入数据,然后(其实和FIFO几乎同步,但是写TFT比写FIFO慢得多,故不用担心数据出错,同时能保证高效和数据准确)复位读FIFO,开始写TFT,如此循环。
2023/7/30 16:36:20 11KB OV7670 FIFO
1
googleEfficientDet算法中文版paper.将高效网络骨架与我们提出的BiFPN和复合尺度相结合,我们开发了一种新的对象检测器家族,称为高效Det,它始终以比以前的对象检测器更少的参数和FLOP来获得更好的精度。
图和图形显示COCO数据集上的性能比较。
在类似的精度约束下,我们的有效DET使用的FLOP比YOLOv3少28倍,FLOP比RetinaNet少30倍,FLOP比最近基于ResNet的NAS-FPN少19倍。
特别是,在单模型和单测试时间尺度下,我们的高效Det-D7实现了最先进的53.7AP和52M参数和325BFLOP,在1.5AP的情况下优于以前最好的检测器,而在4倍小和使用13倍少的FLOP。
我们的高效DET在GPU/CPU上也比以前的检测器快4倍至11倍。
1
实习课题研究的主要内容与方法办公自动化是新时期政府部门的一项重要基础性建设,是国民经济信息化在政府部门的具体体现之一,对推进政府管理现代化、决策科学化、运作高效化起着积极和重要的作用。
办公自动化系统主要是为机关工作人员处理政务提供一个办公辅助手段。
政府办公活动就是对各类办公信息(数据、文字、声音、图象、图形)进行采集、存储、处理、传送和输出的过程。
办公自动化(OfficeAutomation,OA),是利用先进的科学技术(主要是计算机、软件、网络技术),使办公室部分工作逐步物化于各种现代化设备和软件系统中,由办公室人员、设备和软件共同构成服务于某种目标的人机信息处理系统,包括自动办公辅助、报文审批、公文流转及内部交流系统等。
其目的是尽可能充分利用现代技术资源与信息资源,提高政府部门行政管理工作效率和质量,辅助决策,以取得更好的工作效果。
办公自动化系统是电子政务的基础,主要是辅助解决办公室事务的时间管理、成本管理、质量管理等三个管理要素。
特别应提出的是办公系统不单是公文管理,而是对包括业务数据资源在内的办公资源进行全面规范和利用以及提供协同办公的辅助手段。
本模块属于《国税总局综合办公平台》的“办公用品管理”子模块。
本系统的总体结构图如下:使用的主要技术:技术:JavaSwing编程,web技术;
开发工具:Jbuilder数据库:Oracle9i数据访问方式:JDBCoraclethin模式参考设计模式:单态、工厂、DAO、MVC等具体实现的功能及模块划分如下表:功能类别子功能功能描述办公用品使用浏览办公用品用户根据自己的权限,浏览可以申请的办公用品,可以查看要领用物品的详细信息及剩余数量申请办公用品填写办公用品申领单,提交申请后,即可根据该用品设定的申请流程进行申请流转查看申领单申请办公用品的用户可以看到自己的申请是否审批通过,没有申请通过的单子可以撤销或重新申请查询办公用品用户可以根据类别、办公用品名称、购入时间、使用者等进行查询办公用品审批、签发审批办公用品具有审批权限的用户,核实申请单后,可以对申领单进行审批通过或驳回申领单申请人可以看到自己申请单的状态。
查询审批单具有审批权限的用户可以根据申请人名称查询到审批单,并按时间倒排序签发办公用品具有签发权限的用户可以看到审批通过的申领单,根据申领单的内容和审批意见签发办公用品,对已经签发的办公用品添上使用者和签发时间;
查询签发单具有签发权限的用户可以查询到未签发的审批单;
可以根据使用者查询到已签发的审批单;
可以根据签发时间查询到已签发的审批单;
办公用品管理设置办公用品类别可以添加、删除、修改、查询办公用品的类别(不同的办公用品类别,拥有不同的属性)分类办公用品根据办公用品的用途、属性等,将办公用品归类,例如可分为文具类、计算机类、耗材类、外设类等登记入库根据办公用品类别的不同,选择不同的属性登记页面,并设置安全存储量(默认可以是0,表示不需要设置该值)进行登记入库统计办公用品根据使用者统计办公用品申领列表存量提醒对设置了安全存量数量的办公用品,当剩余数量小于安全存量值的时候,提示管理员该物品存量不足,并可以查看该物品的详细信息权限管理设置权限可以添加、删除、修改一个权限设置用户可以添加、删除、修改一个用户分配权限对指定用户分配权限,也可以重新分配权限
2023/7/29 6:41:07 2.23MB Java 办公用品 管理系统
1
共 932 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡