- 博客(59)
- 收藏
- 关注
原创 Django中的事务
在Django中,是一个数据库设置选项,它会在每个HTTP请求开始时自动开启一个数据库事务,并在请求结束时提交或回滚该事务。这提供了一种方便的方式来确保数据库操作的原子性,即要么全部成功,要么全部失败。在这个例子中,我们为默认的数据库连接设置了。这意味着每当Django处理一个HTTP请求时,它都会自动开启一个数据库事务。如果请求成功完成并且没有发生任何异常,那么事务会在请求结束时自动提交。如果请求期间发生了异常,那么事务会被回滚,从而撤销该请求所做的所有数据库更改。
2024-04-24 00:10:27
1233
1
原创 python中ctypes使用
前段时间接到了一个需求是给一个蓝牙的SDK测试接口的稳定性,将SDK的接口文档给你了,需要每个接口都写一个对应的测试用例,SDK 是用c写的,而我python用的比较熟练些,所有记录下在ctypes库的使用方法。
2024-04-22 23:20:48
582
原创 成为程序员后你都明白了什么?
在面对复杂的项目需求、紧张的开发周期以及不断变化的技术环境时,我也曾经感到过迷茫和困惑。在这个行业里,我遇到了很多热爱编程、追求卓越的人。这些经历不仅让我感受到了团队合作的力量,也让我更加坚定了在这个行业里继续前行的决心。我相信,只要我们保持学习的热情、不断提升自己的技能、积极面对挑战,就一定能够在这个行业中取得更好的成绩。在未来的日子里,我将继续努力学习、不断进步,为成为一个更加优秀的程序员而努力奋斗。在这个数字化快速发展的时代,程序员的角色越来越重要,而我也在这个过程中收获了许多宝贵的经验和体会。
2024-04-21 00:10:56
270
原创 Jenkins和gitlab实现CICD
想起公司的代码发布流程,只要个人分支的代码测试通过之后,合并到master分支的时候会自动构建和发布还是挺方便的,想着是不是能借鉴下,自己弄一个只要代码提交到gitlab的时候Jenkins自动构建自动发布自动生成测试报告呢。但是有个问题docker是在宿主机中的,Jenkins是安装docker容器中的,咱们的TracerBackend服务也是用容器部署的,那安装在Jenkins的容器怎么调用到宿主机的docker呢。使用清华的镜像源,找到最新的版本的源更新到Jenkins插件中更新站点中。
2024-04-20 23:56:25
1345
原创 Djanog的中间件
1 request中被中断, 当中间件中的request中返回了一个httpresponse时,中间件将被中断,不会执行继续执行中间件,直接跳转到对应中间的process_response中执行。中间件2中process_request直接返回HttpResponce时,跳过下面中间件和视图函数直接执行中间件2的process_response。中间件2的process_view返回了HttpResponce时,跳过下面中间和视图函数直接执行中间件3的process_responce。
2024-04-18 07:00:00
1590
原创 TypeError: ‘ForwardManyToOneDescriptor‘ object is not callable
这里少写了一个objects,因为Issues有一个字段creator,所有IDE快速生成了creator,而creator是一个外键字段关联到用户表,所有报这样的错误。的错误,这通常意味着你尝试像调用函数一样去调用一个 Django 模型中的外键(ForeignKey)或一对一关系(OneToOneField)字段,但实际上你应该使用它来访问相关的对象。要解决这个问题,请检查你的代码,找出你尝试调用外键或一对一关系字段的地方,并将其更正为直接访问该字段。例如,假设你有两个模型,一个是。
2024-04-18 01:18:21
246
原创 生成逼真假数据的强大工具: Faker
Python Faker 是一个强大的库,用于生成逼真的假数据。它支持生成多种类型的数据,并允许你自定义数据生成规则。通过使用 Python Faker,你可以轻松地为你的项目生成所需的数据,无论是用于测试、训练模型还是其他用途。希望这篇博客能帮助你更好地了解和使用 Python Faker。
2024-04-17 16:17:34
732
原创 Python中的Logging模块
在Python编程中,日志记录(Logging)是一项至关重要的任务,它帮助我们跟踪代码的运行状态、识别错误以及优化程序性能。Python标准库中的logging模块为我们提供了强大而灵活的日志记录功能。本文将介绍如何使用logging模块,并探讨其在Python开发中的实际应用。
2024-04-15 23:24:50
748
1
转载 Markdown中的Mermaid语法
Mermaid 是一个用于画流程图、状态图、时序图、甘特图的库,使用 JS 进行本地渲染,广泛集成于许多 Markdown 编辑器中
2024-04-15 23:04:00
57
原创 为什么选择成为一名程序员
在当今社会,信息技术行业迅速发展,程序员作为这一行业的重要组成部分,其职业前景广阔。成为一名程序员,不仅可以获得稳定的收入,还有机会在工作中不断提升自己的技能和知识,实现个人价值的提升。综上所述,选择成为一名程序员,既有兴趣驱动的内在动力,也有职业发展带来的外在诱因。对于那些既对编程充满热情,又希望在未来职业生涯中有所作为的人来说,成为一名程序员无疑是一个理想的选择。选择成为一名程序员,其背后的原因往往既包含兴趣,也包含职业发展的考量。对于我来说,这两者并不是孤立的,而是相互交织,共同推动步入这一行业。
2024-04-11 10:49:50
233
原创 最大公约数算法详解
本文介绍了三种常见的求解最大公约数的算法:辗转相除法、更相减损术和二进制算法。每种算法都有其独特的优点和适用场景。在实际应用中,我们可以根据具体需求选择合适的算法来求解最大公约数。同时,我们也可以通过优化算法来提高求解效率,满足更高性能的需求。
2024-04-10 22:38:31
755
原创 Django实现的登录注册功能
该项目是使用django+bootstrp开发的项目,包含以下功能注册: 手机获取验证码、ModelForm数据验证、验证码redis超时处理,登录:手机验证码登录、账号密码登录、生成随机图片验证码、用户信息seesion处理项目示例1 账号密码登录2 短信验证码登录3 用户的注册4 用户退出。
2024-04-09 23:16:35
3999
2
原创 生成随机图片验证码
生成指定长度的随机验证码all_chars = string.ascii_letters + string.digits # 包含大小写字母和数字通过string生成随机大小字母数组长度为4的字符串本文介绍了如何使用Python生成随机图片验证码的过程。通过生成随机字符串和绘制干扰线,我们可以创建一个安全可靠的验证码系统,提高网站的安全性。你可以根据自己的需求进行进一步的扩展和优化,例如添加更多的干扰元素、调整字体和颜色等。希望本文对你有所帮助!
2024-04-09 12:35:45
942
原创 批量将markdown文件转化为docx
Pandoc是一款功能强大的文本转换工具,它能够将多种标记和文字处理格式进行转换,包括但不限于Markdown、HTML、LaTeX和Word docx等。这款软件不仅支持广泛的格式转换,还提供了高度定制化的功能,以满足用户的不同需求。Pandoc的核心优势在于其模块化设计,它由一组读取器组成,能够解析给定格式的文本并产生文档的本地方法表示(抽象语法树或AST)。同时,它还拥有一组写入器,负责将这个本地方法表示转换成目标格式。
2024-04-08 12:06:33
677
原创 提取图片地理位置
在数字化时代,图片已经成为我们生活中不可或缺的一部分。然而,如何从图片中提取有用的信息,尤其是地址信息,一直是一个具有挑战性的问题。Python作为一种强大的编程语言,为我们提供了丰富的工具和库来解决这个问题。本文将介绍如何使用Python从图片中提取地址信息,并分享一些实用的技巧和经验。
2024-04-07 18:17:32
1801
1
原创 零基础想要进入IT圈
了解计算机科学的基础知识,如计算机网络、数据结构、算法和操作系统等,这将为你后续的学习打下坚实的基础。在学习过程中,你可以利用在线教育资源,如B站等平台上的相关课程,这些资源可以帮助你系统地学习IT知识。除了学习,实践经验同样重要。加入在线技术社区、参加技术会议和研讨会,与其他从业者交流和学习,这些都能帮助你拓宽视野,了解行业动态,并可能获得一些实习或工作机会。零基础想要进入IT行业,首先你需要明确自己的目标和兴趣点,因为IT行业涵盖了许多不同的领域,如软件开发、网络安全、数据分析、人工智能等。
2024-04-07 13:33:41
373
原创 Python中定时任务调度利器APScheduler
APScheduler是一个功能强大且易于使用的Python库,它使得定时任务的设置和执行变得简单高效。无论是简单的定时任务还是复杂的周期性任务,APScheduler都能提供灵活且可靠的解决方案。通过掌握其基本用法和常见场景,你可以轻松地将定时任务集成到你的Python应用中。
2024-04-06 23:44:21
1463
1
原创 堆排序解读
推排序的时间复杂度为O(n log n),其中n是待排序元素的数量。这是因为建堆的时间复杂度为O(n),而每次调整堆(即从堆中取出最大元素并重新调整堆)的时间复杂度为O(log n)。然而,推排序在构建初始堆时,需要对整个数组进行遍历,这可能导致在处理小数据集时效率不如某些其他排序算法。堆通常分为最大堆和最小堆,其中最大堆的父节点值总是大于或等于其子节点值,而最小堆则相反。在空间复杂度方面,推排序是原地排序算法,只需要一个常量级别的额外空间来存储临时变量,因此空间复杂度为O(1)。
2024-04-06 23:02:16
346
原创 二叉堆解读
二叉堆是一种高效的数据结构,它利用堆性质实现了快速插入、删除和查找操作。在优先队列、堆排序等场景中,二叉堆发挥着重要作用。掌握二叉堆的实现和应用,对于提高算法效率和理解数据结构具有重要意义。
2024-04-06 22:48:56
857
原创 计数排序解读
计数排序作为一种非比较型整数排序算法,在某些特定场景下具有独特的优势。通过理解和掌握计数排序的原理、特点和应用场景,我们可以更好地应对数据处理中的挑战,提高排序效率。
2024-04-06 12:35:29
482
原创 二叉树的介绍
二叉树(binary tree)树的每个节点最多有2个孩子节点。注意,这里是最多有2个,也可能只有1个,或者没有孩子节点。二叉树结构如图二叉树还有两种特殊的结构满二叉树: 二叉树的所有非叶子节点都存在左右孩子,并且所有叶子节点都在同一层级上,那么这个树就是满二叉树完全二叉树:完全二叉树的条件没有满二叉树那么苛刻,满二叉树要求所有分支都是满的;而完全二叉树只需保证最后一个节点之前的节点都齐全即可。
2024-04-06 11:42:21
301
原创 归并排序解读
归并排序作为一种典型的分治思想应用,以其稳定、高效的特点在算法领域中占据重要地位。通过深入理解归并排序的原理和实现方式,我们可以更好地掌握分治法的思想,并将其应用于实际问题的解决中。同时,我们也应该关注归并排序的优缺点和适用场景,以便在实际应用中做出合理的选择。
2024-04-05 23:13:33
620
原创 希尔排序解读
对于希尔排序的时间复杂度,并没有一个确定的公式来准确描述,因为它依赖于增量序列的选择。然而,在实际应用中,通过选择合适的增量序列,希尔排序通常能够比插入排序更快地完成任务。希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列(由相隔某个“增量”的记录组成)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。希尔排序的优点在于,相比于插入排序,它减少了数据移动的次数,因此在某些情况下能够更快地完成排序。
2024-04-05 23:03:20
492
原创 插入排序解读
插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。虽然其时间复杂度较高,但在某些特定场景下,如处理小规模数据或几乎有序的数据时,插入排序仍然具有一定的应用价值。然而,在最好情况下,即输入数据已经是有序的情况下,插入排序的时间复杂度可以达到O(n)。在空间复杂度方面,插入排序是原地排序算法,只需要一个额外的空间来存储当前需要排序的元素,因此其空间复杂度为O(1)。
2024-04-05 22:41:17
438
原创 选择排序解读
虽然它的时间效率不如某些更高级的排序算法,但在某些特定场景下,由于其实现简单和易于理解的特点,它仍然具有一定的应用价值。选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。在空间复杂度方面,选择排序是原地排序,它只需要一个额外的空间来存储每次找到的最小元素的索引,因此其空间复杂度为O(1)。,通过不断选择剩余元素中的最小(或最大)元素,放到已排序序列的末尾,直到全部待排序的数据元素排完。
2024-04-05 22:31:10
561
原创 快排序解读
它选择一个元素作为“基准”(pivot),通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比基准小,另一部分的所有数据都比基准大,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。在这个实现中,我们选择了数组的中间元素作为基准,并使用列表推导式来创建小于、等于和大于基准的元素的子列表。注意,这里的分区操作。此外,快速排序的空间复杂度为O(log n)(递归调用栈),但在原地排序的版本中,空间复杂度可以优化到O(1)。
2024-04-05 22:04:01
942
原创 鸡尾酒排序解读
鸡尾酒排序以其独特的排序方式和简洁的实现代码吸引了众多算法爱好者的关注。通过学习和实践鸡尾酒排序,我们可以更加深入地理解排序算法的原理和设计思想。同时,我们也可以从中体会到算法设计的巧妙之处和计算机科学的魅力所在。无论是作为学习排序算法的入门之选,还是作为探索算法设计的有趣案例,鸡尾酒排序都值得我们深入研究和探讨。
2024-04-05 16:53:48
996
原创 冒泡排序解读
通过学习和实践冒泡排序,我们可以深入理解排序算法的原理和实现方法,为后续学习和应用更复杂的排序算法打下基础。在信息爆炸的时代,数据无处不在,而如何有效地管理和处理这些数据,成为了现代计算机科学的一个重要课题。它的基本思想是:通过相邻元素之间的比较和交换,使得每一轮排序后,最大(或最小)的元素能够“浮”到序列的一端。轮的比较和交换操作,内层循环则通过比较相邻元素的大小并交换,将较大的元素逐步“冒泡”到数组的末尾。外部循环控制所有的回合,内部循环实现每一轮的冒泡处理,先进行元素比较,再进行元素交换。
2024-04-05 16:49:31
566
原创 递归算法解读
递归(Recursion)是计算机科学中的一个重要概念,它指的是一个函数(或过程)在其定义中直接或间接地调用自身。递归函数通过把问题分解为更小的相似子问题来解决原问题,这些更小的子问题也使用相同的解决方案,但处理的数据规模更小。递归通常有两个关键部分:递归基准情形(base case)和递归步骤(recursive step)。递归基准情形:是递归函数不再调用自身的情况,即问题规模缩小到可以直接解决的程度。这是递归终止的条件,确保递归过程不会无限进行下去。
2024-04-04 20:21:19
903
原创 时间复杂度和空间复杂度
通过什么来衡量一个算法的好坏呢,那就是时间复杂度和空间复杂度。实现相同功能但时间和空间复杂度更优的算法是更优的算法,算法需要优化也可以从时间或者空间的复杂度的角度来考虑。主要衡量一个算法执行所需的时间长短,具体来说,如果一个算法的时间复杂度是O(n),那么这意味着当输入规模增加时,算法的执行时间大致上会以线性方式增加。常见的时间复杂度级别有O(1)(常数时间)、O(n)(线性时间)、O(n^2)(平方时间)、O(log n)(对数时间)等。
2024-04-04 13:02:11
868
原创 python的垃圾回收
在python程序运行时,会根据数据类型的不同找到其对应的结构体,根据结构体中的字段来进行创建相关的数据,然后将对象添加到refchain双像链表中,每个对象中的ob_refcnt就是引用计算器,值默认是为1,当有其他的变量引用对象时,引用计数器就会发生变化。当一个对象的引用计算器为0时,按道理说应该回收,但是内部不会直接直接将开辟的内存空间直接回收,而是将对象放在free_list链表中当缓存,以后再去创建对象时不再重新开辟内存而是直接使用free_list的对象。而交互模式下,不会使用缓存机制。
2024-04-03 20:11:23
1583
原创 Mysql的锁
上一章讲了MySQL的事务,事务就是两个不同的线程在操作同一个数据库,而事务的本质就是锁,通过调节事务的不同的隔离等级来解决脏写、脏读、不可重复读以及幻读问题,就是在不同的隔离级别上使用不同的锁实现的,也就是说,数据库的锁机制本身是为了解决并发事务带来的问题而诞生的。
2024-04-03 16:37:22
639
原创 Mysql的事务
MySQL的事务(Transaction)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务能把数据库从一个一致性状态转变为另一个一致性状态。
2024-04-03 10:19:45
1352
原创 程序员35岁会失业吗?
35岁是否是程序员职业生涯的分水岭,其实这个问题并没有一个确定的答案,因为它取决于许多因素,包括个人的技术能力、职业发展路径、所在公司的文化以及整个行业的趋势等。从一方面来看,确实有一些程序员会担心年龄带来的挑战。随着技术的快速发展和更新换代,新兴技术如人工智能、大数据、云计算等不断涌现,年轻程序员可能更容易接受和掌握这些新技术。而资深程序员可能由于家庭、生活等其他因素,难以投入大量时间和精力去学习这些新技术,导致在技术层面相对落后。然而,从另一方面来看,资深程序员也拥有年轻程序员无法比拟的优势。
2024-04-02 20:59:16
488
原创 Mysql的索引
MySQL的索引是数据库性能优化的关键部分,它对于提高查询速度至关重要,索引在MySQL中扮演着类似于书籍目录中索引的角色。没有索引,数据库系统必须从头开始扫描整个表以找到相关的行,这称为全表扫描,对于大型表来说是非常低效的。而有了索引,数据库系统可以迅速定位到所需的数据,从而显著提高查询速度。
2024-04-02 19:25:59
1203
原创 Mysql的库函数
MySQL是一个流行的开源关系型数据库管理系统,它提供了大量的内置库函数,用于在查询时执行各种操作。这些函数可以帮助开发者在数据检索、转换和处理过程中实现更复杂的逻辑。
2024-04-01 22:08:48
937
原创 Mysql的基本命令
如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。GROUP BY 语句根据一个或多个列对结果集进行分组,在分组的列上我们可以使用 聚合函数COUNT, SUM, AVG,等。LIKE 子句中使用百分号 %字符来表示任意字符,如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合,并去除重复的行。
2024-04-01 18:19:52
1789
3
原创 MySQL介绍
MySQL是一个开源的关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据库管理。自上世纪90年代中期以来,MySQL凭借其易用性、稳定性和高效性能,赢得了广泛的用户群体,成为互联网上许多重要应用的底层数据存储解决方案。MySQL支持多种操作系统,包括Windows、Linux、macOS等,具有良好的跨平台兼容性。它提供了大量的API接口,允许用户通过多种编程语言(如C、C++、Python、Java等)与数据库进行交互。
2024-03-30 23:24:23
3520
Django+bootstrp实现用户的注册和登录功能
2024-04-09
通过解析图片获取图片中的地理位置
2024-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人