自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吴小宝的博客

人生就是无法抗拒的前进......

  • 博客(37)
  • 收藏
  • 关注

原创 笔试题的思考:移动最少硬币让金字塔上下倒过来

大家找工作笔试的时候经常要做笔试题,除了专业性的题目,还有一个很重要的就是行测题,这也是考验我们的综合逻辑思维能力。其中有一道关于硬币金字塔的笔试题:用硬币摆成金字塔,要移动尽可能少的硬币让金字塔上下倒过来,对于 4 层金字塔只要移动图中 3 个蓝色的硬币即可。问对于 6 层金字塔,要把它倒过来最少需要移动多少枚硬币?首先

2016-08-23 20:08:02 38672

原创 Linux用户和用户组管理命令

1. 用户管理命令(1) 用户添加命令 useradd命令格式:useradd [选项] 用户名选项: -u UID: 手工指定用户的UID号-d 家目录: 手工指定用户的家目录-c 用户说明: 手工指定用户的说明-g 组名: 手工指定用户的初始组-G 组名: 指定用户的附加组-s shell: 手工指定用户的登录shell,默认是/bin/bash

2016-04-26 11:29:39 13543 1

原创 python之input和raw_input

python2中有input和raw_input两个方法,而在python3只有一个input方法,作用是在程序中实现用户输入以获取输入结果。1. python2中,input和raw_input两个方法是有区别的input()要求用户输入的是合法的Python表达式,你输入什么类型的变量就返回什么类型的变量,你输入的是数字类型则返回的就是数字类型变量:你输入一个列表时,返回的就是

2017-12-17 00:00:57 1146

原创 Linux 输入输出重定向

数据重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方。涉及到标准输入、标准输出和标准错误输出,它们的设备、设备文件名、文件描述符具体如下表:(1) 输出重定向输出重定向分为标准输出重定向和标准错误输出重定向,详细介绍如下表:例如:把正确输出和错误输出分开保存的意义并不大,更多的是把正确输出和错误输出

2017-01-23 20:43:57 795

原创 字符串函数strlen

strlen() 是C语言标准库包含的一个字符串函数,用来返回字符串 s 的长度(不包括结尾的 0),函数的原型是: size_t strlen(const char *s);编程实现该函数的代码如下:size_t myStrlen(const char *str){ size_t index = 0; while (str[index] != '\0') { inde

2016-09-06 16:45:38 1652

原创 两个变量的值交换的多种方法

在我的博客“函数参数的传递”(博客地址:http://blog.csdn.net/wxbmelisky/article/details/50833787)一文中谈到过将两个变量的值进行交换的 swap 函数实现,它们分别是通过指针和引用并使用中间变量来实现的,这里再把代码贴一下。通过指针来实现:void swap(int *x, int *y){ int t = *x;

2016-09-01 20:48:53 4758

原创 排序算法之冒泡排序

冒泡排序是最基础的排序算法,是一种交换排序。冒泡排序的方法为:对于将被排序的数组 A[1...n],从最左边或者从最右边开始依次比较相邻的两个元素,将大数放在右边,小数放在左边。从最左边开始即首先比较 A[1] 和 A[2],如果A[1] 比 A[2] 大则交换,保证大数在右边;然后比较 A[2] 和 A[3],如果 A[2] 比 A[3] 大则交换;如此继续,直到比较最后两个

2016-08-29 15:50:02 931

原创 python 常用运算符

和其他大多数的语言一样,python 中常用的操作符也有算术操作符、比较操作符、逻辑操作符,但是又有一些差别,下面详细介绍。1. 算术运算符和其他大多数的语言一样,python 也有 +(加)、-(减)、*(乘)、/(除)、%(取余)这 5 个运算符,除此之外还有两个特殊的运算符,分别是 //(整除)和 **(幂运算符,或叫乘方运算符)。这里,+、-、* 的功能和计算器相同,不再赘述了

2016-07-23 00:47:38 34342 4

原创 Linux 文件权限管理命令

在讲文件权限管理命令之前,我们先讲一下文件的权限。一个用户对一个文件或目录可以有 r (读)、w (写)、x (执行) 三种权限。这三种权限表示可以对文件和目录进行的操作如下表:下面介绍四个权限管理命令:chmod、chown、chgrp、umask1. 权限管理命令 chmod英文原意:change the permissions mode of a file

2016-07-22 15:28:47 913

原创 通过 python 打开 SecureCRT 软件并实现自动连接主机

如何通过 python 打开 SecureCRT 软件并实现自动连接主机?这个问题是我在实际应用中遇到的问题。做运维的工作上经常需要通过 SecureCRT 连接某个系统内的所有主机,话说 boss 们嫌这样太麻烦,希望通过编写一个程序软件,在该软件上通过下拉框选择特定的系统,再点击按钮就可实现连接该特定系统的所有主机。这是很好的想法,毕竟还是要方便嘛!通过 python 里的 os.syst

2016-07-16 00:12:31 23240 7

原创 Linux 文件内容查看命令

Linux 中用户若对一个文件拥有 r (读)权限,便可查看该文件中的内容。常用的文件内容查看命令主要有一下几个:cat、tac、nl、more、less、head、tail,下面一一介绍。1. catcat 这个命令的作用是将文件内容全部显示在屏幕上,并且是从第一行开始显示。命令格式:cat  [选项]  文件名选项:-n: 显示内容的同时打印出行号,并且空白行也会打印出行号

2016-06-30 14:25:48 993

原创 Linux文件特殊权限——SetUID、SetGID、Sticky BIT

对于 SetUID、SetGID、Sticky BIT 这三个文件特殊权限,分别介绍如下:1. SetUID 权限只有可以执行的二进制程序才能设定SetUID权限,并且命令执行者要对该程序拥有x(执行)权限。对于设定了 SetUID 权限的命令来说,其功能是命令执行者在执行该程序文件时获得该程序文件所有者的身份。SetUID 权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中

2016-06-13 10:24:36 7114 1

原创 Linux的ACL权限

一个文件一般包括所有者、所属组和其他人这三个身份的权限,但有些情况光有这三个身份并不够。例如,在一个班级里上课,建立一个教学目录 /teach,老师是此目录的所有者,拥有的权限为rwx;班级里的学生都属于所属组,拥有的权限也是rwx;班级以外的其他所有人都属于其他人,没有任何权限,即权限为 ---。因此,目录 /teach 的权限数字表示为 770。此时来了一位试听的学生用户 audition,考

2016-06-03 16:24:19 638

原创 逆波兰表达式求值

二元运算符的表达式定义为:(操作数) + (运算符) + (操作数) ,其中操作数也可以为表达式。 在计算机中,根据运算符所在的不同位置来命名,表达式可以有如下三种不同的表示方法: 记表达式为:Exp = S1 + OP + S2, S1和S2为操作数,OP为运算符。 则称 OP + S1 + S2 为表达式的前缀表示法; 称 S1 + OP + S2 为表达式的中缀表示法;

2016-05-19 14:08:12 6296

原创 Linux文件系统常用命令

1. 文件系统查看命令 df功能:显示文件系统的相关信息语法:df 【选项】【挂载点】选项:    -h:使用习惯单位显示容量,如KB, MB或GB等。    -m:以MB为单位显示容量。    -k:以KB为单位显示容量。默认就是以KB为单位。    -a:显示所有的文件系统信息,包括特殊文件系统,如/proc、 /sysfs。    -T

2016-04-25 16:36:57 633

原创 Linux用户配置文件和管理文件

1. 用户配置文件    越是对服务器安全性要求高的服务器 ,越需要建立合理的用户权限等级制度和服务器操作规范。 在Linux中主要是通过用户配置文件来查看和修改用户信息。(1) 用户信息文件 /etc/passwd每一行都包含7个字段:① 第1字段: 用户名② 第2字段:密码标志 x (真正的加密密码存储在影子文件/etc/shadow中)③ 第3字段: UI

2016-04-24 14:38:08 844

原创 括号匹配问题

给定一个字符串,其中的字符只包含三种括号:花括号{ }、中括号[ ]、圆括号( ),即它仅由 “( ) [ ] { }” 这六个字符组成。设计算法,判断该字符串是否有效,即字符串中括号是否匹配。括号匹配要求括号必须以正确的顺序配对,如 “{ [ ] ( ) }” 或 “[ ( { } [ ] ) ]” 等为正确的格式,而 “[ ( ] )” 或 “{ [ ( ) }” 或 “( { } ] )

2016-04-14 22:17:33 19851 1

原创 消除集合中的重复元素

给定一个含有重复元素的集合 B,现要消除集合 B 中的重复元素,相同元素只保留一个。也就是说对一个非纯集合 B,构造集合 A 使得集合 A 中只包含集合 B 中所有值不相同的数据元素。我们先看一个和上述问题类似的问题:对于现有的两个集合 A 和 B,求一个新的集合 A = A∪ B,即求两个集合的并集。假设集合 A 和 B 中存放的都是字符元素,要求 A 和 B 的并集,我们可以依次取

2016-03-27 22:56:38 1755 1

原创 指针数组和数组指针

指针数组本质上是一个数组,数组里面存放的元素是指针,也就是存放指针的数组。指针数组的声明为 DataType *p[n]。比如我们声明 int *p[n],它表示声明了一个数组,数组共有 n 个元素,每个元素都是指向 int 类型的指针。换句话说,也就是声明了一个存放 n 个指向 int 类型指针的数组。其中 p 是数组名,很容易验证,我们知道一个指针不管指向任何类型,其占用内存大小是 4 个字节

2016-03-18 21:44:47 426

原创 顶层const和底层const

对于指针来说,指针本身是一个对象,而且它又可以指向另外一个对象,因此就涉及到指针本身是不是常量以及指针所指的对象是不是常量这两个问题。这两个问题是相互独立的。我们用顶层const 表示指针本身是一个常量,用底层const 表示指针所指的对象是一个常量。        一般来说,顶层const 可以表示任意的对象是常量,对任何数据类型都适用,如算数类型、类类型、指针类型等。比如看下面的几个声明:

2016-03-13 15:05:51 853

原创 统计学习方法概论

本文是学习李航写的《统计学习方法》一书第一章“统计学习方法概论”所做的一个笔记,主要就是对第一章的总结。 1. 统计学习: 统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科,统计学习也称统计机器学习。由此可以看出统计学习的研究对象是数据,目的是对数据进行预测与分析。同时,统计学习关于数据的基本假设是同类数据具有一定的统计规律性,这是统计学习的前提。

2016-03-12 22:58:54 748

原创 Logistic 回归推导

Logistic 回归是机器学习中经典的分类方法,常见的二项 Logistic 回归模型是一种二项分类模型,由条件概率分布P(Y|X)P(Y|X)表示,形式为参数化的Logistic 分布。为了更好地理解 Logistic 回归,我们先从线性回归开始说起。 假设有mm个样本点,记为{(x(i),y(i)),i=1,2,3...,m(x^{(i)},y^{(i)}),i=1,2,3...,m},

2016-03-10 15:39:22 2204

原创 函数参数的传递

在C语言中,函数参数的传递方式有值传递和指针传递两种,在C++中又多了一个引用传递。事实上值传递和指针传递都是传值,只不过对指针传递来说传的是指针的值。1. 传值调用:当实参的的值被拷贝给形参时,形参和实参是两个相互独立的对象,这样的函数调用就是传值调用。传值调用执行的是值拷贝操作,初始化一个非引用类型的变量时,初始值被拷贝给变量,此时对变量的改动不会影响初始值,比如:

2016-03-09 19:48:06 691

原创 C++函数基础

函数是一个命名了的代码块,通过调用函数可以执行相应的代码。一个函数的定义包括返回类型、函数名、形参列表和函数体四个部分。其中,形参以逗号隔开并位于圆括号之内。函数体中存放的是函数执行的操作。例如一个简单的求两个整数中的最大值:int max(int x,int y) { int z; z = (x > y) ? x : y; re

2016-03-08 21:18:44 559

原创 决策树算法

决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶结点代表一种类别。决策树学习是以实例为基础的归纳学习,采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子结点处的熵值为零,此时每个叶节点中的实例都属于同一类。决策树学习算法的最大优点是,它可以自学习。

2016-03-08 17:42:55 1016

原创 Linux分配swap分区

1. free命令free 【选项】:查看内存与swap分区使用状况选项:   -h:使用习惯单位显示容量,如KB, MB或GB等。    -m:以MB为单位显示容量。    -k:以KB为单位显示容量。cached(缓存):是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程 。buffer(

2016-01-24 13:14:10 6764

原创 Linux分区

磁盘分区是将磁盘划分成数个分区,不同类的目录和文件可以存储进不同的分区。1. 分区和文件系统(1)分区类型:主分区:总共最多只能分四个。扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘, Linux最多支持59个逻辑分区,如果是S

2016-01-22 13:14:56 1150

原创 用返回0~6随机数的函数构造返回0~9随机数的函数

问题:给定一个返回0~6的随机自然数的函数,记为rand6(),则如何用rand6()函数构造返回0~9随机自然数的函数rand9()?对于此问题,首先最容易想到的rand6() + 3、rand6() * 1.5、rand6()*2 - 4 等很明显都是错误的(rand6() + 3将返回的是3~9之间的随机数;rand6() * 1.5对于在返回int型的随机数时某些随机数不能产生

2016-01-15 08:19:52 4318 2

原创 Linux常用的压缩与归档命令

1. 压缩命令用途:制作压缩文件、解开压缩文件(1) gzip压缩后文件格式:.gz命令格式:① 压缩文件:   gzip [-] [-v]    -:压缩效率是一个介于 1 - 9 的数值,预设值为 "6" ,指定愈大的数值,压缩效率就会愈高。   -v:显示指令执行过程对于gzip -r    -r:递归处理,将指定目录下的所有文

2016-01-06 17:03:00 689

原创 字符串最小周期

1. 问题描述给定一个长度为n的字符串S,如果存在一个字符串T,重复若干次T能够得到S,那么,S叫做周期串,T叫做S的一个周期。如:字符串abababab是周期串,abab、ab都是它的周期,其中,ab是它的最小周期。设计一个算法,计算S的最小周期。2. 问题分析首先我们会很容易想到最简单的暴力求解:假设字符串S的长度为 len,S的最小周期的长度为 i ,字符串S表示为S

2015-12-04 09:49:25 2001

原创 存储类

在C语言和C++中,每个变量都有一个存储类(storage class),它决定着程序将把变量的值存储在计算机上的什么地方,如何存储,以及变量应该有着怎样的作用域与生命期。存储类主要分为如下四个:auto、static、extern、register,现一一说明。

2015-10-26 21:49:03 682

原创 cin.ignore()的用法

cin.ignore()函数是C++标准输入流(cin)中的一个方法。cin.ignore()函数中有两个参数,分别为数值型的a 和 字符型的 ch ,即cin.ignore( a, ch )。它表示从输入流 cin 中提取字符,提取的字符被忽略,不被使用。而每抛弃一个字符,它都要进行计数和比较字符:如果计数值达到 a 或者被抛弃的字符是 ch ,则cin.ignore() 函数执行终止;否则,它

2015-09-20 14:41:51 81550 7

原创 数据挖掘导论:从包含d个项的数据集提取的可能规则总数

在数据挖掘导论(完整版)一书中的第6章讲到了关联分析,并在6.1问题定义中提到了关联规则。 其中第203页中直接给出了公式(6-3):从包含d个项的数据集提取的可能规则总数为R=3d−2d+1+1R = 3^d-2^{d+1}+1,并要求自己证明,同时也是第251页的习题5。该公式的证明过程用到了排列组合的知识,现在把我的证明过程和大家分享一下。

2015-09-07 17:18:43 5416

原创 排序算法之快速排序

快速排序算法是对冒泡排序算法的改进,它通常是实际排序应用中最好的一个选择。它的平均性能较好,虽然最坏情况下的时间复杂度比较高,但它的期望时间复杂度比较低,还有它能够进行原址排序,原址排序是指:在排序算法中对数组中元素进行重排,任何时候数组中仅有常数个元素需要存储在数组之外。插入排序和堆排序也属于原址排序。

2015-08-27 17:30:28 865 1

原创 平衡二叉树的实现代码

前面已经讲过平衡二叉树的实现原理以及实例原理参见 http://blog.csdn.net/wxbmelisky/article/details/47755753     实例参见 http://blog.csdn.net/wxbmelisky/article/details/47787963平衡二叉树的实现代码如下

2015-08-21 20:53:00 9688 1

原创 平衡二叉树实现的实例

之前谈过平衡二叉树的实现原理,详见http://blog.csdn.net/wxbmelisky/article/details/47755753,下述实例的实现过程依此为据。现在通过实例来分析平衡二叉树的实现过程,以便更好的理解。选取一组数据分别为2,1,0,3,4,5,6,9,8,7的10个结点来构造平衡二叉树。(1)首先数据为2的结点作为根结点插入,接着插入1,仍是平衡的,再插入

2015-08-19 21:11:59 14889 6

原创 平衡二叉树的实现原理

1.概念平衡二叉树建立在二叉排序树的基础上,目的是使二叉排序树的平均查找长度更小,即让各结点的深度尽可能小,因此,树中每个结点的两棵子树的深度不要偏差太大。平衡二叉树的递归定义:平衡二叉树是一棵二叉树,其可以为空,或满足如下2个性质:①左右子树深度之差的绝对值不大于1。②左右子树都是平衡二叉树。平衡因子的概念:结点的平衡因子 = 结点的左子树深度 — 结点的右子树深度。最低不平衡结

2015-08-18 18:08:57 17166 1

空空如也

空空如也

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

TA关注的人

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