摘要: 最近在做H5网站,用websocket跟后台交互时,需要对数据进行加密,于是选了 "crypto js组件" ,GitHub上api也不少,写的也清晰,但实际使用上会遇到不少坑: 1. 加密解密时,传入的密钥key,需要转换为特定数组,不能是字符串 2. 加密时,传入的明文需转换为特定数组 3. 解 阅读全文
posted @ 2017-12-19 14:57 爱幻想の宅 阅读(5601) 评论(0) 推荐(0) 编辑
摘要: 在创建某个类型实例之前,就应该初始化该实例的所有静态成员变量。而C 为此提供了静态初始化器和静态构造函数。 静态构造函数是特殊的构造函数,将在其他所有方法执行之前以及变量或属性被第一次访问之前执行。 若是简单的为某个成员分配空间,可以使用初始化器语法来替代静态构造函数。若是要以更复杂一些的逻辑初始化 阅读全文
posted @ 2017-12-19 11:48 爱幻想の宅 阅读(1192) 评论(0) 推荐(0) 编辑
摘要: 通常来说类都有不止一个构造函数。随着时间推移,成员变量的增加,构造函数的个数也会不断的增加。预防这种情况的最好方法是,在声明变量的时候就进行初始化,而不是在每个构造函数中进行。 这样一来,无论MyClass类型添加多少个构造函数,labels变量都可以正确的初始化。编译器将在每个构造函数的最开始位置 阅读全文
posted @ 2017-05-19 11:08 爱幻想の宅 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 我们最好尽可能的编写最清晰的代码,将优化交给JIT编译器完成。一个常见的错误优化是,将大量逻辑放在一个函数中,以期减少额外的方法调用开销。这种将函数逻辑直接写在循环内部的常见优化做法却会降低.NET应用程序的性能。 在第一次调用BuildMsg时,if else的两个分支都会被JIT编译。而实际上仅 阅读全文
posted @ 2017-04-26 10:32 爱幻想の宅 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 转换操作符为类之间引入了一种“可替换性”(substitutability)。“可替换性”表示一个类的实例可以替换为另一个类的实例。 在某个类型定义了转换操作符之后,实际上是告诉编译器这些类型可以当做目标类型使用。不过,这样的替换经常会导致一些难以理解的BUG,因为这个类型不能完美的当做目标类型的替 阅读全文
posted @ 2017-04-26 10:30 爱幻想の宅 阅读(213) 评论(0) 推荐(0) 编辑
摘要: C 现在支持调用者一方使用具名参数(named parameter)。类型中的名称也成为了公有接口的一部分。修改公有参数名称将有可能破坏掉调用者的代码。 这时,如果修改参数名称,虽然程序仍可正常执行,但调用者进行编译时将会出错。 此外,为现有方法添加(设置带默认值的)参数将会在运行时抛出异常。需要调 阅读全文
posted @ 2017-04-26 10:30 爱幻想の宅 阅读(293) 评论(0) 推荐(0) 编辑
摘要: C 语言中并不缺少控制程序流程的结构, 等都可以做到这一点。但我们还有更好的方式: 下面这段代码演示了用命令式的方式填充一个数组,然后将其内容输出到控制台: 这只是个简单的操作,因此你可能看不到太多的好处。确实如此,不过你可以继续看看其他一些问题。 很多操作要处理嵌套循环。例如,用0~99的整数生成 阅读全文
posted @ 2017-04-26 10:29 爱幻想の宅 阅读(328) 评论(0) 推荐(0) 编辑
摘要: GetHashCode()函数仅会在一个地方用到,即为基于 的集合定义的散列键时,此类集合包括HashSet和Dictionary容器等。 但object基类提供的GetHashCode()实现有很多问题。 + 对于引用类型,虽然可以正常工作,但效率很低 + 对于值类型,基类中的实现有时甚至是不正确 阅读全文
posted @ 2017-04-26 10:28 爱幻想の宅 阅读(1945) 评论(0) 推荐(0) 编辑
摘要: System.Object.ToString()是.NET环境中最常用的方法之一。编写类型时,要提供一个合理的ToString版本,否则使用者就不得不自己构造一套可以阅读的表示。 虽然简单的ToString()方法很多时候已经可以满足为用户定义的类型显示文本信息的需求,但有时还会需要功能更强的方法。 阅读全文
posted @ 2017-04-26 10:27 爱幻想の宅 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 当创建自定义类型时(无论是class还是struct),应为类型定义"等同性"的含义。C 提供了4种不同的函数来判断两个对象是否"相等": 和`Object.Equals()`这两个系统提供的静态方法,永远都不需要重新定义。 判断的是对象引用,判断的是否拥有同样的对象标识(object identi 阅读全文
posted @ 2017-04-26 10:27 爱幻想の宅 阅读(279) 评论(0) 推荐(0) 编辑