不断完备中,生成唯风姿罗曼蒂克订单号

作者:云顶集团线路检测

C#中的base关键字表示基类,使用base关键字能够调用基类的构造函数、属性和方式。

 1     /// <summary>
 2     /// 生成唯一数
 3     /// </summary>
 4     public class UniqueData
 5     {
 6         private static object obj = new object();
 7         private static int GuidInt { get { return Guid.NewGuid().GetHashCode(); } }
 8         private static string GuidIntStr { get { return Math.Abs(GuidInt).ToString(); } }
 9 
10         /// <summary>
11         /// 生成
12         /// </summary>
13         /// <param name="mark">前缀</param>
14         /// <param name="timeType">时间精确类型  1 日,2 时,3 分,4 秒(默认) </param>
15         /// <param name="id">id 小于或等于0则随机生成id</param>
16         /// <returns></returns>
17         public static string Gener(string mark, int timeType = 4, int id = 0)
18         {
19             lock (obj)
20             {
21                 var number = mark;
22                 var ticks = (DateTime.Now.Ticks - GuidInt).ToString();
23                 int fillCount = 0;//填充位数
24 
25                 number += GetTimeStr(timeType, out fillCount);
26                 if (id > 0)
27                 {
28                     number += ticks.Substring(ticks.Length - (fillCount + 3)) + id.ToString().PadLeft(10, '0');
29                 }
30                 else
31                 {
32                     number += ticks.Substring(ticks.Length - (fillCount + 3)) + GuidIntStr.PadLeft(10, '0');
33                 }
34                 return number;
35             }
36         }
37 
38         /// <summary>
39         /// 生成
40         /// </summary>
41         /// <param name="mark">前缀</param>
42         /// <param name="timeType">时间精确类型  1 日,2 时,3 分,4 秒(默认)</param>
43         /// <param name="id">id 小于或等于0则随机生成id</param>
44         /// <returns></returns>
45         public static string GenerLong(string mark, int timeType = 4, long id = 0)
46         {
47             lock (obj)
48             {
49                 var number = mark;
50                 var ticks = (DateTime.Now.Ticks - GuidInt).ToString();
51                 int fillCount = 0;//填充位数
52 
53                 number += GetTimeStr(timeType, out fillCount);
54                 if (id > 0)
55                 {
56                     number += ticks.Substring(ticks.Length - fillCount) + id.ToString().PadLeft(19, '0');
57                 }
58                 else
59                 {
60                     number += GuidIntStr.PadLeft(10, '0') + ticks.Substring(ticks.Length - (9 + fillCount));
61                 }
62                 return number;
63             }
64         }
65 
66         /// <summary>
67         /// 获取时间字符串
68         /// </summary>
69         /// <param name="timeType">时间精确类型  1 日,2 时,3 分,4 秒(默认)</param>
70         /// <param name="fillCount">填充位数</param>
71         /// <returns></returns>
72         private static string GetTimeStr(int timeType, out int fillCount)
73         {
74             var time = DateTime.Now;
75             if (timeType == 1)
76             {
77                 fillCount = 6;
78                 return time.ToString("yyyyMMdd");
79             }
80             else if (timeType == 2)
81             {
82                 fillCount = 4;
83                 return time.ToString("yyyyMMddHH");
84             }
85             else if (timeType == 3)
86             {
87                 fillCount = 2;
88                 return time.ToString("yyyyMMddHHmm");
89             }
90             else
91             {
92                 fillCount = 0;
93                 return time.ToString("yyyyMMddHHmmss");
94             }
95         }
96     }

SHA1Helper(对字符串进行SHA1卡塔 尔(英语:State of Qatar):

 2. 随着在Main入口函数深入分析lognet4.config文本。

  Visual C# Express 和 Visual Web Developer Express 版本是 Visual Studio 的定排版本,且有着相近的外观和感观。它们保留 Visual Studio 的绝大大多效果与利益。

 

 

  2,增添命名空间

  

  C#历史
  壹玖玖捌年CEOL这一个种类是C#言语的前身,由微软 Anders Hejlsberg 和她的协会在 .Net 框架开拓时期支出的
  二〇〇一年行业内部揭露

在现成类(基类、父类)上建构新类(派生类、子类)的管理进度称为世袭。派生类能自动获取基类的除了构造函数和析构函数以外的装有成员,能够在派生类中增加新的天性和情势增添其职能。

不断完备中,生成唯风姿罗曼蒂克订单号。基于GUID+DateTime.Now.Ticks生产唯风姿罗曼蒂克订单号

作者们在编写程序的长河中,常常会用到一些办法,作者只是把这个方式结合一下,方便使用,方今有md5,sha1,aes加解密,居民身份证验证,敏感词过滤,文件减弱,图片与base64相互转变,时间戳与时间互相转变,轻巧的http诉求,轻巧的ftp上传下载,依照初始和结尾字符串截取字符串等等,后续准备把日志记录,支付宝和Wechat支付进行增多,方便使用,就算您在编制程序的进度中有比较常用的不二法门,能够建议来,大家得以协同来康健这一个帮衬类,就算有不许绳的地点,恳请指正商议,多谢大家,喜欢能够共享哦。

 3.  实例ILog,发轫记录日志,在那之中sendEmailrError为lognet4.config文件中logger的name名称。

 

接轨的性状:

自定义加密:

  static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void Main()
        {
            string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
            string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);
            string configFilePath = assemblyDirPath + "\log4net.config";
            XmlConfigurator.ConfigureAndWatch(new FileInfo(configFilePath));

            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new SendEmailService() 
            };
            ServiceBase.Run(ServicesToRun);
        }
    }

3、编辑器
  微软(Microsoft卡塔 尔(英语:State of Qatar)提供了下列用于 C# 编制程序的开采工具:

单生机勃勃性:只好从一个基类中世袭,不能够并且继续多个基类世袭中的访谈修饰符base和this关键字基类的构造函数和析构函数不能够被持续的。但能够运用首要字base来三番两次基类的构造函数。

github:

    1.  笔者的lognet4.config文件配置内容如下:

  是一门高端Computer语言
  他的开销情势更就像人类和社会的思辨情势,有利于提升费用功用

namespace InheritanceApplication
{
   class Shape 
   {
      public void setWidth(int w)
      {
         width = w;
      }
      public void setHeight(int h)
      {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // 派生类
   class Rectangle: Shape
   {
      public int getArea()
      { 
         return (width * height); 
      }
   }

   class RectangleTester
   {
      static void Main(string[] args)
      {
         Rectangle Rect = new Rectangle();

         Rect.setWidth(5);
         Rect.setHeight(7);

         // 打印对象的面积
         Console.WriteLine("总面积: {0}",  Rect.getArea());
         Console.ReadKey();
      }
   }
}

 

    

1、C#言语简要介绍

可传递性:C从B派生,B从A派生,那么C不止继承B也世袭A。

理所必然你也足以协和定义需求过滤的词汇,以竖线 ‘|’ 分割:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
 </configSections>

  <log4net>
    <logger name="sendEmailrError">
      <level value="ALL"/>
      <!--ALL DEBUG INFO WARN ERROR FATAL OFF-->
      <appender-ref ref="RollingLogFileAppender"/> 
    </logger>

    <!--<logger name="ugmrob2bLoggerInfo">
      <level value="ALL"/>
      --><!--ALL DEBUG INFO WARN ERROR FATAL OFF--><!--
      <appender-ref ref="LoggerInfo"/>
    </logger>-->

    <appender name="LoggerInfo" type="log4net.Appender.RollingFileAppender"> 
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--存放日志的路径-->
      <param name="File" value="E:/Log/LogInfo/"/>
      <!--日志文件中追加-->
      <param name="AppendToFile" value="true"/>
      <!--日期文件是否固定不变-->
      <param name="StaticLogFileName" value="false"/>
      <!--最多保存多少天的记录-->
      <param name="MaxSizeRollBackups" value="100"/>
      <param name="MaximumFileSize" value="5MB"/>
      <!--日志名称-->
      <param name="DatePattern" value="yyyy-MM-dd".log""/>
      <!--日志根据日期滚动-->
      <param name="RollingStyle" value="Date"/>

      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n异常时间: %d%n记录器: %c%n异常信息: %m%n异常位置:[%t] %-5p [%l]%n"/>
      </layout>
    </appender>

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--存放日志的路径-->
      <param name="File" value="E:/Log/LogError/"/>
      <!--日志文件中追加-->
      <param name="AppendToFile" value="true"/>
      <!--日期文件是否固定不变-->
      <param name="StaticLogFileName" value="false"/>
      <!--最多保存多少天的记录-->
      <param name="MaxSizeRollBackups" value="100"/>
      <param name="MaximumFileSize" value="5MB"/>
      <!--日志名称-->
      <param name="DatePattern" value="yyyy-MM-dd".log""/>
      <!--日志根据日期滚动-->
      <param name="RollingStyle" value="Date"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--<param name="ConversionPattern" value="%n异常时间: %d%n记录器: %c%n异常信息: %m%n异常位置:[%t] %-5p [%l]%n"/>-->
        <conversionPattern value="%n记录时间:%date 线程ID:[%thread] 日志级别:%-5level  %n错误描述:%message%newline" />

      </layout>
      <!--<filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG"/>
        <param name="LevelMax" value="FATAL"/>
      </filter>-->
    </appender>

  </log4net>

</configuration>

    Visual Studio  (VS)
    Visual C#  Express (VCE)
    Visual Web Developer
  后边多少个是免费使用的,可从微软官方网址下载。这一个工具可用来编写各个C# 程序。

图片 1

log4net.ILog log = log4net.LogManager.GetLogger("sendEmailrError");
log.Error("错误信息");

 

图片 2

    近期写了个准期邮件推送的劳动,当使用lognet4记录日志时,发掘日志并不曾记录。后来晓得windows 服务经常暗中同意是在C:WindowsSystem 或是C:WindowsSystem32,而小编辈和煦的服务程序日常是身处别的的目录,那样log4net.config文件中的配置路线将不恐怕正确深入分析。所以就不可能记录日志。本来小编的lognet4文本与劳务文件位于同一目录,后来本人就把lognet4.config文件放在了程序exe所在的目录。

  也足以选择基本的公文编辑器(举例 Notepad卡塔尔编写 C# 源代码文件,并接纳命令行编写翻译器(.NET 框架的生机勃勃局地卡塔 尔(阿拉伯语:قطر‎编写翻译代码为组件。

只需三步走,大家就足以选择那么些艺术了。

 

 StringHelper(根据伊始和终极的字符串来截取字符串卡塔 尔(英语:State of Qatar):

2、VS集成开荒条件
  集成开垦情况是我们用来编制程序的工具,他得以帮助大家,将用C#高端语言编写的顺序,飞速编写翻译成Computer识其他言语
  VS是微软的visual studio,称为VS,又称.net

   var selfKey = "abcdefghijklmnop";
   var selfIV = new byte[] { 0x7f, 0x0a, 0x2d, 0x96, 0x94, 0xa5, 0xc2, 0x7b, 0xaa, 0x89, 0x00, 0x8b, 0xf3, 0xab, 0x15, 0xfd, };
   Console.WriteLine($"Vju1+MLzN5VUlNua+HhMkA==:{AESHelper.Decrypt("Vju1+MLzN5VUlNua+HhMkA==", selfKey, selfIV)}");

  C#含义
  C#是C语言和C++语言功底上成立的一门语言,
  C语言是面向进度语言
  C++是半面向进程半面向对象的语言
  C#面向对象的语言,有大器晚成对最主要的机能:
    布尔条件(Boolean Conditions卡塔尔国
    自动垃圾回笼(Automatic Garbage Collection卡塔 尔(英语:State of Qatar)
    标准库(Standard Library)
    组件版本(Assembly Versioning卡塔 尔(阿拉伯语:قطر‎
    属性(Properties)和事件(Events)
    委托(Delegates卡塔尔国和事件处理(伊芙nts Management卡塔尔
    易于使用的泛型(Generics卡塔 尔(阿拉伯语:قطر‎
    索引器(Indexers)
    条件编译(Conditional Compilation卡塔 尔(阿拉伯语:قطر‎
    轻巧的四线程(Multithreading卡塔尔
    LINQ 和 Lambda 表达式
    集成 Windows

 

  C#微型机语言

Console.WriteLine($"123456,{CheckHelper.IsIDNumber("123456")}");
Console.WriteLine($"123456,{CheckHelper.IsMobile("123456")}");

本文由云顶集团线路检测发布,转载请注明来源

关键词: