自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

PythonGo

Python and Golang

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

原创 Redis 缓存穿透、缓存雪崩和热点 Key 问题

缓存穿透介绍缓存系统,按照 KEY 去查询 VALUE,当 KEY 对应的 VALUE 一定不存在的时候并对 KEY 并发请求量很大的时候,就会对后端造成很大的压力。如查询一个必然不存在的数据。比如文章表,查询一个不存在的 id,每次都会访问 DB,如果有人恶意破坏,很可能直接对 DB 造成影响。由于缓存不命中,每次都要查询持久层,从而失去缓存的意义。解决方法1. 缓存层缓存空值。...

2019-03-28 12:25:55 468

原创 Redis 与 MongoDB

Redis优点支持多种数据结构:string list set hash zset hyperloglog支持持久化操作:RDB(默认)和 AOF(自选)支持 Replication 数据复制:通过 master-slave 机制可以实时进行数据的同步复制,支持多级复制和增量复制单线程请求,多有命令串行执行,并发情况下不考虑数据一致性的问题支持 pub/sub 消息订阅机制支持简单...

2019-03-28 10:43:15 540

原创 接口安全解决方案

简介服务端对外开放API接口,尤其对移动应用开放接口的时候,更需要关注接口安全性的问题,要确保应用 APP 与 API 之间的安全通信,防止数据被恶意篡改等攻击。下面就简单列举几种措施来对付接口安全问题。Token 机制开放接口时最基本需要考虑到接口不应该被别人随意访问,而我也不能随意访问到其他用户的数据,从而保证用户与用户之间的数据隔离。这个时候我们就有必要引入 Token 机制了。具体...

2019-03-21 08:36:53 3284 1

原创 正向代理和反向代理

正向代理百度百科正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。普通解释正向代理,也就是传说中的代理,他的工作原理就像一个跳板。简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理...

2019-03-20 17:13:01 393

原创 Python 之 gevent

简介Python 脚本执行的时候不是很快,特别是 Python 下面的多线程机制,长久以来一直被大家所诟病。通常来说要让 Python 执行效率变高一般使用的方法包括:将复杂的代码转由 C 等执行效率更高的语言完成 多进程并发执行 用多线程完成 IO 操作 使用 gevent 协程机制本篇博客将简单介绍一下协程。协程的基本原理gevent 的基本原理来自于 libevent...

2019-03-19 09:54:57 888

原创 Python基础之并发编程

在 Python 学习的过程中,并发编程有些概念我们可能在理解上有些模糊,这些概念却很重要。下面我讲逐一解释一下并发和并行,同步和异步,阻塞和非阻塞。并发&并行并发:在 OS 中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。简言之,是指系统具有处理多个任务的能力。并行:当系统有一个以...

2019-03-18 14:50:16 269

原创 数据库部分面试题(二)

数据库面试题点击这里关注GitHub,会一直更新哦,期待您的参与!什么情况下适合建立索引?为经常出现在关键字 order by、group by、distinct 后面的字段,建立索引。在 union 等集合操作的结果集字段上,建立索引,其建立索引的目的同上。为经常用作查询选择的字段,建立索引。在经常用作表连接的属性上,建立索引。数据库底层是用什么结构实现的?请大致画一下...

2018-11-24 18:41:47 1521

原创 数据库部分面试题(一)

数据库面试题点击这里关注GitHub,期待您的参与!MySQL 如何做分页?MySQL 数据库做分页用 limit 关键字,它后面跟两个参数 startIndex 和 pageSizeMySQL 引擎有哪些?各自的区别是什么?InnoDB 和 MyIsam 。区别:特性InnoDBMyIsam事物支持不支持外键支持不支持全文索...

2018-11-24 18:34:11 1530

原创 Python 基础部分面试题(一)

Python 面试题点击这里关注GitHub,期待您的参与!什么是 Python?使用 Python 有什么优缺点?Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言。好处:简单易学。代码开源,自由度高,高度可定制化。可移植性强。丰富的库,开发效率高。可扩展性和可嵌入性,被称作胶水语言。面向对象、模块、线程、异常处理和自动内存管理。代码简洁规范,可...

2018-11-24 18:28:52 1562

原创 Django 数据操作之字段与参数

Field数据操作字段与其参数字段所有字段类型:AutoField(Field)int 自增列,必须填入参数 primary_key=TrueBigAutoField(AutoField)bigint 自增列,必须填入参数 primary_key=True注:当model中如果没有自增列,则自动会创建一个列名为 id 的列from django.db impo...

2018-11-24 18:15:14 1838

原创 Django 中 request.user 调用用户名时出现 AnonymousUser(匿名对象)的错误

说明已经添加了额外的属性,现在想通过request.user的方式获取,打印request.user是一个AnonymousUser对象,无法获取 user 值!原因1. 没有登录账号或者无法登录成功。2. 登录成功但是在登录代码中没有注册 cookie,导致无法验证身份!3. 其它原因。解决方法1. 登录账号,你也可以试着使用 admin 账户登录后,看看能否解决。...

2018-10-25 20:30:48 36648 1

原创 Django框架之Hello World

Pycharm中Django项目创建1. 利用Pycharm直接打开,新建一个Django项目:File --> New Project --> Django...Django创建过程注意:项目名字不能和App名字重合。2. 创建结束后进入系统,你会看见最初始化的Django项目,该项目可以被打开。Django初始化页面很容易看出,我的项目名字叫做hello...

2018-10-11 17:10:54 12706

原创 Django框架之在Python脚本中调用Django环境

简介当我们写好Django项目后,需要在项目中利用Python脚本测试和调用数据时,我们可以使用一以下方法。在Django项目下建立一个文件目录作为脚本代码环境,在其中创建py文件复制以下代码进去:import osif __name__ == '__main__': # 加载Django环境,books_management_system是我的Django项目名称 ...

2018-10-11 16:16:18 15653

原创 Django框架之入门介绍

Python下有许多款不同的Web框架。Django(发音:[`dʒæŋɡəʊ]) 是重量级选手中最有代表性的一位,许多成功的网站和APP都基于Django。作为Python最重要的框架之一,Django是用Python开发的一个免费开源的Web框架,我们可以使用它来快速搭建高性能的网站。Django上手比较简单,相信您一定能快速学会!MVC模式和MTV模式MVC模式MVC,全...

2018-10-09 17:52:31 13036

原创 Python基础之控制台输出颜色

简介在python开发的过程中,经常会遇到需要打印各种信息。海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性。这时候,如果能给重要的信息加上字体颜色,那么就会更加方便用户阅读了。当然了,控制台的展示效果有限,并不能像前段一样炫酷,只能做一些简单的设置。不过站在可读性的角度来看,已经好很多了。基本属性控制台显示方式 显示方式 显示效果 0 默...

2018-09-19 12:17:37 40147 6

原创 MySQL问题——Can't connect to MySQL server on XXX

问题出现原因:之前安装过MySQL,重复安装可能出现服务项中路径不匹配导致缺少文件而无法链接。解决方法:方式1先检查问题我的环境变量中path,看看文件路径是否放在里面再试试;方法2方法一不能解决情况下,删除文件呢位置中的data(请慎重考虑),重新初始化安装配置文件:输入cmd,打开命令窗口; 初始化——输入mysqld --initialize-insecure;...

2018-09-17 20:02:32 9783 1

原创 JavaScript基础之语法

介绍JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。JavaScript特点JavaScript 是一门脚本语言。 JavaScript 是一种轻量级的编程语言。 JavaScript 是可插入 HTML 页面的编程代码。 JavaScript 插入 HTML 页面后,可由所有...

2018-09-06 20:41:24 20551 5

原创 Python基础之turtle模块

简介Python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是Python的内部库。画布(canvas)画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。设置画布大小turtle.screensize(canvwidth=None, canvheight=None, bg=None)参数:...

2018-09-03 15:44:32 31932 1

原创 Python基础之程序暂停

当我们执行某些程序时,由于机器速度很快导致肉眼无法直接看到执行结果时程序便停止运行。这时候我们迫切需要在程序中暂停,专业术语叫做阻塞。下面列举几种常用的程序暂停方法:input()用法:直接在欲等待处输入input()即可。特点:优点:不需要借助模块,执行到此处阻塞等待人工输入。 缺点:程序结束时候需要强制结束或者在控制台输入值。time.sleep()用法:导入time模...

2018-09-03 12:34:57 94614 5

原创 Python基础之生产者与消费者模型

简介在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。为什么要使用生产者和消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生...

2018-08-29 14:42:32 9627

原创 Python基础之IO多路复用

IO模型介绍一般情况而言,常用的五种IO Model为(参考:Richard Stevens--“UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking ):IO模型 中文名称 blocking IO 阻塞IO nonblocking IO 非阻塞IO IO multi...

2018-08-29 12:22:02 9685

原创 Python基础之单例类

单例类Python中的有且只能有一个实例化对象的一种类。实现方法很多,这里列举两个:实例1:__new__方法class SingleClass(object): def __new__(cls): if not hasattr(cls, "instance"): cls.instance = super(SingleClass, c...

2018-08-29 09:01:58 9149

原创 Python基础之协程(Coroutine)

引言之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。随着我们对于效率的追求不断提高,基于单线程来实现并发又成为一个新的课题,即只用一个主线程(很明显可利用的cpu只有一...

2018-08-28 21:01:45 11516

原创 Python基础之线程(Thread)

进程之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。这是这样的设计,大大提高了CPU的利用率。进程的出现让...

2018-08-28 16:45:49 11811

原创 Python基础之进程(Process)

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is...

2018-08-27 19:31:06 61169 8

原创 Python基础之操作系统

操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。单道程序系统手工操作——穿孔卡片1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。穿孔卡带早期计算机程序员将对应于程序和数据...

2018-08-22 16:44:09 11502

原创 Python网络编程之黏包

概念在TCP中,发送方把若干数据发送,接收方收到数据时候黏在一包,从接受缓冲区来看,后一包的数据黏在前一包的尾部的一种现象。出现原因发送端:TCP默认使用Nagle算法,主要做两件事:上一包分组得到确认,发送下一组; 收集多个小组,合包组成一个分组,在确认信息来一起发送。接收端:收到分组暂放缓存区,程序主动接受缓存里面调出的分组; 当接收分组的速度大于应用读取分组时,...

2018-08-21 19:44:04 9518

原创 Python网络编程之基本架构与socket模块

两种架构我们了解的涉及到两个程序之间通讯的应用大致可以分为两种:第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用。第二种是web类:比如百度、知乎、谷歌等使用浏览器访问就可以直接使用的应用。这些应用的本质其实都是两个程序之间的通讯,而这两个分类又对应了两个软件开发的架构。C/S架构Client/Server,客户端和服务器结构。这种架构也是从用户层面(也...

2018-08-15 14:40:18 9865 1

原创 Python网络编程之初识

引言Internet和internetInternet:(因特网)是一个专用名词,指当前全球最大的、开放的、由众多网络相互连接而成的特定的计算机网络。internet:(互联网或互连网)是一个通用名词,泛指由多个计算机网络互联而成的虚拟网络。本页博客主要会介绍一些计算机网络的基本定义,网络的体系结构等,旨在学习计算机网络的基本概念,为接下来的网络编程打下良好的基础。之前在大三大...

2018-08-14 20:17:51 10515

原创 Python 基础之序列化模块

序列化概念将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。如:将 Python 代码转为文本,方便移植,转化文本这个过程为序列化。目的以某种存储形式使自定义对象持久化; 转移对象,方便携带移植; 使程序更具有维护性。json使用 json 函数要先导入 json 函数库:import jsondump和dumps  序列化方法。dump:必须...

2018-08-13 22:00:42 9258

原创 Python高级开发之多线程(Multithreaded)初识

简介在多线程(multithreaded,MT)编程出现之前,计算机程序的执行是由单个步骤序列组 成的,该序列在主机的 CPU 中按照同步顺序执行。要是让这些独立的任务同时运行,会怎么样呢?很明显,这种并行处理方式可以显著地提高整个任务的性能。这就是多线程编程。多线程特点:异步、多并发和不确定性。多线程程序在读取 I/O 终端通道时不能阻塞,因为用户输入的到达时间是不确定的,并且阻塞会...

2018-08-13 17:48:12 9679

原创 Python基础之hashlib模块和configparse模块

hashlib模块Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。摘要算法摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。摘要算法意义摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。 摘要算法之所以能...

2018-08-09 16:15:49 12856

原创 Python基础之random模块

1. 随机小数random() :随机生成一个介于0.0到1.0之间的任意浮点数,属于左闭右开区间。没有参数,返回值为一个浮点数。uniform(a, b):生成参数a到b之间的浮点数的函数,如果a > b,则生成b到a之间的浮点数,属于左闭右开区间,返回值为一个浮点数。import randomprint(random.random())print(random.uni...

2018-08-09 08:31:43 10225

原创 Python基础之时间模块

和时间有关系的我们就要用到时间模块。在使用模块之前,应该首先导入这个模块。import time常用方法时间模块常用方法 方法/属性 描述 time.altzone 返回与utc时间的时间差,以秒为单位(西区该值为正,东区该值为负)。其表示的是本地DST 时区的偏移量,只有daylight非0时才使用。 time.clock() 返回当前进程所消耗的处理...

2018-08-08 18:38:05 9135

原创 Python基础之正则表达式

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。正则表达式模式字符串使用特殊的语法来表示一个正则表达式:字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。 多数字母和数字前加一个反斜杠时会拥有不同的含义。 标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。 反斜杠本身需要使用反斜杠转义。 由于正则表达式通常都包含反...

2018-08-07 17:51:51 13121

原创 Python基础之collections模块

在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。namedtuple生成可以使用名字来访问元素内容的tuple。from collections import namedtuplePoint = namedtu...

2018-08-07 09:42:08 9000

原创 Python基础之os模块

os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,所以离不了os模块。python编程时,经常和文件、目录打交道,这是就离不了os模块。1. 获取操作系统类型import osprint(os.name)结果:ntProcess finished wi...

2018-08-03 19:16:03 9654

原创 Python基础之sys模块

sys模块是与python解释器交互的一个接口,是Python自带的模块。当执行import sys后,在sys.path变量中所列目录中查找sys模块文件,然后运行这个模块的主块中的语句进行初始化,然后就可以使用模块了。我们可以通过dir()函数来查看每个模块中可用的方法:import sysprint(dir(sys))结果:['__breakpointhook__', '...

2018-08-03 16:26:25 9489

原创 Python基础之模块(Module)和包(Package)

模块(Module)能够逻辑的组织代码块,以.py文件结尾的包含Python对象定义和Python语句的Python文件。模块的类别:使用Python代码写的代码文件(.py) 使用C/C++编写的.dll(动态链接库)文件 包装好的一组模块包 使用C编写并链接到Python解释器的内置模块为何使用模块?如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量...

2018-08-03 15:09:02 9095

原创 Java面向对象编程(Object Oriented Programming,OOP)之接口(Interface)

引言接口(Interface)在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口的声明:interface Demo{ //变量 //方法}接口很像类,与类具有下列相似点:一个接口可以有多个方法。 接口文件保存在 .java 结尾的文件中,文件名使用接口名...

2018-08-03 11:36:53 9114

空空如也

空空如也

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

TA关注的人

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