仅供学习参考,http://w2.siemens.com.cn/download/smart/STEP7MicroWINSMARTV2.2.ziphttp://w2.siemens.com.cn/download/smart/STEP7-MicroWIN-SMART-V2.4.zip
2023/8/13 20:12:23 291.7MB STEP7-MicroWIN-S STEP7 SMART
1
Unity版本:2018.2.15博客参考:http://blog.sina.com.cn/s/blog_1322690230102z1qh.html
2023/8/12 22:13:37 28.19MB UGUI 中文字体
1
最近有项目要做一个高性能网络服务器,去网络上搜到到的都是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
appid:="************" apikey:="***********88" curtime:=strconv.FormatInt(time.Now().Unix(),10) param:=make(map[string]string) param["engine_type"]="sms16k" param["aue"]="raw" tt,_:=json.Marshal(param) base64_param:=base64.StdEncoding.EncodeToString(tt) w:=md5.New() io.WriteString(w,apikey+curtime+base64_param) checksum:=fmt.Sprintf("%x",w.Sum(nil)) body,_:=ioutil.ReadFile("./ceshi.pcm") base64_audio:=base64.StdEncoding.EncodeToString(body) data:=url.Values{} data.Add("audio",string(base64_audio)) res_body:=data.Encode() client:=&http.Client{} req,_:=http.NewRequest("POST","http://api.xfyun.cn/v1/service/v1/iat",strings.NewReader(res_body)) req.Header.Set("X-Appid",appid) req.Header.Set("Content-Type","application/x-www-form-urlencoded") req.Header.Set("X-Param",base64_param) req.Header.Set("X-CheckSum",checksum) req.Header.Set("X-Curtime",curtime) response,_:=client.Do(req) deferresponse.Body.Close() resp_body,_:=ioutil.ReadAll(response.Body) fmt.Print(string(resp_body))
2023/8/8 21:12:27 1KB 科大讯飞 go语言 语音转写
1
OEMSHOP,是一套可以赚钱,可以变更为你自己的名称(OEM)的开源商城系统,基于ThinkPHP6+UNIAPP+饿了么UI+EASYWECHAT技术架构,支持PC、H5、公众号、小程序,APP等10余个应用端口。
演示网址:http://doc.s102.y01.cn/web/#/5?page_id=24
2023/8/7 17:13:45 41.17MB OEM 小程序商城 分销商城 营销商城
1
简体中文|棒极了一份精心编辑的相关清单。
文件官方文档社区文档(:warning:过期)在线玩具deno-play.app(:warning:证书问题)模块注意:Deno有一些官方模块可以在中找到,如果你有合适的模块可以考虑提交到仓库。
一个更好的用于创建Web应用程序的Deno框架。
-Alosaur-具有许多装饰器的DenoWeb框架。
格式化字节(Uint8Array,ArrayBufferView...)输出,在调试IO功能时很有用。
用于构造控制台应用程序的简单但功能强大的框架。
将破折号/点号/下划线/间隔分隔的字符串转换为camel案例:foo-bar→fooBar。
-用于杰诺控制台的颜色基础库。
在执行长任务时在终端中显示加载中。
-一个简单的CSV解析器。
-CacheClean,在下次运行时重新加载dep。
-的ejs模板引擎。
2023/8/4 18:49:41 890KB
1
来源https://www.right.com.cn/forum/thread-318971-1-1.html
2023/7/28 1:57:17 23.75MB 固件
1
具体参考微软网站http://www.microsoft.com/DOWNLOADS/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=8e2dfc8d-c20e-4446-99a9-b7f0213f8bc5
2023/7/22 17:27:42 44.61MB Analysis Services 组件
1
安装mysql-connector-odbc提示缺失visualstudio2013x86,安装好mysql-connector-odbc后,对应powerdesigner是32位,用于连接mysql做逆向工程。
https://dev.mysql.com/downloads/connector/j/https://docs.microsoft.com/zh-cn/visualstudio/productinfo/vs2013-sysrequirements-vs
2023/7/20 9:07:06 13.83MB mysql powerdesigner
1
编写Dockerfiles最佳实践(Docker18.09),云管理服务专家新钛云服(www.tyun.cn)翻译整理
2023/7/19 10:36:01 655KB docker kubernetes
1
共 522 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡