月度归档: 2014 年 11 月

  • MFC的AfxBeginThread函数

    AfxBeginThread是MFC封装的函数,返回的是CWinThread*,不能用于CloseHandleAfxBeginThread在线程执行完后会句柄资源自动释放。

    如果是::CreateThread创建的线程则要手工调用CloseHandle释放线程句柄。

  • c#连接access 时出错

    c#连接access 时出现:未在本地计算机上注册  Microsoft.Jet.OLEDB.4.0 的错误

    解决方案:

    在VS项目属性中,生成页, 把“目标平台”改为X86即可,如下图所示:

  • C#合并数组

    C#合并数组

    public string[] MergerArray(string[] First, string[] Second)
    {
        string[] result = new string[First.Length + Second.Length];
        First.CopyTo(result, 0);
        Second.CopyTo(result, First.Length);
        return result;
    }

    泛型版本

    public T[] MergerArray<T>(T[] First,T[] Second)
    {
        T[] result =new T[First.Length + Second.Length];
        First.CopyTo(result, 0);
        Second.CopyTo(result, First.Length);
        return result;
    }

    合并多个数组

    /// <summary>
    /// 连接多个数组
    /// </summary>
    /// <typeparam name="T">数组数据类型</typeparam>
    /// <param name="source">源数组</param>
    /// <param name="arrays">被连接的多个数组</param>
    /// <returns></returns>
    public static T[] Concat<T>(this T[] source, params T[][] arrays)
    {
        if (source == null)
        {
            throw new ArgumentNullException("source");
        }
    
    
        var length = source.Length + arrays.Sum(array => array != null ? array.Length : 0);
        var result = new T[length];
        length = source.Length;
        Array.Copy(source, 0, result, 0, source.Length);
        foreach (var array in arrays)
        {
            if (array != null)
            {
                Array.Copy(array, 0, result, length, array.Length);
                length += array.Length;
            }
        }
        return result;
    }
  • CentOS安装APACHE总结

    不知道你装的是什么系统,就拿比较普遍的CentOS来说吧。
    首先执行yum update更新你的系统,升级后应该是6.6,确保一些库是最新的。

    先说apache,最新版本是2.4。
    进入 http://apache.org/dyn/closer.cgi 到官网找下载包。下载链接里面提供了几个镜像,找一个.cn的点进去(国内的速度快)。比如 http://mirrors.cnnic.cn/apache/

    找到httpd目录点击进入。复制最后一个的下载链接 httpd-2.4.10.tar.gz    http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.10.tar.gz

    然后下载到你的服务器wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.10.tar.gz

    解压 tar -xvf httpd-2.4.10.tar.gz

    然后下载安装 apache所需要的两个包 
    wget http://mirror.esocc.com/apache/apr/apr-1.4.8.tar.gz
    wget http://mirror.esocc.com/apache/apr/apr-util-1.5.2.tar.gz
    这两个有最新版本, 你下载对应的最新的就是。

    解压
    tar -xvf apr-1.4.8.tar.gz
    tar -xvf apr-util-1.5.2.tar.gz

    把依赖包移到apache源码目录下 
    mv apr-1.4.8 httpd-2.4.10/srclib/apr
    mv apr-util-1.5.2 httpd-2.4.10/srclib/apr-util
    cd httpd-2.4.10

    配置编译文件
    ./configure --with-included-apr --enable-nonportable-atomics=yes --with-z
    如果你想安装到指定目录,则加上–prefix=.. 比如  --prefix=/web/apache

    如果你只打算在新式的CPU上运行Apache,你可以在编译时使用 --enable-nonportable-atomics 选项:

    如果你的是新装的服务器,可能需要安装pcre zlib。执行 yum install zlib-devel pcre-devel
    像gcc /g++ make之类的基础工具用阿里云的ECS就不用再装了,你装完以后默认都带了。

    最后是 make -j8 && make install

  • C# 生成允许重复的排列、组合

    C# 生成允许重复的排列、组合

    /// <summary>
    /// 获取允许重复的排列组合
    /// </summary>
    /// <param name="s"> 源字符串</param>
    /// <param name="cnt"> 组合位数</param>
    /// <returns> 生成结果</returns>
    static IEnumerable<string > GetVariations(string s)
    {
            int[] indexes = new int[s.Length];
            StringBuilder sb = new StringBuilder ();
    
            while (IncrementIndexes(indexes, s.Length))
            {
                sb.Clear();
                for ( int i = 0; i < indexes.Length; i++)
                {
                        if (indexes[i] != 0)
                        {
                                sb.Append(s[indexes[i] - 1]);
                        }
                }
    
                yield return sb.ToString();
    
            }
    }
    
    static bool IncrementIndexes( int[] indexes, int limit)
    {
            for ( int i = 0; i < indexes.Length; i++)
            {
                indexes[i]++;
                if (indexes[i] > limit)
                {
                        indexes[i] = 1;
                }
                else
                {
                        return true;
                }
            }
            return false;
    }

    排列 和 组合的区别

    排列是有顺序的,如(a,b,c)和(b,c,a)是不同的,虽然同样是三个字母,但顺序不同。

    组合是没有顺序的,如(a,b,c)和(b,c,a)是相同的,只要是同样的字母组合,顺序无所谓。

  • C# 随机生成字符串

    C# 随机生成字符串

    /// <summary>
    /// 生成随机纯字母组合
    /// </summary>
    /// <param name="count"> 位数</param>
    /// <returns> 随机码</returns>
    private string GetRandomString( int count)
    {
            int number;
            string checkCode = String.Empty;     //存放随机码的字符串  
    
            System. Random random = new Random( DateTime.Now.Millisecond * 2);
    
            for ( int i = 0; i < count; i++) //产生4位校验码  
            {
                number = random.Next();
                number = number % 36;
                if (number < 10)
                {
                        number += 48;    //数字0-9编码在48-57  
                }
                else
                {
                        number += 55;    //字母A-Z编码在65-90  
                }
    
                checkCode += (( char)number).ToString();
            }
            return checkCode;
    }
    
    /// <summary>
    /// 按位数取得随机码(纯数字)
    /// </summary>
    /// <param name="num"> 位数</param>
    /// <returns> 随机码</returns>
    public string GetRandomNumber( int num)
    {
            string str = "";
            int seed = Math.Abs((int )BitConverter .ToUInt32(Guid.NewGuid().ToByteArray(), 0));
            Random random = new Random(seed);
    
            for ( int i = 0; i < num; i++)
            {
                str += random.Next(10);
            }
            return str;
    }
    
    /// <summary>
    /// 生成随机字母字符串(数字字母混和)
    /// </summary>
    /// <param name="codeCount"> 待生成的位数 </param>
    public string GetRandomCharAndNumber( int codeCount)
    {
            
        string str = string.Empty;
        int rep = 0;
        long num2 = DateTime.Now.Ticks + rep;
        rep++;
        Random random = new Random((( int)((( ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep)));
        for ( int i = 0; i < codeCount; i++)
        {
            char ch;
            int num = random.Next();
            if ((num % 2) == 0)
            {
                ch = ( char)(0x30 + (( ushort)(num % 10)));
            }
            else
            {
                ch = ( char)(0x41 + (( ushort)(num % 0x1a)));
            }
            str = str + ch.ToString();
        }
        return str;
    }
  • .NET Winform排错记录

    遇到 .NET Winform 报错,错误信息如下:

    Description: The process was terminated due to an unhandled exception.
    Exception Info: System.IO.FileNotFoundException

    可能是因为没有把需要的DLL程序集和EXE放到一起引起的。

  • php fopen打开中文名的文件 

    php fopen打开中文名的文件 :

    注意要使用iconv将iconv转码为GBK,当前PHP文档是uft-8编码的。

    $file_dir = dirname(__FILE__) . '\\';
    $name = iconv ( 'UTF-8', 'GBK', '金科智能VR批量渲染加速系统免费版.rar' );  //从UFT8编码转到GBK编码
    
    $file = fopen($file_dir.$name,"rb");

  • centos编译安装apache2.4.10 + PHP5.5

    centos编译安装apache2.4.10 + PHP5.5全记录:

    编译安装apache2.4.10

     从官方下载(链接需要改版本): 

    wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.39.tar.gz
    wget http://mirror.bit.edu.cn/apache/apr/apr-1.7.0.tar.gz
    wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz

    解压缩:

    tar -xvf httpd-2.4.39.tar.gz
    tar -xvf apr-1.7.0.tar.gz
    tar -xvf apr-util-1.6.1.tar.gz

    一点文件操作:

    mv apr-1.7.0 httpd-2.4.39/srclib/apr
    mv apr-util-1.6.1 httpd-2.4.39/srclib/apr-util
    cd httpd-2.4.39

    编译前安装 :

    yum install zlib-devel pcre-devel

      编译命令:

    ./configure --prefix=/web/httpd --with-included-apr --enable-nonportable-atomics=yes --with-z

    编译完成后:

    make
    make install

    ———————————-

    wget http://cn2.php.net/distributions/php-5.5.18.tar.bz2
    tar -xvf php-5.5.18.tar.bz2
    cd php-5.5.18
    ./configure --prefix=/web/php --with-apxs2=/web/httpd/bin/apxs --enable-cli --enable-shared --with-libxml-dir --with-gd --with-openssl --enable-mbstring --with-mcrypt --with-mysqli --with-mysql --enable-opcache --enable-mysqlnd --enable-zip --with-zlib-dir --with-pdo-mysql --with-jpeg-dir --with-freetype-dir --with-curl --without-pdo-sqlite --without-sqlite3
  • 1G以及1G以下的小内存主机编译PHP时报错

    1G以及1G以下的小内存主机编译PHP时报错,错误信息如下:

    make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1

    解决办法:在编译条件上加上  --disable-fileinfo 即可。