面试
qq_41134008
我是一个菜鸟..............
展开
-
GitHub-git 简单使用
一、使用Github1、目的:借助GitHub托管项目代码2、基本概念仓库(Reposltory):代表你的项目,想在GitHub上开源一个项目,就必须新建一个Reposltory.收藏(Star):收藏项目复制克隆项目(Fork):二、Git安装和使用1、目的通过Git管理GitHub托管项目代码2、安装Git官网下载:https://www.git-scm.com/dow...原创 2019-12-27 19:08:48 · 148 阅读 · 0 评论 -
mysql 中间件学习
1、为什么用数据库中间件2、数据库中间件:3、mycat功能一、单主单从读写分离二、双主双从读写分离mycat功能读写分离数据分片垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表)多数据源整合3、mycat原理:5、mycat安装方式一解压后即可使用方式二解压后编译安装1、serve...原创 2019-12-27 19:08:01 · 122 阅读 · 0 评论 -
Ngnix 学习
一、Ngnix简介:1、基本概念:Nginx是一个高性能的HTTP和反向代理服务器,占有内存少,并发能力强。nginx 能做什么反向代理客户端请求到达反向代理服务器,反向代理服务器将请求转发给目标服务器,代理的是服务器负载均衡通过代理服务器将请求分发到多个服务器,将负载分发到不同的服务器上,就是负载均衡动静分离加快网站解析速度,将动态页面和静态页面由不同的...原创 2019-12-24 22:17:57 · 153 阅读 · 0 评论 -
4-7 python 二叉树的实现,及其前中后序的实现。
1.先(根)序遍历的递归算法定义:若二叉树非空,则依次执行如下操作:⑴ 访问根结点;⑵ 遍历左子树;⑶ 遍历右子树。2.中(根)序遍历的递归算法定义:若二叉树非空,则依次执行如下操作:⑴遍历左子树;⑵访问根结点;⑶遍历右子树。3.后(根)序遍历得递归算法定义:若二叉树非空,则依次执行如下操作:⑴遍历左子树;⑵遍历右子树;⑶访问根结点。----------------...原创 2019-12-19 19:20:08 · 201 阅读 · 2 评论 -
4-6 python希尔排序
思想:希尔排序是插入排序的升级版# def shell_srot(alist): n = len(alist) step = n // 4 i = 1 while step >= 1: for j in range(step,n): while j > 0: if alist[j] > alist[j-step]: alist[j],al...原创 2019-12-19 17:11:09 · 86 阅读 · 0 评论 -
4-5 python归并排序实现
思想:第一步:将整个列表拆分成左右两部分:第二步:继续将左区间拆分,直到剩一个元素。第三步:将左右区间元素比较大小排序后进行合并。# def merge_sort(alist): n = len(alist) if n <= 1: return alist mid = n // 2 # 拆分列表 left_li = merge_sort(alist[:mid])...原创 2019-12-19 14:55:38 · 112 阅读 · 0 评论 -
4-4 python 快速排序实现
思想:第一步 : 假设 列表第一个元素为 列表的中间元素,头指针(head)指向第一个元素,尾指针(last)指向末尾元素。第二步:last指针指向的元素与中间元素进行比较————while条件:last指针指向元素大于等于中间值,last指针向前移动一位。直到不满足条件,然后交换值(alist[head] = alist[last])————while条件:head指针指向元素小于中间值...原创 2019-12-19 10:09:17 · 126 阅读 · 0 评论 -
#### 3-7 mysql常见的锁,搜索引擎不同锁的问题
mysql的锁机制比较简单,最显著的特点就是不同的存储引擎支持不同的锁机制,根据不同的存储引擎,mysql的锁特性可以大致归纳如下: 行锁 表锁 页锁 搜索引擎 MyISAM 否 是 否 InnoDB 是 是 否 --------------------------------------------------...原创 2019-12-18 15:00:45 · 149 阅读 · 0 评论 -
3-6 乐观锁和悲观锁
乐观锁和悲观锁都是表级锁一、乐观锁:概念:每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。实现:使用:乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。二、悲观锁:(共享锁 排它锁)概念:每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候...原创 2019-12-18 11:47:11 · 103 阅读 · 0 评论 -
1-9 使用python来操作redis
1、redis连接redis连接实例是线程安全的,可以直接将redis连接实例设置为一个全局变量,直接使用。安装:pip install redisimport redisr = redis.Redis(host='licalhost',port=6379,decode_responses=True)r.set('student','jiexi')print(r.get('stude...原创 2019-12-17 09:43:37 · 79 阅读 · 0 评论 -
1-8 redis通用指令
一、key通用指令1、key基本操作2、key扩展操作3、key的其它操作二、数据库通用指令1、基本操作原创 2019-12-17 09:35:22 · 101 阅读 · 0 评论 -
1-7 redis存储类型介绍
数据存储类型一、string1、基础命令set — get — delmset — mget strlen keyappend key value2、数据库分表,解决主键重复问题:3、热门商品不能一直处于热门期,每种商品热门期维持3天,3天后自动取消热门。4、设置粉丝,关注量,点击量二、hash1、基础命令hset ------- hget/hgetall --...原创 2019-12-16 20:09:16 · 139 阅读 · 0 评论 -
1-5 redis集群
《一》、redis主从复制互联网“三高”架构(高并发 高性能 高可用)一、主从复制简介二、主从复制工作流程三、主从复制常见问题《二》、哨兵模式哨兵:是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。《三》、集群...原创 2019-12-16 15:57:54 · 119 阅读 · 0 评论 -
1-6 redis企业级解决方案
一、缓存预热缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统,避免在用户请求的时候,先查询数据库,用户直接查询事先被预热的缓存数据。二、缓存雪崩缓存雪崩:缓存中大量的key同一时间过期,从而大量访问数据库。三、缓存击穿缓存击穿:Redis中某个key过期,该key访问量巨大。四、缓存穿透缓存穿透:查询的key在缓存和数据库中都不存在。五、性能指标监控...原创 2019-12-16 15:23:25 · 175 阅读 · 0 评论 -
1-4 redis高级数据类型
一、Bitmaps(应用与信息状态统计)1、基本操作2、业务场景3、扩展操作二、HyperLogLog(应用于基数信息统计)1、基本操作三、GEO(应用于地理位置计算)1、基本操作...原创 2019-12-16 12:55:25 · 344 阅读 · 0 评论 -
1-3 redis 删除策略
一、过期数据说明:过期数据是指曾经设置了过期时间的数据到达了有效期,最终留下来的数据。1、过期的数据真的删除了吗?二、数据删除策略1、定时删除:2、惰性删除:3、定期删除:4、三者比较三、逐出算法1、当新数据进入redis时,内存不足怎么办?...原创 2019-12-16 11:51:10 · 136 阅读 · 0 评论 -
1-2 redis 事务
一、redis事务简介1、redis事务:一个队列中,一次性,顺序性,排他性的执行一系列命令。二、事务基本操作1、开启事务:multi2、执行事务:exec3、取消事务:discard4、事务的注意事项:A:定义事务的过程中,命令格式输入错误怎么办?语法错误:整体事务命令都不执行B:定义事务的过程中,命令执行出现错误怎么办?运行错误:正确运行的命令执行,运行错误的命令不会被执行...原创 2019-12-16 11:15:34 · 83 阅读 · 0 评论 -
1-1 redis 持久化?
一、持久化简介意外断电,自动备份。1、概念:利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。2、为什么进行持久化:防止数据的意外丢失,确保数据安全性。3、持久化过程保存什么:答:方式一:保存当前数据,方式二:保存数据的操作过程4、快照保存数据(RDB):每隔小时间段,在计算机上进行一次数据的自动保存。存储数据结果,存储格式简单,关注点在数据...原创 2019-12-16 10:40:36 · 108 阅读 · 0 评论 -
2-7 如何解决高并发?
一、python 如何解决高并发?1、cdn加速:把静态资源放到别人服务器上2、后台数据库使用mysql + redis:mysql是持久化存储,存放在磁盘里面,检索的话,会涉及到一定的IO,为了解决这个瓶颈,于是出现了缓存,比如现在常用的 redis。首先,用户访问缓存,如果未命中,就去访问mysql,之后将mysql中的数据复制到缓存中。redis是缓存,并且是驻留在内存中运行的,这大...原创 2019-12-12 14:29:53 · 118 阅读 · 0 评论 -
2-6 wsgi uwsgi uWSGI nginx的区别和关系
1、wsgi:WSGI只是一个协议,一个约定。2、uwsgi:是实现了WSGI协议的一个web服务器。3、Nginx:访问量过大,客户端请求连接就要进行长时间的等待。这个时候就出来了分布式服务器,我们可以多来几台web服务器,都能处理请求。4、正向代理:正向代理代理的是客户端,和客户端一体。为客户端服务。5、反向代理:反向代理代理的是服务端。和服务端一体,为服务端工作。6、nginx...原创 2019-12-12 09:27:56 · 116 阅读 · 0 评论 -
2-5 mysql中间件
一、mysql中间件:--------- atlas功能:1.读写分离,2.从库负载均衡,3.IP过滤,4.自动分表,5.DBA可平滑上下线DB,6.自动摘除宕机的DBAtlas启动后会创建多个线程,其中一个为主线程,其余为工作线程。主线程负责监听所有的客户端连接请求,工作线程只监听主线程的命令请求。主线程接收到客户端的连接请求,将该请求的相关信息封装为一个名为CON的结构,再把该结构推入...原创 2019-12-12 09:05:16 · 118 阅读 · 0 评论 -
2-4 集群 分布式 负载均衡的区别?
一、集群1、概念:计算机集群通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。2、集群分类:1>高可用性集群:一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。2>负载均衡集群:负载均衡集群运行时,一般通过一个或者多个前端负载均衡器,将工作负载分发到后端的一组服务器上,从而达到整个系统的高性能和高可用性。3>高性能计...原创 2019-12-12 08:45:28 · 191 阅读 · 0 评论 -
3-5 mysql的可串行化
1、mysql的可串行化首先:可串行化(serializable)这是事务的最高级别,在每条读的数据上,加上锁,使之不可能相互冲突,因此,会导致大量的超时现象。解释如下:以A,B用户为例:首先将B账号的隔离级别设置为serializable,当B账号开启一个事务,查询各个账户的余额,没有提交事务。此时A账户,也开启一个事务,在事务中执行插入操作,这时A账户的执行操作是不能立即执行的,当B...原创 2019-12-11 17:54:33 · 1331 阅读 · 0 评论 -
redis 的三大功能?与celery的联合使用?
一、redis的三大功能1、数据缓存:2、数据存储:3、消息队列:二、redis结合Celery的使用:1、安装:pip install -U “celery[redis]”2、原创 2019-12-11 16:54:08 · 274 阅读 · 0 评论 -
2-3 RabbitMQ 和 celery的区别?
一、celery:1、首先:celery是一个任务分发系统2、目的:利用后端待命的无数worker实现一系列任务的快速处理。3、业务模式:生产者消费者模型4、可以选择Broker:二、RabbitMQ:1、首先:RabbitMQ是一个消息队列的实现2、作用:可以实现任务分发,也可以拿它实现消息推送...原创 2019-12-11 16:36:08 · 1129 阅读 · 0 评论 -
3-4 串行化和并行化,序列化和反序列化?
一、基本概念:序列化:把对象转为字节序列的过程称为对象的序列化。反序列化:把字节序列恢复为对象的过程称为对象的反序列化。串行化:也叫序列化,就是把存在于内存的对象数据转化成可以保存成硬盘文件的形式去存储。并行化:也叫反序列化,就是把序列化后的硬盘文件加载到内存,重新变成对象数据,二、python 中的序列化和反序列化:《一》、python中的序列化和反序列化借助pickle模块。2、...原创 2019-12-10 15:00:25 · 293 阅读 · 0 评论 -
3-4 数据库三范式?
三范式的作用:建立冗余较小、结构合理的数据库。注意:特殊情况特殊对待,数据库的设计最主要的是看需求和性能,总的来说,需求>性能>表结构。第一范式(列的约束):列不可再分,确保列的原子性。数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。第二范式(行的约束):属性完全依赖于主键:第二范式是在第一范式的基础上建立起来的,要求数据库表中的每个实例或行...原创 2019-12-10 09:04:50 · 157 阅读 · 0 评论 -
2-2 反爬虫的方法
反爬虫策略:1、节流封ip:2、封user-agent:3、封cookies:4、验证码:5、限制每日的访问量:原创 2019-12-09 15:56:54 · 129 阅读 · 0 评论 -
2-1 中间件的概念?
AOP:编程1、概念:中间件是一个钩子框架,在django中,在发起请求和响应数据的过程中,针对业务处理过程中的切面进行提取,用于在全局修改django的输入输出。2、点:django中,有四个切入点:1)、在浏览器到路由分发之前切入:process_request(self,request)2)、路由分发到调用视图函数之前切入:process_view(self,request,v...原创 2019-12-09 15:50:03 · 206 阅读 · 0 评论 -
3-3 mysql 脏读,幻读,重复读
一、基本概念:1、脏读:事务a修改了某条数据,然后事务b读取了事务a修改的该条数据,然后事务a由于某些原因,事务a回滚了,这样事务b读到的数据就和回滚的数据不同了,这时事务b读取的数据就是脏数据。一个事务读取了另一个事务未提交的数据。2、幻读:事务a按一定条件读取了该表的一些数据,然后事务b向该表插入了一些满足事务a查询条件的数据,当事务a再次以相同条件查询数据时,会发现多出来一些数据,就好像...原创 2019-12-09 14:59:48 · 87 阅读 · 0 评论 -
5-1 缓存穿透和缓存雪崩是什么,如何解决?
一、缓存穿透:1、概念:是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象放进缓存。如果数据库查询对象为空,则不放进缓存。2、方案一:对于数据库中不存在的数据,也对其在缓存中设置默认值一般过期时间会比较短。3、方案二:可以设置一些过滤规则,如布隆过滤器(用于判断数据是否包含在集合中...原创 2019-12-09 11:53:52 · 92 阅读 · 0 评论 -
1-3 python中read readline readlines 的区别
这三个方法都用来读取文件数据。只不过读取的数据量不同。1、read:读取整个文件,如果不指定的话。2、readline:读取下一行。3、readlines:读取整个文件保存到一个列表中以供遍历。三者都可以接受一个参数,从而调节读取的数量。4、扩展:linecache模块:可以输出某个文件的第n行...原创 2019-12-08 17:20:24 · 176 阅读 · 0 评论 -
4-3 插入排序探讨
手动写出插入排序1、代码演练:def insert_sort(alist): n = len(alist) for i in range(1,n): while i > 0: if alist[i]<alist[i-1]: alist[i],alist[i-1] = alist[i-1],alist[i] i -= 1 else: bre...原创 2019-12-08 13:03:19 · 76 阅读 · 0 评论 -
4-2 选择排序探讨
手动写出选择排序1、代码演练:def select_sort(alist): n = len(alist) for i in range(0,n-1): min_index = i for j in range(i+1,n): if alist[min_index] > alist[j]: min_index = j alist[i],alist[min_i...原创 2019-12-08 11:54:20 · 142 阅读 · 0 评论 -
4-1 冒泡排序探讨
用python首写实现冒泡排序:1、代码实现:def bubble_sort(alist): n = len(alist) for i in range(0,n-1): for j in range(0,n-1-i): if alist[j] > alist[j+1]: alist[j],alist[j+1] = alist[j+1],alist[j]if __n...原创 2019-12-07 17:20:04 · 87 阅读 · 0 评论 -
1-2:python中 a+=1和a = a+1的区别
一、a+= 1探讨:1、首先 += :python 底层掉用 iadd()方法2、对于不可变对象:进行+=操作后,在栈中重新创建了新的对象。>a = 1>id(a) ------ 140715092042384>a += 1>id(a) ------ 1407150920424163、对于可变对象:不会在栈中重新创建新的对象。> a = [1,2]...原创 2019-12-05 17:15:19 · 5707 阅读 · 0 评论 -
1-1 python ==和 is 的区别
一、is 的作用:is比较的是多个变量在栈中,变量保存的内容,即堆中地址是否相同。# 对于不是小整数池的数据而言a == 1000b == 1000a is b ------- Falsea == b -------- True# 对于小整数池的数据而言,有区别。在小整数池中探讨。# 小整数池[-5,256]a = 5b = 5a == b ------ Truea is...原创 2019-12-05 16:44:38 · 211 阅读 · 0 评论 -
假如你面试了..........然后你就看看
第一章:python基础数据类型:1 字典:1.1 现有字典 dict={‘a’:22,‘g’:55,‘i’:42,‘k’:34}请按字典中的 value 值进行排序?1. sorted(dict.items(),key = lambda x:x[1])2.你还可以尝试 value%2 的大小排序......... sorted(dict.items(),key = lambda x:...原创 2019-08-06 10:36:14 · 97 阅读 · 0 评论