自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 使用 xLiAd 模板项目快速打造内容管理系统

xLiAd 模板项目是一个简单的快速开发平台,基于 AspNetCore 3.1,可实现在数据库设计完成的情况下,几分钟搭建好内容管理平台。集成了以下的功能: 1,基本的增删改查。数据库连接使用基于 Dapper 的 xLiAd.DapperEx(https://github.com/zl33842901/DapperEx),支持SqlServer、MySql,有计划支持 Pg。 2,日志功能。日志使用 xLiAd.DiagnosticLogCenter(https://gith...

2021-05-05 11:54:28 170

原创 五分钟为你的AspNetCore项目集成图片服务器

为什么要使用图片服务器?把图片放到本地不就好了? 项目小的时候,这样做当然没有问题;项目大了服务多了,还这样做问题就出来了。比如: 需要使用缩略图,各个带图片的服务需要自己实现缩略图功能。 服务引用其他服务图片时,确认使用哪个域名是个问题(测试环境域名?生产环境域名?换域名了更麻烦)。 各服务的承载服务器都要留出放图片的空间,不易管理。 研发没有服务器的权限,想管理图片时只能找 IT 部门。 …… 那我们 .Neter ...

2021-02-23 22:09:07 656

原创 编写自定义的模型绑定器

接手了一个重构旧项目的任务,后端是PHP的,前端用的几个零散的东西。重构的原则是 前端基本不动,后端改造成 dotnetcore 。过程基本顺利,遇到的一个问题的解决方式觉得值得说一下。问题是这样:一个页面的某一个接收参数,有从A页面来的,也有B页面来的,但是A和B页面提交过来的格式是不一样的,A页面是正常的字符,B页面过来的是Unicode 编码,%u5ba2%u6237 的这种。接收的地方大概是这样:public IActionResult Search(string cust_id, st

2020-08-18 23:08:44 282

原创 gRPC-Web 踩坑记

从张队长的公众号得知 gRPC-Web 发布了,出于对 gRPC 的喜爱,决定周末踩踩坑。 从 https://github.com/grpc/grpc-dotnet 克隆了代码下来,examples/Browser 这个项目就是 gRPC-Web 的例子。打开 Browser.sln 看一下目录结构。 整个解决方案只有 Server 这一个项目。 先看 Protos 文件夹,里面只有一个 greet.proto ,熟悉 gRPC 的都知道,是 gRPC 的接...

2020-06-22 16:38:30 7722 1

原创 SonarQube 踩坑记

Sonarqube 是个自动化 review 工具,研发人员的好帮手。我在部署和应用 Sonarqube 对.Net 项目进行分析时遇到了不少问题,现在记录并分享一下,希望能帮到各位读者。 如果自己安装Sonarqube ,还是有一些复杂的,好在Sonarqube 有官方的Docker 镜像,拉过来就行了。https://blog.csdn.net/qaz520...

2019-11-28 17:29:31 1663

原创 .NetCore 在 Docker 中跑起二维码

因为要做一个APP扫码登录PC站点的功能,找了几个 .NetCore 中生成二维码的方案。 几年前在 .NetFramework 下做过生成二维码的功能,用的 ThoughtWorks.QRCode ,不过它不支持 .NetCore。而且我要跑在 Docker 里,所以光支持 .NetCore 不行,还要支持 linux。搜 ThoughtWorks.QRCode ...

2019-11-10 22:22:20 545

原创 .NetCore 3.0 中使用 Aspectcore + Autofac

.NetCore 3.0 正式版已经发布了,最近尝试的几个测试项目都用的 .NetCore 3.0 。但是在使用时发现,以前使用 Aspectcore 和 Autofac 的方法不好用了。 之前的方法都是 在 ConfigureServices 方法里,用 Autofac 从程序集里加载注入的接口和实现,然后用AspectCore 注册动态代理,然后构建 ISer...

2019-10-30 10:48:57 6270 3

原创 开源数据版本管理组件 -- VersionRepository

在开发中经常会遇到管理数据变化的需求。例如:绩效系统需要根据季度开始时某人的上级领导来确定由谁来打绩效分,游戏系统根据活动结束时间的积分发放奖励…… 如果数据库中只存了最新的状态,就无法实现这样的功能了。 这时就需要我们制作一套“事件溯源”系统。当然,我们这次实现的“事件溯源”并不是真正DDD上的“事件溯源”,真正的事件溯源是以领域事件作为驱动实现的。我们的这个系统...

2019-10-08 16:15:16 534

原创 作为一个 dotnetcore 程序员,我常用的 docker 操作

相对于Windows部署,Docker 部署简单、快速。我负责的项目,最频繁时一天要部署十几次。而且,用户基本感受不到站点更新的,因为不到 1 秒就更新完毕了。 那我来分享一下平时常用的 Docker 操作,希望对于刚入坑的童鞋有所帮助,老手请忽略本文。一,安装 Docker。 现在我拿到了一台 CentOS 7的机器,第一步就是安装 Docker...

2019-09-14 22:09:06 468

原创 基于 Nextcloud 的二次开发

Nextcloud 是个不错的网盘系统,开源免费,支持 Windows Ad 域,而且开放了很多接口可以用于二次开发。最近基于 Nextcloud 做了几个二次开发的功能,下面介绍一下过程。第一个需求是和公司业务系统对接起来,实现建立项目时自动为项目负责人建立一个同名文件夹和子文件夹。第二个需求是开放一个页面,可以浏览项目文件夹里的子文件夹、文件等。第三个需求是可以在开放页面下载列出的...

2019-05-28 11:48:31 13466 8

原创 使用 ExpressionMove 对表达式参数进行替换

一,为什么表达式的参数需要替换? 在使用领域模型编程时,我们的领域模型经常和数据模型是不一样的。领域模型最为贴近业务,数据模型反应的是数据库表。这二者的不一致经常给我们带来代码的复杂化。在模型的转换上,我们有 AutoMapper 这样的工具进行转换。 在查询时,领域模型的查询表达式是不能直接给数据模型进行查询的,我也没有找到有谁造过这样的轮子。 比如,我们现在有领域模型 Mode...

2019-05-25 16:47:45 307

原创 使用 FluentValidation 实现数据校验、验重

最近项目里用到了 FluentValidation 对网站用户输入的数据进行了验证,使用起来比较舒服,下面整理一下项目中集成的过程。需要集成的项目是一个 asp.net core 2.1 版本的项目。第一步,安装 FluentValidation.AspNetCore,VS会自动安装依赖的 FluentValidation、DI 等包。安装完成后,找到你要验证的数据类,比如我这里是一个修改密码...

2019-05-18 12:27:46 5268

原创 Windows服务器使用Jenkins自动部署

由于公司正在开发的工作流的几个项目经常需要测试,所以我用 Jenkins 实现了一个持续集成部署的方案。持续集成部署的意义也在这里:在经常性的重复性部署工作中解放自己。由于.net framework 的项目占多数,公司的测试机都是WINDOWS系统,生产机也是WINDOWS系统。在WINDOWS系统安装 Jenkins 也很方便。先装 Jdk,就可以装 Jenkins 了。 注意选择插件...

2019-05-12 14:56:53 4380

原创 Visual Studio 2019 正式版初试

昨天(4月3日)VS正式版发布了,今天赶快来尝个鲜。因为公司还有其他人要用,为了节省时间,当然要做一个离线包。操作如下:1,下载VS安装程序,我下载的是社区版 vs_community__一堆数字.exe2,在空闲空间较大的盘,比如D盘,建一个新文件夹,可以起名叫 VS2019Offline3,在 vs_community__一堆数字.exe 所在的文件夹按住 Shift 键点右键,点“在...

2019-04-04 21:10:26 3961

原创 抓住领域驱动设计中模型的本质

最近公司安排了实现一个需求。要给不同层级的部门,分配个“审批人”的角色。有的部门分配,有的部门不分配。在实现审批功能时,让单据所在部门设置的审批人来审批。如果这个部门没有审批人,就往上追这个部门的父部门,父部门有审批人,就调用这个审批人,父部门没有,就再往上追,到公司这一层肯定会有一个审批人。但是,所有的部门按业务方向分为前台、中台、后台三种。还可能会为这三个方向分别安排一个审批人。如果查...

2019-03-23 21:42:23 258

原创 推荐开源数据库访问组件 - DapperEx

DapperEx 是一款数据库访问组件,支持 Sqlserver 和 PostgreSql。她提供了 Lambda 表达式方式的操作。她以 Dapper 作为底层,提供更方便快捷的数据库访问方式。适用平台: .Net Framework 4.5.1 及以上 .Net Standard 2.0 及以上。项目地址:https://github.com/zl33842901/DapperEx...

2019-03-16 22:03:57 651

原创 基础数据库查询优化

昨天检查一位小兄弟的代码,发现执行起来很慢,就找找原因优化一下。项目是C# WebForm  +  SQLSERVER  +  EF 的。开了 SQLSERVER 的 PROFILER 监听,发现有连续几条 READS (硬盘读取次数)在3万左右的记录。查询的语句如下:SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT

2016-12-29 17:47:35 189

原创 常用扩展方法总结

C#程序员最常用的几个扩展方法。

2016-09-19 11:49:03 787

原创 我的WCF数据服务(四)涅槃

网站以上面的方式运行了一段时间,速度很好。但是,心中隐隐有所不甘,本来 Lambda 表达式就是为了方便,如果都这样写,反倒要费事了。既然我能自己构建表达式,为什么不能改造已有的表达式呢?于是经过各种研究,反复试验,终于出炉了我觉得比较满意的一个表达式转换类。当用户在调用查询时,会使用这个类重建一个表达式,把里面的进程内变量替换成值。代码如下:using System.Collections.Gen

2016-08-19 14:16:13 327 1

原创 我的WCF数据服务(三)胜利

这个问题解决起来还颇费了一些周章。在搜索解决方案的时候,发现了这篇文章:http://blog.csdn.net/heshengfen123/article/details/17301079 和我遇到了同样的问题。作者使用了 Dynamic Expression API 这个组件解决了问题,我也按照文章上说的下载了这个组件,放到了项目里,于是代码变成了这样:int i = 3,rc;var q

2016-08-19 09:40:56 297

原创 我的WCF数据服务(二)独立

关于进程间的 Lambda 表达式的传递方法。进程间强类型数据传递。内存数据库。

2016-08-18 11:02:26 792

原创 我的WCF数据服务(一)瓶颈

起初,公司的网站是个小网站,每天访问几千IP,虽然我们两个技术看起来很忙,其实老板让做的东西都是些零碎东西,差不多百分之八十工作都是页面改版。看这个页面不顺眼,就改一版;那个页面不顺眼,也改一版。有时候一个页面一年内能改四五次。后来公司来了个SEO,作网站的优化。不久,网站开始卡,有时一卡几分钟,后来一天要崩溃几次。这样的情况持续了一星期,老板受不了了,说咱们别老是改版了,看看是哪出了问题,于是有

2016-08-17 18:25:06 1025

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除