自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 补充权限修饰符

public:所有都可见private:只有本类可见protected:本类,同包其他类,子类默认:本类,同包可见

2021-04-22 22:37:29 79

原创 抽象类与接口

抽象类一.抽象类怎么定义?在class前面加abstract关键字就行了二.抽象类是无法实例化的,无法创建对象,所以抽象类是用来被子类继承的三.final和abstract同时使用,这两个关键字是对立的四.抽象类的子类可以是抽象类,也可以是非抽象类五.抽象类虽然无法被实例化,但是抽象类有构造方法,这个构造方法供子类使用六.抽象类中不一定有抽象方法,但是抽象方法一定是在抽象类中七.抽象方法的定义方法:public abstract void do();八.一个非抽象类,继承抽象类,必须将抽象类

2021-04-22 08:52:47 147

原创 滑动窗口?就是快慢指针啦!

长度最小子数组快慢指针,滑动窗口,划出最小值public int minSubArrayLen(int target, int[] nums) { int res = Integer.MAX_VALUE; int i = 0; int j = 0; int sum = 0; int tmp = 0; for(j = 0; j < nums.length; j++){

2021-04-21 14:21:46 120

原创 数组移除元素,So easy

27移除元素暴力方法就不展示了:直接说数组中的双指针法:public int removeElement(int[] nums, int val) { int fastIndex = 0; int lowIndex = 0; for(fastIndex = 0; fastIndex < nums.length; fastIndex++){ if(nums[fastIndex] != val){

2021-04-21 13:51:03 55

原创 二分查找,不虚!(力扣35)

35.索引插入位置题目分析:位置一定会返回,不会有返回负数结果:大致分为以下四种情况:插入位置在所有元素之前数字就是其中某个数组元素对应下标插入位置在一大一小中间插入位置在所有元素之后,也就是数组最后面解法一:暴力暴力解法就是:从头开始遍历,遍历到相等的位置就直接返回位置;如果第一个位置就比目标大,说明就是上面的第一种情况,在0位置插入;如果前一个小后一个大,就插在当前位置;如果比最后一个数还大,就插在末尾!if(nums[i] >= target) return i;这句

2021-04-21 13:09:50 44

原创 二维数组究竟怎样存储

二维数组其实就是一个矩阵:那么问题来了,二维数组在内存中存储空间时连续的吗?int[][] array = new int[3][4]; 这个二维数组可不是在一个3*4连续空间存储如图所示:所以二维数组在内存中不是3*4的连续空间,而是三条连续的内存地址空间...

2021-04-21 12:31:22 853

原创 final关键字解读

1.final修饰的类无法继承2.final修饰的方法无法覆盖3.final修饰的变量只能赋一次值4.final修饰的引用一旦指向某个对象,则不能再重新指向别的对象,但该引用指向的对象内部的数据是可以修改的5.final修饰的实例变量(成员变量)必须手动初始化,不能采用默认值6.final修饰的实例变量一般和static联合使用,称为常量一.修饰的类public final class Parent{ private String name; public void life(Stri

2021-04-19 17:15:48 99

原创 类加载的”时机“与”过程“

写在前面:虚拟机把描述类的数据从class文件记载到内存中,并对数据进行校验,转换解析,并且初始化,就是为了形成可以被虚拟机直接使用的java类型,这就是类加载机制。(这也恰恰解释了java语言的灵活性,因为.class文件之前是由什么语言写的我们不知道,所以实现了语言的多元化与包容性)类加载的时机虚拟机没有明确规定什么时候开始进行加载,但是却规定了什么时候必须对类进行初始化(但是很明显的知道就是,加载,验证,准备自然需要在初始化之前完成)一。虚拟机严格规定的五种立即对类进行初始化:1.new,g

2021-04-18 15:56:02 121

原创 继承,封装,多态

封装:就是将对象的属性和行为封装起来,借助类来实现对于细节的隐藏,是面向对象的编程核心。采用封装的思想就是保证了类内部数据结构的完整性,只能执行公开的数据提高了可维护性。继承:类与类之间的关系是关联,关联主要是描述两个类之间的一般二元关系,继承是其中的一种关联关系,直白的举个例子就是:麻雀,燕子属于鸟类,鸟类属于动物,麻雀和燕子都有翅膀,麻雀和燕子都会飞,他们都可以实现实现这个动作。现在让你实现这两个方法,你才会发现根本不需要把翅膀这个属性写进两个类里面,而是实现了鸟类,再继承就可以了,直接看代码:

2021-04-17 21:46:17 58

原创 String类,对算法有用哦

String类字符串常量:“23.23”,“ABCDEF”,"你好"以上都是字符串常量,字符串常量是系统中能够显示任何文字信息由("")双引号括起来的都是字符串,不能作为其他的数据类型来使用,如:"1+2"不能是31.声明字符串String str;注意: 声明的字符串变量必须进过初始化才能够进行使用,否则使用时会进行编译器报错:变量未被初始化错误2.创建字符串String(char[] arr);char[] a = {‘a’,‘b’,‘c’};String str = String

2021-04-17 01:59:04 92

原创 JAVA中的数组

一维数组·使用方法:数组元素类型[] 数组名 = new数组元素类型 [数组元素个数]初始化方式:int[] arr = new int[]{1,2,3,4,5};int[] arr = {1,2,3,4,5};注意: 使用new关键字,必须指定数组元素的类型和素组元素的个数,即数组的长度;使用new关键字,为数组分配内存空间时,整形数组的各个元素的初始值为0二维数组·使用方法以及初始化方式:int[][] arr = {{1,2},3,{4},5};数组的基本操作A数组的遍

2021-04-17 00:46:47 79

原创 顺序表(C)

忘了最基础的一种线性表了,那就是数组,今天来谈谈顺序表,先谈谈用C语言实现顺序表基础:结构体://首先创建一个结构体,用来实现对于数组的用法typedef struct Arr{ int* pBase;//整个数组的首地址 int len;//所创建数组的长度 int cen;//目前数组中有效个数}Arr;;顺序表的创建void init_shuzu(Arr* array,int length){//创建一个数组只需要两个参数就是主函数已创建好的数组和创建数组的长度 arr

2021-03-23 10:43:29 189

原创 队列(C)

又来了,继续更新队列,来看百度百科介绍;点击了解详细概念,接下来我想直接说重点:数组实现队列,想记住想要多次使用这个队列,那就是用循环队列,什么叫循环队列,前面的链接写的很清楚了。一.怎样实现循环队列0,1,2,3,4,5——>长度为6的数组下标是这几个对吧,0,1,2,3,4到下一个都好说,那就是加一,但是让5怎样回到0呢,而且保证也加一,很简单:(5+1)%6 == 0,同理(0+1)%6 == 1,规律出来了 (num + 1)%数组长度 就可以还需要注意的一点就是:长度为6的数组只

2021-03-22 09:55:56 108

原创 栈C

持续更新,今天来谈谈栈百度百科中解释:栈,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。而今天我们谈的是数据结构中的栈一.构成栈的基本单位栈:在我看来就是将一个特殊的链表进行包装,而这个链表特殊就特殊在只允许在一端进行添加元素和删除元素。也就是所说的:在栈顶端压入元素和弹出元素。1.前面介绍过:在C中实现链表的基本单位是结构体,还是那两部分:data和pNext(存放下一个结点的地址)2.对于栈,如何做到控制从栈顶压

2021-03-21 19:28:11 73

原创 链表相关操作

很久没有更新,今天就以链表来进行新一轮的操作简单介绍链表(C)说直白一点:链表在C中就是自己用结构体实现一个数据类型,然后这些数据类型大量连接在一起构成一个存放数据的结构。与数组不一样的就是,在内存中数组是连续的,链表不是连续,是因为该结构体中有一成员是指针类型,有关于指针问题,以及指针大小,不知道的大家可以点击这里了解。还需补充知识就是:结构体,malloc动态开辟内存空间最根本的单元:struct Nodetypedef struct Node { int data;//成员中用来存放数据的

2021-03-20 10:07:41 154

原创 XMIND ZEN(曾曾曾)02

在一些特定的场景下,我们为什么不使用表格,而是使用笔记,是因为我们不想被常规的文本,模板,框架所限制,你将笔记放进电子设备中去,每一个步骤都需要你怎样操作,去想,花时间去想,这就违背了初衷,这一片文章目的就是:把机械操作变成自己的自然习惯不要给的模板,自己创作进入软件,直接点击创作,选择简单的一个类型即可创建以后,就进入到下面这个导图的初始形态基本操作:1.删除其中的主题:鼠标选择其中的某个主题,我们在这里选择删除主题一2.写入中心主题:鼠标选中中心主题,然后输入名字即可补充:1. 修

2021-01-15 16:40:01 169

原创 XMIND ZEN(曾曾曾)01

点击进来,说明您也是一位热衷于笔记软件使用的爱好者,下面是对于XMIND ZEN软件的一些介绍第一步:进入ZEN模式不是了解如何制作一部好的思维导图,而是如何得心应手,随心所欲的去查看它ZEN:简单讲就是"软件全屏模式"该模式主要用于专注思考,点击该按钮,就直接进入ZEN模式进去以后就是上面这张图,右上角的三个光标就是:查看您的专注时长,夜间模式,还有退出(当然进入ZEN模式还可以按ESC键退出)第二步:了解中心主题功能一:找到中心主题,按住左键就可以让整个思维导图在界面上移动即使在空白

2021-01-15 15:43:56 448

原创 深度剖析数据在内存中的存储

今天就谈谈数据在内存中的存储.我想现在这里给大家分享一个小视频,引用一句话就是:“易有太极,是生两仪,两仪生四象,伏羲衍八卦而知万物”,之前看过一篇文章就是说,关于二进制数的运算,从0(湮灭),可以生出1,-1,也就是说无中生有,好了,再过多的阐述读者就要烦躁了.总结就是,“0可生0,1,0和1又构成了00 01 10 11,就是对应四象,而这四个数又可以构成八位二进制数,也就是一个字节,而我想程序员们都知道这小小的字节就是构成了计算机的各种运算及其对象”.进入正题:数据类型详细介绍整形在内存

2020-12-08 17:29:39 292

原创 结构体的“小知识“

结构体1. 结构体类型的声明2. 结构体初始化3. 结构体成员访问4. 结构体传参一.结构体类型的声明结构体是一些值的集合,这些值称为成员变量.结构体的每个成员可以是不同类型的变量.结构的声明struct tag{member-list;}variable-list;eg:例如描述一个学生typedef struct Stu{ char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号}Stu;//

2020-12-07 20:52:48 326 1

原创 初识“指针“

指针要点:指针是什么指针和指针类型野指针指针运算指针和数组二级指针指针数组一.指针是什么在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元.表现在代码:#include <stdio.h>int main(){ int a = 10;//在

2020-12-01 14:35:49 297

原创 C中的常用操作符

操作符详解操作符和表达式操作符算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符表达式逗号表达式下标引用、函数调用和结构成员一.算术操作符除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。% 操作符的两个操作数必须为整数。返回的是整除之后的余数。二.移位操作符1.<< 左移操作符2.>>右移操作符左移操作符

2020-11-29 18:43:03 231

原创 数组基础知识

数组相关大纲一维数组的创建和初始化一维数组的使用一维数组在内存中的存储二维数组的创建和初始化二维数组的使用二维数组在内存中的存储数组作为函数参数一.一维数组的创建以及初始化数组的创建:type_t arr_name [const_n];type_t: 是指数组的元素类型const_n: 是一个常量表达式,用来指定数组的大小注意:在C语言中,const_n,其中const修饰说明这里要求为常量补:常量存在的形式有:字面常量const修饰的变量(要求初始化

2020-11-29 16:02:04 147

原创 C中的:字符串

字符串表示字符串的两个重要条件:首先得有一个字符数组'\0’作为结束标记如果某个字符数组没有\0,说明数组不能称为字符串两种创建以及初始化:char arr[] = "helloworld";char arr1[] = {'h','e','l','l','l','o','w','o','r','l','d','\0'};注意下面这种是字符数组,而不是字符串char arr1[] = {'h','e','l','l','l','o','w','o','r','l','d'};遇到""

2020-11-29 15:01:39 90

原创 三子棋见证“编程思想“

今天这篇博客是通过编写一个小小三子棋游戏来阐述一下编程的思路流程:创建棋盘并且初始化打印棋盘玩家和电脑轮流落子,玩家先落子(玩家输入行列坐标的方式)判断胜负电脑也落子(电脑随机落子)确认胜负关系回到2继续执行,打印新的棋面START一.呈现给用户的是:游戏选择界面代码如下://主函数中存放这些,用来进行选择判断,去调用一些函数,来达到最终的效果while (1) { int choice = menu(); if (choice == 1) { game();

2020-11-26 13:25:14 86

原创 数据链路层的小总结

大的方向:1.数据链路层基本概念以及基本问题基本概念三个基本问题2.两种情况下的数据链路层使用点对点信道的数据链路层使用广播信道的数据链路层3.以太局域网(以太网)4.扩展以太网5.高速以太网一.数据发送模型:主机1——电话网——路由器1——局域网——路由器2——广域网——路由器3——局域网——主机2图+仅仅研究从数据链路层观察帧的流动二.数据链路层使用的信道主要有以下两种类型:点到点:这种信道使用一对一的点对点通信方式广播信道:这种信道使用一对多的广播通信方式,因此过程

2020-11-25 16:59:59 637

原创 物理层小结知识点

物理层:一.基本概念:解决如何在连接各种计算机的传输媒体上传输数据比特流而不是指具体的传输媒体,不是指传输媒体如双绞线等物理层的主要任务描述为:确定与传输媒体的接口的一些特性:机械特性:接口形状,大小,引线数目电气特性:规定电压范围功能特性:规定-5v表示0,+5v表示1过程特性:也称为规程特性,规定建立连接时各个相关工作部件的工作步骤二.数据通信的基础知识:典型的数据通信系统:PC机——>将数据比特流传送——>调制解调器(将0.1数字信号转换为模拟信号)——&gt

2020-11-25 12:48:24 282

原创 网络的概述

概论描述001:一.三网:电信网络, 计算机网络,有线电视网络。计算机网络:因特网,其他网络计算机网络的功能:连通性(彼此联连通,交换信息)和共享性(信息共享,软硬件共享);二.因特网:网络:自己小范围内的,通过交换机来连接的一个局域网互联网:网络和网络之间连起来叫作互联网(路由器连接起来),internet因特网:全球最大的互联网三.Internet因特网发展:第一阶段,是美国自己用于政府部门自己所用,1969第一个ARPANT分组交换,规模比较小,接着分组

2020-11-24 10:41:30 502 1

原创 技术之外的美文

世界上最远的距离不是生与死的距离而是我站在你的面前你却不知道我爱你世界上最远的距离不是我站在你的面前你却不知道我爱你而是爱到痴迷却不能说我爱你。世界上最远的距离不是我不能说我爱你而是想你痛彻心脾却只能深埋心底世界上最远的距离不是我不能说我想你而是彼此相爱却不能够在一起世界上最远的距离不是彼此相爱却不能在一起而是明明无法抵挡这一股气息却还得装作毫不在意世界上最远的距离不是明明无法抵挡这一股气息却还得装作毫不在意而是用一颗冷漠的心在你和爱你的人之间掘了一

2020-11-23 21:00:57 91

原创 “归并排序下“解决最大最小数

求解最大最小数之和题目了解:给出数组,从第一位找出前面比自身小的数,直到最后一位,将这些数求和例子:arr = { 3, 4, 6, 5, 2, 1};比3小有:因为第一个,所以没有,即为0比4小有:3,保留比6小有:3,4,故和为7…到最后1:前面没有,故为0所以结果为0+3+7+7+0+0=17;题解:这里介绍的是利用归并排序解决 public static int smallSum(int[] arr) { if(arr == null || arr.lengt

2020-11-23 15:24:34 131

原创 解析回文字符串

回文字符串相关题解点击了解回文字符串概念点击查看本题看到这道题,可以初步想法:依次循环删除字符删除以后判断是否为回文字符串依次在这些做法基础上进行改进判断回文字符串(存储字符串的可以是字符数组,也可以是链表)一. 字符数组存储的字符串进行回文判断思路一:将字符串拆分成一个一个字符,放进一个字符数组中用一个新的数组存放,只不过是逆序存放依次判断字符是否相同,若有一个不相同就直接判断为不是p private static boolean f1(String target

2020-11-21 20:58:20 190

原创 “借题发挥“的二进制解析

二进制提取位及各种运算牛客链接1牛客链接2以上是求二进制的两道题,可以点击了解后再继续阅读一.求"1"的个数提供以下几种解题思路,并作比较思路一:循环进行以下操作,直到n被缩减为0:用该数据模2,检测其是否能够被2整除如果可以:则该数据对应二进制比特位的最低位一定是0,否则是1,如果是1给计数加1如果n不等于0时,继续1代码如下:int count_one_bit(int n){ int count = 0; while(n)//判断是否为0,即为终止条件 { if(

2020-11-20 00:40:32 224

原创 几个小排序

冒泡排序这里有一篇比较好的图解可供参考:图解冒泡.本人代码见下://冒泡排序 public static void bubbleSort(int[] arr) { if(arr == null || arr.length < 2) { return ; } for(int end = arr.length - 1; end > 0; end--) { for(int i = 0; i < end; i++) { if(arr[i] > arr[

2020-11-17 22:46:27 147 2

原创 操作系统的“脾气“

操作系统的特性最基本的四个特征:并发,共享,虚拟,异步1.并发性:指两个或者多个事件在同一时间间隔内发生,这些事情在宏观上是同时发生的,但是在微观上是交替发生.在操作系统的并发性是指计算机系统中存在着多个运行着的程序.补充:并行:两个或者多个事件在同一时刻同时发生.一个单核处理机(CPU)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行(这些程序微观上是交替执行,但宏观上是像同时执行),事实上操作系统是伴随着"多道程序技术"一起诞生的,因此,操作系统和程序并发一起诞生虽然现在

2020-11-17 19:34:41 114

原创 初步认识“Computer‘s 管家!“

操作系统概念官方定义:配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充可以从以下三个方面来看:(从中间往两边看)是指控制和管理整个计算机系统的软硬件资源,合理的组织调度计算机的工作和资源分配(从上往下看)以提供给用户和其他软件方便的接口和环境(从下往上看)是最基本的系统软件功能和目标还是从他扮演的三个角色看去:一.作为系统资源的管理者:上例子:和好友QQ聊天:1.安装QQ(逐层打开文件夹,找到合适安装QQ的地方,即为文件管理)2.双击打开QQ(把该程序相关内容放到内存中

2020-11-17 17:47:56 140

原创 代替OJ的小程序

“对数器”说白了,所谓"对数器",就是自己写的一个小程序,用来代替OJ,实现对自己所写函数的检验.以下这个例子就是来详细说明对数器:题:在面试时,面试官要求自己定义一个函数,要求时间复杂度为O(n^2),空间复杂度为O(1),实现对一组数的排序.(这里就写冒泡排序),在紧张时刻,你自己用语言来说明程序的正确性确实不如自己用对数器更有说服力.这里的对数器就详细到了,你自己有一个绝对正确的方法,这个方法不够最优,但是可以保证满足程序要求,正确输出.我们这里直接借用库里最正确的提供的排序方法.1.库中的函数

2020-11-16 23:23:17 119

原创 从内存看方法重载

从内存看方法重载方法重载直接明白的说就是:是指一个类中可以定义相同的名字,但是参数不同的多个方法,调用时,会根据不同的参数选择对应的方法,直接看例子:你在一个小程序中想实现求得两个整数,三个整数,甚至多个小数的加减,初学者的角度一定是定义这么几个函数,命名不同,使用时分别调用即可.但是,这样的办法其实很麻烦,你在使用时,调用函数,你还要去想,你进行小数加减时究竟是调用哪个函数名,记那么多干嘛呀,不舒服.但是如果你在进行加减时,无论是小数还是整数,不用想函数名,直接用那么一个函数名就可以,岂不是方便很多

2020-10-29 14:01:24 95

原创 递归与循环

“递归"与"循环”递归:1.明白递归毫不客气,上话:“要理解递归,就得先了解什么是递归”,实际上这句话就是一个递归.初学者看到这里还是很蒙圈是因为,你还没有了解到真正的面目,所以你没有得到答案,下面,让我举一个例子来详细说明吧.老师给了一个任务,让你去了解化学元素的最小单位组成,你打开了搜索引擎去搜索,发现在化学领域,最客观形象的的单位是"物质",比如水,氧气等,这样你会发现水是由一个个水分子组成,于是你返回到搜索引擎去搜索分子,此时你又得知了水分子居然是有更小的原子组成,于是你继续搜索原子,居然还

2020-10-28 16:06:29 112

原创 从‘‘内存‘‘看问题

从"内存"看"类名 对象名 = new 方法"内存所放置在java中,内存所放置大多围绕着栈和堆进行一系列操作,介绍如下栈:保存局部变量的值,包括:基本数据类型下的变量及其数值类的实例,也就是所建对象的引用(指针),eg:Person xiaoming = new Person();中的"xiaoming",这个变量内容就是临时存放所建对象所在的内存(堆)下的地址,在C中称这一类为指针,而在java中,我们叫引用,所以栈中存放的就是堆区对象的引用.堆:用于存放动态产生的数据,就是:new出

2020-10-27 09:52:02 94

原创 引用小介绍

对引用的粗略介绍:java语言中除基本变量之外的变量类型都称之为引用类型java中对象的操作都是通过对其引用进行操作的/**声明了一个String类型的引用变量,但是并没有使他指向一个对象/String s;/*使用new语句创建了一个String类型的对象,并使s指向了他,这样以后可以通过对s的操作实现对这个对象的操作*/s = new String(“Hello World”);...

2020-10-27 09:09:41 79

原创 ‘‘过程‘‘与‘‘对象‘‘的你你我我

初谈“过程”与“对象”“过程”到“对象”的发展史在C语言被初次提出之后,一直沿用至今,从未被忽视,作为编程语言界的鼻祖,有着不可撼动的地位。其中的语法,更是其他语言的基础。C++语言,java语言,就是在C语言的基础上开辟出来,而他们的语法细节更是出自C语言。C语言是讲究”过程“的代表,而后者则是”面向对象(oriented Object)“的代表。在随着语言发展中,各种各样的项目中,作为被操作的对象也在急速发展,造成的就是方法在增加,方法也就是函数一旦多了就很繁琐,项目中的软件一般不会是一个人写,所

2020-10-25 16:13:52 159

空空如也

空空如也

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

TA关注的人

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