自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Rnan_prince的博客

知是行之始,行是知之成(1352638748@qq.com)

  • 博客(15)
  • 收藏
  • 关注

原创 TCP实现socket通信(python)

1、套接字工作流程服务器端先初始化Socket,建立一个套接字 与端口绑定(bind),用 bind 函数来绑定一个端口号和 IP 地址。 对端口进行监听(listen),服务器调用 listen 函数,使服务器的这个端口和 IP 处于监听状态 服务器调用accept阻塞,等待客户端连接。等待客户机的连接。 客户机用 socket 函数建立一个套接字,设定远程 IP 和端口。 客...

2020-03-29 19:03:01 1624

原创 Python基础 - 装饰器总结

装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。基本知识请参考:https://www.runoob.com/w3cnote/python-func-decorators.html有些重要的东西提一下:1. 使用 @ 标识符将装饰器应用到函数Python...

2020-03-29 18:26:15 341

原创 字典树Trie

字典树又名前缀树(Prefix Tree)根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 每个节点的所有子节点包含的字符都不相同。Trie(前缀树) 的模板:.新建一个 TrieNode 的 class 用于表示 Trie 中的节点,包含 children 和 is_word 两个属性class ...

2020-03-24 00:46:33 908

原创 并查集Union Find

并查集:一种用于支持集合快速合并和查找操作的数据结构O(1) 合并两个集合- Union O(1) 查询元素所属集合- FindUnion Find 是一棵多叉树:1、并查集的实现1.1 底层数据结构父亲表示法,用一个数组/哈希表记录每个节点的父亲是谁。father[“Tom”] = “Nlear” father[“Jim”] = “Soox”1.2 查询所在集合...

2020-03-23 23:54:03 275

原创 序列化和反序列化二叉搜索树

序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。设计一个算法来序列化和反序列化二叉搜索树。 确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。首先,定义二叉树:from collections import dequeclass TreeNode(o...

2020-03-23 22:46:50 277

原创 Python7套库提升代码的可维护性

当软件项目进入“维护模式”时,原本的代码可读性与编码标准往往很难得到保证。但必须强调的是,在代码库中保持样式与测试标准的一致性,正是降低维护负担的重要前提。只有这样,我们才能确保未来的开发人员得以快速了解新的情况,并随着时间推移切实保证项目与应用程序的健康状况。保护项目未来可维护性的一种理想方式,在于利用外部库检查您的代码运行状况。以下是目前开发人员最喜爱的的代码梳理库,它们能够以强制方式执行...

2020-03-15 16:49:05 599

原创 软件工程9个测试坏味道

1、基本断言基本断言应该表达某种假设或意图,它们应该声明代码的行为。基本断言的问题在于它缺乏意义,因为断言的基本原理和意图隐藏在看上去无意义的单词和数字背后,造成难以理解,并且难以验证断言的正确性。改进方法:要用被测功能的语言和词汇表达你的断言,每看到!=或==比拉符的断言,持别是涉及-1或0的数字时,就要考虑抽象层次是不星正确,如果断言不能立即显示出意义,就很可能是基本断言,需要重构...

2020-03-15 16:11:35 1993

原创 贪心法&跳跃游戏

1、跳跃游戏给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。来源:力扣(LeetCode)链接:https://leetco...

2020-03-10 22:13:07 353 2

原创 Hierholzer算法&重新安排行程

1、Hierholzer算法欧拉迹是指一条包含图中所有边的一条路径,该路径中所有的边会且仅会出现一次。一个无向图中包含欧拉迹,当且仅当下面两条性质同时满足:图是连通的 图中每个顶点的度均为偶数而一个有向图包含欧拉迹,当且仅当下面两条性质同时满足:图是连通的 图中每个顶点入度和出度相同Hierholzer算法用于在连通图寻找欧拉迹,其流程非常简单。从一个可能的起点出发,进...

2020-03-10 21:40:57 4543

原创 LeetCode-查找和最小的K对数字---多种解法

题目:查找和最小的K对数字给定两个以升序排列的整形数组 nums1 和 nums2, 以及一个整数 k。定义一对值(u,v),其中第一个元素来自nums1,第二个元素来自 nums2。找到和最小的 k 对数字(u1,v1), (u2,v2) ... (uk,vk)。例 :输入: nums1 = [1,7,11], nums2 = [2,4,6], k = 3输出: [1,...

2020-03-09 00:52:32 620

原创 前缀和应用总结

前缀和是一个数组的某项下标之前(包括此项元素)的所有数组元素的和。1、一维前缀和公式:sum[i] = sum[i-1] + a[i]根据上述表达式我们可以以O(1)求出区间[i,j]的区间和 : sum = [0]*(n+1) # 一般+1为了边界计算方便 for i in range(1, n+1): sum[i] = sum[i-1] + nums[i...

2020-03-07 22:37:02 1251

原创 单调栈应用总结

单调栈单调递减栈:数据出栈的序列为单调递减序列 单调递增栈:数据出栈的序列为单调递增序列单调栈模板:for (遍历这个数组) if (栈空 || 栈顶元素>=或者<=当前比较元素): 入栈 else: while (栈不为空 && 栈顶元素<或者>当前元素) 栈顶元...

2020-03-07 21:26:26 537

原创 LeetCode-基本计算器类问题汇总(栈的应用)

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。栈的主要操作:push(),将新的元素压入栈顶,同时栈顶上升。pop(),将新的元素弹出栈顶,同时栈顶下降。empty(),栈是否为空。peek(),返回栈顶元素。python通常实现栈只需要list就可以,list.append(val), list.pop()、list[-1]支持操作...

2020-03-07 19:54:12 363

原创 git log常用命令

使用git log命令可以查看提交历史,代码如下:$ git loggit log指令不加其他参数,可以列出所有历史提交,分析如下:按照提交的时间(从上到下)顺序排列,最上面为最新提交的。 commit后面是经过SHA-1加密算法对此次提交计算的结果,可以唯一标识此次提交(重复的可能性可以忽略不计)。 Author后面分别是提交的用户名和电子邮件地址,它们之间用空格分隔。...

2020-03-03 23:24:39 681

原创 Shell脚本定义变量和变量的引用

一、定义变量variableName="value"注意:变量名和等号之间不能有空格,这和编程语言都不一样。同时,变量名的命名须遵循如下规则:首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。已定义的变量,可以被重新定义。variableName="goo...

2020-03-01 00:36:33 4314

空空如也

空空如也

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

TA关注的人

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