- 博客(46)
- 收藏
- 关注
原创 python后端面试题目总结
此文作为面试题目记录,其中会有一些自己遇到过的和在网上看到的比较具有代表性的面试题,其中如果在前面文章中已经写过的就会比较简略,持续更新,没有顺序。1、python中的浅拷贝与深拷贝,变量及其引用(python基础)参https://blog.csdn.net/weixin_44806420/article/details/96456447python中的赋值变量全部都是引用。2、数据库的...
2019-08-31 18:20:11
663
原创 flask基础(1)
flask本身是一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。比如可以用Flask-extension加入ORM、窗体验证工具,文件上传、身份验证等。Flask没有默认使用的数据库,可以选择MySQL,也可以用NoSQL。其WSGI工具箱采用Werkzeug(路由模块),模板引擎则使用Jinja2(flask的...
2019-08-14 22:53:50
376
原创 MySQL数据库基础(2)--一些高级功能与设计原则
一、MySQL的一些高级功能视图:是一条SELECT语句执行后返回的结果集,即一张虚拟的表,不存储具体的数据,引用了若干张基础表。视图的操作:①创建create view viewname as (select...),会创建一个虚拟的表;②查询语句与普通SQL相同,删除使用drop view viewname;③一般只用来查询,在特殊情况下可以修改表内容(单表视图,不包含聚合函数和嵌...
2019-08-09 14:34:33
370
原创 MySQL数据库基础(1)--基础知识与简单操作
一、数据库基础知识数据库Database,是一种特殊的电子型存储文件,以特殊的方式将数据存储起来,其可以做到①持久化存储②读写速度极高③保证数据的有效性④支持各种程序/操作系统,与普通文件存储相比,其速度快、效率高,且同时可以保存数据关系等内容和对数据进行批量操作,尤其是在极大量数据处理时拥有无可比拟的优势,应用面极广。关系型数据库与非关系型数据库主流的关系型数据库有Oracle, MySQ...
2019-08-08 19:02:38
421
原创 web基础知识(3)--HTTP协议与web框架与其他
一、HTTP协议HTTP(Hyper Text Transfer Protocol 超文本传输协议)协议是基于TCP/IP协议的用于传递数据的协议,其默认端口为80/TCP,简单来说就是客户端与服务器收发收据时遵循的格式,客户端的请求头部文件和服务器的响应头部文件都遵循一定的格式,其总体就是一个大字符串。HTTP协议是建立在TCP协议的基础上的,要进行HTTP的请求与响应则必须先建立TCP连...
2019-08-07 21:11:16
329
原创 web基础知识(2)--socket、TCP与UDP
首先要区分TCP与TCP/IP协议族,TCP是一个工作在传输层的用于传递数据的协议,而TCP/IP协议族是一组以TCP和IP协议为核心的协议族(见前文),不能混为一谈。一、socketsocket套接字,直译为排插,其是进程间通信的一种方式,网络上的两个进程通过一个双向的通信连接实现数据交换,这个连接的一端就称为一个socket,每个socket都被绑定到一个特定的IP地址和端口,其本质是编...
2019-08-05 22:17:47
500
原创 web基础知识(1)--名词解释与IP协议相关
TCP:Transmission Control Protocol 传输控制协议UDP:User Datagram Protocol 用户数据报协议TCP/IP:一般是TCP/IP协议族的简称前后端分离:即将前端(浏览器)代码与后端(服务器)代码分开编辑,利于协作开发,前端主要规范数据表现格式,后端主要接收与处理数据。HTTP:Hyper Text Transfer Protocol 超文...
2019-08-04 23:46:51
938
原创 python详解(9)--python中的多任务(协程与迭代器和生成器)
一、python中的迭代器与生成器可迭代对象 Iterable将可以通过迭代工具(如for,list(),tuple()等)迭代的对象称为可迭代对象Iterable,可以通过collections.abc中的Iterable类,使用isinstance(a, Iterable)来判断a是否为可迭代对象,所有的iterable都是Iterable类的继承类的实例,所有的可迭代对象都支持__ite...
2019-08-04 10:53:08
819
原创 python详解(10)--GIL与高并发与其他
GIL(Global Interpreter Lock):全局解释器锁GIL的由来GIL并非python语言的问题,而是C语言写的python解释器的问题,为了解决多线程之间的状态和全局变量问题(互斥锁会有死锁的可能性),在整个进程中添加的全局锁,使得python的多线程在Cpython中没有并行的可能性,同一时间执行的线程只能有一个,因此完全无法发挥多核CPU的能力。GIL的工作原理和缺陷...
2019-08-02 13:28:22
344
原创 python详解(8)--python中的多任务(进程与线程)
多任务:指的是一台电脑可以同时运行多个应用程序(一个应用程序可能有多个进程),是一种共享CPU的方法。协同式多任务(cooperative multitasking):进程在执行过程中不受限制的占用cpu,不存在时间片概念,系统对cpu使用权的收回要靠进程主动上交。抢先式多任务(preemptive multitasking):当一个新的进程开始时,在它的时间片(timeslice)之内,cp...
2019-07-31 01:34:53
690
原创 python详解(7)--异常处理与文件操作
一、python中的异常处理try…except…else…finally语句:是最基础的异常处理语句,其中①try:后为要测试的函数体;②except的作用为捕捉固定类别的异常,如except ValueError as e,即表示捕捉ValueError异常(其他类型异常不捕捉),并且将异常的具体信息保存在变量e中(注意e非str,且as e可省略),并运行except语句后的自定义输入...
2019-07-25 21:14:24
1204
原创 python详解(6)--模块
python中,一个.py文件就称为一个模块,一般把实现某一特定功能的代码防止在一个文件中,可以方便其他程序的使用,此外使用模块也可以避免函数名和变量名的冲突。(注意模块的扩展名必须是.py,模块名不能与python自带的标准模块名重复,否则容易产生错误)一、python中导入模块导入模块:①import module as a,其中module为模块名,a为自定义名,可以同时导入多个模块(但...
2019-07-24 23:15:31
564
原创 python详解(5)-面向对象与类
类方法与静态方法,类属性与实例属性,property,魔法属性与魔法方法,继承、super、MRO与C3算法,type、元类、单例模式与ORM,基类与类型。
2019-07-23 21:54:17
237
原创 python详解(4)--函数
python中的函数可以不依赖于类存在,只需要简单的def定义符即可定义函数。创建函数:def function(a, b, c): '''函数注释,文档字符串''' [functionbody]其中a,b,c是要传入函数的参数,建议对函数的参数和函数的返回值进行注释。形式参数与实际参数:①在函数创建时括号内的参数即为形式参数,调用函数时需要引用的参数为实际参数;②在函数内部,如果...
2019-07-21 17:56:45
646
1
原创 python详解(3)--常用的数据结构(字符串)
python中的字符串是一个不可变对象,其是字符的线性排列,采用一体式顺序表(参后续数据结构与算法)的形式来实现,在底层应该看成一个序列/一种组合对象而不是单个对象,其很多操作都不是常量时间的,是线性时间操作。一、字符串的基本操作字符串是python中最常见的对象(是的,字符串也是对象,python中的任何东西都是对象),是不可变对象(重复),即在python中,字符串一旦创建就不可再更改,新...
2019-07-20 15:31:33
518
原创 python详解(2)--常用的数据结构(列表、元组、字典、集合)
最简单的python程序:print('Hello World!')即可将指定的字符串输出。接下来首先了解python的常用数据类型(python中内置了很多已经实现的高级数据类型,但大都位于部分模块中,其会在之后python模块中详细叙述)。一、列表(list)python中的列表部分类似于其他编程语言的数组,其是可变对象,长度不固定,列表内的元素类型可不相同,列表内元素有顺序(显...
2019-07-18 23:24:02
823
原创 python详解(1)--准备工作与一些基础理论
此系列文记录了本人在学习python时的顺序以及了解的所有相关内容,因此可能偶尔出现好像与系列主题关系不大的部分,理论深度也没有按照由低到高进行排列,但都有内部联系,因为是作个人知识归档整理用,所以可能根据个人习惯内容比较晦涩,如有问题,请向我提出,谢谢!一、计算机编程语言的特性编程语言:是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员...
2019-07-18 01:17:21
234
原创 前端基础(3)--Javascript了解
Javascript简介是一种轻量级的脚本语言,动态弱类型,可插入HTML页面的编程代码,支持所有的现代浏览器,所有的JS代码都在<script></script>标签中执行,语句尾加分号。对于一种新的编程语言,可基本按照数据类型、基本运算、流程控制、函数等此顺序进行了解,js由于多是用于嵌入html文档,因此需要重点了解其与html文档的交互,一些方法如下表所示。...
2019-07-17 20:20:09
213
原创 前端基础(2)--CSS了解
CSS简介CSS:Cascading Style Sheets 层叠样式表,CSS一般写于外部文件,使用link引入,内联样式也属于CSS的范畴,但无法复用,且会使标签臃肿,相对使用较少。CSS选择器的规范①选择器 {属性: 值; 声明1; 声明2},每个选择器都可以有多个声明(以分号隔开,一般换行书写),对于由多个单词组成的值需要加双引号(一般在字体中出现);②选择器可以分组,如h1,h...
2019-07-10 23:50:04
191
原创 前端基础(1)--HTML了解
HTML简介前端工程师参照产品的效果图来开发页面(也可叫界面),效果图是由UI设计师用Photoshop/firework来设计的,为了方便与UI设计师对接工作、辅助页面开发,需掌握一定的PS。把效果图布局成页面,需要用到HTML语言和CSS语言,页面功能的开发需要用到javascript,为了快速开发和系统开发,还需要学习一些前端的javascript库和框架。HTML:Hyper Tex...
2019-07-08 14:42:51
243
原创 flask网站项目(5)--订单支付、总结与优化
1、订单支付订单支付与上个项目(Django电商网站)的支付类似,同样调用支付宝的接口,简单流程:用户点击’去支付’按钮跳转发送请求(携带订单ID),后端接收请求并校验参数后调用支付宝接口返回支付链接,由前端控制跳转或新打开一个页面显示用户与支付宝的交互页面(在移动端上还可以唤醒支付宝客户端),用户支付完成后进行支付结果处理:①使用return_url(return_url是支付宝返回的让用户...
2019-06-30 12:06:36
1867
原创 flask网站项目(4)--订单模块
订单模块提供了订单生成、订单查询、接单与拒单、订单评论四个功能,下面按照页面来划分订单模块的功能。1、订单预定页面该页面从房屋详情页面跳转,输入参数后点击发送请求,在后端进行条件判断后由前端直接跳转至我的订单页面,流程比较简单。请求生成订单,起的作用即传递参数,注意事项有:①登录状态验证,必须登录后才可以下订单;②虽然前端中已经在房屋详情页(房东不提供订单预定接口)进行过处理,但在后端仍...
2019-06-29 20:24:17
1833
转载 一些常见的后端工具框架简介(3)--docker,celery
docker容器与虚拟机与实体机的区别:①容器:一句话概括容器,容器就是将软件打包成标准化单元,以用于开发、交付和部署,容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。②虚拟机:通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。③实体机:即硬件意义上的个体,拥有独立的硬件和软件系统。举例来说,实体...
2019-06-29 18:04:32
760
原创 flask网站项目(3)--房屋模块
房屋模块包含两部分,房屋的发布与房屋的显示,其中房屋的发布位于个人房源发布页面,房屋的显示在首页、列表页、详情页、个人房源页都有涉及,根据其需求信息的不同。1、缓存与城区信息城区是房屋的一个大分类,在多个页面都有需求(主页、列表页、详情页、房源发布页),且变化可能性很小,在前述的数据库设计中将其单独提出一个表结构,根据其需求高、变化小的特性,可以将对于城区的请求设计为缓存。在flask中,有...
2019-06-28 21:25:42
399
转载 一些常见的后端工具框架简介(2)--Message Queue,RabbitMQ
MQ(Message Queue)消息队列是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列互交。消息会保存在队列中,直到接收者取回它。 ——维基百科消息队列的简单架构:如图所示...
2019-06-26 21:06:54
405
原创 flask网站项目(1)--项目立项与结构设计
项目工作流程一、项目立项该项目制作一个前后端分离的租房网站,前端以jQuery和art-template模板引擎为基础实现功能,后端以flask框架为基础,前后端之间使用json格式传递数据。二、简单的需求分析1、用户模块①用户注册,通过图片验证码和短信验证码双重验证;②用户登录及登录信息校验;③用户个人信息(含头像)的显示及修改,实名认证;④用户个人中心的显示,提供订单、房源的跳...
2019-06-26 13:57:49
1393
2
转载 一些常见的后端工具框架简介(1)--Hadoop,Memcached,Gunicorn
Hadoop是一个由Apache基金会所开发的开源分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。是一个能够对大量数据进行分布式处理的软件框架(即大数据处理框架,包括搜集、存储、调度、查询、计算、输出等各个方面),以一种可靠、高效、可伸缩的方式进行数据处理。(如图所示为大数据处理系统的生态圈,其中大部分为Hadoop的组件/子项目...
2019-06-25 21:00:28
460
原创 flask基础(3)
flask中,在默认情况下,一个.py文件与Django中的project是同级的(或一个Flask对象),即这一个Flask对象中包含了视图(可以有多个)、路由、配置、启动等多个操作,且不同py文件之间的配置是独立的。flask中的蓝图在不使用蓝图的情况下对模块进行分类的方法:①将主函数中的app导入到其他分模块中,分模块中定义各自的路由和视图函数,但主模块启动时并不知晓分模块的存在,因此...
2019-06-24 10:54:03
491
原创 flask基础(2)
flask中使用了jinja2模板引擎,其与Django的模板引擎类似,可以理解为一套使用自定义变量填充html字符串的标记语言,最终生成一个页面并返回。Jinja2模板引擎①渲染模板方法:flask提供了一个名为render_template(传递模板)的函数,如果指定一个模板名和所需的参数,调用这个函数会返回一个html串(把指定值写入一个html模板中变量,并返回一个HTML大字符串),...
2019-06-23 20:05:02
199
原创 Django电商网站项目(7)-部署与总结
将前述4个模块完成后项目的全部功能就完成了,在本地已经可以实现网站的基本功能(从用户注册到订单评论),但开启服务器时使用的是Django自带的测试用服务器,因此仍需要将其部署到真正的可用于工程的服务器上,即uWSGI,具体的部署架构与网站访问流程如下:该项目完全基于Django框架实现,属于前后端不分离的开发方式,在其基础上采用了一些专用于优化网站性能的方法或工具(即Django本身提供了服务...
2019-06-17 16:51:53
642
原创 Django电商网站项目(6)--订单模块
设计的订单相关的表如下所示:由于每一个订单中的商品种类与数量都不定,因此单独将订单商品提出为一个表,为一对多的关系。订单的提交从购物车页面提交是通过form形式提交的,在checkbox元素中定义参数value并设为对应的商品id,则传递到后端的为一个由选中商品id组成的列表,在后端中的业务流程为:①获取参数并校验,表单中的checkbox只有被选中时其value才会被提交,若不选中则不...
2019-06-16 20:01:31
3274
原创 Django电商网站项目(5)--购物车模块
购物车没有对应的模型类,其操作的是存储于redis中的购物车记录,前文中已经叙述过购物车在redis如何存储。商品详情页面在页面中操作购物车记录,如果要通过后端重定向或重新渲染模板则会极大的浪费服务器资源,因此在前端中使用ajax post请求来完成,只修改局部的需要变动的元素,不对整个页面进行重新请求,在商品详情页面,与购物车相关的可能变动的内容有:增加/减少/手动输入商品数量此类操作不...
2019-06-11 19:10:06
1403
原创 Django电商网站项目(4)--商品模块
前文中已设计了与商品模块有关的表如下:首页活动表用于展示一些活动图片(并附带活动链接);首页轮播表用于展示一些轮播图片(具体轮播的效果在前端使用CSS完成);首页展示表用于展示首页按分类排列后的一部分具体商品,展示方式意为以图片展示或以文字展示;商品图片表用于存储商品图片,由于一种SKU商品可能有多张图片,因此将其专门提出制作一个表;商品种类表用于存储商品的种类,即类似于水果/蔬菜/肉...
2019-06-09 20:28:22
3769
3
原创 Django电商网站项目(2)--准备工作
准备工作在前文中分析了用户数据表结构(如下),本文描述一些准备工作相关事项。父模板页的抽象Django中支持模板的继承与重写,在实际项目中,重复的页面结构很多,因此将父模板抽象,并在父模板中设置一些block用于重写,其大致原则如下:注:①一般将页面上的js代码放置在最下方,防止js加载错误;②Django模板支持多重继承,即支持父1→父2→子1→子2此种继承结构,因此可以将部分类似...
2019-06-05 11:31:49
911
原创 Django电商网站项目(1)--项目立项与结构设计
电商的7种商业模式电商即电子商务(Electronic Commerce),是是以信息网络技术为手段,以商品交换为中心的商务活动,其有多种模式:①B2B(Business to Business):电子交易的双方都是商家,使用网络技术完成商务交易,如阿里巴巴、慧聪网等。②B2C(Business to Consumer):直接面向消费者销售产品和服务商业零售模式,一般以网络零售业为主,主要借...
2019-06-05 10:33:55
2040
原创 redis数据库基础
常见关系型数据库与非关系型数据库的对比关系型数据库与非关系型数据库的对照常见的关系型数据库不同存储类型的非关系型数据库主流的非关系型数据库主流非关系型数据库的对比redis数据库redis数据库的特性①Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。②Redis不仅仅支持简单的key-value类型的数据,同时还提供l...
2019-06-04 10:22:21
702
原创 FastDFS基础
FastDFS分布式文件存储系统(1)背景:①早期的网站,将静态文件(图片等)直接存放在项目文件夹内,优点(简单方便快捷),缺点(耦合度高,静态文件访问占用资源多);②后来将静态文件分离存储在一个单独的文件服务器上,优点(解耦,降低网站服务器压力,便于扩容、备份、负载均衡等),缺点(垂直扩展性、容灾差,单机性能瓶颈);③分布式文件存储系统,分为三部分,文件存储系统(保存文件)、文件容灾系统(...
2019-06-03 10:29:36
234
原创 一些常见的web server与协议简介
常见的web服务器Apache/Tomcat/Nginx:都是一种WEB服务器,通过HTTP协议提供各种网络服务。Apache:Apache HTTP服务器是一个模块化的web服务器,可以运行在几乎所有广泛使用的计算机平台上,Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。Tomcat:Tomcat是Jav...
2019-06-03 10:17:42
1927
原创 git基础(2)--操作方法及GitHub
git操作基础版本的创建与回退①第一次使用git时可能需要指定默认的身份标识,指定用户名和邮箱,git config [--global](本地省略) user.email/name 'xxx'②创建版本时会生成版本序列号,唯一标识某个版本;③HEAD是一个指针,会指向最新的版本(即当前所在的版本);④git的工作区/暂存区/版本库的关系如图所示,.git目录即版本库(其中包括了暂存...
2019-06-03 09:54:43
141
原创 git基础(1)--相关概念
分布式系统简介(1)一些概念:①集群:在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务(如数据库的主从,读写分离);②伪分布式:将多台主机的任务放到一台主机上执行,本是部署于多个主机上的模块位于同一主机上时无法并行执行,只能并发执行,处理速度上有差异;③分布式:一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统,具...
2019-06-03 09:42:25
138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人