自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Django命令模块

management模块的实现涉及多个关键类和函数,我们来深入了解其中的一些重要概念和源码。

2024-01-15 16:35:20 1092

原创 mac m1 goland调试模式踩坑记录

背景:在使用 m1 芯片的 mac ,进行 go 项目开发时,发现 debug 模式无法正常调试。

2024-01-04 17:50:24 1165

原创 Redis持久化机制简介

当涉及到Redis的持久化时,有两种主要的持久化方式:RDB(Redis Database)快照和AOF(Append-Only File)日志。在某些情况下,可以将两种持久化方式结合使用,例如使用AOF以确保数据完整性,同时定期生成RDB快照作为备份。如果需要可读的备份,AOF文件是一个文本文件,更易于理解。根据实际需求和应用场景,您可以选择适合的持久化方式或结合使用两种方式以获得更好的性能和数据完整性。

2023-08-14 17:14:58 264

原创 Web设计中的常用权限设计模型

常用的权限设计模型包括 RBAC、ABAC 和 ACL,它们在实现权限控制方面有各自的原理和设计模型。ACL 模型包含资源列表和用户列表。资源列表维护每个资源的访问控制列表,用户列表包含每个用户对应的访问权限。ACL 是一种基于列表的访问控制模型,为每个资源定义了一个访问控制列表,该列表包含了对该资源的访问权限。RBAC 是一种基于角色的访问控制模型,通过将权限分配给角色,再将角色分配给用户来实现权限管理。策略定义了访问决策的规则,属性描述了用户、资源和环境等相关信息,评估引擎根据策略和属性进行访问决策。

2023-07-19 10:27:42 565

原创 Cookie vs. Session: 构建个性化Web体验的双重密码

Cookie是一种在客户端存储数据的机制。当服务器向浏览器发送HTTP响应时,可以包含一个或多个Cookie,存储在浏览器的本地计算机上。浏览器会将这些Cookie保存起来,并在后续的请求中将其发送回服务器。Cookie通常由名称、值、域名、路径、过期时间等组成。Session是一种在服务器端存储数据的机制。当用户访问服务器时,服务器会为每个用户创建一个唯一的会话标识符(Session ID),并将其存储在服务器上。同时,服务器会创建一个与该会话相关联的存储空间,用于存储与该用户会话相关的数据。

2023-07-07 15:12:35 297

原创 玩转 Gorm:轻松有趣地学习和使用 Gorm

这篇文章是关于如何使用Gorm的ORM库进行数据库操作的指南。它以轻松幽默的语气介绍了Gorm的基础知识、安装方法、连接数据库方法,以及如何定义模型和进行增删改查操作。文章还提到了Gorm的高级查询功能,例如设置查询条件、排序、分页等。同时,Gorm可以轻松适配多种常见的数据库平台,如MySQL、PostgreSQL、SQLite等。此外,Gorm还可以与其他流行的Go框架无缝集成,如Gin、Echo等,使开发过程更加高效。

2023-07-05 15:56:58 814

原创 go build和go install

Go语言作为一门高效、简洁且易于学习的编程语言,其编译速度也是其优秀特性之一。在Go语言中,go build和go install命令是两个重要命令,不仅可以编译和安装Go代码,还能生成可执行文件和库文件。go buildgo build命令主要用于编译Go代码,将Go源码编译成二进制可执行文件,其常用选项如下:-o:指定输出的二进制文件名。-v:显示编译过程中的详细信息。-x:显示编译过程中执行的命令。

2023-06-29 15:26:40 4400

原创 go mod和go path

GOPATH和Go Modules(也称为go.mod)是Go语言中用于管理包和依赖的两种不同的机制。GOPATH(Go Path)是Go语言在1.11版本及之前使用的一种包管理方式。它是一个环境变量,用于指定Go项目的工作区目录。在GOPATH下,你需要按照一定的约定将你的项目代码、第三方库和编译后的可执行文件等放置在特定的目录结构中。GOPATH方式相对简单,容易理解和使用。社区支持:一些旧的Go项目仍然使用GOPATH,并且一些旧的第三方库可能仍然依赖于它。

2023-06-29 15:26:10 648

原创 docker网络模式

Docker有五种网络模式,它们分别是和还有。每种网络模式都有自己的特点和用途,下面分别简单介绍一下。

2023-06-20 16:16:04 1034

原创 nacos登陆鉴权

开启鉴权之后,可以自定义用于生成JWT令牌的密钥,默认为空。自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。在2.2.0.1版本后,社区发布版本将移除以文档如下值作为默认值,需要自行填充,否则无法启动节点。密钥需要保持节点间一致,长时间不一致可能导致403 invalid token错误。

2023-06-01 11:45:19 5377

原创 备忘录模式

备忘录模式(Memento Pattern),也叫快照(Snapshot)模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态;这样以后就可将该对象恢复到原先保存的状态。主要是用来防丢失、撤销、恢复等备忘录模式跟原型模式很像,不过在原型模式中保存对象的一切,而备忘录模式中只保存恢复时需要的数据。

2023-03-17 14:37:43 411 1

原创 Django源码Apps模块

INSTALLED_APPS 中的任何一个,都是一个 app,INSTALLED_APPS 是一个列表,我们可以在后面添加自己通过命令创建的 app 或者是第三方库的 app。需要传入两个参数 app_name 和 app_module ,分别是 app 的全称,以及 app 对应的 module 对象,初始化后生成 app 必要的一些配置参数。可以说,整个 Django 就是围绕一个个的 App 进行模块化项目的组织和开发的,Apps 是整个 Django 的核心和基础。后面统一以 app 代表应用。

2023-03-06 17:34:43 726

原创 Django源码学习

因为工作中用到 Django 框架最多,经常需要阅读框架源码理解代码,于是写下我在阅读Django源码时的一些心得体会。Django版本:4.1.3目录(持续更新中…):空。

2023-03-01 14:48:01 1307

原创 apollo修改默认密码

BCryptPasswordEncoder是一种盐加密,每次加密产生一个随机盐,每次加密产生不同结果,属于不可逆加密。

2023-02-16 15:49:45 4795

原创 一个http请求的生命周期

以 django 为例,描述一个 http 请求大概的生命周期。本质上一个http请求就是一次端到端的通信。

2023-01-31 15:55:48 369

原创 shell操作mysql

通过 shell 操作 mysql ,有一些需要注意的点。

2023-01-10 16:02:47 4040

原创 sed用法总结

sed是一种流编辑工具,流编辑工具就是把文本中的文字按照特定的分隔方式,进行数据流处理;sed就是基于这种方式,它是以换行符以分隔单位,对文本进行逐行的处理。

2023-01-10 16:02:01 236

原创 状态模式(State Pattern)

状态模式(State Pattern),通过将事件触发的状态转移和动作执行,拆分到不同的状态类中,来避免分支判断逻辑。在实际的软件开发中,状态模式并不是很常用,但是在能够用到的场景里,它可以发挥很大的作用。

2022-12-26 18:09:43 185

原创 职责链模式

职责链模式(Chain Of Responsibility Design Pattern),又可以称为责任链模式。主要是为了避免请求和接收耦合,为请求创建了一个接收对象的链,将请求的发送和接收进行了解耦。让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。

2022-12-02 17:28:43 118

原创 策略模式详解

策略模式(Strategy Design Pattern),定义一堆算法类,并将每个算法分别封装起来,让它们可以互相替换,被封装起来的算法具有独立性外部不可改变其特性。策略模式可以使算法的变化独立于使用它们的客户端(这里的客户端代指使用算法的代码)。

2022-12-01 18:00:25 4016

原创 模版模式详解

模板模式有两大作用:复用和扩展。其中,复用指的是,所有的子类可以复用父类中提供的模板方法的代码。扩展指的是,框架通过模板模式提供功能扩展点,让框架用户可以在不修改框架源码的情况下,基于扩展点定制化框架的功能。

2022-12-01 11:12:13 324

原创 观察者设计模式

观察者模式在现实中的应用场景是非常广泛的,并且有非常多成熟的应用。可以同步阻塞实现,也可以异步非阻塞实现,可以是进程内,也可以是跨进程方式,不同的实现方式,具体的实现也不一样,但是底层的设计思想是一致的。所以这也告诉我们,掌握基本的基础知识和指导思想,怎么扩展,都是在这些基础上添砖加瓦,万变不离其宗,学好基础很重要。

2022-11-30 20:36:54 98

原创 享元模式详解

享元模式的实现非常简单,主要是通过工厂模式,在工厂类中,通过一个 map 或者 list 来缓存已经创建过的享元对象,来达到复用,减少内存消耗的目的。应用单例模式是为了保证对象全局唯一。应用享元模式是为了实现对象复用,节省内存。缓存是为了提高访问效率,而非复用。池化技术中的“复用”理解为“重复使用”,主要是为了节省时间。根据不同的应用场景,使用不同的共享方式。

2022-11-29 11:49:43 689

原创 设计模式 - 组合模式

组合模式的设计思路,与其说是一种设计模式,倒不如说是对业务场景的一种数据结构和算法的抽象。其中,数据可以表示成树这种数据结构,业务需求可以通过在树上的递归遍历算法来实现。使用组合模式的前提在于,你的业务场景必须能够表示成树形结构。所以,组合模式的应用场景也比较局限,它并不是一种很常用的设计模式,但是对于适用的场景,能发挥非常大的作用。

2022-11-28 11:33:38 70

原创 门面模式详解

门面模式是专门做接口整合的,解决的是多接口调用带来的问题,提高接口的易用性。

2022-11-25 12:06:51 268

原创 Django中settings的加载原理

开发过程中,环境分离是很常见的情况,一般都会分开发环境和生产环境。也有些分开发环境、测试环境、生产环境等。当环境更多的时候,每次变环境都要改一堆配置,比较好的应对方法就是写多个配置文件,通过环境变量来决定使用哪个配置文件。根据settings文件加载配置的顺序,我们通过下面的例子讲述一下如何自定义settings文件。新增一个开发环境的配置文件,命名为,在其中增加数据库相关的配置,并引入原来settings文件中的所有配置。

2022-11-23 10:59:41 1078

原创 适配器模式

适配器模式(Adapter Design Pattern),顾名思义,这个模式就是用来做适配的;它可以作为两个不兼容的接口之间的桥梁,将原本不兼容的接口转换为兼容的接口。这个模式可以让原本不能一起工作的类可以一起工作。

2022-11-22 11:45:36 385

原创 装饰器设计模式

装饰器模式(Decorator Design Pattern)是指在不改变原有对象的基础上,附加新的功能到原对象上,使之具有增强的功能,装饰器模式的核心是功能的增强和扩展。这种模式创建了一个装饰类,用来包装原有的类,并提供了额外的功能。

2022-11-17 16:33:10 183

原创 Django不同环境配置不同settings文件

开发过程中,环境分离是很常见的情况,一般都会分开发环境和生产环境。也有些分开发环境、测试环境、生产环境等。当环境更多的时候,每次变环境都要改一堆配置,比较好的应对方法就是写多个配置文件,通过环境变量来决定使用哪个配置文件。我们可以在 Django 设置文件夹同目录下,根据不同环境,创建不同的 settings 文件:这样我们不同环境下的不同的一些的环境配置内容,就可以写在不同的文件下,有两种使用不同配置的方式,下面来一一介绍。如果以自带的 settings 文件作为配置主文件,其他文件就需要引入到 set

2022-11-09 09:52:15 1155 1

原创 Python queue模块

要理解 python 中的 queue 这种结构,我们就要先理解队列。队列作为一种先入先出的数据结构,通常用来解决有先后关系的数据,或者存在数据间共享变量,需要先后一一处理的情况;在多线程等并发编程中,线程之间共享数据的访问问题和线程之间的通信问题是要关注的重点。为了解决线程之间的数据共享问题,queue 模块应运而生。正常请求的多线程,如果是多消费者和多生产者,由于线程是由操作系统调度的,内部的运行时机是不可控的,所以需要手动加锁处理,否则容易出现一些幽灵BUG,非常难排查。

2022-11-04 17:22:29 1080

原创 python装饰器详解

装饰器(Decorators)是 Python 的一个重要部分,一般采用语法糖的形式,是一种语法格式。它可以很方便地在不改变函数原有功能的基础上扩展功能,是 python 中非常好用的一个高级功能,但是本身并不容易理解和掌握。装饰器本质上是一个Python函数(其实就是闭包),它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器用于有以下场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。

2022-10-28 15:50:47 469

原创 Python 线程池

最近项目中大量使用到了异步编程,于是参考了大量关于 python 的异步编程实践,最终选择了将所有方法传入线程池,使用线程池来执行的方案。

2022-10-19 15:12:50 1027

原创 桥接设计模式

桥接模式通过运用组合优于继承的原则,将一个功能类识别并拆分成多个相互独立的维度进行独立扩展,很好地实现了高扩展性和灵活性的特点。但是同时,也使整体结构也变得抽象和复杂,增加了系统的理解与设计难度。对于能够比较明显拆分成独立维度的类,桥接模式是一种非常好用并且常见的设计模式与思想。

2022-09-30 19:56:00 178

原创 代理设计模式

代理模式可以在不改动原始类的前提上,附加一些非业务性的功能,比如:监控、统计、鉴权、限流、事务、日志等等,可以将这些功能与业务逻辑解耦,让业务只关注业务,是非常好用的一种结构型设计模式。

2022-09-25 15:13:32 417

原创 apollo高可用部署

根据上面的架构图,配置DEV,TEST两个环境,每个环境分别实现两套 Service 服务,两套 Service 服务在同一台机器上实现。

2022-09-05 11:02:59 1244

原创 apollo部署

记录一下 apollo 部署过程,以及中间遇到的问题及解决方法,方便日后查看和复用

2022-09-05 11:01:42 1880

原创 设计模式 - 原型模式

原型模式(Prototype Pattern)主要用于复制、克隆;如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型、公用部分)进行复制(或者叫拷贝)的方式来创建新对象,以达到节省创建时间和空间的目的。...

2022-07-04 23:28:12 58

原创 建造者模式

建造者模式(Builder Pattern)又叫生成器模式,有点类似工厂模式,两者都是用专门的类来实现对象的创建。主要区别是建造者模式着重一步步构造一个复杂对象,而抽象工厂模式着重于多个系列的产品对象。有一句话对建造者模式总结的很好:这正是 建造者设计模式的用武之地。最常用的一个场景就是操作数据库的 ORM。回想一下,ORM 中一个很重要的概念:延迟加载,其实就是建造者模式最常见的应用。下面通过一个生产手机的例子来了解一下建造者模式的各个构成部分。要生产一台手机,基本的组件有《屏幕、电池、cpu》,我们的手

2022-06-22 23:36:04 80

原创 工厂模式实现

工厂模式(Factory Pattern) 是用来创建对象的一个工厂,不必我们亲自创建对象,我们无需去理解如何创建对象,只需要向工厂提出要求,返回相应的对象,提高代码的可扩展性

2022-06-19 11:36:20 221

原创 python 单例模式

单例模式(Singleton Design Pattern)理解起来非常简单,一个类只允许创建一个实例,这个类就属于一个单例类

2022-06-16 22:23:40 323

空空如也

空空如也

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

TA关注的人

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