Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts in 2020.1


Get an ideal flight simulator free based on X-Plane 11 (Free plugins)

本文介绍了一款基于X-Plane 11的免费飞行模拟器,以及一系列免费插件,帮助玩家获得更加真实的飞行体验。首先,文章推荐了Zibo 737飞机模型,该模型具有高度真实的飞行性能和系统。接下来,文章介绍了一系列免费插件,包括AviTab、Terrain Radar、BetterPushBack、HeadShake camera plugin、XTouchDownRecorder、Airport Navigator、Xsquawkbox和X-RASS。这些插件分别提供了平板电脑式的航图显示、地形雷达功能、自动推出系统、摄像头抖动效果、着陆评分记录、机场导航、在线飞行模拟网络和跑道警告系统等功能。通过这些插件,玩家可以获得更加真实、细腻的飞行体验。那么,这些插件是否能满足您对飞行模拟器的需求呢?快来一探究竟吧!--GPT 4

X-Plane Flight simulation Flight Plugins Plane Configuration Free

Tips to get better performance for Entity Framework Core

在这篇博客中,我们将探讨如何优化Entity Framework Core的性能。首先,当构建查询时,如果不需要查询中的所有内容,请使用IQueryable编写代码。如果查询已经构建完毕,且所有查询内容都是必要的,请立即将其转换为列表以避免进一步的IO操作。其次,当查询主键时,使用FirstOrDefault替换SingleOrDefault。由于SingleOrDefaultAsync会转换为“top 2”,而FirstOrDefaultAsync会转换为“top 1”,在主键查询中使用FirstOrDefault可以提高性能。 此外,如果不需要保存更改,请考虑添加AsNoTracking以提高查询性能。同时,尽量避免使用Include,因为它会生成复杂的SQL查询。只选择所需的数据,避免编写Include函数。当使用Select时,也可以省略.Include,因为它在这里不会产生任何效果。 最后,避免客户端评估,因为它会使EF从数据库查询所有数据,速度较慢。例如,在处理DateTime或TimeSpan的复杂计算时,先在代码中计算时间,然后构建查询。遵循这些建议,可以有效地提高Entity Framework Core的性能。 在优化Entity Framework Core性能的过程中,你是否遇到过其他问题?尝试过哪些方法来提高查询性能?请在阅读全文后与我们分享您的经验和看法。--GPT 4

Entity Framework SQL Performance Database

Scan all accessible class in C#

在本篇博客中,我们探讨了如何在C#中获取所有可访问的类。虽然通过调用`GetReferencedAssemblies`方法可以轻松获取到所有引用的程序集,但项目引用是递归的。为了获取所有的类,我们需要构建一个引用树并从整个树中读取。 博客提供了一个名为`ScanAssemblies`的方法,该方法接收一个`Assembly`类型的参数,并返回一个包含所有引用程序集的可枚举集合。通过遍历引用的程序集并递归调用`ScanAssemblies`方法,我们可以构建出完整的引用树。 为了获取所有可访问的类,我们需要加载这些程序集。博客给出了一个名为`AllAccessiableClass`的方法,它首先获取入口程序集,然后调用`ScanAssemblies`方法并对返回的程序集集合进行去重。最后,通过`SelectMany`方法获取每个程序集中的类型并将其添加到一个列表中。 在阅读这篇博客后,你将了解如何在C#中获取所有可访问的类并构建引用树。但在实际应用中,还有哪些场景需要获取所有可访问的类呢?如何优化这个过程以提高性能?希望这篇博客能为你提供一些启示,并引导你自己寻找答案。--GPT 4

C# .NET Core Reflection

Use IIS or Azure App Service as a reverse proxy

In this blog post, we explore the process of setting up a reverse proxy using IIS or Azure App Service. Reverse proxies are beneficial for hiding the origin server's identity and improving performance, security, and load balancing. Before configuring the reverse proxy, it's essential to install IIS and the necessary extensions, such as RequestRouter and Rewrite. Once installed, enable the proxy settings in the IIS management tools and create a new reverse proxy rule by configuring domain bindings and HTTPS certificates. Creating a web.config file under the site root path is crucial for adding rules, such as redirecting HTTP traffic to HTTPS and setting up the real reverse proxy logic. The blog post provides a detailed example of setting up a reverse proxy for Aiursoft.IO and a simpler example for Google.com. To further enhance security, the HSTS feature can be enabled by adding specific code to the web.config file. For deploying the reverse proxy server to Azure App Service, simply ...--GPT 4

IIS web.config Reverse Proxy Web Azure App Service Azure

Share view component between different ASP.NET Core web project

在本篇博客中,我们将探讨如何在不同的ASP.NET Core Web项目之间共享视图组件。当C#中的某些逻辑可以在多个项目之间共享时,我们通常会创建一个新的类库项目。但有时我们只想共享一些视图组件,例如,在`Aiursoft`的所有页面中,它们都包含一个`Logout`组件。多次编写这个组件显然是没有意义的。那么我们如何共享它呢? 首先,我们需要创建一个新的`.NET Core`类库项目,并将其命名为`Aiursoft.Pylon`。接下来,确保你的共享类库支持Razor。修改`csproj`文件以添加属性: <AddRazorSupportForMvc>true</AddRazorSupportForMvc> 现在,你的`Aiursoft.Pylon`项目已经支持编写Razor类库了。我们可以开始编写一个新的视图组件。将所有视图组件放在`Views/Shared/Components`文件夹下。要编写视图组件,请参考以下文档: [https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components) 完成视图组件编写后,你的文件夹应如下所示: ![](/image/img-22d1ae24-0e8c-4abd-b970-214b6fe25b45.png) 现在你的视图组件已经完成,可以在多个项目之间共享了。接下来,创建一个引用你的类库的新Web项目。 ![](/image/img-5f7db548-fe96-43da-962d-016ec2904d62.png) 现在我们将从类库中导入所有视图组件到新的Web项目。修改`_ViewImports.cshtml`以添加类似如下的命名空间: ![](/image/img-1cf766d4-bdb7-4f73-bf12-03732a5c7286.png) 现在你可以在视图中使用共享的视图组件了。如下所示: ![](/image/img-64ede323-6c78-4d7f-833c-cca2bcd60228.png) 如果你的代码以深绿色显示,那么一切正常,你的视图组件可以成...--GPT 4

ASP.NET Core C# class library View component

One command to pull all git repositories

在这篇博客中,我们将探讨如何用一条简单的命令来更新所有的git仓库。如果你的文件夹结构类似于文章中所示,那么这个方法将非常适用。首先,在工作空间文件夹下创建一个名为`pull.sh`的新文件,并将文章中的代码复制到文件中。接下来,执行一个命令以允许运行该脚本。完成这些操作后,每次启动计算机时,只需运行`./pull.sh`,所有仓库便会自动更新。 这个方法不仅节省了时间,还让你在开始工作前确保所有仓库都是最新的。那么,你还在等什么呢?尝试这个方法,让你的工作流程变得更加高效。最后,你是否还有其他类似的技巧来简化日常任务?--GPT 4

bash git