我用MFCVC6编写的一个TCP一对多通信的程序,就是服务器端利用多线程技术(不使用Select等任何模型),能同时接收多个客户端的消息,其次,服务器端还能将消息群发给所有已连接的客户端,实现的基本思路是将每个线程中accept函数前往的套接字都保存到一个套接字数组中,套接字地址也保存到一个数组中。
然后在“群发”的按钮消息中,用for循环遍历套接字数组,循环执行send函数将消息发送给套接字数组中所有的套接字。
该程序简单完整,非常适合初学者研究WinSock一对多通信
2017/10/2 22:18:14 59KB WinSock 多线程 一对多
1
vhdl完成的8位全加器(循环/不循环)vhdl做的一个小玩意
2016/5/16 17:17:32 621KB vhdl
1
一个页面置换算法功能比较程序,包括了最佳置换,先进先出,LRU,随机置换,简单时钟和改进时钟六个算法。
使用了队列,链表,循环链表等数据结构。
随机产生请求页号,计算六种算法的缺页率。
2019/10/26 5:37:38 19KB 页面置换
1
原始图警告:该项目不再维护。
对于SQL数据映射,请使用。
protoc-gen-map通过将SQL数据映射到协议缓冲区来简化复杂数据集的管理。
除了定义原型消息和SQL语句外,开发人员无需编写任何数据检索或映射代码。
方法protoc-gen-map采用“数据库映射”方法(在MartinFowler的描述),在具有严格代码审查流程和专门的数据库建模人员团队的组织中非常有用。
protoc-gen-map与语言无关。
任何支持协议缓冲区的语言都可以使用已定义的消息通过gRPC请求和检索数据。
该框架不是对象关系映射器(ORM)。
对于大型和复杂的数据集,在处理复杂查询时,使用ORM会受到限制并降低功能。
SQL模板protoc-gen-map使用golang的模板引擎(文本/模板)。
这使开发人员可以根据gRPC请求消息动态修改sql参数,使用if语句或for循环,以及将大型SQL语句拆分为多个逻辑块。
下面的示例中有更多内容。
范例与指南简单的例子让我们使用一个非常简单的模式假设我们要根据某些请求检索博客信息。
为此,我们可以如下创建gRPC服务和SQL模板
2018/9/14 6:45:12 136KB go sql protobuf grpc
1
最近有项目要做一个高功能网络服务器,决定下功夫搞定完成端口(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
问题描述:利用哈夫曼编码进行信息通讯可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这要求在发送端通过一个编码系统对待传数据预先编码;
在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。
试为这样的信息收发站写一个哈夫曼码的编译码系统。
基本要求:一个完整的系统应具有以下功能:(l)I:初始化(Initialization)。
从终端读入字符集大小n,及n个字符和m个权值,建立哈夫曼树,并将它存于文件hfmtree中。
(2)C:编码(Coding)。
利用已建好的哈夫曼树(如不在内存,则从文件hfmtree中读入),对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中。
(3)D:编码(Decoding)。
利用已建好的哈夫曼树将文件codefile中的代码进行译码,结果存入文件textfile中。
(4)P:印代码文件(Print)。
将文件codefile以紧凑格式显示在终端上,每行50个代码。
同时将此字符方式的编码文件写入文件codeprint中。
(5)T:印哈夫曼树(Treeprinting)。
将已在内存中的哈夫曼树以直观的方式(树或凹入表方式)显示在终端上,同时将此字符方式的哈夫曼树写入文件treeprint中。
实现提示根据题目要求把程序划成5个模块,设计成菜单方式,每次执行一个模块后返回菜单。
除了初始化(I)过程外,在每次执行时都经过一次读取磁盘文件数据。
这是为了如果在程序执行后一直没有进行初始化(I)过程,为了能使后面的操作顺利进行,可以通过读取旧的数据来进行工作。
比如:如果程序的工作需要的字符集和权值数据是固定的,只要在安装程序时进行一次初始(I)化操作就可以了。
再在次运行程序时,不管进行那项操作都可以把需要的数据读入到内存。
算法分析本程序主要用到了三个算法。
(1)哈夫曼编码在初始化(I)的过程中间,要用输入的字符和权值建立哈夫曼树并求得哈夫曼编码。
先将输入的字符和权值存放到一个结构体数组中,建立哈夫曼树,将计算所的哈夫曼编码存储到另一个结构体数组中。
(2)串的匹配在编码(D)的过程中间,要对已经编码过的代码译码,可利用循环,将代码中的与哈夫曼编码的长度相同的串与这个哈夫曼编码比较,如果相等就回显并存入文件。
(3)二叉树的遍历在印哈夫曼树(T)的中,因为哈夫曼树也是二叉树,所以就要利用二叉树的先序遍历将哈夫曼树输出。
[测试数据]根据实验要求,在tobetrans.dat中输入"THISPROGRAMISMYFAVORITE",字符集和其频度如下:字符 __ A B C D E F G H I J K L M频度 186 64 23 22 32 103 21 15 47 57 1 5 32 20字符 N O P Q R S T U V W X Y Z 频度 20 56 19 2 50 51 55 30 10 11 2 21 2
2021/11/10 18:15:21 4KB 课程设计 c/c++ 哈夫曼树 编码
1
本书是一本大名鼎鼎的Python入门书,即使对计算机了解不多,没有学过编程的读者学习Python也适用。
这本书以习题的方式引导读者一步一步学习编程,从简单的打印不断讲到完整项目的实现,让初学者从基础的编程技术入手。
本书是基于Python3.6版本编写的。
本书结构非常简单,除“准备工作”之外,还包括52个习题,其中26个覆盖了输入/输出、变量和函数3个主题,另外26个覆盖了一些比较进阶的话题,如条件判断、循环、类和对象、代码测试及项目的实现等。
每一章的格式基本相同,以代码习题开始,按照说明编写代码,运行并检查结果,然后再做附加练习。
(论坛里面该书的资源基本上都是第三版的,即python2.7的版本,故第一次发资源,就分享一下作者基于python3.6的新版。
同时版本为kindle版,在kindle或pc上kindle阅读器看均可。
2020/3/14 9:04:42 14.39MB Python 编程 入门
1
1.16QAM调制解调;
2.512个子载波构成一个OFDM符号;
3.带循环前缀和循环后缀;
4.OFDM信号加窗(rcos);
5.OFDM信号功率谱以及发送接收误码率分析;
6AWGN信号
2018/9/22 3:11:14 4KB OFDM 16QAM调制解调 matlab仿真
1
vb读取电表数据,可同时读取几个电表,而且还是循环读取。
2020/3/10 12:04:19 3KB vb 串口 没几秒 同时读取
1
带手打书签高清版本书系统而深入地引见了现代数字信号处理的基础和一些广泛应用的算法。
全书共10章,分为四个部分。
第一部分包括第1章~第4章,引见了研究和学习现代数字信号处理的重要基础,包括随机信号模型、估计理论概要、最优滤波器理论、最优线性预测和最小二乘滤波,这些内容在各种信号处理的研究论文中被广泛使用,是研究信号处理的基础性知识;
第二部分包括第5章和第6章,详细讨论了利用二阶统计量进行信号分析和处理的两个重要应用方向——功率谱估计算法和自适应滤波算法;
第三部分为第7章和第8章,引见了高阶统计量和循环统计量及其应用,对于非高斯随机信号和非最小相位系统,高阶统计量和循环统计量是非常有效的工具;
第四部分包括第9章和第10章,是时频分析和小波变换原理及应用的概述,这部分材料构成对非平稳信号处理的一个导论。
空间阵列信号处理的一些初步内容则穿插在有关章节中,不单独成章。
本书在写作中,除注重内容的先进性和系统性外,也尽量做到有启发性、容易读懂、便于自学。
2015/11/21 4:57:46 8.3MB 信号
1
共 825 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡