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;
}

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