自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 什么是 RBAC 权限控制

RBAC是Role Based Access Control的英文缩写,意思是RBAC实际上就是针对产品去挖掘需求时所用到的Who(角色)、What(拥有什么资源)、How(有哪些操作)的方式。在RBAC模型中,who、what、how构成了三元组,也就是“Who对What进行How的操作。RBAC的优缺点。

2023-06-23 20:59:05 1192

原创 redis缓存

因此,redis的事务机制,十分鸡肋。另外还有一个就是,可以利用lrange命令,做基于redis的分页功能,性能极佳,用户体验好。博主在做单点登录的时候,就是用这种数据结构存储用户信息,以cookieId作为key,设置30分钟为缓存过期时间,能很好的模拟出类似session的效果。因为我们的系统一般都是集群部署,使用JVM自带的Set,比较麻烦,难道为了一个做一个全局去重,再起一个公共服务,太麻烦了。最后,那个快递员依次的去取快递,一次拿一个,然后开着车去送快递,送好了就回来拿下一个快递。

2023-09-04 16:45:41 118

原创 Redis缓存与MemoryCache

Redis缓存相对于MemoryCache的性能更好,因为Redis使用了更多的数据结构和算法优化,可以更好地处理高并发请求。Redis缓存支持更多的数据结构,如字符串、哈希、列表、集合、有序集合等,支持更多的操作,如排序、范围查询、交集并集运算等。而MemoryCache只支持独立对象的缓存,不支持复杂的数据结构。Redis缓存和MemoryCache都是常见的缓存技术,它们都是将数据存储在内存中,以提高读取速度。Redis缓存支持数据持久化,可以将数据存储在磁盘上,以防止数据丢失。

2023-09-04 16:35:39 732

原创 DDD分层中的四层架构之间的调用关系

领域层调用基础设施层:领域层(Domain Layer)内部的业务实体和业务规则需要通过基础设施层(Infrastructure Layer)提供的服务来完成数据持久化和数据访问。应用层调用领域层:应用层(Application Layer)包含了业务逻辑和应用服务,但是不包含任何业务实体,它通过领域层(Domain Layer)提供的服务来实现业务逻辑的处理。领域层包含了业务实体、业务规则和数据校验等方面的内容,它向应用层提供了一个封装好的服务接口,使得应用层可以无需关心具体实现即可完成业务逻辑的处理。

2023-09-04 09:04:54 743

原创 Redis缓存与MemoryCache

MemoryCache是.net框架内置的缓存库,可以用于缓存各种类型的数据,包括对象、字符串、二进制数据等。MemoryCache采用LRU(最近最少使用)算法,当缓存达到一定容量时,会优先清除使用频率较低的数据,以保证缓存效率。Redis缓存是一款高性能的开源内存数据结构存储系统,支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。Redis缓存不仅可以缓存数据,还支持发布订阅、事务等高级功能,可用于构建高可用性、高性能的分布式系统。

2023-09-02 09:23:23 110

原创 .Net Core 中间件

中间件(Middleware)是指位于操作系统和应用程序之间的软件层,它可以使应用程序更容易地编写、测试和维护。中间件一般提供一些通用的业务功能,如可扩展性、安全性、事务处理、消息传递等,可以让应用程序开发者集中精力在业务逻辑上,而不需要考虑这些底层细节。数据库中间件:例如MySQL Proxy和pgpool,它们可以在数据库和客户端之间提供缓存、负载均衡、高可用等功能。中间件在现代软件开发中扮演着非常重要的角色,可以让开发者更加专注于业务逻辑,提高软件的可靠性、可维护性和可扩展性。

2023-09-02 09:22:25 70

原创 T4模板 代码生成器

在 Visual Studio 中,可以创建一个 T4 模板项目,以便在项目中使用多个 T4 模板,生成代码和其他文件。此外,许多第三方工具和插件也可以帮助使用 T4 模板生成代码,例如 T4 Editor 和 Tangible T4 Editor 等。T4模板是一种将文本和代码混合的技术,可用于生成代码、配置文件和其他文本文件。总的来说,T4模板可以帮助开发人员自动生成重复性的代码,减少手动编写代码的工作量,提高开发效率和代码质量。在模板文件中,通过 T4 模板语言将输入参数传递到模板代码中。

2023-09-02 09:20:14 189

原创 JWT认证与IdentityServer4的理解和定义

它基于OAuth2.0和OpenID Connect标准实现,支持多种认证方式,例如:用户名/密码、社交媒体登录、外部身份提供方等。虽然JWT和IdentityServer4都用于身份认证和授权,但它们的应用场景和功能不同。而IdentityServer4更适合于多应用场景,例如,公司内部多应用系统集成、跨组织身份认证等。JWT具有轻便、可扩展、方便传输等优点,被广泛应用于网络身份认证和授权中。JWT认证和IdentityServer4都是用于身份认证和授权的工具。

2023-09-02 09:17:51 440

原创 介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。

开发人员可以使用 Docker 的容器来快速搭建一致的开发环境,同时还可以在容器中运行自动化测试、集成测试和端到端测试。Docker 是一种被广泛使用的容器化解决方案,可以构建、部署和管理应用程序。节约成本:通过 Docker 的容器化解决方案,可以在单一硬件上运行多个应用程序,节约硬件和软件成本。简化开发流程:Docker 可以提供一致的开发环境,使得开发人员可以快速地部署、测试和运行应用程序。提高部署效率:Docker 可以将应用程序和依赖项打包到一个容器中,使得部署变得更加容易和快速。

2023-08-30 10:32:45 44

原创 公司常见的OA系统、ERP系统、CRM系统是什么?

随着企业数字化转型的不断推进,各种信息化系统也应运而生,其中最常见的三种系统是OA系统、ERP系统和CRM系统。虽然它们都是用于企业信息管理的系统,但是它们的应用场景和功能有所不同。在本文中,我们将详细介绍这三种系统的概念、应用场景和区别。

2023-08-05 09:28:39 204

原创 Vue.js——vue-resource全攻略

使用Vue.http或this.$http使用Vue.resource或this.$resource这两种方式本质上没有什么区别,阅读vue-resource的源码,你可以发现第2种方式是基于第1种方式实现的。inteceptor可以在请求前和请求后附加一些行为,这意味着除了请求处理的过程,请求的其他环节都可以由我们来控制。

2023-07-19 14:46:59 474

原创 vue3 + elementplus 教程

--|shims-vue.d.ts -- 类文件(也叫定义文件),因为.vue结尾的文件在ts中不认可,所以要有定义文件。---|store -- 是vuex的文件,主要用于项目里边的一些状态保存。---|router -- vue-router路由文件。index.ts中引入views包下的*.vue。---|views -- 用于存放我们写好的各种页面,即路由组件,比如Login.vue,Home.vue。---|assets -- 放置静态文件的目录,比如logo.pn就放在这里。

2023-07-06 17:15:00 2307 1

原创 Node.js起步 -- (1)

NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS它更适用于轻量、可伸缩,适于实时数据交互应用。nodeJS内置了很多对象,比如http,fs等,我们可以用它搭建我们的HTTP服务器,在服务器上进行开发。上面说到了,http是nodeJS里边内置的对象模块,我们使用require这种方式把它引进来(对象模块一般就是这么引入的,我们也可以自己建立自己的模块,然后将它们引入,之后再提到)。

2023-07-05 09:03:28 59

原创 Vue3.0新特性

自定义元素白名单现在已经在编译时执行。对特殊的is prop的使用只严格限制在被保留的标记中。

2023-07-05 08:54:57 112

原创 Action过滤器 记录控制器方法耗时日志

在此示例中,控制器类中的 HelloWorld 方法将作为 Action 方法的内容。ActionName 属性将该方法命名为“Hello”,并且在视图或其他控制器方法中可以使用该名称来引用它。最终,HelloWorldAction 方法将返回一个包含“Hello, World!”消息的 ActionResult 对象。要将控制器方法作为 Action 方法,需要在控制器类中创建一个公共方法,并使用 ActionName 属性来指定对应的 Action 名称。

2023-06-29 09:04:04 38

原创 Git 的基本概念和使用方式

提交(commit):提交是指将代码或文件的更改记录到Git仓库中。分支(branch):分支是指Git仓库中的多个版本的拷贝。仓库(repository):Git用仓库来存储代码和文件。一个仓库包含所有版本的代码和文件。克隆(clone):克隆是指在本地创建一个与远程Git仓库完全相同的副本。合并(merge):合并是将两个或多个分支中的更改合并到一个新分支中。推送(push):推送是将本地Git仓库的更改上传到远程Git仓库中。拉取(pull):拉取是指将远程Git仓库的更改下载到本地仓库中。

2023-06-29 09:02:59 45

原创 登录接口 颁发JWT令牌

需要注意的是,为了生成一个安全的JWT令牌,我们在调用jwt.NewWithClaims函数时指定了HS256算法,并传入了一个密钥字符串("secret")来进行签名。此外,我们还在JWT中设置了一个"exp"(过期时间)声明,以保证令牌的有效期不会过长。在上面的代码中,我们定义了一个User结构体来表示用户信息,并在Login函数中解析请求体中的JSON数据,并校验用户的账号密码是否正确。如果校验通过,则使用"jwt-go"库生成一个JWT令牌,并将令牌字符串返回给客户端。

2023-06-29 09:01:47 191

原创 如何编写拦截器?

拦截器是指在处理请求或响应数据之前,先对其进行拦截并进行一些自定义的处理,常用于实现权限认证、数据统计等功能。以上是Java编写拦截器的基本步骤,具体实现可根据项目需求进行调整。

2023-06-29 08:47:06 860

原创 命令行操作svn和git和git

svn:(模拟:有一个项目经理,两个开发人员,------开发人员的工作大致一样,所以写了两个)svn commit--- 如果有新创建的文件或者文件夹 需要使用svn add 命令;svn checkout + (项目经理给的地址) -------从服务器上导出文件。1.防止代码丢失----可以把自己的代码上传到服务器上。svn add ----告诉svn服务器 我这里有新创建的文件。2.解决冲突---三种解决方式:保留其中一方的代码 或者都保留。1.ls-----查看当前目录下所有的文件以及文件。

2023-06-23 21:01:35 71

原创 Quzrtz.net 示例

") //5秒执行一次。//将任务和触发器添加到调度器中。//先用Nuget 安装最新quartz.net。//框架.Net Core 2.0。

2023-06-09 15:01:28 42

原创 C# Redis

Redis的存储容灾性比较完善,所支持的存储数据类型比较全。比较坑的是版本2.X之下都不支持服务器集群,只能单机。在Redis 3.0中服务器集群功能才亮相。操作起来总体感觉比较简单容易上手。

2023-04-20 20:06:41 194

原创 大数据算法——布隆过滤器

今天的文章和大家一起来学习大数据领域一个经常用到的算法——布隆过滤器。如果看过《数学之美》的同学对它应该并不陌生,它经常用在集合的判断上,在海量数据的场景当中用来快速地判断某个元素在不在一个庞大的集合当中。它的原理不难,但是设计非常巧妙,老实讲在看《数学之美》之前,我也没有听说过这个数据结构,所以这篇文章也是我自己学习的笔记。

2023-04-19 11:29:40 126

原创 .NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法

前段时间有朋友问道一个这样的问题,.NET Core中如何通过Attribute的元数据信息来调用标记的对应方法。我第一时间想到的就是通过C#反射获取带有Custom Attribute标记的类,然后通过依赖注入(DI)的方式获取对应服务的方法并通过反射动态执行类的方法,从而实现更灵活的编程方式。/// 自定义一个Attribute类型set;/// 前进服务");/// 后退服务");

2023-04-15 09:28:13 674

原创 不懂Redis?看完这个故事就明白了!

在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用户请求也随之暴涨,而每一个用户请求都变成了对它的一个又一个读写操作,MySQL是苦不堪言。我查看了日志,赶紧解释到:“大哥,实在不好意思,刚刚有一个热点数据到了过期时间,被我删掉了,不巧的是随后就有对这个数据的大量查询请求来了,我这里已经删了,所以请求都发到你那里来了”而且就算退一步讲,我能够把过期的数据都删除掉,那万一过期时间设置的很长,还没等到我去清理,内存就吃满了,一样要吃枣药丸,所以我还得想个办法。

2023-04-14 11:32:26 62

原创 深入浅出Redis-redis哨兵集群

Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

2023-04-13 10:14:52 94

原创 Redis集群

1、Redis集群TCP端口(Redis Cluster TCP ports)每个Redis集群中的节点都需要打开两个TCP连接。一个连接用于正常的给Client提供服务,比如6379,还有一个额外的端口(通过在这个端口号上加10000)作为数据端口,比如16379。第二个端口(本例中就是16379)用于集群总线,这是一个用二进制协议的点对点通信信道。这个集群总线(Cluster bus)用于节点的失败侦测、配置更新、故障转移授权,等等。客户端从来都不应该尝试和这些集群总线端口通信,它们只应该和正常的R

2023-04-13 09:59:53 500

原创 定制.NET 6.0的Middleware中间件

大多数人可能已经知道中间件是什么,但有些人可能不知道,即使你已经在使用ASP.NET Core有一段时间了。我们一般不需要详细了解中间件实例,因为它们大多隐藏在扩展方法后面,例如UseMvc()、UseAuthentication()、UseDeveloperExceptionPage()等。每次在Configure方法中,我们默认将隐式地使用至少一个或更多个中间件组件。中间件组件是处理请求管道的一段代码。我们可以将请求流程想象成一串管道,每次请求调用,都会返回一个响应。

2023-04-12 09:38:56 276

原创 Http请求get与post请求方式的各种相关面试总结

GET方法和POST方法是两种HTTP请求方法,GET方法通过URL传递参数,可以缓存,但参数长度有限,一般用于获取资源;POST方法通过表单传递参数,不能缓存,参数长度没有限制,一般用于提交数据。

2023-04-12 09:35:16 122

原创 .NET 5.0 依赖注入

依赖注入是指在创建一个对象时,自动地创建它所依赖的对象,并注入。依赖注入的方式:1.构造方法注入;2.Set方法注入;3.方法参数注入在构造方法中体现出对其他类的依赖,直接就可以看出这个类所需要的依赖那些类才能工作。脱离了IOC框架,这个类仍然可以工作。一旦对象初始化成功了,这个对象的状态肯定是正确的。构造函数会有很多参数(Bad smell)。有些类是需要默认构造函数的,比如MVC框架的Controller类,一旦使用构造函数注入,就无法使用默认构造函数。

2023-04-10 17:33:02 202 1

原创 Python常见面试题016. 请实现如下功能|谈谈你对闭包的理解

实现一个函数(可以不是函数)avg,计算不断增加的系列值的平均值,效果如下def avg(...): pass avg(10) =>返回10 avg(20) =>返回10+20的平均值15 avg(30) =>返回10+20+30的平均值20跟有点类似,但又不太一样关键是你需要有个变量来存储历史值1。

2023-04-10 17:28:50 56 1

原创 Asp.Net Core 仓储泛型的依赖注入

所有实体的List集合主键类型所有实体的List集合/// 所有实体的List集合

2023-04-08 11:11:24 665 2

空空如也

空空如也

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

TA关注的人

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