<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[站在理想与平凡的路口]]></title><description><![CDATA[Android菜鸟成长记]]></description><link>https://blog.youkuaiyun.com/wangluomin</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangluomin]]></copyright><item><title><![CDATA[HashMap解析]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/78247872</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/78247872</guid><author>wangluomin</author><pubDate>Mon, 16 Oct 2017 11:25:02 +0800</pubDate><description><![CDATA[先看一下实例HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("语文", 1);
map.put("数学", 2);
map.put("英语", 3);
map.put("历史", 4);
map.put("政治", 5);
map.put("地理", 6);
map.put("生物", 7);
map.pu]]></description><category></category></item><item><title><![CDATA[Java的fail-fast机制]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/78216291</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/78216291</guid><author>wangluomin</author><pubDate>Thu, 12 Oct 2017 16:21:40 +0800</pubDate><description><![CDATA[fail-fast机制“快速失败”也就是fail-fast，它是Java集合中的一种错误检测机制。 
某个线程在对collection进行迭代时，不允许其他线程对该collection进行结构上的修改。 
例如：假设存在两个线程（线程1、线程2），线程1通过Iterator在遍历集合A中的元素，在某个时候线程2修改了集合A的结构（是结构上面的修改，而不是简单的修改集合元素的内容），那么这个时候程序就]]></description><category></category></item><item><title><![CDATA[Java 内部类]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/78203427</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/78203427</guid><author>wangluomin</author><pubDate>Wed, 11 Oct 2017 14:38:46 +0800</pubDate><description><![CDATA[Java内部类有以下几种：成员内部类最普通的内部类，位于另一个类的内部，可以理解为类的成员。编译的时候，会默认给成员内部类的构造方法传入外部类的对象引用。所以成员内部类可以无条件访问外部类的所有成员属性和成员方法（包括private成员和静态成员）当成员内部类含有和外部类相同的成员变量或方法时，会发生隐藏现象，默认情况下会访问成员内部类的方法和变量。如果要访问外部类的同名成员，可以用如下方式：外部类]]></description><category></category></item><item><title><![CDATA[Java中为什么float型最大值大于long型？]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/78195200</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/78195200</guid><author>wangluomin</author><pubDate>Tue, 10 Oct 2017 17:30:25 +0800</pubDate><description><![CDATA[最为一个常识，我们都知道浮点型在内存中占用的是4个字节的空间，而long型占用的是8个字节的空间。可是为什么4个字节的float型的最大值会大于long型的最大值呢？我们都知道，float类型的范围是：-3.403E38~3.403E38。而long类型的范围是：-2^63~2^63-1（大概是9*10^18）。 
我以前也是简单的记住就算完事了，对于它为什么会这样却没有考虑过。下面给大家分享一下我]]></description><category></category></item><item><title><![CDATA[C++ 中构造函数与析构函数的执行顺序]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/17538589</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/17538589</guid><author>wangluomin</author><pubDate>Tue, 24 Dec 2013 22:16:03 +0800</pubDate><description><![CDATA[今天在测试一个构造函数和析构函数的用例的时候，发现我们所钟爱的VC6.0实在是Bug问题越来越多，对于学习C++的新手来讲，有必要在这里给大家说明一下。

构造函数顺序为：

 全局对象的构造函数； main函数中对象的构造函数，包括automatic、static依次调用； main中遇到函数中有局部对象时，进入到函数中调用局部对象的构造函数。
     注：static对象的构造函数]]></description><category></category></item><item><title><![CDATA[面试题]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/12525997</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/12525997</guid><author>wangluomin</author><pubDate>Wed, 09 Oct 2013 21:56:28 +0800</pubDate><description><![CDATA[1、
#include 
class Test
{
public:
	int print()
	{
		printf("print null\n");
		return 0;
	}
	int set(int n)
	{
		m_val = n;
		int *ptr = new int;
		printf("%d\n ",m_val);
		return m_val;
	}
private:]]></description><category></category></item><item><title><![CDATA[走台阶问题]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/12424243</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/12424243</guid><author>wangluomin</author><pubDate>Tue, 08 Oct 2013 11:27:51 +0800</pubDate><description><![CDATA[问题

刚才在首页看到一篇博客，说的是腾讯的一道面试题：一个楼梯有50个台阶，每一步可以走一个台阶，也可以走两个台阶，请问走完这个楼梯共有多少种方法？博主把这题分析的很麻烦。引来很多人围观。我以前也碰到过这个问题。写出来和大家分享一下。

举个例子，假设有3个台阶，则有三种走法：分别是，1-1-1, 1-2, 2-1。

分析

很简单的一道题，学过组合数学的人很快就能想到，这是一]]></description><category></category></item><item><title><![CDATA[求出数组中满足给定和的所有元素组合]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/12423789</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/12423789</guid><author>wangluomin</author><pubDate>Tue, 08 Oct 2013 11:20:01 +0800</pubDate><description><![CDATA[题目描述

给定一个含有n个元素的整形数组a，再给定一个和sum，求出数组中满足给定和的所有元素组合，举个例子，设有数组a[6] = { 1, 2, 3, 4, 5, 6 }，sum = 10，则满足和为10的所有组合是

{1, 2, 3, 4}
{1, 3, 6}
{1, 4, 5}
{2, 3, 5}
{4, 6}

注意，这是个n选m的问题，并不是两两组合问题。

]]></description><category></category></item><item><title><![CDATA[extern “C”总结]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/12419707</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/12419707</guid><author>wangluomin</author><pubDate>Tue, 08 Oct 2013 10:01:23 +0800</pubDate><description><![CDATA[经常看到如下代码：




#ifdef _cplusplus
extern "C" {
#endif
#include "XXX.h"
#ifdef _cplusplus
}
#endif





解释：

这段代码的含义是，如果当前的程序是C++程序，那么下面引用的头文件是C文件, 那如果当前程序不是C++呢？难道包含的就不是C文件了么？当然不是，不管当]]></description><category></category></item><item><title><![CDATA[KMP字符串模式匹配详解]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/12418373</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/12418373</guid><author>wangluomin</author><pubDate>Tue, 08 Oct 2013 09:26:36 +0800</pubDate><description><![CDATA[KMP字符串模式匹配详解
来自优快云     A_B_C_ABC 网友
KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。
一．  简单匹配算法
先来看一个简单匹配算法的函数：

int Index_BF ( char S [ ], char T [ ], int ]]></description><category></category></item><item><title><![CDATA[数组面试题]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/12351309</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/12351309</guid><author>wangluomin</author><pubDate>Sun, 06 Oct 2013 22:38:50 +0800</pubDate><description><![CDATA[1、给定一个n个整型元素的数组a，其中有一个元素出现次数超过n / 2，求这个元素
设置一个当前值和当前值的计数器，初始化当前值为数组首元素，计数器值为1，然后从第二个元素开始遍历整个数组，对于每个被遍历到的值a[i]
1 如果a[i]==currentValue，则计数器值加1
2 如果a[i] !=currentValue，则计数器值减1，如果计数器值小于0，则更新当前值为a[i]，并将]]></description><category></category></item><item><title><![CDATA[字符串面试题]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/12348797</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/12348797</guid><author>wangluomin</author><pubDate>Sun, 06 Oct 2013 16:03:58 +0800</pubDate><description><![CDATA[普通逆序

基本上没有这么考的，放在这里主要是为了和后面的原地逆序做个对比。很简单，直接分配一个与原字符串等长的字符数组，然后反向拷贝一下即可。


char* Reverse(char* s)
{
    //将q指向字符串最后一个字符
    char* q = s ;
    while( *q++ ) ;
    q -= 2 ; 

    //分配空间，存储逆序后的字符串。
]]></description><category></category></item><item><title><![CDATA[构造函数定义为private，protected]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/12233377</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/12233377</guid><author>wangluomin</author><pubDate>Wed, 02 Oct 2013 11:23:51 +0800</pubDate><description><![CDATA[将构造函数，析构函数声明为私有和保护的，那么对象如何创建？
已经不能从外部调用构造函数了，但是对象必须被构造，应该如何解决？关于构造，析构函数声明为私有和保护时的用法？？？


从语法上来讲，一个函数被声明为protected或者private，那么这个函数就不能从“外部”直接被调用了。
对于protected的函数，子类的“内部”的其他函数可以调用之。
而对于private的函数，只]]></description><category></category></item><item><title><![CDATA[尽量使用初始化而不要在构造函数里赋值]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/12080867</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/12080867</guid><author>wangluomin</author><pubDate>Fri, 27 Sep 2013 09:42:57 +0800</pubDate><description><![CDATA[看这样一个模板，它生成的类使得一个名字和一个t类型的对象的指针关联起来。
template
class namedptr {
public:
  namedptr(const string& initname, t *initptr);
  ...
private:
  string name;
  t *ptr;
};
（因为有指针成员的对象在进行拷贝和赋值操作时可能会引起指]]></description><category></category></item><item><title><![CDATA[NULL指针，空指针，野指针]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/11921945</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/11921945</guid><author>wangluomin</author><pubDate>Mon, 23 Sep 2013 10:41:56 +0800</pubDate><description><![CDATA[1. 空指针、NULL指针、零指针

1.1什么是空指针常量

0、0L、'\0'、3 - 3、0 * 17 （它们都是“integer constant expression”）以及 (void*)0 （我觉得(void*)0应该算是一个空指针吧，更恰当一点）等都是空指针常量（注意 (char*) 0 不叫空指针常量，只是一个空指针值）。至于系统选取哪种形式作为空指针常量使用，则是实现相]]></description><category></category></item><item><title><![CDATA[文件中有一组整数，要求排序后输出到另一个文件中]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/11733963</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/11733963</guid><author>wangluomin</author><pubDate>Mon, 16 Sep 2013 14:56:55 +0800</pubDate><description><![CDATA[文件中有一组整数，要求排序后输出到另一个文件中（面试官，超级喜欢考排序的。你要去面试，数据结构的那几个排序一定要非常熟悉，用笔也可以写出代码来，用笔写代码，就是这样变态啊，其实感觉没有必要这样笔试）


＃include
＃include
usingnamespace std;

void Order(vector& data)//bubble sort
{
    int count = ]]></description><category></category></item><item><title><![CDATA[在C++程序中调用被C 编译器编译后的函数，为什么要加 extern "C"]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/11722535</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/11722535</guid><author>wangluomin</author><pubDate>Mon, 16 Sep 2013 10:06:26 +0800</pubDate><description><![CDATA[首先，作为extern是C/C++语言中表明函数和全局变量作用范围（可见性）的关键字，该关键字告诉编译器，其声明的函数和变量可以在本模块或其它模块中使用。
通常，在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如，如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样，模块B中调用模块A中的函数时，在编译阶段，模块B虽然找不到该函数]]></description><category></category></item><item><title><![CDATA[两有序链表合并排序]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/11720465</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/11720465</guid><author>wangluomin</author><pubDate>Mon, 16 Sep 2013 09:06:43 +0800</pubDate><description><![CDATA[1、已知两个链表head1 和head2 各自有序，请把它们合并成一个链表依然有序。(保留所有结点，即便大小相同）

Node * Merge(Node *head1 , Node *head2)
{
    if ( head1 == NULL)
        return head2 ;
    if ( head2 == NULL)
        return head1 ;
   ]]></description><category></category></item><item><title><![CDATA[写一个函数找出一个整数数组中，第二大的数（microsoft）]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/11715185</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/11715185</guid><author>wangluomin</author><pubDate>Sun, 15 Sep 2013 22:39:11 +0800</pubDate><description><![CDATA[写一个函数找出一个整数数组中，第二大的数（microsoft）
答案：

const int MINNUMBER =-32767 ;
int find_sec_max( int data[] , int count)
{
    int maxnumber = data[0] ;
    int sec_max = MINNUMBER ;
    for ( int i =1 ; i < c]]></description><category></category></item><item><title><![CDATA[KMP字符串模式匹配详解]]></title><link>https://blog.youkuaiyun.com/wangluomin/article/details/11715063</link><guid>https://blog.youkuaiyun.com/wangluomin/article/details/11715063</guid><author>wangluomin</author><pubDate>Sun, 15 Sep 2013 22:30:08 +0800</pubDate><description><![CDATA[KMP字符串模式匹配详解
KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。
一．  简单匹配算法
先来看一个简单匹配算法的函数：

int Index_BF ( char S [ ], char T [ ], int pos )
{
/* 若串 S 中从第pos(S ]]></description><category></category></item></channel></rss>