每日收获
日期 | 收获 | 描述 |
2021年11月01日 | sonarcloud | 部门经理引入了sonarqube对C#代码进行扫描,这个软件需要在本地安装,可以通过代码扫描分析代码漏洞,提高编码质量。今天通过QQ群了解到github支持代码在线扫描,sonarcloud,不用搭建本地环境就能对代码扫描并进行分析。 |
2022年03月24日 | .net core认证 | .net core 的认证涉及到两个单词Authentication(认证)和Authorization(鉴权)。认证主要是告诉系统你是谁,而鉴权则是告诉系统当前用户拥有哪些访问权限。针对认证,我们可以自定义不同的方案来实现,框架内置的Cookie和目前流行的JWT都是比较靠谱的方案;针对鉴权,我们可以自定义不同的策略,可以根据用户、角色、方案名称等方式自定义鉴权。 |
2022年03月25日 | 分布式锁 | 所谓分布式锁,其实分布式锁效率非常低,非必要情况尽量不要使用分布式锁。常见的我们可以通过Redis来实现分布式锁。首先一个线程将某个特定的key写入redis并设置30秒过期,当程序片段执行完成后就将Redis中特定的key删除。另一个线程获取锁的时候通过SETNX设置key的值,如果失败就自循环,直到成功为止。此时如果线程1的操作超过30秒就会导致锁失效,因此还需要在获取锁之后开启一个续命线程,该线程每隔20秒就将key的有效期设置为30秒,释放锁之后就停止该线程。
说明:Redis中存在一个方法:SETNX KEY_NAME VALUE。 SETNX命令在指定的key不存在时为key设定指定的值 |
2022年04月23日 | 手写Promise | Promise在Angular中有Observable,都是类似的功能,都是为让异步回调用同步的方式来开发的解决方案。通过new Promise()实例化一个Promise对象,然后传入执行器,在执行器中确认下一步是执行成功还是失败。实例化Promise()后可以调用then方法,then方法将传入成功和失败的箭头函数,由Promise()执行器中的方法来确认下一步将执行成功还是失败,同时将上一步的返回值作为下一步的参数。 |
2022年04月24日 | ABP vNext |
ABP是基于模块管理的集合,所有功能开发都是基于模块的,最终把所有模块到加载到全局集合中。因此,学习ABP就是学习ABP的模块使用方式。 ABP中推荐的方式是领域驱动设计,领域驱动设计大致就是将业务和仓储完全分离,编写业务代码完全不考虑仓储持久化。 |
2023年04月22日 | Project任务类型 |
Project开始之前需要进行环境设置,主要包含日期格式、日历类型和任务类型。核心是任务类型,任务类型有三个值域,分别是:固定工期、固定工时、固定单位。通过菜单>文件>选项进行设置。工期、工时和单位的关系是:工期=工时*单位。当设置固定某一项时,project将在数据修改时调整另外两项来保证公式成立。 可以基于整个项目设置任务类型,也可以给每个任务单独设置任务类型。 |