zoukankan      html  css  js  c++  java
  • C#项目开发小记

     //抓包工具

    SmartSniff 1.77

     ////------------#region 截图
            private void toolStripButton6_Click(object sender, EventArgs e)
            {
                ScreenForm screen = new ScreenForm();
                screen.copytoFather += new CbRectangle(copytoTextBox);
                screen.ShowDialog();
            }

            /*截图后续操作*/
            public void copytoTextBox(Rectangle rec)
            {
                Rectangle rec2 = rec; //改造一下,去掉红色边框
                if (rec.Width > 2 && rec.Height > 2)
                    rec2 = new Rectangle(rec.X + 1, rec.Y + 1, rec.Width - 2, rec.Height - 2);
                Rectangle r = Screen.PrimaryScreen.Bounds;
                Image img = new Bitmap(rec2.Width, rec2.Height);
                Graphics g = Graphics.FromImage(img);
                g.CopyFromScreen(rec2.Location, new Point(0, 0), rec2.Size);
                Clipboard.SetDataObject(img, false);
                this.exRichTextBox_send.Paste();
            }
            #endregion

    //--------------------------------progressBar

    public void SetProgress(int total, int transmitted)
            {
                if (this.InvokeRequired)
                {
                    object[] args = { total, transmitted };
                    this.Invoke(new CbSetProgress(this.SetProgress) ,args) ;
                }
                else
                {
                    this.progressBar1.Maximum = total;
                    this.progressBar1.Value   = transmitted;
                    string str = ((double)transmitted*100/total).ToString();
                    if (str.Length > 4)
                    {
                        this.label_percent.Text = str.Substring(0, 4) + "%";
                    }
                    else
                    {
                        this.label_percent.Text = str + "%";
                    }

                    if (this.progressBar1.Value == 0)
                    {
                        this.lastDisplaySpeedTime = DateTime.Now;
                        this.lastTransmitted = transmitted;
                    }
                    else
                    {
                        DateTime now = DateTime.Now;
                        TimeSpan span = now - this.lastDisplaySpeedTime;
                        if (span.TotalSeconds >= 1)
                        {
                            string unit = "K/s";
                            double speed = (transmitted - this.lastTransmitted) / 1000;
                            if (speed > 1000)
                            {
                                unit = "M/s";
                                speed = (int)speed / 10;
                                speed /= 100.0;
                            }
                            this.label_speed.Text = speed.ToString() + unit;
                            int leftSecs = (total - transmitted) / (transmitted - this.lastTransmitted);
                            int hour = leftSecs / 3600;
                            int min = (leftSecs % 3600) / 60;
                            int sec = ((leftSecs % 3600) % 60) % 60;
                            this.label_leftTime.Text = string.Format("{0}:{1}:{2}", hour.ToString("00"), min.ToString("00"), sec.ToString("00"));
                            this.lastDisplaySpeedTime = now;
                            this.lastTransmitted = transmitted;
                        }
                    }

                   
                }
            }

    --------------------------//自定义泛型
      public class CustomList<T>:List<T> where T:class,IEnumerable
      {
      }

     --------------------------文件流读写操作------------------------------

     string path = Path.Combine(Application.StartupPath, "3.txt");
          //using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
          //{
          //  using (StreamReader sr = new StreamReader(fs, Encoding.Default))
          //  {
          //    this.textBox1.Text=sr.ReadToEnd();
          //  }
          //}
          using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Write))
          {
            using (StreamWriter sr = new StreamWriter(fs, Encoding.UTF8))
            {
              sr.WriteLine("的事发生大富大上的fdfsdafjds fdsfj234234234");
            }
          }

    ----------------------接口映射-----------------------------

    public class Man : IFlay, IRun
      {
        public string Flay(string name)
        {
          return name + ",飞!";
        }
        public string Run(string name)
        {
          return name + ",跑!";
        }
      }

     public interface IRun
      {
        string Run(string name);
      }

    public interface IFlay
      {
        string Flay(string name);
      }

    Man ma = new Man();
          if (ma is IFlay)
          {
            IFlay iFlay = ma as IFlay;//接口映射
            this.textBox1.Text=iFlay.Flay("人");
          }

    -------------------------------枚举类型作为下列列表或入泛型方法-------------------------------

    public static List<KeyValuePair<string, int>> GetKeyValuePairFromEnum<T>() where T : struct, IConvertible 

            { 

                List<KeyValuePair<string, int>> result = new List<KeyValuePair<string, int>>(); 

      

                IEnumerable<T> array = Enum.GetValues(typeof(T)).Cast<T>(); 

      

                foreach (T item in array) 

                { 

                    string name = item.ToString(); 

                    int value = (int)Enum.Parse(typeof(T), name); 

      

                    KeyValuePair<string, int> pair = new KeyValuePair<string, int>(name, value); 

                    result.Add(pair); 

                } 

      

                return result; 

            }

    ----------------------【装载】返回集合使用IEnumerable<>还是IList<>----------------------------------

    这里要看你的具体需求,一般分为以下几种可能性:

    1.如果你返回的集合是只用于遍历,不可修改的,则返回IEnumerable<T>

    2.如果返回的集合需要修改,如添加和删除元素,用ICollection<T>

    3.如果返回的集合需要支持排序,索引等,用IList<T>

    4.如果返回的集合要支持索引,但不能添加,删除元素,用ReadOnlyCollection<T>

    ----------------------整型数组转换字符串---------------------

        string str = null;

    int[] intArray = { 1, 2, 3, 4, 5, 6 };
          str = string.Join("|", Array.ConvertAll<int, string>(intArray,
          delegate(int i)
          {
            return i.ToString();
          }));

    -------------------------http同步下载---------------------------

    public static void DownLoadFileFromUrl(string url, string saveFilePath)
            {
                FileStream stream = new FileStream(saveFilePath, FileMode.Create, FileAccess.Write);
                WebRequest request = WebRequest.Create(url);
                try
                {
                    WebResponse response = request.GetResponse();
                    int contentLength = (int) response.ContentLength;
                    byte[] buffer = new byte[1024];
                    int count = 0;
                    int num3 = 0;
                    bool flag = false;
                    while (!flag)
                    {
                        count = response.GetResponseStream().Read(buffer, 0, buffer.Length);
                        if (count > 0)
                        {
                            stream.Write(buffer, 0, count);
                            num3 += count;
                        }
                        else
                        {
                            flag = true;
                        }
                    }
                    stream.Flush();
                }
                finally
                {
                    stream.Close();
                    request = null;
                }
            }

    -------------------------http异步下载---------------------------

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
          //request.Method = WebRequestMethods.Http.Get
          request.BeginGetResponse(new AsyncCallback((IAsyncResult result) =>
          {
            HttpWebRequest httpWebRequest = (HttpWebRequest)result.AsyncState;
            using (HttpWebResponse response = (HttpWebResponse)httpWebRequest.EndGetResponse(result))
            {
              if (response.StatusCode == HttpStatusCode.OK)
              {
                string path = Path.Combine(Application.StartupPath, "1.jpg");
                using (FileStream writeStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Write))
                {
                  using (Stream readStream = response.GetResponseStream())
                  {
                    int blockLength = 256 * 1024;
                    byte[] byteBuffer = new byte[256 * 1024];
                    int readLength = 0;
                    while ((readLength = readStream.Read(byteBuffer, 0, blockLength)) > 0)
                    {
                      writeStream.Write(byteBuffer, 0, readLength);
                      System.Threading.Thread.Sleep(10);
                    }
                  }
                }
              }
            }
          }), request);

    -------------------------遍历枚举类型值及文本---------------------------

    enum Color
      {
        Red=0,
        Green,
        Blue,
        Orange
      }

    文本:

    string[] eArray = Enum.GetNames(typeof(Color));
          foreach (string t in eArray)
          {
            eText += t + "  ";
          }

    值:

    string eValue = string.Empty;
          foreach (Color i in Enum.GetValues(typeof(Color)))
          {
            eValue += ((int)i).ToString() + "  ";
          }

     --------------------------------C#队列基本操作--------------------------------------

     List<UserInfo> userList = new List<UserInfo>
          {
            new UserInfo{Id=1,UserName="dd1",UserPwd="11"},
            new UserInfo{Id=2,UserName="dd2",UserPwd="22"},
            new UserInfo{Id=3,UserName="dd3",UserPwd="33"},
            new UserInfo{Id=4,UserName="dd4",UserPwd="44"},
            new UserInfo{Id=5,UserName="dd5",UserPwd="55"},
            new UserInfo{Id=6,UserName="dd6",UserPwd="66"},
            new UserInfo{Id=7,UserName="dd7",UserPwd="77"}
          };

          IEnumerable<UserInfo> ulst = new List<UserInfo>
          {
            new UserInfo{Id=8,UserName="dd8",UserPwd="88"},
            new UserInfo{Id=9,UserName="dd9",UserPwd="99"},
            new UserInfo{Id=10,UserName="dd10",UserPwd="1010"},
            new UserInfo{Id=11,UserName="dd11",UserPwd="1111"}
          };

          int length = userList.Count;
          length = length + 4;
          //Queue<UserInfo> qu = new Queue<UserInfo>(length);
          Queue<UserInfo> qu = new Queue<UserInfo>(ulst);
          foreach (UserInfo user in userList)
          {
            qu.Enqueue(user);//入队
          }

          for (int i = 0; i < length;i++)
          {
            UserInfo u = qu.Dequeue();//出队
            this.textBox1.Text +=length+"  "+ u.Id + System.Environment.NewLine;
          }

    -------------------------------常用的集合类和由这些类实现的集合接口----------------------------------

    • 集合及其实现的接口一览

    下面罗列出来较为常用的集合类和由这些类实现的集合接口:

    集合类

    集合接口

    ArrayList

    IList, ICollection,IEnumerable

    Queue

    ICollection,IEnumerable

    Stack

    ICollection,IEnumerable

    BitArray

    ICollection,IEnumerable

    Hashtable

    IDictionary,ICollection,IEnumerable

    SortedList

    IDictionary,ICollection,IEnumerable

    List<T>

    IList<T>,ICollection<T>,IEnumerable<T>,IList,ICollection,IEnumerable

    Queue<T>

    IEnumerable<T>,ICollection,IEnumerable

    Stack<T>

    IEnumerable<T>,ICollection,IEnumerable

    LinkedList<T>

    IEnumerable<T>,ICollection<T>,ICollection,IEnumerable

    HashSet<T>

    IEnumerable<T>,ICollection<T>,IEnumerable

    Dictionary<TKey, TValue>

    IDictionary<TKey, TValue>,

    ICollection<KeyValuePair<TKey, TValue>>,

    IEnumerable<KeyValuePair<TKey, TValue>>,

    IDictionary,ICollection,IEnumerable

    SortedDictionary<TKey, TValue>

    IDictionary<TKey, TValue>,

    ICollection<KeyValuePair<TKey, TValue>>,

    IEnumerable<KeyValuePair<TKey, TValue>>,

    IDictionary,ICollection,IEnumerable

    SortedList<TKey, TValue>

    IDictionary<TKey, TValue>,

    ICollection<KeyValuePair<TKey, TValue>>,

    IEnumerable<KeyValuePair<TKey, TValue>>,

    IDictionary,ICollection,IEnumerable

    Lookup<TKey, TElement>

    LKoopup<TKey, TElement>,

    IEnumerable<IGrouping<TKey, TElemet>>,IEnumerable

    -----------------------遍历Form应用程序目录--------------------------

     string directory = System.IO.Directory.GetParent(System.Windows.Forms.Application.ExecutablePath).FullName;
                this.addinManagement.LoadAllAddins(directory, true);

                foreach (IAddin addin in this.addinManagement.AddinList)
                {
                    IPassiveAddin passiveAddin = addin as IPassiveAddin;
                    if (passiveAddin != null)
                    {
                        ToolStripItem item = new ToolStripMenuItem(passiveAddin.ServiceName, null, new EventHandler(this.OnAddinMenuClicked));
                        item.Tag = passiveAddin;
                        this.lIToolStripMenuItem_addin.DropDownItems.Add(item);

                        this.xImageListBox1.AddItem(passiveAddin.ServiceName, 6, passiveAddin);
                    }
                }

  • 相关阅读:
    【HEOI2016】序列
    【AHOI2006】基因匹配
    【HAOI2016】放棋子
    【TJOI2017】DNA
    Luogu5110 块速递推
    长链剖分学习笔记
    【Vijos】lxhgww的奇思妙想
    [python 学习] requests 库的使用
    [php代码审计] Window api函数 FindFirstFile 在php中的问题
    [php代码审计] apache 后缀名解析“漏洞”
  • 原文地址:https://www.cnblogs.com/fx2008/p/2225187.html
Copyright © 2011-2022 走看看