自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

her的博客

有限的青春,无限的代码

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

原创 js操作DOM的方法总结整理

js操作dom主要分为增加、删除、修改、查找几个功能:新增节点:var newNode=document.createElement("div"); //创建一个元素节点var textNode=document.createTextNode("hello world!"); //创建一个文本节点var cloneNode =newNode.cloneNode(true);//克隆一个...

2020-05-01 20:34:35 4942

原创 最全面的js数组去重方法汇总

数组去重也是前端面试中很常见的一个问题,最近就对这个问题的解法进行了汇总,有需要的同学可以参考下一、双层循环,比较相同的值,使用splice删除重复元素 function uniqueArr(arr){ if(!Array.isArray(arr)){ alert("type error"); re...

2020-04-28 23:40:24 404 1

原创 10种方法实现水平垂直居中

说起前端样式布局,最基础的就是水平垂直居中问题啦,所以本人在此汇总一下,以便记忆:首先我们分为三大类来讲述:一、水平(左右)居中:①text-center:center ;非块级元素有效②margin:0 auto;块级元素有效③absolute+负margin;任何元素都有效二、垂直(上下)居中:①line-height+height;(不适合多行文本)②vertical-ali...

2020-04-15 19:05:56 524

原创 mysql服务无法启动,ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)解决办法

很长时间没有用数据库了,之前在电脑上安装了mysql,但是许久不用,最近用起来却是问题多多,提示无法启动服务器, 却没有报任何错误。使用net start mysql 启动服务提示如下图: 使用mysql –console命令查看错误信息。如下:D:\Program Files (x86)\mysql\bin>mysqld –console 2018-01-27T07:04:33.1360

2018-01-27 16:21:00 20471 2

原创 软件测试流程图&Bug管理流程图

软件测试流程图: 缺陷(Bug)管理流程图:

2017-07-06 15:47:31 10347 1

原创 AVL树详解&面试题-判断一棵树是否是平衡二叉树

上次写了关于二叉搜索树的分析,但是二叉搜索树有一个缺陷,就是当插入一个有序(或接近有序)的序列时,二叉搜索树就相当于一个链表了,搜索效率会特别低。那么,如何来改进呢?这就引入了AVL树(高度平衡二叉树),那么下面我们一起来了解一下AVL树吧! AVL树的特征: 1、左右子树的高度差都不超过1; 2、左右子树都是AVL树; 3、每个节点都有一个平衡因子bf(blance fator ),其值为

2017-06-24 22:57:26 6021

原创 C++实现二叉搜索树(递归&非递归)

二叉搜索树(Binary Search Tree)的性质: 1、每个节点都有一个作为搜索关键码的key,并且所有节点的key都不相同。 2、左子树上的key值都小于根节点的key值。 3、右子树上的key值都大于根节点的key值。 4、左右子树都是二叉搜索树。 如下图为一颗二叉搜索树 实现: 二叉搜索树的插入: 二叉树的插入是根据要插入节点的key值找一个合适的位置插入节点,如果

2017-06-14 23:25:26 2669 1

原创 【剑指offer】用两个栈实现一个队列,用两个队列实现一个栈

问题1:用两个栈实现一个队列 问题描述及分析: 用两个栈实现一个队列。分别完成在队列尾部插入节点AppendTail和在队列头部删除节点DeleteHead的功能。 栈的特点是先进后出(FILO),而队列的特点是先进先出(FIFO),因此,尾部插入节点相当于入栈操作,很容易实现。但是头部删除节点比较麻烦,我们始终用stack1存储元素,用stack2作为临时空间来导出数据。当stack2为空时

2017-06-12 00:14:14 1331

原创 【剑指offer】第六题-重建二叉树

问题描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出其头节点。 问题分析: 在二叉树前序遍历中,第一个数字总是树的根节点的值。但在中序遍历中根节点则在中间,且左子树的节点的值在根节点的左边,右子树的节点的值

2017-06-10 12:46:00 321

原创 排序算法(四)冒泡排序及其优化

基本思路: 冒泡排序的基本思路是通过元素的两两比较不断将较大值(升序)或则较小值(降序)移动序列的后面,类似于气泡向上冒的排序算法。​ 1、比较相邻两个元素大小,如若不符合要求则交换元素; ​ 2、对整个序列做同样1的操作,最后的元素一定是当前比较的序列中最大(或最小)的元素; ​ 3、重复以上操作除了上一次遍历的最后一个元素。 图解(升序): 我们可以根据冒泡排序原理写出代码:void

2017-06-06 15:54:03 524

原创 动态规划求解-将字符串A变换为字符串B 所用的最少字符操作次数

问题描述: 设A 和B 是2 个字符串。要用最少的字符操作将字符串A 转换为字符串B。 这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B 所用的最少字符操作次数也称为字符串A到B 的编辑距离,记为 d(A,B)。 试设计一个有效算法,对任给的2 个字符串A和B,计算出它们的编辑距离d(A,B)。 思路:

2017-06-03 23:33:10 23798 4

原创 github提交代码避免输入用户名和密码的方法总结

前言 在大家使用github的过程中,一定会碰到这样一种情况,就是每次要push 和pull时总是要输入github的账号和密码,这样不仅浪费了大量的时间且降低了工作效率。在此背景下,本文在网上找了两种方法来避免这种状况,这些成果也是先人提出来的,在此只是做个总结。 1.方法一 1.1 创建文件存储GIT用户名和密码 在%HOME%目录中,一般为C:\users\Administr

2017-06-02 18:58:41 3428

原创 排序算法(三)堆排序原理与实现(小顶堆)

堆排序实际上是利用堆的性质来进行排序的,要知道堆排序的原理我们首先一定要知道什么是堆。 堆的定义: 堆实际上是一棵完全二叉树。 堆满足两个性质: 1、堆的每一个父节点都大于(或小于)其子节点; 2、堆的每个左子树和右子树也是一个堆。 堆的分类: 堆分为两类: 1、最大堆(大顶堆):堆的每个父节点都大于其孩子节点; 2、最小堆(小顶堆):堆的每个父节点都小于其孩子节点; 堆的存

2017-05-19 00:17:09 46385 14

转载 C++中容器总结

[转自]http://www.jb51.net/article/70341.htm#C++中的容器大致可以分为两个大类:顺序容器和关联容器。顺序容器中有包含有顺序容器适配器。 顺序容器:将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素。主要有vector、list、deque(双端队列)。顺序容器适配器:stack、queue和priority_queue。 关联容器:支持通过键

2017-05-16 17:40:27 500

原创 排序算法(二)选择排序解法及优化

选择排序的思想比较简单,它的工作原理是每次从待排序的序列中选择最大(或最小)的一个元素,放到序列的开头(或结尾),直到整个序列有序为止。 这种方法非常简单,代码如下:void SelectSort(int arr[], int len){ int i = 0; int j = 0; int min = 0; for (i = 0; i < len; i++)

2017-05-14 15:05:49 468

原创 用C++封装一个mysqlAPI

测试环境声明:CentOS6.5、mysql 5.1 在写代码之前我们应先学习一下mysql中的数据类型以及基本的函数,如下列举了我们今天要使用数据类型和函数的介绍: mysql中的基本数据类型: - MYSQL 该结构代表1个数据库连接的句柄。几乎所有的MySQL函数均使用它。不应尝试拷贝MYSQL结构。不保证这类拷贝结果会有用。 - MYSQL_RES 该结构代表返回行的查询结果(S

2017-05-07 09:38:05 5472 1

原创 mysql导入导出数据

将表导入到数据库: 数据库和表要存在,如果不存在先建立再导入。 (1)在控制台下操作: 将表数据test.sql导入到数据库中:[user@www ~]$ mysql -uroot -p dbname < /home/user/test.sql(2)使用source命令: 首先选择要导入的数据库:mysql>use dbname;导入数据:mysql>source /home/user/te

2017-05-03 15:40:01 385

原创 【Linux】grep命令的使用详解

简介: grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是Linux下一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 格式: grep [options] filename 选项:-a 不要忽略二进制数据。-A<显示列数> 除了显示符合范本样式的那

2017-04-30 00:31:47 889

原创 【Linux】正则表达式初识

正则表达式是什么? 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。简单来说,正则表达式就是以一种描述规则来进行字符串匹配的代码。 规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式。那么这些字符类、数量限定符、位置关系又是些什么呢?下面我们一起来看一下吧! 字符类:

2017-04-23 00:03:21 421

原创 mysql基础语句总结

显示数据库show databases;创建一个名为mydb1的数据库:create database mydb1( if not exists);创建一个使用UTF8字符集的mydb2的数据库(注意不是UTF-8):create database if not exists mydb2 character set UTF8;删除数据库mydb1drop databese (if ex

2017-04-16 18:34:41 868

原创 CentOS6.5下修改mysql密码以及解决MySQL ERROR 1045 (28000):

解决MySQL ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)和MySQL ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)修改mysql密码

2017-04-08 00:30:53 7572

原创 【Linux】eval命令的使用

eval可以读取一连串的参数,然后按照参数特性来执行。参数数目不限,彼此之间用分号隔开。 eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令;如果命令中含有变量的间接引用,则保证间接引用的语义。也就是说,eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。因此,eval命令适用于那些一次扫描无法实现其功能的变量。 eval 执行以下两个步骤:

2017-03-25 18:24:10 35150 1

原创 端口号的分类

什么是端口号?在网络技术上,端口一般有两种含义: 一种是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等;另一种是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于发送邮件的25号端口,用于FTP服务的21端口等等。今天我们要学习的就是TCP/IP协议中的端口号(以下所说到

2017-03-15 16:06:57 2039

原创 【网络】TCP中的四个计时器

TCP中有四种定时器(Timer,也称为“计时器”):重传计时器:Retransmission Timer坚持计时器:Persistent Timer保活计时器:Keeplive Timer时间等待计时器:Time_Wait Timer。1、重传计时器:当TCP发送报文时,就创建该特定报文段的重传计时器。可能发生两种情况:①若在计时器截止时间到达之前收到

2017-03-06 19:43:25 1862

转载 《理想的程序员》-一个程序员的顿悟

《来自: http://www.cnblogs.com/Sonet-life/p/4650226.html#3229723》从某群里分享的,虽然不知来自哪位大神,分享一下吧。  我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26 岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害怕被炒鱿鱼以及同事冷落白眼的三重压力下逆流而上,

2017-03-04 21:14:02 857

原创 可重入函数与线程安全

一、概念线程安全(Thread-Safe):被多个并发的线程反复调用时,他会产生正确的结果。可重入(Reentrant):当被多个线程调用的时候,不会引用任何共享数据。      任何线程不安全问题的根源都是“共享数据”。所以,不使用任何共享数据的函数(即:可重入函数)肯定是线程安全的。但这并不等于说,线程安全函数就是可重入函数。可重入和线程

2017-02-24 10:23:10 636

原创 【Linux】文件的权限管理及特殊属性-粘滞位(sticky bit)概述

(一)linux文件属性Linux文件属性不仅规定了文件的所有者(user)和所属组(group),还规定了所有者,所属组以及其他用户对该文件的权限。我们可以用 ls -l 或ls -al命令来查看这些属性。如下:第一列中包含文件的类型,以及文件所有者、所属组和其他用户对文件的权限。第一列第一个字符代表文件类型:上例中我们只看到“d”和“-”两种文件类型,除此之外的文件

2016-12-29 17:36:13 1358

原创 【Linux】stat命令查看文件的三个时间参数

在Windows中创建一个文件都会有相应的创建时间,修改时间,访问时间来记录文件的一些属性。在Linux中也不例外,文件也有三个时间来记录文件的变动,这三个时间分别是Modification time (修改时间)、Change time(状态改动时间)、Access time(访问时间)。下面我们就来了解一下这几个时间。(1)初始三个文件时间Modification time (

2016-12-26 14:55:26 4875

原创 排序算法(一)直接插入排序和希尔排序

我们知道如果数据按一定的排序标准进行排序,那么数据处理的效率也会随之提高。网上的排序算法不胜枚举,在这里我也整理了一些排序算法,和大家一起交流学习。

2016-11-30 00:04:49 1027

原创 约瑟夫环问题的链表实现

       据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从

2016-06-13 16:00:11 4457 2

原创 模拟通讯录系统的简单实现

题目要求:实现一个通讯录;通讯录可以用来存储1000个人的信息.每个人的信息包括:姓名、性别、年龄、电话、住址 等。实现功能:1. 添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系人信息6. 清空所有联系人7. 以名字排序所有联系人具体实现代码如下:#define _CRT_SECURE

2016-05-13 23:49:16 3610 2

原创 模拟实现库函数——printf

上次在博客中提到过可变参数列表的使用,今天我再次使用可变参数列表来模拟实现库函数printf。实现代码如下:如有不理解的地方请查看可变参数列表那篇博客#include #includevoid my_printf(const char *format, ...){ va_list arg; va_start(arg, format); while (*format) {

2016-05-13 22:37:19 849

原创 指针与数组

指针与数组的区别与联系 ,数组指针与指针数组,函数指针,函数指针数组,函数指针数组指针等的区分与使用

2016-04-27 18:33:03 592

原创 c语言 之 可变参数列表的应用

在函数原型中列出函数期望接受的参数,但是函数只能显示有限个参数,为了让一个函数可以在不同的情况下接受不同数目的参数,c语言中引入了可变参数列表的概念。可变参数列表是通过宏来实现的,这些宏定义在stdarg.h头文件中,这个头文件生命了一个类型va_list和三个宏va_start、 va_arg 和va_end 我们可以声明一个类型为va_list的变量与这几个宏配合使用来访问参数。下面来

2016-04-17 16:01:59 604

原创 c语言之模拟实现求子串(strstr)函数

strstr (str1,str2)函数是用来判断字符串str2是否是字符串str1的子字符串的函数,如果是,则返回str2在str1中出现的首字符地址,否则返回null。代码如下:#include #include char * my_strstr(const char *str, const char *substr){ assert(str);//断言提示出错位置 asse

2016-04-17 12:14:43 6088 3

原创 c语言 之求 Fibionacci 数列的前n个数

Fibionacci数列有如下特点:前两个数都为1,从第三个数开始,该数是前两个数之和。即:F1=1;(n=1)F2=1;(n=2)Fn=Fn-1+Fn-2;(n>2)下面给出几种求法:解法一:#include int fib(int n){ int fib1 =1; int fib2 =1; int fib = 1; int i = 0; while (

2016-04-11 23:26:02 1978

原创 c 语言之 模拟实现 strcpy 和 strcat 函数

今天我来给大家分享一段代码来模拟实现库函数中的strcpy 和 strcat 函数代码如下:#define _CRT_SECURE_NO_WARNINGS//这是为了消除scanf 函数带来的警告(我使用的是vs2015)#include #include char * my_strcpy(char *dest, const char * src){ assert(dest != NUL

2016-04-10 22:57:26 727

原创 c语言 之大端小端存储问题

我们都知道数据在计算机中的存储是以补码形式存储的。在计算机中,如果数据的高字节内容放在高地址处,低字节内容放在低地址处,我们称它为小端字节序;相反,如果数据的高字节内容放在底地址处,低字节内容放在高地址处,我们称它为大端字节序。例如: int n=1;它的原码,反码,补码都是 00000000 00000000 00000000 00000001它在计算机中的小端存储字节序为  00

2016-04-09 11:39:04 3002 1

原创 liunx 命令 之 文件与目录部分

cd【change directory】 进入个人的主目录cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd - 返回上次所在的目录 ls 【list】 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls-a :Linux上的文件以“.”开头的文件被系统视为隐藏文件,仅用ls命令是看不到

2016-04-07 11:31:16 629

原创 一道经典面试题---运动员跳水比赛结果

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。这道题我在网上也看到过很多版本的解法,但都不太满意,下面自己写出一种解法,希望大家参考指正:#include in

2016-04-06 21:43:15 1800

空空如也

空空如也

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

TA关注的人

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