加载中...
青墨书晚风

排序算法基本内容算法分类比较分类 非线性时间比较类排序:通过比较来决定元素间的相对次序, 由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序, 它可以突破基于比
我是文章在轮播图中的摘要
听一听看一看,魔法的世界是什么样的呢
本站基本介绍,页面选项功能
本站基本介绍,主要配置项
环境配置系统:Ubuntu系统编辑器:PycharmPython版本:python3.6(自带celery4.3.0)第三方包依赖: django3.0.8 本文简介这篇文章主要介绍了celery4+django3定时任务的实现, 用于定时
#Django–自定义 Command 命令Django 对于命令的添加有一套规范,你可以为每个app 指定命令。 通俗一点讲,比如在使用manage.py文件执行命令的时候,可以自定制自己的命令,来实现命令的扩充。 ##commands的
Django博客网站搭建--39.点赞功能
假设你的博客已经顺利部署到了线上。你写了很多好文章,和粉丝们互动并感受成就感。 现在你想更进一步,努力提高文章质量,使其更受读者欢迎,打造圈内一流博客。问题是该如何判断一篇文章是“受欢迎的”?靠浏览量是个方法,但是并不能区分出内容花拳绣腿的标题党。靠评论数也是个好方法,但个人博客通常读者不多,好文章零评论是很正常的。 这时候**“点赞”**功能就显得重要了。如果大部分读者都给了一个赞,那就表明文章确实还不错。 动手之前的思考点赞功能可不简单,实现途径非常的多。别急着动手,耐心思考:我们的博客到底…
2020-06-18
Django博客网站搭建--41.期末总结
本教程共写作了一年多(龟速更新..),也算告一段落了。如果还有读者特别想看、但是教程又没涉及的内容,博主会继续更新,不过时间就不能保证了。业余精力有限,如果不能保证文章的质量,那我情愿不写。 如果你是本教程的忠实读者,看到这里就已经学会了以下内容: 博文管理 用户管理 多级评论 文章栏目和标签 图片处理 第三方登录 点赞 测试与维护 部署 其他零星功能 不错,基本功能都有了。 接下来学什么响应式布局响应式布局,简单来说就是页面布局随着终端设备的变化而自动适应。 教程为了起步平缓,没有展开这方面的…
2020-06-18
Django博客网站搭建--42.小功能集合贴
有些功能独立的小功能,单独一篇文章不够分量,于是在这里集中解释了。 和读者常见问题帖一样,本篇是持续更新的,想到一个写一个。 文章快捷导航快捷导航指的是这个功能: 点击对应按钮,页面立即跳转到另一篇文章中,省去了用户返回首页重新寻找文章的繁琐。 视图实现本功能的关键就是要查找出发表时间与当前文章相邻的文章。为了演示简单,就粗略以id作为发表时间的排序。 在之前的搜索文章的教程中,我们已经体验过contains这种查找方法了,现在需要用到另外两种:gt和lt。 编写视图: article/view…
2020-06-18
Django博客网站搭建--11.删除文章
既然有了写文章的功能,那当然也必须要有删除文章的功能了。 不安全的方式有了之前的学习做铺垫,删除文章实现起来就比较简单了。 首先增加一个视图函数: article/views.py ... # 删文章 def article_delete(request, id): # 根据 id 获取需要删除的文章 article = ArticlePost.objects.get(id=id) # 调用.delete()方法删除文章 article.delete() # 完成删除后返回文章列表 return…
2020-06-18
Django博客网站搭建--45.html学习1
#HTTML学习1 lang=”en”这是一个W3C的标准;lang代表语言,en是英语;改成zh-cn指简体中文xml:lang就是xml的语言##meta标签###charset代表编码格式,一般有utf-8,gbk-2312等###viewport一般用于移动端布局 content属性值详解: width:可视区域的宽度,值可为数字或关键词device-width height:同width initial-scale:页面首次被显示是可视区域的缩放级别,取值1.0则页面按实际尺…
2020-06-18
Django博客网站搭建--13.用户的登录和退出
用户管理用户数据可以说是大部分网站最重要的资产。用户管理就是对用户数据进行增删改查等操作的功能,自然也就非常的重要了。 本章开始学习用户管理的内容,首先从用户登录开始。 在Django中用app来区别不同功能的模块,达到代码隔离和复用。因为用户管理和博客文章的功能不同,因此需要新建一个专门的app。 进入虚拟环境,运行startapp指令创建新的app: python manage.py startapp userprofile 查看项目目录,发现已经新生成了userprofile目录及其中的文…
2020-06-18
Java面向对象设计之桥接模式
模式动机设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案: 第一种设计方案是为每一种形状都提供一套各种颜色的版本。 第二种设计方案是根据实际需要对形状和颜色进行组合 对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更少,且系统扩展更为方便。设计方案二即是桥接模式的应用。桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编写量。 模式定义 桥接…
2018-12-19
Java面向对象设计之适配器模式
模式动机 在软件开发中采用类似于电源适配器的设计和编码技巧被称为适配器模式。 通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时,现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。 在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用现有类所提供的功能,适配器模式可以完成这样的转化。 在适配器模式中可以定义一个包装类,包装不兼…
2018-12-12
软件程序设计原则
一、前言软件也像人一样,具有生命力,从出生到死亡,会经历多种变化。软件架构设计也不是一蹴而就的,是不断地演进发展。每个程序员都可以从理解编程原则和模式中受益。 软件设计原则是一组帮助我们避开不良设计的指导方针。根据Robert Martin的理论,应该避免不良设计的以下三个重要特点: 僵化:很难做改动,因为每一个细微的改动都会影响到系统大量的其他功能 脆弱:每当你做一次改动,总会引起系统中预期之外的部分出现故障 死板:代码很难在其他应用中重用,因其不能从当前应用中单独抽离出来 下面这些软件设计原…
2018-11-24
GitLab CI/CD 介绍和使用
一、持续集成介绍 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。—— Martin Fowler 1 概念 持续集成(Continuous Integration):**频繁地(一天多次)将代码集成到主干。**让产品可以快速迭代,同时还能保持高质量。它的核…
2018-11-22
Vue 文档风格的 Typora 主题
typora-vue-theme 是 Typora Markdown 文档编辑器中一款类似Vue文档风格的主题。 简介Typora是一款支持实时预览的 Markdown 编辑器和阅读器,支持Windows、macOS、Linux三大平台。Typora 作为一款合格的 Markdown 编辑器,支持图片、列表、表格、代码、公式、目录等功能,同时这款软件还支持(一键)动态预览功能,让一切都变得如此干净、纯粹。并且有多种主题模板。typora-vue-theme就是参考了Vue文档风格而开发的一个 T…
2018-11-19
CPU多级缓存
一、什么是CPU缓存1. CPU缓存的来历众所周知,CPU是计算机的大脑,它负责执行程序的指令,而内存负责存数据, 包括程序自身的数据。在很多年前,CPU的频率与内存总线的频率在同一层面上。内存的访问速度仅比寄存器慢一些。但是,这一局面在上世纪90年代被打破了。CPU的频率大大提升,但内存总线的频率与内存芯片的性能却没有得到成比例的提升。并不是因为造不出更快的内存,只是因为太贵了。内存如果要达到目前CPU那样的速度,那么它的造价恐怕要贵上好几个数量级。所以,CPU的运算速度要比内存读写速度快很多…
2018-11-18
Java面向对象设计之责任链模式
模式动机很多情况下,在一个软件系统中可以处理某个请求的对象不止一个。例如审批工作流等,他们可以构成一条处理采购单的链式结构,采购单(可以看作是要处理的信息)沿着这条链进行传递,这条链就称为责任链。责任链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。链上的每一个对象都是请求处理者,责任链模式可以将请求的处理者组织成一条链,并让请求沿着链传递,由链上的处理者对请求进行相应的处理。在此过程中,客户端实际上无须关心请求的处理细节以及请求的传递,只需将请求发…
2018-11-04
JavaScript之再学习
概览JavaScript 是一种面向对象的动态语言,它包含类型、运算符、标准内置( built-in)对象和方法。它的语法来源于 Java 和 C,所以这两种语言的许多语法特性同样适用于 JavaScript。需要注意的一个主要区别是 JavaScript 不支持类,类这一概念在 JavaScript 通过对象原型(object prototype)得到延续。另一个主要区别是 JavaScript 中的函数也是对象,JavaScript 允许函数在包含可执行代码的同时,能像其他对象一样被传递。 …
2018-10-30
Java面向对象设计之单例模式
模式动机对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。 如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。 一个更好的解决办法是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例被创建,并且它可以提供一个访问该实例的方法。这就是单例模式的模式动机。 模式定义 单…
2018-10-29
面向对象编程的理解
面向过程和面向对象面向过程思想概述面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。 面向对象思想概述当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了,这时就开始思索,能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。面向对象是基于面向过程的编程思想。 面向对…
2018-10-21
Java面向对象设计之建造者模式
一、模式动机无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发动机等各种部件。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者模式对其进行设计与描述,建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。 在软件开发中,也存在大量类似汽车一样的复杂对象,它们拥有一系列成员属性,这些…
2018-10-20
Java面向对象设计之外观模式
一、模式定义 外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。 二、模式结构1. 角色组成外观模式包含如下角色: Facade: 外观角色 SubSystem: 子系统角色 2. 结构图三、示例代码首先,是各个子系统角色类,分别如下: /** * 子系统类A. * * Created by blin…
2018-10-18
Java面向对象设计之中介者模式
一、模式动机在用户与用户直接聊天的设计方案中,用户对象之间存在很强的关联性,将导致系统出现如下问题: 系统结构复杂:对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象关联的其他所有对象,并进行适当处理。 对象可重用性差:由于一个对象和其他对象具有很强的关联,若没有其他对象的支持,一个对象很难被另一个系统或模块重用,这些对象表现出来更像一个不可分割的整体,职责较为混乱。 系统扩展性低:增加一个新的对象需要在原有相关对象上增加引用,增加新的引用关系也需要调整原有对象,系统耦合…
2018-10-17
Java面向对象设计之命令模式
一、模式动机在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。 命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。这就是命令模式的模式动机。 二、模式定义 命令模式(Command Pattern):将一…
2018-10-16
代码整洁之道内容概要
读了代码整洁之道,觉得这本书写的很好,所以就将里面自己觉得很经典的内容记录下来,作为自己以后写代码的标准和准则。同时也为那些曾经困惑过的人一点参考吧! 一、在正式开始之前,我们先思考几个几个问题:1.需求与代码哪个重要?答:并不是所有的产品都能提出合理的需求,当你面对一个提出不合理需求的产品的时候,你需要坚持自己的原则,不能妥协。 2.易读和易懂是一回事吗?答:易读的代码和易懂的代码是有区别的,不是易读的代码就是易懂的代码。 3.什么是测试驱动代码?答:测试驱动代码,你写的代码要可以执行单元测试…
2018-10-15
Java面向对象设计之观察者模式
一、模式动机建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展,这就是观察者模式的模式动机。 二、模式定义 观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订…
2018-10-14
常用Bash命令整理之其他常用命令
1. hostname - 查看主机名hostname命令用于查看系统的主机名,或是修改系统的主机名。 hostname的常用命令如下: # 显示系统的当前主机名 hostname # 修改你系统的主机名 hostname blinkfox-system # 使用 -F 选项,从指定的文件中读取主机名 hostname -F /root/hostname.txt 2. uptime - 查看系统运行时间uptime命令用于打印系统的运行时间等信息。使用如下: uptime 3. w、who - …
2018-10-13
常用Bash命令整理之文本处理
1. sort - 文本排序sort命令用于将文本文件的行排序。默认情况下,sort命令是按照字符串的字母顺序排序。 sort 的常用命令如下: # 将文本内容按字母顺序排序 sort example.txt # 使用 -u 选项,移除所有重复行后排序 sort -u example.txt # 使用 -n 选项,将令数字按数值的大小排序 sort -n example.txt # 使用 -r 选项,以倒序方式排序 sort -n -r example.txt # 同时将 file1、file2…
2018-10-11
常用Bash命令整理之操作文件和目录
1. touch - 创建文件touch命令就可用于创建、变更和修改文件的时间戳。它是 Linux 操作系统的标准程序。touch命令又如下选项: -a: 只改变访问时间 -c: 不创建任何文件 -m: 只改变修改时间 -r: 使用指定文件的时间替代当前时间 -t: 使用 [[CC]YY]MMDDhhmm[.ss] 替代当前时间 touch 命令的常见用法如下: # 创建一个名为 effyl 的新空文件 touch effyl # 同时创建名称分别为 effyl myeffyl lueffyl …
2018-10-10
常用Bash命令整理之查看文件和目录
1. ls - 列出文件名和目录ls命令是Linux中最常用的命令之一,其作用就是列出文件名和目录。在命令行提示符下,直接输入ls命令,不带任何选项,将列出当前目录下所有文件和目录,但不会显示详细的信息,比如,文件类型、大小、修改日期和时间、权限等。 以下便是ls命令及其选项的作用说明: # 仅列出当前目录下所有文件和目录 ls # 每行显示一条记录,每条记录包括文件类型、大小、修改日期和时间、权限等 ls -l # 将文件大小显示符合人类阅读习惯的格式 ls -lh # 将使用不同的特殊字符归…
2018-10-09
轻量级滚动动画JavaScript库aos.js
一、简介aos.js是一款效果超赞的页面滚动的 JavaScript 动画库插件。该动画库可以在页面滚动时提供28种不同的元素动画效果,以及多种easing效果。在页面往回滚动时,元素会恢复到原来的状态。 注:从2.0.0版本之后,只支持使用data-aos属性,不再支持使用aos属性。 二、安装1. Bower 安装你可以使用 Bower 包管理工具安装aos: bower install aos --save 2. npm你也能在 npm 上找到 aos: npm install aos -…
2018-10-08
全功能JavaScript灯箱画廊插件lightgallery.js
一、简介 lightgallery.js 是一个全功能、轻量级、无依赖的灯箱画廊显示库。 二、主要特性 全响应式兼容 模块化的架构和内置插件 移动设备和触摸支持 桌面设备拖拽支持 双击查看图像的实际大小 动画缩略图 社交媒体分享 YouTube,Vimeo,DailyMotion,VK和 HTML5 视频支持 20+ 硬件加速CSS3过渡 全屏支持 支持缩放 浏览器历史记录 响应式图像 HTML iframe 支持 支持iFrame框架 单页多实例 可能过CSS(SCSS)定制样式 智能图像预加…
2018-10-06
Google Java编程风格指南
1 前言这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则,我们才认为它符合Google的Java编程风格。 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题,同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则,对于那些不是明确强制要求的,我们尽量避免提供意见。 1.1 术语说明本文档中除非特殊说明,否则: 术语class可表示一个普通类、枚举类、接口或者注解。 术语comment只用来指代实现的注释(…
2018-10-05
PostgreSQL基础知识整理
数据库操作DMLCREATE TABLECREATE TABLE语句用于创建数据库中的表。语法是: CREATE TABLE 表名称 ( 列名1 数据类型, 列名2 数据类型, 列名3 数据类型, .... ); 例: CREATE TABLE user ( id integer, user_name varchar(255), email varchar(255), age integer, address varchar(255) ) 注意:字段类型char和varchar区别: 容纳固定长…
2018-09-25