- 博客(43)
- 收藏
- 关注
原创 HashMap 源码深度分析
HashMap 源码分析在Map集合中, HashMap 则是最具有代表性的,也是我们最常使用到的 Map 集合。由于 HashMap 底层涉及了很多的知识点,可以比较好的考察一个人的Java的基本功,所以HashMap颇受面试官的青睐,所以我们接下来就去分析一下HashMap的源码,看看它到底有什么。概述首先对 HashMap 的知识点进行下概述:HashMap 存储数据是根据 键值对 存储数据的,并且存储多个数据时,数据的键不能相同,如果相同该键之前对应的值将被覆盖。注意如果想要保证 Hash
2020-10-11 16:10:52
428
原创 equals和hashCode详解
在学习的过程中,特别是学习集合的时候,equals和hashCode一直是经常出现的方法,而且在面试题中,也经常出现equals和==的区别等问题,现在我们就从底层详细的了解一下equals和hashCode这两个方法。1、概述首先我们要 equals 和 hashCode 两个方法属于 Object 基类的方法:public boolean equals(Object obj) { return (this == obj);}public native int has...
2020-10-09 18:11:47
12930
4
原创 解决已配置阿里镜像,但maven无法下载jar包的问题
不知道有多少人和我一样,Maven配置了阿里云镜像,IDEA所有配置都正常,但是在创建Maven项目下载包的时候,依然不可以成功下载包。在网上找了许多的方法,但是都无济于事。我现在提供的这个方法,确实解决了我的Maven无法下载的问题,算是为大家提供一种解决方法吧。希望这个方法能解决你遇到的问题。首先:阿里云发布了新版的阿里云镜像地址,不过网上有人说旧版的也可以使用。<!--旧版--><mirror> <id>nexus-aliyun</
2020-09-15 17:14:20
2746
2
原创 java之反射机制深度解析
反射是十分重要,要深入的学习和理解。反射可以称为是框架设计的灵魂,几乎所有的java框架中都可以看到反射的身影。那么什么是反射 ?反射是用来干嘛的 ?反射该怎么实现呢 ?一、什么是反射?反射这一概念最早在1982年提出,主要指应用程序访问、检测、修改自身状态与行为的能力。在计算机科学领域,反射是指一类能够自我描述和自控制的应用。在Java编程语言中,反射是一种强有力的工具,是面向抽象编程的一种实现方式,它能使代码语句更加灵活,极大提高代码的运行时装配能力。定义:Java的反射机.
2020-07-20 18:20:34
354
原创 java之IO系列06——ZIP压缩输入/输出流
在日常生活中,我们会经常遇到或使用压缩文件,压缩文件节省了空间,便利了我们日常文件的传输和使用。在JAVA中,也提供了相应的输入输出流来压缩和解压zip、gzip、jar和RAR这样的文件。ZipOutputStream:“压缩文件输出流”,用于将程序中的压缩流写出到磁盘上。这个类实现了一个用于在压缩文件格式中写入文件的输出流过滤器。包括支持压缩和解压项。//构造方法ZipOutputStream(OutputStream out) //创建一个新的压缩输出流。 ZipOutputStre
2020-07-16 20:11:58
1847
1
原创 java之IO系列05——数据(二进制)输入/输出流
数据输入/输出流(DataInputStream类与DataOutputStream类)允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型。也就是说,当读取一个数据时,不必再关心这个数值应当是哪种字节。不过这样的文件用记事本等无法阅读。目录1、DataOutputStream2、DataInputStream3、案例1、DataOutputStream//构造方法DataOutputStream(OutputStream out) //创建一个新的数据输出流,将
2020-07-15 20:02:07
1029
原创 java之IO系列04——带缓存的输入/输出流
缓存是I/O的一种性能优化。缓存流为I/O流增加了内存缓存区。有了缓存区,使得在流上执行skip()、mark()和reset()方法都成为可能。目录1、BufferedOutputStream类和BufferedInputStream类1.1 BufferedInputStream1.2 BufferedOutputStream2、BufferedReader与BufferedWriter类3、案例1、BufferedOutputStream类和BufferedInputSt.
2020-07-14 22:35:02
873
原创 java之IO系列03——文件输入/输出流
在进行对文件内容的操作之前,首先要明确的一点是:输入/输出流都是相对于java而言的,也就是说,输出指的是java向文件输出数据,即写操作;输入指的是文件向java输入数据,即读操作。1、FileInputStream类与FileOutputStream类1.1 FileInputStream函数接口1.2 FileOutputStream函数接口1.3 案例2、FileReader类和FileWriter类2.1 案例
2020-07-13 22:21:21
259
原创 java之I/O系列02——File类
File类是java.io包中唯一代表磁盘文件本身的对象。File类(java.io.File)是专门对文件进行操作的类,只能对文件本身进行操作,不能对文件内容进行操作。File类与OS无关,但是会受OS权限的限制。File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建、删除、重命名文件等操作。一、File类概述二、File函数列表三、新建目录的常用方法四、新建子目录的常用方法五、新建文件的常用方法
2020-07-11 23:30:17
627
原创 java之I/O系列01——IO概述
本文主要讲述了IO与文件系统的关系,IO流的概念和父类,以及IO框架。目录一、前言二、IO流概述2.1 流的概念和作用2.2 流的分类三、IO框架3.1 输入流3.1.1InputStream类3.1.2Reader类3.2 输出流3.2.1OutputStream类3.2.2Writer类3.3以字节为单位的输入流和输出流的关联框架图3.4以字符为单位的输入流和输出流关联的框架图
2020-07-11 17:18:47
459
原创 java之集合框架
该文章主要讲述了java集合框架,详解讲解了Collection接口,list接口、Set接口、Map接口,以及集合实现类,ArrayList、LinkedList、HashSet、LinkedHashSet、TreeSet、HashMap、TreeMap等。并分析了HashSet和LinkedHashSet判定元素重复的原则以及TreeSet判定元素重复的原则。
2020-07-07 11:42:30
242
原创 《微机原理与接口技术》重要总结(附思维导图)
首先,奉上思维导图。教材为《微机原理与接口技术》(第2版)李珍香主编 清华大学出版社。一万多字的总结。某些部分需要配合课本。目录微型计算机基础8086微处理器寻址方式指令系统微机原理与接口技术 微型计算机基础 微型计算机概述计算机系统是一种由硬件系统和软件系统组成的复杂电子装置。它能够存储程序、存储原始数据、中间结果和最终运算结果,并自动完成运算,是一种能对各种数字化信息进行处理的“信息处理机”。计算机按照性能、价格和体积等综合指标,可分为巨型计算机、大型计算机、
2020-06-24 21:49:52
12606
7
原创 八大排序算法详细总结
一、排序算法说明 排序 的目的是将一段无序的记录序列调整为一段有序的记录序列。排序分为内部排序和外部排序两种。 内部排序:整个排序过程都在内存中完成,不需要访问外存。 外部排序:因需要排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快...
2020-02-14 22:12:00
1611
原创 基于 Arduino和WiFi 远程控制小车加机械臂
花了两周的时间的,和同学一起做了一个遥控小车,上面又加了一个机械臂。总之收获颇丰。设计使用了一个Arduino UNO 开发板,四个舵机,一个DT-06 TTL WiFi模块,一个L298N电机驱动板(红板) ,两个电机。和机械臂的支架,小车框架等。小车是两轮驱动的,后轮是一个万向轮。机械臂是四自由的。本来我们的Arduino是有扩展板的,但是坏了,然后我们又不想再买,就将这一个arduin...
2019-11-30 16:08:21
5217
1
原创 详细介绍线程与进程的区别与产生
目录一、进程(Process)二、线程(Thread)三、进程线程的举例解释四、进程与线程的区别五、扩展1、进程的由来2、线程的由来在我们去看他们的区别之前,首先,我们要了解什么是线程与进程?一、进程(Process) 简单来说进程是在系统中正在运行的一个应用程序,程序一旦运行就是进程,比如正在运行的QQ是一个进程、正在运行的浏览器也是一个进程。详...
2019-11-07 22:42:41
360
原创 java之异常处理
概述:在程序设计和运行的过程中,发生错误是不可避免的,尽管我们去尽量的减少错误的产生,但是总会有我们没有预料到的错误。比如说,我们在程序开发中使用的if-else语句,其实这个就是处理异常的过程,但是这对于代码庞大的程序来说会有一些问题,比如说,代码臃肿:业务代码和异常处理代码放一起,程序员要花很大精力堵漏洞,程序员很难堵住所有“漏洞”。所以,java提供了异常处理机制来帮助程序员检查可能出现的错...
2019-10-22 16:49:17
261
原创 java之内部类
概述: 内部类,顾名思义,就是在一个类中再定义一个类,再次定义的那个类就称为内部类。这个就很容易理解啦。内部类可分为成员内部类、局部内部类、匿名内部类以及静态内部类。使用内部类可以节省编译后产生的字节码(.class)文件的大小,而且在实现事件监听时,采用内部类很容易实现。但是,使用内部类的最大问题是会使结构不清晰,所以在程序开发时,不用刻意的去追求使用内部类。目录一、成员...
2019-10-20 15:29:35
407
原创 java之抽象类与接口
一、抽象类与抽象方法 1、抽象类 2、抽象方法 二、接口( interface ) 接口与类的相似点: 接口与类的区别: 接口与抽象类的区别: 接口的特点:补充:1、默认方法2、静态方法3、私有方法...
2019-10-15 20:47:45
362
3
原创 java面向对象三大特征:封装、继承、多态
目录一、封装(encapsulation)封装要点二、继承三、多态(polymorphism)多态要点一、封装(encapsulation) 什么是封装?举个例子,比如一台电视机,电视机内部有复杂的各种器械,而展现在外部的只有开关和几个按键。封装可以抽象的理解为就是那个电视机壳子,它将复杂的东西“包”起来,只保留简单的对外接口。 专业一...
2019-10-12 17:43:01
424
原创 java中的类与对象
什么是类?类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。什么是对象?对象就是一个真实世界中的实体,对象与实体是一一对应关系的,意思就是现实世界的每一个实体都是一个对象,所以对象是一个具体的概念。看了概念似乎看不懂他们是什么,没关系,我们用简单的例子去理解:如果狗为一个...
2019-10-09 17:43:41
332
2
原创 大数除法——超详细讲解
大数除法,本人认为是我目前见过大数算法中最难的一个(仅仅是个人想法),它与之前的大数加法乘法减法不同,有些难理解,下面我一点一点的分析,讲解一下如何去实现大数除法。 首先,我们要知道除法中,存在四个常用名称,被除数,除数,商,余数(例如:53 / 8 = 6 余 5 ;其中53 为被除数,8为除数,6为商,5为余数 )当然我们可能会要求直接得到商,保留几位小数(如...
2019-04-03 19:32:44
50484
31
原创 大数阶乘——大数问题
首先,阶乘的定义为:所有小于及等于该数的正整数的积,并且定义 0 的阶乘为1。自然数n的阶乘写作n!。n!=1*2*3*4*...*n;明白了阶乘的意义,那么如何用代码去实现呢?如果你想用long long去定义类型,那么我们只能计算出很小的数的阶乘,但是如果要求我们去求500甚至5000的阶乘呢?可能你会觉得500也不大,那么咱先看一下100的阶乘:100!= 933262154439441...
2019-03-31 15:40:15
1146
原创 大数乘法——大数问题
大数乘法基本思想与大数的加法减法一样,但是乘运算与加减还是有很大区别的,根据下图,我们可以看到两个数相乘,既是两个数每一位的相乘,之后再相加,并且我们可以知道,两个数相乘的结果的位数不会大于两个数位数之和(例如:9*9=81,位数为1+1=2,说明个位数相乘最大位数不会超过2位,其他同理),乘法运算中我们需要进位,与加法不同的是,加法只需要判断最后一位有没有大于10,而乘法中每一次都需要判断。而...
2019-03-30 20:51:32
3652
原创 大数减法——大数问题
大数减法的实现与加法基本类似,只不过减法要多考虑一些问题,首先要知道减法中的两个名词,“减数”与“被减数”(例如:5-3=2,5就是减数,3就是被减数,2就是结果),然后就是需要考虑在减的时候有可能是大数减小数得到负数(例如:3-5=-2),这样的问题就需要我们判断两个数的大小,根据大小进行相减操作,具体实现在代码中,还有一个问题,就是借位问题,在加法中,我们相加有时候需要进位,而在减法中,借位也...
2019-03-30 18:02:33
4704
原创 最短路问题——(最短路径)
一、只有五行的算法——Floyd-Warshall下图中有4个城市8条公路,公路上的数字表示这条公路的长短。注意公路是单向的。我们需要求出任意两个城市之间的最短路程,即任意两点之间的最短路径。首先,我们建立一个数据结构来存储图的信息,使用一个4*4的矩阵(二维数组e)来存储。例如1号城市到2号城市的路程为2,则使e[1][2]的值为2。2号城市无法到达4号城市,则设置e[2][4...
2019-03-19 22:10:56
8429
转载 玫瑰花—(C语言)
代码用到了图形库,有音乐。如果头文件有这个,#include <graphics.h>,编译时会显示一个错误,原因是graphics.h是Tc中专有的,<graphics.h>这个头文件不是标准C的头文件,vc下没有这个头文件,画图用控件来。还是有办法在vc下用的,就是把这个头文件和相关文件放在相应的lib和include目录下,有人制作了一个软件包,EasyX_...
2019-03-03 21:08:04
25797
10
原创 C语言中的单斜杠 ' \ ' 的作用
反斜杠起到换行作用,用于宏定义和字符串换行。其中宏定义中使用居多。在写代码的时候遇到代码超长的情况下为了代码的美观及方便测试,可以通过在结尾加\的方式,实现换行,编译时编译器会忽略\及其后的换行符,当做一行处理。1、在宏定义中要换行必须使用 \ 结尾比如:#define PI \ 3.14159262、在字符常量中可以使用 \ 结尾比如:"he...
2019-03-03 18:18:41
24613
原创 Win10系统下为JDK配置环境变量——(解决java安装完成后不能使用的问题)
我们下载并安装好JDK后,java是不能直接使用的,还需要为java配置环境变量。配置好环境变量后,java才可以正常使用,否则当输入javac时,会出现错误。第一步:打开控制面板。有很多种方式打开电脑的控制面板,我说的是其中一种。右键一下“此电脑”,点击“属性”,打开“控制面板”,点击“高级系统设置”,点击右下角“环境变量”。第二步:新建一个名为JAVA_HOME的系统变量,第二栏的...
2018-12-26 14:46:24
1927
原创 大数加法(不考虑前导0与考虑前导0)—大数问题
两个大数相加,先分别用字符串存储两个大数,然后用数组存每一位,之后转化为小的数字,然后先从最低位开始相加,判断是否进位1,然后一直往高位走,最后判断最后一次相加是否要进位1。在进行加法运算的时候会有一个前导0 的问题,例如001+002,应该等于3,但是如果按照常规计算,得出的结果是003,所以在计算是需要注意一下,具体实现在下面的代码中。例如:计算1234 + 5686 = ? ...
2018-12-14 17:29:21
4110
2
原创 大数问题—大数存储与基本计算
在C语言中,最大的long long 型只能存储-9223372036854775808~9223372036854775807,然而数是非常大的,比这再大的数就没有办法用数据类型直接定义了,所以就出现了解决大数问题的算法。先说一下大数是如何存储和计算的 一般情况下,都是用数组或字符串存放和表示大数。一个数字或字符串元素,存放大数中的一位。 用字符...
2018-12-14 16:49:40
6057
原创 3D动态烟花--HTML
写代码无聊了,要为自己找一些有意思的事情去做嘛,顺便也可以在小白面前装一下下。这是一个3D烟花动态图,用H5写的。使用方法:在电脑上创建一个文本文档,将下面的代码复制上去,然后将文本扩展名改为html(例如:3D烟花.html) ,然后该文件就会变成网页的图标。点击运行就行了,IE浏览器可能无法运行,可能只会出来黑屏,不过我使用的win10系统的Microsoft Edge可以出来。如果...
2018-12-11 21:47:40
51049
60
原创 CodeBlocks下载与安装教程
一、下载教程1.在浏览器上搜索CodeBlocks官网或者直接输入网址http://www.codeblocks.org/ 进入CodeBlocks官网。2.进入下载页面Downloads,一般都会选择第一个Download the binary release(二进制版本)3.进入之后,就会出来很多版本,我们要选择一个合适的版本,一般都会下载自带编译器的版本,这里到后面安装的...
2018-11-27 21:15:45
355691
62
原创 字符串操作---C语言与C++
字符串在存储上类似与字符数组,它的每一位的单个元素都是可以提取的。字符串操作就是一串为整体作为操作对象。例如:查找某个子串、删除某个子串等等。一、C语言中的字符串操作strcpy(str1,str2); 复制字符串strncpy(str1,str2,n); 复制指定长度的字符串strcat(str1,str2); 拼接字符串strncat(str1,str2,n); 拼接指定长...
2018-11-21 15:50:20
809
原创 四、multiset多重集合容器与set集合容器的区别
简介:multiset与set大体上是一样的,唯一不同的是,multiset允许重复的元素键值插入,set是不允许的。关于set集合容器的详细内容看:https://blog.youkuaiyun.com/ysz171360154/article/details/84142947 multiset容器内部结构示意图由于multiset容器包含重复元素,所有它和set在元素的插入删除查找上有一些差...
2018-11-17 11:14:47
183
原创 三、set集合容器-遍历删除查找与自定义
简介:要学习set集合容器,首先要了解红黑树(Red-black Tree)。红黑树是一种自平衡二叉查找树,是计算机科学中用到的一种数据结构,典型的用途是实现关联数组。Set集合容器实现了红黑树的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的键值;另外,还得确保根节点左子树的高度与...
2018-11-16 17:37:17
4756
1
原创 C语言实训报告——学生宿舍信息管理系统
功能描述该学生宿舍信息管理系统主要实现的功能有:创建学生宿舍信息,显示学生宿舍信息,查询学生宿舍信息,修改学生宿舍信息,删除学生宿舍信息,保存学生宿舍信息,读取学生宿舍信息。其系统功能模块图如下:完整代码如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<...
2018-11-09 22:43:45
9576
8
原创 二、String基本字符系列向量容器——删除添加替换查找比较
简介:在C语言中只提供了一个char类型来处理字符,而对于字符串只能通过字符串数组处理,有些不太方便。C++STL提供了string基本字符系列容器来处理字符串,可以把string理解为字符串类,它提供有删除、添加、替换、查找、比较等方法。一. String向量容器的用法使用string容器,需要头文件“#include<string> ”。 创建string对象 stri...
2018-11-06 19:51:53
401
原创 一、Vector向量容器
简介:Vector向量容器可以简单的理解为一个数组,它的下标也是从0开始的,也就是说,如果vector容器的大小是n,那么,元素的下标是0~n-1。使用时可以不用确定大小。vector具有内存自动管理的功能,对于元素的插入和删除,它可以进行动态调整所占用的内存空间,它里面有很多系统已经定义好了的函数方法,可以直接调用进行插入元素与在尾部扩张元素。Vector是一种简单高效的容器,完全可以代替数组。...
2018-11-03 19:36:31
525
原创 日期计算---用数组解决方法
描述如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。 输入第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每行的输入数据都是一个按题目要求格式输入的日期。输出每组输入数据的输出占一行,输出判断出的天数n样例输入 32000 4 52001 5 42010 1...
2018-03-01 21:57:49
534
原创 超级台阶--斐波那契数列问题
描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规定从一级到一级有0种走法。 输入输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。输出对于每个测试实例,请输出不同走法的数量。样例...
2018-03-01 21:54:30
316
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人