.NET
文章平均质量分 84
ludewig
这个作者很懒,什么都没留下…
展开
-
Avalonia学习实践(三)--一个对话框引发的惨案
跨平台开发最令人头疼的是在一个平台上能正常运行,换到另外一个平台就不行了,尤其是那些细小的功能,来回的代码修改、重新编译、发布运行着实令人崩溃。在桌面操作系统中,对文件的选择、查找是很常见的操作,因此系统对话框算是一个桌面UI库最基本的需求了。来看看通过解决一个小小对话框的问题又学到了什么。原创 2022-05-14 17:45:17 · 3771 阅读 · 0 评论 -
Avalonia学习实践(二)--跨平台支持及发布
Avalonia主打跨平台,号称一套代码支持Windows, macOS, Linux, iOS, Android操作系统,其基础是基于.NET Standard 2.0的一系列库,也就是只要平台能支持.NET Standard 2.0,就能运行Avalonia开发的应用。然而理想很丰满、显示很骨感,并不是说跨平台Avalonia没有做到,而是过程中免不了会有些小问题。1.支持的平台运行平台版本WindowsWindows8及其以上版本(Window7也能用,但不保证没问题)原创 2022-05-14 16:14:28 · 8622 阅读 · 5 评论 -
Avalonia学习实践(一)--示例
Avalonia是基于.NET的跨平台UI框架,能够支持在Windows、Linux、MacOS等操作系统中运行客户端。在官方的MAUI没有发布最新稳定版,对于客户端程序的跨平台开发仍然是不错的选择,尤其是已经有WPF基础的,能够很快上手。0.开发环境开发工具:VisualStudio 2019处理架构:x86架构(AMD系列)操作系统:Windows10,统信UOS家庭版1.安装VS插件打开VS“扩展>管理扩展”,搜索“Avalonia”,安装“Avalonia for Visual原创 2022-05-12 23:50:28 · 10055 阅读 · 5 评论 -
SSL证书填坑指南
近期在工作中用到了SSL证书,在开发调试过程中遇到了一系列的问题,对其中的一些问题进行总结。1.创建自签名SSL证书linux环境下使用系统自带的OpenSSL生成自签名SSL证书,支持多个域名及IP地址,适合内网或无域名的情况。#生成私钥(RSA加密算法、2048位加密、输出文件名rf_dev.key)openssl genrsa -out my.key 2048#移除私钥中的密码openssl rsa -in my.key -out my.key#生成证书(配置文件路径san_dev.c原创 2021-10-15 09:02:47 · 1397 阅读 · 0 评论 -
从零开始搭建.NET Core版搜索引擎(十一)--项目实践及性能优化
实践是检验真理的唯一标准,只有在实际项目中用一用才能感受到Lucene.NET带来的性能变化。以手上的已有项目为例进行改造,看一看使用Lucene.NET后成果。1.创建索引硬件配置为AMD Ryzen5900处理器,16GB内存,SSD硬盘。应用采用默认配置,RAMBufferSizeMB默认为16MB,最大独立线程数MaxThreadStates默认为8,IndexWriter使用单实例方式,采用文件形式存储索引。共57569条数据,创建索引耗时5787688毫米,约96分钟,即一个半小时左右原创 2021-10-09 21:08:02 · 636 阅读 · 0 评论 -
从零开始搭建.NET Core版搜索引擎(十)--如何在项目中使用
目前索引操作及检索查询相关的方法都是内置在项目内的,需要将其提取出来发布成公共类库,这样在业务项目中就可以安装使用了。那么就将项目放到GitHub上并发布成NuGet包吧!1.发布为NuGet包1.1.新建项目迁移代码新建.NET Standard类库项目Muyan.Search,目标框架为.NET Core 3.1,将所有相关代码迁移到项目中并根据代码文件用途重新调整文件结构。1.2.新增服务入口为了便于在其他项目中使用,增加类ServiceCollectionExtension用于定义服务原创 2021-10-09 20:57:06 · 709 阅读 · 0 评论 -
从零开始搭建.NET Core版搜索引擎(九)--Facet维度查询
前面几篇文章讲了索引创建、检索等一系列操作,说到底索引这个东西就是为了更快的查询信息,常见的模糊搜索可以实现,那么统计分析作为一种特殊的搜索当然也可以实现。Lucene.NET提供了Facet相关类用于维度统计分析。原创 2021-10-08 13:10:23 · 368 阅读 · 0 评论 -
从零开始搭建.NET Core版搜索引擎(八)--查询结果高亮显示
很多搜索引擎的检索结果都会将匹配的关键词高亮显示出来,便于用户的快速识别,Lucene.NET当然也提供高亮功能。1.高亮功能实现1.1.安装Lucene.NET.HighLightLucene.NET的高亮功能由Lucene.NET.HighLight包实现,使用NuGet管理器安装,建议与Lucene.NET保持相同版本。1.2.修改查询方法高亮显示是一个锦上添花的功能,所以打算把是否高亮设置为搜索输入项的可配置项,同时高亮的功能实现也在具体的查询方法中体现。搜索输入项修SingleSe原创 2021-10-03 15:40:50 · 636 阅读 · 3 评论 -
从零开始搭建.NET Core版搜索引擎(一)--Lucene基础概念及示例
近期使用了ELK系列组件,不由的感慨其功能的丰富和强大,伴随而来的就是另一个想法“ELK太重,用在简单的小型项目上有些鸡肋,能不能做一个轻量版的搜索引擎用于微小型项目呢?”。下面将会有一系列的文章来描述整个过程,每篇不会太长,但每篇相比前篇都会有所改进。原创 2021-09-27 08:50:56 · 3239 阅读 · 0 评论 -
从零开始搭建.NET Core版搜索引擎(二)--简单项目示例
上一篇中实现的示例作为一个简单演示还行,但是作为通用方法使用就差的远了。本篇会对Lucene的基本操作进行完善,同时对公共方法进行提取,使其更适合在.NET Core项目中使用。1.基本方法完善1.1.删除索引 #region 删除所有索引 /// <summary> /// 删除所有索引 /// </summary> /// <param name="route">路由</param> public void DeleteAllIndex(原创 2021-09-27 13:00:50 · 653 阅读 · 0 评论 -
从零开始搭建.NET Core版搜索引擎(七)--引入JieBa分词
在了解了lucene的工作原理和流程后,就可以更进一步对原有代码进行改进了。在原有项目中使用的是默认的StandardAnalyzer,只能将文本分割成单个词,对于中文并不是很友好,所以本次将替换使用自定义分词器。1.使用JieBa分词根据Lucene的源码,只需要继承基类Analyzer即可实现自定义的分词器。此外在原有的SearchManager中已经预留的泛型接口,也可以很方便的接入。1.1.自定义Analyzer实现public class JieBaAnalyzer : Analyzer原创 2021-09-30 20:12:14 · 1295 阅读 · 0 评论 -
从零开始搭建.NET Core版搜索引擎(六)--Lucene工作原理及流程
在前面几篇中对于关键词索引的创建和检索已经基本实现,但如果想要再继续深入就有必要理解Lucene.NET的工作原理和工作流程。1.工作原理当我们想从大量的信息查询某个特定的信息时,不仅需要知道这个特定信息是否存在,而且需要知道这个特定信息在什么位置。这种情况下遍历所有信息去查找这个特定的信息并不是一个明智选择,查找的成本会极其巨大。建立索引则是一种很好的解决思路,索引类似目录、标签。就好比字典、书籍的目录,我们可以通过目录快速定位到相关的章节,而不必翻看每一页,这样能极大的缩短查找时间,毕竟查询的核心诉原创 2021-09-30 20:08:08 · 896 阅读 · 0 评论 -
从零开始搭建.NET Core版搜索引擎(五)--查询方法扩展
目前的查询方法过于简单,而且无法与实际业务中的实体建立关系,因此本篇文章就来描述对查询方法的扩展。1.查询多个字段的检索方法1.1.定义接口及输入输出项查询输入项SingleSearchOption:public class SingleSearchOption:SearchOptionBase{ /// <summary> /// 检索关键词 /// </summary> public string Keyword { get; set;原创 2021-09-29 20:42:11 · 606 阅读 · 0 评论 -
从零开始搭建.NET Core版搜索引擎(四)--与数据库实体关联
经过上次的改造,可以实现对实体对象中的特定成员创建索引,但从实际的应用上来看,需要检索的数据内容格式多种多样,可能会有HTML、XML等。另外一些自定义的数据结构可能是以JSON等特殊规则形式存储的,对于这些情况就需要单独对数据进行分割处理。1.索引基本概念回顾1.1.索引文件结构索引文件的结构是:索引(Index)段(Segment)文档(Document)域(Field)词(Term)1.2.常用FieldBinaryDocValuesFie原创 2021-09-29 12:53:26 · 595 阅读 · 0 评论 -
.NET工程师知识图谱--数据存储
1.知识图谱1.1.关系型数据库名称说明SQL Server微软出品的关系型数据库,操作延续符合微软产品的一贯特点,具有操作简便、稳定性高的特点。OracleOracle甲骨文公司的一种关系型数据库管理系统。Oracle是一种高效率、可靠性高、适应高吞吐量的数据库方案。拥有系统可移植性好、使用方便、功能强大。相对的,对硬件要求高、价格昂贵、管理操作比较复杂、技术要求也相对较高。MySQL同样是Oracle旗下产品,为多种编程语言提供API支持,具有体积小、速度快、原创 2021-09-22 21:41:19 · 365 阅读 · 0 评论 -
.NET工程师知识图谱--大数据
1.知识图谱1.1.数据采集名称说明网络爬虫按照一定规则自动抓取网站信息的程序,可以为数据收集提供来源。Flume分布式、高可靠、高可用服务,可以有效收集、聚合、移动大量的日志数据。Flume的设计目的是要向Hadoop集群批量导入基于事件的海量数据。Logstash开源服务器端数据处理管道,可以同时从多个数据来源采集数据和转换数据,并将数据传输至存储中。Beats轻量级数据采集产品,包含用于收集网络流量数据的Packetbeat,用于收集系统、进程和文件原创 2021-09-21 09:00:14 · 529 阅读 · 0 评论 -
.NET工程师知识图谱--基础知识
.NET工程师需要了解和掌握一些基础知识,也就是作为专业技术人员需要的专业通识。1.知识图谱1.1数据结构名称说明栈存储线性元素的物理结构,具有后进先出的操作特性。堆是heap,栈是stack,堆栈是stack。包含入栈和出栈两个操作。队列一种线性结构,允许在队列的的一端插入数据,在另一端删除元素。插入元素的一端叫队尾,删除元素的一端叫队首。数组一种线性结构,用一组连续的内存空间来存储一组具有相同类型的数据。树非线性数据结构,由结点或顶点和边组成,不存原创 2021-09-20 20:26:29 · 775 阅读 · 0 评论 -
如何理解.NET开发中的MVVM模式
虽然网上有很多文章讲解MVVM模式原理及实现,但是毕竟拾人牙慧,学习消化后用自己的语言表达出来才会更深刻的理解。1.MVVM模式的由来1.1.关联知识在谈起MVVM模式时,总会有相关的话题被提起,那就是MVC模式和MVP模式。正如图中和字面意思表示的,MVC、MVP、MVVM这三种设计模式相互联系又有所区分。相同的是,三者都具有M(Model)和V(View)两部分。其中:Vie...原创 2019-02-11 11:48:20 · 3045 阅读 · 0 评论 -
.NET平台常见技术框架整理汇总
使用.NET平台开发有段时间了,在网上资料的基础上做了进一步整理,汇集了.NET平台常见的技术框架。参考资料:基于.NET平台常用的框架整理1.知识网络2.分类清单2.1.分布式缓存框架名称说明地址Microsoft Velocity微软自家分布式缓存服务框架Memcahed高性能的分布式内存对象缓存系统。它基于一个存储键/值对的hashmap,...原创 2019-02-06 08:51:48 · 30149 阅读 · 7 评论