自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wengmq的博客

欢迎一起交流学习

  • 博客(141)
  • 资源 (1)
  • 收藏
  • 关注

原创 排序算法-总分析

一、排序算法分类所谓排序,是整理表中的记录,使之按关键字递增(或递减)有序排列,排序数据中可以存在相同关键字的记录。本文仅考虑递增排序。常见有以下几种内排序算法:二、排序算法分析(可以点对应排序名链接进入查看详细分析)排序方法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性直接插入排序O(n2)O(n2)O(n)O(1)稳定...

2020-03-19 03:37:36 210

原创 arduino - 微型智慧农业项目

arduino - 微型智慧农业项目一、项目介绍通过各种传感器,实时监测植物的生长环境,通过arduino网络拓展板连接网线,把传感器监测到的数据实时发送到乐维网(物联网平台),在PC端或是手机端可以实时监测数据。当温度过大时,会开启风扇模块,给植物降温,当土壤湿度过低时,会开启继电器开关,进而打开水泵,自动抽水来灌溉植物。二、仪器介绍序号仪器1arduino Uno...

2019-04-29 01:20:01 13861 61

原创 grep和egrep的区别

1. grep简介grep (global search regular expression_r(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单

2020-08-23 16:27:57 14290

原创 nginx(二)- nginx的基本使用

nginx的基本使用1.搭建一个静态的web服务器2.搭建一个动态的web服务器3.反向代理实验环境下载安装虚拟机,我这里使用vitualbox网上下好centos7的系统镜像,在虚拟机器上安装centos7系统,确保在c系统上可以上网,这里推荐使用桥接模式。centos7系统确保可以连上外网使用终端软件连接上虚拟机,我这里使用iterm,类似的xshell也可以。先使用ip addr 命令查看虚拟机centos7的内网ip然后使用终端软件连接:ssh 用户名@ip,我这里

2020-08-05 19:53:25 770

原创 浏览器/http缓存机制

什么是浏览器缓存?简单来说,浏览器缓存其实就是浏览器保存通过HTTP获取的所有资源,是浏览器将网络资源存储在本地的一种行为。缓存的资源去哪里了?你可能会有疑问,浏览器存储了资源,那它把资源存储在哪里呢?memory cacheMemoryCache顾名思义,就是将资源缓存到内存中,等待下次访问时不需要重新下载资源,而直接从内存中获取。Webkit早已支持memoryCache。目前Webkit资源分成两类,一类是主资源,比如HTML页面,或者下载项,一类是派生资源,比如HTML页面中内嵌的图片

2020-08-05 17:07:36 347

原创 Linux系统设置SSH免密连接

Secure Shell 协议,简称 SSH,是一种加密网络协议,用于客户端和主机之间的安全连接,并支持各种身份验证机制,目前最实用的身份验证机制就是基于密码的身份验证和基于公钥的身份验证两种。今天带来的是,Linux系统如何设置基于 SSH 公私钥的身份验证,以及如何免密连接到主机的教程。基于ssh的公私钥的数据传输,前提是通信双方需要有对方的公钥,其原理便是非对称加密详情见:百度百科,所以我们要使用一台电脑的终端去控制另外远程主机,关键步骤便是:把主控端的SSH公钥存到被控端的主机上的 /.ssh/a

2020-07-18 23:42:33 1078

原创 git远程操作: git push, git fetch, git pull

git远程操作: git push, git fetch, git pull工作中使用git来管理项目的小伙伴是不是会频繁地使用git的远程操作,下面是我对git在本地仓库与远程仓库之间进行交互的三个常用命令:git push,git fetch,git pull 进行了整理和总结。一、git push命令1. 推送本地分支到远程分支git push <远程主机名> <本...

2020-04-03 15:22:37 329

原创 Django-admin后台美化

Django-admin后台美化环境:django2,python3越使用django越觉得django的admin不好看,可能是审美疲劳,就想换个界面,还不想自己写,找到了一个很好用的django-suitdjango扩展能力还是挺强的,有牛人开发出了suit这个插件。只需要简单的几步配置,就可以让admin后台变得美观许多。默认的Django的admin后台界面:那么,要怎么做呢?...

2020-03-31 17:04:20 3124 3

原创 saltstack(二)- YAML

saltstack(二)- YAML语法一、YAML简介在学习saltstack过程中,第一要点就是States编写技巧,简称SLS文件。这个文件遵循YAML语法。YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非...

2020-03-26 18:59:11 256

原创 saltstack(一)- 基础入门

一、saltstack的由来saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统。系统管理员日常会进行大量的重复性操作,例如安装软件,修改配置文件,创建用户,批量执行命令等等。如果主机数量庞大,单靠人工维护实在让人难以忍受。早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的...

2020-03-25 21:15:51 407

转载 手撕代码-二叉搜索树 节点的删除

手撕代码-二叉搜索树 节点的删除考虑三种情况:1.要删除的是叶节点:直接删除,并在修改其父节点的指针为NULL。2.要删除的节点只有一个孩子节点:将其父节点的指针指向要删除节点的孩子节点。3.要删除的节点有左、右两棵子树:用另一节点替代被删除节点:右子树的最小元素或左子树的最大元素。完整代码如下:/** * Definition for a binary tree node. ...

2020-03-21 22:40:09 164

原创 哈希表原理

什么是哈希?我们常常都能听到一些名词,哈希表、哈希函数、哈希冲突、哈希算法、一致性哈希,那么这些到底是什么鬼?首先我们要明白哈希的由来,为什么会有这个东西:我们通常查找数据的方式有很多种,例如使用树,它们的查找都是先从根节点进行查找,从节点取出数据或索引与查找值进行比较,等等有很多方式,那么,有没有一种函数H,根据这个函数和查找关键字key,可以直接确定查找值所在位置,而不需要一个个比较。这...

2020-03-21 17:49:06 454

转载 nginx(一)——介绍

nginx原理(一)想必大家一定听说过Nginx,若没听说过它,那么一定听过它的"同行"Apache 吧!Nginx 的产生Nginx 同 Apache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过...

2020-03-21 16:16:43 325

转载 排序算法-归并排序

归并排序归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。思路:归并排序法首先将这个数据分成一半(左右两边) 然后想办法把左边的数组给排序,右边的数组给排序,之后呢再将它们归...

2020-03-19 02:50:19 248

原创 排序算法-基数排序

基数排序基数排序(Radix Sort)是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。(桶排序可以参考:我的另一篇博客)具体做法是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。通过基数排序对数组{53, 3, 542, 748, 1...

2020-03-19 02:19:52 280

原创 排序算法-桶排序

桶排序桶排序(Bucket Sort)的原理很简单,它是将数组分到有限数量的桶子里。假设待排序的数组data中共有N个整数,并且已知数组data中数据的范围[0, MAX)。在桶排序时,创建容量为MAX的桶数组buckets,并将桶数组元素都初始化为0;将容量为MAX的桶数组中的每一个单元都看作一个"桶"。在排序时,逐个遍历数组data,将数组data的值,作为"桶数组buckets"的下标。...

2020-03-18 22:28:55 322 1

原创 排序算法-堆排序

堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆(数据结构)堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆...

2020-03-18 17:37:11 615

原创 排序算法-简单选择排序

简单选择排序思路:每一轮从无序区中选出一个最小的数放入全局有序区,经过n-1轮,最后一个数已然是最大值,排序完成。代码分析:/*简单选择排序思路:每一轮从无序区中选出一个最小的数放入全局有序区,经过n-1轮,最后一个数已然是最大值,排序完成。*/#include <stdio.h>void select_sort(int data[],int n){ i...

2020-03-18 15:16:34 317

原创 排序算法-希尔排序

参考:https://blog.csdn.net/qq_39207948/article/details/80006224希尔排序希尔排序是直接插入排序的改进,传统的之间插入排序对小规模数据或是基本有序数据时十分高效,而希尔排序对于直接插入排序的改进使其对于中等规模的数据的性能表现还不错。希尔排序思路:把较大的数据集合分割成若干个小组(逻辑上分组),然后对每一个小组分别进行插入排序,此时,...

2020-03-18 14:10:08 466

原创 手撕代码-反转链表

反转链表node * func(node*phead){ node* cur_next; node* cur_previous = NULL; node* current = phead; while(current != NULL) { cur_next = current->pnext; current->pnext = cur_previous; c...

2020-03-16 15:43:36 460

原创 排序算法-冒泡排序(改进)

冒泡排序(改进)冒泡排序的排序思路是:通过无序区的相邻元素的比较和位置的交换,使最大的元素往上移动每一轮排序选出无序区的最大的元素,加入有序区中不止可以得到升序排序,稍微改变下交换逻辑也可以得到降序排序冒泡排序算法参考我的另一篇博客:链接冒泡排序存在的问题:假如我们运气好,用了1轮就已经将整个序列排序好了,整个数列已然是有序的了。可是我们的排序算法仍然“兢兢业业”地继续执行第2轮...

2020-03-15 13:54:02 3190 1

转载 时间复杂度和空间复杂度

时间复杂度和空间复杂度一、说明时间复杂度和空间复杂度是用来评价算法效率高低的2个标准,身为开发者肯定会经常会听到这2个概念,但它们分别是什么意思呢?其实这两个概念从字面意思上也能看出一二:时间复杂度:就是说执行算法需要消耗的时间长短,越快越好。比如你在电脑上打开计算器,如果一个普通的运算要消耗1分钟时间,那谁还会用它呢,还不如自己口算呢。空间复杂度:就是说执行当前算法需要消耗的存储空间...

2020-03-15 01:13:52 207

原创 使用pycharm远程编写云端项目

使用pycharm远程编写云端项目参考:https://www.jb51.net/article/166055.htm使用场景:我的Django项目要部署到我的阿里云centos7上面,git clone到本地之后,经常要做一些改动,但是不喜欢用vim来对项目做一些修改。可以用本地pycharm连接上你的远程服务(阿里云)。然后就可以在你的本地的Pycharm上面,编写和同步你的云端上的项目...

2020-03-05 23:45:43 851

原创 面试题-epoll的水平触发和边缘触发

epoll的水平触发和边缘触发前言:select(),poll()模型都是水平触发模式,信号驱动IO是边缘触发模式,epoll()模型即支持水平触发,也支持边缘触发,默认是水平触发从表象看epoll的性能最好,但是在连接数少,并且连接都十分活跃的情况下,select和poll的性能可能比epoll好,毕竟epoll的通知机制需要很多回调函数来完成。epoll工作在两种触发模式下:Le...

2020-02-28 19:50:36 2081

原创 面试题-TCP协议如何保证可靠传输

TCP协议如何保证可靠传输1.校验和tcp报头中有对应的检验和字段,发送的数据包的二进制相加然后取反,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。2.序列号和确认应答TCP给发送的每一个包进行编号(序列号依次递增),接收方对数据包进行排序,把有序数据传送给应用层。接收方收到报文就会确认(累积确认:对所有按序接收的数据的确认...

2020-02-28 15:40:16 1822

原创 剑指offer常见面试题(思路)

剑指offer常见面试题(思路)1.判断两个单向链表是否相交,如果相交,求出交点判断两个单向链表是否相交?判断两个链表的最后一个节点是否相同求相交链表的节点:暴力解决:在第一个链表上顺序遍历每一个节点,每遍历到一个节点,就在第二个链表上顺序遍历每个节点。如果在第二个链表上有一个节点与第一个链表上的节点一样,则说明两个链表在这个节点上重合,于是就找到了他们的公共节点。简便解法:首先遍历...

2020-02-27 23:14:54 582

原创 Linux-Supervisor管理多个进程

使用Supervisor管理多个进程Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己...

2020-02-24 22:04:19 1242

原创 centos7中设置nginx的systemctl启动方式

centos7中设置nginx的systemctl启动方式一、首先介绍下nginx自带的启动命令nginx #启动nginx -s reload #重启nginx -s stop #停止当然上面情况是,nginx的可执行文件路径有加到环境变量的情况,也可以使用nginx的可执行文件的绝对路径来执行nginx。首先要找到nginx的可执行命令的位置 ,使用rpm -ql nginx ...

2020-02-24 16:31:24 1475

原创 Linux-环境变量执行顺序

Linux-环境变量执行顺序由下可知,linux通过$PATH的路径顺序,由左至由依次查找某个程序,如果有两个路径下都有这个程序,以先找到的为准.还是就是,Linux终端输入一个命令时,会想去查找$PATH中的目录,环境变量中的目录没有我们要执行的命令的二进制文件,才会去当前目录去查找,所以执行当前目录下的文件我们一般都是用 ./文件参考:https://blog.csdn.net/cha...

2020-02-23 18:00:43 899

原创 linux - nohup 命令 &后一按回车就exit

linux 中使用nohup 命令 &后一按回车就exit问题描述:先要后台运行一个Django项目,执行命令nohup python manage.py runserver 0:8002 &后,一按回车进程就直接exit了。解决方案:命令使用反引号括起来nohup `你的命令` & 8002端口已经在运行不太懂是什么原理,蛮试出来的,应该是命令使用反...

2020-02-23 03:34:55 18437 7

原创 Django-admin后台管理站点

admin后台管理站点很多时候,我们不光要开发针对客户使用的前端页面,还要给后台管理人员提供相应的管理界面。但是大多数时候为你的团队或客户编写用于增加、修改和删除内容的后台管理站点是一件非常乏味的工作并且没有多少创造性,而且也需要花不少的时间和精力。Django最大的优点之一,就是体贴的为你提供了一个基于项目model创建的一个后台管理站点admin。这个界面只给站点管理员使用,并不对大众开放。...

2020-02-22 22:26:43 1325

原创 Django-MVC及MTV设计模式:

MVC及MTV设计模式:在目前基于Python语言的几十个Web开发框架中,几乎所有的全栈框架都强制或引导开发者使用MVC设计模式。所谓全栈框架,是指除了封装网络和线程操作,还提供HTTP、数据库读写管理、HTML模板引擎等一系列功能的Web框架,比如Django、Tornado和Flask。MVC设计模式:最早由Trygve Teenskaug在1978年提出,上世纪80年代是程序语言Sm...

2020-02-22 18:16:03 852

原创 Django 中的STATIC_URL 设置和使用解析

Python Django 中的STATIC_URL 设置和使用解析使用Django静态设置时,遇到很多问题,经过艰苦的Baidu, stack overflow, Django原档阅读,终于把静态图片给搞出来了。特记录下来。关键的概念:Django中,静态资源的存放通过设置 STATIC_URL, STATICFILES_DIRS 来设置,一般STATIC_URL设置为:/static/...

2020-02-22 03:10:53 1910

原创 Python 中 os.path.abspath(__file__)与os.path.dirname()以及os.path.basename(__file__)的用法详解

os.path.abspath(file)与os.path.dirname()以及os.path.basename(file)的用法详解os.path.abspath(_file_)os.path.dirname(file) 返回脚本的绝对路径import os# 返回脚本绝对路径print(os.path.abspath(__file__))os.path.dirname()...

2020-02-22 02:37:47 8850

原创 笔试题-二元一次方程求解

二元一次方程求解■题目描述深信服经常给员工发放下午茶,为保证新鲜,下午茶需要当天采购。下午茶有水果和面点两种类型,其中水果和面点都有单独的采购价格,它们的价格都是整数元。某次,负责采购的阿姨忘记了水果和面点各自的价格,但她保存了两天的采购的记录:第一天采购了a1份水果, b1份面点,总花费c1元。第二天采购了a2份水果,b2份面点,总花费c2元。阿姨希望你帮她计算,水果和面点的实...

2020-02-21 21:50:02 462

原创 笔试题-木板存水问题

木板存水问题空地上竖立着n个从左到右排列的木板,它们可以把水挡住,但溢出最边上木板的水将会流到空地上。已知木板间距都是单位1,现给定每个木板的高度,请求出总共能接住的水量?说明一点,这里只考虑间距(宽度)和高度,不考虑第三个维度,因此水量是平方单位。比如下面的木板长度就是2,1,3,可以容下4单位水 | |- -| |-|-|输入描述:第一行一个正整数T,表示T个测试样例;...

2020-02-21 19:35:56 1032

原创 常见面试题(总结)- 数据库

一、索引的概念索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。索引的一个主要目的就是加快检索表中数据,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。例如这样一个查询:select * from table1 where id=10000。...

2020-02-19 15:54:20 403

原创 常见笔试题-(选择题)

常见笔试题-(选择题)介绍一些面试题中经常出现的题目1.已知中序、先序、后序其二,求另外一个。中序遍历:左子树 , 根 ,右子树先序遍历:根 ,左子树 ,右子树后序遍历:左子树, 右子树, 根这道题的解法一般及时根据其中两个遍历,画出树的结构再求出另一个遍历的结果。2.求平均寻道长度3.哈希表4.出栈顺序5.哈夫曼树5.结构体字节对齐解析:根据字节...

2020-02-18 01:06:23 606

原创 面试题-不使用临时变量交换值

在不使用临时变量的情况下,交换两个int变量的值答案:a=a+b;b=a-b;a=a-b;同理:a=a*b;b=a/b;a=a*b;问:那么这种算法,在什么情况下会有问题呢?答:当两个整数a,b的值得和/积超过了int类型的最大值,该算法失效。问:那有没有更好的方法呢?更好的方法:只要对这两个数执行三次异或就可以交换两个变量的值具体实现 a = a ^ b; b...

2020-02-17 23:28:22 377

原创 面试题-内存泄漏

1. 什么是内存泄漏内存泄漏:指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。2. 内存泄漏分类C/C++程序中一般我们关心两种方面的内存泄漏:·堆内存泄漏(Heap leak)堆内存指的是程序执行中依据须要分配通过malloc / calloc / re...

2020-02-17 00:18:34 1512

DjangoWeb.zip

DjangoWeb.zip

2019-12-22

空空如也

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

TA关注的人

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