`
Riddick
  • 浏览: 642074 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论
文章列表
别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。 用调试器跟踪示例7-5,发现指针p被free以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,p成了“野指针”。如果此时不把p设置为NULL,会让人误以为p是个合法的指针。   如果程序比较长,我们有时记不住p所指的内存是否已经被释放,在继续使用p之前,通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便p不是NULL指针,它也不指向合法的内存块。   char *p = (char *) malloc(1 ...
“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。   “野指针”的成因主要有两种:   1 指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如 char *p = NULL; char *str = (char *) malloc(100);   2 指针p被free或者delete之后,没有置为NULL,让人误以为p ...
有时,一个类想跟踪它有多少个对象存在。一个简单的方法是创建一个静态类成员来统计对象的个数。这个成员被初始化为0,在构造函数里加1,析构函数里减1。(条款m26里说明了如何把这种方法封装起来以便很容易地添加到任 ...
1、序列化是干什么的?       简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。   2、什么情况下需要序列化       a)当你想把内存中的对象状态保存到一个文件中或者数据库中时候;    b)当你想用套接字在网络上传送对象的时候;    c)当你想通过RMI传输对象的时候;   3、当对一个对象实现序列化时,究竟发生了什么?    在没有序列化前,每个保存在堆(Heap)中的对象都 ...
package iprai.rid.test1; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class WeeksInYear { /** * 返回指定年度的所有周。List中包含的是String[2]对象<br> * string[0]本周的开始日期,string[1]是本周 ...
==================================一==================================== public class Singleton { private static Singleton instance = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return instance; ...
JMS消息生产者: import java.io.File; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; import o ...
 JMS消息生产者: import javax.jms.Connection; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.act ...
本文简单介绍ActiveMQ通过JAAS实现的安全机制。 JAAS(Java Authentication and Authorization Service)也就是java认证/授权服务。这是两种不同的服务,下面对其做一些区别:     验证(Authentication)就是要验证一个用户的有效性,即用户名、密 ...
ActiveMQ很好的支持了消息的持久性(Persistence)。消息持久性对于可靠消息传递来说应该是一种比较好的方法,有了消息持久化,即使发送者和接受者不是同时在线或者消息中心在发送者发送消息后宕机了,在消息中心重新启动后仍 ...
指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。   魔幻数组名 请看程序(本文程序在WIN32平台下编译): #include <iostream.h> int main(int argc, char* argv[]) {  char str[10];  char *pStr = str;  cout << sizeof(str) < < endl;  cout << sizeof(pStr) < < endl ...
  1 网关方式(由移动运营商提供开发接口API)  2 终端方式(通过用短信模块或手机模块实现,当服务器部署在机房中时,信号是个大问题) 3 利用一些网站来实现(比如新浪,比较不稳定)
引言  因为C语言风格的字符串容易出错且不易管理,黑客们甚至利用可能存在的缓冲区溢出bug把C语言风格的字符串作为攻击目标,所以出现了很多字符串封装类。不幸的是,在某些场合下我们不知道该使用哪个字符串类, ...
 引言  毫无疑问,我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型,还有那些以 _tcs 开头的奇怪的宏。你也许正在盯着显示器发愁。本指引将总结引进各种字符类型的目的,展示一些简单的用法,并告诉您在必要时,如何实现各种字符串类型之间的转换。  在第一部分,我们将介绍3种字符编码类型。了解各种编码模式的工作方式是很重要的事情。即使你已经知道一个字符串是一个字符数组,你也应该阅读本部分。一旦你了解了这些,你将对各种字符串类型之间的关系有一个清楚地了解。  在第二部分,我们将单独讲述string类,怎样使用它及实现他们相互之间的转换。字符基础 -- A ...
一.位图结构如下:  ---- 一、BMP文件结构   ---- 1. BMP文件组成  ---- BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。   ---- 2. BMP文件头  ---- BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。  ---- 其结构定义如下:  typedef struct tagBITMAPFILEHEADER { WORD bfType; // 位图文件的类型,必须为BM DWORD bfSize; // 位图文件的大小,以字节为单位 WORD bfReserved1; // 位图文件保留字,必须为 ...
Global site tag (gtag.js) - Google Analytics