
C/C++/JAVA/GO
文章平均质量分 82
AndyRo1984
这个作者很懒,什么都没留下…
展开
-
让你的代码变的更加健壮(Making your C++ code robust)
在实际的项目中,当项目的代码量不断增加的时候,你会发现越来越难管理和跟踪其各个组件,如其不善,很容易就引入BUG。因此、我们应该掌握一些能让我们程序更加健壮的方法。这篇文章提出了一些建议,能有引导我们写出更加强壮的代码,以避免产生灾难性的错误。翻译 2011-07-17 08:45:06 · 24816 阅读 · 73 评论 -
Smart Pointers - What, Why, Which?
Smart Pointers - What, Why, Which?What are they?Smart pointers are objects that look and feel like pointers, but are smarter. What does this转载 2011-07-17 09:11:10 · 1426 阅读 · 1 评论 -
OverLapped I/O Socket 的问题
OverLapped I/O Socket 的问题转载 2011-05-06 00:16:00 · 2876 阅读 · 0 评论 -
Intercepting Calls to COM Interfaces
Download sample - 95.21 KBTable of ContentsIntroduction Some Basic Concepts of COM Practical Example Approach #1: Proxy Object Approach #2: Vtable Patching转载 2011-06-17 23:34:00 · 1956 阅读 · 0 评论 -
内存池完整实现代码及一些思考
为了提高效率和有效的监控内存的实时状态,我们采取了内存池的思想来解决效率与对内存实现监控的问题。网上查找到了一些方案,根据自己的理解实现了应用。 我们什么时候要调用到内存池, 1,当我们频繁的申请释放同样数据大小的内存空间,我们可以用比动态new更有效方式来管理内存时,我们应该用内存池来提高效率。 2,当我们需要知道内存实时的申请状态,以便于对于服务器内存状态做实时预警转载 2011-06-06 23:25:00 · 1725 阅读 · 0 评论 -
Handling multiple pending socket read and write operations
The following source was built using Visual Studio 6.0 SP5 and Visual Studio .Net. You need to have a version of the Microsoft Platform SDK installedNote that the debug builds of the code waste a lo原创 2011-06-05 20:59:00 · 1596 阅读 · 0 评论 -
C Programming for Embedded System
Now for embedded system development people are using operating system to add more features and at the same time reduce the development time of a complex system. This article gives a simple & understandable overview of scheduling technique of embedded syste原创 2011-02-04 23:11:00 · 1971 阅读 · 0 评论 -
Generic P2P Architecture, Tutorial and Example - CodeProject
Generic P2P Architecture, Tutorial and Example By dzzxyz | 15 Mar 2004 Generic P2P architecture, tutorial and example that covers basic P2P strategy. Upon completing this tutorial, you will be proficient in basic P2P design and coding. Is your email ad转载 2010-11-17 07:36:00 · 1449 阅读 · 0 评论 -
在完成端口中使用GetAcceptExSockaddrs
通过调用GetAcceptExSockaddrs解析(parse)1)客户端发送的第一块数据,2)本地(Server)套接字地址,3)远程(Client)套接字地址转载 2010-11-14 21:46:00 · 7029 阅读 · 0 评论 -
点对点视频会议程序:VideoNet
该程序可以用于两个人在LAN/Intranet(或者Internet)上进行视频会议。现在有许多视频会议程序,每个都有各自的性能提升技术。主要的问题是视频会议视频帧的尺寸对于传输来说太大。因此,性能依赖于对帧的编解码。我使用快速h263编码库来达到更好的压缩率提高速度。该程序做些小改动也可以在Internet上使用。转载 2010-11-08 23:16:00 · 1024 阅读 · 0 评论 -
__HW_VTBL 结构体神奇!
__HW_VTBL 结构体神奇,搞懂它才能搞懂MDD和PDD原创 2010-12-23 17:04:00 · 1056 阅读 · 0 评论 -
STL之二分查找 (Binary search in STL)
正确区分不同的查找算法count,find,binary_search,lower_bound,upper_bound,equal_range 对Effective STL第45条的一个总结,阐述了各种查找算法的异同以及使用他们的时机。转载 2010-12-22 19:00:00 · 2724 阅读 · 0 评论 -
多线程程序操作共享区域(文件)的一点体会
多线程相信大家都陌生吧,多线程程序操作共享区域应该也不陌生吧,但是大家是否经历过多CPU的服务器下同时100个线程,操作离散的文件呢?如果每个线程只负责一个固定的文件,那么问题也就不是问题了,但是如果离散的文件,有可能同时被多线程都读写的,那么是否能保证文件读写的数据一致性、是否原创 2011-03-15 00:00:00 · 6844 阅读 · 26 评论 -
Think before you code, Virtual Functions in C++
IntroductionA few days back, I was doing a job, and unintentionally, I made a mistake in the code (What mistake? That I will explain in the detailed section of the article), and when I was caught by a转载 2011-12-18 21:06:38 · 1000 阅读 · 0 评论 -
深入理解C++中的mutable关键字
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态转载 2011-12-18 21:17:22 · 1156 阅读 · 2 评论 -
C/S模式充电桩管理软件向微服务架构演进
微服务架构在最近两年炒比较火热,本文分享对充电桩管理软件进行微服务架构演进的经验。原创 2017-05-29 12:13:46 · 3584 阅读 · 1 评论 -
音频编解码标准
PCMU(G.711U)类型:Audio制定者:ITU-T所需频宽:64Kbps(90.4)特性:PCMU和PCMA都能提供较好的语音质量,但是它们占用的带宽较高,需要64kbps。优点:语音质量优缺点:占用的带宽较高应用领域:voip版税方式:Free备注:PCMU and PCMA都能够达到CD音质,但是它们消耗的带宽也最多(64kbps)。如果网络带宽比较低,可以选用低比特速率的编码方转载 2009-11-27 00:24:00 · 1354 阅读 · 1 评论 -
内存分配和释放
自从学习了C语言,老师就教导我们说:对于动态内存的申请和释放,一定要遵守“谁申请,谁释放”的原则。在此原则的指导下,不仅是我、不仅是你,就连特级大师都设计了这样怪怪的函数: 函数说明评论GetWindowText(HWND,LPTSTR,int)取得窗口标题。需要在参数中给出保存标题所使用的内存指针,和这块内存的尺寸。晕!我又不知道窗口标题的转载 2009-12-26 15:27:00 · 1576 阅读 · 0 评论 -
使用命名管道实现进程间通信
使用命名管道实现进程间通信在Win32下提供的进程间通信方式有以下几种: Ø 剪贴板Clipboard:在16位时代常使用的方式,CWnd类中提供了支持。Ø COM/DCOM:通过COM系统的代理存根方式进行进程间数据交换,但只能够表现在对接口函数的调用时传送数据,通过DCOM可以在不同主机间传送数据。 Dynamic Data Exchange (D原创 2009-12-17 22:03:00 · 1438 阅读 · 0 评论 -
Windows CE6.0 S3C2440A IIC驱动编码解析
S3C2440A RISC微处理器可以支持多主设备IIC总线串行接口。专用串行总线(SDA)和串行时钟线(SCL)承载总线主机设备和连接IIC总线的外围设备之间的信息。SDA和SCL线都是双向的。原创 2010-10-14 23:48:00 · 1788 阅读 · 3 评论 -
Policy-based design
One problem which often arises during programming is how to build a base set of functionality which can be extended by the user, while still being modular enough to make it easy to replace only certai原创 2012-03-11 09:46:26 · 1204 阅读 · 0 评论 -
Comparison of Performance of Different poll implementations
epoll Scalability Web PageIntroduction Interface Description Man Pages Testing dphttpd dphttpd SMP results dphttpd UP results pipetest pipetest results Recent comparison results Analysis and Conclusio转载 2011-10-24 22:13:55 · 1191 阅读 · 0 评论 -
SGI STL空间适配器freelist设计
今天重新看了《STL源代码剖析》,不禁要赞叹STL设计的经典。STL 的空间适配代码设计的尤为精辟,不仅考虑到内存碎片的隐患,而且考虑到指针空间的节俭和复用,降低维护链表(lists)带来额外的负担。我们来看看如下代码;先看看STL的结构体,union obj{ union obj *free_list_link; char clent_data[1]; /* the cli原创 2012-11-17 15:14:18 · 3648 阅读 · 5 评论 -
placement new 在一块已分配内存上创建对象
placement new 是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下: void *operator new( size_t, void *p ) throw() { return p; }首先我们区分下几个容易混淆的关键词:new、operato转载 2012-06-14 07:55:15 · 3416 阅读 · 0 评论 -
Hot to use typelist of Loki??
最近调试的一段代码,请一起look look!#include#include#includeusing namespace std;namespace MCD{ template struct Typelist{ typedef T Head; typedef U Tail; }; class NullType;#defi原创 2012-04-07 19:32:06 · 1212 阅读 · 0 评论 -
linux操作系统消息队列
所谓消息队列就是指一个消息链表。int msgget(key_t, int flag):创建和打开队列int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int flag):发送消息,msgid是消息队列的id,msgp是消息内容所在的缓冲区,msgsz是消息的大小,msgflg是标志。int msgrcv(int msqid, str原创 2011-11-13 21:38:09 · 4356 阅读 · 1 评论 -
static_cast、dynamic_cast、reinterpret_cast、和const_cast
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。转载 2010-10-18 07:52:00 · 645 阅读 · 0 评论 -
C++ STL中哈希表 hash_map介绍
hash_map基于hash table(哈希表)。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。转载 2010-11-28 21:33:00 · 991 阅读 · 1 评论 -
另类参数对话框编程(回调函数,消息捕捉)
在很多情况下,我们为了获取对话框设置的一些参数,通常都是通过类对象中成员来获取,或者直接获取退出时最后点击的BUTTON的ID号来做一些简单的操作。这样方法虽然稳定,但是有时候未免太带繁琐,近日在看一些书的时候突然看到另外一种好方法,暂且命名为“另类参数对话框编程”,以后想到更好的名字再换吧!原创 2010-08-22 19:55:00 · 1120 阅读 · 0 评论 -
near指针,far指针,huge指针
near指针和far指针在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。 near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。 far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1原创 2009-10-11 15:34:00 · 1390 阅读 · 0 评论 -
奇怪的数值期间
在计算机中,正如前文所述,数据类型本身存在一个缺陷——任何数据类型都存在一个数值范围,如果表示的数值超出这个范围,系统将产生“越界”错误,例如short int数据类型表示的范围是-32768 ~ 32767,当你用它来表示32768或者是-32769时,就将产生“越界”错误。其实、这里的“越界”只是虚拟中的假设,稳定的计算机是绝不允许这种事情发生,它总会通过各种方法将数据类型表示的数值“转化”到原创 2009-10-11 12:00:00 · 1072 阅读 · 0 评论 -
数值字符串转化为真实数值
/******************************************************************************** 文件名称:StrToData.h** 作 者:罗振 ** 完成日期:2009-9-24****************************************************************原创 2009-09-26 07:41:00 · 1490 阅读 · 0 评论 -
设计模式之iterator模式到STL中iterator迭代器
设计模式之iterator模式到STL中iterator迭代器近日看《设计模式:可复用面向对象软件的基础》一书中23种模式中就有iterator迭代模式,且篇幅颇大。机缘巧合、我在分析STL代码结构的时候,同样发现iterator迭代器,且占据相当大的地位。从设计模式的角度来看iterator模式ü 意图提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露对象的内部表原创 2009-09-21 13:04:00 · 1087 阅读 · 0 评论 -
全局、静态、局部变量的内存分配
在标准的C中,变量大概可以分为全局变量(用extern修饰),静态变量(用static修饰),局部变量三中类型. 在内存中用于存储变量的空间也可以分为堆区、栈区、全局区(静态区)。其中堆区:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,一般存放malloc()函数申请请的变量空间;栈区:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等;全局区(静态区):全局原创 2009-09-16 19:58:00 · 2344 阅读 · 0 评论 -
浅谈STL仿真函数
今天很好的兴志,一下子写了二篇文章,当然也不吝啬第三篇了。STL概述 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很原创 2009-09-15 13:49:00 · 1047 阅读 · 0 评论 -
继承与包含中构造与析构的执行顺序
[HP笔试题目] 一个类A继承类B并且包含C,B中包含D。在构造A的时候,先构造B中的D,再构造B,然后构造A中的C,最后构造A。虚构的过程刚好相反。例子如下:| #includeclass IDCart{public: IDCart() { cout }原创 2009-05-22 00:58:00 · 1008 阅读 · 0 评论 -
品尝常量指针和指针常量的味道
#include void main() { const int *a; int hh=12; int bb=14; int *const fb;//error C2734: fb : const object must be initialized if not extern int *const b=&hh;//必须付初值 a=&h原创 2009-05-19 21:33:00 · 954 阅读 · 0 评论 -
C++类对象的拷贝构造函数分析
对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include using namespace std;class CA{ public: CA(int b) void Show ()转载 2009-05-16 22:58:00 · 996 阅读 · 0 评论 -
航天定票管理系统(上千行代码)
原代码1、类: 1person类#include"String.h"#include"Date.h"#ifndef person_h#define person_hclass person{private: char name[30];//姓名 char sex[4];//性别 char nation[30];//国籍 char id[5原创 2009-04-08 21:37:00 · 1468 阅读 · 0 评论 -
完善的学生成绩计算统计
//完善的学生成绩计算统计;kkkpo//注意多留一个存储单元 i=0开始#include#includeconst int N=100;const int M=14;const int P=30;void array_in(int n,int m,float score[][M],char num[][P],char name[][P]);void dzhongcj(int n,int m,f原创 2009-04-08 21:46:00 · 1544 阅读 · 0 评论