有关转型的几种做法,已经在早些的博客中写过了.这里先简单回顾一下,再讲一讲effective中对之更深入的阐述. 转型可以按风格可以分成C风格转型和C++风格转型两大类,C风格转型很容易看到,因为我们会经常使用,像 (T) expression 以及: T (expression) 最经典的例子就是处理整数除法,在C/C++程序中,整数除法的结果还是整数,有时会得不到我们想到的结果,比如3/5,结果是0,而不是0.6,但如果这样double(3) / 5,结果就会是0.6了,因为转型操作doub…
如果可以,尽量避免转型,特别是在注重效率的代码中避免dynamic_casts.如果有个设计需要转型动作,试着发展无需转型的替代设计. 如果转型是必要的,试着将它隐藏于某个函数背后.客户随后可以调用该函数,而不需将转型放进他们自己的代码内. 宁可使用c++-stytle(新式)转型,不要使用旧式转型.前者很容易辨识出来,而且也比较有这分门别类的职掌.…
引言                                                                                                                                                                                                C风格的转型动作 (T)expression // 将expression转型为T 函数风格的转型动作看起来像这…
NOTE : 1.如果可以,尽量避免转型,特别是在注重效率的代码中避免dynamic_casts. 如果有个设计需要转型动作,试着发展无需转型的替代设计. 2.如果转型是必须要的,试着将它隐藏于某个函数背后.客户随后可以调用该函数,而不需要将转型放进他们自己的代码内. 3.宁可使用C++-style(新式)转型,不要使用旧式转型.前者很容易辨识出来,而且也比较有着分门别类的职撑.…
(一个)C风格遗留转换: (T)expression T(expression) (二)C++提供四种新式转型: (1)const_cast<T>(expression):去除表达式的常量性.是C++中唯一能做此操作的转型操作符. (2)dynamic_cast<T>(expression):主要用来运行"安全向下转型",即用来决定某对象是否归属继承体系中的某个类型.它是唯一无法由旧式语法运行的动作,也是唯一可能耗费重大运行成本的转型动作. (3)reinter…
C++设计的规则是用来保证使类型相关的错误不再可能出现.理论上来说,如果你的程序能够很干净的通过编译,它就不会尝试在任何对象上执行任何不安全或无意义的操作.这个保证很有价值,不要轻易放弃它. 不幸的是,casts颠覆了类型系统.它导致了各种麻烦的出现,一些很容易识别,一些却很狡猾(不容易被识别).如果你以前使用过C,java或者C#,你就需要注意了,因为在这些语言中casting是更加必不可少的,但却比C++更安全.C++不是C,不是java也不是C#,在C++中,你需要怀着极大的敬意来使用ca…
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie todo Item34 旧式转型 (T) expression 或 T (expression) 新式转型 const_cast<T>(expression) 通常被用来将对象的常量性转除(cast away the constness) dynamic_cast<T>(expression) 运行"安全向下转型",也就是用来决定某对象是否归属继承体系中的…
看完EffectiveC++的关于转型的章节,顿时认为周围的代码都处在悬崖边上~~ C的旧式转型:inta = 10; double b = (double)a; 对于C++的四种转型函数, const_cast去掉对象的常量性(仅仅此一个操作符有此功能!) dynamic_cast一般用于继承体系中某对象的归属,耗费较大 reinterpret_cast低级转型,差点儿不用. static_cast强迫隐式转换int->double, void * ->typed * 在类的expecili…
最近的工作又学到了很多东西,在这里记录一下. 1,尽量少嵌套无用的div,这个问题领导很严肃的跟我提过很多次,因为我很喜欢用很多div,而且有很多div都是无存在意义的.后来领导给了我一些资料,我看了一下,发现这样做确实存在很大的问题,原因如下:(以下蓝底文字摘自搜狐WEB标准) 2.1 节约运营成本 采用 WEB 标准制作,我们可以做到表现和形式及内容的分离,我们采用XHTML 语言来表现(数据),用CSS 来控制(页面元素呈现的)形式.写的好的页面,XHTML 代码中基本上都是用户要看的数据…
Heap Partition Time Limit: Seconds Memory Limit: KB Special Judge A sequence S = {s1, s2, ..., sn} is called heapable if there exists a binary tree T with n nodes such that every node is labelled with exactly one element from the sequence S, and for…
一个自动控制机的硅控板检测程序,用多线程和API,没有用控件,少做改动就能用Unit CommThread; Interface Uses  Windows, Classes, SysUtils, Graphics, Controls, Forms,  Dialogs, ComCtrls, ExtCtrls;Type  TThreadParam = Record    SusPended: Boolean;    BaulSpeed: integer;    Port: Byte;    Par…
第二条:类的头文件中尽量少引入其他头文件 使用向前声明(forward declaring) @class EOCEmployer 1, 将引入头文件的实际尽量延后,只在确有需要时才引入,这样就可以减少类的使用者所需引入的头文件数量,减少编译时间. 2,解决了两个类互相引用的问题 有时无法使用向前声明,比如要声明某个类遵循一项协议.这种情况下,尽量把“该类遵循某 协议”的这条声明移至“class-continuation分类“中.如果不行的话,就把协议单独放在一个头文件中,然后将其引入.…
用U盘装系统可以用PE方式,进入PE系统,选择镜像文件,然后装,这种比较麻烦. 下面介绍一下从U盘启动,直接装系统的方法,这种方法从U盘启动后,不用做任何动作,就像用光盘装系统一样简单 首先要制作一下启动U盘,把下好的系统ISO文件烧进U盘中,这一步做好后,基本大功告成 isotousb的软件,运行后界面如下图所示,选择准备好的iso镜像文件,点击burn,制作好后,就可以直接了 制作好启动U盘后,重启,运行F12,选择U从盘启动,系统就自动安装了. 如果找不到可用的软件,可以留个邮箱,我找时间…
原文链接:在Spark中尽量少使用GroupByKey函数 为什么建议尽量在Spark中少用GroupByKey,让我们看一下使用两种不同的方式去计算单词的个数,第一种方式使用reduceByKey :另外一种方式使用groupByKey,代码如下: 01 # User: 过往记忆 02 # Date: 2015-05-18 03 # Time: 下午22:26 04 # bolg: http://www.iteblog.com 05 # 本文地址:http://www.iteblog.com/…
注:HashMap底层也是用数组,HashSet底层实际上也是HashMap,HashSet类中有HashMap属性(我们如何在API中查属性).HashSet实际上为(key.null)类型的HashMap.有key值而没有value值. 正因为以上的原因,TreeSet和TreeMap的实现也有些类似的关系. 注意:TreeSet和TreeMap非常的消耗时间,因此很少使用. 我们应该熟悉各种实现类的选择——非常体现你的功底. HashSet VS TreeSet:HashSet非常的消耗空…
/** 题目: uvalive 3231 Fair Share 公平分配问题 链接:https://vjudge.net/problem/UVALive-3231 题意:有m个任务,n个处理器,每个任务有两个候选处理器,只要其中一个运行,该任务就能执行. 不同任务的两个候选处理器,至少有一个不同. 求任务数最多的那个处理器所分配的任务数尽量少. 思路:二分+最大流 左边是任务,s->u,cap = 1. 如果任务u和u的候选处理器v,u->v, cap = 1. 右边是处理器,二分mi.所有处…
Michael Feathers是Object Mentor International公司的技术顾问.他的工作不仅是技术开发,他还参与对世界各地技术团队进行培训.指导等工作.他曾开发了将JUnit迁移到C++的CppUnit的初始部分,还有FitCpp——一个C++版的FIT基础测试框架.他是<Working Effectively with Legacy Code>一书的作者. 条件控制是编程中与生俱来的一种结构,但对于我来说,除了给我带来麻烦外,没有发现任何的用处.一次又一次,我不断发现…
请看下面两段: 第一种方式: MemoryStream stream = new MemoryStream(); string text = "aasasdfasdfad;sas;fkqeworpkqwefkasdjfasdjf"; byte[] buff = System.Text.ASCIIEncoding.ASCII.GetBytes(text); stream.Write(buff, , buff.Length); stream.Flush(); stream.Close();…
初学者容易使用全局变量的原因 创建全局变量毫不费力,不需要任何形式的声明(只要在非函数里用var 你就可以得到一个全局变量) 写得代码简单,不涉及到大的项目或配合(写hello world是不会有什么问题的) 使用全局变量的不利之处 污染共享的公共命名空间 导致意外的命名冲突(比如你的代码别人引用了,别人代码里有相同的全局变量的引用) 全局变量不利于模块化,导致程序中独立组件间的不必要的耦合 优秀程序员的作法 不断地留意程序的结构 持续地归类相关的功能以及分离不相关的组件 将1,2行为作为编程过…
在这之前,声明一下: 做不完我是小狗. 没办法,没毅力和恒心,之前的那个Quick Cocos2dx做的横版过关游戏的demo已经转成了3.3的版本了,其实也算是个半成品,战斗,UI啥的都有了,呵呵. 本次DEMO要达成的目的如下: 1 熟悉Cocos2dx 3.3 - lua 2 使用Joystick 3 完成简单的怪物AI 4 尝试扩展现有的api(可选) 嗯,差不多就以上了. 今天第一次笔记. 当前完成的任务有如下: 1 使用新的player新建项目 2 在场景中添加Sprite以及其帧动…
与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用Objective-C 语言编写"类"(class)的标准方式为:以类名做文件名称,分别创建两个文件,头文件后缀用.h,实现文件后缀用.m. 创建好一个类之后,其代码看上去例如以下所看到的: // EOCPerson.h #import <Foundation/Foundation.…
群里问也是可以的 但是 不能指望群里的人详细的回答 有时候的回答会很到位 但是 也可以 应该更多的去网络上搜索信息 因为 那是别人已经写好的 我们为什么不顺便去获取呢 别人花费了精力 我们要尽量运用 才对 但群里有时候会有比较精彩的回答 碰到合适的人 也可以探讨探讨 在群里问问题 会有灵感 和一个释放空间…
一致性哈希算法 摘自:http://blog.codinglabs.org/articles/consistent-hashing.html 算法简述 一致性哈希算法(Consistent Hashing)最早在论文<Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web>中被提出.简单来说,一致性哈希将整个哈希值空间组织成一…
虽然一直都知道,类型 之类的字段 直接用字符窜会很方便,不过最好还是不要用字符串:但是也不是特别清楚为什么不要用,时间久了 就忍不住用一下字符窜试试,这一试 还挺好用的,吓得我 感觉探究了一下 为什么最好不要用字符窜. 一是从空间上考虑,对于类型 分类的字段来说,用int代表不同的类型,比varchar 更节省空间. 数据量少的时候 不明显,但是 数据量特别大,或者数据常加载到内存里 差别就比较明显了. 二是 从 安全性考虑,varchar 容错性高,会导致 程序的bug 不能那么及时的体现出来…
Pattern意思是模式,好的编码习惯经过多次实践的应用就会形成模式,而反模式(Anti-Pattern)则是不好的编码习惯.了解 JavaScript模式之前,先来看看Anti-pattern的例子.Javascript使用函数(function)来管理变量的作用域 (scope).定义在函数体内部的变量是局部变量,而其它定义在函数体外的变量是全局变量.全局变量在Javascript中通常是不应该使用的.如: myglobal = "hello"; // antipattern,因为…
当我们使用EF写查询,尤其是关联到多个表的时候,我们一般习惯使用include关联,但是过多地使用include会带来性能问题.作为替代方法,可以使用多个toList来代替. 改造前:…
Iframes 阻塞页面加载 及时触发 window 的 onload 事件是非常重要的.onload 事件触发使浏览器的 “忙” 指示器停止,告诉用户当前网页已经加载完毕.当 onload 事件加载延迟后,它给用户的感觉就是这个网页非常慢. window 的 onload 事件需要在所有 iframe 加载完毕后(包含里面的元素)才会触发.在 Safari 和 Chrome 里,通过 JavaScript 动态设置 iframe 的 SRC 可以避免这种阻塞情况. 唯一的连接池 浏览器只能开少…
今天,有人请教我处理办法,问题是: 一个Grid,选择某条记录后,单击编辑后,弹出编辑窗口(带编辑表单),编辑完成后单击保存按钮保存表单,并关闭窗口,刷新Grid. 这,本来是很简单的,但囿于开发人员对Ext JS的理解不到位,搞得相当的复杂了. 主要复杂的地方在以下几点: 为了实现编辑表单的可重用,把表单做成了页面,然后在Window中套IFRAME打开页面. 表单的提交不是用Ajax提交,而是使用习惯的页面跳转方式提交,于是,一切都复杂起来了. 要这样实现,也不是不可以,在最后的提交页面,调…
转自  http://blog.csdn.net/jaune161/article/details/18220257 在项目开发中遇到这样一个问题,点击Grid中的一条记录并修改,修改完后保存并且刷新表格,后台已保存成功, 并且前台grid中的值也已经改变.这时候被修改的记录还处于选中状态,然后再次点修改,发现表单中的值还是原 来的值,但是在选择另外一条记录后,再次选择这条记录并修改时发现值已改变. 经过分析我觉得可能是grid中的SelectionModel中的记录并没有改变,所以才会到这这样…