科技新闻

PostThreadMessage

為{幸葍}努か 提交于 2020-03-23 02:06:06
3 月,跳不动了?>>> 函数功能:该函数将一个消息放入 (寄送)到指定线程的消息队列里,不等待线程处理消息就返回。 函数原型:BOOL PostThreadMessage(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM IParam); 参数 idThread:其消息将被寄送的线程的 线程标识符。如果线程没有消息队列,此函数将失败。当线程第一次调用一个Win 32 USER或GDI函数时,系统创建线程的消息队列。要得到更多的信息,参见备注。 Msg:指定将被寄送的消息的类型。 wParam:指定附加的消息特定信息。 IParam:指定附加的消息特定信息。 返回值:如果函数调用成功,返回非零值。如 果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。如果idThread不是一个有效的线程标识符或由 idThread确定的线程没有消息队 列,GetLastError返回 ERROR_INVALID_THREAD。 备注:消息将寄送到的线程必须创建消息队 列,否则调用PostThreadMessage会失败。用下列方法之一来处理这种情况: 调用PostThreadMessage。 如果失败,调用Sleep,再调用PostThreadMessage,反复执行,直到PostThreadMessage成功。

get&post的区别

十年热恋 提交于 2020-03-23 01:58:36
get 请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的 GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET 请求不应在处理敏感数据时使用 GET 请求有长度限制 ,大多数浏览器通常都会限制url长度在2K个字节 GET 请求只应当用于取回数据 只接受ASCII字符的参数的数据类型 get效率高 post 查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的 POST 请求不会被缓存 POST 请求不会保留在浏览器历史记录中 POST 不能被收藏为书签 POST 请求对数据长度没有要求 POST支持多种编码方式 为什么get比post效率高 **[最重要原因]**post在真正接受数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据 post 请求过程 1.浏览器请求tcp连接(第一次握手) 2.服务器答应进行tcp连接(第二次握手) 3.浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送) 4.服务器返回100 continue响应 5.浏览器开始发送数据 6.服务器返回200 ok响应 get 请求过程 1.浏览器请求tcp连接(第一次握手) 2.服务器答应进行tcp连接(第二次握手) 3.浏览器确认,并发送get请求头和数据

RSA公钥文件解密密文的原理分析

三世轮回 提交于 2020-03-23 01:05:29
前言   最近在学习RSA加解密过程中遇到一个这样的难题:假设已知publickey公钥文件和加密后的密文flag,如何对其密文进行解密,转换成明文~~ 分析   对于rsa算法的公钥与私钥的产生,我们可以了解到以下产生原理: 公钥与私钥的产生 随机选择两个不同大质数 $p$ 和 $q$,计算 $N = p \times q$ 根据欧拉函数,求得 $r=\varphi (N)=\varphi (p)\varphi (q)=(p-1)(q-1)$ 选择一个小于 $r$ 的整数 $e$,使 $e$ 和 $r$ 互质。并求得 $e$ 关于 $r$ 的模反元素,命名为 $d$,有 $ed\equiv 1 \pmod r$ 将 $p$ 和 $q$ 的记录销毁 此时,$(N,e)$ 是公钥,$(N,d)$ 是私钥。 消息加密 首先需要将消息 $m$ 以一个双方约定好的格式转化为一个小于 $N$,且与 $N$ 互质的整数 $n$。如果消息太长,可以将消息分为几段,这也就是我们所说的块加密,后对于每一部分利用如下公式加密: $$ n^{e}\equiv c\pmod N $$ 消息解密 利用密钥 $d$ 进行解密。 $$ c^{d}\equiv n\pmod N $$ 我们可以知道,RSA公钥主要有两个信息:模数(modulus)和指数(exponent),也就是我们所说的N和e

C#多线程与UI响应 跨线程更新UI

醉酒当歌 提交于 2020-03-22 14:58:18
最近在写一个TCP通信程序,自定义了一个通信类TCPclient,用于客户端异步接收和发送网络消息。 TCPclient中定义了一个接收到新的网络消息事件: 1 //收到新消息事件 2 public delegate void receiveNewNetworkMsgHandler( string networkMSG); 3 public event receiveNewNetworkMsgHandler receiveNewNetworkMsg; 在外部的窗体中订阅了此事件: void thisClient_receiveNewNetworkMsg( string networkMSG); 起初是直接在这个函数中读取网络消息 ,并解析命令,然后触发窗体的LoginSuccess事件,LoginSuccess事件的委托函数会New一个 main 窗体 但是问题是这个new的main窗体总是无响应。 经过很长时间的摸索,终于得出以下结论 在自定义类中定义并触发事件,那么UI中的事件处理代码也就工作在自定义类线程中,访问UI中控件需要invoke 在此之前,我一直认为事件处理函数在哪个类,自然运行的时候就在相应的线程中执行,至此才明白错在哪里。 根据这条结论,自然就不能直接在thisClient

面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?

China☆狼群 提交于 2020-03-22 12:42:05
1 ,结构化分析方法 结构化方法主要用于分析系统的功能,是一种直接根据数据流划分功能层次的分析方法;结构化方法的基本特点是表达问题时尽可能使用图形符号,即使非计算机专业人员也也易于理解,设计数据流图时只考虑系统必须完成的基本功能,不需要考虑如何具体地实现这些功能,对于相当复杂的系统, SA 采用化整为零,逐个击破和从抽象到具体逐层分解的方法。 2 ,面对对象分析方法 面对对象的分析分为问题分析和应用分析,问题分析的主要任务是收集并确认用户的需求分析和过程分析,从中抽象出问题的基本概念,属性和操作,然后用泛化,组成和关联结构描述实体间的静态关系。应用分析的主要任务是动态描述系统中对象的合法状态序列,并用动态模型表达对象的动态行为,对象之间的消息传递和协同工作的动态信息, OTM 方法的基本思想是将面对对象的分析过程视为一个模型的构建过程,在建模中要构造三个模型:动态模型,对象模型,功能模型。 来源: https://www.cnblogs.com/kiko2014551511/p/5289295.html

面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?请根据自己的理解简明扼要的回答。

删除回忆录丶 提交于 2020-03-22 11:38:45
面向过程是从问题的总体目标开始,抽象底层的细节,先专心构造高层的结构,然后再一层一层地分解合细化。   面向对象则是运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的方法。   面向过程着重于解决问题的从粗略到详尽的方法,二面向对象则关注点是问题本身。好比渔夫捕鱼,使用什么样的网子用什么样的方式撒网收网即是面向过程,而抓到鱼这件事则是面向对象。二者区别在于侧重点不同。 来源: https://www.cnblogs.com/xiongchi/p/5281546.html

应用层

落花浮王杯 提交于 2020-03-22 10:54:54
网络应用的体系结构 客户机/服务器结构(Client-Server, C/S) 点对点结构(Peer-to-peer, P2P) 混合结构(Hybrid) 客户机/服务器结构 服务器 永久提供服务 永久性访问地址/域名 大量的服务器实现了可拓展性 客户机 与服务器通信,使用服务器提供的服务 间歇性接入网络 可能使用动态的ip地址 不会与其它客户机通信 P2P结构 没有永远在线的服务器 任意端系统/节点之间可以直接通讯 节点间歇性接入网络 节点可能改变IP地址 优点:高度可伸缩 缺点:难于管理 混合结构 Napster 文件传输使用P2P结构 文件的搜索采用C/S结构——集中式 网络应用进程通信 在计算机网络中, 进程指的就是程序。 同一主机上的进程之间的通信 进程间通信机制 操作系统提供 不同主机上的进程之间的通信 消息交换 套接字(Socket) 进程间通信利用socket发送/接收消息实现,这个过程类似于寄信 寻址进程 不同主机上的进程间通信,那么每个进程必须拥有标识符 寻址主机——ip地址 端口号(Port number):为主机上每个需要通信的进程分配一个端口号( HTTP Server: 80;Mail Server:25) 进程的标志符(ip地址+端口号) 应用层协议 网络应用需遵循应用层协议 公开协议 由RFC(Request For Comments)定义

红帽考试学习第十七记

不羁岁月 提交于 2020-03-22 08:37:07
第十五章 使用 Postfix与Dovecot部署邮件系统 电子邮件系统   电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些:   简单邮件传输协议( Simple Mail Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。   邮局协议版本 3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。    Internet消息访问协议版本4(Internet Message Access Protocol 4):用于在本地主机上访问访问邮件,占用服务器143/TCP端口。   在生产环境中部署企业级的电子邮件系统时,有四个注意事项请留意:   添加反垃圾与反病毒模块:它能够很有效地阻止垃圾邮件或病毒邮件对企业信箱的干扰。   对邮件加密:可有效保护邮件内容不被黑客盗取和篡改。   添加邮件监控审核模块:可有效的监控企业全体员工的的邮件中是否含有敏感词、是否有透露企业资料等违规行为。   保障稳定性:电子邮件系统的稳定性至关重要,运维人员应做到保证电子邮件系统的稳定运行,并及时做好防范分布式拒绝服务( Distributed Denial of Service,DDoS)攻击的准备。 第十六章 使用 Squid部署代理缓存服务 代理缓存服务   

c# socket udp广播

时光毁灭记忆、已成空白 提交于 2020-03-22 05:46:18
一、广播消息   由于Tcp是有连接的,所以不能用来发送广播消息。发送广播消息,必须用到Udp,Udp可以不用建立连接而发送消息。广播消息的目的IP地址是一种特殊IP地址,称为广播地址。广播地址由IP地址网络前缀加上全1主机后缀组成,如:192.168.1.255是192.169.1.0这个网络的广播地址;130.168.255.255是130.168.0.0这个网络的广播地址。向全部为1的IP地址(255.255.255.255)发送消息的话,那么理论上全世界所有的联网的计算机都能收得到了。但实际上不是这样的,一般路由器上设置抛弃这样的包,只在本地网内广播,所以效果和向本地网的广播地址发送消息是一样的。   利用udp广播可以实现像cs中建立服务器后,客户端可以收到服务器消息从而进行连接。 二、服务端 开启线程不断广播自己ip地址等信息,等待客户端接收 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Net; 6 using System.Net.Sockets; 7 using System.Threading; 8 using System.Threading.Tasks; 9 10 namespace

大型网站系统架构系列:分布式消息队列(二)

旧时模样 提交于 2020-03-22 03:43:14
四、JMS消息服务 讲消息队列就不得不提JMS 。JMS(JAVA Message Service,java消息服务)API是一个消息服务的标准/规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。 在EJB架构中,有消息bean可以无缝的与JM消息服务集成。在J2EE架构模式中,有消息服务者模式,用于实现消息与应用直接的解耦。 4.1消息模型 在JMS标准中,有两种消息模型P2P(Point to Point),Publish/Subscribe(Pub/Sub)。 4.1.1 P2P模式 P2P模式包含三个角色:消息队列(Queue),发送者(Sender),接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到他们被消费或超时。 P2P的特点 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中) 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列 接收者在成功接收消息之后需向队列应答成功 如果希望发送的每个消息都会被成功处理的话,那么需要P2P模式。(架构KKQ:466097527,欢迎加入) 4.1.2 Pub/sub模式 包含三个角色主题