一个生成验证字符或数字的增强类(基于.net1.1)及调用示例

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Web.UI;
using System.Drawing.Drawing2D;
using System.IO;
using System.Text;
using System.Collections.Specialized;
namespace Vegnet.Common.Framework.Util
... {
    /**//// <summary>
    
/// 生成验证码的类
    
///  </summary>

    调用示例#region 调用示例
       //* *********************************************调用示例**************************************************
         * 作者 downnmoon(邀月) 2006年11月************************************************************************
     
        //呈现页面后台
        private void getNumbers(int len)
            ...{
                ValidateNumber.CurrentLength=len;
                ValidateNumberAndChar.CurrentNumber=ValidateNumberAndChar.CreateValidateNumber(ValidateNumberAndChar.CurrentLength);
                string number=ValidateNumberAndChar.CurrentNumber;
                ValidateNumberAndChar.CreateValidateGraphic(this,number);
                HttpCookie a = new HttpCookie("VegnetValidNumber2", number);
                Response.Cookies.Add(a);
                        
            }

        //验证页面前台
            <asp:TextBox id="TextBox3"  runat="server"></asp:TextBox>
            <asp:Label id="Label3"  runat="server"></asp:Label>
            <asp:Button id="Button3"  runat="server"Text="验证"></asp:Button>
            <IMGsrc="DispValid.aspx">
        //验证页面后台
        private void Button3_Click(object sender, System.EventArgs e)
            ...{
                HttpCookieCollection cookies = Request.Cookies;
                string tmp = cookies["VegnetValidNumber2"].Value;
                this.Label3.Text=(tmp.Trim().ToLower()==TextBox3.Text.Trim().ToLower())?"正确":"无效";
            }

            
                    
        ******************************************************************************************************/
    
       #endregion

    public  class ValidateNumberAndChar
    ...{
        public ValidateNumberAndChar()
        ...{
        }

        /**//// <summary>
        
/// 验证码的最大长度
        
/// </summary>

        public static  int MaxLength
        ...{
            get...{return 10;}
        }

        /**//// <summary>
        
/// 验证码的最小长度
        
/// </summary>

        public static int MinLength
        ...{
            get...{return 1;}
        }

        /**//// <summary>
        
/// 验证码的前缀
        
/// </summary>

        public static string BaseString
        ...{
            get
            ...{
                return "VegnetValidNumber";
            }

        }

        /**//// <summary>
        
/// 当前字符串长度,主要是为了更换图片时用
        
/// </summary>

        private static int _currentLength=5;
        public static int CurrentLength
        ...{
            get
            ...{
                return _currentLength;
            }

            set
            ...{
                _currentLength=value;
            }

        }

        /**//// <summary>
        
/// 当前字符串,主要是为了更换图片时用
        
/// </summary>

        private static string _currentNumber="";
        public static string CurrentNumber
        ...{
            get
            ...{
                if(_currentNumber!="")
                ...{
                    return     _currentNumber;
                }

                else
                ...{
                    return CreateValidateNumber(CurrentLength);
                }

            }

            set
            ...{
                _currentNumber=value;
            }

        }

        /**//// <summary>
        
/// 合法字符列表
        
/// </summary>

        private static  string strLetters 
        ...{
            get
            ...{
                return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
            }

        }

        
        /**//// <summary>
        
/// 生成验证码
        
/// </summary>
        
/// <param name="length">指定验证码的长度</param>
        
/// <returns></returns>

        public static string CreateValidateNumber(int length)
        ...{
            int[] randMembers=new int[length];
            int[] validateNums=new int[length];
            string validateNumberStr="";
            //生成起始序列值
            int seekSeek=unchecked((int)DateTime.Now.Ticks);
            Random seekRand=new Random(seekSeek);
            int beginSeek=(int)seekRand.Next(0,Int32.MaxValue-length*10000);
            int[] seeks=new int[length];
            for(int i=0;i<length;i++)
            ...{
                beginSeek+=10000;
                seeks[i]=beginSeek;
            }

            //生成随机数字
            for(int i=0;i<length;i++)
            ...{
                Random rand=new Random(seeks[i]);
                int pownum=1*(int)Math.Pow(10,length);
                randMembers[i]=rand.Next(pownum,Int32.MaxValue);
            }

            //抽取随机数字
            for(int i=0;i<length;i++)
            ...{
                string numStr=randMembers[i].ToString();
                int numLength=numStr.Length;
                Random rand=new Random();
                int numPosition=rand.Next(0,numLength-1);
                validateNums[i]=Int32.Parse(numStr.Substring(numPosition,1));
            }

            //生成验证码
            for(int i=0;i<length;i++)
            ...{
                validateNumberStr+=validateNums[i].ToString();
            }

            return validateNumberStr;
        }

        
        /**//// <summary>
        
/// 生成验证码(依据合法字符列表随机生成)
        
/// </summary>
        
/// <param name="length"></param>
        
/// <returns></returns>

        public static string CreateValidateChar(int length)
        ...{
                    
            StringBuilder s = new StringBuilder();
            //生成起始序列值
            int seekSeek=unchecked((int)DateTime.Now.Ticks);
            Random seekRand=new Random(seekSeek);
            int beginSeek=(int)seekRand.Next(0,Int32.MaxValue-length*10000);
            int[] seeks=new int[length];
            for(int i=0;i<length;i++)
            ...{
                beginSeek+=10000;
                seeks[i]=beginSeek;
            }

            //将随机生成的字符串绘制到图片上
            for (int i = 0; i < length; i++)
            ...{
                Random r=new Random(seeks[i]);
                s.Append(strLetters.Substring(r.Next(0, strLetters.Length - 1), 1));
            }

            return s.ToString();
        }


        /**//// <summary>
        
/// 创建验证码的图片
        
/// </summary>
        
/// <param name="containsPage">要输出到的page对象</param>
        
/// <param name="validateNum">验证码</param>

        public  static void CreateValidateGraphic(Page containsPage,string validateNum)
        ...{
            Bitmap image=new Bitmap((int)Math.Ceiling(validateNum.Length*15),25);
            Graphics g=Graphics.FromImage(image);
            try
            ...{
                //生成随机生成器
                Random random=new Random();
                //清空图片背景色
                g.Clear(Color.White);
                //画图片的干扰线
                for(int i=0;i<25;i++)
                ...{
                    int x1=random.Next(image.Width);
                    int x2=random.Next(image.Width);
                    int y1=random.Next(image.Height);
                    int y2=random.Next(image.Height);
                    g.DrawLine(new Pen(Color.GhostWhite),x1,y1,x2,y2);
                }

                Font font=new Font("Arial",16,(FontStyle.Bold|FontStyle.Italic));
                LinearGradientBrush brush=new LinearGradientBrush(new Rectangle(0,0,image.Width,image.Height),
                    Color.Blue,Color.DarkRed,1.2f,true);
                g.DrawString(validateNum,font,brush,3,2);
                //画图片的前景干扰点
                for(int i=0;i<100;i++)
                ...{
                    int x=random.Next(image.Width);
                    int y=random.Next(image.Height);
                    image.SetPixel(x,y,Color.FromArgb(random.Next()));
                }

                //画图片的边框线
                g.DrawRectangle(new Pen(Color.Silver),0,0,image.Width-1,image.Height-1);
                //保存图片数据
                MemoryStream stream=new MemoryStream();
                image.Save(stream,ImageFormat.Jpeg);
                //输出图片
                containsPage.Response.Clear();
                containsPage.Response.ContentType="image/jpeg";
                containsPage.Response.BinaryWrite(stream.ToArray());
            }

            finally
            ...{
                g.Dispose();
                image.Dispose();
            }

        }

        /**//// <summary>
        
/// 得到验证码图片的长度
        
/// </summary>
        
/// <param name="validateNumLength">验证码的长度</param>
        
/// <returns></returns>

        public static int GetImageWidth(int validateNumLength)
        ...{
            return (int)(validateNumLength*15);
        }

        /**//// <summary>
        
/// 得到验证码的高度
        
/// </summary>
        
/// <returns></returns>

        public static double GetImageHeight()
        ...{
            return 25;
        }

        生成不重复的字条串#region 生成不重复的字条串
        private  string RandomKey(int b,int e)
        ...{
            
            return DateTime.Now.ToString("yyyyMMdd-HHmmss-fff-")+this.getRandomID(b,e); 
            
        }

        
        private int getRandomID(int minValue,int maxValue)
        ...{
            Random ri=new Random(unchecked((int)DateTime.Now.Ticks));
            int k=ri.Next(minValue,maxValue);
            return k;
        }

        private  string GuidString
        ...{
            get
            ...{
                return Guid.NewGuid().ToString();
            }

        }


        #endregion

    }

}

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值