C# -(二)最详细基础语法

2023-11-10

C# 基础语法 学习思维导图

在这里插入图片描述

一、类型系统

  • C# 有两种类型:值类型和引用类型。
  • 值类型的变量直接包含数据,而引用类型的变量则存储对数据(称为“对象”)的引用。
  • 对于引用类型,两个变量可以引用同一个对象;对一个变量执行的运算可能会影响另一个变量引用的对象。
  • 值类型,每个变量都有自己的数据副本;因此,对一个变量执行的运算不会影响另一个变量(ref 和 out 参数变量除外)

注意:在 C# 的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从 Object 继承的。

在这里插入图片描述

1. 值类型

1.1简单类型

1.1.1 整数类型

整型类型的特征

在这里插入图片描述
在上表中,最左侧列中的每个 C# 类型关键字都是相应 .NET 类型的别名。 它们是可互换的。 例如,以下声明声明了相同类型的变量:

int a = 123;
System.Int32 b = 123;

举个栗子

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            /**
             * 计算机中的整数分为两类:
             *  (1)不带符号位的整数(unsigned integer,也称为无符号整数),
             *      此类整数一定是正整数;
             *  (2)带符号位的整数(signed integer),
             *      此类整数可以表示正整数,
             *      又可以表示负整数
             */
            sbyte b = -128;// 有符号 8 位整数 范围:-128 到 127
            byte ub = 255; // 无符号的 8 位整数 范围:0 到 255
            //错误赋值 byte errorb = 300;   
            // CS0031: Constant value '300' cannot be converted to a 'byte'

            Console.WriteLine("sbyte="+b); //sbyte=-128
            Console.WriteLine("byte="+ub); //byte=255

            short ss = -32768; // 有符号 16 位整数 范围:-32,768 到 32,767
            ushort us = 65535; // 有符号 16 位整数 范围:0 到 65,535

            Console.WriteLine("short="+ss); //short=-32768
            Console.WriteLine("ushort="+us); //ushort=65535

            int i = -2147483648; // 带符号的 32 位整数 范围:-2,147,483,648 到 2,147,483,647
            uint ui = 4294967295; // 无符号的 32 位整数 范围:0 到 4,294,967,295

            Console.WriteLine("int="+i); //int=-2147483648
            Console.WriteLine("uint="+ui); //uint=4294967295

            long l = -9223372036854775; // 带符号的 64 位整数 范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
            ulong ul = 18446744073709551615; // 带符号的 64 位整数 范围:0 到 18,446,744,073,709,551,615
            
            Console.WriteLine("long="+l); //long=-9223372036854775
            Console.WriteLine("ulong="+ul); //ulong=18446744073709551615

        }
    }
}
1.1.2 字符类型
  • 命名空间:
    System
  • 程序集:
    System.Runtime.dll
public struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
  1. 继承 Object -> ValueType -> Char
  2. 实现 IComparable IComparable IConvertible IEquatable

举个栗子(一些字符方法)

using System;

public class CharStructureSample
{
    public static void Main()
    {
        char chA = 'A';
        char ch1 = '1';
        string str = "test string";

        Console.WriteLine(chA.CompareTo('B'));          //-----------  Output: "-1" (meaning 'A' is 1 less than 'B')
        Console.WriteLine(chA.Equals('A'));             //-----------  Output: "True"
        Console.WriteLine(Char.GetNumericValue(ch1));   //-----------  Output: "1"
        Console.WriteLine(Char.IsControl('\t'));        //-----------  Output: "True"
        Console.WriteLine(Char.IsDigit(ch1));           //-----------  Output: "True"
        Console.WriteLine(Char.IsLetter(','));          //-----------  Output: "False"
        Console.WriteLine(Char.IsLower('u'));           //-----------  Output: "True"
        Console.WriteLine(Char.IsNumber(ch1));          //-----------  Output: "True"
        Console.WriteLine(Char.IsPunctuation('.'));     //-----------  Output: "True"
        Console.WriteLine(Char.IsSeparator(str, 4));    //-----------  Output: "True"
        Console.WriteLine(Char.IsSymbol('+'));          //-----------  Output: "True"
        Console.WriteLine(Char.IsWhiteSpace(str, 4));   //-----------  Output: "True"
        Console.WriteLine(Char.Parse("S"));             //-----------  Output: "S"
        Console.WriteLine(Char.ToLower('M'));           //-----------  Output: "m"
        Console.WriteLine('x'.ToString());              //-----------  Output: "x"
    }
}
1.1.3 浮点数值类型
  1. 浮点数值类型表示实数。
  2. 所有浮点型数值类型均为值类型。
  3. 它们还是简单类型,可以使用文本进行初始化。
  4. 所有浮点数值类型都支持算术、比较和相等运算符。

浮点类型的特征

在这里插入图片描述
在上表中,最左侧列中的每个 C# 类型关键字都是相应 .NET 类型的别名。 它们是可互换的。 例如,以下声明声明了相同类型的变量:

double a = 12.3;
System.Double b = 12.3;

注意:decimal与 float 和 double 相比,decimal 类型具有更高的精度和更小的范围,因此它适合于财务和货币计算

举个栗子

	/**
	 * 基础浮点类型赋值
	 * 将 _ 用作数字分隔符(从 C# 7.0 开始提供支持)。 
	 * 可以将数字分隔符用于所有类型的数字文本。
	 */
	double d = 3D;
	d = 4d;
	d = 3.934_001;
	
	float f = 3_000.5F;
	f = 5.4f;
	
	decimal myMoney = 3_000.5m;
	myMoney = 400.75M;
	
	/**
	 * 1.可在表达式中将整型类型与 float 和 double 类型混合使用功能。 
	 *  在这种情况下,整型类型隐式转换为其中一种浮点类型且必要时,float 类型隐式转换为 double。 
	 *  此表达式的计算方式如下:
	 *      (1)如果表达式中有 double 类型,则表达式在关系比较和相等比较中求值得到 double 或 bool。
	 *      (2)如果表达式中没有 double 类型,则表达式在关系比较和相等比较中求值得到 float 或 bool。
	 * 2.你还可在表达式中混合使用整型类型和 decimal 类型。 
	 *  在这种情况下,整型类型隐式转换为 decimal 类型,并且表达式在关系比较和相等比较中求值得到 decimal 或 bool。
	 *  注意:不能在表达式中将 decimal 类型与 float 和 double 类型混合使用。 
	 *  在这种情况下,
	 *      如果你想要执行算术运算、比较运算或相等运算,
	 *      则必须将操作数显式转换为 decimal 或反向转换,
	 *  如下例所示:
	 */
	double a = 1.0;
	decimal b = 2.1m;
	Console.WriteLine(a + (double)b);
	Console.WriteLine((decimal)a + b);

1.2 枚举类型

枚举类型 是由基础整型数值类型的一组命名常量定义的值类型。

	/**
     *默认情况下,枚举成员的关联常数值为类型 int;
     *它们从零开始,并按定义文本顺序递增 1。
     */
    enum Season
    {
        Spring,
        Summer,
        Autumn,
        Winter
    }
    //可以显式指定任何其他整数数值类型作为枚举类型的基础类型
    enum ErrorCode : ushort
    {
        None = 0,
        Unknown = 1,
        ConnectionLost = 100,
        OutlierReading = 200
    }
    //转换和使用
    public class EnumConversionExample
    {
        public static void Main()
        {
            Season a = Season.Autumn;
            Console.WriteLine($"Integral value of {a} is {(int)a}");  // output: Integral value of Autumn is 2

            var b = (Season)1;
            Console.WriteLine(b);  // output: Summer

            var c = (Season)4;
            Console.WriteLine(c);  // output: 4
        }
    }

1.3 结构类型

结构类型(“structure type”或“struct type”)是一种可封装数据和相关功能的值类型

public struct Coords
{
    public Coords(double x, double y)
    {
        X = x;
        Y = y;
    }

    public double X { get; }
    public double Y { get; }

    public override string ToString() => $"({X}, {Y})";
}

注意:

  • 结构类型具有值语义 。
  • 也就是说,结构类型的变量包含类型的实例。
  • 默认情况下,在分配中,通过将参数传递给方法并返回方法结果来复制变量值。
  • 对于结构类型变量,将复制该类型的实例。

1.4 可为空的值类型

C# 8.0 引入了可为空引用类型功能。

可为 null 值类型 T? 表示其基础值类型 T 的所有值及额外的 null 值。
例如,可以将以下三个值中的任意一个指定给 bool? 变量:true、false 或 null。
基础值类型 T 本身不能是可为空的值类型。

	/**
	 * 声明和赋值
	 *  由于值类型可隐式转换为相应的可为空的值类型,
	 *  因此可以像向其基础值类型赋值一样,向可为空值类型的变量赋值。 
	 *  还可分配 null 值。
	 */
	double? pi = 3.14;
	char? letter = 'a';
	
	int m2 = 10;
	int? m = m2;
	
	bool? flag = null;
	
	// An array of a nullable value type:
	int?[] arr = new int?[10];
	
	/**
	 * 检查可为空值类型的实例
	 *  从 C# 7.0 开始,可以将 is 运算符与类型模式 结合使用,
	 *  既检查 null 的可为空值类型的实例,
	 *  又检索基础类型的值
	 */
	int? a = 42;
	if (a is int valueOfA)
	{
	    Console.WriteLine($"a is {valueOfA}");
	}
	else
	{
	    Console.WriteLine("a does not have a value");
	}
	// Output:
	// a is 42
	
	/**
	 * 始终可以使用以下只读属性来检查和获取可为空值类型变量的值:
	 *  Nullable<T>.HasValue 指示可为空值类型的实例是否有基础类型的值。
	 *  如果 HasValue 为 true,则 Nullable<T>.Value 获取基础类型的值。 
	 *  如果 HasValue 为 false,则 Value 属性将引发 InvalidOperationException。
	 */
	int? b = 10;
	if (b.HasValue)
	{
	    Console.WriteLine($"b is {b.Value}");
	}
	else
	{
	    Console.WriteLine("b does not have a value");
	}
	// Output:
	// b is 10
	
	/**
	 * 还可将可为空的值类型的变量与 null 进行比较,而不是使用 HasValue 属性
	 */
	int? c = 7;
	if (c != null)
	{
	    Console.WriteLine($"c is {c.Value}");
	}
	else
	{
	    Console.WriteLine("c does not have a value");
	}
	// Output:
	// c is 7

1.5 元祖类型

元组功能在 C# 7.0 及更高版本中可用,它提供了简洁的语法,用于将多个数据元素分组成一个轻型数据结构

	/**
	 * 如何声明元组变量、对它进行初始化并访问其数据成员
	 */
	(double, int) t1 = (4.5, 3);
	Console.WriteLine($"Tuple with elements {t1.Item1} and {t1.Item2}.");
	// Output:
	// Tuple with elements 4.5 and 3.
	
	(double Sum, int Count) t2 = (4.5, 3);
	Console.WriteLine($"Sum of {t2.Count} elements is {t2.Sum}.");
	// Output:
	// Sum of 3 elements is 4.5.
	/**
	 * 如前面的示例所示,
	 * 若要定义元组类型,
	 * 需要指定其所有数据成员的类型,
	 * 或者,
	 * 可以指定字段名称。 
	 * 虽然不能在元组类型中定义方法,
	 * 但可以使用 .NET 提供的方法
	 */
	(double, int) t = (4.5, 3);
	Console.WriteLine(t.ToString());
	Console.WriteLine($"Hash code of {t} is {t.GetHashCode()}.");
	// Output:
	// (4.5, 3)
	// Hash code of (4.5, 3) is 718460086.
            

举个栗子

var xs = new[] { 4, 7, 9 };
var limits = FindMinMax(xs);
Console.WriteLine($"Limits of [{string.Join(" ", xs)}] are {limits.min} and {limits.max}");
// Output:
// Limits of [4 7 9] are 4 and 9

var ys = new[] { -9, 0, 67, 100 };
var (minimum, maximum) = FindMinMax(ys);
Console.WriteLine($"Limits of [{string.Join(" ", ys)}] are {minimum} and {maximum}");
// Output:
// Limits of [-9 0 67 100] are -9 and 100

(int min, int max) FindMinMax(int[] input)
{
    if (input is null || input.Length == 0)
    {
        throw new ArgumentException("Cannot find minimum and maximum of a null or empty array.");
    }

    var min = int.MaxValue;
    var max = int.MinValue;
    foreach (var i in input)
    {
        if (i < min)
        {
            min = i;
        }
        if (i > max)
        {
            max = i;
        }
    }
    return (min, max);
}

2. 值类型

2.1 类类型(class)

class TestClass
{
    // Methods, properties, fields, events, delegates
    // and nested classes go here.
}

在 C# 中仅允许单一继承。 也就是说,一个类仅能从一个基类继承实现。 但是,一个类可实现多个接口。

在这里插入图片描述

举个例子

	/**
    *下面的示例说明如何声明类字段、构造函数和方法。 
    *该示例还说明如何实例化对象及如何打印实例数据。 
    *本例声明了两个类。 
    *第一个类 Child 包含两个私*有字段(name 和 age)、两个公共构造函数和一个公共方法。 
    *第二个类 StringTest 用于包含 Main。
    */
    class Child
    {
        private int age;
        private string name;

        // Default constructor:
        public Child()
        {
            name = "N/A";
        }

        // Constructor:
        public Child(string name, int age)
        {
            this.name = name;
            this.age = age;
        }

        // Printing method:
        public void PrintChild()
        {
            Console.WriteLine("{0}, {1} years old.", name, age);
        }
    }

    class StringTest
    {
        static void Main()
        {
            // Create objects by using the new operator:
            Child child1 = new Child("Craig", 11);
            Child child2 = new Child("Sally", 10);

            // Create an object using the default constructor:
            Child child3 = new Child();

            // Display results:
            Console.Write("Child #1: ");
            child1.PrintChild();
            Console.Write("Child #2: ");
            child2.PrintChild();
            Console.Write("Child #3: ");
            child3.PrintChild();
        }
    }
    /* Output:
        Child #1: Craig, 11 years old.
        Child #2: Sally, 10 years old.
        Child #3: N/A, 0 years old.
    */

2.2 接口

  1. 接口定义协定。
  2. 实现该协定的任何 class 或 struct 必须提供接口中定义的成员的实现。

注意:从 C# 8.0 开始,接口可为成员定义默认实现。 它还可以定义 static 成员,以便提供常见功能的单个实现

interface ISampleInterface
{
    void SampleMethod();
}

class ImplementationClass : ISampleInterface
{
    // Explicit interface member implementation:
    void ISampleInterface.SampleMethod()
    {
        // Method implementation.
    }

    static void Main()
    {
        // Declare an interface instance.
        ISampleInterface obj = new ImplementationClass();

        // Call the member.
        obj.SampleMethod();
    }
}

举个栗子

interface IPoint
{
   // Property signatures:
   int X
   {
      get;
      set;
   }

   int Y
   {
      get;
      set;
   }

   double Distance
   {
       get;
   }
}

class Point : IPoint
{
   // Constructor:
   public Point(int x, int y)
   {
      X = x;
      Y = y;
   }

   // Property implementation:
   public int X { get; set; }

   public int Y { get; set; }

   // Property implementation
   public double Distance =>
      Math.Sqrt(X * X + Y * Y);

}

class MainClass
{
   static void PrintPoint(IPoint p)
   {
      Console.WriteLine("x={0}, y={1}", p.X, p.Y);
   }

   static void Main()
   {
      IPoint p = new Point(2, 3);
      Console.Write("My Point: ");
      PrintPoint(p);
   }
}
// Output: My Point: x=2, y=3

2.3 数组类型

  1. 可以将同一类型的多个变量存储在一个数组数据结构中。
  2. 通过指定数组的元素类型来声明数组。
  3. 如果希望数组存储任意类型的元素,可将其类型指定为 object。
type[] arrayName;

举个栗子

class TestArraysClass
{
    static void Main()
    {
        // Declare a single-dimensional array of 5 integers.
        int[] array1 = new int[5];

        // Declare and set array element values.
        int[] array2 = new int[] { 1, 3, 5, 7, 9 };

        // Alternative syntax.
        int[] array3 = { 1, 2, 3, 4, 5, 6 };

        // Declare a two dimensional array.
        int[,] multiDimensionalArray1 = new int[2, 3];

        // Declare and set array element values.
        int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };

        // Declare a jagged array.
        int[][] jaggedArray = new int[6][];

        // Set the values of the first array in the jagged array structure.
        jaggedArray[0] = new int[4] { 1, 2, 3, 4 };
    }
}

特点

  • 数组可以是一维、多维或交错的。
  • 创建数组实例时,将建立纬度数量和每个纬度的长度。 这些值在实例的生存期内无法更改。
  • 数值数组元素的默认值设置为零,而引用元素设置为 null。
  • 交错数组是数组的数组,因此其元素为引用类型且被初始化为 null。
  • 数组从零开始编制索引:包含 n 元素的数组从 0 索引到 n-1。
  • 数组元素可以是任何类型,其中包括数组类型。
  • 数组类型是从抽象的基类型 Array 派生的引用类型。 由于此类型实现 IEnumerable 和 IEnumerable,因此可以在 C# 中的所有数组上使用 foreach 迭代。

2.4 委托(这个内容比较多)

  1. 类型的声明与方法签名相似。
  2. 它有一个返回值和任意数目任意类型的参数
public delegate void MessageDelegate(string message);
public delegate int AnotherDelegate(MyType m, long num);
  • 在 .NET 中,System.Action 和 System.Func 类型为许多常见委托提供泛型定义。
  • 可能不需要定义新的自定义委托类型。
  • 相反,可以创建提供的泛型类型的实例化。

二、 类型和成员

在这里插入图片描述

三、程序构建基块

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# -(二)最详细基础语法 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le

随机推荐

  • 微信小程序导出当前画布指定区域的内容并生成图片保存到本地相册(canvas)

    最近在学小程序 在把当前画布指定区域的内容导出并生成图片保存到本地这个知识点上踩坑了 这里用到的方法是 wx canvasToTempFilePath 该方法作用是把当前画布指定区域的内容导出生成指定大小的图片 并返回文件路径 详情 看文档
  • Idea快捷键大全(Windows)

    转载 Idea快捷键大全 Windows Lymanyu的博客 CSDN博客 idea快捷键
  • spring+shiro多节点session共享

    shiro我就不多介绍了 我的方案是重写 shiro的sessionDAO 把session存储到redis上 直接上代码 一 spring中配置
  • Node.js 利用Promise对象并发写入流、读取流(Stream)

    上篇文章我们用高阶函数 函数柯里化 实现并发文件读取流 写入流 今天 我们用另外一种方法实现 let fs require fa 写一个通用的读取函数 返回promise对象 function getFile filename return
  • php 下载七牛文件上传,laravel下封装的七牛云图片上传下载方法

    fileName 文件名 filePath 文件路径 我用的是七牛云私有空间 如果用公有空间也一样 只是不需要下载方法而已
  • 042_前端规范 2021-06-03

    042 前端规范 最终目的 去除冗余 让代码易于维护 常见代码片段 遍历数组 1 2 3 forEach function value index console log value 映射新数组 arr 1 2 3 map v gt v 2
  • 如何在word中的图片上画圈标注_怎么在word画圈标注 如何在word图片中进行画圈标示...

    例如上面在图片上画圈效果的制作方法 1 单击插入 形状 线条 椭圆工具 2 拖动鼠标 在图片所需要的位置绘制一个适当大小的圆 3 单击绘图工具格式 形状填充 无填充颜色 4 单击绘图工具格式 形状轮廓 红色即可 如图所示 怎么用Word画简
  • JAVA基础之接口

    什么是接口 接口是一种特殊的类 但与类有本质区别 类中有成员方法和成员变量但是接口中只有常量和用abstract定义的方法 接口的声明采用关键字interface 格式 修饰符 interface 接口名 方法体 接口可以多继承 使用关键字
  • easypoi Excel导入导出 (工具类)

    1 用到的jar 红色的必须的 下面那些是运行起来 缺哪个就导哪个 如果报错提示没有这个方法的话 重启Tomcat 还不好使就是jar包版本不对 找个高点的版本 easypoi annotation 3 1 0 jar easypoi ba
  • SQL server数据库与My sql数据库的区别?

    在我们生活中无时无刻不需要使用到数据库 网络爬虫等一系列用处 那数据库到底是什么呢 我们一起接着往下看 数据库是存放数据的仓库 存储空间很大 可千万条 上亿条数据 但是数据库并不是随意地将数据进行存放 是有一定规则的 否则查询的效率会很低
  • Python最短代码实现人脸识别,打造自己专用人脸识别!

    对于类似于人脸的对象 你或许需要不少于 6000个分类器 每一个都需要成功匹配 当然 有容错率 才能检测出人脸 但这有一个问题 对于人脸识别 算法从左上角开始计算一个个数据块 不停问 这是张脸吗 每个数据块有超过 6000个检测 加起来的计
  • GM(1,1)预测模型的残差检验、关联度检验、后验差检验代码

    在建立好灰色模型后 首先要进行模型的检验 以检验模型的效果 一般有三种检验方法 相对残差检验 关联度检验 后验差检验 当三种检验全部通过时 表明模型的效果较好 才可以使用模型进行后续的预测 否则 将要对模型进行残差修正 直到三种检验均通过为
  • 引入PageHelper未进行分页操作SQL自动携带Limit 分页参数

    使用环境 PageHelper 版本 5 2 0 数据库类型和版本 mysql5 7 JDBC URL jdbc mysql x x x characterEncoding UTF 8 useAffectedRows true allowM
  • springboot序列化问题

    springboot的Long 前后端交互失去精度 BigDecimal序列化 精度问题 为空字段不序列化问题 方案1 为空字段序列化 always application yml配置 为空字段不序列化 non null spring ja
  • 【Elasticsearch】Elasticsearch命令行操作

    文章目录 Elasticsearch 一 ES介绍 二 安装Elasticsearch 三 安装Kibana 四 介绍ES中的一些概念 集群 节点 索引 数据库 文档 数据库中表中一条记录 分片 副本 五 操作ES 5 1索引 5 1 1
  • 【工具】IDEA下ANTLR Preview的使用

    1 概述 打开界面 如何查看树形结构呢 输入一个语句你想解析的语句放进去 发现没什么卵用 此时打开 g4文件
  • SQL注入的几种类型和原理

    在上一章节中 介绍了SQL注入的原理以及注入过程中的一些函数 但是具体的如何注入 常见的注入类型 没有进行介绍 这一章节我想对常见的注入类型进行一个了解 能够自己进行注入测试 注意 以下这些类型实在slqi labs环境 也就是MySQL
  • k8s--基础--22.12--storageclass--类型--Portworx 卷

    k8s 基础 22 12 storageclass 类型 Portworx 卷 1 案例 apiVersion storage k8s io v1 kind StorageClass metadata name portworx io pr
  • 蓝桥杯2020.07省赛B组 Java

    蓝桥杯2020 07省赛B组 整除序列 大数模拟 解码 遍历枚举 走方格 简单的dp 整数拼接 网络分析 超级胶水 整除序列 大数模拟 有一个序列 序列的第一个数是 n 后面的每个数是前一个数整除 2 请输出这个序列中值为正数的项 输入格式
  • C# -(二)最详细基础语法

    C 基础语法 学习思维导图 一 类型系统 C 有两种类型 值类型和引用类型 值类型的变量直接包含数据 而引用类型的变量则存储对数据 称为 对象 的引用 对于引用类型 两个变量可以引用同一个对象 对一个变量执行的运算可能会影响另一个变量引用的