深入学习链表实现原理 文章目录链表链表实现节点类属性及构造方法getSize()方法isEmpty()方法traverse()方法add(Object data)方法addLast(Object data)方法insertNode(int index, Object data)方法deleteNode(Integer index)方法findNode(Integer index)方法updateNode(Integer index, Object data)完整代码链表链表是一种线性结构,结构如下下图所示链表的每个节点分
数据结构之栈基本实现 文章目录栈栈的实现定义节点类属性及构造方法getSize()方法isEmpty()方法traverse()方法push(Object data)方法pop()方法peek()方法clear()方法全部代码Java中的栈栈栈是一种特殊的线性表,栈中的数据元素以及数据元素间的逻辑关系和线性表相同,两者之间的差别在于:线性表的插入和删除操作可以在表的任意位置进行,而栈的插入和删除操作只允许在表的尾部进行,因此效率都是很高的,插入和删除都是在栈顶进行的,最后插入的最先被删除,所以栈的工作模式是先进后出(LIF
深入探索ArrayList源码解析 ArrayList集合是平时开发最常用的集合之一,它是一种线性结构,其底层是用数组实现的,相当于一个动态数组。下面来一起看看ArrayList的一些常用方法是如何实现的。文章目录ArrayList继承关系继承实现的接口和类继承关系图源码解析ArrayList属性构造方法trimToSize()方法size()方法isEmpty()方法indexOf(Object o)方法ArrayList继承关系继承实现的接口和类ArrayList继承于AbstractList,实现了List、Random.
Flask实现个人博客系统(附源码) 前面写了一些Flask相关的文章,这里使用Flask写了一个个人博客系统总结一下前面所学。项目全部代码也上传GitHub,地址:GitHub地址,如果对你有帮助,不妨动动你的小手指,帮忙star一下。文章目录项目描述项目目录数据库设计功能实现页面基本模板实现登录与注册功能修改密码写博客查看博客列表博客详情页面评论我的博客修改博客删除博客我的评论删除评论关于页面注销定义错误页面项目描述开发环境:PyCharm、python3.7、MySQL5.5使用技术:服务端是使用Flask开发的,前端是使用.
Flask 使用Flask-SQLAlchemy操作数据库 安装Flask-SQLAlchemy是一个Flask扩展,所以使用之前也需要使用pip命令进行安装pip install flask-sqlalchemy相关配置在使用Flask-SQLAlchemy操作数据库之前需要先连接数据库。相关配置如下:from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)# 连接数据库# mysql://账号:密码@链接地址:端口/数据库名app.config['SQLALCHEMY_DAT
Flask 文件上传与下载 文件上传与下载在平时开发中很常见,所以也是很重要的一部分。下面来一起看看flask中的文件上传与下载。相关配置# 设置文件上传保存路径app.config['UPLOAD_FOLDER'] = 'static/upload/'# MAX_CONTENT_LENGTH设置上传文件的大小,单位字节app.config['MAX_CONTENT_LENGTH'] = 1 * 1024 * 1024上传文件定义一个视图函数,用于返回上传页面和保存上传文件。@app.route('/upload.
Flask 发送电子邮件 开通QQ邮箱的POP3/SMPT协议打开qq邮箱点击设置,之后点击账户,往下翻,如图。找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击开启,开启后会出现一个授权码,发送邮件时会用到。安装发送电子邮件需要安装flask-mail,可以使用pip命令来下载安装。pip install flask-mail相关配置app.config["MAIL_SERVER"] = "smtp.qq.com"app.config["MAIL_PORT"] = 46
Flask 使用Werkzeug实现密码加密 有时候我们写项目,密码就是明码存放在数据库中,现在大多数用户在不同的网站中使用的都是相同的密码,如果攻击者入侵服务器获取了数据库,这样是很危险的。所以一般在开发中,我们会对密码进行加密之后在保存。Werkzeug中的security模块能过很方便的地实现密码散列值的计算(对密码进行加密)。generate_password_hash(password, method=pdkdf2:sha1, salt_length=8) 函数将原始密码password作为输入,以字符串形式输出密码的散列值,输出的值可
Flask 蓝图 Blueprint 基本使用 随着需求的增加,代码量也会随着增加,这时就需要对程序进行模块化处理。把视图函数分分类,存放到不同的文件中。Blueprint 就是一个存储视图函数的容器,视图函数存储到Blueprint中,Blueprint 被注册到一个应用之后就可以被调用这些视图函数,Flask 可以通过Blueprint来组织URL以及处理请求。创建一个python文件并在该文件中创建一个蓝图ad = Blueprint("ad", __name__)在该文件中使用当前蓝图创建两个视图函数。@ad.route("/adL.
Flask 重定向、session、Flash消息基本使用 重定向、session、Flash消息都比较简单(内容也比较少),所以这里就放在一起写了。重定向flask通过redirect()函数,来实现响应重定向,redirect()函数的参数是重定向的URL。定义一个视图函数,重定向到‘ /aaa ’地址地址。@app.route('/index')def index(): return redirect('/aaa')@app.route('/aaa')def aaa(): return "响应重定向后的视图函数"在浏览器.
Flask使用Flask-WTF表单 Flask-WTFFlask-WTF是Flask框架的表单验证模块,Flask-WTF将表单数据解析、CSRF保护、文件上传等功能与Flask集成。安装Flask-WTF及其依赖可使用pip安装pip install flask-wtf安装成功如下:跨站请求伪造保护默认请求下,Flask-WTF能保护所有表单免受跨站请求伪造(CSRF)的攻击。为了实现CSRF保护,Flask-WTF需要程序设置一个密钥。Flask-WTF使用这个密钥生成加密令牌,再用令牌验证请求中表单数据的真伪。设置密钥
Flask Jinja2模板引擎 简介Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能,这对大多应用的安全性来说是非常重要的(来源百度百科)。Jinja2基本使用Flask是一款开发Web服务端的框架,所以肯定是离不开页面的。上一章,我们使用路由返回数据时,返回内容中包含的有少量的HTML代码,...
python Flask快速入门 Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。使用也很简单,可以快速实现一个Web服务。
时间复杂度(图文并茂) 图文并茂,通俗易懂,时间复杂度的意义究竟什么是时间复杂度呢?让我们来想象一个场景:某一天,小灰和大黄同时加入了一个公司......一天过后,小灰和大黄各自交付了代码,两端代码实现的功能都差不多。大黄的代码运行一次要花100毫秒,内存占用5MB。小灰的代码运行一次要花100秒,内存占用500MB。于是......由此可见,衡量代码的好坏包括两个非常重...
C语言文件操作 C语言中的文件操作都是通过调用标准函数来完成的。由于结构指针的参数传递效率更高,因此C语言文件操作统一以文件指针方式实现。定义文件类型指针的格式为:**FILE \*fp;**其中FILE是文件类型定义符,fp是文件类型的指针变量。文件指针是特殊指针,指向的是文件类型结构。每个文件都有自己的FILE结构和文件缓冲区,FILE结构中有一个curp成员,通过fp->curp可以指示文件缓冲区中数据存取的位置。
C语言结构的基本使用 结构类型是一种允许把一些数据分量聚合成一个整体的数据类型。一个结构中包含的每个数据分量都有名字(类似于Java类),这些数据分量称为结构成员或者结构分量,结构成员可以是C语言中的任意变量类型,开发时可以使用结构类型来创造适合于问题的数据集合。像数组和指针一样,结构也是一种构造数据类型,他与数组的区别在于:数组中所有元素的数据类型必须是相同的,而结构中各成员的数据类型可以不同。
指针数组与函数指针 写在前面:学习的第一门语言是Java,之前对C也了解一点,也只是了解一点,在加上长时间没有接触了,基本就只会一个Hello World了。现在由于准备升本考试,不得不从头开始学C。这里从零开始,记录C语言学习点滴。欢迎正在学习C语言的小伙伴一起学习,未来可期,一起加油!上一篇写了指针的定义及基本使用,这章我们来看一下数组指针的使用。指针、数组和地址间的关系在定义数组时,编译器必须分配基地址和足够的存储空间,以存储数组的所有元素。数组的基地址是在内存中存储数组的起始位置,它是数组中第一个元素(下标为.