- 博客(652)
- 资源 (29)
- 收藏
- 关注
原创 ABP中的数据过滤器
本文首先介绍了ABP内置的软删除过滤器(ISoftDelete)和多租户过滤器(IMultiTenant),然后介绍了如何实现一个自定义过滤器,最后介绍了在软件开发过程中遇到的实际问题,同时给出了解决问题的一个未必最优的思路。一.预定义过滤器 ABP中的数据过滤器源码在Volo.Abp.Data[2]包中,官方定义了2个开箱即用的过滤器,分别是软删除过滤器(ISoftDelete)和多租户过滤器(IMultiTenant),想必大家对这2个内置的过滤器已经比较熟悉了。下面重点说下通过IDataFi
2022-08-08 22:36:19 295
原创 ABP 6.0.0-rc.1的新特性
2022-07-26官方发布ABP 6.0.0-rc.1版本,本文挑选了几个新特性进行了介绍,主要包括LeptonX Lite默认主题、OpenIddict模块,以及如何将Identity Server迁移到OpenIddict。据ABP官方公众号介绍,ABP 6.0.0稳定版的计划发布日期为2022-09-06,具体以实际发布日期为准。一.LeptonX Lite默认主题 LeptonX Lite算是LeptonX Theme的一个简单实现,使用的是Razor Pages技术,而LeptonX
2022-08-07 08:15:00 740
原创 基于ABP和Magicodes实现Excel导出操作
前端使用的vue-element-admin框架,后端使用ABP框架,Excel导出使用的Magicodes.IE.Excel.Abp库。Excel导入和导出操作几乎一样,不再介绍。文本主要介绍Excel导出操作和过程中遇到的坑,主要是Excel文件导出后无法打开的问题。一.Magicodes.IE库1.Magicodes.IE库介绍 Magicodes.IE是一个导入导出的通用库,它支持Dto导入导出、模板导出、花式导出以及动态导出,支持Excel、Csv、Word、Pdf和Html。总之,
2022-08-05 15:11:10 566 2
原创 机器学习(公式推导与代码实现)--sklearn机器学习库
一.scikit-learn概述1.sklearn模型 sklearn全称是scikit-learn,它是一个基于Python的机器学习类库,主要建立在NumPy、Pandas、SciPy和Matplotlib等类库之上,基本上覆盖了常见了分类、回归、聚类、降维、模型选择和预处理模块。2.sklearn源码下图是sklearn在GitHub上的源代码,编程语言主要包括:91.4%的Python,6.5%的Cython,1.3%的C++和0.8%的Other。如下所示:二.模型选择和预处理1
2022-08-03 07:50:53 858
原创 典型相关分析CCA计算过程
本文介绍了CCA解决的问题,CCA原理的推导过程,以及对计算结果物理意义的解释。并且通过SPSS和R操作演示了一个关于CCA的例子。数据文件下载参考[8],SPSS输出结果文件下载参考[9],R代码文件下载参考[10]。一.CCA工作原理1.CCA定义 首先需要搞清楚典型相关分析(Canonical Correlation Analysis)解决了什么问题,它解决的是一组变量与另外一组变量的相关问题。举个例子,比如想要量化家庭特征与家庭消费之间的关系,其中,家庭特征包括户主的年龄、家庭的年收入和
2022-08-02 20:27:37 956
原创 ML.NET相关资源整理
在人工智能领域,无论是机器学习,还是深度学习等,Python编程语言都是绝对的主流,尽管底层都是C++实现的,似乎人工智能和C#/F#编程语言没什么关系。在人工智能的工程实现,通常都是将Python训练好的人工智能模型封装为REST API,以供其它的系统调用。虽然C#也确实天生就不合适搞人工智能的训练等,但是通过ML.NET这个开放源代码的跨平台机器学习框架,可以很容易的将人工智能集成到Web、移动、桌面、游戏和物联网应用中。这篇文章主要总结ML.NET的相关学习资源。一.ML.NET模型生成器和C
2022-07-29 07:41:25 483
原创 微信公众号授权登录后报redirect_uri参数错误的问题
在进行微信公众号二次开发的时候,需要通过授权码模式来进行微信授权。比如,在进行登录的时候,用户点击了登录按钮,然后弹出一个授权框,用户点击同意后,就可以获取用户的OpenId等信息了。这篇文章主要分享下配置过程和遇到的redirect_uri参数错误问题。等配置过程完毕,并且后端服务的问题都解决后,就会看到下面的授权框:一.服务器配置服务器配置主要是服务器地址(URL),令牌(Token),消息加解密密钥,消息加解密方式:点击配置按钮后,根据实际情况填写如下:如果参数配置正确,那么提交
2022-07-28 16:57:23 2341
原创 通过二级域名解决1台云服务器搭建多个公众号后端服务的问题
最近遇到的一个问题是如果在1台云服务器上部署2个公众号后台,该怎么操作的问题。由于公众号服务器配置的特殊性,比如正确响应微信发送的Token验证,必须以http://或https://开头,分别支持80端口和443端口。在微信群中咨询了下,有人回复说可以使用二级域名的方式,现在将该思路整理成文档,可能每个人的情况不太一样,仅供参考。一.申请云服务器并搭建环境以腾讯云为例,一般都是选择云服务器,或者轻量应用服务器。操作系统选择Windows Server 2012R2。操作系统有了,接下来就是通过服务
2022-07-28 07:54:33 911
原创 手动从0搭建ABP框架-ABP官方完整解决方案和手动搭建简化解决方案实践
本文主要讲解了如何把ABP官方的在线生成解决方案运行起来,并说明了解决方案中项目间的依赖关系。然后手动实践了如何从0搭建了一个简化的解决方案。ABP官方的在线生成解决方案源码下载参考[3],手动搭建的简化的解决方案源码下载参考[4]。一.ABP官方在线生成解决方案1.将在线生成解决方案跑起来首先进入页面https://abp.io/get-started,然后创建项目:然后头脑中要有一个项目之间的依赖关系图,不清楚的可以参考《基于ABP实现DDD》:截止目前为止,项目使用的.NET版本是6
2022-07-26 23:44:19 1800
原创 基于ABP实现DDD--领域逻辑和应用逻辑
本文主要介绍了多应用层的问题,包括原因和实现。通过理解介绍了如何区分领域逻辑和应用逻辑,哪些是正确的实践,哪些是不推荐的或者错误的实践。一.多应用层的问题1.多应用层介绍 不知道你们是否会遇到一种情况,通过ABP构建了一个后端的API项目,刚开始是为Web端项目(比如,Vue)提供后端接口服务的,随着项目的发展和业务的复杂,增加了移动端的App,或者公众号、小程序等,这样不仅要为Web端提供API服务,而且还需要为移动端的App,或者公众号、小程序等提供API服务。这个场景就是多应用层的问题。也
2022-07-25 00:23:09 261
原创 基于ABP实现DDD--实体创建和更新
本文主要介绍了通过构造函数和领域服务创建实体2种方式,后者多用于在创建实体时需要其它业务规则检测的场景。最后介绍了在应用服务层中如何进行实体的更新操作。
2022-07-24 12:51:28 491
原创 WinDbg实践--入门篇
WinDbg从字面意思就是Windows+Debug的组合,即Windows平台上的调试工具,可以调试用户模式、内核模式、dump文件等,总之知道它的调试功能非常强大就行了。WinDbg调试命令分为3种,分别是基本命令、元命令和扩展命令。基本命令和元命令是调试器自带的,元命令总以"."开头,而扩展命令总以"!"开头。后面的系列主要是通过例子+命令来实践WinDbg。一.配置微软符号服务器[没能成功] WinDbg在Windows程序中,通常都有一个和XXX.exe相同名字的XXX.pdb,pdb的
2022-07-23 19:38:56 2929
原创 基于ABP实现DDD--领域服务、应用服务和DTO实践
什么是领域服务呢?领域服务就是领域对象本身的服务,通常是通过多个聚合以实现单个聚合无法处理的逻辑。
2022-07-21 08:50:56 432
原创 基于ABP实现DDD--仓储实践
由于软件系统中可能有着不同的数据库,不同的ORM,仓储思想的本质是解耦它们。在ABP中具体的实现仓储接口定义在领域层,实现在基础设施层。仓储接口被领域层(比如领域服务)和应用层用来访问数据库,操作聚合根,聚合根就是业务单元。这篇文章主要分析怎么通过规约将业务逻辑从仓储实现中剥离出来,从而让仓储专注于数据处理。一.业务需求还是以Issue聚合根为例,假如有个业务规则是:判断是否是未激活的Issue,条件是打开状态、未分配给任何人、创建超过30天、最近30天没有评论。Issue聚合根如下:二.在仓储
2022-07-18 22:09:39 378
原创 标准化、归一化和正则化的关系
首先,标准化的英文是Standardization,正则化的英文是Normalization,正则化的英文是Regularization。标准化是特征缩放的一种方式,需要注意的是标准化之后的数据分布并不一定是正态分布,因为标准化并不会改变原始数据的分布。归一化的目的是消除不同量纲及单位影响,提高数据间的可比性。正则化的目的是为了防止过拟合。[5]。.........
2022-07-17 08:52:46 1246
原创 基于ABP实现DDD--聚合和聚合根实践
在下面的例子中涉及Repository、Issue、Label、User这4个聚合根,接下来以Issue聚合为例进行分析,其中Issue聚合是由Issue[聚合根]、Comment[实体]、IssueLabel[值对象]组成的集合。1.单个单元原则 简单理解,一个聚合就是由实体和值对象组成的集合,通过聚合根将所有关联对象绑定在一起,一个聚合是一个相对独立的业务单元。聚合和聚合根原则包括:包含业务原则,单个单元原则,事务边界原则,可序列化原则。接下来通过例子重点介绍下什么是单个单元原则,本质上是为
2022-07-15 12:49:08 638
原创 基于ABP实现DDD--DDD相关概念
什么是DDD呢?领域驱动设计[DDD]是一种针对复杂需求的软件开发方法。将软件实现与不断发展的模型联系起来,专注于核心领域逻辑,而不是基础设施细节。DDD适用于复杂领域和大规模应用,而不是简单的CRUD应用。它有助于建立一个灵活、模块化和可维护的代码库。一.DDD中的领域层和应用层相关概念DDD主要关注领域层和应用层。1.DDD中的领域层领域层中的基本概念有:(1)实体[Entity]实体就像面向对象中的对象,它包含属性和方法,并且有唯一的ID。(2)值对象[Value Object]值
2022-07-12 11:53:01 357
原创 使用CLion编译OGLPG-9th-Edition源码
OpenGL是一种可以对图形硬件设备特性进行访问的软件库,它的1.0版本发布于1994年7月,主要用于计算机图形学。随着AR和VR的发展,计算机图形学算法会变的日益重要,比如光线追踪[RayTracing]。一.编译源码使用CLion打开OGLPG-9th-Edition源码[1],在根目录下创建build文件夹,然后cd build,执行命令cmake ..,报错如下所示:解决方法是注释CMakeLists.txt文件中的92-94行代码:二.遇到问题 遇到无法打开文件glfw3_d.
2022-07-02 16:24:38 1840
原创 按照功能对Boost库进行分类
Boost库共包含160余个库/组件,涵盖字符串与文本处理、容器、迭代器、算法、图像处理、模板元编程、并发编程等多个领域。C++支持面向过程、面向对象、泛型、模板元、函数式共五种主要的编程范式,研究Boost库源码对于学习C++很有帮助。下面主要按照功能对Boost库进行分类。一.字符串和文本处理库(1)Conversion库对C++类型转换的增强,提供更强的类型安全转换、更高效的类型安全保护、进行范围检查的数值转换和词法转换。(2)Format库实现类似printf的格式化对象,可以把参数格
2022-07-01 18:22:46 605
原创 uni-app学习日记7
1.uniapp本地插件解析:本地插件是当前项目nativeplugins目录下的插件,适用于未发布到插件市场的私有原生插件进行云打包。如果是插件市场的插件,在插件市场购买后通过云端插件打包。2.uni-app中的App.vue文件解析:[1]App.vue是uni-app的主组件,所有页面都是在App.vue下进行切换的,是页面入口文件。[2]App.vue作用:调用应用生命周期函数、配置全局样式、配置全局的存储globalData。[3]应用生命周期仅可在App.vue中监听,在页面监听无效
2022-03-25 21:56:35 1733
原创 uni-app学习日记6
1.Modal模态框解析:弹出模态框,常用于消息提示、消息确认、在当前页面内完成特定的交互操作。2.box-sizing: border-box解析:元素的总高度和宽度包含内边距和边框(padding与border)。3.h5 hybrid方案解析:本质就是把浏览器嵌入app中,即webview。4.框架层+原生渲染解析:典型的代表是react-native,借助原生能力来进行渲染,组件最终都会被渲染为原生组件。5.框架层+自渲染引擎解析:典型的代表就是flutter,利用更底层的渲染能力
2022-02-27 22:03:18 1210
原创 ABP VNext学习日记30
1.IDS4中的/connect/token接口解析:固定写法,不是开发自定义的,只需要直接去使用就行了,注意调用方式时的输入参数。2.RequestPasswordTokenAsync解析:var response = await _httpClient.RequestPasswordTokenAsync(new PasswordTokenRequest{ Address = _discoveryResponse.TokenEndpoint, ClientId = "MyClie
2022-02-26 09:38:32 917
原创 R学习日记1
1.nparLD包解析:Nonparametric Analysis of Longitudinal Data in Factorial Experiments.2.data.frame取行或列解析:[1]data.frame[行号,]得到的类型是数据框[2]data.frame[,列号]得到的类型是该列的类型3.data.frame修改行列名解析:[1]可用rownames()及colnames()得到数据框的行列名[2]rownames(data.frame)[行号]或colnames
2022-02-20 08:21:46 330
原创 uni-app学习日记4
1.uni-app模板示例解析:[1]顶部选项卡[2]组件通讯[3]列表到详情示例[4]GlobalData和vuex2.手机号码登录解析:<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">快捷登录</button>3.原生渲染和webview渲染解析:[1]uni-app是vuejs的语法+小程序的API,它有独立的js引擎,原生能力的扩展基于独立js引擎,而不是基于web
2022-02-20 08:00:45 1535
原创 uni-app学习日记5
1.路由信息解析:[1]uni.navigateTo:保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面[2]uni.redirectTo:关闭当前页面,跳转到应用内的某个页面[3]uni.reLaunch:关闭所有页面,打开到应用内的某个页面[4]uni.switchTab:跳转到tabBar页面,并关闭其他所有非tabBar页面[5]uni.navigateBack:关闭当前页面,返回上一页面或多级页面2.uni-link解析:uni-link是一
2022-02-20 08:00:32 2814
原创 微信小程序学习日记7
1.微信小程序双线程模型解析:[1]逻辑层和渲染层分开加载,提供了管控型和安全性[2]沙盒环境运行JS代码,不允许执行任何和浏览器相关的接口,比如跳转页面、操作DOM等2.Vue的MVVM和小程序MVVM对比解析:[1]DOM Listeners: ViewModel层可以将DOM的监听绑定到Model层[2]Data Bindings: ViewModel层可以将数据的变量,响应式的反应到View层3.微信小程序声明周期函数解析:onLoad() { console.log(
2022-02-20 07:59:36 248
原创 Vue学习日记48
1.DateTimePicker解析:DateTimePicker由DatePicker和TimePicker派生,Picker Options或者其他选项可以参照DatePicker和TimePicker。[1]type:显示类型,默认数据类型为string,值包括year/month/date/week/ datetime/datetimerange/daterange2.@Provide用法解析:<script lang="ts">import { Provide, Vue }
2022-02-19 11:56:12 371
原创 Vue学习日记49
1.Pagination分页属性解析:[1]small:是否使用小型分页样式[2]background:是否为分页按钮添加背景色[3]page-size:每页显示条目个数,支持.sync修饰符[4]total:总条目数[5]page-count:总页数,total和page-count设置任意一个就可以达到显示页码的功能;如果要支持page-sizes的更改,则需要使用total属性 [6]pager-count:页码按钮的数量,当总页数超过该值时会折叠[7]current-page:当前页
2022-02-19 11:56:08 1478
原创 Vue学习日记47
1.创建基于webpack模板的新项目解析:vue init webpack myvue2.引入ElementUI解析:import ElementUI from 'element-ui'import 'element-ui/lib/theme-chalk/index.css'Vue.use(ElementUI)3.ElementUI.Dialog.props.closeOnClickModal.default = false解析:修改el-dialog默认点击遮照为不关闭。4.vue-
2022-02-18 14:21:13 960 2
原创 Vue学习日记46
1.typeof操作符解析:typeof 123; // 'number'typeof NaN; // 'number'typeof 'str'; // 'string'typeof true; // 'boolean'typeof undefined; // 'undefined'typeof Math.abs; // 'function'typeof null; // 'object'typeof []; // 'object'typeof {}; // 'object'2.Ja
2022-02-18 14:20:30 398
原创 Vue学习日记45
1.js中的this解析:[1]纯粹的函数调用,指全局对象[2]作为构造函数调用,指创建出来的对象[3]作为apply调用时[构造函数][4]事件回调函数中,指触发事件的DOM对象2.JS原型prototype解析:[1]每个构造函数都会有prototype属性,表示该函数的原型[2]prototype属性是作为一个对象来出现的,它上面有constructor属性指向构造函数本身[3]__proto__是所有js对象都有的一个属性,指向其构造函数的原型说明:[1]person.__p
2022-02-18 14:18:10 275
原创 Vue学习日记44
1.TS安装解析:npm install -g typescript2.TS数字类型解析:let decLiteral: number = 6;let hexLiteral: number = 0xf00d;let binaryLiteral: number = 0b1010;let octalLiteral: number = 0o744;3.元组Tuple解析:let x: [string, number];4.void类型解析:只能为void类型变量赋予undefined和nu
2022-02-18 14:18:04 516
原创 Vue学习日记43
1.File和FileReader对象解析:HTML5的File API提供了File和FileReader两个主要对象,可以获得文件信息并读取文件。2.Jsonp[JSON with Padding]解析:json的一种使用模式,可以让网页从别的域名[网站]那获取资料,即跨域读取数据。3.全局Ajax事件处理器解析:[1].ajaxComplete():当Ajax请求完成后注册一个回调函数。这是一个Ajax Event。[2].ajaxError():Ajax请求出错时注册一个回调处理函数,
2022-02-18 14:17:55 269
原创 Vue学习日记42
1.Vue Loader解析:Vue Loader是一个webpack的loader,它允许以一种名为单文件组件[SFCs]的格式撰写Vue组件。2.Vue Test Utils解析:Vue Test Utils是Vue.js官方的单元测试实用工具库。3.Axure Components解析:通过在Axure中导入Element组件库,可以在交互设计阶段方便地调用常用的组件。4.Sketch Template解析:从Element Template快速调用常用组件,在提升设计效率的同时,保证统
2022-02-18 14:17:45 1395
原创 Vue学习日记41
1.Form-Item属性解析:[1]prop:表单域model字段,在使用validate、resetFields方法的情况下,该属性是必填的。[2]validate:对整个表单进行校验的方法,参数为一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:是否校验成功和未通过校验的字段。若不传入回调函数,则会返回一个promise。[3]resetFields:对整个表单进行重置,将所有字段值重置为初始值并移除校验结果。2.vue-cli3.0中的public和assets解析:[1]
2022-02-18 14:17:37 325
原创 Vue学习日记40
1.affix: true解析:默认false,如果设置为true,那么它会固定在tags-view中。2.activeMenu: '/article/list’解析:当路由设置了该属性,则会高亮相对应的侧边栏。3.v-permission解析:指令权限,能简单快速的实现按钮级别的权限判断。4.vue-element-admin配置文件解析:[1].env.xxx:环境变量配置[2].eslintrc.js:eslint配置项[3].babelrc:babel-loader配置[4].
2022-02-18 14:16:58 1926
原创 Vue学习日记37
1.svg介绍解析:[1]SVG文件可以直接插入网页,成为DOM的一部分,然后用JavaScript和CSS进行操作。[2]SVG代码也可以写在一个独立文件中,然后用<img>、<object>、<embed>、<iframe>等标签插入网页。2.<path>标签解析:<path>标签用于制路径。<path>的d属性表示绘制顺序,它的值是一个长字符串,每个字母表示一个绘制动作,后面跟着坐标。[1]M:移动到[mo
2022-02-18 14:16:09 775
原创 Vue学习日记39
1.line-height属性解析:使用百分比设置行高:[1]normal:默认。设置合理的行间距。[2]number:设置数字,此数字会与当前的字体尺寸相乘来设置行间距。[3]length:设置固定的行间距。[4]%:基于当前字体尺寸的百分比行间距。[5]inherit:规定应该从父元素继承line-height属性的值。2.text-align-last属性解析:规定如何对齐文本的最后一行。3.overflow属性解析:overflow属性规定当内容溢出元素框时发生的事情。[1]v
2022-02-18 14:15:12 983
原创 PowerDesigner总结
一.数据库->配置连接1.配置数据连接2.添加数据源3.配置数据源4.输入登录账号5.选择默认数据库6.点击完成7.数据源测试二.数据库->连接1.连接数据源三.文件->反向工程->数据库1.新建物理数据模型2.数据库反向工程选项3.数据库反向引擎4.开始反向数据库5.反向数据库结果...
2022-02-15 22:13:22 395
人工智能干货推荐.txt
2019-06-20
flasky.zip
2019-05-29
TextRNN的TensorFlow实现
2019-01-24
ResNet的Keras实现
2019-01-22
ResNet的TensorFlow实现
2019-01-22
apache-ant-1.8.3-bin.tar
2014-11-02
概率与计算
2014-08-21
Git-1.9.4-preview20140611.exe
2014-07-15
python-delicious-master
2014-05-28
岭回归分析总结
2014-04-21
深入理解MySQL核心技术
2013-05-08
MySql常用命令详解
2013-05-08
云计算核心技术剖析
2013-05-04
JavaScript权威指南
2013-03-22
Snort入侵检测
2013-03-12
知者无畏:一个真实的病毒世界
2013-03-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人