<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chjjunking的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chjjunking</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chjjunking]]></copyright><item><title><![CDATA[Java虚拟机原理、内存分配和回收机制]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/23956137</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/23956137</guid><author>chjjunking</author><pubDate>Thu, 17 Apr 2014 20:22:36 +0800</pubDate><description><![CDATA[通常情况下Java编译过的代码是一些class文件，Java虚拟机在执行代码的时候，首先解析Class，查找该类的方法、常量，这些对于常规情况下都编译成二进制的代码保存在jar文件中，而对于Java的反射，VM的类加载器需要动态的查找这些类名，虽然节省了编译时间，但是运行时的查找大大降低运行效率。
1、栈  存取速度快 存放一些基本类型的变量或对象的引用变量。主要用来执行程序的。
2、堆  存]]></description><category></category></item><item><title><![CDATA[C++中的继承 public protected private]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7056688</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7056688</guid><author>chjjunking</author><pubDate>Fri, 28 Mar 2014 11:03:50 +0800</pubDate><description><![CDATA[public      protected       private共有继承      public      protected       不可见私有继承      private     private         不可见保护继承      protected   protected       不可见

#include
using namespace std;
////////]]></description><category></category></item><item><title><![CDATA[C++ 中的vptr与vtable]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7057141</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7057141</guid><author>chjjunking</author><pubDate>Fri, 28 Mar 2014 11:03:38 +0800</pubDate><description><![CDATA[// test.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include 
#include 
#include 
using namespace std;


class no_virtual {
	int a;
public:
	void x() const{}
	int i() const {return 1;}
};


class on]]></description><category></category></item><item><title><![CDATA[C++纯虚函数]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7057304</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7057304</guid><author>chjjunking</author><pubDate>Fri, 28 Mar 2014 11:03:23 +0800</pubDate><description><![CDATA[抽象基类：
函数调用时，形参不能够是抽象基类，而应该是“指针”或者是"引用"。



// test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
#include 
#include 
using namespace std;

class Base {
	int a;
public:
	virtual void x() ]]></description><category></category></item><item><title><![CDATA[C++对象切片]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7057509</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7057509</guid><author>chjjunking</author><pubDate>Fri, 28 Mar 2014 11:03:06 +0800</pubDate><description><![CDATA[// test.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include 
#include 
#include   
#include   


using namespace std;  
class Pet {  
	string pname;  
public: 
	Pet(Pet& p)
	{
		pname=p.pname;
	}

]]></description><category></category></item><item><title><![CDATA[C++中继承时的重载和重新定义]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7057852</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7057852</guid><author>chjjunking</author><pubDate>Fri, 28 Mar 2014 11:02:50 +0800</pubDate><description><![CDATA[C++编程思想 P372
对于虚函数，在派生类中：
不允许改变返回值（非虚函数派生类可以。）,特殊情况：但是当返回值的类型是基类返回值类型的派生类时，可以改变。
如果重新定义了基类的重载成员函数，也就是定义了一个同名的函数，但参数不同，则基类的其它函数将被隐藏。]]></description><category></category></item><item><title><![CDATA[写正确函数需要注意的地方：链表的及时终止冒泡排序]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7883689</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7883689</guid><author>chjjunking</author><pubDate>Fri, 28 Mar 2014 11:02:31 +0800</pubDate><description><![CDATA[Node* sort(Node* phead)
{
	if (NULL==phead || NULL==phead->pNext)
	{
		return phead;
	}

	Node* ptemp=phead;
	Node* plastchangepoint=NULL;//标记上一次
	while (plastchangepoint!=phead->pNext)
	{
		bool chan]]></description><category></category></item><item><title><![CDATA[GFP、GSP和VCG的特点和介绍]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/20454343</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/20454343</guid><author>chjjunking</author><pubDate>Fri, 28 Mar 2014 11:01:25 +0800</pubDate><description><![CDATA[GFP（广义一阶价格拍卖），主要特点是关键词拍卖中广告主之间进行的是重复博弈，在每一轮拍卖结束后，广告主会根据上一轮报价的情形决定下一轮的报价决策，而这场价格战会被自然而然地分为价格攀升阶段和价格崩溃阶段。只能是在搜索引擎公司了解广告商估价的前提下运作，否则因为没有均衡，波动会在极大程度上带来拍卖效率上的损失。


GSP（广义二阶价格拍卖），简单来说它即是支付数=点击次数*下位出价。在实际]]></description><category></category></item><item><title><![CDATA[C++的new 和 delete 操作符重载。]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7054518</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7054518</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:16:20 +0800</pubDate><description><![CDATA[测试代码：

// test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
#include 
#include 
using namespace std;

class test{
public:
	int a;
	double x;
	test(int i,double m):a(i),x(m)
	{
		printf("cr]]></description><category></category></item><item><title><![CDATA[只能用于构造函数的explicit]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7054193</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7054193</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:16:07 +0800</pubDate><description><![CDATA[这个关键字只能用于构造函数，意思是该构造函数不能隐式的被调用。
当有隐式的类型转换的时候，该explicit可以阻止这一过程。


如：
class One{
public：
One(){}
};

class Two{
public:
Two(const One&){}
};

void f(Two){}

int main(){
One one;
f(one);
}


该程序]]></description><category></category></item><item><title><![CDATA[C++中operator =]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7054132</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7054132</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:16:01 +0800</pubDate><description><![CDATA[默认的operator= 和默认的拷贝构造函数做了同样的事情，递归的对基类和类中的对象进行拷贝构造。]]></description><category></category></item><item><title><![CDATA[C++ 指向成员的指针（数据成员指针，函数成员指针）]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7053998</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7053998</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:15:55 +0800</pubDate><description><![CDATA[数据成员指针：
class Data{
public :
	int a, b,c;
}定义数据成员指针：
int (Data::*pmInt)=&Data::a;
这样子的话pmInt就可以指向某个Data对象中的所有int数据成员。
如：
pmInt=&Data::a;
定义一个Data
Data d;


d.*pmInt=48;//d.a=48;


函数成员指针：]]></description><category></category></item><item><title><![CDATA[海量数据处理问题]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7954951</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7954951</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:15:20 +0800</pubDate><description><![CDATA[海量数据处理面临的问题：
1. 数据膨大，内存有限无法一次性装下。
2. 运行速度受到限制。]]></description><category></category></item><item><title><![CDATA[模板中的嵌套类]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7088662</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7088662</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:15:03 +0800</pubDate><description><![CDATA[#include "stdafx.h"
#include   
#include   


using namespace std;  


template class X{
	//without typename , you should get an error:
	typename T::id i;
	//T::id i;
public:
	void f(){i.g();}
};


cl]]></description><category></category></item><item><title><![CDATA[template函数]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7088337</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7088337</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:14:57 +0800</pubDate><description><![CDATA[#include "stdafx.h"
#include   
#include   

using namespace std;  

template 
T sum(T b,T e, T init=T())
{
	char chars[N];
	cout<<"N: "<<N<<endl;
	init=b+e;
	return init;
}


template 
T sum(T b,T e,]]></description><category></category></item><item><title><![CDATA[C++异常处理的用处]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7064413</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7064413</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:14:50 +0800</pubDate><description><![CDATA[异常处理一个用处在于将正常的处理流程中跳到恰当的异常处理器中，使得异常处理与正常的处理流程隔离。使得程序设计过程更加流畅。
 
异常处理保证当程序执行流程离开一个作用域的时候，对于属于该作用域的所有由  “构造函数建立起来的” 对象，它们的析构函数一定会被调用。 
然而，如果一个对象的构造函数在执行过程中抛出异常的话，则它的析构函数将不会被调用。因此，编写构造函数的时候，程序员必须特别的仔细]]></description><category></category></item><item><title><![CDATA[C++异常处理catch向上类型转换。]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7064092</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7064092</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:14:45 +0800</pubDate><description><![CDATA[匹配的异常并不要求与其捕获的对象类型一致。
一个对象或者是指向派生类对象的引用都会与其积累处理器匹配。
如果是对象本身而不是引用或指针的话，这个异常对象将会被“切割”，丢失派生类包含的所有信息。
因此最好是抛出引用，或者是指针。
但是不会进行自动类型转换。比如如下情况：
class Except1{};

class Except2{
public:
    Except2(co]]></description><category></category></item><item><title><![CDATA[throw后局部变量的析构。]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7063996</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7063996</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:14:37 +0800</pubDate><description><![CDATA[// test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
#include 
#include   
#include   

using namespace std;  


class object
{
public:
	~object()
	{
		cout<<"~object()"<<en]]></description><category></category></item><item><title><![CDATA[C++中的cast]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7057997</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7057997</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:14:27 +0800</pubDate><description><![CDATA[dynamic_cast:
用于向下类型转换。
该函数仅当向下类型转换是正确的时候返回有效的指针，否则返回0；所以说他是安全的。
注意：通常在向下类型转换和向上类型转换时，指针的值会有所调整，特别是在多重继承的时候。
当知道确实是该类型时，可以用static_cast代替dynamic_cast。]]></description><category></category></item><item><title><![CDATA[C++析构函数和虚析构函数。]]></title><link>https://blog.youkuaiyun.com/chjjunking/article/details/7057878</link><guid>https://blog.youkuaiyun.com/chjjunking/article/details/7057878</guid><author>chjjunking</author><pubDate>Tue, 04 Mar 2014 12:14:21 +0800</pubDate><description><![CDATA[析构函数如果不是虚的话，基类的析构函数将不会被调用。
多态时，也就是派生类被基类指针所指，或者被基类别名：虚析构函数，被调用时，其自身的析构函数和基类的析构函数都将会被调用。非虚的时候，不进行多态，只有基类的会被调用。


纯虚析构函数：定义的时候除了加“=0”。还需要给出函数的实现。因为当递归的调用析构函数时需要自动执行。


作为一个准则，任何时候我们的类中都要有一个虚函数，我们]]></description><category></category></item></channel></rss>