Elasticsearch 系列(二)- ES的基本概念
2024/5/27 11:35:05

本章将和大家分享 Elasticsearch 的一些基本概念。话不多说,下面我们直接进入主题。 一、什么是Lucene Lucene是Apache的开源搜索引擎类库,提供了搜索引擎的核心API。 1、Lucene的优势:易扩展、高性能(基于倒排索引) 2、Lucene的缺点:只限于Java语言开发、学习曲线陡峭、不支持水平扩展 二、什么是Elasticsearch Elasticsearch(简称ES)是一个开源的,分布式的全文搜索和分析引擎。它可以帮助我们从海量数据中快速找到需要的内容。 1、Elast

Unity学习笔记--数据持久化XML文件(1)
2024/5/27 11:35:04

XML相关 Xml是可拓展标记语言,一种文件格式。我们使用xml来完成对数据持久化的存储。等待我们有一程序运行结束之后,将内存中的数据进行保存,(保存在硬盘服务器)实现对数据的持久化存储。 xml文件的读取和保存以及修改 要点:XMl文件的加载XML文件节点的查找访问XML文件节点内容的读取 (InnerText还是Attributes["id"].Value 形式访问) 代码中有详细注释!可供参考对比学习!using System.IO using System.Xml using UnityEngin

EF Core预编译模型Compiled Model
2024/5/27 11:35:03

前言 最近还在和 npgsql 与 EF Ce 斗争,由于 EF Ce 暂时还不支持 AOT,因此在 AOT 应用程序中使用 EF Ce 时,会提示问题:听这个意思,似乎使用 Compiled Model 可以解决问题,于是就又研究了一下 EF Ce 的这个功能。 在 EF Ce 中,模型根据实体类和配置构建,默认情况下,每次创建一个新的 DbContext 实例时,EF Ce 都会构建模型。对于需要频繁创建 DbContext 实例的应用程序,这可能会导致性能问题。 Entity Framewk Ce(

C#中的属性
2024/5/27 11:35:03

公众号「Dot学习交流」,分享学习Dot的点滴。 简介 属性是代表类的实例或类中的一个数据项的成员,使用属性看起来非常像写入或读取一个字段,语法是相同的。 下面的代码展示了名称为D的类的使用,它有一个公有字段和一个公有属性,从用法无法区分它们。 D d = new D()​d.MyField = 7 给字段赋值d.MyProperty = 10 给属性赋值Console.WriteLine($"{d.MyField} {d.MyProperty}") 读取字段和属性 与字段类似,属性有如下特征: 1、它是

解析开源商城系统的五大天王:功能丰富,你选哪个?
2024/5/27 11:35:02

本文简介随着互联网的快速发展,电商网站已经成为人们日常生活中不可或缺的一部分。而商城系统作为电商网站的核心,其重要性不言而喻。使用C#语言开源商城系统,可以轻松打造出稳定、安全的商城网站,为你的电商事业保驾护航。下面推荐五款开源界出名的商城项目。C#语言开源商城系统的优势 跨平台性 C#是一种跨平台的语言,用其开发的商城系统可以运行在Windows、Linux等多种操作系统上,满足不同用户的需求。 强大的功能 C#商城系统支持多种支付方式、多种配送方式,具备完善的商品管理、订单管理、会员管理等核心功能。

C#12中的Collection expressions(集合表达式语法糖)
2024/5/27 11:35:02

C#12中引入了新的语法糖来创建常见的集合。并且可以使用..来解构集合,将其内联到另一个集合中。 支持的类型数组类型,例如 int[]。 System.SpanT 和 System.ReadOnlySpanT。 支持常见泛型集合,例如 System.Collections.Generic.ListT。集合表达式使用 以下展示了如何使用集合表达式 static void Main(string[] args) {Liststring names1 = ["one" "two"]Liststring name

你所不知道的ASP.NET Core进阶系列(三)
2024/5/27 11:35:01

前言 一年多没更新博客,上一次写此系列还是四年前,虽迟但到,没有承诺,主打随性,所以不存在断更,催更,哈哈,上一篇我们细究从请求到绑定详细原理,本篇则是探讨模型绑定细节,当一个问题产生到最终解决时,回过头我们整体分析其产生背景以及设计思路才能有所获。好了,废话不多说,我们开始模型绑定细节之旅。 问题产生 我们定义一个模型,然后进行查询请求,当然,此时我们在后台控制器Action方法上推荐明确使用查询特性即FromQuery接收,代码如下public class UserAddress {public st

Unity学习笔记--数据持久化之PlayerPrefs的使用
2024/5/27 11:35:00

数据持久化 PlayerPrefs相关 PlayerPrefs是Unity游戏引擎中的一个类,用于在游戏中存储和访问玩家的偏好设置和数据。它可以用来保存玩家的游戏进度、设置选项、最高分数等信息。PlayerPrefs将数据存储在本地文件中,因此可以在游戏重新启动时保持数据的持久性。 PlayerPrefs的数据存储 类似于键值对存储 一个键对应一个值 提供了存储3种数据的方法 int float string 键: string类型 值:int float string 对应3种APIPlayerPre

BLOG-2-题目集4,5,6以及期中考试总结性blog
2024/5/27 11:35:00

(1)前言:在pta第4.5.6次大作业和期中考试所包含的知识点主要有:理解类的概念,创建类和实例化对象。定义方法,方法的参数传递和返回值。使用条件语句(ifelse)、循环语句(f、while)等来控制菜单存储和用户输入。用于存储菜单选项和处理用户的选择的数组或类数组。题目的难度根据题目不同也有所不同,第四题的菜单题只需要做基本的菜单显示和用户输入处理,随后的5.6两道题目要求考虑异常输入的处理并需要使用更复杂的数据结构来实现菜单功能。题量相对适中,第4道pta题目可能较为简单,两道大题主要是针对对类的

Performance Improvements in .NET 8 -- Exceptions & Reflection & Primitives【翻译】
2024/5/27 11:34:59

Exceptions 在 . 6 中,ArgumentNullException 增加了一个 ThrowIfNull 方法,我们开始尝试提供“抛出助手”。该方法的目的是简洁地表达正在验证的约束,让系统在未满足约束时抛出一致的异常,同时也优化了成功和99.999%的情况,无需抛出异常。该方法的结构是这样的,执行检查的快速路径被内联,尽可能少的工作在该路径上,然后其他所有的事情都被委托给一个执行实际抛出的方法(JIT 不会内联这个抛出方法,因为它会看到该方法的实现总是抛出异常)。 public static

.NET8 Blazor新特性 流式渲染
2024/5/27 11:34:59

什么是SSR Blaz中的流式渲染结合了SSR(服务端渲染),服务端将HTML拼好返回给前端,有点像我们熟知的Raz Pages 或 MVC 。当已经有了 Raz Pages 或 MVC 时,为什么还要选择使用 Blaz 来实现这一点?这里有几个原因。 首先,Raz Pages 和 MVC 没有像Blaz这样提供了很好的可重用组件。 其次,当选择 Raz Pages 或 MVC 时,我们将被固定在SSR渲染应用程序中。 如果您想添加任何客户端交互性,一种选择是JS另一种选择是Blaz。那么为什么不只使用

.NET8 Blazor的Auto渲染模式的初体验
2024/5/27 11:34:57

.8发布后,Blaz支持四种渲染方式静态渲染,这种页面只可显示,不提供交互,可用于网页内容展示 使用Blaz Server托管的通过Server交互方式 使用WebAssembly托管的在浏览器端交互方式 使用Auto自动交互方式,最初使用 Blaz Server,并在随后访问时使用 WebAssembly 自动进行交互式客户端呈现。 自动呈现通常会提供最快的应用启动体验。 体验 通过VS创建Blaz应用时,选择Blaz Web App这个新模板。过程中可以看到有四种模板可供选择。我们可以选择Auto来

NET8 ORM 使用AOT SqlSugar 和 EF Core
2024/5/27 11:34:56

. AOT介绍 .8的本地预编机器码 AOT,它几乎进行了100%的自举。微软为了摆脱C++的钳制,做了很多努力。也就是代码几乎是用C#重写,包括了虚拟机,GC,内存模型等等。而需要C++做的,也就仅仅是引导程序,本篇通过代码来看下这段至关重要的引导程序的运作模式。 .支持功能 SqlSugar M使用AOT操作数据库 SqlSugar已经完美支持了. aot,下面DEMO包含了 建表 、插入、查询、删除和更新 解压后直接布就可以发布成AOT文件了 aot_testmaster.rar Nuge

【re】[HGAME 2023 week3]kunmusic -- .net程序逆向,z3库约束
2024/5/27 11:34:54

附件下载下来有三个东西。点开exe,发现是鸡哥判断应该是.程序(. 是一个免费的跨平台开源开发人员平台,用于生成许多不同类型的应用程序。 凭借 .,可以使用多种语言、编辑器和库来生成 Web、移动应用、桌面应用、游戏和 IoT 应用)可以用dnspy打开,那个exe和json打开后都没发现什么,接着打开dll文件点进去Main函数看看这里有对 Resources.data 的数据进行加密,下一步我们将data文件dump下来将dump的文件按照上面的加密异或104,我们看看异或后是什么文件,或是什么数据

C#12中的Primary Constructors(主构造函数)
2024/5/27 11:34:50

什么是主构造函数 把参数添加到class与recd的类声明中就是主构造函数。例如class Person(string name) {private string _name = name } 这种写法与以下代码写法一样class Person {private string _namepublic Person(string name){_name = name} }需要注意的是,类的所有其他构造函数都必须通过 this() 构造函数调用直接或间接调用主构造函数。class Person(stri

WPF --- 如何重写WPF原生控件样式
2024/5/27 11:34:50

引言 上一篇中 WPF 重写DataGrid样式,因新产品UI需要,重写了一下微软 WPF 原生的 DataGrid 的样式,包含如下内容:基础设置,一些基本背景色,字体颜色等。 滚动条样式。 实现圆角表格,重写表格的一些基础样式,例如 CellStyle ,RowStyleRowHeaderStyle ColumnHeaderStyle等。重写过程中,遇到了两个问题:如何获取 WPF 原生的 DataGrid 的样式? 滚动条样式中,如何固定滚动条长度?本篇文章分享一下这两个问题的解决办法。解决方法

[WPF]标记扩展(Markup Extension)
2024/5/27 11:34:43

XAML是基于XML的语言,其遵循并扩展了XML的语法规则。其中一项扩展就是标记扩展(Markup Extension),比如我们经常使用的绑定Binding和x:Type。 什么是标记扩展 标记扩展允许在XAML标记中使用特殊的语法来动态地为特性(Attribute)赋值或执行其他操作。简单来说,在XAML中,所有为XAML元素特性(Attribute)赋值时,使用花括号{}包裹起来的语句就是标记扩展。这么定义不是特别严谨,因为转义序列也是以花括号{}作为标记的,但不是标记扩展。[1] 后边提到的x:A

使用MVVM Toolkit简化WPF开发
2024/5/27 11:34:43

最近. 8 的 WPF 推出了 WPF File Dialog改进,这样无需再引用 Win32 命名空间就可以实现文件夹的选择与存储了,算是一个很方便的改进了。顺手写了一个小的 WPF 程序,在使用 ModelViewViewModel(MVVM) 模式的时候,我不想使用 Prism 等重量级的框架,找了一个轻量级的 MVVM Community Toolkit (以下简称 MVVM Toolkit)。在现代 WPF 应用程序开发中,遵循 MVVM(ModelViewViewModel)模式已成为一种标

WPF --- TextBox的输入校验
2024/5/27 11:34:43

引言 在WPF应用程序开发中,数据校验是确保用户输入数据的正确性和完整性的重要一环。 之前在做一些参数配置功能时,最是头疼各种参数校验,查阅一些资料后,我总结了数据校验方式有两种:ValidationRule IDataErrInfo接下来分别介绍这两种校验方式。ValidationRule ValidationRule 是一个抽象类,提供了抽象方法 Validate() 它是WPF中用于数据验证的一种机制,它可以在用户输入数据之前或之后执行自定义的验证逻辑。可以轻松地实现对数据的格式、范围、逻辑等方面的

如何通过 wireshark 捕获 C# 上传的图片
2024/5/27 11:34:42

一:背景 1. 讲故事 这些天计划好好研究下tcpip,以及socket套接字,毕竟工控中设计到各种交互协议,如果只是模模糊糊的了解,对分析此类dump还是非常不利的,而研究协议最好的入手点就是用抓包工具 wireshark,废话不多说,这篇通过 wireshark 提取一个小图片作为入手。 二:wireshark 图片抓包 1. 捕获图片 为了方便演示,我们就用最简单的 http 上传图片的方式,客户端代码如下:fm method="post" action="HomeUpload" enctype="

Net 高级调试之九:SOSEX 扩展命令介绍
2024/5/27 11:34:41

一、介绍    今天是《 高级调试》的第九篇文章。这篇文章设计的内容挺多的,比如:扩展的断点支持,如何查找元数据,栈回溯,对象检查,死锁检测等等,内容挺多的。功能特别强大,使用特别方便,但是需要说明一点,这些功能不是 SOS 的功能,是 SOSEX 的扩展功能,但是,这一系列功能只是支持 Framewk,在 Ce 跨平台版本是不支持的。虽然这些都是基础,如果这些掌握不好,以后的高级调试的道路,也不好走。当然了,第一次看视频或者看书,是很迷糊的,不知道如何操作,还是那句老话,一遍不行,那就再来一遍,还不

.NET8依赖注入新特性Keyed services
2024/5/27 11:34:40

什么是Keyed service Keyed service是指,为一个需要注入的服务定义一个Key Name,并使用使用Key Name检索依赖项注入 (DI) 服务的机制。 使用方法 通过调用 AddKeyedSingleton (或 AddKeyedScoped 或 AddKeyedTransient)来注册服务,与Key Name相关联。或使用 [FromKeyedServices] 属性指定密钥来访问已注册的服务。 以下代码演示如何使用Keyed service:using Microsoft

为了性能,慎用递归
2024/5/27 11:34:40

慎用递归 起因: 在学习Rust的时候,有一道语法练习题是计算斐波那契数列的第N项的值,这是一道非常简单的题,但是引发了一个使用递归性能问题,考虑到用Rust的人不多,后面的代码都是C#的,因为C#的语法更大众一些,更好看懂 第一次解 public static ulong FibonacciNumberRecursion(int n) {if (n == 1)return 0else if (n == 2)return 1else{return FibonacciNumberRecursion(n 1

记一次 .NET 某券商论坛系统 卡死分析
2024/5/27 11:34:39

一:背景 1. 讲故事 前几个月有位朋友找到我,说他们的的web程序没有响应了,而且监控发现线程数特别高,内存也特别大,让我帮忙看一下怎么回事,现在回过头来几经波折,回味价值太浓了。 二:程序到底经历了什么 1. 在线程上找原因 这个程序内存高,线程高,无响应,尼玛是一个复合态问题,那怎么入手呢?按经验推测,大概率是由于高线程数引发的,相信大家都知道每个线程都有自己的栈空间,所以众人拾柴火焰高,可以用 !address summary 观察下线程栈空间。0:000 !address summary Usa

.NET 6.0 中的 await 原理浅析
2024/5/27 11:34:39

前言看过不少关于 await 的原理的文章也知道背后是编译器给转成了状态机实现的但是具体是怎么完成的回调又是如何衔接的一直都没有搞清楚这次下定决心把源码自己跑了下终于豁然开朗了本文的演示代码基于 VS2022 + . 6示例 public class Program {static int Wk(){Console.WriteLine("In Task.Run")return 1}static async Task TestAsync(){Console.WriteLine("Befe Task.Run"

Unity播放Hap格式视频 (大分辨下流畅播放以及帧同步解决方案)
2024/5/27 11:34:38

前言:之前对于项目上播放大分辨率视频(特别是大于4k分辨率的)常常会感觉相当的头疼最开始使用的是Unity自带的VideoPlayer发现效果并不理想更换为AVPro后发现播放是流畅了但不能操作视频快进只要一快进就会出现卡顿最后偶然间发现了一款用于播放Hap格式视频的插件才最终解决了这一问题(最后发现AVPro有一个 Ultra Edition版本也能播放Hap格式视频)这个插件就是强大的DemolitionMediaHap!使用流程:该插件DX11版本需要Unity2021及以上才能使用如需使用DX12

和 ChatGPT 聊聊 .NET 编译和执行背后的那些事儿
2024/5/27 11:34:36

1 . 编译、构建、执行涉及到哪些概念 在 . 编译、构建和执行中,涉及到以下概念:C# 或 Visual Basic . 等编程语言: 这些是 . Framewk 使用的主要编程语言。开发人员使用这些语言编写应用程序和代码。 Roslyn: Roslyn 是 . 编译器平台,提供编译器和代码分析的 API。它对代码进行语法和语义分析,构建抽象语法树 (AST),并将源代码编译为中间语言 (IL) 代码。 中间语言 (IL): 这是 . 中间代码,类似于字节码,由 Roslyn 编译源代码生成。IL 是独

记录工作项目中使用的插件(持续更新中)
2024/5/27 11:34:36

1.HighLightingSystem 用于3D物体高亮显示 在项目中的使用:导入插件后在需要高亮显示的3d物体上附加Highlighter组件,在需要显示高亮效果的摄像机上附加Highlighting Renderer组件。在代码中调整Highlighter属性即可控制物体高亮效果的开关、闪烁。 使用场景:提示玩家点击,或鼠标进入物体后给一个选中效果 总结:写shader实现3D物体高光效果似乎也不难,写shader实现2D的高光效果有些麻烦且效果不一定好,不知道该插件有没有2D高光效果。如果想让UI

Net 高级调试之八:代码审查及杂项命令
2024/5/27 11:34:36

一、简介    今天是《 高级调试》的第八篇文章。这篇文章设计的内容挺多的,比如:如何查看方法的汇编代码,如何获取方法的描述符,对象同步块的转储,对象方法表的转储,托管堆和垃圾回收器信息的转储,CLR 的版本,GC 模式,等等,内容挺多的。内容虽然挺多,但是这些都是高级调试的基础。虽然这些都是基础,如果这些掌握不好,以后的高级调试的道路,也不好走。当然了,第一次看视频或者看书,是很迷糊的,不知道如何操作,还是那句老话,一遍不行,那就再来一遍,还不行,那就再来一遍,俗话说的好,书读千遍,其意自现。     

每个.NET开发都应掌握的C#多线程知识点
2024/5/27 11:34:35

上篇文章讲述了C#特性(Attribute)知识点,本文将介绍多线程的知识点。多线程编程是现代软件开发中的重要组成部分,它能够充分利用多核处理器,提高应用程序的性能和响应性。C#作为.开发的主要语言,提供了强大的多线程支持。本文将介绍C#多线程知识点,帮助.开发者更好地应对多线程编程。 1.多线程基础 1)进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。创建进程多用于桌面应用,web开发也可以创建但用的不多,可以用System.Diagnostics.