自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

芮萌萌的博客

正面 积极

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

原创 java集合之Map的常见实现类(1)---HashMap

本篇文章我们主要来看看Map的相关内容。需要学习Collection详解的可以查看我的另一篇文章:java集合之CollectionMap1.1 Map 简介什么是Map?Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样...

2020-01-19 16:53:55 1896 2

原创 java集合之Collection

Collection集合1.1 集合概述集合是什么?集合是java中提供的一种容器,可以用来存储多个数据。集合和数组既然都是容器,它们有什么区别呢?1、数组长度固定,集合长度可变。2、数组中只能是同一类型的元素且可以存储基本数据类型值。集合只能存对象,类型可以不一致。1.2 集合框架JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解...

2020-01-04 16:28:37 1206

原创 毕业设计--相关优秀博客论坛与文章

javaweb学习总结java web应用和开发界面设计javaweb开发中Tomcat的三种部署项目的方法Tomcat服务器的学习1Tomcat服务器的学习2HTTP协议浅谈MVC设计模式了解MVCUML建模入门1UML建模入门2UML教程药房管理系统设计实例当前国内宠物医院管理现状的调研医院药物管理系统的设计与实现中医院药品管理信息系统设计与实现2018宠物医院市...

2019-04-23 20:54:20 627

原创 连续子数组的最大和

一个数组中,既有正数,也有负数,计算出他的子数组和的最大值。思路: 我们从头开始遍历数组,遍历到数组元素 arr[ i ] 时,连续的最大的和 可能为 max( dp[ i -1 ] ) + arr[ i ] ,也可能为 arr[ i ] ,做比较即可得出哪个更大,取最大值。时间复杂度为 n#include <iostream>using namespace std;i...

2018-09-14 10:07:37 246

原创 IP协议

IP协议简介IP协议是位于网络层的协议,首先我们要知道网络层的功能:负责为数据选择合适的路径进行传输。 而IP协议的功能是寻址和路由选择,根据对方的IP地址,选取最佳路径传输信息。 IP协议特点:不可靠:IP协议只是尽自己最大可能传输,可靠性由上层协议(TCP)负责无连接:传输之间不会建立会话IP数据包图解: 网段划分:IP地址分为两个部分, 网络号和主机号 网...

2018-09-06 09:10:24 1349

转载 游戏服务器:到底使用UDP还是TCP

 在编写网络游戏的时候,到底使用UDP还是TCP的问题迟早都要面对。   一般来说你会听到人们这样说:“除非你正在写一个动作类游戏,否则你就用TCP吧” 或者是 “你能够在MMO游戏中用TCP,因为魔兽世界就用的TCP!”   遗憾的是,这些观点都没有反映这个问题的复杂性。一、背景   首先,说明一下,我之前主要是用TCP进行网络编程。我曾为一个流行的在线纸牌游戏编写服务器了好几年,在高...

2018-09-04 16:58:44 5021 1

原创 UDP协议

UDP协议类似于我们之前的写信通信方式。 UDP协议的特点:无连接:相对于TCP,UDP在传输数据之前不会进行建立连接,自然就没有释放连接尽最大努力交付:无法保证数据能准确的送到目的主机面向数据报:也就是说UDP协议将应用层传输下来的数据封装在一个UDP包中,不进行拆分或合并。因此,运输层在收到对方的UDP包后,会去掉首部后,将数据原封不动的交给应用进程。没有拥塞控制:因此UDP传送...

2018-09-04 16:57:44 485

原创 Python基础知识归纳

在之前的文章中,我们学习了常见的socket API,接下来这篇文章,我们通过最简单的服务器/客户端程序的实例来学习soket API,实现一个简单的阻塞式的网络聊天工具。TCP服务器:server.c 的作用是接受client的请求,并与client进行简单的数据通信server.c:TCP客户端:client.c的作用是连接server,并向server发起通信请求...

2018-09-04 15:25:28 287

原创 八大排序算法之交换排序

在之前两篇文章中,我们学习了插入排序和选择排序,八大算法之插入排序,八大算法之选择排序,这篇文章,我们来了解一下交换排序。 常用的交换排序有冒泡排序和快速排序,主要思想就是交换。1.冒泡排序基本思想:每相邻两个数比较,若大小与要排序顺序不同,则交换。 将序列当中的左右元素,依次比较,保证右边的元素始终大于左边的元素( 第一轮结束后,序列最后一个元素一定是当前序列的最大值;) 对序...

2018-09-04 15:24:24 922

原创 八大排序算法之选择排序

上一篇博客我们学习了插入排序之直接插入排序和希尔排序,八大排序算法之插入排序。 这篇文章我们来学习选择排序。 常见的选择排序有直接选择排序和堆排序。选择排序的基本思想就是从每一趟(比如第i趟)从其之后的n-i个待排序数据中找到关键码最小的数据,作为有序数据的第i个元素。当n-2趟排完之后,只剩下一个待排序数据,就不用进行选择了。1.直接选择排序基本思想:比较+交换 1)首先在未排...

2018-09-04 14:04:17 559

原创 八大排序算法之插入排序

在数据结构中,排序算法是处理数据经常遇到的,而排序又分为内排序和外排序。内排序是指排序期间,数据放在内存进行排序。外排序是指所要处理的数据量太大,不能一次放在内存中,排序过程中需要不断进行内外存之间移动的排序。选择合适的排序可以帮我们减少一些时间或者空间上不可避免的开销。 我们所说的八大排序算法,都是属于内排序。 插入排序常用的有直接插入排序和希尔排序。排序算法的基本思想是:每一步都待排序...

2018-09-04 10:08:24 849

原创 敏捷开发扫盲篇

在90年代末期,传统软件开发的方式因为其繁杂的过程,以及对文档的过于严格的要求,造成了很大程度上的效率下降,也就是人们所说的“重型化危机”。因为这一原因,人们开始反思传统方法的利弊,并对其弊端进行了改进,提出了敏捷方法。2001年2月,由Martin Fowler,Jim Highsmith等17位软件开发专家起草的敏捷宣言发表,敏捷联盟成立。敏捷开发作为一种新的方法正式诞生。敏捷宣言中所表述...

2018-08-23 10:26:27 377

原创 [剑指offer] 翻转字符串

题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。代码实现如下:...

2018-08-22 20:56:55 447

原创 [剑指offer] 替换空格

题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。代码实现如下:class Solution {public: void replaceSpace(char *str,int length) { if(str==NULL||length<=...

2018-08-22 20:19:28 192

原创 HTTPWeb服务器---HTTP整体设计框架

整个项目采用B/S模式(浏览器-服务器模式),通过浏览器发送的method(只要包含GET和POST两种方法),server对此进行响应,最终通过html显示所得到的结果。 因为服务器同时处理多条连接,因此采用了多线程的结构。HTTP是在TCP之上,它负责在发送端“生成针对目标Web服务器的HTTP请求报文”和在接收端“对对Web服务器请求的内容进行处理”,传输功能是由TCP完成的,因此首先...

2018-08-21 12:13:36 2711

原创 HTTP协议

HTTP简介HTTP(Hyper Text Transfer Protocol)是应用层上的协议,我们称之为超文本传输协议,是用于从Web服务器传输超文本到本地浏览器的传送协议。 HTTP是基于TCP/IP协议来传输数据。(HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。) 浏览器作为客户端向web服务器通过url...

2018-08-21 11:58:39 344

原创 [LeetCode] Same Tree 判断两颗树是否相等

题目:给定两颗二叉树,写一个函数判断这两棵树是否相等。如果两棵树的结构和各节点中保存的值是相等的,则认为这两棵树相等。思路:采用先序遍历的方法,从上到下递归考察各节点。 在任意一对节点的比较中,如果左右枝是否为空的属性和节点中的val值不相等,则认为两棵树不是同一棵树,否则继续考察。如果遍历结束后仍然不能证明这两棵树不是同一棵树,则这两棵树就是相等的 实现代码如下:/...

2018-08-21 09:36:17 541

原创 [LeetCode] Recover Binary Search Tree 复原二叉搜索树

题目:Two elements of a binary search tree (BST) are swapped by mistake.Recover the tree without changing its structure.Note:A solution using O(n) space is pretty straight forward. Could you dev...

2018-08-21 09:33:41 184

原创 [LeetCode] Validate Binary Search Tree 验证二叉搜索树

题目:Given a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:The left subtree of a node contains only nodes with keys less than the node's key....

2018-08-21 09:31:06 257

原创 [leetCode] Binary Tree Inorder Traversal

题目:Given a binary tree, return the inorder traversal of its nodes' values.For example:Given binary tree {1,#,2,3}, 1 \ 2 / 3return [1,3,2].Note: Recursive solution is trivi...

2018-08-21 09:27:57 256

原创 [leetCode] Unique Binary Search Trees

在数据结构中,排序是处理数据的重要手段之一,而排序分为内部排序与外部排序。

2018-08-21 09:11:02 140

原创 C++ —模拟实现 string类

String类:标准库类型string类表示可变长的字符序列,定义在std中,专门用来管理字符串,下面一起看下它的重要考点。一:浅拷贝:class String{public: String(const char* pStr = "")//构造函数 :_pStr(new char[strlen(pStr)+1]) { if(0 == *...

2018-07-26 09:54:10 413

原创 常见字符串函数的模拟实现

模拟实现strlenint my_strlen(const char* str){ int count = 0; while (*str) { count++; str++; } return count;}模拟实现strcpychar* my_strcpy(char* dst, char* src){ ...

2018-07-23 12:13:58 214

原创 (C语言)内存操作函数

memcpyvoid* memcpy(void* dest,const void* src,size_t num)功能:函数memcpy从src的位置开始向后复制num个字节的数据到dest的内存位置 说明:这个函数在遇到’\0’不会停下来 如果src与dest任何的重叠,复制结果都是未定义的 memmovevoid* memmove(void* dest,c...

2018-07-23 11:22:05 4531

原创 (C语言)常见字符函数和字符串函数

我们都知道,在C语言里有string.h这个头文件,但是C语言里没有string这个类型。 字符串通常放在常量字符串中或者字符数组中,字符串常量适用于那些对她不做修改的字符串函数。 string.h这个头文件里声明的函数原型也全是针对char数组的种种操作。 直到C++中才出现了string这个类 这篇文章就简单整理一下C语言中处理字符、字符串的库函数。strlen size...

2018-07-23 10:49:50 82366 5

原创 数组相关题目

在面试过程中,有关于数组的题很常见,今天我们就来总结关于数组的常见面试题。 1.二维数组中的查找在一个数组中,每一行都按照从左至右递增、从上到下递增的顺序排列,请完成一个函数,输入这样一个二维数组和整数,判断这个整数是否在数组中。//二维数组实际上是连续存放的bool Find(const int *a, int x, int y, int &key){ asse...

2018-07-23 09:27:44 1058

原创 栈的基本概念及顺序栈上的操作

栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表。栈和队列被广泛应用于各种程序设计中。 栈的基本概念栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。   (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。   (2)当表中没有元素时称为空栈。   (3)栈为后进先出...

2018-07-14 18:20:37 1017

原创 队列基本概念及顺序队列上的操作

队列的基本概念只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表 进行插入操作的一端称为队尾(入队列) 进行删除操作的一端称为队头(出队列) 队列具有先进先出(FIFO)的特性 顺序队列1、队头不动,出队列时队头后的所有元素向前移动 缺陷:操作时如果出队列比较多,要搬移大量元素 2、队头移动,出队列时队头向后移动一个位置 如果再有F、G进行入...

2018-07-14 16:45:28 4419

原创 二叉树的基本操作

定义二叉树结构typedef char BTDataType;typedef struct BinTreeNode{ BTDataType _data;//当前节点值域 struct BinTree* _left;//指向当前节点左孩子 struct BinTree* _right;//指向当前节点右孩子}BTNode,*PBTNode; 二叉树的遍...

2018-07-14 16:12:46 322

原创 二叉树的基本概念

二叉树的概念一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节 点加上两棵分别称为左子树和右子树的二叉树组成特点:每个结点最多有两棵子树,即二叉树不存在度大于2的结点 二叉树的子树有左右之分,其子树的次序不能颠倒 因此:二叉树是通过上述5中形式的组合或嵌套而形成 满二叉树&完全二叉树满二叉树:在一棵二叉树中,如果所有分支结点都存在左...

2018-07-14 11:43:38 500

原创 链表与顺序表的优缺点比较

顺序表优点: 1.尾插效率高,便于随机访问 2.cpu缓存利用率高 3.存取速度高效,通过下标来直接存储缺点: 1.不利于插入和删除操作 2.不可以增长长度 链表优点: 1.物理存储单元上非连续,而且采用动态内存分配,能够有效的分配和利用内存资源; 2.节点删除和插入简单,不需要内存空间的重组。 缺点: 1.不能进行索引访问,只能从头结点开始顺序查找...

2018-07-14 10:56:03 8229

转载 判断两个链表是否相交并找出第一个相交节点

引言:链表问题是数据结构中的常见问题,对于面试、笔试都有很大的作用,那么如何判断两个链表是否相交并找出第一个相交节点?分析:找出两个链表的交点首先就是判断链表是否相交,那么首先来看什么是两个链表相交?一、什么是链表相交?数据结构的链表定义中存储了指向下一个元素的指针,如果当两个链表有交点时,即两个链表会在各自链表中的某个结点,同时指向了相同的下一个结点,即如下图所示: 图中...

2018-07-14 09:14:06 1802

原创 单链表经典面试题详解

面试官通过考察应聘者的编程语言、数据结构和算法来判断应聘者是否具备扎实的基础知识。而单链表又是数据结构中最基本的知识。在之前的文章中,我们已经介绍过了单链表的基本功能的代码实现,下面我们就基于基本的功能,来实现一些关于单链表的经典面试题的代码编写。链表结构定义:typedef int DataType;typedef struct LinkNode{ DataType...

2018-07-14 09:03:07 390

原创 C语言实现不带头节点的单链表

在上两篇文章中,我们介绍了基于静态数组和动态数组的顺序表,顺序表频繁查询而插入删除动作少的情况下,顺序表也适用于进行尾插的时候,因为相对于链表而言,顺序表在进行尾插时,顺序表不需要通过遍历来找到最后一个插入点,比较而言,顺序表尾插效率高。 但是,在进行头插和中插时,顺序表需要将插入元素位置之后的元素整体后移才能插入数据,这样做在有大量插入删除场景下即为麻烦且效率低,因此,提出了链表的思想。而链表...

2018-07-11 20:45:17 15117 1

原创 动态顺序表的基本操作

上一篇文章静态顺序表的基本操作,实现了静态顺序表的基本操作,不难发现静态顺序表有诸多缺陷,首先,进程中,需要开辟一大块空间供动态顺序表存储数据用,如果存储的数据不多(结点不多),会浪费很多内存;如果开辟空间比较少,而存储数据较多,又会存在数据存不下的情况,这都不是我们想要的,建立在这样的基础上,动态顺序表的就出现了,先来看一下动态顺序表的结构体:动态顺序表的定义:typedef in...

2018-07-11 10:12:21 911 1

原创 浅析红黑树(RBTree)原理及实现

我们在上一篇博客认识到了平衡二叉树(AVLTree),了解到AVL树的性质,其实平衡二叉树最大的作用就是查找,AVL树的查找、插入和删除在平均和最坏情况下都是O(logn)。AVL树的效率就是高在这个地方。如果在AVL树中插入或删除节点后,使得高度之差大于1。此时,AVL树的平衡状态就被破坏,它就不再是一棵二叉树;为了让它重新维持在一个平衡状态,就需要对其进行旋转处理, 那么创建一颗平衡二叉树的成...

2018-07-10 12:13:05 96154 52

原创 平衡二叉搜索树(AVL)详解

1.二叉搜索树(Binary Sort Tree)二叉搜索树,又称之为二叉排序树(二叉查找树),它或许是一棵空树,或许是具有以下性质的二叉树:若他的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别是二叉搜索树 二叉搜索树的这种特性,使得我们在此二叉树上查找某个值就很方便了,从根节点开始,若要寻找的值...

2018-07-09 17:53:13 38456 5

原创 旧键盘打字问题

题目描述:旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出 肯定坏掉的那些键。输入描述:输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。输出描述:按照发现顺...

2018-06-30 09:44:50 261

原创 算法题:到底买不买

题目描述:小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如,YrR8RrY是小红想做的珠串;那么ppRYYGrrYBR2...

2018-06-30 09:20:48 371

原创 C++之继承

从面向对象的程序设计的观点来看,继承表达的是对象类之间的相互关系。这种关系使得某类对象可以继承另外一类对象的特征和能力。如果一类对象继承了另一类对象的特征和能力,这个类就叫做所继承类的派生类(Derived类),被继承的类就叫做基类(Base类)。继承是一个进程,通过继承,一个对象可以获得另一个对象的属性(包括函数),并可向其中加入属于自己的一些特征。继承机制是面系对象程序设计使得代码可以复用...

2018-06-30 08:26:08 431

空空如也

空空如也

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

TA关注的人

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