30
2016
03

总结:开发容易出Bug的代码或操作

又有一段时间没有发表文章了,感觉在同一个公司待久了,能写出来的东西就少了,呵呵,大家是不是有一样的感觉。

 

25
2016
01

数据库设计之数据库tinyint字段与Int字段的使用

SQL SERVER中的tinyint从 0 到 255 的整型数据。存储大小为 1 字节。

19
2016
01

[转载]评程序员和会不会修电脑到底有几毛钱关系?

转自:http://www.360doc.com/content/16/0116/18/848059_528431282.shtml




其实这是一个老生常谈却至今没有明确答案的问题:


18
2016
01

.Net中EF针对大数据量查询超时的一种优化

思路:一次不能联表查太多数据

旧代码:

14
2016
01

在.Net MVC结构API接口中判断http头信息实现公共的权限验证过滤器示例

//control   action 

public class TestController : ApiController
{
[MyAuthFilter]
public string test(string str)
{
return str.Trim();
}
}


02
2016
01

谈模块独立拆分上线一些经验

上线时间:20151214



27
2015
08

EntityFramework.BulkInsert扩展插入数据和EF本身插入数据比较

扩展下载地址:http://efbulkinsert.codeplex.com/


注意同时安装依赖项目,不然会报错,还有,程序中有同一个dll的其他版本,那就可能一次安装不上,得一个一个安装依赖的dll

Install-Package EntityFramework.MappingAPI -Version 6.0.0.7
Install-Package EntityFramework.BulkInsert-ef6


19
2015
07

.NET获取当前程序所在电脑的CPU和内存使用率

Code:

using System;
using System.Diagnostics;
using System.Text;
using System.Runtime.InteropServices; 
namespace ConsoleApplication1
{
    class Program
    {
        public static PerformanceCounter cpu;
        //public static ComputerInfo cif;
        static void Main(string[] args)
        {
            cpu = new PerformanceCounter("Processor", "% Processor Time", "_Total");
           // cif = new ComputerInfo();
            MEMORY_INFO MemInfo;
            MemInfo = new MEMORY_INFO();
            while(true)
            {
                GlobalMemoryStatus(ref  MemInfo);
                Console.WriteLine(MemInfo.dwMemoryLoad.ToString() + "%的内存正在使用");
                var percentage = cpu.NextValue();
                Console.WriteLine(percentage + "%的CPU正在使用\n");
                System.Threading.Thread.Sleep(2000);
            }
        }
        [DllImport("kernel32")]
        public static extern void GetSystemDirectory(StringBuilder SysDir, int count);
        [DllImport("kernel32")]
        public static extern void GetSystemInfo(ref  CPU_INFO cpuinfo);
        [DllImport("kernel32")]
        public static extern void GlobalMemoryStatus(ref  MEMORY_INFO meminfo);
        [DllImport("kernel32")]
        public static extern void GetSystemTime(ref  SYSTEMTIME_INFO stinfo);  
    }
    //定义CPU的信息结构  
    [StructLayout(LayoutKind.Sequential)]
    public struct CPU_INFO
    {
        public uint dwOemId;
        public uint dwPageSize;
        public uint lpMinimumApplicationAddress;
        public uint lpMaximumApplicationAddress;
        public uint dwActiveProcessorMask;
        public uint dwNumberOfProcessors;
        public uint dwProcessorType;
        public uint dwAllocationGranularity;
        public uint dwProcessorLevel;
        public uint dwProcessorRevision;
    }
    //定义内存的信息结构  
    [StructLayout(LayoutKind.Sequential)]
    public struct MEMORY_INFO
    {
        public uint dwLength;
        public uint dwMemoryLoad;
        public uint dwTotalPhys;
        public uint dwAvailPhys;
        public uint dwTotalPageFile;
        public uint dwAvailPageFile;
        public uint dwTotalVirtual;
        public uint dwAvailVirtual;
    }
    //定义系统时间的信息结构  
    [StructLayout(LayoutKind.Sequential)]
    public struct SYSTEMTIME_INFO
    {
        public ushort wYear;
        public ushort wMonth;
        public ushort wDayOfWeek;
        public ushort wDay;
        public ushort wHour;
        public ushort wMinute;
        public ushort wSecond;
        public ushort wMilliseconds;
    } 
}


27
2015
04

.Net执行cmd获取系统信息

code:

            public string Test()
        {
            Stopwatch w = new Stopwatch();
            w.Start();
            StringBuilder sb = new StringBuilder();
            string str = RunCmdForJobs("systeminfo");
            string[] lines = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string line in lines)
            {
                string[] temp = line.Split(new string[] { ": " }, StringSplitOptions.RemoveEmptyEntries);
                if (temp.Length == 2)
                    sb.AppendFormat("{0}:{1}<br/>", temp[0], temp[1].Trim(' '));
                else if (temp.Length == 1)
                    sb.AppendFormat("{0}<br/>", temp[0]);
            }
            //sb.Append(str);
            w.Stop();
            sb.AppendFormat("用时(毫秒):{0}<br/>", w.ElapsedMilliseconds);
            return sb.ToString();
        }
        /// <summary>
        /// 执行cmd命令
        /// 多命令请使用批处理命令连接符:
        /// <![CDATA[
        /// &:同时执行两个命令
        /// |:将上一个命令的输出,作为下一个命令的输入
        /// &&:当&&前的命令成功时,才执行&&后的命令
        /// ||:当||前的命令失败时,才执行||后的命令]]>
        /// 其他请百度
        /// </summary>
        public static string RunCmdForJobs(string cmdText)
        {
            string strOutput = "";
            var cmd = cmdText + " &exit"; //说明:不管命令是否成功均执行exit命令,否则当调用ReadToEnd()方法时,会处于假死状态
            using (var p = new System.Diagnostics.Process())
            {
                p.StartInfo.FileName = "C:\\Windows\\system32\\cmd.exe";
                p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
                p.StartInfo.RedirectStandardInput = true; //接受来自调用程序的输入信息
                p.StartInfo.RedirectStandardOutput = true; //由调用程序获取输出信息
                p.StartInfo.RedirectStandardError = true; //重定向标准错误输出
                p.StartInfo.CreateNoWindow = true; //不显示程序窗口
                p.Start(); //启动程序
                //向cmd窗口写入命令
                p.StandardInput.WriteLine(cmd);
                p.StandardInput.AutoFlush = true;
                strOutput = p.StandardOutput.ReadToEnd();
                p.WaitForExit(); //等待程序执行完退出进程
                p.Close();
            }
            return strOutput;
        }


26
2015
04

.Net实现真实下载地址与迅雷、QQ旋风等下载地址转换

.Net Code:

            public string Index()
        {
            StringBuilder sb = new StringBuilder();
            string OrgStr="http://down.qq.com/ava/full/W_full/AVA_Client_Ver_1230_full.exe";
            string ThunderStr="thunder://QUFodHRwOi8vZG93bi5xcS5jb20vYXZhL2Z1bGwvV19mdWxsL0FWQV9DbGllbnRfVmVyXzEyMzBfZnVsbC5leGVaWg==";
            string QQdlStr="qqdl://aHR0cDovL2Rvd24ucXEuY29tL2F2YS9mdWxsL1dfZnVsbC9BVkFfQ2xpZW50X1Zlcl8xMjMwX2Z1bGwuZXhl";
            string FlashGetStr="flashget://W0ZMQVNIR0VUXWh0dHA6Ly9kb3duLnFxLmNvbS9hdmEvZnVsbC9XX2Z1bGwvQVZBX0NsaWVudF9WZXJfMTIzMF9mdWxsLmV4ZVtGTEFTSEdFVF0=&";
            string orgAddr = GetOriginalString(QQdlStr);//原地址
            sb.AppendFormat("{0}<br>", orgAddr);
            string thunderAddr = "AA" + orgAddr + "ZZ";
            thunderAddr = "thunder://" + EncodeBase64(thunderAddr);
            sb.AppendFormat("{0}<br>", thunderAddr);
            string qqdlAddr = "qqdl://" + EncodeBase64(orgAddr);
            sb.AppendFormat("{0}<br>", qqdlAddr);
            string flashGetAddr = string.Format("{0}{1}{0}", "[FLASHGET]", orgAddr);
            flashGetAddr = "flashget://" + EncodeBase64(flashGetAddr) + "&";
            sb.AppendFormat("{0}<br>", flashGetAddr);
            return sb.ToString();
        }
        public string EncodeBase64(string orgStr)
        {
            try
            {
                return Convert.ToBase64String(Encoding.Default.GetBytes(orgStr));
            }
            catch
            {
                return "";
            }
        }
        public string DecodeBase64(string encodeStr)
        {
            try
            {
                return Encoding.Default.GetString(Convert.FromBase64String(encodeStr));
            }
            catch
            {
                return "";
            }
        }
        public string GetOriginalString(string str)
        {
            string thunderPrefix="thunder://";
            string qqdlPrefix = "qqdl://";
            string flashgetPrefix = "flashget://";
            if(str.StartsWith("http://")||str.StartsWith("https://"))
            {
                return str;
            }
            else if (str.StartsWith(thunderPrefix))
            {
                string thunderAddr = str.Substring(thunderPrefix.Length);//去掉前缀
                thunderAddr = DecodeBase64(thunderAddr);//base64解码
                thunderAddr = thunderAddr.Substring(2, thunderAddr.Length - 4);//去掉前两个A,后两个Z
                return thunderAddr;
            }
            else if(str.StartsWith(qqdlPrefix))
            {
                string qqdlAddr = str.Substring(qqdlPrefix.Length);
                qqdlAddr = DecodeBase64(qqdlAddr);//base64解码
                return qqdlAddr;
            }
            else if (str.StartsWith(flashgetPrefix))
            {
                string flashgetAddr = str.Substring(flashgetPrefix.Length);
                flashgetAddr = flashgetAddr.Substring(0,flashgetAddr.Length-1);//去掉最后一个&号 
                flashgetAddr = DecodeBase64(flashgetAddr);
                flashgetAddr = flashgetAddr.Substring(10,flashgetAddr.Length-20);//去掉前后的[FLASHGET]
                return flashgetAddr;
            }
            return "";
        }