`
lingyibin
  • 浏览: 191364 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
文章列表
1、继承不要随便使用,继承规则应当是:若在逻辑上 B 是 A 的“一种” ,并且 A 的所有功能和属性对 B 而言都有意义,则允许 B 继承 A 的功能和属性。   2、 如果输入参数采用“指针传递” ,那么加 const 修饰可以防止意外地 ...
1、当创建一个类时,C++编译器将默认产生下列函数:   A(void); // 缺省的无参数构造函数 A(const A &a); // 缺省的拷贝构造函数 ~A(void); // 缺省的析构函数 A & operate =(const A &a); // 缺省的赋值函数       ...
1、重载: 只能靠参数而不能靠返回值类型的不同来区分重载函数。编译器根据参数为每个重载函数产生不同的内部标识符。 如void Test(int …);void Test(char…);void Test(float…); 编译器有可能会为这三个函数产生三个像_test_int、_test_char、_test_float 之类的内部标识符,当做不同的编译器可能产生不同风格的内部标识符,上面这种风格是我自己推测的。这也许就是重载的原理吧。 有一点需要注意的是,并不是函数名相同参数不同就能构成重载,如全局函数和类的成员函数同名就不算:   void Print(…); // 全局函 ...
也就是原型模式。它是通过已经存在的对象来克隆出一个新的可定制的对象。   如果是用Java或C#的话这个过程会简单一点,因为Java的各种类中都有一个clone() 方法,C#中除了clone() 外还有一个MemberwiseClone()方法 可以用来克隆。 ...
当一个对象很大时,可以考虑把这个对象的各个部分分开来构建,最后再得到你想要的对象。这就是Builder模式。这种模式可以将构建复杂对象的过程和它的部件解耦。 首先定义一个抽象类,规定好这个类的各个方面:   public ...
工厂是用来生产一个一个实例的,这模式就因此而得名。 一般产生一个对象的方法是用new,这大家都知道。Demo d = new Demo(); 但当很多对象都需要创建是,语句就变得很繁琐: Demo1 d1 = new Demo1(); Demo2 d2 = new Demo2(); Demo3 d3 = new Demo3(); …… Demon dn = new Demon();   这时可以考虑用工厂模式,写一个方法来制造你所需要的对象: public class Factory{   public static Demo getInstance(int wh ...
这种模式很简单,有一定经验的程序员几乎都用过,这里就不多讲,给出代码,看了就清楚了。 一种是饿汉型的,如下: public class Singleton { //把构造函数调成私有的话,就不允许用户用new的方式来创建对象了   private Singleton(){}   private static Singleton instance = new Singleton();   //调用这下面这个方法就可以得到单实例了     public static Singleton getInstance() {     return instance; ...
5、用指针参数传递内存 用指针作为函数的参数,如果去申请动态内存的话,是不会成功的。 void GetMemory(char *p, int num) { p = (char *)malloc(sizeof(char) * num); } void Test(void) { char *str = NULL; GetMemory(str, 100); // str 仍然为 NU ...
1、 三种内存分配方式  这是最基本的知识。 (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的 整个运行期间都存在。例如全局变量,static 变量。 (2) 在栈上创建。在执行函数时,函 ...
1、在函数体的“入口处” ,用断言对参数的有效性进行检查。断言 assert 是仅在 Debug 版本起作用的宏,它用于检查“不应该”发生的情况。   void *memcpy(void *pvTo, const void *pvFrom, size_t size) { assert((pvTo != NULL) && (pvFrom != NULL)); // 使用断言 byte *pbTo = (byte *) pvTo; // 防止改变 pvTo 的地址 byte *pbFrom = (byte *) pvFrom; // 防止改变 p ...
学了这么久的C/C++,在读《高质量C++/C编程指南》时竟然发现自己以前的编程水平这么糟糕。。。 首先是一套面试用的卷子,做完之后还洋洋得意,可是一对答案,正确率居然低于30% ,可悲。。。   这卷子也不好贴出,需要的 ...
1、一次一密乱码本 这种加密方式加密后的的密码是另一类移位密码,只是每一次移动的位数不同,由secret key密钥来决定。要求密钥和消息行长。是一种对称密码,也是多表代替密码。 举例:     消息:n e v e r m o r e      密钥:e x c e l  s  i o r     密文:R B X I C  E W F V   下面是一个简单和程序来演示这个过程: #include<iostream> #include<ctype.h> using namespace std; #define MAXLEN ...
1、经典的简单密码:    移位密码、一次一密乱码本、仿射密码。 2、移位密码:这是最简单的一种加密方式,早期的Caesar密码就是移位密码,这种密码很简单就是约定 把第个字母的位数往后移动3位,改进后的Caesar密码是发送方和接收方协商一个密钥k,1≤k≤25,代表移 动位数。下面写一个简单的程序展示一下: #include<iostream> #include <ctype.h> using namespace std; #define CNT 5 //移动的位数 #define MAXLEN 100 //要加密的字符串可能的 ...
  一、网络安全体系的五类服务: 访问控制服务:根据实体身份决定其访问权限; 身份鉴别服务:消息来源确认、防假冒、证明你是否就是你所声明的你; 保密性服务:利用加密技术将消息加密,非授权人无法识别信息; 数据完整性服务:防止消息被篡改,证明消息与过程的正确性; 防抵赖服务:阻止你或其他主体对所作所为的进行否认的服务,可确认、无法抵赖。     二、用加密来实现保密性,用数字摘要来实现完整性,用数字签名来实现不可否认性     三、密码系统:明文,密文,加解密算法,密钥
页面调用:aspx.cs //上传文件 if (FileUpload1.HasFile){isupload = mycomm.uploadThumbToServer(FileUpload1, strUpPath + "\" + tmpRdFile, this);}   在页面调用的中转方法: /// <summary>/// 将图片以缩略图+水印的方式上传/// </summary>/// <param name="FileUpload1">要上传的对象</param>/// <param ...
Global site tag (gtag.js) - Google Analytics