- 博客(280)
- 资源 (13)
- 问答 (2)
- 收藏
- 关注
原创 unity 如何渲染大场景
剔除无关内容:通过视锥体剔除、遮挡剔除,只渲染视野内可见的物体。分级降低精度:用 LOD 系统为不同距离的物体提供不同精度的模型 / 贴图,平衡性能与视觉效果。动态加载卸载:将大场景拆分为小块,通过流加载只加载玩家当前区域的内容,避免一次性加载全部资源导致内存溢出。遵循这三个核心原则,再配合渲染管线优化、合批、纹理压缩等辅助手段,就能高效渲染超大场景并保证流畅运行。
2026-02-09 10:51:00
534
原创 PostGIS+GeoServer+OpenLayers 数据加载无显示问题排查及自定义坐标系配置文档
本文针对PostGIS→GeoServer→OpenLayers全链路中空间数据加载无显示的问题,提出系统排查方案。核心问题是坐标系不一致或投影定义丢失,特别是自定义/工厂平面坐标场景。排查步骤包括:检查PostGIS的SRID定义、验证GeoServer图层配置、注册OpenLayers自定义投影、分析网络请求等。重点阐述了工厂平面坐标的专属配置方法:在PostGIS注册自定义SRID(900000-999999范围),使用恒等投影(+proj=identity),并保持全链路投影定义一致。关键解决思路是
2026-02-05 09:57:38
561
原创 Postgresql导入几何数据(shp,geojson)的几种方式
导入前需完成的安装,所有导入方式的核心前提为:目标数据库必须启用 PostGIS 扩展,否则空间数据无法导入 / 识别。
2026-02-05 09:39:27
628
原创 abp backgroundjobs后台作业
如果应用程序即将关闭,而我们不想阻塞后台任务,则可能需要执行取消操作。如果抛出异常,系统会在计算出的等待时间后自动重试该后台作业。例如,RabbitMQ 提供程序使用任务名称来确定 RabbitMQ 队列的名称。如果您的模块仅依赖于此包,则可以独立于实际的实现/集成。如果您希望在另一个进程中执行后台作业,并禁用当前进程的后台作业,通常需要这样做。后台作业模块默认已安装到启动模板中,其工作方式取决于您的 ORM/数据访问选择。nuget 包包含默认的后台作业管理器,并且默认情况下会将其安装到启动模板中。
2026-01-20 10:04:36
615
原创 abp 获取所有权限
获取ASP.NETCore 原生手动注册的授权策略名称,来源是;:获取ABP 所有已定义的权限(静态 + 动态)提取权限名称(ABP 会自动将这些名称映射为授权策略);两者Union合并:返回系统中「所有可用的授权策略名称」,兼顾原生策略和 ABP 自动映射的权限策略,是 ABP 桥接原生授权系统的关键逻辑。前者是 “开发者手动加的策略”,后者是 “ABP 自动生成的权限策略”;合并后就是 “系统里所有能用来做授权的策略名称”。if (!?continue;
2026-01-08 11:05:00
955
原创 ABP 框架 RolePermissionValueProvider 源码详解
是 ABP 框架内置的角色维度权限值提供者,继承自抽象类,是权限检查责任链中的核心节点(优先级低于专门负责 “角色维度” 的权限判定:从用户的中提取所属角色,检查这些角色是否被授予目标权限;遵循 ABP 权限检查的 “责任链模式”:仅当(用户独立权限)未判定为Granted时,才会执行该类的检查逻辑;支持单权限、多权限批量检查,内置去重、短路优化,保证权限检查的性能;是 ABP 角色权限体系的核心实现,所有 “基于角色的权限控制” 最终都通过该类落地。重写父类抽象方法,负责。
2026-01-08 09:56:49
679
原创 abp PermissionDefinitionProvider
是 ABP 框架中定义静态权限的核心抽象基类,是开发者向系统声明 “静态权限元数据” 的标准化入口,也是(静态权限存储)的唯一数据来源。作为接口的抽象实现,规定了权限定义的 “生命周期阶段”(预定义、核心定义、后定义);强制开发者实现Define抽象方法(核心权限定义),同时提供可重写的PreDefinePostDefine方法(扩展生命周期);所有继承该类的自定义实现会被 ABP 框架自动扫描、执行,最终将权限定义收集到中。csharp运行abstract。
2026-01-07 16:56:53
873
原创 abp PermissionDefinitionManager源码解析
是 ABP 框架权限系统的核心管理类,负责统一管理「静态定义」和「动态定义」的权限元数据(权限、权限组、资源权限),是上层权限检查、权限展示(如 Admin UI)的基础数据入口。作为接口的默认实现,封装对「静态权限存储」和「动态权限存储」的统一访问;遵循「静态权限优先于动态权限」的规则,保证权限定义的稳定性(静态权限通常是代码中固定定义的,动态权限是运行时 / 数据库配置的);所有方法均为异步设计,适配 ABP 框架的异步编程规范。作用。
2026-01-07 16:25:54
1004
原创 JSEncrypt
JSEncrypt 是一个基于 JavaScript 实现的 RSA 非对称加密算法库,核心作用是在前端(浏览器/Node.js)完成 RSA 加密、解密、签名、验签操作,无需开发者手动实现复杂的 RSA 加密逻辑。// 2. 准备 RSA 密钥对(实际开发中,公钥由后端提供,私钥保存在后端)// 4. 后端用私钥解密(仅示例,实际逻辑在后端执行)// 私钥(示例,仅后端使用,禁止前端存储/传输)// 3. 前端用公钥加密数据(以加密密码为例)// 公钥(示例,需替换成真实业务公钥)
2026-01-06 14:35:54
1054
原创 IAbpApplicationConfigurationAppService 详解(ABP 框架)
你的自定义类是对的“复用 + 扩展”,核心逻辑是 “原生基础配置 + 业务定制配置 = 统一返回”,避免前端多次请求。重复开发问题:无需手动实现 “权限、本地化、设置” 等基础配置查询逻辑;接口冗余问题:前端一次请求获取所有基础配置,减少网络请求;配置统一问题:提供标准化的配置结构,降低前后端协作成本。你的是该接口的「业务扩展」—— 复用原生基础配置能力,叠加路局、版本等业务配置,最终实现 “一次请求获取所有初始化数据”,是 ABP 框架 “开箱即用 + 灵活扩展” 设计理念的典型实践。
2026-01-06 14:28:45
681
原创 ABP 框架中的 HttpContextWebClientInfoProvider
在 ABP 的应用服务(Application Service)、控制器(Controller)中注入,用于业务逻辑(如记录下单客户端信息、IP 权限控制)。若默认解析逻辑不满足需求(如自定义 UserAgent 解析规则、从 Cookie 中获取客户端标识),可通过实现接口替换默认实现:csharp运行// 自定义客户端信息提供者(替换默认实现)// 自定义 IP 解析逻辑(示例:从自定义请求头获取)get// 优先从自定义请求头 "X-Custom-Real-IP" 获取 IP。
2026-01-05 17:32:33
672
原创 ASP.NET Core 中基于角色的授权
微软原文使用了identity标识认证,在这里为了方便了解,就不使用微软的那个了,咱们只要在创建jwt的时候,给一个角色就可以了。
2025-09-18 15:49:38
490
原创 使用 IAuthorizationRequirementData 自定义授权策略
在Core 授权系统中,是一个接口,用于,通常用于实现(例如:判断用户是否有权限操作某个特定资源,而资源 ID 等数据需要在运行时动态获取)。
2025-09-18 15:40:38
408
原创 ASP.NET Core 中的简单授权
ASP.NET Core 中的授权通过属性及其各种参数控制。在其最基本的形式中,通过向控制器、操作或Page 应用 Razor 属性,可限制为仅允许经过身份验证的用户访问该组件。
2025-09-10 17:42:31
373
原创 app.UseAuthentication()内部原理解析
这段代码是ASP.NETCore 认证系统的 “管道入口”,通过简单的扩展方法封装了认证中间件的注册逻辑,使得开发者可以通过一行代码启用认证功能,背后则完成了 “标记中间件状态” 和 “注入认证逻辑处理器” 的核心工作。接下来来看AuthenticationMiddleware内部做了什么set;});return;.Principal!.Succeeded??false)这段代码是。
2025-09-10 10:08:10
841
原创 ASP.NET Core 身份验证概述
身份验证是确定用户标识的过程。是确定用户是否有权访问资源的过程。在 ASP.NET Core 中,身份验证由身份验证服务负责,而它供身份验证使用。身份验证服务会使用已注册的身份验证处理程序来完成与身份验证相关的操作。已注册的身份验证处理程序及其配置选项被称为“方案”。身份验证方案由Program.cs参数是方案的名称,未请求特定方案时会默认使用此名称。如果使用了多个方案,授权策略(或授权属性)可对用户进行身份验证时要依据的一个或多个身份验证方案。
2025-09-09 08:42:33
791
原创 ASP.NET Core中间件解析
中间件是处理HTTP请求和响应的组件,通过请求委托构成执行链。请求按注册顺序流经中间件管道,响应则反向返回。中间件可以在请求和响应阶段分别执行逻辑,或通过短路终止后续处理。ASP.NET Core支持三种中间件定义方式:内联中间件直接编写管道逻辑,类中间件封装复用逻辑,工厂模式中间件可控制生命周期。中间件与过滤器不同,前者是基础请求处理机制,后者专用于MVC/WebAPI的action执行。中间件通过Run、Map和Use方法配置,形成嵌套的请求委托链,实现灵活的请求处理流程。
2025-09-08 15:28:01
989
原创 单片机helloworld系列(2)
摘要:本文介绍了使用STC89C52RC单片机实现LED点亮的实验过程。硬件方面需要准备单片机、电阻、晶振等元器件,搭建电路时将5V电源连接单片机40脚,配置串口通信和晶振电路。软件使用Keil编写程序,定义P2.1引脚控制LED,主函数设置低电平点亮LED。编译生成HEX文件后,通过STC-ISP工具烧录时需先断电。作者提醒注意电压控制,避免烧毁芯片(此前实验中曾烧坏STC12C2052)。实验所需元器件成本较低,总价约30元左右。
2025-07-06 13:48:30
204
原创 单片机之helloworld
学习任何一门新的语言都是从helloworld入手,当程序输出helloworld,就代表着你的环境搭建完成,学习单片机的helloworld是什么呢,在继续下面的内容之前,有的人可能要问了,要不要学电子电路,元器件,数电呀,我只能说会更好,不会也没有关系,先学会用,在慢慢琢磨里面的门道,就像我们开始学习编程的时候,你不是计算机专业的,你还要先去学习计算机原理吗,这是没有必要的事情,这就是一个工具,知道怎么用就可以了。我们可以通过写一个程序,让单片机的某几个I/O接口作为输入,来接收我们的命令;
2025-07-03 11:08:35
418
原创 SharpMap经纬度转墨卡托投影
本文介绍了使用ProjNET和GeoAPI库进行坐标转换的方法。主要内容包括:1)创建WGS84和WebMercator坐标系;2)定义坐标转换函数PtsToPts;3)构建精度模型和UTM50坐标系;4)实现WGS84转UTM50的坐标转换;5)计算转换后两点间的距离(以米为单位)。这些方法适用于需要处理地理坐标转换的场景,如将经纬度转换为投影坐标或计算真实距离。代码示例展示了从创建坐标系到实际转换的完整流程。
2025-06-24 08:45:09
174
原创 Win32_ProcessorWMI无效类解决方法
重建存储库或重新编译所有 .mof 文件作为第一步操作可能会损坏系统和/或已安装的应用程序。11.全部重新编译mof文件,有副作用,未执行,12.以安全模式启动系统,查看wmi是否正常。关于这个问题,我尝试了很多种方式。全部编译可能会出现问题。
2024-10-25 15:47:43
946
原创 ArcEngine 非SDE方式加载postgis数据
要对修改操作进行保存,就需要将指定的要素中的geometry再次转回wkb然后通过sql语句修改pg中的指定记录即可,思路很简单,问题在于拼接SQL字符串上面,因为arcengine通过geometry得到的仍然是一个byte[],这个东西是没办法拼到sql语句中的。注意点: 要注意的是因为ArcEngine中对wkb的支持是byte[]之间的转换,所以在进行数据库取数据时用postgis的这个函数将GIS数据转成byte[],这样写 asbinary(the_geom)
2024-07-19 17:48:06
689
原创 Postgresql导入几何数据的几种方式
通过arcmapsde的方式导入,前提是arcmap要和pgsql版本匹配,首先装好arcmap,在arcmap的目录里面有一个数据支持,在里面查看sde支持的数据库版本,如果不匹配,则无法成功导入。首先,电脑要安装postgresql和对应版本的postgis。这里注意一下:我目前使用的arcmap是10.2.2,无法打开postgresql12.9的数据库。第二步:启用数据库的postgis,如果不启用,就会导入不进来。最后一步:可以通过arcmap和qgis查看导入的效。
2024-07-19 14:45:03
581
原创 C# 中优雅的动态序列化接口返回数据
通过使用`Json.NET`库中的`JObject`和`JToken`类,我们可以优雅地动态序列化接口返回的数据。当接口返回的数据结构不固定时,我们可以使用`JObject`或`JToken`来动态处理这些数据。本文将介绍如何使用C#中的`Json.NET`(也称为`Newtonsoft.Json`)库来优雅地动态序列化接口返回的数据,并提供示例代码。如果你的JSON数据包含更复杂的结构,如嵌套的数组或对象,你可以使用`JToken`来处理它们。3. 使用JToken处理更复杂的JSON结构。
2024-04-17 09:59:17
701
原创 DevComponents DotNetBar.Office2007RibbormFrm
通过DevComponents DotNetBar.RibbonControl里面的CaptionFont 调整字体大小。DevComponents DotNetBar.Office2007RibbormFrm设置窗体栏的高度。CaptionHeight调整标题栏高度。
2024-01-25 16:30:35
535
原创 Windows下面基于pgsql15的备份和恢复
上面的方式简单是简单,但是每次备份都要重新备份整个库,库大的情况下,太过于浪费时间,推荐使用增量备份,每天进行一次归档保存,恢复的时候,只需要把基础数据恢复一次,然后逐次恢复归档数据就可以了。红色字体为说明,可看可不看归档备份的原理:PostgreSQL在执行写入操作时,对数据文件的任何修改信息,首先会写入WAL日志,然后才会对数据文件做物理修改。如果数据库服务器掉电或意外宕机,则PostgreSQL重新启动后首先会读取WAL日志,然后根据日志对数据进行恢复。
2024-01-10 08:50:59
2089
原创 ef core code first pgsql
在使用efcode来操作pgsql的时候,总有些基础配置流程项目建立完之后后面就很少用,总是忘掉,写个文档记忆一下吧。基于net 6.0。PostgreSQL数据提供的支持EF Core的基础类库,是通过EF Core使用PostgreSQL数据库的根本。使用Guid(对应Postgre数据的类型为uuid)类型的主键必须,int/long类型的主键不添加也没问题。添加相关引用依赖的方式有多种,可以通过NuGet程序包管理器控制台的Install-Packege命令。1.创建一个mvc项目和一个EF类库。
2023-11-14 17:27:28
597
原创 dev多控件导出到Excel多个sheet页
上面这些链接都能实现,但是都没有关于如何给工作簿重命名的功能,有一位知道还要收费,其实就是一行配置的问题。
2023-11-09 17:46:05
452
原创 DevExpress(GridControl基础样式)
2.隐藏嵌入式导航器的追加按钮+,所有导航器的操作可以自行查阅API。3.去掉第一列前的空白列,去掉下面黄色框中的列。1.设置GridControl底部导航器可见。4.禁用选中单元格的样式。9.设置单元格文本内容居中。8.设置标体行文本居中。6.设置偶数行的样式。7.设置奇数行的样式。
2023-10-31 17:28:00
481
原创 0基础学three.js环境搭建(2)
然后在回到命令行界面安装three.js环境。至此项目搭建完毕,已经可以运行了,关于上面的代码先不要注重,先把环境搭建起来,后面每一行代码我都会详细的讲解的,关于上面的代码我也是从别的地方借鉴的,只要是运行起来,是一个绿色的正方体,项目就完成了。这是0基础学three.js系列中的第二篇,在这篇里面我会带着大家把开发环境搭建起来,关于开发环境,方式很多,如果你没有基础,就跟着我的步骤一步一步来,保你不出错。首先安装node环境,关于node是干啥的,先不要管,装上就行了,只需要这一个环境,别的都不需要。
2023-09-22 20:49:48
505
原创 0基础学three.js前言(1)
从今天开始,我将更新0基础学three.js系列。在学习之前,如果你一点基础没有,千万别去学别的,听别人推荐学js,学html,学webgl,我在这里很负责人的告诉你,three就是three,和上面的没有关系,即使你一点基础没有,直接学three的api也能学会,别被别的支线任务干扰你得主线任务,因为你本来就没有基础,你不可能短时间内学会所有东西,学基础就是浪费时间,因为根本记不住,还不如把有限的精力用在three上面,直接学习,别管别的。下一节课介绍如何搭建three环境。
2023-09-21 20:01:35
287
原创 关于npoi插入一条斜向上得线记录一下
但是呢,在使用XSSF得时候,使用同样方式得写法就不生效了,根据chatgpt给出的答案。我也不知道这个答案是否准确,但是我接纳他的建议,画一条斜向下得线,然后垂直翻转过来。在使用hssf可以直接按照行列插入。
2023-08-11 11:15:02
444
原创 Cesium相机理解
我们可以把这个相机代入我们得大脑,heading控制着我们左右摇头,pitch控制着上下点头,roll控制着歪头。我得理解就是,相机由两部分构成,位置和姿势,位置很好理解,就是在什么地方作为拍摄点,姿态角就可以理解为怎么看,就比如我们拍照得时候,找个角度拍摄。roll=-90°,相当于我们往左歪着脖子看,也可以理解为左耳朵贴地侧躺,一半眼睛看天,一半眼睛看地,拍照出的效果如下,只能看到一半得区域。关于相机得其他api,我上面引用得那两篇文章,讲解得很不错,我就不再抄一遍了,有不懂的可以交流一下。
2023-08-08 18:08:27
929
原创 overpass-turbo下载铁路线
我也没啥好的批量方法, 大规模的数据都是从osm星球下载的,有部分不存在的数据就通过上述方法一条一条处理。上面的198498代表在osm中铁路线的id,这个id获取流程是从osm网站查询出来的。
2023-08-02 08:46:31
684
原创 vite+vue3+cesium环境搭建
2.安装cesium插件:vite-plugin-cesium。3、配置vite.config.js。6、配置HelloWorld.vue。4、清空style.css中的样式。清空一切不需要的,设置样式使得全屏。1.创建一个Vite项目。5、配置App.vue。
2023-06-20 14:57:46
1412
原创 通过WMTSCapabilities.xml加载和Service=GetCapability加载有什么区别
通常情况下,使用 Service=GetCapabilities 加载更为常见,因为它是标准的 WMTS 服务操作,并且可以根据实际情况动态获取最新的 Capabilities 信息。通过 WMTSCapabilities.xml 加载和通过 Service=GetCapabilities 加载的区别在于获取 WMTS 服务的 Capabilities(能力)信息的方式。- 客户端应用程序可以解析和解释这个 XML 文件,从中提取所需的信息,并使用这些信息来配置和加载地图瓦片。
2023-06-06 09:22:25
1170
【数据库恢复技术】基于WAL文件和基备份的PostgreSQL数据恢复方法及应用场景:针对误操作和部分表数据恢复的详细步骤与注意事项
2025-05-16
绿色版apache
2019-01-26
图解HTTP详细教程
2019-01-30
WCF编程第二版
2019-01-30
Elasticsearch技术解析与实战
2019-03-02
Revit二次开发将3d视图悬浮出来
2021-04-01
devexpress 控件是ribbioncontrol
2019-05-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅