- 博客(15)
- 收藏
- 关注
原创 Mysql 15k面试
基础知识:数据库的三范式:一范式:列的原子性。二范式:满足一范式,非主键列必须依赖主键列的存在。三范式:满足二范式,非主键列必须直接依赖不能间接依赖。mysql常见的引擎:Mysql 默认引擎是InnoDB,支持事务,插入数据的效率低MEMORY:将数据存储在内存中,提高了访问速度,但是并非永久保存MyISAM:不支持事务,存储速度快MEMORY,MyISAM 存储引擎采用的是表级锁InnoDB 存储引擎即支持行级锁,也支持表级锁MyISAM 更适合查询多的情况 Inn.
2022-03-12 14:49:54 1263 1
原创 你真的懂什么是hash吗?
什么是hash?Hash也称散列、哈希,对应的英文都是Hash。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出。这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值。散列表(哈希表):散列表(Hashtable,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。散列函数(哈希函数).
2022-03-02 16:05:43 1061
原创 python 序列化 json 和 pickle
什么是序列化?为什么要有序列化和反序列化这样的操作?序列化:把对象属性信息转化为可储存传输的的字节序列过程称之为序列化反序列化:把字节序列还原成对象的过程称之为反序列化序列化的好处:1.便于存储。序列化过程将文本信息转变为二进制数据流。这样就信息就容易存储在硬盘之中,当需要读取文件的时候,从硬盘中读取数据,然后再将其反序列化便可以得到原始的数据。在Python程序运行中得到了一些字符串、列表、字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据。python模
2022-02-28 17:57:44 240
原创 python装饰器中@wraps 和@retry
@wrapsPython装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用。写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring。
2022-02-28 16:07:21 691
原创 Kafka教学(二),架构及重要概念
目录kafka 中涉及到的概念BrokerTopicPartitionRepicationLeaderFollowerProducerConsumerConsumer Groupoffset 偏移量Zookeeperkafka对数据的把控策略kafka扩谱结构kafka 中涉及到的概念L:Leader p:partitionr:replication F:Follow...
2021-09-25 17:13:56 165
原创 kafka教学(一),异步通信原理
目录kafka简介概述:点对点的消息传递模式发布订阅模式使用消息中间件的优势kafka简介概述:Kafka是最初由Linkedin 开发公司开发的一个分布式,分区的,多副本的,多订阅者的,基于zookeeper协调的分布式日志系统(也可以当作MQ系统)。Kafka主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。 支持K.
2021-09-25 10:44:02 986
原创 并发编程(五),flask使用多进程,以及异步I/O的使用
falsk使用多进程from concurrent.futures import ProcessPoolExecutorimport flask, time, jsonapp = flask.Flask(__name__)def is_prime(): for i in range(0, 100): i *= i@app.route('/', methods=['POST'])def func(): start = time.time()
2021-09-20 20:23:55 3397
原创 并发编程(四),python 线程池web实战以及多进程
web服务使用线程池加速web服务的特点:Web服务对响应时间要求较高 Web服务中有大量的依赖I/O操作的调用,比如:数据库读取,文件写入,远程API Web服务通常能被几百万人访问,同时请求,不能无限制创建线程,要用到线程池使用 ThreadPoolExecutor的好处:方便将磁盘文件,数据库,远程API的I/O调用并发执行 线程池的数目不会无限创建(导致系统挂掉),具有防御功能。flask 线程池加速# coding = utf-8import time, flask
2021-09-20 18:18:08 256
原创 并发编程(三),线程安全,Lock锁以及线程池的使用
目录线程安全问题1.什么是线程安全问题?2.Lock锁线程池 ThreadPoolExecutor线程池原理使用线程池的好处ThreadPoolExecutor 的使用语法使用线程池改造爬虫程序线程安全问题1.什么是线程安全问题?线程安全是指,函数或者某个函数库在多线程的模式被调用时,能够正确处理多个线程之间共享变量,使得程序可以正常运行。线程调用时线程之间会随时发生切换会发生不可预料的结果,出现线程不安全。2.Lock锁为什么要出现lock锁银.
2021-09-20 11:05:54 1923
原创 并发编程(二),python 多线程爬虫
单线程爬取数据与多线程对比import requests, timeimport threadingurls = [ f"https://q.cnblogs.com/list/unsolved?page={page}" for page in range(1, 50 + 1)]def crawling(url): data = requests.get(url) print(url, len(data.text))# 单线程def single_
2021-09-19 21:15:51 282
原创 并发编程(一),并发编程中涉及的基本概念
并发编程中涉及的概念:同步:同步的概念并非字面意思所讲,是指同步协调相互配合的意思,同步就是:在一个功能发出调用,没有得到返回将会一直等待,直到处理完毕返回结果,才会执行下一个调用。例如:去麦当劳吃肯德基,点餐过后,一直在前台等候,等待后厨做好,然后离开。异步:与同步相反的便是异步,异步就是当一个功能发出调用,无需等待任何返回,可直接执行下个调用,当上一个调用有返回结果后,通知去取结果即可。例如:你在麦当劳点餐后,回到餐位开始做别的事情,当餐做好后通知你去取餐。并发:并发更多的是强调的是一起出发
2021-09-19 18:00:58 214
原创 python 性能慢的头号通缉犯:全局解释器锁GIL
目录 python 速度慢的两大原因 GIL锁是什么 为什么会有GIL锁这个东西 怎样规避GIL锁带来的限制
2021-09-19 12:11:32 198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人