我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#中的LINQ to Objects实例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#中的LINQ to Objects实例分析

这篇文章主要介绍了C#中的LINQ to Objects实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中的LINQ to Objects实例分析文章都会有所收获,下面我们一起来看看吧。

Linq和反射

.NET Framework 类库反射 API 可用于检查 .NET 程序集中的元数据,以及创建位于该程序集中的类型、类型成员、参数等等的集合。 因为这些集合支持泛型 IEnumerable 接口,所以可以使用 LINQ 查询它们。

下面的示例演示了如何将 LINQ 与反射配合使用以检索有关与指定搜索条件匹配的方法的特定元数据。 在这种情况下,该查询将在返回数组等可枚举类型的程序集中查找所有方法的名称。

该示例使用 GetTypes 方法返回指定程序集中的类型的数组。 将应用 where 筛选器,以便仅返回公共类型。 对于每个公共类型,子查询使用从 GetMethods 调用返回的 MethodInfo 数组生成。 筛选这些结果,以仅返回其返回类型为数组或实现 IEnumerable 的其他类型的方法。 最后,通过使用类型名称作为键来对这些结果进行分组。

Assembly assembly = Assembly.Load("System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken= b77a5c561934e089");var pubTypesQuery = from type in assembly.GetTypes()                    where type.IsPublic                    from method in type.GetMethods()                    where method.ReturnType.IsArray == true                                               || (method.ReturnType.GetInterface(typeof(System.Collections.Generic.IEnumerable<>).FullName) != null && method.ReturnType.FullName != "System.String")                    group method.ToString() by type.ToString();foreach (var groupOfMethods in pubTypesQuery){    Console.WriteLine("Type: {0}", groupOfMethods.Key);    foreach (var method in groupOfMethods)    {        Console.WriteLine("  {0}", method);    }}Console.WriteLine("Press any key to exit");

LINQ 和字符串

1、LINQ 和文件目录

许多文件系统操作实质上是查询,因此非常适合使用 LINQ 方法。

本部分中的查询是非破坏性查询。 它们不用于更改原始文件或文件夹的内容。 这遵循了查询不应引起任何副作用这条规则。 通常,修改源数据的任何代码(包括执行创建/更新/删除运算符的查询)应与只查询数据的代码分开。

实例1、如何查询具有指定属性或名称的文件

此示例演示如何查找指定目录树中具有指定文件扩展名(例如“.txt”)的所有文件,还演示如何根据创建时间返回树中最新或最旧的文件。

//该查询将所有生产的完整路径。txt文件指定的文件夹包括子文件夹下。const string path = @"C:\Program Files (x86)\Microsoft Visual Studio 14.0\";//取文件系统快照var dir = new DirectoryInfo(path);//该方法假定应用程序在指定路径下的所有文件夹都具有搜索权限。var files = dir.GetFiles("*.*", SearchOption.AllDirectories);//创建查询var fileQuery = from file in files                where file.Extension == ".html"                orderby file.Name                select file;//执行查询foreach (var file in fileQuery){    Console.WriteLine(file.FullName);}//创建和执行一个新的查询,通过查询旧文件的创建时间作为一个出发点//Last:选最后一个,因为是按日期升序,所以最新的是指最后一个var newestFile = (from file in fileQuery                  orderby file.CreationTime                  select new { file.FullName, file.CreationTime })                 .Last();Console.WriteLine($"\r\nThe newest .txt file is {newestFile.FullName}. Creation time: {newestFile.CreationTime}");

C#中的LINQ to Objects实例分析

实例2、如何按照扩展名对文件进行分组

此示例演示如何使用 LINQ 对文件或文件夹列表执行高级分组和排序操作。此外,它还演示如何使用 Skip 和 Take 方法对控制台窗口中的输出进行分页。

下面的查询演示如何按文件扩展名对指定目录树的内容进行分组。

const string path = @"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7";//“path”的长度,后续用于在输出时去掉“path”这段前缀var trimLength = path.Length;//取文件系统快照var dir = new DirectoryInfo(path);//该方法假定应用程序在指定路径下的所有文件夹都具有搜索权限。var files = dir.GetFiles("*.*", SearchOption.AllDirectories);//创建查询var query = from file in files            group file by file.Extension.ToLower() into fileGroup            orderby fileGroup.Key            select fileGroup;//一次显示一组。如果列表实体的行数大于控制台窗口中的行数,则分页输出。 PageOutput(trimLength, query);private static void PageOutput(int rootLength, IOrderedEnumerable<string, FileInfo>> query){    //跳出分页循环的标志    var isAgain = true;    //控制台输出的高度    var numLines = Console.WindowHeight - 3;    //遍历分组集合    foreach (var g in query)    {        var currentLine = 0;        do        {            Console.Clear();            Console.WriteLine(string.IsNullOrEmpty(g.Key) ? "[None]" : g.Key);            //从“currentLine”开始显示“numLines”条数            var resultPage = g.Skip(currentLine).Take(numLines);            //执行查询            foreach (var info in resultPage)            {                Console.WriteLine("\t{0}", info.FullName.Substring(rootLength));            }            //记录输出行数            currentLine += numLines;            Console.WriteLine("点击“任意键”继续,按“End”键退出");            //给用户选择是否跳出            var key = Console.ReadKey().Key;            if (key != ConsoleKey.End) continue;            isAgain = false;            break;        } while (currentLine < g.Count());        if (!isAgain)        {            break;        }    }}

C#中的LINQ to Objects实例分析

为了使您可以查看所有结果,此示例还演示如何按页查看结果。这些方法可应用于 Windows 和 Web 应用程序。

请注意,由于代码将对组中的项进行分页,因此需要嵌套的 foreach 循环。此外,还会使用某他某个逻辑来计算列表中的当前位置,以及使用户可以停止分页并退出程序。在这种特定情况下,将针对原始查询的缓存结果运行分页查询。

实例3、如何查询一组文件夹中的总字节数

此示例演示如何检索指定文件夹及其所有子文件夹中的所有文件所使用的总字节数。

Sum 方法添加在 select 子句中选择的所有项的值。您可以轻松修改此查询以检索指定目录树中的最大或最小文件,方法是调用 Min 或 Max 方法,而不是 Sum。

const string path = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC#";var dir = new DirectoryInfo(path);var files = dir.GetFiles("*.*", SearchOption.AllDirectories);var query = from file in files            select file.Length;//缓存结果,以避免多次访问文件系统var fileLengths = query as long[] ?? query.ToArray();//返回最大文件的大小 var largestLength = fileLengths.Max();//返回指定文件夹下的所有文件中的总字节数var totalBytes = fileLengths.Sum();Console.WriteLine();Console.WriteLine("There are {0} bytes in {1} files under {2}",totalBytes, files.Count(), path);Console.WriteLine("The largest files is {0} bytes.", largestLength);

C#中的LINQ to Objects实例分析

如果您只需要统计特定目录树中的字节数,则可以更高效地实现此目的,而无需创建 LINQ 查询,因为该查询会引发创建列表集合作为数据源的系统开销。随着查询复杂度的增加,或者当您必须对同一数据源运行多个查询时,LINQ 方法的有用性也会随之增加。

实例4、如何比较两个文件夹中的内容

此示例演示比较两个文件列表的三种方法:

  • (1)查询一个指定两个文件列表是否相同的布尔值;

  • (2)查询用于检索同时位于两个文件夹中的文件的交集;

  • (3)查询用于检索位于一个文件夹中但不在另一个文件夹中的文件的差集;

//创建两个带比较的文件夹const string path2 = @"E:\Test1";const string path3 = @"E:\Test2";var dir1 = new DirectoryInfo(path2);var dir2 = new DirectoryInfo(path3);//取文件快照var files1 = dir1.GetFiles("*.*", SearchOption.AllDirectories);var files2 = dir2.GetFiles("*.*", SearchOption.AllDirectories);//自定义文件比较器var comparer = new FileComparer();//该查询确定两个文件夹包含相同的文件列表,基于自定义文件比较器。查询立即执行,因为它返回一个bool。 var areIdentical = files1.SequenceEqual(files2, comparer);Console.WriteLine(areIdentical == true ? "the two folders are the same" : "The two folders are not the same");//交集:找相同的文件 var queryCommonFiles = files1.Intersect(files2, comparer);var commonFiles = queryCommonFiles as FileInfo[] ?? queryCommonFiles.ToArray();if (commonFiles.Any()){    Console.WriteLine("The following files are in both folders:");    foreach (var v in commonFiles)    {        Console.WriteLine(v.FullName);    }}else{    Console.WriteLine("There are no common files in the two folders.");}//差集:对比两个文件夹的差异var diffQuery = files1.Except(files2, comparer);Console.WriteLine("The following files are in list1 but not list2:");foreach (var v in diffQuery){    Console.WriteLine(v.FullName);}//该实现定义了一个非常简单的两个 FileInfo 对象之间的比较。它只比较文件的名称和它们字节数的长度public class FileComparer : IEqualityComparer{    public bool Equals(FileInfo x, FileInfo y)    {        return string.Equals(x.Name, y.Name, StringComparison.CurrentCultureIgnoreCase) && x.Length == y.Length;    }    //返回一个比较标准的哈希值。根据 IEqualityComparer 规则,如果相等,那么哈希值也必须是相等的。    //因为这里所定义的相等只是一个简单的值相等,而不是引用标识,所以两个或多个对象将产生相同的哈希值是可能的。     public int GetHashCode(FileInfo obj)    {        var s = string.Format("{0}{1}", obj.Name, obj.Length);        return s.GetHashCode();    }}

C#中的LINQ to Objects实例分析

【注意】 可以修改上述这些方法以便对任意类型的对象序列进行比较。

此处显示的 FileComparer 类演示如何将自定义比较器类与标准查询运算符一起使用。该类不是为在实际方案中使用而设计的。它只是使用每个文件的名称和长度(以字节为单位)来确定每个文件夹的内容是否相同。在实际方案中,应对此比较器进行修改以执行更严格的相等性检查。

实例5、如何在目录树中查询最大的文件

此示例演示与文件大小(以字节为单位)相关的五种查询:

  • 如何检索最大文件的大小(以字节为单位);

  • 如何检索最小文件的大小(以字节为单位);

  • 如何从指定的根文件夹下的一个或多个文件夹检索 FileInfo 对象最大或最小文件;

  • 如何检索一个序列,如 10 个最大文件。

下面的示例包含五种不同的查询,这些查询演示如何根据文件大小(以字节为单位)查询和分组文件。可以轻松地修改这些示例,以使查询基于 FileInfo对象的某个其他属性。

const string path = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC#";var dir = new DirectoryInfo(path);var files = dir.GetFiles("*.*", SearchOption.AllDirectories);var query = from file in files            select file.Length;//返回最大文件的大小var maxSize = query.Max();Console.WriteLine("The length of the largest file under {0} is {1}",path, maxSize);//倒序排列var query2 = from file in files             let len = file.Length             where len > 0             orderby len descending             select file;var fileInfos = query2 as FileInfo[] ?? query2.ToArray();//倒序排列的第一个就是最大的文件var longestFile = fileInfos.First();//倒序排列的第一个就是最小的文件var smallestFile = fileInfos.Last();Console.WriteLine("The largest file under {0} is {1} with a length of {2} bytes", path, longestFile.FullName, longestFile.Length);Console.WriteLine("The smallest file under {0} is {1} with a length of {2} bytes", path, smallestFile.FullName, smallestFile.Length);Console.WriteLine("===== The 10 largest files under {0} are: =====", path);//返回前10个最大的文件var queryTenLargest = fileInfos.Take(10);foreach (var v in queryTenLargest){    Console.WriteLine("{0}: {1} bytes", v.FullName, v.Length);}

C#中的LINQ to Objects实例分析

若要返回一个或多个完整的 FileInfo 对象,查询必须首先检查数据源中的每个对象,然后按这些对象的 Length 属性的值排序它们。然后查询可以返回具有最大长度的单个对象或序列。使用 First 可返回列表中的第一个元素。使用 Take 可返回前 n 个元素。指定降序排序顺序可将最小的元素放在列表的开头。

实例6、如何在目录树中查询重复的文件

有时,多个文件夹中可能存在同名的文件。例如,在 Visual Studio 安装文件夹中,有多个文件夹包含 readme.htm 文件。

此示例演示如何在指定的根文件夹中查询这样的重复文件名。

第二个示例演示如何查询其大小和创建时间也匹配的文件。

static void Main(string[] args){    QueryDuplicates();    //QueryDuplicates2();    Console.ReadKey();}static void QueryDuplicates(){    const string path = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0";    var dir = new DirectoryInfo(path);    var files = dir.GetFiles("*.*", SearchOption.AllDirectories);    var charsToSkip = path.Length;    var queryDupNames = (from file in files                         group file.FullName.Substring(charsToSkip) by file.Name into fileGroup                         where fileGroup.Count() > 1                         select fileGroup).Distinct();    PageOutput<string, string>(queryDupNames);}private static void QueryDuplicates2(){    const string path = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0";    var dir = new DirectoryInfo(path);    var files = dir.GetFiles("*.*", SearchOption.AllDirectories);    //路径的长度    var charsToSkip = path.Length;    //注意一个复合键的使用。三个属性都匹配的文件属于同一组。    //匿名类型也可以用于复合键,但不能跨越方法边界。     var queryDupFiles = from file in files                        group file.FullName.Substring(charsToSkip) by                            new PortableKey() { Name = file.Name, CreationTime = file.CreationTime, Length = file.Length }                            into fileGroup                        where fileGroup.Count() > 1                        select fileGroup;    var queryDupNames = queryDupFiles as IGroupingstring>[] ?? queryDupFiles.ToArray();    var list = queryDupNames.ToList();    var i = queryDupNames.Count();    //分页输出    PageOutputstring>(queryDupNames);}private static void PageOutput(IEnumerable> queryDupNames){    //跳出分页循环的标志     var isAgain = true;    var numLines = Console.WindowHeight - 3;    var dupNames = queryDupNames as IGrouping[] ?? queryDupNames.ToArray();    foreach (var queryDupName in dupNames)    {        //分页开始        var currentLine = 0;        do        {            Console.Clear();            Console.WriteLine("Filename = {0}", queryDupName.Key.ToString() == string.Empty ? "[none]" : queryDupName.Key.ToString());            //跳过 currentLine 行,取 numLines 行            var resultPage = queryDupName.Skip(currentLine).Take(numLines);            foreach (var fileName in resultPage)            {                Console.WriteLine("\t{0}", fileName);            }            //增量器记录已显示的行数            currentLine += numLines;            //让用户自动选择下一下            //Console.WriteLine("Press any key to continue or the 'End' key to break...");            //var key = Console.ReadKey().Key;            //if (key == ConsoleKey.End)            //{            //    isAgain = false;            //    break;            //}            //按得有点累,还是让它自动下一页吧            Thread.Sleep(100);        } while (currentLine < queryDupName.Count());        //if (!isAgain)        //    break;    }}

C#中的LINQ to Objects实例分析

第一个查询使用一个简单的键确定是否匹配;这会找到同名但内容可能不同的文件。第二个查询使用复合键并根据 FileInfo 对象的三个属性来确定是否匹配。此查询非常类似于查找同名且内容类似或相同的文件。

实例7、如何在文件夹中查询文件的内容

此示例演示如何查询指定目录树中的所有文件、打开每个文件并检查其内容。 此类技术可用于对目录树的内容创建索引或反向索引。 此示例中执行的是简单的字符串搜索。 但是,可使用正则表达式执行更复杂类型的模式匹配。

const string path = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0";var dir = new DirectoryInfo(path);var files = dir.GetFiles("*.*", SearchOption.AllDirectories);//待匹配的字符串const string searchTerm = @"Visual Studio";//搜索每个文件的内容。//您也可以使用正则表达式替换 Contains 方法var queryMatchingFiles = from file in files                         where file.Extension == ".html"                         let content = GetFileConetnt(file.FullName)                         where content.Contains(searchTerm)                         select file.FullName;//执行查询Console.WriteLine("The term \"{0}\" was found in:", searchTerm);foreach (var filename in queryMatchingFiles){    Console.WriteLine(filename);}/// /// 读取文件的所有内容/// /// /// static string GetFileConetnt(string fileName){    //如果我们在快照后已删除该文件,则忽略它,并返回空字符串。     return File.Exists(fileName) ? File.ReadAllText(fileName) : "";}

C#中的LINQ to Objects实例分析

关于“C#中的LINQ to Objects实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C#中的LINQ to Objects实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#中的LINQ to Objects实例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#中的LINQ to Objects实例分析

这篇文章主要介绍了C#中的LINQ to Objects实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中的LINQ to Objects实例分析文章都会有所收获,下面我们一起来看看吧。Linq和反射
2023-06-30

C#中的Linq to JSON操作实例分析

今天小编给大家分享一下C#中的Linq to JSON操作实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Linq t
2023-06-30

Linq to object的示例分析

这篇文章主要介绍Linq to object的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!学习Linq to object时,经常会遇到Linq to object问题,这里将介绍XX问题的解决方法。普通存
2023-06-17

LINQ To Lucene的示例分析

小编给大家分享一下LINQ To Lucene的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!lucene是在JAVA中比较有名的开源项目,也有.NET移
2023-06-17

LINQ To SQL的Transaction举例分析

这篇文章主要介绍“LINQ To SQL的Transaction举例分析”,在日常操作中,相信很多人在LINQ To SQL的Transaction举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”LIN
2023-06-17

LINQ to SQL删除实现的示例分析

LINQ to SQL删除实现的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在实现LINQ to SQL删除时可以使用Lambda Expression批量删除数
2023-06-17

LINQ to SQL映射列的示例分析

小编给大家分享一下LINQ to SQL映射列的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!LINQ to SQL映射表在 LINQ to SQL 中,
2023-06-17

LINQ to SQL映射关系的示例分析

这篇文章主要介绍LINQ to SQL映射关系的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!LINQ to SQL映射关系在 LINQ to SQL 中,数据库关联(如外键到主键关系)是通过应用 Assoc
2023-06-17

LinQ to SQL增删改查的示例分析

小编给大家分享一下LinQ to SQL增删改查的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!我们来看看LinQ to SQL,就是对数据库的查询,以前叫做DLinQ。经常看到LinQ那到底是什么呢?他是Lang
2023-06-17

C#中的反射实例分析

今天小编给大家分享一下C#中的反射实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、获取程序集Assembly1、获
2023-06-30

C++中指针实例分析

这篇文章主要介绍“C++中指针实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中指针实例分析”文章能帮助大家解决问题。计算机的内存模型CPU是计算机的核心部件,要想让一个CPU工作,就必
2023-06-19

C++中类的大小实例分析

这篇“C++中类的大小实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中类的大小实例分析”文章吧。一、普通类的大
2023-06-29

C++中remove与erase实例分析

本篇内容介绍了“C++中remove与erase实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!erase 简介vector 中 er
2023-06-29

C++中的类与对象实例分析

今天小编给大家分享一下C++中的类与对象实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。初始化列表引论//初始化列表的
2023-06-29

C++中的命名空间实例分析

这篇“C++中的命名空间实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中的命名空间实例分析”文章吧。命名空间的
2023-06-29

C#中方法重载实例分析

这篇文章主要介绍了C#中方法重载实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中方法重载实例分析文章都会有所收获,下面我们一起来看看吧。最近在看 C++ 的方法重载,我就在想 C# 中的重载底层是怎
2023-07-02

C++中文件操作实例分析

这篇文章主要介绍“C++中文件操作实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中文件操作实例分析”文章能帮助大家解决问题。文件操作意义:利用文件操作可以保存我们程序运行的信息,是持久
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录