- 博客(165)
- 资源 (14)
- 收藏
- 关注
原创 Python命名规则
包名:package_name 例如:uipython文件名:module_name 例如:ui_main_window类名:CLASS_NAME 例如:UI_MAIN_WINDOW变量:variable_name 例如:btn_open_target常量:CONSTANT_NAME 例如:VALUE_TYPE函数:function_name(args) 例如:set_value(str)...
2022-04-02 10:34:27
676
原创 Nginx快速入门
本文参考Beginner’s Guide (nginx.org)1、Ubuntu下安装Nginx(nginx: Linux packages)2、启动、关闭和重新加载配置nginx -s stop— 快速关闭 nginx -s quit— 正常关闭 nginx -s reload— 重新加载配置文件 nginx -s reopen— 重新打开日志文件3、查看所有运行着的nginx进程:ps -ax | grep nginx4、...
2022-03-22 10:37:09
4814
原创 Flask+Gunicorn+Nginx+Ubuntu+腾讯云+Https部署总结
1. 环境说明:腾讯云轻量应用服务器,系统是ubuntu20.04通过pip install flask,gunicorn来安装flask和funicorn通过apt安装nginx,然后用ps -ef | gref nginx 来查看nginx的安装位置,一般来说在/etc/nginx/。2. 部署写好flask程序(注意:如果要采用https,那么所有url请求的地址请写完整,如https://ip地址:端口/路径),写完程序用python 文件名.py 运行一下试试看对不对 用gu
2022-01-04 13:21:38
1799
1
原创 PyQt5 通用开发设计模式示例
环境准备安装anaconda3 找到designer软件。用于开发界面,界面ui文件转py文件的代码: pyuic5 -o 要输出的文件名.py 文件名.ui 打包请重新装一个32位的python。使用32bit的目的:使软件在32位和64位电脑上都能运行。打包命令:(建议使用虚拟环境,进入虚拟环境命令:workon wurenji) pyinstaller -D -w colorDialog.py 注意:-D 代表打包成一个文件夹的形式,执行文件为其中的exe文件;(可选择-F打包成
2021-09-01 15:29:53
392
原创 HTTP认证的学习记录
前几天,同事一个需求涉及到RFC2617的认证(authentication)【链接】。为什么要采用HTTP认证呢?答案很简单:维护web应用的安全。(当时刚出来的时候挺安全的,但20多年过去了,道高一尺魔高一丈,攻击方法层出不穷)。虽然如此,但既然要求使用HTTP认证,那就正好学习一下!首先来介绍一下HTTP相关的概念,网上有些文章写得挺通俗易懂的,我就直接引用了:HTTP 的认证机制http协议支持两种认证方式:基本认证和摘要认证。什么是认证认证就是要给出身份证明,证明你就是
2021-02-26 14:29:17
175
原创 python开发数据分析软件中遇到的坑(pyqt5;matplotlib;pyinstaller)
最近在开发一款分析无人机飞行数据的软件,原以为应该很容易,没想到还是有不少的坑。现在总结一下:1)我的开发环境是anaconda+spyder。开发过程是非常顺利的,但是当我用pyinstaller打包时,出现了RecursionError: maximum recursion depth exceeded的问题,说明在import的过程中有递归引入的问题,我仔细查找了我的代码,发现并不存在这样的问题。经过一番搜寻,发现主要在于anaconda包中的库太多,导致有冲突。2)解决方法:我又安装了一个p
2020-07-23 09:25:32
738
1
原创 第4章 复合类型
数组:是一种复合类型。创建的方式如下:int months[12]; // 创建一个长度为12个整型元素的数组变量需要类型、数组名和元素数三个要素才能创建成功。然后便可以用索引来标识和访问各个元素,但要注意下标不能越界,不然会报错。数组元素的赋值:(注意大括号列表中元素的类型需要正确或者能自动转换为对应类型,否则报错)int cards[4] = {3,6,8,10} // 最...
2020-04-11 12:29:08
150
原创 第3章 处理数据
变量名:1)只能使用字母字符、数字和下划线。2)名字的第一个字符不能是数字。3)区分大小写。4)不能将C++关键字用作名称。整型:不同的硬件环境下整型所占据的bit位数并不相同,但确保了最小长度:1)short至少16位。2)int至少和short一样长。3)long至少32位,且至少和int一样长。4)long long至少64位,且至少和long一样长。char类型:专门存储字符。...
2020-04-11 11:13:02
192
原创 第一章 预备知识
C++是在C的基础上发展的,相对于C只能进行结构化编程,C++还可以进行:面向对象编程和泛型编程。C++是在贝尔实验室诞生的,Bjarne Stroustrup于80年代开发出了这种语言。他的个人网站:http://www.research.att.com/-bs/本书遵循的C++标准:C++98C++程序创建的过程:1)编写代码。2)编译代码。3)链接代码。...
2020-04-07 21:11:12
189
原创 前言
从13年计算机本科入学以来,转眼已过7个年头了,期间从一个什么都不懂的小白到现在的略知一二,感谢党和国家给予我学习的机会,给予我不断成长的空间。 7年间,从本科到研究生,我对于课程的学习还是相当认真的,平均绩点是3.7,最怀念的时光还是从早到晚泡在图书馆里,平日里下课后去图书馆完成作业,看闲书,期末认真复习迎考,一位难求的学习气氛。 7年间,学习过不少编程语言,算法。在...
2020-04-07 20:57:00
230
原创 人群计数/人群密度估计的研究背景
人群计数是什么人群计数是公共安防行业中非常需要的一种技术。给定一幅图像,计算机自动处理分析出其中的人数。比较早的研究可以追溯到04年基于HOG算子的行人检测方法提出之后,有学者就基于该算法构建了行人技术算法,但仅对人数较少的场景有效,因为人数较多的场景存在大量拥挤造成该算法的漏检测严重。然后在08到14年间,基于人数回归的方法就解决了行人检测方法的缺陷,能够对人数较多的场景有效。然而,无论是行...
2020-03-17 11:30:41
5529
1
原创 字节跳动算法题:马里奥跳跃
思路:动态规划N = 7P = 0# MaxDis = [10, 0, 2, 1, 1, 0, 1]# MaxDis = [2, 0, 1, 1, 1, 1, 1]MaxDis = [5, 0, 5, 1, 1, 1, 1]# dp[i] 代表当前点到终点的最小跳跃次数dp = [0 for i in range(0, len(MaxDis))]for i in rang...
2019-07-15 12:15:13
910
原创 剑指7 重建二叉树
思路:递归左子树和右子树,然后赋给根结点# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回构造的Tr...
2019-06-25 14:00:55
153
原创 剑指45 把数组排成最小的数
思路简单:排序+比较规则:a+b <b+a 则a应该排在b的前面。# -*- coding:utf-8 -*-class Solution: def PrintMinNumber(self, numbers): # write code here '''numbers是由数字组成的列表''' numbers = self.so...
2019-06-25 10:34:40
179
原创 leetcode 82 删除排序链表中的重复元素 II
这道题思路不难,但是我一共花了1个小时才AC,失败了两次,第三次提交AC,失败在了忘记加newTail.next=None导致pre后面的数也在最终返回的结果中。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# ...
2019-06-24 22:28:21
146
原创 leetcode 931 下降路径最小和
思想很简单:动态规划,每个元素代表到达当前位置的最小和。因为最多只能相隔一个位置,所以考虑一下边界情况即可。class Solution: def minFallingPathSum(self, A: List[List[int]]) -> int: n = len(A) # row m = len(A[0]) # col ...
2019-06-21 16:24:50
206
原创 leetcode 338 比特位计数
思路:对应数字n的二进制中1的位数是有规律的。0的位数为0。1是2的0次幂,2是2的1次幂。因此,只要是2的幂的数的二进制中1的位数都是1。那么对应地,3的二进制中1的位数就是2的位数加上1的位数;同理,7的二进制中1的位数就是4的位数加上3的位数,使用动态规划得解:dp[n]=dp[n-最近的2的幂]+1,其中1代表的是最近的2的幂本身二进制中包含1个1。class Solution: ...
2019-06-20 18:12:25
151
原创 leetcode 746 使用最小花费爬楼梯 ★
这道题有点不好理解,要增加一个地面和楼顶就好理解了。class Solution: def minCostClimbingStairs(self, cost: List[int]) -> int: if cost == None: return 0 elif len(cost) == 1: retu...
2019-06-20 17:33:25
132
原创 leetcode 221 最大正方形 ★
当我们判断以某个点为正方形右下角时最大的正方形时,那它的上方,左方和左上方三个点也一定是某个正方形的右下角,否则该点为右下角的正方形最大就是它自己了。这是定性的判断,那具体的最大正方形边长呢?我们知道,该点为右下角的正方形的最大边长,最多比它的上方,左方和左上方为右下角的正方形的边长多1,最好的情况是是它的上方,左方和左上方为右下角的正方形的大小都一样的,这样加上该点就可以构成一个更大的正方形。 ...
2019-06-20 15:58:13
150
原创 leetcode 120 三角形最小路径和 ★
目前只想出空间复杂度O(N*N/2)的方法,代码:class Solution: def minimumTotal(self, triangle: List[List[int]]) -> int: for r,row in enumerate(triangle): if r == 0: continue ...
2019-06-19 19:35:27
116
原创 leetcode140 单词拆分 ★
def wordBreak(self, s, wordDict): """ :type s: str :type wordDict: List[str] :rtype: List[str] """ res = [] def wordBreak(): dp = [...
2019-05-30 09:54:20
198
原创 leetcoe236 二叉树的最近公共祖先 ★
我的思路:先分别求出p结点到根节点的路径和q结点到根结点的路径,然后找到最近的公共祖先。其中,如何求得p结点到根结点的路径,需要好好复习一下。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.le...
2019-05-27 15:47:18
120
原创 leetcode235 二叉搜索树的最近公共祖先
思路:利用二叉搜索树左子树中所有结点值小于根结点值,右子树中所有结点值大于根结点值的性质。因此,公共祖先就是最近的一左一右的情况,代码很好理解。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.l...
2019-05-27 14:10:55
251
原创 leetcode470 用 Rand7() 实现 Rand10()
方法是,把等概率产生数的空间扩大,使得该空间大于要产生新的数的范围,然后找到最接近这个空间的一个值k,使得k%新数==0,也就是说使得k是这个要新生成数的倍数。对于本例子来讲,就是把等概率产生数的空间扩大至0-48。然后取最接近48且为10的倍数的一个值k,这个值是40。然后每次产生一个新值,若该值小于40,那么对该值mod10也就是说新空间中的0,10,20,30代表10;1...
2019-05-21 22:59:50
464
1
原创 leetcode169 求众数
思路:一种思路是进行排序,另一种是哈希表。class Solution(object): def majorityElement(self, nums): """ :type nums: List[int] :rtype: int """ n=len(nums) d={} ...
2019-05-13 22:05:27
129
原创 leetcode142 环形链表 II
思路:快慢指针或者用哈希表。# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def detectCy...
2019-05-13 21:23:30
129
原创 leetcode61 旋转链表
思路:这道题我想到的是使用快慢指针,快慢指针相差k个移动的位置,然后进行相应的指针连接即可。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution:...
2019-05-13 16:28:53
118
原创 leetcode238 除自身以外数组的乘积
思路:整个数组遍历两次:第一次遍历数组的时候,从左边开始,记录下每个元素左边所有元素的乘积。第二次遍历数组的时候,从右边开始,记录下每个元素右边所有元素的乘积。然后相乘即可。简化为空间复杂度O(1)的代码即为:class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: ...
2019-05-12 12:32:39
115
原创 leetcode557 反转字符串中的单词 III
思路:先割出每个单词,然后反转每个单词。class Solution: def reverseWords(self, s: str) -> str: words=s.split(" ") result=[] for word in words: word=[c for c in word] ...
2019-05-12 12:06:18
179
原创 leetcode541 反转字符串 II
按题意操作即可。class Solution: def reverseStr(self, s: str, k: int) -> str: def _rev(s): pass s=[c for c in s] result=[] while len(s)>0: ...
2019-05-12 11:54:38
230
原创 leetcode11 盛最多水的容器
思路:双指针法这种方法背后的思路在于,两线段之间形成的区域总是会受到其中较短那条长度的限制。此外,两线段距离越远,得到的面积就越大。我们在由线段长度构成的数组中使用两个指针,一个放在开始,一个置于末尾。 此外,我们会使用变量maxarea来持续存储到目前为止所获得的最大面积。 在每一步中,我们会找出指针所指向的两条线段形成的区域,更新maxarea,并将指向较短线段的指针向较长线段那端...
2019-05-12 11:29:53
216
原创 leetcode695 岛屿的最大面积
这道题和求<岛屿的个数>那题差不多。思路:回溯法求每个岛屿的面积,每次设置一个全局变量记录当前岛屿的面积,最后取最大面积。class Solution: def maxAreaOfIsland(self, grid: List[List[int]]) -> int: def dfs(i,j): if (not 0<...
2019-05-12 11:06:26
275
原创 leetcode83 删除排序链表中的重复元素
思路,因为是排序链表,所以只需要顺序地比较相邻两个元素是否相同,相同则保留前者,不同则继续遍历下个元素。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solu...
2019-05-12 10:33:30
96
原创 leetcode200 岛屿的个数
典型的回溯法题目。与棋盘问题类似。class Solution: def numIslands(self, grid: List[List[str]]) -> int: def dfs(i,j): if not(0<=i<m) or not(0<=j<n): ret...
2019-05-11 14:35:14
195
原创 leetcode463 岛屿的周长
本题的最佳思路看起来不难,但我一开始没想出来,即:一次遍历矩阵中所有元素,如果该元素为岛屿则加4,并判断该元素的左边和上边是否为岛屿,如果是则减2。class Solution: def islandPerimeter(self, grid: List[List[int]]) -> int: row = len(grid) column = le...
2019-05-11 14:06:15
235
Excel Vba课堂随机点名程序
2017-02-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人