Anduin Xue

let today = new Beginning();

All Posts


EF second layer cache to enhance your SQL database performance based on Redis

本篇博客介绍了如何使用基于Redis的EF第二层缓存来提高SQL数据库性能。首先,安装`EFCoreSecondLevelCacheInterceptor`包,然后在`StartUp`类的`ConfigureServices`方法中进行相应的配置。这个缓存会在通过使用这个库的DbContext更改实体(插入、更新或删除)时更新。如果数据库通过其他方式(如存储过程或触发器)更新,缓存将变得过时。但是,如果我们的应用程序在多个实例中运行,数据库的更改可能不适用于其他实例,可能会导致许多问题。此时,我们需要使用Redis来存储缓存。 Redis是一种开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理。本文介绍了三种安装Redis的方法,分别是在Redis官网下载安装、在Windows Server上安装及在Azure上创建Redis缓存实例。安装完成后,使用命令安装`EasyCaching.Redis`包,并修改`StartUp`方法以连接Redis数据库并使用Redis存储Entity-Framework Core的缓存,支持扩展。 此外,还需在`appsettings.json`文件中添加正确的Redis连接信息。这样,在启动过程中,应用程序将尝试连接到Redis数据库,并使用Redis缓存数据库结果。在不修改代码的情况下,ASP.NET Core应用程序的性能得到了极大的提升。Redis值得称赞! 那么,如何在多实例应用程序中保持可扩展性呢?使用Redis作为缓存存储是否足够满足我们的需求?在实际应用中,我们可能还需要关注其他性能优化策略。--GPT 4

ASP.NET Core C# SQL Server SQL Entity Framework Core Azure Redis Caching Cache

软件定制行业为何应当发展软件订阅制?

在当前软件定制行业中,普遍存在的问题是软件质量低劣、漏洞百出,对企业的扩展和用户体验造成严重影响。这主要是由于现行的商业采购模式导致的,而发展软件订阅制可能是解决这一问题的有效途径。订阅制意味着甲方按时间和用量付费,购买软件的使用权和保证软件可用性的服务,而非购买整个软件源码的知识产权。这将有助于改善乙方的开发流程,提高软件质量,降低甲方的风险,并且对双方都有更大的利益。 订阅制的软件定价可以更加灵活,降低甲方的初期试错成本,有助于乙方扩展市场。此外,乙方需要靠精准的定价来保证稳赚不赔,实现企业的健康发展。以微软的Office 365为例,采用订阅制销售,使得普通用户更容易接受,同时提供优异的技术支持和高软件可用性。 尽管订阅制在宏观和微观层面上具有诸多优势,但也存在一些问题,如数据安全、财务资产申报等方面的挑战。然而,随着越来越多的软件开发企业开始向服务转型并取得成功,订阅制将成为软件定制行业的主流和未来趋势。我们有理由相信,这将显著提高各行各业的IT服务质量。那么,订阅制是否真的能够改变软件定制行业的现状?企业如何应对订阅制带来的挑战?这些问题值得我们深入思考。--GPT 4

DevOps China Software Development SaaS Subscription

在前端哈希密码是否是个不错的方案?

在这篇博客中,作者探讨了在前端哈希密码是否是一个不错的方案。文章首先指出,将密码哈希后存入数据库是为了防止运维人员直接查看密码,但如果将哈希过程放在前端完成,则对服务器来说,它实际上只是做了一次明文比较,这样运维人员仍然可以直接调用登录API获取账号权限。 文章接着讲述了腾讯公司的QQ在十几年前曾采用两趟哈希的做法来解决密码明文传输和运维人员登录问题。然而,这种做法实际上对防范中间人攻击并没有帮助,因为只要能抓到的包,就是能伪造的包。 作者回顾了当时网络安全状况较差的年代,例如ARP欺骗和中间人攻击等手段容易实现。然而,在RSA算法普及后,中间人攻击几乎不可能成功。如今,开发Web应用只需借助TLS,将密码原文直接发送给服务器就已经相当安全。 然而,我们仍然不能完全信任HTTPS,因为除了通信层面的防窃取,还存在许多其他攻击手段,例如浏览器插件可以直接阅读网页表单,以及假冒网页诱导用户输入密码等。文章最后指出,要真正解决这些问题,仅靠安全措施和算法远远不够,还需要提高普通用户的警觉性和判断能力,以及对基础安全领域的常识。 在这个背景下,我们不禁要思考:前端哈希密码真的是一个好的解决方案吗?如何在保护用户隐私的同时,确保网络安全?这些问题值得我们深入探讨。--GPT 4

Security Password Hash

Get unique random numbers in C#

本篇博客介绍了如何在C#中生成唯一的随机数。作者首先构建了一个简单的素数检测方法,并通过该方法生成一个素数序列。接着,编写了一个检测E值是否正确的方法,以及从自然数中找到有效E值的方法。在此基础上,作者实现了将输入值N分解为两个素数P和Q的方法,并通过P和Q得到有效的D和E值。 为了检验所得到的P、Q、D和E值是否有效,作者编写了一个函数,该函数在获取正确的P、Q、D和E值时返回true,失败时返回false。最后,通过调用I ^ d % N来生成随机数序列。由于输入的N值可能无效,因此还需要跳过所有无效输入并找到其附近的最近N值。 博客中提供了一个完整的示例,展示了如何使用这些方法生成唯一的随机数。通过运行示例,我们可以看到输出的随机数序列既随机又唯一。这种方法在需要生成不重复随机数的场景中非常有用。 那么,这种生成随机数的方法是否有局限性?在实际应用中,我们可能需要考虑性能和效率问题。此外,是否有其他更简洁或者更通用的方法来生成唯一随机数呢?在阅读本文后,希望读者能够对这些问题进行思考并尝试寻找答案。--GPT 4

C# .NET Core Algorithm Random Numbers Unique random Non-repeat Random

HTTP post file from .NET Core new HTTP client

随着.NET Core 3的发布,微软推出了一款全新的.NET Core HTTP客户端。新客户端使得调用WEB API变得更加简单。本文将介绍如何使用新客户端提交文件至服务器。 通常情况下,我们调用Web API时不需要提交二进制文件。但是在新客户端中,我们应该如何向服务器提交文件呢?首先,我们需要了解HTTP POST请求带文件与表单URL编码内容的不同之处。表单通过一些边界进行划分,边界名称在HTTP头部的内容类型中指定。 要从.NET Core HTTP客户端提交文件,可以使用`MultipartFormDataContent`,这样框架就可以处理多部分内容。然后,通过添加新的流内容将文件添加到表单中。此外,您还可以向表单中添加其他内容,如URL编码的内容。最后,提交表单。 本文提供的示例代码展示了如何使用新的HTTP客户端提交文件至服务器。在这个过程中,您可能会遇到一些有趣的问题,例如如何处理多个文件的上传,或者如何在提交文件的同时提交其他类型的数据。文章内容将引导您探索这些问题,并帮助您找到合适的解决方案。--GPT 4

ASP.NET Core C# .NET Core HTTP Web File HTTP Client POST

Tips for Azure CLI script programming on bash

本篇博客文章主要介绍了如何在bash中编写Azure CLI脚本。文章提供了一系列实用的代码示例,涵盖了登录Azure、选择订阅、获取租户ID和域名等操作。此外,文章还详细介绍了如何在Azure中创建资源,例如资源组、应用程序洞察和获取连接字符串等。 文章还涉及了如何获取SQL Server数据库连接字符串、Azure SignalR连接字符串、Azure存储帐户连接字符串以及Azure App服务访问URL等信息。此外,文章还介绍了如何为函数应用和Azure应用服务设置环境变量。 阅读本文后,您将了解如何编写更高效的Azure CLI脚本以完成各种操作。文章提供的代码示例可供参考和实践,以便您更好地理解和掌握这些技巧。同时,您可能会思考如何根据自己的需求定制这些脚本以满足特定场景的需求。您还可以尝试将这些代码片段组合成一个更复杂的脚本,以实现更高级的功能。 最后,有哪些其他Azure CLI脚本技巧可以提高我们的工作效率呢?请继续阅读全文,发掘更多有趣的问题和答案。--GPT 4

bash Azure DevOps Azure CLI

Bootstrap dark theme minimum style

With the increasing popularity of dark mode in mobile apps and websites, it's essential to adapt your Bootstrap-based website to support this feature. This blog post discusses a simple method to enable automatic dark theme switching with minimal changes to your existing website. Using media queries in CSS, you can easily detect if the current device is set to dark mode and apply the appropriate styles. Similarly, with JavaScript, you can detect dark mode and execute specific actions. The blog provides code snippets to accomplish these tasks, including monitoring dark mode status changes and modifying elements' classes based on the user's preference. However, detecting dark mode alone is not enough. You also need to modify some styles for specific elements like input fields. The blog provides a list of CSS rules to be applied when the dark mode is enabled, ensuring a seamless and visually appealing experience for users who prefer the dark theme. By implementing this method, you can ...--GPT 4

Web CSS Bootstrap Media Query Style Dark theme

Microsoft account integrated sign in via C#

本篇博客介绍了如何通过C#实现Microsoft账户的集成登录。首先,需要在Microsoft Azure Portal创建一个应用程序,并获取客户端ID和客户端密钥。接下来,通过运行`$ dotnet add package Aiursoft.XelNaga`安装所需的类库。 为了验证用户身份,我们需要将用户重定向到Microsoft登录门户。博客提供了相应的C#代码,实现了`GetBindRedirectLink()`方法。通过返回浏览器的“重定向结果”并使用`GetBindRedirectLink()`函数作为重定向URL,用户将被引导至登录页面。 用户成功登录后,将会被重定向回您设置的`RedirectUri`,并附带一个代码。通过该代码,您可以调用`GetUserDetail()`方法获取用户的详细信息。 博客还提供了`GetAccessToken()`方法,用于获取有效的访问令牌,以便下载用户个人资料。当您拥有访问令牌后,只需调用`GetUserInfo()`方法,我们将调用Graph API获取当前用户信息。 返回的用户是`MicrosoftUserDetail`实例,其中包含用户的ID、显示名称、用户主体名称和职位等信息。用户ID是唯一的,可用于识别您的用户。 最后,构建一个自定义网页,您的应用程序便可投入使用。博客还提供了源代码链接以供参考。 本篇博客详细介绍了如何通过C#实现Microsoft账户的集成登录,为开发者提供了详细的代码示例和解释。那么,如何将这种集成登录应用到其他类型的应用程序中呢?如何确保用户数据的安全性?希望本文能为您提供启示和灵感。--GPT 4

ASP.NET Core Azure Microsoft OAuth Login Authentication

Install Azure CLI on Windows 10 and use it in bash

在这篇博客中,我们将学习如何在Windows 10上安装Azure CLI并在bash中使用它。Azure命令行界面(CLI)是微软为管理Azure资源而设计的跨平台命令行体验。Azure CLI旨在易于学习和上手,同时功能强大,足以成为构建自定义自动化以使用Azure资源的绝佳工具。 Azure CLI可以在Windows,macOS和Linux环境中安装。它还可以在Docker容器和Azure Cloud Shell中运行。 在PowerShell中安装Azure CLI非常简单。只需执行以下命令: Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet' 然后,您可以直接使用它。 但是,如果在git-bash中执行`az`,它会告诉您找不到`az`。这是因为`az`是一个名为az.cmd的文件,因此bash不会将其视为bash中的命令。 那么我们如何在bash中使用az并编写az shell呢? 安装Azure CLI后,使用管理员权限打开一个新的bash实例。 然后执行以下命令: echo \"C:\\Program Files \(x86\)\\Microsoft SDKs\\Azure\\CLI2\\wbin\\az.cmd\" \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9 \${10} \${11} \${12} \${13} \${14} \${15} > "$SYSTEMROOT\az" 这将在系统根目录下创建一个名为az的新bash可执行文件。 现在尝试在bash中执行az命令。 通过这篇博客,您将了解如何在Windows 10上安装和使用Azure CLI。这将有助于您更好地管理Azure资源并构建自定义自动化。那么,您准备好在bash中使用Azure CLI了吗?--GPT 4

bash Azure Azure CLI PowerShell

Ubuntu bash experience for Windows Terminal without Linux subsystem

本篇博客教你如何在没有Linux子系统的情况下,为Windows终端设置Ubuntu bash体验。首先,你需要安装一个类似于git-bash的Linux风格的shell。然后,安装Windows终端,并将git-bash设置为Windows终端的默认终端。接下来,让主题看起来像Ubuntu风格,允许使用Ctrl + V进行粘贴,并允许在右键上下文菜单中启动WT。 在开始之前,你需要先安装git bash。然后,从Microsoft商店下载新的Windows终端。安装完成后,默认情况下,你将打开一个新的PowerShell会话。要将其更改为bash,请首先打开设置页面。接着,将Ubuntu的颜色主题添加到Windows终端中,并使用该颜色主题。 此外,为了启用Ctrl + V粘贴绑定,请考虑添加相应的键绑定。完成上述步骤后,你可以像在Ubuntu中一样使用Windows终端。你还可以安装PowerShell 7,并运行项目将其添加到具有高级选项的上下文菜单中。 现在,你可以在Windows终端中享受类似于Ubuntu bash的体验。为什么不尝试一下呢?这将如何改变你在Windows上的开发体验?--GPT 4

bash Ubuntu Windows 10 Windows Terminal

Publish app from Azure DevOps to non-global Azure like Azure CN

本篇博客讲述了如何使用Azure DevOps将编译完成的应用发布到非Azure Global环境,例如Azure CN。虽然在Azure全球环境中发布应用非常简单,但在某些情况下,客户可能会使用其他Azure环境,如Azure Arc、Azure政府版和Azure CN。文章详细介绍了如何在这些非全球环境中发布应用。 首先,需要创建一个新的应用注册,并允许Azure DevOps以应用的身份发布应用。然后,为新注册的应用添加一个密钥,并将应用添加到订阅级别角色,以便在订阅范围内管理资源。接下来,在Azure DevOps中添加一个新的服务连接,并选择手动配置以设置自定义的Azure环境名称。 在配置服务连接时,需要填写订阅ID、订阅名称、服务主体ID、密钥和租户ID。这些值可以在订阅详细信息标签页和Azure AD详细信息页面中找到。填写完所有必要信息后,单击验证并保存按钮。 最后,可以在管道上工作并将应用发布到此服务连接。本文通过详细的步骤和截图为读者展示了如何实现这一目标。那么,在面对非全球Azure环境时,是否还会感到困惑呢?或者这篇文章是否为您提供了一个全新的解决方案?快来阅读全文,探索更多有关Azure DevOps和非全球Azure环境的知识吧!--GPT 4

Azure App Service Azure Azure DevOps DevOps Azure CN China

Linux Cheatsheet for Windows Users

本篇博客为Windows用户提供了一份Linux操作的速查表,内容包括程序和服务管理、软件包管理、服务管理、更新、启动时自动运行命令、文本编辑、Tmux、Screen、Steam CMD等方面的知识。文章还提供了一些快速提示,如如何计算代码的总行数、获取CSharp文件的总行数、获取启动时间、获取关机事件、找出最长的C#文件等。此外,文章还介绍了如何使用Git仅添加非空白更改、测试磁盘写速度、通过SSH测试传输速度、在不使用wget的情况下下载文件并显示下载的文件等操作。最后,还提供了一些有趣的命令,如在不触及磁盘的情况下加热CPU、获取新的UUID并转换为base64、获取随机4个数字、持续播放当前文件夹下的随机视频等。如果您是一位Windows用户,希望更好地掌握Linux操作,那么本篇博客将会对您有所帮助。在阅读本文后,您是否能更熟练地使用Linux进行各种操作呢?请尝试回答这个问题并探索更多有关Linux的知识。--GPT 4

bash Linux Ubuntu