自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 TCP协议

协议是存在于传输层,详细见我的文章传输层说到TCP协议,那么就要想到TCP的报头,TCP的可靠性和TCP的效率和粘包问题1 TCP协议报头16位源/目的端口号:表示数据是从哪个进程来到哪个进程去32位序号:表示发送数据的位置,每多发送一次数据,就多累加一次该数据字节数的大小 注:序列号不会从0或1开始,而是在建立连接时由计算机生成的一个随机数作为其初始值,通过SYN包发...

2018-08-27 11:14:49 722

原创 TCP/IP五层(四层)模型——传输层(UDP协议、TCP协议)

传输层传输层是TCP/IP五层(四层)模型的第二层,主要负责数据能够从发送端传输接收端1 端口号 端口号是一个2字节16为的整数 端口号用来标识一个进程,告诉操作系统,当前的这个数据要交给哪一个进程来处理 IP地址 + 端口号能够标识网络上的某一台主机的某一个进程(即套接字) 一个端口号只能被一个进程占用,而一个进程可以占用多个端口号 pid和端口号...

2018-08-24 16:47:55 1551

原创 TCP/IP五层(四层)模型——应用层

应用层应用层是TCP/IP五层(四层)模型的最顶层,主要负责程序间的沟通,如简单电子邮件传输(SMTP),文件传输协议(FTP),网络远程访问协议(Telnet)等,网络编程主要就是针对应用层HTTP协议——超文本传输协议1 HTTP协议介绍HTTP协议是程序员自己定义的一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。 HTTP协议...

2018-08-24 12:21:31 4953

原创 telnet not found????

最近在学计算机网络的知识,刚准备用我的Linux上个网,结果给我来了这么一句 发生了什么????????????????????? 居然没有这个命令。。。。。。。。。。。。又在root用户下查找了一下,果真没有 查找命令 rpm -qa telnet*于是下面是安装命令 yum list telnet* 查看telnet相关的安装包 yum insta...

2018-08-24 11:11:36 868

原创 TCP协议建立连接(三次握手)和断开连接(四次挥手)

首先先看下TCP的报头格式 发现在中间有一个6位的标志位(红色标出) 标志位字段 含义 URG 紧急指针是否有效;置为1表示要优先处理 ACK 确认号是否有效;设为1表示为确认应答报文(通常情况下会设为1,但是第一次的TCP不会设为1) PSH 提示接收端应用程序立刻从TCP缓冲区把数据读走(若接收端缓冲区数据长时间未处理,那么发送端将强...

2018-08-24 09:35:28 1149

转载 内部排序与外部排序

转载自:https://blog.csdn.net/hq942845204/article/details/80303762 本篇文章主要介绍内部排序与外部排序的知识,如果你和我一样还不知道内部排序和外部排序为何物的话,不妨看看我的理解正文由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,可将排序方法分为两大类:内部排序与外部排序。概念内部排序:待排序记录存放在计算...

2018-08-20 11:05:44 1023

原创 Java——排序(冒泡排序,选择排序、插入排序,快速排序,堆排序)

冒泡排序排序思想就像“冒泡泡”一样,从头开始,两个两个数作比较,将两个数中较大(较小)的数向后移,再比较下面两个数,依次将较大(较小)的数向后移,最终,将一组数中最大(最小)的数,移动到最后面,再从头开始,移下一个数 下面是一个栗子: 要排序数组(升序):{4,2,7,3,1} ———————————— 第一趟(交换四次):第一次:4与2比较,4大于2,交换两个数——{2...

2018-08-18 20:25:45 1869

原创 Java——单例设计模式

单例设计模式所谓单例模式,顾名思义,在使用单例设计时,单例对象的类必须保证只用一个实例存在单例模式思路一个类能返回对象的一个引用和一个获得该实例的方法(该方法一定是静态方法,且通常为getInstance()方法)。当调用这个方法的时候,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。同时将该类的构造方法定义为私有方法(...

2018-08-17 13:51:15 616

原创 数据库——索引、事务、存储引擎

索引索引是对某个字段进行排序的一种方式,对表中某个字段创建索引会创建另一种数据结构(二叉树),数据结构中保存着字段的值,而该值又指向与他相关的记录,这种数据结构是经过排序的,可以进行二分查找创建索引alter table 表名 add index(列名)索引分类主键索引(primary) 唯一性:一个表中只能有一个主键索引效率高:因查询效率高,为一个表中只能有一个索引...

2018-08-17 11:39:54 1046

原创 数据结构Java——几种查找方式(顺序查找,二分查找,插值查找,斐波那契查找)

顺序查找使用for循环来依次遍历,实现查找二分查找二分查找,又称为折半查找,查找的效率很高算法思想给定一串有序的序列,以这串序列的中间元素为基准, 若要查找元素 > 中间位置元素,说明要查找元素在序列前半部分 若要查找元素 < 中间位置元素,说明要查找元素在序列后半部分 这样使得每次查找的范围都将减少一半算法优缺点优点:查找的次数较少,查找速度快...

2018-08-15 19:31:45 1009

原创 Java——关于在字符串,数组,字符流中寻找只出现一次的问题

面试题50:第一个只出现一次的字符在一个字符串(0 <= 字符串长度 <= 10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置,如果没有则返回-1方法一:将字符串从第一个字符开始往后扫描字符串中的每个字符,若后面的字符串中没有发现重复的字符,那么这个字符就是只出现一次的字符 但该种方法的时间复杂度为O(n^2),因此要想一种更加高效的方法,使用一...

2018-07-29 19:07:39 819

原创 Spring学习——基于XML构建IoC容器

IoC容器的构建方式(1)基于XML配置方式(可以开启注释配置,通过注释配置Bean和装配工作)(2)基于Goovy脚本配置方式(DSL)(3)基于Java Config配置注解方式(通过Configuration和Bean注释)下面将讲解基于XML配置方式来构建IoC容器1  Bean的实例化方法(三种)1.1  构造方法实例化下面这种方法是默认类需要一个无参构造,其中的id是Bean的配置属性...

2018-07-14 13:17:57 650

原创 JavaSE——关于集合类的一些tips

之前在学校上课时已经学习过关于集合类的一些知识,但是这两天发现对于集合类的一些点还是不太清楚,很多内容很容易混淆在一起,在这里,我将一些我记不太清的点做一些整理集合结构图Java中的集合类都是由Java.util包提供由上图所示,Java集合类中最主要的是两个核心的接口:Collection和Map1  Collection接口:Collection接口有两个子接口,为Set接口和List接口(下...

2018-07-13 17:32:46 676

原创 Java实现二叉树的一些操作

之前写过关于C语言实现二叉树的一些操作这段时间正好在看Java,就将一些常见的二叉树问题转换为Java语言实现1.二叉树的先序、中序、后序、层序遍历(递归与非递归)先序遍历:二叉树的先序遍历顺序为:先打印根节点,再遍历左子树,最后遍历右子树递归思路:若二叉树为空,则直接返回空若二叉树非空,先打印根节点,再先序遍历左子树,再先序遍历右子树import Demo.TreeNode;//递归实现/...

2018-07-12 19:59:24 683

原创 一看就会的正则表达式

概念正则表达式(Regular Expression)是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。正则表达式基本要素1.字符类2.数量限定符3.位置限定符4.特殊符号字符类数量限定符位置限定符详细举例:(1)^和$匹配字符串“world aworld worlda aworldb world”中^world,匹配到了行首位置...

2018-07-11 18:32:30 493

原创 JavaSE——HashMap与HashTable

HashMap和HashTable都是集合类Map的子类HashMapHashMap是Map集合中最常用的子类1.什么是HashMapHashMap是继承AbstractMap,实现Map接口的一个采用哈希表来实现键值对的集合2.HashMap特点(1)底层实现在jdk1.8之前,底层是通过链表+数组实现在jdk1.8以后底层是通过链表+数组+红黑树实现(2)实现了Map接口的全部方法(3)Has...

2018-07-11 16:19:35 660

原创 Spring学习——框架介绍

一、Spring介绍1.Spring是一个开源框架,该框架的结构是分层架构,这是Spring框架的主要优势。2.Spring是以IoC、AOP为主要思想,在Spring框架中,通过配置创建类对象,由Spring在运行阶段实例化、组装对象IoC:Inversion of Control控制反转或反向控制AOP:Aspect Oriented Programming面向切面编程,其思想是在执行某些代码...

2018-07-10 17:18:21 525

原创 栈操作编程题

这几天在网上找了几道关于栈大的编程题,在这里总结一下1.请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。给定一个int[] numbers,其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。测试样例:[1,2,3,4,5]返回:[5,4,3,2,1]思路:首先需要...

2018-07-09 16:21:41 1880 2

原创 排序

 下面写一些关于排序的一些基本方法:1.冒泡排序思路:就像“冒泡泡”一样,从头开始,两个两个数作比较,将两个数中较大(较小)的数向后移,再比较下面两个数,依次将较大(较小)的数向后移,最终,将一组数中最大(最小)的数,移动到最后面,再从头开始,移下一个数 14 /************************************* 15 * 16 *冒泡排序 17...

2018-06-15 15:02:06 96

原创 布隆过滤器

1.初始化 8 void BloomFilterInit(BloomFilter* bf) 9 { 10 if(bf == NULL) 11 { 12 return ; 13 } 14 BitmapInit(&bf->bm,BitmapMaxSize);   15 bf->bl...

2018-06-15 14:35:17 55

原创 基于C语言实现位图

之前写过哈希表的一些操作,下面来介绍哈希表的一种变形——位图位图是用来表示数字是否存在的情况位图的优点是能够节省很多空间,但是缺点就是只能够表示数字是否存在...

2018-06-15 14:26:28 1970

原创 Java SE——实现多人聊天室

实现功能:1.实现用户注册上线,下线2.实现群聊和私聊功能3.实现统计当前在线人数实现思路:1.首先,要实现服务端与客户端之间的连接这里是使用套接字建立TCP连接:(1)服务器端先实例化一个描述服务器端口号的ServerSocket对象(2)客户端要创建Socket对象来连接指定的服务器端(3)服务器端调用ServerSocket类的accept()方法来监听连...

2018-06-09 16:17:51 2132

原创 基于C语言实现哈希表(开散列)

上一篇博客写了基于线性探测实现哈希表的一些方法,但若是负载因子较大时,哈希表的查找数据效率还是会很低,下面将使用开散列来实现哈希表的一些操作开散列又称为链地址法(开链法)首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个集合称为一个桶,桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中例如:数据集合{10,51,14,33,18,29},哈希函数Hash...

2018-05-29 10:38:21 1966

原创 基于C语言实现哈希表(线性探测)

之前在写过的很多的结构中都实现过搜索功能,但是不论是顺序搜索还是搜索二叉树,由于元素的存储位置和元素各关键码之间没有对应的关系,所以在查找一个元素的时候必须要经过关键码的多次比较。因此搜索的时间复杂度很难能够达到O(1)。但是如果有一种存储结构,通过某种函数使元素的存储位置与他的关键码之间能够建立一一映射的关系,那么就能够直接地查找到需要地元素,时间复杂度就达到了O(1),那么这种结构就是哈希表。...

2018-05-28 17:24:26 1636

原创 Java SE——Collection接口与其子接口

一、Collection接口1、Collection的接口定义:public interface Collection<E> extends Iterable<E>2、Collection接口的方法(1)add(E e):向集合中添加数据(2)addAll(Collection <? extends E> c):向集合中添加一组数据(3)clear():清空集合...

2018-05-28 14:32:32 606

原创 Java SE——集合类(集合输出)

集合输出有四种方法:Iterator、ListIterator、Enumeration、foreach1.Iterator——迭代输出只要是Collection接口的子类对象,就一定有个Iterator(),取得Iterator对象用于集合类的输出(1)hasNext():判断是否有下一个元素(2) next():取得当前元素(3)remove():删除元素注:在进行集合输出的时候不要修改集合中元...

2018-05-26 15:24:11 784

原创 JavaSE——集合类(Properties类)

属性文件(资源文件):*.properties文件,在这种文件里面其内容的保存形式为"key=value",通过ResourceBundle类读取的时候只能读取内容,要想编辑其内容则需要通过Properties类来完成,这个类是专门做属性处理的。Properties是Hashtable的子类Properties类的常用操作方法(1)setProperty(String key, String va...

2018-05-26 14:53:48 556

原创 JavaSE——IO(File文件与输入输出流)

一、File文件操作类1.File类的使用java.io.File类是一个普通的类,直接产生实例化对象即可。如果要实例化对象则需要使用到两个构造方法public File(String pathname) public File(String parent, String child),设置父路径和子路径(1)创建一个新文件 createNewFile():返回值为boolean...

2018-05-26 11:21:18 1042

原创 二叉树的一些常见基本面试题

1.使用非递归地方式来完成二叉树的先序、中序、后序遍历(1)使用非递归地方式来完成二叉树的先序遍历通过栈来实现首先先将根节点入栈,然后循环,取出栈顶元素为当前元素,并打印当前元素,再将当前元素的右子树和左子树先后入栈,再重复之前的操作,直到栈为空,循环结束,详细操作见图(竖向来看)340 //先序341 void TreePreOrderByLoop(TreeNode* root)342 {...

2018-05-13 18:30:03 189

原创 基于C语言实现二叉搜索树

二叉搜索树的特点是左子树<根节点<右子树,并且任何节点的左右子树的高度差不超过1,搜索二叉树与满二叉树无关,只要满足上面的条件即可1.初始化操作此时传入的为根节点的指针的指针 40 //初始化 41 void SearchTreeInit(SearchNode** pRoot) 42 { 43 if(pRoot == NULL) 44 { 45 ...

2018-05-13 16:48:44 119

原创 基于C语言实现堆的一些操作

堆是一个完全二叉树,堆分两种,一种为小堆,一种为大堆小堆是指对于这个树的任意任意一个子树来说,子树的根节点都要小于左右孩子节点的值,小堆的根节点是这个树的最小元素大堆是指对于这个树的任意任意一个子树来说,子树的根节点都要大于左右孩子节点的值,大堆的根节点是这个树的最大元素1.对堆进行初始化操作其中有一个比较函数Compare,来比较确定是大堆还是小堆 16 //初始化,决定是大堆还是小堆 17 ...

2018-05-13 16:18:10 827

原创 JavaSE——反射与单级VO操作

希望能对程序做简化,输入字符串"属性名称:属性值|属性名称:属性值|属性名称:属性值|....",就可以将类中的属性设置好。希望通过此程序实现任意的简单Java类的属性设置。所有的操作是通过TestDemo类调用EmpAction类实现的,而EmpAction类的主要作用是在于定位要操作的属性类型。同时该程序应该符合于所有简单的Java类开发形式,因此对于我们的设计而言必须有一个单独的类(Bean...

2018-05-12 16:09:26 138

原创 Java SE——反射的五大核心类

一、反射与父类——Class1.取得父类包名称    getPackage()2.取得父类的Class对象    getSuperclass()3.取得实现的所有分类接口    getInterfaces():返回值为数组package Practise;interface IFruit {}interface IMessage{}class CLS implements IFruit,...

2018-05-11 17:54:18 343

原创 JavaSE——多线程同步的两大方式

实现多线程同步有两大方式——synchronized和lock同步是指所有的线程不是一起进入到方法中执行,而是按照顺序一个一个进来的一、synchronized处理同步问题1.同步代码块使用同步代码块必须要设置一个要锁定的对象,一般为this该方法进入到方法中的线程依然可能有多个,但是,进入到代码块中只能有一个线程//使用同步代码块来实现多线程的同步class MyThread implemen...

2018-05-05 14:57:13 556

原创 基于C语言实现二叉树

树是一种数据结构,是由n (n>=1)个有限点组成一个具有层次关系的集合而二叉树是每个结点最多有两个子树的树结构下面是关于二叉树的一些简单操作在之前写过的链表中,是用链表的头节点的指针来表示一个链表,那么在二叉树中,同样是使用根节点的指针来表示一个二叉树 4 typedef struct TreeNode 5 { 6 TreeNodeType data; 7 s...

2018-05-02 21:20:54 475

原创 Java SE——创建线程的四种方式

 创建线程的方式有四种:1.继承Thread类2.实现Runnable接口3.实现Callable接口4.使用线程池在这四种方法中,根据《Effective Java》一书中指出优先使用线程池在继承Thread类和实现Runnable接口两种方法中,使用Runnable接口更加推荐(不会有单继承局限的问题)若想要线程最终返回结果,使用实现Callable接口(只有这...

2018-04-26 14:47:45 539

原创 Java SE——泛型

一、JDK1.5以后的一些新特性1.可变参数定义public [static] [final] 返回值 方法名称([参数类型 参数名称][参数类型 ... 参数名称]){}注:如果要传递多类参数,可变参数一定放在最后,并且只能设置一个可变参数//计算任意参数的整数求和public class Test1 { public static void main(String[] args) { ...

2018-04-25 18:41:21 84

原创 基于C语言实现迷宫

说到迷宫,首先一定要有一个迷宫的地图,让后还要规定寻找迷宫出口的一些规则关于迷宫的地图,在这里我创建了一个二维数组来表示迷宫地图,并且约定(1)位置0为墙(即不能走的地方),位置1为路(2)走到边界点的位置,就为出路(3)按照上、右、下、左(顺时针)的顺序来探测下一步出路,若下一步路,就往下走(4)若当前点可以走,就将当前点标记为2,为了区分位置1,防止不知道自己走了重复的路首先先来创建迷宫地图并...

2018-04-21 11:44:58 7904 2

原创 基于Java实现不带头节点的双向链表的操作

本文主要是基于Java来实现不带头节点的双向链表的一些操作首先要创建一个类Node来描述链表的节点其中data为链表节点的值,prev和next分别是当前节点的前一个节点和后一个节点 private class Node { private Object data; private Node prev; private Node next; private Node(Object...

2018-04-20 16:35:08 804

原创 JavaSE——抽象类与接口

一、抽象类1.抽象类的定义抽象类:只是在普通类的基础上扩充了一些抽象方法,使用abstract关键字定义类,来表示抽象类抽象方法:指只声明而未实现的方法(即没有方法体),所有抽象方法要求使用abstract关键字来定义abstract class Person//抽象类{ private String name; public String getName() {//普通方法 retur...

2018-04-17 22:57:22 94

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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