Fork me on GitHub

06 2019 档案

摘要:一、原理 计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 步骤: (1)创建关键值(计数列表) (2)遍历序列中的每一个元素,相应的计数器增加1 (3)重新将元素存储列表中 二、实现 假如现在有一个列表 阅读全文
posted @ 2019-06-30 16:53 iveBoy 阅读(351) 评论(0) 推荐(0) 编辑
摘要:一、原理 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 步骤: (1)创建10个桶(列表)分别给每一个数位 (2)遍历每个数位 (3)遍历列表中的每个 阅读全文
posted @ 2019-06-30 16:52 iveBoy 阅读(504) 评论(0) 推荐(0) 编辑
摘要:一、原理 桶排序是计数排序的升级版,如果计数排序中数的范围比较大呢?之前的计数排序数字范围是1-200,假如1-20000呢?利用桶排序就可以对其进行优化。 步骤: (1)将元素分在不同的桶中 (2)在对每一个桶中的元素进行排序 桶排序的的快慢取决于数据的分布: 当输入的数据可以均匀的分配到每一个桶 阅读全文
posted @ 2019-06-30 16:52 iveBoy 阅读(447) 评论(0) 推荐(0) 编辑
摘要:一、原理 希尔排序算法是一种分组插入排序算法,是插入排序的一种更高效的改进版本,希尔排序使整体的数据越来越接近有序。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率; 但插入排序一般来说是低效的,因为插入排序每次只能将 阅读全文
posted @ 2019-06-30 10:29 iveBoy 阅读(369) 评论(0) 推荐(0) 编辑
摘要:一、原理 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。将已有序的子序列合并,得到完全有序的序列。如下图: 归并过程: 两个指针的元素比较大小,小的元素就会被放入临时列表中,最后的结果就是: 算法步骤: (1)申请临时空间,使其大小为两个已经排序序列之和,该空间用来存放合并 阅读全文
posted @ 2019-06-29 11:09 iveBoy 阅读(570) 评论(0) 推荐(0) 编辑
摘要:一、堆排序原理 1、什么是堆? 采用树形结构‘实现优先队列的一种有效技术称为堆。堆就是节点里存储数据的完全二叉树。堆包括大根堆和小根堆: 大顶堆 一颗完全二叉树,满足任一节点都比其孩子节点大,在堆排序算法中用于升序排列。 小顶堆 一颗完全二叉树,满足任一节点都比其孩子节点小,在堆排序算法中用于降序排 阅读全文
posted @ 2019-06-28 09:48 iveBoy 阅读(1094) 评论(0) 推荐(0) 编辑
摘要:一、快速排序的思路 从序列中取出第一个元素E,并使其归位 序列被元素E分成左右两个部分 使用递归完成排序 关键点 归位 如何完成对元素E的归位,元素E将序列分成左右两部分,左边的部分比E元素小,右边的部分比E元素大,这样左边和右边排序后,中间的E元素位置未变,而且左边和右边使用同样的归位方式进行排序 阅读全文
posted @ 2019-06-27 14:34 iveBoy 阅读(309) 评论(0) 推荐(0) 编辑
摘要:一、理解原型模式 原型模式就是帮助创建对象的克隆,有时候需要在对象的副本上进行操作,这样不会改变原对象的变量。假如figt和lice是两位厨师,现在figt有一份关于红烧肉的配料,他想分享给lice,那么如果lice想在配料谱上做修改,是否figt拿到的也会跟着变呢? 如果是上图这样的表示figt与 阅读全文
posted @ 2019-06-27 10:32 iveBoy 阅读(165) 评论(0) 推荐(0) 编辑
摘要:一、门面模式的理解 门面模式是一种结构型设计模式,它主要是为了完成: 为子系统中的一组接口提供一个统一的接口,并定义一个高级接口来帮助客户端通过更加简单的方式使用子系统。 门面所解决问题是,如何用单个接口对象来表示复杂的子系统。 促进实现与多个客户端解耦 这个模式有三个参与者: 门面:将一个复杂的系 阅读全文
posted @ 2019-06-26 19:02 iveBoy 阅读(1016) 评论(0) 推荐(0) 编辑
摘要:Python语言提供了多种创建对象的方式,这里列出其中方式,比如下面有一个类: 方式一: 传统方式构建,将类对象当成构造器使用 方式二: 把类名当成参数,使用eval()函数 方式三: 使用getattr函数 方式四: 使用globals函数 方式五: 使用自定义函数创建对象 方式六: 原型方式创建 阅读全文
posted @ 2019-06-24 15:26 iveBoy 阅读(417) 评论(0) 推荐(0) 编辑
摘要:一、理解工厂模式 在工厂设计模式中,客户端可以请求一个对象,而无需知道这个对象来自哪里,它只需要知道需要传递的接口、方法和参数,就能够创建所需类型的对象了。这简化了客户端 的实现。工厂模式具有松耦合(对象的创建独立于类的实现)、重用现有对象的特点。 工厂模式有三种变体: 简单工厂模式:允许接口创建对 阅读全文
posted @ 2019-06-24 11:49 iveBoy 阅读(188) 评论(0) 推荐(0) 编辑
摘要:一、理解单例模式 确保类有且只有一个特定类型的对象,并提供全局访问点,单例模式通常用于下列情形,例如日志记录或数据库操作等,避免对同一资源请求的相互冲突。 单例的模式的意图如下: 确保类有且只有一个对象被创建。 为对象提供一个访问点,以使程序可以全局访问该对象。 控制共享资源的并行访问。 实现单例模 阅读全文
posted @ 2019-06-23 12:46 iveBoy 阅读(246) 评论(0) 推荐(0) 编辑
摘要:一、原理 将序列分为有序区和无序区两个部分,刚开始有序区只有一个元素,每次从无序区选择一个元素插入到有序区的位置,直到无序区为空。 关键点: 插入到有序区时遵循从后向前进行扫描,然后将无序区的元素插入。 此时无序区的第一个元素作为有序区的第一个元素 二、实现 总结: 有序区已经有一个元素,第一层循环 阅读全文
posted @ 2019-06-22 19:03 iveBoy 阅读(225) 评论(0) 推荐(0) 编辑
摘要:一、选择排序原理 将未排序序列中的第一个元素标记为最小,存放到有序区的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 关键点: 无序区 记录最小元素的位置 二、实现 原文:https://github.com/hustcc/JS-S 阅读全文
posted @ 2019-06-22 19:03 iveBoy 阅读(245) 评论(0) 推荐(0) 编辑
摘要:一、类创建 类的创建使用关键字class定义,类名跟在class之后 类中的方法就是函数 每一个方法中的第一个参数都是self,如果方法中有多个参数,第一个参数将作为self参数使用,在调用方法时,这个参数不用自己传入,系统会将方法所属的对象传入这个参数。 调用对象方法的方式有两种,一种是直接通过对 阅读全文
posted @ 2019-06-22 19:02 iveBoy 阅读(294) 评论(0) 推荐(0) 编辑
摘要:一、思路 对一个序列中的元素,比较相邻的元素。如果第一个比第二个大,就交换它们两个,将大的元素放在右边,此时右边就称为有序区,左边就是无序区,不断重复的对左边区域相邻元素进行比较,右边有序区的元素不断增加,最后完成排序。 具体看下面的例子: 游标刚开始在第一个的位置,那么就会比较3和5的值,3没有5 阅读全文
posted @ 2019-06-22 19:02 iveBoy 阅读(459) 评论(0) 推荐(0) 编辑
摘要:一、迭代器 1、定义 迭代器(Iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。 满足什么样的条件才能成为迭代器呢? 必须遵从迭代器协议 迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个Sto 阅读全文
posted @ 2019-06-18 14:34 iveBoy 阅读(290) 评论(0) 推荐(0) 编辑
摘要:一、装饰器基础 1、什么是装饰器? 装饰器就是一个返回函数的高阶函数。顾名思义,装饰器就是对现有的函数的装饰,在不改变现有函数的的源代码以及调用方式的基础上添加新的功能。所以,一个装饰器应该满足以下三点原则: 不改变现有函数的源代码(开放封闭原则) 不改变现有函数的调用方式 能够添加满足需求的新功能 阅读全文
posted @ 2019-06-17 11:10 iveBoy 阅读(389) 评论(0) 推荐(0) 编辑
摘要:一、匿名函数 匿名函数顾名思义就是没有名字的函数,比如如下: 这时需要定义函数,匿名函数就不用定义函数,直接使用关键字lambda来创建: 关键字lambda表示匿名函数,冒号前面的x,y表示函数参数;x+y表示返回的结果。 如何调用匿名函数呢?可以将匿名函数赋值,然后调用: 同样可以将匿名函数作为 阅读全文
posted @ 2019-06-16 09:27 iveBoy 阅读(217) 评论(0) 推荐(0) 编辑
摘要:一、函数定义 1、定义 函数的定义每个人理解的不一样,最后定义的也是不尽相同,函数可以说它是一个拥有名称、参数以及返回值的代码块。 2、函数种类 内置函数 python解释器已经提供的函数,拿来直接使用而无需定义。 自定义函数 个人根据自己的产品需求,定义好某种函数,以后再进行调用。 3、定义函数 阅读全文
posted @ 2019-06-15 18:26 iveBoy 阅读(322) 评论(0) 推荐(0) 编辑
摘要:一、RabbitMQ安装 1、简介 RabbitMQ是一个消息代理:它接受和转发消息。可以将其视为邮局,当你要发送的邮件放入邮局中时,你可以确认邮件是否安全的达到接收者的手中,这里RabbitMQ就相当于邮局的角色。 2、RabbitMQ的安装 安装erlang 因为RabbitMQ是erlang语 阅读全文
posted @ 2019-06-14 13:21 iveBoy 阅读(1036) 评论(0) 推荐(0) 编辑
摘要:一、数据类型种类 数字(Number) 字符串(String) 元组(Tuple) 集合(Sets) 列表(List) 字典(Dictionary) 二、存储空间的大小(从少到多) 三、是否可变 四、是否有序 阅读全文
posted @ 2019-06-12 12:48 iveBoy 阅读(231) 评论(0) 推荐(0) 编辑
摘要:一、集合基础 1、创建集合 使用set类创建集合 在使用set类创建集合是=时,需要为set类的构造方法提供一个列表或者元组类型的值,用于建立集合的数据源;这也就是说set类可以将元组或列表转为集合,并且去除重复元素,元素顺序可能也会被打乱,因为集合是无序的。 #利用元组创建集合 s=set((1, 阅读全文
posted @ 2019-06-12 11:44 iveBoy 阅读(1627) 评论(0) 推荐(0) 编辑
摘要:一、字典基础 1、创建字典 一个字典通过一对大括号进行创建,键值之间使用(:)进行分隔,每一对键值之间使用(,)分隔,如果大括号中无值那么就是空字典;它是Python中唯一具有映射关系的数据类型,效率高于列表。 当然如果键值不唯一,也不会抛出异常,只不过相同的键会被覆盖掉。 2、dict函数 可以使 阅读全文
posted @ 2019-06-11 18:18 iveBoy 阅读(574) 评论(0) 推荐(0) 编辑
摘要:元组是一种序列,它与列表一样,唯一不同的是列表是可修改的,而元组不可以,元组的创建也是较为简单的。 1、元组创建 直接使用逗号、圆括号 使用关键字tuple class tuple(object): """ tuple() -> empty tuple tuple(iterable) -> tupl 阅读全文
posted @ 2019-06-11 10:21 iveBoy 阅读(300) 评论(0) 推荐(0) 编辑
摘要:一、列表基础 列表是序列中的一种,所以所有序列的属性或者方法都适用于列表,而序列就是使用一对中括号将序列中的元素值括起来。 1、创建列表 列表是可迭代对象,能够进行for循环,创建形式也是多样的。 2、索引 列表中的所有元素都是有编号的,编号是从0开始递增,这个编号就是列表元素的索引,所有的元素都可 阅读全文
posted @ 2019-06-11 09:44 iveBoy 阅读(578) 评论(0) 推荐(0) 编辑
摘要:一、字符串基础 1、字符串定义 使用成对的单引号、双引号或者三引号将其进行包裹。 2、字符串与转义字符 如果字符串中间有正常的字符,不进行区别就会报错,python解释器无法判断单引号是正常字符还是多余单引号,例如: 解决方法: 使用双引号将单引号扩起来 如果内部是双引号,可以使用单引号扩起来 但是 阅读全文
posted @ 2019-06-10 13:24 iveBoy 阅读(491) 评论(0) 推荐(0) 编辑
摘要:一、RPM装包 RPM安装常用选项: a) –i:安装(Install)软件。 b) –U:升级(Upgrade)旧版本的软件。 c) –e:移除/删除(Erase)软件。 d) –v:显示详细的处理信息。 e) –h:显示安装进度。卸载不能用 1) 常用的查询已安装的软件包信息的命令: a) rp 阅读全文
posted @ 2019-06-07 10:06 iveBoy 阅读(5319) 评论(0) 推荐(0) 编辑
摘要:1、ipconfig命令使用 显示所有正在启动的网卡的详细信息或设定系统中网卡的IP地址。 某一块网卡信息 打开或者关闭某一块网卡 2、ifup和ifdown ifup和ifdown分别是加载网卡信息(相当于加载网卡配置文件:/etc/sysconfig/network-scripts/ifcfg- 阅读全文
posted @ 2019-06-07 09:43 iveBoy 阅读(1142) 评论(0) 推荐(0) 编辑
摘要:1、添加虚拟硬盘 (1)点击编辑虚拟机位置,然后点击添加 (2)点击添加硬盘 (3)点击下一步 (4)创建新虚拟磁盘并点击下一步 (5)指定磁盘容量并且点击下一步 (6)点击完成 2、系统分区 当添加硬盘后可以看看是否添加成功,在/dev目录下sd开头的有sda和sdb两块硬盘,而sdb就是新添加的 阅读全文
posted @ 2019-06-06 23:13 iveBoy 阅读(16142) 评论(0) 推荐(1) 编辑
摘要:1、使用cat命令进行纵向合并 使用‘>’是将左边的内容覆盖到右边 使用‘>>’是将左边的内容追加到右边文档中 还可使用‘>’将不同文件进行合并 2、管道符‘|’统计行数 使用wc -l直接计算行数 管道符计算单个文件的行数 计算多个文件合并后的行数 3、tar命令打包文件(注意参数不带-,比如cv 阅读全文
posted @ 2019-06-06 22:12 iveBoy 阅读(485) 评论(0) 推荐(0) 编辑
摘要:一、文件的权限 1、文件权限的查看 命令:ls -l 可以使用ll命令代替 ls -l 2、ls -l 所包含的信息 (1)权限信息 (-rw-r--r-- ) 一共有10位 a.第一位:表示文件信息 -:表示普通文件 d:表示目录 l:表示软连接(快捷方式) b:设备 p:管道文件 b.第2-4这 阅读全文
posted @ 2019-06-06 22:02 iveBoy 阅读(3457) 评论(0) 推荐(2) 编辑
摘要:1、用户文件 在linux系统中建立一个用户会建立以下的文件: 1)passwd(位于etc目录下) 2)shadow(位于etc目录下) 3)group(位于etc目录下) 4)gshadow(位于etc目录下) 5)mail(在mail目录下建立自己的邮箱文件) 6)home(在home目录下建 阅读全文
posted @ 2019-06-06 19:03 iveBoy 阅读(3192) 评论(0) 推荐(0) 编辑
摘要:一、mysql的安装 之前搭建linux下项目的发布,最后遗留的问题时数据库的迁移,如何从windows上迁移到linux上?这里首先进行mysql数据库的安装 1、下载mysql安装包 在这里下载的是如下版本的mysql 下载完毕后上传到linux服务器 2、解压 将其解压到指定路径,并且通过mv 阅读全文
posted @ 2019-06-06 13:53 iveBoy 阅读(127991) 评论(2) 推荐(3) 编辑
摘要:在发布项目前首先将部署环境进行搭建,尤其是依赖包一定需要提前安装。 一、虚拟环境的搭建 1、建议在linux下新建一个虚拟环境,这样有独立干净的环境。 2、确认软件包管理工具以及python来自于虚拟环境 3、安装项目所需要的包,将windows中所需要的包导出,并且在虚拟环境中安装 4、基础环境所 阅读全文
posted @ 2019-06-06 12:40 iveBoy 阅读(1345) 评论(0) 推荐(0) 编辑
摘要:一、virtualenv的安装与使用 1、安装virtualenv 如果想查看安装位置 2、创建虚拟环境 3、激活虚拟环境 4、退出虚拟环境 二、virtualenvwrapper的安装与使用 virtualenv能够创造独立的环境,但是它有一个很大的缺点,就是必须知道的摸个虚拟环境的目录,因为打开 阅读全文
posted @ 2019-06-04 14:01 iveBoy 阅读(6848) 评论(0) 推荐(0) 编辑
摘要:一、linux系统目录结构 1、顶层根目录 顶层根目录使用 “/”来表示 2、linux中的一些重要目录 (1)bin目录 放置常用的可执行文件(其中ls命令位列其中) (2)sbin目录 放置系统的可执行文件 (3)home目录 每一个用户都有一个家目录,其中root用户的家目录为 /root,普 阅读全文
posted @ 2019-06-03 10:13 iveBoy 阅读(751) 评论(0) 推荐(0) 编辑
摘要:linux命令的语法格式: 命令 + 选项 + 参数 命令:告诉系统做什么 选项:命令以何种形式运行,部分以“-”开始。 1、关闭linux系统命令 init 0 2、切换终端命令 control + alt + F[1-6] 不同的用户登陆 control + shift + n 快速切换到另一个 阅读全文
posted @ 2019-06-02 22:12 iveBoy 阅读(327) 评论(0) 推荐(0) 编辑
摘要:当用户登陆后,根据用户的角色要为用户生成对应的权限菜单,此时需要将登陆的用户信息获取且获取角色信息,从数据库中获取菜单以及权限信息,并且存入session中。 1、权限流程 第一次请求的页面是登陆页面,已经被列入白名单,根据登陆的用户信息,获取用户的角色信息,从而拿到一个或者多个角色的权限、菜单信息 阅读全文
posted @ 2019-06-02 21:43 iveBoy 阅读(478) 评论(0) 推荐(0) 编辑
摘要:对于权限表的操作有两种方式,第一种是一个个的权限进行curd,另外一种是批量操作,自动发现django程序中的路由,进行批量curd,首先介绍第一种方式。 因为在列出菜单时,已经将权限列表列出来了,所以权限包括增加、修改以及删除操作 urls.py 后台进行处理 from django import 阅读全文
posted @ 2019-06-02 21:42 iveBoy 阅读(473) 评论(0) 推荐(0) 编辑
摘要:菜单包括菜单列表,菜单列表不仅将菜单列出来,而且将每个菜单下的权限也列出来、菜单的添加、删除、修改。 urls.py 1、后台处理菜单列表页 将每一个菜单及其权限取出来,组成相应的数据结构 { 64: { 'id': 64, 'name': 'rbac:multi_permissions', 'me 阅读全文
posted @ 2019-06-01 18:57 iveBoy 阅读(780) 评论(0) 推荐(0) 编辑
摘要:rbac是基于角色的权限设计,一共包含六张表,具体的表设计如下: 其中用户表和角色表是多对多的关系、角色表和权限表是多对多的关系。另外权限表关联菜单,这样某一个权限url挂载某一个菜单下,并且权限表关联自身,这样比如增加、删除、修改的权限url又可以挂在某一个权限url下面。 阅读全文
posted @ 2019-06-01 08:11 iveBoy 阅读(482) 评论(0) 推荐(0) 编辑
摘要:为了与stark组件分离,形成独立的模块,所以rbac数据表的操作需要单独进行操作,对角色表的操作。 urls.py views.py role_list.html {% extends 'layout.html' %} {% block css %} {% endblock %} {% block 阅读全文
posted @ 2019-06-01 08:10 iveBoy 阅读(385) 评论(0) 推荐(0) 编辑

TOP
点击右上角即可分享
微信分享提示