首页

实战经验:采用MFC的CArchive将对象序列化到CMemFile中

在一次编程实验中,我碰到了这样一个问题:我需要将一个对象通过网络传输出去。 首先为了可扩展性,这个对象被设计为变长结构,也即我们事先不能知道它确切的长度。有些朋友会说,可以创建一个足够大的缓冲区来承载这个对象。嗯!当然是可以的。但是这样的设计不是最优的,因为网络带宽是有限的,从节省带宽的角度来说,使用大缓冲区肯定意味着有些不必要的数据和有效数据一起传输。另外,对象长度变长,缓冲区的最大尺寸,还真是...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:02月24日 |
  • 浏览:2807 |
  • 评论已关闭 条评论

深度理解:struct和class的区别  

C中struct和class的区别 1) 在C语言中,无class关键字,因此,如下的代码片段是无法通过编译的。 2) C语言中的struct不能定义函数,仅能定义数据成员。所以,我们通常使用struct来构建数据结构。 在如下的代码片段中,我们定义了两个数据成员,但是如果在这个结构体中尝试定义一个Play方法,则会编译失败。 C++中struct和class的区别 1) struct默认的...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:01月20日 |
  • 浏览:4447 |
  • 评论已关闭 条评论

实战经验:通过NotifyAddrChange侦测网络变化  

在一次实验中,我需要程序可以自动检测到网络变化,例如: 1) 某一个或某几个网卡被禁用 2) 某一个或某几个网卡的地址变化 NotifyAddrChange可以帮我做到这些。今天来讲一讲这个函数的用法及程序功能在架构阶段需要注意的地方。 如何使用NotifyAddrChange NotifyAddrChange函数主要的功能是用来通知应用程序IPv4地址的变化。注意这个函数仅仅支持IPv4地址的变...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:01月06日 |
  • 浏览:2406 |
  • 评论已关闭 条评论

深度理解:main函数的返回值  

最近碰到这样的一个问题:main函数的返回值的作用。 main函数的前世今生 每一个C程序都会有一个main函数作为入口点,这里所谓的入口点,也即程序一开始就会尝试找到main函数的位置,并从main函数的第一行代码开始执行。 那么,第一个问题:入口点之前是什么?main函数执行完之后,又是什么?这有点像:宇宙大爆炸之前的那一刻是什么状态? 我们来创建一个最简单的C程序,来看看入口点之前是什么? ...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:01月02日 |
  • 浏览:4424 |
  • 评论已关闭 条评论

错误信息:php执行超时导致WordPress升级失败

近日,WordPress释出了全新的5.0版,喜欢尝鲜的我自然会小试一把。 首先进入网站后台,发现有新版本提示,恩,不错,直接提示了可以升级至5.0版。 然后开始升级,大约等了一分钟左右,网站直接进入500错误。 Why? 可能原因 首先到临时目录(C:\Windows\Temp)查看,发现wordpress5.0的安装包已经下载了,但和正式版本相比,文件大小少了一些。 推测是因为php没有下载完...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:12月09日 |
  • 浏览:3021 |
  • 评论已关闭 条评论

实战经验:修改PHP session存放位置

今天没事的时候看看网站后台,发现C:\windows\temp下,有大概好几万个sess_开头的文件,着实把我惊到了。 有点强迫症的我,开始了一些探究。 探究主题 1) session文件存放位置的自定义 2) session文件的定期删除 自定义Session文件位置 这个在网络上已经有很多教程了,就不过多描述。主要的步骤如下: 1) 打开php.ini,修改session.save_path的...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:12月09日 |
  • 浏览:1600 |
  • 评论已关闭 条评论

实战经验:__super关键字的使用  

我不知道你们有没有看过MFC的继承类图? 在C++程序中,我们通常会设计一系列的对象层次结构来建模真实的物理世界。 学院派的观点认为:通过类继承,我们可以使用基类描绘对象的一般特性和行为,通过子类来建模对象的特殊行为。通过在基类中定义虚方法,由子类重写(override)此虚方法,实现了继承链上的运行时多态。 但是在实际工程开发中,我们却免不了重载(overload)基类的某些方法,我们希望在子...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:12月02日 |
  • 浏览:1258 |
  • 评论已关闭 条评论

错误信息:VS2010添加成员变量提示JS错误

开发环境 Win7 + VS2010 SP1 错误描述 在VC工程中的对话框模板里,为一个控件添加对应的成员变量,弹出Common.js错误。 错误内容:无法获取未定义或null引用。 解决方法: 1) 清理整个解决方案。 2) 删除解决方案对应的SDF文件。 3) 重新打开解决方案,来一次完整编译。 4) 问题解决。 结论 这是一个令人头疼但是还不至于迫使我升级VS2010的问题。 开发环境很重...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:11月22日 |
  • 浏览:1559 |
  • 评论已关闭 条评论

代码片段:CFormView手动创建以及OnInitialUpdate

CFormView相比CDialog来说,多了个比较吸引人的优点:它继承自CScrollView。因此,天然的,CFormView就拥有了视图自动滚动的特性。 动态创建 继承自CFormView的子类,VS的代码生成器会自动使用如下的两个宏: DECLARE_DYNCREATE(子类的头文件) IMPLEMENT_DYNCREATE(子类的实现文件) 这两个宏经过展开后的即可使类具备动态创建的特性...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:11月12日 |
  • 浏览:2909 |
  • 评论已关闭 条评论

实战经验:使用IFileOperationProgressSink接收文件操作通知

思路 新版本的文件操作可以使用IFileOperation接口来实现,IFileOperation接口用来替代旧的SHFileOperation。SHFileOperation可以实现基本的文件操作,如复制,剪切,删除,重命名等,但缺乏文件操作进度通知这一特性。有时候,我们希望能得到文件的操作进度,进而在界面上进行操作进度的可视化呈现,那么,试试新的IFileOperation接口吧。 要想接收I...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:11月04日 |
  • 浏览:2419 |
  • 评论已关闭 条评论