学习实践
文章平均质量分 79
ludewig
这个作者很懒,什么都没留下…
展开
-
GIS开发入坑(四)--QGIS导入POI数据并实现简单处理分析
POI数据,英文全称Point of Intersesting,中文的意思是兴趣点,指的是在地图上有意义的点:比如商店、酒吧、加油站、医院、车站等。POI数据能够赋能时空行为、城市规划、地理信息等研究,因此获取准而全的POI数据是开展科研工作的基础。而QGIS可作为处理分析POI数据的利器。原创 2022-12-20 11:05:46 · 2624 阅读 · 1 评论 -
GIS开发入坑(三)--QGIS制作行政区划及背景图层
QGIS,功能强大的GIS工具,地理信息开发中的必备神器,今天以南京市为例制作行政区划并使用电子地图为数字底图进行呈现。原创 2022-12-20 10:51:13 · 4934 阅读 · 4 评论 -
如何在UnrealEngine虚幻引擎中加载Web页面
对于非游戏开发团队来讲,在面向非游戏领域的UE项目中嵌入Web页面并实现交互无疑能充分利用现有开发资源和流程,WebUI插件能提供完整的Web页面加载及交互手段,让团队中的UE开发工程师和Web开发工程师能够各司其职、紧密配合。WebUI的安装配置过程可详细参考官方文档。原创 2022-12-19 20:00:00 · 4199 阅读 · 0 评论 -
如何在UnrealEngine虚幻引擎中进行版本管理
项目团队中的分工协作必不可少,在UE项目中进行版本控制非常必要。UE支持使用Perforce和SVN进行版本管理,此处选用自己比较熟悉的SVN。原创 2022-12-19 19:00:00 · 3337 阅读 · 1 评论 -
如何获取UnrealEngine虚幻引擎的WebUI插件
WebUI插件能够将成熟的HTML页面作为应用的组成部分,同时解决了UE与Web的交互问题。原创 2022-11-10 12:52:05 · 5977 阅读 · 5 评论 -
Avalonia学习实践(五)--树形结构实现
使用AvaloniaUI的树形控件在MVVM模式下实现读取特定目录下的所有子目录及文件,在View层中定义树形控件并绑定对应的ViewModel。原创 2022-10-24 18:59:03 · 1430 阅读 · 0 评论 -
Avalonia学习实践(四)--实现最简单的SQLite操作辅助类
在桌面应用程序开发中,如果有数据存储的需要,同时对性能要求不是极高,又想应用能够随时随地运行,轻便小巧的SQlite自然是不二之选。本篇其实跟Avalonia没啥关系,SQLite的操作辅助类网上也是一大堆,这里就权当温故知新了。...原创 2022-08-08 21:44:25 · 863 阅读 · 0 评论 -
GIS开发入坑(一)--GeoServer发布DEM地形图
下载DEM地形数据,在GeoServer中添加数据存储,创建图层,为图层添加样式,创建图层组,预览地形图。原创 2022-07-30 11:02:59 · 5660 阅读 · 0 评论 -
Windows环境下安装PostgreSQL及PostGIS
前面一篇是如何在Docker中安装PostgreSQL及PostGIS,这篇就来记录下Windows环境下如何安装PostgreSQL及PostGIS。原创 2022-07-12 23:11:33 · 3235 阅读 · 0 评论 -
Docker安装PostgreSQL及PostGIS
开源数据库PostgreSQL第一次用,由于要存储地理信息数据,也用了PostGIS插件,顺手记录下在Docker环境中的安装配置过程。原创 2022-07-10 22:18:35 · 3559 阅读 · 0 评论 -
DataTable转HTML--实现单元格自动合并的方法探究
在关系型数据库中,数据往往是以列表的形式存储,但实际上物理结构上并列的数据存在逻辑上的关系,比如父子关系的树形结构等。同样数据库存储的数据在界面上展示时也需要将类似的关系展现出来,比如表格中常用的单元格合并。原创 2022-05-24 07:39:14 · 607 阅读 · 1 评论 -
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 评论 -
从零开始搭建.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版搜索引擎(七)--引入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 Core版搜索引擎(三)--通用方法扩展
经过上一篇的改造,可以作为公共方法使用了,但是通用性和抽象性还不够,所以继续从通用性着手来扩展方法。1.泛型扩展对前面的代码进行分析发现,多个方法都涉及到分析器Analyzer、存储目录Directory、索引操作器配置IndexWriterConfig的实例化,那么就考虑将这些对象作为属性抽离出来。1.1.公共属性提取/// <summary>/// 分析器/// </summary>public Analyzer Analyzer { get; set; }//原创 2021-09-27 21:23:05 · 568 阅读 · 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版搜索引擎(一)--Lucene基础概念及示例
近期使用了ELK系列组件,不由的感慨其功能的丰富和强大,伴随而来的就是另一个想法“ELK太重,用在简单的小型项目上有些鸡肋,能不能做一个轻量版的搜索引擎用于微小型项目呢?”。下面将会有一系列的文章来描述整个过程,每篇不会太长,但每篇相比前篇都会有所改进。原创 2021-09-27 08:50:56 · 3239 阅读 · 0 评论 -
ELK学习实践(九)--IK中文分词、词频统计及词云展现
Elasticsearch提供了分词功能,能对文本进行分词并进行聚合查询。今天就利用Elasticsearch的IK中文分词插件对学习强国中的几篇文章进行关键词分析,并使用Kibana生成词云。1.Elasticsearch安装IK分词器下载地址:github/medcl/elasticsearch-analysis-ik进入Elasticsearch目录输入命令行安装IK分词器.\elasticsearch-plugin install https://github.com/medcl/el原创 2021-09-17 00:11:15 · 2044 阅读 · 0 评论 -
全能程序员系列(十三)--性能分析工具PerfView的使用
Windows平台下有一款性能分析神器PerfView,可以对CPU、磁盘、内存、进程资源进行跟踪,是性能分析不可或缺的好工具。原创 2021-09-12 10:04:36 · 14375 阅读 · 5 评论 -
API接口性能不达标?--记一次问题分析过程
近期工作中遇到一个问题:API接口性能始终达不到设定要求,虽然不是什么大型电商系统,但是100用户的并发量都慢的要命就有点说不过去了。1.问题描述系统的入口–登录接口功能正常,进行并发测试时会出现卡顿、延迟等现象,并且测试结果并不稳定,有时快有时慢。单次访问时长在3s以内,100现场并发访问总时长能到达1-3分钟。初期以为时硬件资源及网络的限制,在硬件资源扩容后仍没有明显改善。此外在配置了负载均衡策略后也没有显著提升。因此就有了以下从头到尾的问题排查和分析过程。2.原因分析测试工具输出的结果只是原创 2021-09-11 21:08:30 · 1414 阅读 · 0 评论 -
全能程序员系列(十二)--开发人员该怎么做PPT?
见过不少开发人员一提到PPT就头疼,也见过不少开发人员做的PPT惨不忍睹,今天就聊一聊开发人员该怎么做PPT。原创 2021-09-09 17:59:05 · 1607 阅读 · 0 评论 -
ELK学习实践(八)--批量导入CSV文件及聚合查询
以项目中的问题跟踪记录为例进行导入分析,同时测试excel文档批量转换、CSV文件批量导入、过滤器数据转换及聚合查询。1.Excel文件批量转换为CSV文件少量的Excel文件可以手动另存为CSV文件,但是几十上百份的文件就有点费工夫了,还是需要一种批量转换的方式。打开Excel,选择“文件>选项”,打开“Excel选项”窗口,选择“自定义功能区”,勾选“开发工具”。在Excel主界面选择“开发工具>Visual Basic”。双击“Microsoft Excel对象”中的She原创 2021-08-26 06:56:25 · 1277 阅读 · 0 评论 -
ELK学习实践(七)--地理信息呈现
ELK提供了GEO相关操作以支持在地图上展示地理信息,这就举个例子。1.编制测试数据以设备信息为模板创建测试数据,包含字段为"设备编号"、“设备管理单位”、“设备型号”、“纬度”、“经度”、“备注”。使用Logstash导入测试数据,这里的测试数据包含在多个CSV文件中,所以顺便测试了多文件导入。2.创建索引模板为了让数据符合地图数据的要求,首先创建模板,目的是让位置数据为geo_point类型。PUT _template/equipment{ "order": 10, "index_原创 2021-08-24 20:03:14 · 242 阅读 · 0 评论 -
ELK学习实践(六)--导入CSV文件并创建可视化图表
近期在整理项目总结材料,顺便利用学到的ELK知识对项目管理过程数据进行抽取、导入和分析。手上的数据来源有禅道管理系统、会议纪要和问题跟踪记录,禅道管理系统用于日常任务分配和工时记录,具有较高的参考价值,首先就以禅道管理系统中的数据为例进行工时统计。1.导出源数据禅道管理系统提供了数据导出功能,所以很方便拿到想要的数据。登录后进入“项目>任务”,选取所有任务,点击“导出”,选择需要的字段并另存为CSV文件。2.通过Logstash将数据导入Elasticsearch启动Elasticsear原创 2021-08-24 06:35:44 · 1251 阅读 · 0 评论 -
ABP学习实践(十四)--执行自定义SQL语句,创建动态表
在日常的开发工作中,有时我们需要在应用程序中直接执行SQL语句,比如动态创建数据库表、自定义查询等,利用ABP框架的仓储特性和EntityFramework Core的特性就能实现这个功能。1.执行自定义SQL语句网上可以查到不少通过EFCore执行SQL语句的文章,但有些是比较早的,相关方法可能已经废弃了,也有结合ABP仓储实现的,但有些地方感觉也没写明白。1.1 创建自定义仓储在领域层(一般是Core项目)中添加自定义仓储接口。 public interface ISqlReposito原创 2021-04-23 00:51:35 · 2185 阅读 · 3 评论 -
EntityFramework Core连接国产达梦数据库(续篇)
悄悄的,达梦数据库的EFCore驱动更新了。在经过今年2月份对达梦数据库的EFCore驱动测试后,发现还是存在一些问题的,官方回应称会在后续版本中完善。在8月份的时候安装了最新版本的达梦8,发现EFCore驱动在7月下旬已经悄悄更新了,也是最近才抽出时间来进行测试。下面就是本次测试血与泪的过程记录。1.测试环境.NET Core 3.1EntityFrameworkCore 3.1Windows 10 x64 专业版DM v8(达梦)ABP v5.9(.NET Core 3.x版)本次原创 2020-09-11 13:35:26 · 3173 阅读 · 8 评论 -
让DotnetCore.CAP和SignalR接力数据推送
DotnetCore.CAP是一款用于实现数据最终一致性的开源类库,而SignalR是微软ASP.NET/ASP.NET Core体系下的实时数据传输解决方案,两者看起来没有任何交集,但我们的业务需求可以让它们携手同行。...原创 2020-04-28 22:15:35 · 1506 阅读 · 1 评论 -
Docker(Windows版)安装zookeeper+kafka
近期在对已有项目进行升级维护时时需要还原生产环境中关于kafka数据订阅的问题,但是又不想在自己电脑上装一堆东西,所以想到了用Docker安装kafka用来还原生产环境进行测试。1.安装zookeeper启动Docker服务,打开CMD窗口或powershell窗口。搜索zookeeper镜像docker search zookeeper拉取zookeeper镜像docker pul...原创 2020-04-27 22:14:34 · 3634 阅读 · 0 评论 -
EntityFramework Core连接国产达梦数据库
近期意外发现了国产达梦数据库对.NET Core环境下EFCore的支持,把测试过程分享如下。1.测试环境.Net Core 2.1EntityFramework Core 2.2.4DM v8(达梦)Window 10 x642.踩坑记录近些年数据库等基础设施国产化的呼声越来越高,达梦也算国产数据库中知名度较高的了,不过开发生态环境还不够完善,使用过程中也是各种坑。2.1达...原创 2020-02-25 18:02:44 · 6447 阅读 · 4 评论 -
Aspose.Words for Net之在Word中创建表格
Aspose.Words是一款优秀的工具,能在不依赖Microsoft.Office环境的条件下实现对Word文档的处理和生成。通过Aspose.Words提供的相关API,能在Word中根据需要创建各种各样的表格。表格的展现形式往往是由所要展现的数据结构形式所展现的,不同的数据结构就需要不同的表格来呈现,所以首先要清楚自己有什么样的数据结构或什么样的展现形式,这样就能理清思路通过Aspose...原创 2020-02-25 00:20:51 · 2602 阅读 · 0 评论 -
ELK学习实践(五)--Logstash实现不同数据库间同步
上篇文章中介绍了将SQLServer中的数据通过logstash同步到Elasticsearch,但logstash能做的不止这些,实际上logstash作为一个数据采集工具支持更多的输入和输出。如果将两个不同的数据库分别作为logstash的输入和输出,那么通过一定的配置就能实现不同数据库间的数据同步。安装环境软件环境版本操作系统Windows 10 prefessio...原创 2019-10-23 20:13:27 · 1486 阅读 · 2 评论 -
ELK学习实践(一)--基于Docker安装配置Elasticsearch
安装环境软件环境版本操作系统Windows 10 prefessional容器工具Docker Desktop for Windows容器可视化工具Kitematic命令行工具PowerShell1.安装Elasticsearch查询Elasticsearch镜像docker search elasticsearch下载Elastic...原创 2019-09-05 15:56:46 · 270 阅读 · 0 评论