自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(342)
  • 资源 (3)
  • 收藏
  • 关注

原创 那些年收藏过的经典函数/库

Go:

2025-03-13 11:54:21 116

原创 go ent编写hooks时如何处理循环导入问题

循环依赖产生的原因通常是因为schema定义和实体(entity)生成代码的双向依赖。(因为它需要访问您定义在其中的schema信息)。步骤三:程序启动时注册hooks。框架提供的类型),同时,步骤一:创建hooks包。步骤二:编写hooks。生成的代码也会依赖于。

2025-03-06 18:31:22 288

原创 【k8s】k8s部署Argo CD

这会将 Argo CD 部署到 Kubernetes 集群中,并且创建相关的服务、部署、RBAC 资源等。从 Argo CD 官方 GitHub 仓库安装它。这将显示初始密码,登录 Web UI 后可以更改密码。访问 Argo CD Web UI。用于部署 Argo CD。先创建一个专用的命名空间。

2025-01-18 14:51:48 563

原创 一天一个运维小技能:grep命令

grep是 Linux 中用于文本搜索的命令行工具,功能非常强大,广泛用于从文件中查找符合条件的字符串或模式。它的全称是,因此它支持使用来匹配和搜索文本内容。

2024-12-31 11:08:57 319

原创 一天一个运维小技能:ps命令

ps命令是 UNIX 和类 UNIX 操作系统中用于显示当前运行进程状态的重要命令。

2024-11-28 18:31:24 425 1

原创 一天一个运维小技能:netstat命令

是一个经典的网络工具,用于显示网络连接、路由表、接口状态以及监听的端口等信息。尽管在现代 Linux 系统中,依然是很多运维工程师和开发者的常用工具。

2024-11-28 18:06:19 270

原创 一天一个运维小技能:tee命令

tee命令使用详解

2024-11-26 18:51:04 252

原创 Docker网络详解

当在docker-compose.yml中定义了自定义网络如:...rabbitmq:networks:- net-ecnetworks:net-ec:ipam:config:独立的网桥:Docker 为net-ec生成一个新的网桥(),与默认的docker0网桥相分离。与宿主机通信:容器可以访问宿主机的 IP 地址,并且可以通过net-ec访问宿主机的网络资源。如果需要与宿主机的服务互通,可以通过宿主机的 IP 地址直接访问,但并不会通过docker0转发。定制化的 IP 地址管理。

2024-11-12 12:07:10 1665

原创 Go语言sync.WaitGroup与errgroup.Group用法详解

特性错误处理支持,返回第一个错误并中止其他任务不支持,需手动处理中止机制出现错误后可中止其他任务不支持适合场景并发任务中需统一错误处理仅需等待所有任务完成代码简洁性更简洁,内置错误处理需要手动处理错误和并发访问控制底层实现基于进一步封装基础并发任务等待工具选择哪种方式取决于需求,若并发任务中需要统一的错误捕获和中止机制,是更好的选择;若仅需等待所有任务执行完毕,可使用。

2024-10-31 11:12:22 543

原创 Go语言依赖注入方式

在Go语言中,依赖注入(Dependency Injection,DI)是一种设计模式,允许你将对象的依赖关系在外部进行管理,而不是让对象自己创建或查找依赖。通俗来说就是把一个对象所需要的东西如方法或属性(统称依赖)从外面传递给它,而不是让这个对象自己去找或实现这些东西。这种模式可以帮助你构建更可维护、可测试的代码。Go语言本身没有像一些面向对象语言(如Java)那样内置的依赖注入框架,但你可以通过多种方式实现依赖注入。

2024-10-16 17:31:23 874

原创 GORM 关联关系选择与定义

例如,您的应用包含了 user 和 language,且一个 user 可以说多种 language,多个 user 也可以说一种 language。这种关联表明一个模型的每个实例都包含或拥有另一个模型的一个实例。例如,您的应用包含 user 和 credit card 模型,且每个 user 可以有0张或多张 credit card。例如,您的应用包含 user 和 credit card 模型,且每个 user 只能有一张 credit card。这种模型的每一个实例都“属于”另一个模型的一个实例。

2024-09-04 15:58:20 755

原创 SVN提取子目录到新库(附带提交历史)方法

plan-A:以下命令需要直接在服务器上操作:svnadmin dump test_repo > test_repo.dumpsvndumpfilter --drop-all-empty-revs include test_dir <test_repo.dump> test_repo_test_dir.dump--drop-all-empty-revs 从最终的转储文件中删除所有的空版本号(与本目录无关的版号)新建仓库 new_reposvnadmin load new_repo < test_repo

2024-08-29 17:44:37 702

原创 列式存储详解

传统的关系型数据库,如 Oracle、DB2、MySQL、SQL SERVER 等采用行式存储法(Row-based),在基于行式存储的数据库中, 数据是按照行为基础逻辑存储单元进行存储的, 一行中的数据在存储介质中以连续存储的形式存在。列式存储(Column-based)是相对于行式存储来说的,比如:Hbase、Doris、Clickhouse等分布式数据库均采用列式存储。在基于列式存储的数据库中, 数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。特点行式存储。

2024-07-30 17:43:20 2692

原创 数据仓库设计与数据建模初探

基于维度建模理念思想,建立整个企业的一致性维度。降低数据计算口径和算法不统一风险。

2024-07-27 14:05:48 985

原创 数据分区方式

在许多大型解决方案中,数据分割成分区,而这些分区可以单独进行管理和访问。分区可以改善可伸缩性、减少争用,以及优化性能。另外,它还能提供一种按使用模式来分割数据的机制。例如,可以将较旧的数据存档在成本较低的数据存储中。

2024-07-27 10:40:30 224

原创 uwsgi状态监控

uWSGI 提供了一个内置的状态服务器,你可以通过配置 uWSGI 来启用它,并使用 Web 浏览器或者通过 HTTP 请求来查看 uWSGI 的状态信息。来查看 uWSGI 的状态信息。这个页面会显示各个 worker 进程的状态、请求统计信息、内存使用情况等。执行命令: uwsgitop http://127.0.0.1:9191。还可以在服务器上安装uwsgitop工具,类似top命令实时显示状态。即可在页面上实时显示状态信息,按a键可以切换展示详细程度。

2024-05-24 14:53:26 744

原创 负载压力测试之locust

Locust 是一个用于编写负载测试的开源工具,它使用 Python 进行编写和扩展,并提供了一个简单易用的界面来模拟大量用户同时访问你的应用程序,以评估其性能和稳定性。

2024-05-24 14:41:52 419

原创 Uwsgi Connection reset by peer问题排查

开始也猜到是连接的问题,但由于我们网络环境复杂,客户端到服务端中间经过了防火墙、HA代理,这些服务又归运维组管理,所以第一时间没法看到这些服务日志,一直在调查uwsgi+django。uwsgi在处理耗时较长的请求时,会报上述错误,经过各种排查,确认是由于客户端主动关闭连接,uwsgi在处理完请求想要回写时连接被关闭,进而导致报错。最终在运维的协助下发现是防火墙、HA代理超时时间设置较短导致超时连接被自动关闭。

2024-05-22 11:37:36 433

原创 关于docker network网络

网桥存在一些限制:容器之间的连接不够安全,IP地址也可能会发生冲突等问题。因此,Docker引入了自定义网络的概念,来解决这些问题。总之,Docker的网络设计灵活多样,可以满足绝大部分需求。如果你想禁止某些容器直接互通,你可以将它们分配到不同的自定义网络中。这样,容器与主机之间,以及容器与容器之间就可以相互通信了。因此,即使容器位于不同的自定义网络,它们也可以通过连接到。它们的工作原理也不尽相同。当一个容器连接到自定义的网络时,Docker会在该网络与。首先,我们来看看Docker默认的网络模式,即。

2024-05-10 11:42:52 444

原创 SVN仓库勾子脚本中文乱码问题

添加 env = {"LANG": "en_US.UTF-8"},执行命令时,设置env=env。添加 export LANG=en_US.UTF-8。

2024-04-25 17:52:42 404

原创 Django admin后台添加自定义菜单和功能页面

django admin是根据注册的模型来动态生成菜单,从这个思路出发,如果想添加自定义菜单,那就创建一个空模型并且注册。步骤如下:2、注册到admin.py重写changelist_view函数,使其点击菜单时,展示自定义的页面。在此你可以做orm查询,并且将数据渲染到模板中。而我想实现的是在页面中点击一个按钮来触发请求后端接口,来实现某种行为。reset_svn_auth_file.html:把该文件放在空模型所在app下的templates文件夹。django总路由:

2024-04-20 17:34:36 1509 3

原创 redis 哨兵模式

redis 主从复制模式下, 一旦主节点出现故障, 不能提供服务的时候, 就需要人工进行主从切换. 这是十分不靠谱的, 毕竟谁也不知道主节点什么时候出现故障, 这样就无法第一时间恢复服务. 所以 redis 从 2.8 版本开始提供了 哨兵(Redis Sentinel) 模式, 可以通过自动化手段来解决主节点出现故障的问题.进而实现故障转移。

2024-04-07 16:56:54 1766

原创 python解释器多版本设置

将以下内容添加到你的 shell 配置文件(如。3、在pycharm中配置python虚拟环境。2、安装python。

2024-01-19 18:32:12 699

原创 Django信号机制源码分析(观察者模式)

只看倒数第二行:self.receivers.append((lookup_key, receiver)),如果你了解观察者模式就很好理解这行代码的意图:将被装饰的信号处理函数(on_node_approved)注册到self.recervers属性中,也就是观察者模式中讲的主题维护观察者列表行为。逻辑很简单的一个装饰器,核心是调用Signal信号对象的connect方法,也就是上面举例中的node_approved这个对象的connect方法。Django信号的实现原理本质是设计模式中的观察者模式,

2023-12-27 17:25:15 955

转载 如何提高技术领导力?

第一个观点是,当需要担当的时候要能站出来。其实声网是非常讲究扁平化的公司,当然这个扁平化在现在的互联网公司是非常常见的。但我们一直在思考,怎么能够突破管理的瓶颈,能够让更多的人才从管理规则中凸现出来。我们想到的一个点是,我们会淡化职位的概念,会把责任、角色和能力放到一个金字塔里。通过能力的提高,去背一些责任,承担一些角色。在承担这个角色的过程中,可以提高新的能力,承担新的责任和角色。在完成一定专项的任务之后,我们再对应这个角色能力和责任,形成背后创新的技术领导力,而不局限于你的职位、岗位和你所做的事情。

2023-12-22 16:24:58 215

原创 代码阅读次数多于编写次数

这是在这样的假设下进行的:有用且运行良好的软件,对用户有价值的软件,才会对组织也有价值。无论代码编写得多么好,多么易于维护,也无论使用的技术有多复杂,如果不能实现其目标,并为用户提供良好的体验,那就没有意义。单独考虑我们的软件、我们的团队或我们的用户显得是有意义的,但当我们将组织视为一个整体时则不然。“代码的阅读次数多于编写次数”传达的意思是,通过保持代码简单、编写测试和文档等方式来降低维护代码的难度通常是一个不错的投资。由风险投资支持的软件,这类软件没有商业模式,或其商业模式是成长直至垄断然后剥削用户。

2023-12-15 11:13:14 998

原创 到底什么是DevOps

敏捷开发的组织对象是软件开发团队,而软件交付完成还会涉及集成、测试、部署、运维、监控等环节,所以DevOps(2009年诞生)应运而生,DevOps也可以说是敏捷开发的又一次升华。特点是增加协作、减少孤岛、共享责任、提高质量、重视反馈和增加自动化。只有人借助良好的平台、工具,在配合必要的工作流程的指导下,实现任务的快速流转、软件的快速交付。基于以上工具,加上必要的工作流程,来增加部门间紧密协作,实现信息共享,加快任务流转速度,达到软件快速交付、问题及时发现并解决的目的。镜像仓库:Nexus、Harbor。

2023-12-11 10:25:28 601

原创 事件溯源模式

事件溯源(Event Sourcing)是一种设计模式,其核心思想是将系统的状态变化表示为一系列不可变的事件,并将这些事件存储在事件日志中。系统的当前状态可以通过重新应用(回放)这些事件来还原,从而实现状态的追溯。大多数应用程序会使用数据,而典型的方法是用户使用数据时通过立即更新数据使应用程序保持数据的当前状态。例如,在传统的创建、读取、更新和删除 (CRUD) 模型中,典型的数据处理是从存储读取数据、对其作出修改、使用新值更新数据的当前状态。

2023-11-23 11:55:07 709

原创 【k8s-1】基于docker Desktop一键式搭建k8s开发环境

下面介绍如何启动dashboard,dashboard仪表盘是新手学习k8s至关重要的一个工具。3、通过如下 URL 访问 Kubernetes dashboard。在docker desktop中一键启动k8s环境很简单。2、开启 API Server 访问代理。6、登录dashboard。

2023-11-09 11:43:24 905 1

原创 Gitlab CICD实用技巧汇总

类似编程中的封装和继承,将相同作业或者模板定义在单独文件或项目中,供其他.gitlab-ci.yml使用。include参数可以是当前项目中的文件,也可以是其他项目或者外部项目中的文件。参数通常用于配置外部项目或仓库的触发器,使其能够启动当前项目的CI/CD管道。与cache目的不同,cache主要用于缓存依赖项,例如依赖包、编译中间文件等,以加速连续集成(CI)过程,并且不能下载和共享给其他项目。参数通常用于配置与项目间的协作,例如,一个项目的CI/CD流程依赖于另一个项目生成的artifacts。

2023-10-31 18:33:06 911

原创 Django on_delete参数在sql级别操作中不生效问题

取而代之的是数据库会使用默认的on_delete参数,以mysql为例此参数会被设置为on_delete=no_action,进而才会导致sql删除报错。如上当使用ORM删除aa表中的数据时,与之关联的bb表中的数据也会被删除。也就是说Django不会在数据库层面设置on_delete参数,当然Django官方也在计划支持数据库级别的级联操作。

2023-07-24 17:53:51 787

原创 关于在Python的for循环中改变列表的值问题探究

明白了案例一,这个案例就不难解释了,因为for循环对象的内存地址不变,a[1] = 5表示修改这块内存地址的值。类似地,如果语句体在序列当前项的前面插入一个新项,当前项会在循环的下一轮中再次被处理。在for循环语句中的变量a使用的内存地址为4313456192,这个地址以及存储的值不会因为a的重新赋值而改变,换句话说就是for循环的对象是一块固定的内存地址中的值。还要注意的是id(a),每次打印的是a变量所指的内存地址,对a重新赋值是会改变a所指向的内存地址,也就是通常说的变量a只是内存地址的引用。

2023-07-22 10:56:19 975

原创 在gitlab中生成增量代码质量分析报告

这是一个基于flake8工具生成的代码质量分析报告,每次创建MR,gitlab会检测MR做了哪些更新,并只对本次MR所更新的内容做做质量分析,并生成报告。

2023-07-19 09:37:41 971

原创 Django当DEBUG = False时,信号不触发问题

还需要注意的是,Django 默认将信号处理程序存储为弱引用,所以如果你的处理程序是一个本地函数,它可能会被垃圾回收。为了防止这种情况,当你调用信号的。同一个文件中的信号处理函数名称不能一样,否则靠前的函数会被垃圾回收,除非传入weak=False参数声明为强引用。今天突然发现生产环境中,某些信号没有被正确触发,一番调查总结一下关于django信号执行问题。

2023-07-18 11:49:05 1432

原创 Gitlab CICD 主机集群部署

【代码】Gitlab CICD 主机集群部署。

2023-06-16 16:47:05 322

原创 使用django_celery_beat在admin后台配置计划任务

django中使用celery做异步任务和计划任务最头疼的点就是包之间版本兼容性问题,项目一启动花花报错,大概率都是版本问题。每次都会花很大时间在版本兼容性问题上。如果是其他版本的django且有兼容性问题,推荐一个工具。,这玩意可以清晰展示包间依赖关系和版本冲突,很方便。

2023-04-26 16:43:09 1328 2

原创 Python包依赖关系查看

pipdeptree官网pipdeptree是一个命令行工具,用于以依赖树形式显示安装在机器上或虚拟环境中的Python包。pip freeze会将所有依赖项显示为一个扁平列表,需要一些努力才能找出哪些是顶层包以及它们所依赖的包。解决可能已安装的冲突依赖项也很繁琐,因为早期版本的pip没有真正的依赖项解析能力。pipdeptree可以在这方面提供帮助,可以清晰查看包之间的依赖关系,识别在环境中安装的冲突依赖项。

2023-04-26 16:18:20 1768

原创 Click命令行工具包的使用

argument更被推荐用在执行子命令(如上面的python tasks.py dropdb)、参数为文件路径或者URL的情况,否则使用option更合适。多数情况下,我们使用option代替argument,option有更灵活的使用方式,如参数自动提示、值可以从环境变量提取、在--help下自动显示等。option的type参数支持str、int、float、bool、choice、uuid、file、path、datetime等,还可自定义。更详细打包命令可以参考。

2023-04-20 17:06:54 546

原创 Redis分布式锁实现方案

本地锁: 解决同一进程内多个线程操作同一资源的问题。分布式锁: 解决多个进程同时操作同一资源的问题。

2023-04-19 17:12:20 533

原创 django_filters、django_rest_framework_filters源码解析

相信你已经搭建好了django+rest_framework,并且成功启动了你的项目。接下来如果想要使用django_filters或者django_rest_framework_filters过滤器,那么你还需如下配置:......),rest_framework_filters是django_filters的高级扩展,使用了rest_framework_filters就无需在引入django_filters。以上是全局配置方法, 当然也可以在每个viewset中配置独有的过滤器后端。

2023-04-11 17:15:00 1747 2

xadmin.widget.selectpage.css

带搜索功能的多选下拉框,美观方便,还可一键清除已选,并且自带分页效果。如有任何问题,可以私信咨询我。

2019-07-24

xadmin.widget.selectpage.js

带搜索功能的多选下拉框,美观方便,还可一键清除已选,并且自带分页效果。如有任何问题,可以私信咨询我。

2019-07-24

doc2docx.zip

windows平台上的批量两doc格式文件转化成docx文件,python制作,包括源码,无需安装,点击即用。

2019-06-18

空空如也

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

TA关注的人

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