自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP详解

计算机网络 在如今的社会中,我们无时无刻不在使用着网络,如此重要的一个网络,其中的工作原理以及细节是怎样的呢? 怎样才叫学好计算机网络了呢?我认为就是明白了从一个数据包的发送之前到发送之后的细节,最终到达目的地。 我们所熟知的网络是一个巨大的分组交换网络,从发送方发出的数据可能被分为多个数据包,然后通过路由器的存储转发,最终到达接收方。 TCP/IP参考模型 网络是有分层的,底层给上层提供服务,上层使用下层提供的服务来实现自己的功能。以TCP/IP 5层模型为例来观察网络结构: 从底向上看

2021-07-16 23:18:05 756 2

原创 关于Java中线程的总结

操作系统 什么是操作系统? 操作系统就是一个硬件之上的软件。 为什么要有操作系统? 对于一个只有硬件的计算机,同样也可以让他去执行任务,但是一次只能执行一个任务,或者是很少的任务,效率也低,同时计算机慢慢从军队中走入人们的生活,多用户也变成了需求,而计算机硬件完全有能力去做,硬件们蕴含着巨大的潜能,迫切需要一个管理者 —— 操作系统就慢慢被发明。 操作系统是一个做管理的软件。 操作系统管理什么? 操作系统主要管理的是硬件和软件。 硬件:CPU、内存、硬盘、GPU、各种外设 软件:任务/

2021-06-20 21:01:29 137

原创 Java类的初始化顺序

类的初始化顺序 实例属性的初始化 实例属性就是,类的成员变量/实例变量。 初始化方式 定义时初始化 构造代码块初始化 构造方法初始化 public class A { int a = 10;//定义时初始化 { a = 20;//构造代码块初始化 } public A() { a = 30;//构造方法初始化 } } 初始化顺序 定义时初始化和构造代码块初始化是首先被执行的 他们两个谁先出现(根据代码的行数判断)就先执行

2021-05-08 16:32:55 180

原创 关于JDK1.5之后的Integer的比较,以及valueOf缓冲对象

Integer的比较 之前做了牛客的一道选择题,发现了这个,在这里总结总结,上题: 在jdk1.5之后,下列 java 程序输出结果为______。 1. int i = 0; 2. Integer j = new Integer(0); 3. System.out.println(i == j); 4. System.out.println(j.equals(i)); 分析如下(下面的分析只讨论自动拆装箱的情况,不考虑new新对象的情况): 基本型和基本型封装型进行==运算符的比较,基本型

2021-05-05 17:13:14 421

原创 Java中几个重要的关键字

Java中重要的关键字 static static可以可以出现的位置: 修饰成员变量:静态属性 修饰成员方法:静态方法 修饰代码块:静态代码块 修饰内部类:静态内部类 注意: static不可修饰局部变量!!! 被static修饰的语句,都有一个共同的特点,都与这个类所构建的对象没有关系了,他是独一份的。例如:属性是每个对象所独有的,而静态的属性是被所有对象所共享的(这一点可以泛化的去理解static修饰的任何语句)。 修饰属性 当static修饰属性的时候,该属性就会变成静态属性,静态属性是所有对象

2021-04-21 20:25:35 198 2

原创 HashMap的实现(Java)

HashMap的实现 HashMap是一个非常重要的类,得益于它的插入,删除,查询等时间复杂度都是O(n)的,如果运用合理,那么会使得你的算法或者程序很快。因此,亲手去写一遍HashMap,理解会更牢固一些。 public class MyHashMap { private Node[] array;//哈希表 private int size;//元素个数 static class Node {//内部类,节点 public String key;

2021-04-17 22:02:03 258

原创 二叉搜索树及其实现(Java)

二叉排序树及其实现 二叉排序树的定义 它是一颗二叉树 任一节点的左子树上的所有节点的值一定小于该节点的值 任一节点的右子树上的所有节点的值一定大于该节点的值 特点: 二叉排序树的中序遍历结果是有序的(升序)! 实现一颗二叉排序树 public class BST { static class Node { private int key; private Node left; private Node right; public

2021-04-15 08:37:30 223

原创 7大排序算法(Java版)

7大排序 冒泡排序: 总共有n个数,那么需要进行的比较次数就是n-1次(每一趟可以排好一个数,最终剩下一个的时候,就不需要在进行比较了) 复杂度: 时间: 最优:O(n)在已经有序的情况下,只需要扫描一遍 最差/平均:O(n^2) 空间:最优/最差:O(1) public static void bubbleSort(long[] array) { int length = array.length; //进行n-1趟冒泡 for (int i = 0; i < lengt

2021-04-14 11:14:00 136

原创 二叉树的一个实际应用-堆(Java)

堆 认识了二叉树,也学会了一些遍历算法(DFS、BFS),可是二叉树可以干什么呢,那么其中一个实际应用他来了-堆(Heap). 堆的特点 堆是完全二叉树(逻辑上)。 堆的底层实现,其实是顺序表(元素顺序为二叉树的层序遍历,可以抽象看成一颗树)。 分为大顶堆/小顶堆两种。 大顶堆:树中的每一个元素都是≥他的孩子们的。 小顶堆:树中的每一个元素都是≤他的孩子们的。 应用: 由于在大/小顶堆的每一个节点都是≥/≤他们的孩子们的。因此,堆可以在一组元素中,快速的定位最值(堆顶元素),大顶堆定位最大值,小

2021-04-10 16:51:10 947

原创 关于二叉树的一些算法(Java实现)

关于二叉树的一些算法 1.二叉树的前序遍历(递归) class PreorderTraversal { public List<Integer> list = new ArrayList<>(); public List<Integer> preorderTraversal(TreeNode root) { if(root == null){//如果给定为空树,那么直接返回null即可 return new Ar

2021-04-02 22:40:31 256

原创 ArrayList 和 LinkedList

ArrayList 和 LinkedList 首先在数据结构中,有线性结构和非线性结构。这里来讲一下线性结构,即线性表中的顺序表和链表。顺序表和链表在Java中分别有个代表,就是ArrayList和LinkedList。 顺序表->ArrayList: 顺序表:采用顺序存储结构(在内存中用一块地址连续的存储空间按顺序存储线性表的各个元素)的线性表称为顺序表。 ...

2021-03-26 22:40:40 131

原创 Java中的类和对象

Java中的类和对象引用什么是引用 引用 什么是引用 我们知道Java中,有两大类数据类型: 基本数据类型(byte,int,short,long,char,double,float,boolean) 引用数据类型(String,Scanner,*[]数组等等) 基本数据类型就是最简单的,这里就不多说了。 那引用类型的数据,是如何使用的呢? 这些引用类型的数据被定义出来之后,主要的内容都是不是存放在内存的栈区了,我们就不能去顺序的访问这一段内存了,那么我们该如何找到这一片区域呢? 引用就此而生,它是一种

2021-01-24 23:29:11 189

原创 C语言文件操作

C语言文件操作文件文件名文件类型文件缓冲区什么是文件缓冲区为什么存在文件缓冲区缓冲区的刷新方式缓冲区的刷新时机文件指针文件的打开与关闭C语言默认会打开的文件(设备)文件的顺序读写文件的随机读写ftellfseekrewind文件的结束判定 文件 文件的概念实际是是非常广的,在程序员看来,万物皆文件,显示器是文件,键盘鼠标是文件,网络也是文件,网卡也是文件,等等···都是文件。我们现在就暂且就先把文件理解为我们接触最多的磁盘上的文件。在程序设计中,一般谈的文件有两种:程序文件和数据文件。 程序文件: 包

2020-12-20 22:16:39 558

原创 C语言-动态内存管理

C语言动态内存管理为什么存在内存分配动态内存函数mallocfreecallocrealloc经典笔试题目 为什么存在内存分配 首先,在了解一个东西的时候,我们需要先知道,为什么存在?每一个事物的存在都是有它的意义的。我们以往定义一个变量是这样的: int main(){ int a; float b; double c; char d; return 0; } 我们知道上面开辟的这些变量都是在栈上开辟的。他们都是在main函数的栈帧上开辟的。 在栈上开辟空间有两个特点: 空间开辟大小是固

2020-12-18 16:03:32 243

原创 C语言自定义类型:结构体、枚举、联合

C语言自定义类型:结构体、枚举、联合 结构体 首先,我们来讲一下,什么是数组?什么是结构体? 简单的说就是: 数组:具有相同类型元素的集合。 结构体:具有不同类型元素的集合。 结构体的声明: struct tag { number-list; }variable-list; 匿名结构体: struct { number-list; }variable-list; 注意:结构体成员变量完全一样,依旧是两种类型。即:一种结构体一种类型。 结构体的自引用: struct Node{ int da

2020-12-16 19:00:06 257

原创 字符函数和字符串函数以及他们的模拟实现

模拟实现字符函数、字符串函数和内存函数 首先本文要介绍的内容如下: 字符串的长度:strlen 字符串的复制:strcpy,strncpy 字符串的拼接:strcat,strncat 字符串的比较:strcmp,strncmp 字符串的查找:strstr 字符串的分割:strtok 错误信息报告:strerror 字符分类函数表 内存操作函数:memcpy,memmove,memset 目录_模拟实现字符函数、字符串函数和内存函数_strlen:strcpy:strncpy:strcat:strncatst

2020-12-12 12:15:14 115 2

原创 数据在内存中的存储(C语言)

数据在内存中的存储 类型简介 C语言中的基本内置类型:char、short、int、long、long long、float、double 为什么存在类型这个概念,类型的意义何在? 1.使用这个类型所开辟的空间的大小,决定了它的使用范围。 2.决定如何看待内存空间的视角,假如我们对一个指针进行解引用,应该从该指针的起始地址读多少个字节呢?就是它的类型所决定的。 类型的简单分类: 整数类型 浮点数类型 构造类型 指针类型 unsigned char float 数组类型 int* x

2020-11-24 21:33:14 238

原创 指针-什么是函数指针?

指针-什么是函数指针?指针函数指针***什么是函数指针?******怎么使用函数指针?******有趣的例子*** 指针 既然来看函数指针了,那么指针,相信大家已经有了一些了解,我就简单的说一下指针。指针其实就是地址,可以直接指向内存中的一个单元(1Byte),可以方便编程人员去直接操作内存。指针有指向基本类型的指针(char*,int*,double*等等),也有数组指针,结构体指针等等。那么函数有指针吗?答案是有的,那么接下来就来简单讲解一下什么是函数指针。 函数指针 什么是函数指针? 首先,我们写的代

2020-11-22 20:22:59 1093 1

原创 C语言实现三子棋和猜数字游戏

头文件 #ifndef _GAME_H_ #define _GAME_H_ #include<stdio.h> #include<time.h> #include<string.h> #include<stdlib.h> #define CORRECT_ID "Bit" #define CORRECT_PASSWARD "Bits" #define OPPORTUNITY 3 #define COL 3 #define ROW 3 #pragma war

2020-10-30 22:06:08 182

原创 来自小白的第一篇博客

纪念第一篇博客 自我介绍 我是一名计算机科学与技术专业的大学生,从下比较喜欢计算机,高中毕业以后如愿的进入了自己喜欢的专业,今后将会经常写博客,来分享一下自己的学到的一些有关编程的东西。 编程目标 可以独立的完成一个好一点的项目或者在项目组里可以承担比较重要的责任,多多敲一些代码,锻炼一下自己,毕竟现在也是个小白^_^。 学习编程的计划 每天都要花3-4个小时来去敲代码,多学一点,也就逐渐有了敲代码的感觉,有些东西敲的熟练了也就肯定不一样了。先从现在的C开始,然后下一步可能就是Java了,也可能去考虑C++

2020-09-27 16:40:30 154

空空如也

空空如也

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

TA关注的人

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