自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python扁平化处理嵌套序列的好办法

python协程

2022-07-29 16:55:48 320 1

原创 python连乘

python实现连乘

2022-07-29 16:45:57 1861 1

原创 中介模式(python实现2)

相较前一个中介模式(python实现)来说,本例子实现了多个中介者的情况from abc import ABCMeta, abstractmethodfrom enum import Enumclass InteractiveObject: """进行交互的对象"""class InteractiveObjectImplA: """实现类A"""class InteractiveObjectImplB: """实现类B"""class Mediat

2022-05-19 23:54:23 445

原创 中介模式(python)

"""中介模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用, 从而使其耦合松散,而且可以独立地改变他们之间的交互"""class HouseInfo: """房源信息""" def __init__(self, area, price, has_window, has_bathroom, has_kitchen, address, owner): self.__area = area self._...

2022-05-19 16:59:52 384

原创 状态模式(python)

"""状态模式的核心思想是一个事物(对象)有多种状态,在不同的状态下所表现出来的行为和属性不一样"""from abc import ABCMeta, abstractmethodclass Context(metaclass=ABCMeta): """状态模式的上下文环境类""" def __init__(self): self.__states = [] self.__cur_state = None # 状态发生...

2022-05-17 14:46:15 502

原创 python内置setattr函数赋值时会跳过定义的setter方法吗?

python内置setattr函数赋值时会跳过定义的setter方法吗?

2022-04-25 23:49:33 975

原创 搞懂Python协程

什么是协程?协程是指一个过程,这个过程与调用方协作,由调用方提供的值进行产出。流畅的PythonLuciano Ramalho大佬的这个解释真是有点抽象。直观来看,如果把“协程”替换成“函数”,这段话也读的通,而且好像更容易理解。细细读来,感觉大佬想表达的意思主要集中在“协作”一词上。协程是怎么协作的?我对协程的第一映像是,只要把函数的return关键字改成yield,就把函数定义成了协程,所以关键还是得理解yield关键字的作用在词典中,yield有产出和让步两种意思,

2022-04-15 00:10:15 369

原创 MySQL可重复执行的建表SQL

记录一个可重复执行的建表SQL,因为有时候上线不是一次能成功的,所以需要考虑到重复执行。DROP TABLEIF EXISTS table_name;CREATE TABLE `table_name` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID', `column1` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '变量代码', `column2` float DE

2022-04-01 13:48:14 1537

原创 剑指offer:青蛙跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。思路:可以使用动态规划的思想来处理class Solution: def numWays(self, n: int) -> int: mod = 1e9+7 if n == 0: return 1 if n..

2022-03-25 15:37:14 332

原创 剑指offer:斐波那契数列

题目:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。思路:可以使用动态规划的思路来解决问题class Soluti...

2022-03-25 15:24:15 381

原创 剑指offer:从头打印链表

题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)思路:链表的遍历只能从到尾,可以借用栈的入栈和出栈将访问得到的值顺序翻转import numpy as npclass Stack: def __init__(self): self.s = np.array([], dtype=int) self.length = 0 def append(self, e): self.s = np.appe..

2022-03-25 15:03:37 368

原创 剑指offer:包含min函数的栈

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。思路:增加一个数据域用来记录最小元素,如果当前入栈元素不大于最近一次保存的最小值,那么将当前值保存为最近一次保存的最小值import numpy as npclass MinStack: def __init__(self): """ initialize your data struc..

2022-03-24 18:05:14 427

原创 剑指offer: 两个栈实现一个队列

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )思路:根据栈的后进先出原则,所有元素正序入栈后出栈顺序为反序,然后反序进入另一个栈后出栈顺序是正序import numpy as npclass Stack: def __init__(self): self.s = np.arra..

2022-03-24 17:56:57 897

原创 使用git tag

添加标签git tag -a [标签名] -m "注释"将本地代码库的标签推送到远程代码库git push [远程代码库] --tagsgit push origin --tags查看标签和注释git tag -n

2022-01-29 17:02:55 463

原创 策略模式(Python一等函数实现)

"一等函数"这个词其实有点坑,听起来有点像特指某一部分函数,但是其实所有函数都是一等函数。编程语言理论家把“一等对象”定义为满足下述条件的程序实体:在运行时创建 能赋值给变量或数据结构的元素 能作为参数传给函数 能作为函数的返回结果---《流畅的Python》第5章 一等函数所以可以看出,所有函数都是一等对象,所以叫做“一等函数”。策略模式由三个部分组成:上下文:把一些计算委托给实现不同算法的可互换组件(具体策略),它提供服务 策略:实现不同算法的组件共同的接口 具体

2022-01-14 16:47:40 591

原创 直接插入排序(Python)

顾名思义,直接插入排序是一种插入排序。排序过程中不需要借助硬盘来保存临时数据,所以它也是一种内部排序。直接插入排序的思想是将一个序列在逻辑上分为两部分组成,一半是已经排序好的,一半是没经过排序的,要做的是将数据从没排序的部分拿出来,然后在排序好的部分里找个合适的位置插入。算法的空间复杂度是:O(1)算法的时间复杂度是:O(n^2)# 直接插入排序import numpy as npdef insert_sort(data: list): init = np.array([0

2021-12-31 17:15:05 1021

原创 图的十字链表实现(Python)

当实现稀疏图时,为了避免空间浪费会采用邻接表实现。但是邻接表实现的图,查找某个顶点的入度边关联的另一个顶点时就比较麻烦,就是就可以采用图的十字链表实现十字链表的关键点是,两个有相同弧头顶点的弧结点就有一个指针相连,两个有相同弧尾顶点的胡结点也会有一个指针相连"""图的十字链表表示"""import numpy as npclass ArcBox: # 弧结点 def __init__(self, tail_vex, head_vex, head_link=None,

2021-12-28 14:46:40 903

原创 图的邻接表实现(Python)

在实现稀疏图的时候,邻接矩阵会使用大量空间用来表示两个顶点没有邻接关系,但是实际使用时我们更关注有邻接关系的顶点,所以为了避免这个问题,可以使用邻接表来实现图,也就是使用链表来表示顶点间的连接关系"""图的邻接表实现"""import numpy as npclass ArcNode: """ 弧结点 """ def __init__(self, adj_vex, next_arc, info): self.adj_vex = adj_vex

2021-12-27 10:43:54 1999

原创 git基于历史版本创建新分支

首先执行git log命令查看历史版本日志git log想要从哪一次提交上拉出新分支,那么找到对应的提交,copy下commit ID,大概是这个样子commit 63226e3eae6d5c63acb643172569a00e367e631d如果工作区有更新,那么先将代码提交、或暂存,然后执行命令git branch [new branch name] [commit id] 查看分支是否创建成功git branch -a切换到当前新创建的分支git che.

2021-12-17 09:33:15 2079

原创 git暂存命令

暂存命令的作用可以将git工作区的代码更改暂存,之后就可以执行git pull、git merge之类的命令暂存命令git stash save "暂存的备注"直接执行git stash也可以达到暂存的目的,但是连续多次暂存后容易让人混淆哪次暂存了哪些代码查看暂存记录git stash list取回暂存代码git stash pop......

2021-12-16 10:13:37 17447

原创 使用yield from

代码引自《流畅的Python》16.7 使用yield from 一节为什么书中的案例里最后没有按预期收集到数据?因为子生成将return语句写到了循环内,所以调用方每次send()值到子生成器都会返回Result对象到委派生成器grouper,导致结果覆盖。而最后一次send(None)触发子生成器退出循环时,又相当于子生成器做了一次return None,将委派生成器中结果进行覆盖,所以最终收集到的数据每个键的值都是None如果将子生成器的return语句放到循环之外,那么知道调用方se

2021-12-15 14:29:37 767

原创 git分支管理

git远程分支拉到本地如果不带远程库名,则会在本地创建新分支的同时,复制当前分支的提交到新分支,所以如果创建新分支的目的是和某个远程分支同步,则可能会产生一次代码冲突。命令加上远程库名,则会避免这个问题。git checkout -b 分支名 远程库名git删除本地分支git branch -a # 先查看下所有分支git branch -D 分支名git branch -a # 检查下分支是否被删除...

2021-10-08 10:15:25 59

原创 MySQL 更新时关联多张表

UPDATE 表a aINNER JOIN 表d d ON a.字段= d.字段INNER JOIN 表b b ON b.字段 = d.字段INNER JOIN 表c c on c.字段 = b.字段SET a.字段= b.字段, a.字段 = b.字段, a.字段 = c.字段, a.字段 = c.字段, a.字段 = c.字段, a.字段 = c.字段, a.字段 = c.字段, a.字段 = c.字段, a.字段 = c.字段, a.字段 = c.字段, a.字段 .

2021-08-28 13:52:38 132

原创 一个数据处理场景的基类

大多数数据处理场景中,都是针对一个数据集执行特定的逻辑,然后将结果保存。我记录的这个类,是以Python实现,以MySQL实现存储。在大量数据库io场景下,使用连接池可以实现异步io、连接资源重用、避免连接中断问题。实现连接池的方式有多种,可以用sqlalchemy实现,下面记录的是以PooledDB的实现# DBUtils 2.0.2# PyMySQL 1.0.2import pymysqlfrom dbutils.pooled_db import PooledDBfrom conc

2021-08-28 13:43:46 97

原创 MySQL SELECT语句实现条件逻辑

在一家公司面试,遇到了要在SELECT语句实现条件逻辑的问题,当时回答得不是很好一直挂念着,所以把这个功能梳理下。题目简化表 字段 student id,name course id,name scores id,stud_name,cour_name,score 目标表 学生名,课程名,是否及格 使用学生表、课程表和分数表,检索结果显示学生名、课程名和是否及格。所以需要实现条件逻辑判断是否及格,有如下几种实现方式:1. CASEWHEN..

2021-08-06 21:32:41 525

原创 MySQL DELETE触发器

CREATE TRIGGER deleteorder BEFORE DELETE ON ordersFOR EACH ROWBEGIN INSERT INTO archive_orders(order_num, order_date, cust_id) VALUES(OLD.order_num, OLD.order_date, OLD.cust_id);END;在任意订单被删除前将执行此触发器。它使用一条INSERT语句将OLD中的值(要被删除的订单)保存到一个名为archive_ord...

2021-07-31 12:00:56 2381

原创 MySQL CURSOR重复执行一次

首先引用经典并向经典致敬~DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;这条语句定义了一个CONTINUE HANDLER,它是在条件出现时被执行的代码。这里,它指出当SQLSTATE '02000'出现时,SET done=1。SQLSTATE '02000'是一个未找到的条件,当REPEAT由于没有更多的行供循环而不能继续时,出现这个条件。--《MySQL必知必会》在”使用游标“这一章末尾给出了游标存储过程样例更进.

2021-07-30 22:28:27 930

原创 jinja2模板渲染

Jinja2常见的三种界定符:语句比如条件语句if,循环语句for{% ... %}表达式比如字符串、变量、函数调用等等{{ ... }}注释{# ...#}实战flask会在程序根目录下的templates文件夹里寻找模板文件,templates文件夹下创建watchlist.html<!DOCTYPE html><html lang="en"><head> <meta charset="UT.

2021-04-01 22:46:13 310

原创 flask异步任务

No application found. Either work inside a view function or push an application context. See http://flask-sqlalchemy.pocoo.org/contexts/.

2021-03-22 22:22:04 4252 5

原创 flask_sqlalchemy create_all()没有创建表

我是验证功能时遇到这个问题:在视图中调用了create_all方法,代码没有报错,但是表也没有创建视图模块from flask import Blueprint, current_appfrom test_flask.extensions import dbtest_bp = Blueprint("test", __name__)@test_bp.route('/create_all', methods=['GET', 'POST'])def create(): curren

2021-03-20 16:00:04 2463

原创 启动Flask

刚接触Flask,它的一大特色简直不要太吸引人——5行代码写一个服务from flask import Flaskapp = Flask(__name__)@app.route("/")def index(): return 'hello world!'if __name__ == '__main__': app.run()然而这么简单的启动方法居然被弃用了,还有王法吗?还有法律吗?正儿八经的启动下面是一个简陋的项目文件结构test_fla

2021-03-07 00:00:37 3051

原创 顺序表

优点存储密度大:节点本身所占存储量 / 节点结构所占存储量可以随机存储表中任一元素缺点在插入、删除某一元素时,需要移动大量元素浪费存储空间属于静态存储形式,数据元素的个数不能自由扩充...

2021-01-23 17:18:55 298

原创 C语言:联合、自定义类型typedef、枚举

联合与结构的异同联合与结构都是由多个成员分量组成的一个整体联合与结构在定义、说明和使用(成员引用、指针)上十分相似结构:多个成员分量分别占用不同的存储空间构成一个整体,成员分量之间是相互独立的,所进行的各种操作互不影响联合:多个成员分量共同占用同一存储空间,成员分量之间是相互联系的,所进行的操作相互影响联合的定义和结构相似,不过关键字为unionunion 联合类型名 { 数据类型 成员名1; 数据类型 成员名2; ... 数据类型 成员...

2021-01-17 13:13:22 251

原创 C语言:结构

结构的定义其中结构名可以省略struct 结构名{ 类型 成员1; 类型 成员2; ... 类型 成员n;}结构体类型定义只描述结构的组织形式,不分配内存结构体类型定义的作用域与变量的作用域类似,若将类型定义放在某个函数中,则只能在该函数内定义这种结构体类型的变量结构体变量的定义定义结构体相当于定义了二维表的表头,定义结构体变量相当于向表中添加了数据1. 先定义结构体类型,再定义结构体变量struct 结构体名 { ...

2021-01-16 22:16:20 1369 1

原创 C语言:指针

定义格式数据类型说明符 *变量名如 int *p1, *p2;指针变量赋值用表示地址的数据为指针赋值,如数组名,&变量名相同类型的指针可以相互赋值// 初始化时赋值int a=1, *b=&a;// 赋值语句int a=1,*b;b = &a; // 没有*号...

2021-01-15 22:08:31 559

原创 C语言:函数及变量的属性

定义格式必要因素:函数名、函数体可选因素:返回值类型、形参、返回值#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char *argv[]) { // 将整数分解为两个素数之和 int i,

2021-01-11 21:51:39 996

原创 C语言:数组

基本特点:当没有赋初值时,数组内数据都时随机数当赋了部分值时,其他值默认为0当通过下标取值超界时,获取的是随机数声明基本格式: 数据类型 变量名[长度表达式] 例如:int m[5]数组初始化 a[5] = {1,2,3,4,5} a[5]={1,2} 自动把值赋给前两位 a[] = {1,2,3,4,5, 6} 自动判断数组的长度数组的基本使用#include <stdio.h>main(){ int i,...

2021-01-09 17:03:58 166

原创 C语言:程序流程控制

选择结构if ... else ...//学生成绩单#include <stdio.h>main(){ float x; scanf("%f", &x); if (x >= 60){ printf("***********\n"); printf("%.1f, OK!\n", x); printf("***********\n"); } else { printf("***********\n"); printf("%.1f, NO!\

2021-01-06 22:02:27 339

原创 C语言:位运算

位运算表达数据按二进制位进行运算的操作,平时基本使用不到,但涉及到相关功能的时候,它又时最优的选择按位与运算&两个输入的相同位上都为真,则结果对应位上为真按位或运算|两个输入的相同位上只要有一个为真,则结果对应位上为真按位异或运算^两个输入的相同位上不同,则结果对应位上为真按位求反运算~单目运算符,结果的每一位和输入的每一位相反移位运算左移运算符<<将二进制数向左移n位,数据占内存大小不变的情况下,高位会丢失,低位补充0右移运算符>&

2020-12-31 21:31:03 121

原创 C语言:条件运算符

条件运算符格式(条件表达式) ? (结果1) : (结果2)即当条件表达式为真时,整个表达式结果为结果1,否则结果为结果2条件运算符是唯一的三目运算符,Java、php中也是这种格式,python中有些不一样:(结果1) if (条件) else (结果2)#include <stdio.h>int main(){ int age, money; printf("请输入你的年龄:"); scanf("%d", &age); money=(age > 1

2020-12-29 22:48:38 2586

空空如也

空空如也

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

TA关注的人

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