当前位置:  编程技术>c/c++/嵌入式
本页文章导读:
    ▪C++第一课 关于“using namespace std”      来自http://www.cnblogs.com/uniqueliu/archive/2011/07/10/2102238.html对于一个存在着标准输入输出的C++控制台程序,一般会在#include <iostream>的下一行发现一句话,using namespace std。这句话其实就表示了所.........
    ▪P2P调度及拥塞、流量、速度控制      调度是p2p的核心,一个设计不好的调度会弄瘫整个p2p网络,看看下边的调度 1.  关于下载的快慢 假设网速不变,种子不变情况,最优调度应该是: 种子负载小的优先调度 .........
    ▪Qt实例2 - 文本编辑器(1)加入查找框      实例1我们做了一个查找框,这东西必须得配合文本才能发挥作用,所以我们再做一个很简单的文本编辑器。Qt里面有一个叫做QPlainTextEdit的东西可以实现文本编辑的功能,类似于HTML里的textarea.........

[1]C++第一课 关于“using namespace std”
    来源:    发布时间: 2013-10-14

来自http://www.cnblogs.com/uniqueliu/archive/2011/07/10/2102238.html

对于一个存在着标准输入输出的C++控制台程序,一般会在#include <iostream>的下一行发现一句话,using namespace std。这句话其实就表示了所有的标准库函数都在标准命名空间std中进行了定义。其作用就在于避免发生重命名的问题。

  1. 关于namespace
  C++引入了命名空间namespace主要解决了多个程序员在编写同一个项目中可能出现的函数等重名的现象。解决方法就是加上自己的命名空间。比如下面的例子:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
  
namespace ZhangSan 
{
    int a=10; //张三把10赋值给了变量a
}
namespace LiSi
{
    int a=5; //李四把10赋值给了变量a
}
  
void main()
{
    int a=1;
    cout<<"张三定义的a="<<ZhangSan::a<<endl;
    cout<<"李四定义的a="<<LiSi::a<<endl;
    cout<<"主函数定义的a="<<a<<endl;    
}
  上例中的“ZhangSan::a”和“LiSi::a”分别表示了调用张三命名空间中的a变量和李四命名空间中的a变量。这样的好处显而易见,那就是虽然张三和李四这两个程序员都定义了一个变量a,但是并不会出现重名的危险。
运行结果为:
 
  
  2. 关于using namespace *
  顾名思义,using namespace * 就表示释放命名空间* 中间的东西。好处在于我们在程序里面就不用在每个函数的头上都加上*::来调用。比如说如果上面那个程序,如果我们不在using namespace std,那么我们就需要在主函数中的标准输出流cout函数前面加上std,写成
 
?
std::cout
表示调用std空间里面的标准输出流cout。但是有些时候我们也不能图这个方便,比如说如果在主函数中将命名空间ZhangSan和LiSi的中所定义的变量释放出来,如下例1:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
  
namespace ZhangSan 
{
    int a=10; //张三把10赋值给了变量a
}
namespace LiSi
{
    int a=5; //李四把10赋值给了变量a
}
  
void main()
{
    int a=1;
    using namespace ZhangSan;

    
[2]P2P调度及拥塞、流量、速度控制
    来源:    发布时间: 2013-10-14

调度是p2p的核心,一个设计不好的调度会弄瘫整个p2p网络,看看下边的调度

1.  关于下载的快慢

  • 假设网速不变,种子不变情况,最优调度应该是:
    • 种子负载小的优先调度
    • 种子RTT小的优先调度
    • 种子丢包率小的优先调度
  • 对于丢包在紧急区和非紧急区的处理应该是:
    • 紧急时,调度优先种子,且多种子调度
    • 非紧急时,根据播放点动态调整包超时时间,调度负载小的种子
  • 假设网速不变,种子可变情况,最优调度应该是:
    • 种子越多越好
    • 调度越分散越好
  • 指标主要考察下载速度、丢包率、冗余率

2.  关于下载的合理

  • 主要看分享率指标

3.  总结 P2P调度及拥塞、流量、速度控制

  • 化繁为简,以点对点间速度控制为主
  • 节点管理
    • 排序根据RTO、interval、Sendlen
    • 节点过多时做废弃节点管理
    • 本轮次节点请求包数:window*1s/调度间隔
  • 提高速度优先以增加节点,其次为增加节点请求
  • 节点速度管理
    • 根据发送间隔算出发送端当前上传带宽
    • 根据RTO变化判断拥塞,拥塞后要控制当前请求量,window不变,一秒或2秒恢复请求量
    • 发现丢包通知发送端降低发送频率
    • 发送端如果发现没有丢包通知,提高发送频率
  • 提高节点连接成功率
    • 直连不成功时,按反向连接处理
  • HTTP不要频繁开关

---欢迎有兴趣者留言讨论

本文链接


    
[3]Qt实例2 - 文本编辑器(1)加入查找框
    来源:    发布时间: 2013-10-14

实例1我们做了一个查找框,这东西必须得配合文本才能发挥作用,所以我们再做一个很简单的文本编辑器。

Qt里面有一个叫做QPlainTextEdit的东西可以实现文本编辑的功能,类似于HTML里的textarea。废话不多说,我们开始写代码。

 

我们用QPlainTextEdit实现文本编辑功能

1.新建一个项目,名字就叫editor吧,取消创建界面,类名默认,基类默认为MainWindow就可以了。

2.修改mainwindow.h,给他一些类和变量的声明:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>
class QPlainTextEdit;
class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0);
~MainWindow();

private:
QPlainTextEdit *textArea;
};

#endif // MAINWINDOW_H

修改mainwindow.cpp,把声明的组件加进去:

#include "mainwindow.h"
#include <QPlainTextEdit>

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(tr("MyEditor"));

//类似于html里的textarea
textArea = new QPlainTextEdit;

//设为中央部件
setCentralWidget(textArea);
}



MainWindow::~MainWindow()
{

}

点击绿色播放按钮运行一下看看效果吧,我们可以在里面写文字了:


    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3